code: def _download_repo_metadata(self, args):
          '''
          Connect to all repos and download metadata
          '''
          cache = salt.cache.Cache(self.opts, self.opts['spm_cache_dir'])
  
          def _update_metadata(repo, repo_info):
              dl_path = '{0}/SPM-METADATA'.format(repo_info['url'])
              if dl_path.startswith('file://'):
                  dl_path = dl_path.replace('file://', '')
                  with salt.utils.files.fopen(dl_path, 'r') as rpm:
                      metadata = salt.utils.yaml.safe_load(rpm)
              else:
                  metadata = self._query_http(dl_path, repo_info)
  
              cache.store('.', repo, metadata)
  
          repo_name = args[1] if len(args) > 1 else None
          self._traverse_repos(_update_metadata, repo_namef _download_repo_metadata(self, args):
          '''
          Connect to all repos and download metadata
          '''
          cache = salt.cache.Cache(self.opts, self.opts['spm_cache_dir'])
  
          def _update_metadata(repo, repo_info):
              dl_path = '{0}/SPM-METADATA'.format(repo_info['url'])
              if dl_path.startswith('file://'):
                  dl_path = dl_path.replace('file://', '')
                  with salt.utils.files.fopen(dl_path, 'r') as rpm:
                      metadata = salt.utils.yaml.safe_load(rpm)
              else:
                  metadata = self._query_http(dl_path, repo_info)
  
              cache.store('.', repo, metadata)
  
          repo_name = args[1] if len(args) > 1 else None
          self._traverse_repos(_update_metadata, repo_name)
docs: Connect to all repos and download metadata