Пример #1
0
class TestUploadAPI(unittest.TestCase):
    def setUp(self):
        self.api = UploadAPI(mock.MagicMock())

    def test_import_upload_with_override_config(self):
        ret = self.api.import_upload('upload_id', 'repo_id', 'unit_type_id', unit_key={},
                                     unit_metadata={}, override_config={'mask-id': 'test-mask-id'})
        expected_body = {
            'upload_id': 'upload_id',
            'unit_type_id': 'unit_type_id',
            'unit_key': {},
            'unit_metadata': {},
            'override_config': {'mask-id': 'test-mask-id'},
        }

        self.api.server.POST.assert_called_once_with('/v2/repositories/%s/actions/import_upload/'
                                                     % 'repo_id', expected_body)
        self.assertEqual(ret, self.api.server.POST.return_value)

    def test_import_upload(self):
        ret = self.api.import_upload('upload_id', 'repo_id', 'unit_type_id', unit_key={},
                                     unit_metadata={})
        expected_body = {
            'upload_id': 'upload_id',
            'unit_type_id': 'unit_type_id',
            'unit_key': {},
            'unit_metadata': {},
            'override_config': None,
        }

        self.api.server.POST.assert_called_once_with('/v2/repositories/%s/actions/import_upload/'
                                                     % 'repo_id', expected_body)
        self.assertEqual(ret, self.api.server.POST.return_value)
Пример #2
0
    def __init__(self, pulp_connection):
        """
        @type:   pulp_connection: pulp.bindings.server.PulpConnection
        """

        # Please keep the following in alphabetical order to ease reading
        self.actions = ActionsAPI(pulp_connection)
        self.bind = consumer.BindingsAPI(pulp_connection)
        self.bindings = consumer.BindingSearchAPI(pulp_connection)
        self.profile = consumer.ProfilesAPI(pulp_connection)
        self.consumer = consumer.ConsumerAPI(pulp_connection)
        self.consumer_content = consumer.ConsumerContentAPI(pulp_connection)
        self.consumer_content_schedules = consumer.ConsumerContentSchedulesAPI(
            pulp_connection)
        self.consumer_group = consumer_groups.ConsumerGroupAPI(pulp_connection)
        self.consumer_group_search = consumer_groups.ConsumerGroupSearchAPI(
            pulp_connection)
        self.consumer_group_actions = consumer_groups.ConsumerGroupActionAPI(
            pulp_connection)
        self.consumer_group_bind = consumer_groups.ConsumerGroupBindAPI(
            pulp_connection)
        self.consumer_group_content = consumer_groups.ConsumerGroupContentAPI(
            pulp_connection)
        self.consumer_history = consumer.ConsumerHistoryAPI(pulp_connection)
        self.consumer_search = consumer.ConsumerSearchAPI(pulp_connection)
        self.content_orphan = OrphanContentAPI(pulp_connection)
        self.content_source = ContentSourceAPI(pulp_connection)
        self.content_catalog = ContentCatalogAPI(pulp_connection)
        self.event_listener = EventListenerAPI(pulp_connection)
        self.permission = auth.PermissionAPI(pulp_connection)
        self.repo = repository.RepositoryAPI(pulp_connection)
        self.repo_actions = repository.RepositoryActionsAPI(pulp_connection)
        self.repo_distributor = repository.RepositoryDistributorAPI(
            pulp_connection)
        self.repo_group = repo_groups.RepoGroupAPI(pulp_connection)
        self.repo_group_actions = repo_groups.RepoGroupActionAPI(
            pulp_connection)
        self.repo_group_distributor = repo_groups.RepoGroupDistributorAPI(
            pulp_connection)
        self.repo_group_distributor_search = repo_groups.RepoGroupSearchAPI(
            pulp_connection)
        self.repo_group_search = repo_groups.RepoGroupSearchAPI(
            pulp_connection)
        self.repo_history = repository.RepositoryHistoryAPI(pulp_connection)
        self.repo_importer = repository.RepositoryImporterAPI(pulp_connection)
        self.repo_publish_schedules = repository.RepositoryPublishSchedulesAPI(
            pulp_connection)
        self.repo_search = repository.RepositorySearchAPI(pulp_connection)
        self.repo_sync_schedules = repository.RepositorySyncSchedulesAPI(
            pulp_connection)
        self.repo_unit = repository.RepositoryUnitAPI(pulp_connection)
        self.role = auth.RoleAPI(pulp_connection)
        self.server_info = ServerInfoAPI(pulp_connection)
        self.server_status = ServerStatusAPI(pulp_connection)
        self.tasks = TasksAPI(pulp_connection)
        self.tasks_search = TaskSearchAPI(pulp_connection)
        self.uploads = UploadAPI(pulp_connection)
        self.user = auth.UserAPI(pulp_connection)
        self.user_search = auth.UserSearchAPI(pulp_connection)
