示例#1
0
    def _make_dummy_cs(self):
        """Create a dummy ContentSource object that only talks to a mocked yum"""
        real_yum = yum_src.yum
        yum_src.yum = Mock()

        real_setup_repo = yum_src.ContentSource.setup_repo
        yum_src.ContentSource.initgpgdir = Mock()
        yum_src.ContentSource.get_groups = Mock(return_value=None)

        # don't read configs
        mock.patch('spacewalk.common.suseLib.initCFG').start()
        mock.patch('spacewalk.common.suseLib.CFG').start()
        yum_src.initCFG = Mock()
        yum_src.CFG = Mock()
        yum_src.CFG.MOUNT_POINT = ''
        yum_src.CFG.PREPENDED_DIR = ''
        yum_src.fileutils.makedirs = Mock()
        yum_src.makedirs = Mock()
        yum_src.os.path.isdir = Mock()

        yum_src.get_proxy = Mock(return_value=(None, None, None))

        cs = yum_src.ContentSource("http://example.com", "test_repo", org='')
        mockReturnPackages = MagicMock()
        mockReturnPackages.returnPackages = MagicMock(name="returnPackages")
        mockReturnPackages.returnPackages.return_value = []
        cs.repo.getPackageSack = MagicMock(return_value=mockReturnPackages)
        cs.repo.includepkgs = []
        cs.repo.exclude = []

        yum_src.yum = real_yum
        yum_src.ContentSource.setup_repo = real_setup_repo

        return cs
示例#2
0
 def _create_yum_repo(self, repo_source):
     repo_label = self.cdn_repository_manager.get_content_source_label(
         repo_source)
     try:
         keys = self.cdn_repository_manager.get_repository_crypto_keys(
             repo_source['relative_url'])
     except CdnRepositoryNotFoundError:
         keys = []
         log2(1,
              1,
              "WARNING: Repository '%s' was not found." %
              repo_source['relative_url'],
              stream=sys.stderr)
     if keys:
         (ca_cert_file, client_cert_file,
          client_key_file) = reposync.write_ssl_set_cache(
              keys[0]['ca_cert'], keys[0]['client_cert'],
              keys[0]['client_key'])
     else:
         (ca_cert_file, client_cert_file, client_key_file) = (None, None,
                                                              None)
         log2(
             1,
             1,
             "WARNING: No valid SSL certificates were found for repository '%s'."
             % repo_source['relative_url'],
             stream=sys.stderr)
     return yum_src.ContentSource(self.mount_point +
                                  str(repo_source['relative_url']),
                                  str(repo_label),
                                  org=None,
                                  no_mirrors=True,
                                  ca_cert_file=ca_cert_file,
                                  client_cert_file=client_cert_file,
                                  client_key_file=client_key_file)
示例#3
0
    def _make_dummy_cs(self):
        """Create a dummy ContentSource object that only talks to a mocked yum"""
        real_setup_repo = yum_src.ContentSource.setup_repo

        # don't read configs
        patch('spacewalk.common.suseLib.initCFG').start()
        patch('spacewalk.common.suseLib.CFG').start()
        yum_src.initCFG = Mock()
        yum_src.CFG = Mock()
        yum_src.CFG.MOUNT_POINT = ''
        yum_src.CFG.PREPENDED_DIR = ''
        yum_src.CFG.REPOSYNC_MINRATE = 1000
        yum_src.CFG.REPOSYNC_TIMEOUT = 300
        yum_src.fileutils.makedirs = Mock()
        yum_src.os.makedirs = Mock()
        yum_src.os.path.isdir = Mock()

        yum_src.get_proxy = Mock(return_value=(None, None, None))

        cs = yum_src.ContentSource("http://example.com", "test_repo", org='')
        mockReturnPackages = MagicMock()
        mockReturnPackages.returnPackages = MagicMock(name="returnPackages")
        mockReturnPackages.returnPackages.return_value = []
        cs.repo.is_configured = True
        cs.repo.includepkgs = []
        cs.repo.exclude = []

        yum_src.ContentSource.setup_repo = real_setup_repo

        return cs
