Пример #1
0
class DistributorScratchpadMixinTests(base.PulpServerTests):
    def clean(self):
        super(DistributorScratchpadMixinTests, self).clean()
        types_database.clean()
        model.Repository.drop_collection()

    @mock.patch('pulp.server.managers.repo._common.get_working_directory',
                return_value="/var/cache/pulp/mock_worker/mock_task_id")
    def setUp(self, mock_get_working_directory):
        super(DistributorScratchpadMixinTests, self).setUp()
        mock_plugins.install()
        self.distributor_manager = RepoDistributorManager()
        repo_id = 'repo-1'
        with mock.patch(
                'pulp.server.managers.repo.distributor.model.Repository'):
            self.distributor_manager.add_distributor(
                repo_id,
                'mock-distributor', {},
                True,
                distributor_id='test-distributor')

        self.conduit = mixins.DistributorScratchPadMixin(
            repo_id, 'test-distributor')

    def tearDown(self):
        super(DistributorScratchpadMixinTests, self).tearDown()
        manager_factory.reset()
        mock_plugins.reset()

    def test_get_set_scratchpad(self):
        """
        Tests scratchpad calls.
        """

        # Test - get no scratchpad
        self.assertTrue(self.conduit.get_scratchpad() is None)

        # Test - set scrathpad
        value = 'dragon'
        self.conduit.set_scratchpad(value)

        # Test - get updated value
        self.assertEqual(value, self.conduit.get_scratchpad())

    def test_scratchpad_with_error(self):
        # Setup
        mock_distributor_manager = mock.Mock()
        mock_distributor_manager.get_distributor_scratchpad.side_effect = Exception(
        )
        mock_distributor_manager.set_distributor_scratchpad.side_effect = Exception(
        )

        manager_factory._INSTANCES[
            manager_factory.TYPE_REPO_DISTRIBUTOR] = mock_distributor_manager

        # Test
        self.assertRaises(mixins.DistributorConduitException,
                          self.conduit.get_scratchpad)
        self.assertRaises(mixins.DistributorConduitException,
                          self.conduit.set_scratchpad, 'foo')
class DistributorScratchpadMixinTests(base.PulpServerTests):
    def clean(self):
        super(DistributorScratchpadMixinTests, self).clean()
        types_database.clean()

        Repo.get_collection().remove()

    def setUp(self):
        super(DistributorScratchpadMixinTests, self).setUp()
        mock_plugins.install()

        self.repo_manager = RepoManager()
        self.distributor_manager = RepoDistributorManager()

        repo_id = 'repo-1'
        self.repo_manager.create_repo(repo_id)
        self.distributor_manager.add_distributor(
            repo_id,
            'mock-distributor', {},
            True,
            distributor_id='test-distributor')

        self.conduit = DistributorScratchPadMixin(repo_id, 'test-distributor')

    def tearDown(self):
        super(DistributorScratchpadMixinTests, self).tearDown()
        manager_factory.reset()

    def test_get_set_scratchpad(self):
        """
        Tests scratchpad calls.
        """

        # Test - get no scratchpad
        self.assertTrue(self.conduit.get_scratchpad() is None)

        # Test - set scrathpad
        value = 'dragon'
        self.conduit.set_scratchpad(value)

        # Test - get updated value
        self.assertEqual(value, self.conduit.get_scratchpad())

    def test_scratchpad_with_error(self):
        # Setup
        mock_distributor_manager = mock.Mock()
        mock_distributor_manager.get_distributor_scratchpad.side_effect = Exception(
        )
        mock_distributor_manager.set_distributor_scratchpad.side_effect = Exception(
        )

        manager_factory._INSTANCES[
            manager_factory.TYPE_REPO_DISTRIBUTOR] = mock_distributor_manager

        # Test
        self.assertRaises(DistributorConduitException,
                          self.conduit.get_scratchpad)
        self.assertRaises(DistributorConduitException,
                          self.conduit.set_scratchpad, 'foo')
Пример #3
0
class DistributorScratchpadMixinTests(base.PulpServerTests):

    def clean(self):
        super(DistributorScratchpadMixinTests, self).clean()
        types_database.clean()

        Repo.get_collection().remove()

    @mock.patch('pulp.server.managers.repo._common.get_working_directory',
                return_value="/var/cache/pulp/mock_worker/mock_task_id")
    def setUp(self, mock_get_working_directory):
        super(DistributorScratchpadMixinTests, self).setUp()
        mock_plugins.install()

        self.repo_manager = RepoManager()
        self.distributor_manager = RepoDistributorManager()

        repo_id = 'repo-1'
        self.repo_manager.create_repo(repo_id)
        self.distributor_manager.add_distributor(repo_id, 'mock-distributor', {}, True,
                                                 distributor_id='test-distributor')

        self.conduit = mixins.DistributorScratchPadMixin(repo_id, 'test-distributor')

    def tearDown(self):
        super(DistributorScratchpadMixinTests, self).tearDown()
        manager_factory.reset()
        mock_plugins.reset()

    def test_get_set_scratchpad(self):
        """
        Tests scratchpad calls.
        """

        # Test - get no scratchpad
        self.assertTrue(self.conduit.get_scratchpad() is None)

        # Test - set scrathpad
        value = 'dragon'
        self.conduit.set_scratchpad(value)

        # Test - get updated value
        self.assertEqual(value, self.conduit.get_scratchpad())

    def test_scratchpad_with_error(self):
        # Setup
        mock_distributor_manager = mock.Mock()
        mock_distributor_manager.get_distributor_scratchpad.side_effect = Exception()
        mock_distributor_manager.set_distributor_scratchpad.side_effect = Exception()

        manager_factory._INSTANCES[manager_factory.TYPE_REPO_DISTRIBUTOR] = mock_distributor_manager

        # Test
        self.assertRaises(mixins.DistributorConduitException, self.conduit.get_scratchpad)
        self.assertRaises(mixins.DistributorConduitException, self.conduit.set_scratchpad, 'foo')