Пример #3
0
    def __init__(self, pulp_connection):
        """
        @type:   pulp_connection: pulp.bindings.server.PulpConnection
        """

        # Please keep the following in alphabetical order to ease reading
        self.actions = ActionsAPI(pulp_connection)
        self.bind = BindingsAPI(pulp_connection)
        self.bindings = BindingSearchAPI(pulp_connection)
        self.profile = ProfilesAPI(pulp_connection)
        self.consumer = ConsumerAPI(pulp_connection)
        self.consumer_content = ConsumerContentAPI(pulp_connection)
        self.consumer_content_schedules = ConsumerContentSchedulesAPI(
            pulp_connection)
        self.consumer_group = ConsumerGroupAPI(pulp_connection)
        self.consumer_group_search = ConsumerGroupSearchAPI(pulp_connection)
        self.consumer_group_actions = ConsumerGroupActionAPI(pulp_connection)
        self.consumer_group_bind = ConsumerGroupBindAPI(pulp_connection)
        self.consumer_group_content = ConsumerGroupContentAPI(pulp_connection)
        self.consumer_history = ConsumerHistoryAPI(pulp_connection)
        self.consumer_search = ConsumerSearchAPI(pulp_connection)
        self.content_orphan = OrphanContentAPI(pulp_connection)
        self.event_listener = EventListenerAPI(pulp_connection)
        self.permission = PermissionAPI(pulp_connection)
        self.repo = RepositoryAPI(pulp_connection)
        self.repo_actions = RepositoryActionsAPI(pulp_connection)
        self.repo_distributor = RepositoryDistributorAPI(pulp_connection)
        self.repo_group = RepoGroupAPI(pulp_connection)
        self.repo_group_actions = RepoGroupActionAPI(pulp_connection)
        self.repo_group_distributor = RepoGroupDistributorAPI(pulp_connection)
        self.repo_group_distributor_search = RepoGroupSearchAPI(
            pulp_connection)
        self.repo_group_search = RepoGroupSearchAPI(pulp_connection)
        self.repo_history = RepositoryHistoryAPI(pulp_connection)
        self.repo_importer = RepositoryImporterAPI(pulp_connection)
        self.repo_publish_schedules = RepositoryPublishSchedulesAPI(
            pulp_connection)
        self.repo_search = RepositorySearchAPI(pulp_connection)
        self.repo_sync_schedules = RepositorySyncSchedulesAPI(pulp_connection)
        self.repo_unit = RepositoryUnitAPI(pulp_connection)
        self.role = RoleAPI(pulp_connection)
        self.server_info = ServerInfoAPI(pulp_connection)
        self.tasks = TasksAPI(pulp_connection)
        self.tasks_search = TaskSearchAPI(pulp_connection)
        self.uploads = UploadAPI(pulp_connection)
        self.user = UserAPI(pulp_connection)
        self.user_search = UserSearchAPI(pulp_connection)