示例#4
0
 def _create_yum_repo(self, repo_source):
     repo_label = self.cdn_repository_manager.get_content_source_label(
         repo_source)
     repo_plugin = yum_src.ContentSource(self.mount_point +
                                         str(repo_source['relative_url']),
                                         str(repo_label),
                                         org=None,
                                         no_mirrors=True)
     try:
         keys = self.cdn_repository_manager.get_repository_crypto_keys(
             repo_source['relative_url'])
     except CdnRepositoryNotFoundError:
         log2(1,
              1,
              "ERROR: No SSL certificates were found for repository '%s'" %
              repo_source['relative_url'],
              stream=sys.stderr)
         return repo_plugin
     if len(keys) >= 1:
         (ca_cert_file, client_cert_file,
          client_key_file) = reposync.write_ssl_set_cache(
              keys[0]['ca_cert'], keys[0]['client_cert'],
              keys[0]['client_key'])
         repo_plugin.set_ssl_options(ca_cert_file, client_cert_file,
                                     client_key_file)
     else:
         log2(
             1,
             1,
             "ERROR: No valid SSL certificates were found for repository '%s'."
             % repo_source['relative_url'],
             stream=sys.stderr)
     return repo_plugin
示例#5
0
 def _count_packages_in_repo(repo_source, keys):
     repo_label = (repo_source.split(CFG.CDN_ROOT)[1])[1:].replace('/', '_')
     repo_plugin = yum_src.ContentSource(str(repo_source), str(repo_label))
     repo_plugin.set_ssl_options(str(keys['ca_cert']),
                                 str(keys['client_cert']),
                                 str(keys['client_key']))
     return repo_plugin.raw_list_packages()
示例#6
0
    def test_minrate_timeout_config(self):
        CFG = Mock()
        CFG.REPOSYNC_TIMEOUT = 42
        CFG.REPOSYNC_MINRATE = 42
        CFG.REPOSYNC_DOWNLOAD_THREADS = 42  # Throws ValueError if not defined
        CFG.MOUNT_POINT = ""
        CFG.PREPENDED_DIR = ''
        CFG.http_proxy = False

        grabber_spy = Mock()

        with patch(
                "spacewalk.satellite_tools.repo_plugins.yum_src.urlgrabber.urlread",
                grabber_spy
        ), patch(
                "spacewalk.satellite_tools.repo_plugins.yum_src.CFG", CFG
        ), patch(
                "spacewalk.satellite_tools.repo_plugins.yum_src.os.path.isfile",
                Mock(return_value=False),
        ):
            cs = yum_src.ContentSource("http://example.com/foo/",
                                       "test_repo",
                                       org="")
            cs.get_file("bar")

            self.assertEqual(grabber_spy.call_args[1]["timeout"], 42)
            self.assertEqual(grabber_spy.call_args[1]["minrate"], 42)
示例#7
0
 def _count_packages_in_repo(self, repo_source, keys):
     repo_label = repo_source[1:].replace('/', '_')
     repo_plugin = yum_src.ContentSource(
         self.mount_point + str(repo_source), str(repo_label))
     repo_plugin.set_ssl_options(str(keys['ca_cert']),
                                 str(keys['client_cert']),
                                 str(keys['client_key']))
     return repo_plugin.raw_list_packages()
示例#8
0
 def _create_yum_repo(self, repo_source):
     repo_label = self.cdn_repository_manager.get_content_source_label(
         repo_source)
     keys = self.cdn_repository_manager.get_repository_crypto_keys(
         repo_source['relative_url'])
     repo_plugin = yum_src.ContentSource(self.mount_point +
                                         str(repo_source['relative_url']),
                                         str(repo_label),
                                         org=None,
                                         no_mirrors=True)
     repo_plugin.set_ssl_options(str(keys['ca_cert']),
                                 str(keys['client_cert']),
                                 str(keys['client_key']))
     return repo_plugin