def process_main(self): """ Publish the JSON file for Crane. """ registry = configuration.get_repo_registry_id(self.get_repo(), self.get_config()) redirect_url = configuration.get_redirect_url(self.get_config(), self.get_repo(), 'v2') schema2_data = self.redirect_data[2] manifest_list_data = self.redirect_data['list'] manifest_list_amd64 = self.redirect_data['amd64'] redirect_data = { 'type': 'pulp-docker-redirect', 'version': 4, 'repository': self.get_repo().id, 'repo-registry-id': registry, 'url': redirect_url, 'protected': self.get_config().get('protected', False), 'schema2_data': list(schema2_data), 'manifest_list_data': list(manifest_list_data), 'manifest_list_amd64_tags': manifest_list_amd64 } misc.mkdir(os.path.dirname(self.app_publish_location)) with open(self.app_publish_location, 'w') as app_file: app_file.write(json.dumps(redirect_data))
def __init__(self, working_dir, conduit, config, repo): """ :param working_dir: working directory to create the filelists.xml.gz in :type working_dir: str :param conduit: The conduit to get api calls :type conduit: pulp.plugins.conduits.repo_publish.RepoPublishConduit :param config: Pulp configuration for the distributor :type config: pulp.plugins.config.PluginCallConfiguration :param repo: Pulp managed repository :type repo: pulp.plugins.model.Repository """ self.repo_id = repo.id metadata_file_path = os.path.join(working_dir, configuration.get_redirect_file_name(repo)) super(RedirectFileContext, self).__init__(metadata_file_path) scratchpad = conduit.get_repo_scratchpad() tag_list = scratchpad.get(u'tags', []) self.tags = self.convert_tag_list_to_dict(tag_list) self.registry = configuration.get_repo_registry_id(repo, config) self.redirect_url = configuration.get_redirect_url(config, repo, 'v1') if config.get('protected', False): self.protected = "true" else: self.protected = "false"
def process_main(self): """ Publish the JSON file for Crane. """ registry = configuration.get_repo_registry_id(self.get_repo(), self.get_config()) redirect_url = configuration.get_redirect_url(self.get_config(), self.get_repo(), 'v2') redirect_data = { 'type': 'pulp-docker-redirect', 'version': 2, 'repository': self.get_repo().id, 'repo-registry-id': registry, 'url': redirect_url, 'protected': self.get_config().get('protected', False)} misc.mkdir(os.path.dirname(self.app_publish_location)) with open(self.app_publish_location, 'w') as app_file: app_file.write(json.dumps(redirect_data))
def process_main(self): """ Publish the JSON file for Crane. """ repo = self.get_repo() config = self.get_config() registry_prefix = configuration.get_repo_registry_id(repo, config) global_app_publish_dir = os.path.join( configuration.get_app_publish_dir(config, self.parent.docker_api_version), registry_prefix) self.parent.atomic_publish_step.publish_locations.append( ("app", global_app_publish_dir)) # Compute image references: tags and manifest IDs img_refs = dict( (img_name, set(tags)) for img_name, tags in self.parent.imgname_to_tags.items()) for img_name, refs in self.parent.imgname_to_mfid.items(): img_refs.setdefault(img_name, set()).update(refs) redirect_url = configuration.get_redirect_url( config, repo, self.parent.docker_api_version) # Defaults redirect_tmpl = { 'type': 'pulp-docker-redirect', 'version': 4, 'repository': self.get_repo().id, 'protected': config.get('protected', False), 'manifest_list_data': [], 'manifest_list_amd64_tags': {} } working_dir = self.get_working_dir() for img_name, refs in img_refs.items(): app_publish_path = os.path.join("app", "%s.json" % img_name) app_publish_location = os.path.join(working_dir, app_publish_path) misc.mkdir(os.path.dirname(app_publish_location)) redirect_data = dict(redirect_tmpl) redirect_data['repo-registry-id'] = os.path.join( registry_prefix, img_name) redirect_data['url'] = os.path.join(redirect_url, img_name) redirect_data['schema2_data'] = sorted(refs) with open(app_publish_location, 'w') as app_file: app_file.write(json.dumps(redirect_data))
def process_main(self): """ Publish the JSON file for Crane. """ registry = configuration.get_repo_registry_id(self.get_repo(), self.get_config()) redirect_url = configuration.get_redirect_url(self.get_config(), self.get_repo(), 'v2') redirect_data = { 'type': 'pulp-docker-redirect', 'version': 2, 'repository': self.get_repo().id, 'repo-registry-id': registry, 'url': redirect_url, 'protected': self.get_config().get('protected', False) } misc.mkdir(os.path.dirname(self.app_publish_location)) with open(self.app_publish_location, 'w') as app_file: app_file.write(json.dumps(redirect_data))
def test_get_redirect_url_generated(self, mock_server_config): mock_server_config.get.return_value = 'www.foo.bar' computed_result = 'https://www.foo.bar/pulp/docker/baz/' self.assertEquals(computed_result, configuration.get_redirect_url({}, Mock(id='baz')))
def test_get_redirect_url_from_config_trailing_slash(self): sample_url = 'http://www.pulpproject.org' conduit = Mock(repo_id=sample_url) url = configuration.get_redirect_url( {constants.CONFIG_KEY_REDIRECT_URL: sample_url}, conduit) self.assertEquals(sample_url + '/', url)
def test_get_redirect_url_generated(self, mock_server_config): mock_server_config.get.return_value = 'www.foo.bar' computed_result = 'https://www.foo.bar/pulp/docker/v1/baz/' self.assertEquals(computed_result, configuration.get_redirect_url({}, Mock(id='baz'), 'v1'))
def test_get_redirect_url_from_config_trailing_slash(self): sample_url = 'http://www.pulpproject.org' conduit = Mock(repo_id=sample_url) url = configuration.get_redirect_url({constants.CONFIG_KEY_REDIRECT_URL: sample_url}, conduit, 'v1') self.assertEquals(sample_url + '/', url)