Пример #4
0
    def upload(self, path, repo, environment):
        pulp = UploadAPI(self.connection)
        unit_key, unit_metadata = self.generate_upload_data(path)
        name = os.path.basename(path)
        repo_id = "{0}-{1}".format(repo, environment)

        ################################################################
        # Initialize upload
        ################################################################
        response = pulp.initialize_upload()
        if response.response_code == Constants.PULP_POST_CREATED:
            Log.log_debug("Initialized upload process for %s" % name)
        else:
            raise SystemError("Failed to initialize upload process for %s" %
                              name)
        upload_id = response.response_body['upload_id']

        ################################################################
        # Upload chunks w/ Constants.UPLOAD_AT_ONCE size
        ################################################################
        size = os.path.getsize(path)
        rpm_fd = open(path, 'rb')
        total_seeked = 0
        rpm_fd.seek(0)

        while total_seeked < size:
            chunk = rpm_fd.read(Constants.UPLOAD_AT_ONCE)
            last_offset = total_seeked
            total_seeked += len(chunk)

            Log.log_notice("Seeked %s data... (total seeked: %s)" %
                           (len(chunk), total_seeked))

            response = pulp.upload_segment(upload_id, last_offset, chunk)
            if response.response_code is not Constants.PULP_PUT_OK:
                Log.log_debug("Failed to upload %s" % name)
                raise SystemError("Failed to upload %s" % name)

        ################################################################
        # Import upload
        ################################################################
        response = pulp.import_upload(upload_id, repo_id, 'rpm', unit_key,
                                      unit_metadata)
        if response.response_code not in [
                Constants.PULP_POST_OK, Constants.PULP_POST_ACCEPTED
        ]:
            Log.log_error("Failed to import upload for %s" % name)
            raise SystemError("Failed to import upload for %s" % name)

        Log.log_debug("RPM upload %s complete" % name)

        ################################################################
        # Finalize upload by cleaning up request on server
        ################################################################
        response = pulp.delete_upload(upload_id)
        if response.response_code != Constants.PULP_DELETE_OK:
            Log.log_error("Failed to clean up upload for %s" % name)
            raise SystemError("Failed to clean up upload for %s" % name)

        ################################################################
        # Publish the repo
        ################################################################
        pulp_repo = PulpRepo(self.connection)
        pulp_repo.publish(name=repo, environment=environment)

        ################################################################
        # FIN
        ################################################################
        Log.log_info("successfully uploaded %s" % name)
Пример #5
0
    def upload(self, path, repo, environment):
        pulp = UploadAPI(self.connection)
        unit_key, unit_metadata = self.generate_upload_data(path)
        name = os.path.basename(path)
        repo_id = "{0}-{1}".format(repo, environment)

        ################################################################
        # Initialize upload
        ################################################################
        response = pulp.initialize_upload()
        if response.response_code == Constants.PULP_POST_CREATED:
            Log.log_debug("Initialized upload process for %s" % name)
        else:
            raise SystemError("Failed to initialize upload process for %s" %
                              name)
        upload_id = response.response_body['upload_id']

        ################################################################
        # Upload chunks w/ Constants.UPLOAD_AT_ONCE size
        ################################################################
        size = os.path.getsize(path)
        rpm_fd = open(path, 'rb')
        total_seeked = 0
        rpm_fd.seek(0)

        while total_seeked < size:
            chunk = rpm_fd.read(Constants.UPLOAD_AT_ONCE)
            last_offset = total_seeked
            total_seeked += len(chunk)

            Log.log_notice("Seeked %s data... (total seeked: %s)" %
                           (len(chunk), total_seeked))

            response = pulp.upload_segment(upload_id, last_offset, chunk)
            if response.response_code is not Constants.PULP_PUT_OK:
                Log.log_debug("Failed to upload %s" % name)
                raise SystemError("Failed to upload %s" % name)

        ################################################################
        # Import upload
        ################################################################
        response = pulp.import_upload(upload_id,
                                      repo_id,
                                      'rpm',
                                      unit_key,
                                      unit_metadata)
        if response.response_code not in [Constants.PULP_POST_OK,
                                          Constants.PULP_POST_ACCEPTED]:
            Log.log_error("Failed to import upload for %s" % name)
            raise SystemError("Failed to import upload for %s" % name)

        Log.log_debug("RPM upload %s complete" % name)

        ################################################################
        # Finalize upload by cleaning up request on server
        ################################################################
        response = pulp.delete_upload(upload_id)
        if response.response_code != Constants.PULP_DELETE_OK:
            Log.log_error("Failed to clean up upload for %s" % name)
            raise SystemError("Failed to clean up upload for %s" % name)

        ################################################################
        # Publish the repo
        ################################################################
        pulp_repo = PulpRepo(self.connection)
        pulp_repo.publish(name=repo,
                          environment=environment)

        ################################################################
        # FIN
        ################################################################
        Log.log_info("successfully uploaded %s" % name)
Пример #6
0
 def setUp(self):
     self.api = UploadAPI(mock.MagicMock())