Пример #4
0
    def setUp(self, mock_get_working_directory):
        super(DistributorScratchpadMixinTests, self).setUp()
        mock_plugins.install()

        self.repo_manager = RepoManager()
        self.distributor_manager = RepoDistributorManager()

        repo_id = 'repo-1'
        self.repo_manager.create_repo(repo_id)
        self.distributor_manager.add_distributor(repo_id, 'mock-distributor', {}, True,
                                                 distributor_id='test-distributor')

        self.conduit = mixins.DistributorScratchPadMixin(repo_id, 'test-distributor')
Пример #5
0
    def setUp(self, mock_get_working_directory):
        super(DistributorScratchpadMixinTests, self).setUp()
        mock_plugins.install()
        self.distributor_manager = RepoDistributorManager()
        repo_id = 'repo-1'
        with mock.patch(
                'pulp.server.managers.repo.distributor.model.Repository'):
            self.distributor_manager.add_distributor(
                repo_id,
                'mock-distributor', {},
                True,
                distributor_id='test-distributor')

        self.conduit = mixins.DistributorScratchPadMixin(
            repo_id, 'test-distributor')
Пример #6
0
def get_repo_data(repo_ids):
    """
    Find, open, and return the gdbm database file associated with each repo
    plus that repo's publish protocol

    :param repo_ids: list of repository IDs.
    :type  repo_ids: list

    :return:    dictionary where keys are repo IDs, and values are dicts that
                contain an open gdbm database under key "db", and a protocol
                under key "protocol".
    :rtype:     dict
    """
    ret = {}
    for distributor in RepoDistributorManager.find_by_repo_list(repo_ids):
        publish_protocol = _get_protocol_from_distributor(distributor)
        protocol_key, protocol_default_value = PROTOCOL_CONFIG_KEYS[
            publish_protocol]
        repo_path = distributor['config'].get(protocol_key,
                                              protocol_default_value)
        repo_id = distributor['repo_id']
        db_path = os.path.join(repo_path, repo_id,
                               constants.REPO_DEPDATA_FILENAME)
        try:
            ret[repo_id] = {
                'db': gdbm.open(db_path, 'r'),
                'protocol': publish_protocol
            }
        except gdbm.error:
            _LOGGER.error(
                'failed to find dependency database for repo %s. re-publish to fix.'
                % repo_id)
    return ret
Пример #7
0
def get_repo_data(repo_ids):
    """
    Find, open, and return the gdbm database file associated with each repo
    plus that repo's publish protocol

    :param repo_ids: list of repository IDs.
    :type  repo_ids: list

    :return:    dictionary where keys are repo IDs, and values are dicts that
                contain an open gdbm database under key "db", and a protocol
                under key "protocol".
    :rtype:     dict
    """
    ret = {}
    for distributor in RepoDistributorManager.find_by_repo_list(repo_ids):
        publish_protocol = _get_protocol_from_distributor(distributor)
        protocol_key, protocol_default_value = PROTOCOL_CONFIG_KEYS[publish_protocol]
        repo_path = distributor['config'].get(protocol_key, protocol_default_value)
        repo_id = distributor['repo_id']
        db_path = os.path.join(repo_path, repo_id, constants.REPO_DEPDATA_FILENAME)
        try:
            ret[repo_id] = {'db': gdbm.open(db_path, 'r'), 'protocol': publish_protocol}
        except gdbm.error:
            _LOGGER.error('failed to find dependency database for repo %s. re-publish to fix.' %
                          repo_id)
    return ret
Пример #8
0
    def setUp(self, mock_get_working_directory):
        super(DistributorScratchpadMixinTests, self).setUp()
        mock_plugins.install()
        self.distributor_manager = RepoDistributorManager()
        repo_id = 'repo-1'
        with mock.patch('pulp.server.managers.repo.distributor.model.Repository'):
            self.distributor_manager.add_distributor(repo_id, 'mock-distributor', {}, True,
                                                     distributor_id='test-distributor')

        self.conduit = mixins.DistributorScratchPadMixin(repo_id, 'test-distributor')
    def setUp(self):
        super(DistributorScratchpadMixinTests, self).setUp()
        mock_plugins.install()

        self.repo_manager = RepoManager()
        self.distributor_manager = RepoDistributorManager()

        repo_id = 'repo-1'
        self.repo_manager.create_repo(repo_id)
        self.distributor_manager.add_distributor(repo_id, 'mock-distributor', {}, True, distributor_id='test-distributor')

        self.conduit = DistributorScratchPadMixin(repo_id, 'test-distributor')
Пример #10
0
 def find_yum_distributor(self, repo_id):
     dist_manager = RepoDistributorManager()
     for dist in dist_manager.get_distributors(repo_id):
         if dist["distributor_type_id"] == 'yum_distributor':
             return dist
     raise Exception("Could not find yum distributor for %s" % repo_id)