code: def _get_sg_name_dict(self, data, page_size, no_nameconv):
          
          if no_nameconv:
              return {}
          neutron_client = self.get_client()
          search_opts = {'fields': ['id', 'name']}
          if self.pagination_support:
              if page_size:
                  search_opts.update({'limit': page_size})
          sec_group_ids = set()
          for rule in data:
              for key in self.replace_rules:
                  if rule.get(key):
                      sec_group_ids.add(rule[key])
          sec_group_ids = list(sec_group_ids)
  
          def _get_sec_group_list(sec_group_ids):
              search_opts['id'] = sec_group_ids
              return neutron_client.list_security_groups(
                  **search_opts).get('security_groups', [])
  
          try:
              secgroups = _get_sec_group_list(sec_group_ids)
          except exceptions.RequestURITooLong as uri_len_exc:
              # Length of a query filter on security group rule id
              # id=<uuid>& (with len(uuid)=36)
              sec_group_id_filter_len = 40
              # The URI is too long because of too many sec_group_id filters
              # Use the excess attribute of the exception to know how many
              # sec_group_id filters can be inserted into a single request
              sec_group_count = len(sec_group_ids)
              max_size = ((sec_group_id_filter_len * sec_group_count) -
                          uri_len_exc.excess)
              chunk_size = max_size // sec_group_id_filter_len
              secgroups = []
              for i in range(0, sec_group_count, chunk_size):
                  secgroups.extend(
                      _get_sec_group_list(sec_group_ids[i: i + chunk_size]))
  
          return dict([(sg['id'], sg['name'])
                       for sg in secgroups if sg['name']])
docs: Get names of security groups referred in the retrieved rules.
  
          :return: a dict from secgroup ID to secgroup name