def test_deleteRepo(self, pulp, publish): repo = 'foobar' flexmock(Pulp) if publish: (Pulp.should_receive('emptyRepo').with_args( repo).once().and_return(None)) (Pulp.should_receive('crane').with_args( repo, force_refresh=True).twice().and_return(None)) flexmock(RequestsHttpCaller) (RequestsHttpCaller.should_receive('__call__').with_args( 'delete', '/pulp/api/v2/repositories/%s/' % repo).once().and_return(123)) (Pulp.should_receive('watch').with_args(123).once().and_return(None)) pulp.deleteRepo(repo, publish)
def pulp(tmpdir): with nested(NamedTemporaryFile(mode='wt'), NamedTemporaryFile(mode='wt'), NamedTemporaryFile(mode='wt')) as (fp, df, dn): name = 'test' fp.write(dedent(""" [pulps] {name} = foo [registries] {name} = foo [filers] {name} = foo [redirect] {name} = no [distributors] {name} = foo,docker_rsync [release_order] {name} = foo,docker_rsync [retries] {name} = 2 [signatures] foobar = foo [sig_exception] {name} = barfoo78 """).format(name=name)) fp.flush() df.write(dedent(""" { "foo":{ "distributor_type_id": "docker_distributor_web", "distributor_config": {} }, "docker_rsync":{ "distributor_type_id": "docker_rsync_distributor", "distributor_config": {} } } """)) df.flush() dn.write(dedent(""" { "beta":{ "signature": "foobar", "name_enforce": "", "content_enforce": "", "name_restrict": ["-test"] }, "test":{ "signature": "foobar", "name_enforce": "-test", "content_enforce": "/content/test", "name_restrict": [] } } """)) dn.flush() pulp = Pulp(env=name, config_file=fp.name, config_distributors=df.name, config_distributions=dn.name) return pulp
def pulp(tmpdir): with nested(NamedTemporaryFile(mode='wt'), NamedTemporaryFile(mode='wt')) as (fp, df): name = 'test' fp.write( dedent(""" [pulps] {name} = foo [registries] {name} = foo [filers] {name} = foo [redirect] {name} = no [distributors] {name} = foo [release_order] {name} = foo [retries] {name} = 2 """).format(name=name)) fp.flush() df.write(dedent(""" {} """)) df.flush() pulp = Pulp(env=name, config_file=fp.name, config_distributors=df.name) return pulp
def core_pulp(tmpdir): # No optional fields in dockpulp.conf with nested(NamedTemporaryFile(mode='wt'), NamedTemporaryFile(mode='wt'), NamedTemporaryFile(mode='wt')) as (fp, df, dn): name = 'test' fp.write( dedent(""" [pulps] {name} = foo [registries] {name} = foo [filers] {name} = foo [redirect] {name} = no [distributors] {name} = foo [release_order] {name} = foo """).format(name=name)) fp.flush() df.write( dedent(""" { "foo":{ "distributor_type_id": "docker_distributor_web", "distributor_config": {} } } """)) df.flush() dn.write( dedent(""" { "foo":{ "signature": "", "name_enforce": "", "content_enforce": "", "name_restrict": [] } } """)) dn.flush() core_pulp = Pulp(env=name, config_file=fp.name, config_distributors=df.name, config_distributions=dn.name) return core_pulp
def test_remove_filters(self, pulp): repo = 'foobar' type_ids = [ 'docker_image', 'docker_manifest', 'docker_blob', 'docker_tag', 'docker_manifest_list' ] data = { 'criteria': { 'type_ids': type_ids, 'filters': {}, }, 'override_config': {}, 'limit': 1 } flexmock(RequestsHttpCaller) (RequestsHttpCaller.should_receive('__call__').with_args( 'post', '/pulp/api/v2/repositories/%s/actions/unassociate/' % repo, data=json.dumps(data)).once().and_return(123)) flexmock(Pulp) (Pulp.should_receive('watch').with_args(123).once().and_return(None)) pulp.remove_filters(repo)
def pulp(tmpdir): with nested(NamedTemporaryFile(mode='wt'), NamedTemporaryFile(mode='wt')) as (fp, df): name = 'test' fp.write( dedent(""" [pulps] {name} = foo [registries] {name} = foo [filers] {name} = foo [redirect] {name} = no [distributors] {name} = foo [release_order] {name} = foo [retries] {name} = 2 [signatures] foobar = foo [distribution] distributions = beta,ga """).format(name=name)) fp.flush() df.write( dedent(""" { "foo":{ "distributor_type_id": "docker_distributor_web", "distributor_config": {} } } """)) df.flush() pulp = Pulp(env=name, config_file=fp.name, config_distributors=df.name) return pulp
def test_emptyRepo(self, pulp): repo = 'foobar' flexmock(Pulp) (Pulp.should_receive('remove_filters').with_args( repo).once().and_return(None)) pulp.emptyRepo(repo)
def test_createRepo(self, pulp, repo_id, url, registry_id, distributors, productline, library, distribution, repotype, importer_type_id, rel_url, download): if distribution == 'test': if (url != '/content/test/foo-test/bar' and url is not None) or \ ((productline is not None or library) and productline != 'foo-test'): with pytest.raises(errors.DockPulpError): pulp.createRepo(repo_id=repo_id, url=url, registry_id=registry_id, distributors=distributors, productline=productline, library=library, distribution=distribution, repotype=repotype, importer_type_id=importer_type_id, rel_url=rel_url, download=download) return if distribution == 'beta' and productline and productline.endswith( 'test'): with pytest.raises(errors.DockPulpError): pulp.createRepo(repo_id=repo_id, url=url, registry_id=registry_id, distributors=distributors, productline=productline, library=library, distribution=distribution, repotype=repotype, importer_type_id=importer_type_id, rel_url=rel_url, download=download) return if not registry_id and (repo_id == 'tags' or productline == 'blobs'): with pytest.raises(errors.DockPulpError): pulp.createRepo(repo_id=repo_id, url=url, registry_id=registry_id, distributors=distributors, productline=productline, library=library, distribution=distribution, repotype=repotype, importer_type_id=importer_type_id, rel_url=rel_url, download=download) return flexmock(Pulp) (Pulp.should_receive('createOriginRepo').once().and_return(None)) flexmock(RequestsHttpCaller) (RequestsHttpCaller.should_receive('__call__').once().and_return(None)) response = pulp.createRepo(repo_id=repo_id, url=url, registry_id=registry_id, distributors=distributors, productline=productline, library=library, distribution=distribution, repotype=repotype, importer_type_id=importer_type_id, rel_url=rel_url, download=download) if not repo_id.startswith(pulp.getPrefix()): repo_id = pulp.getPrefix() + repo_id if registry_id is None: if productline: pindex = repo_id.find(productline) registry_id = productline + '/' + repo_id[pindex + len(productline) + 1:] elif library: registry_id = repo_id.replace(pulp.getPrefix(), '') else: registry_id = repo_id.replace(pulp.getPrefix(), '').replace('-', '/', 1) rurl = url if rurl and not rurl.startswith('http'): rurl = pulp.cdnhost + url assert response['id'] == repo_id assert response['display_name'] == repo_id if distribution: assert response['notes']['distribution'] == distribution sig = pulp.getDistributionSig(distribution) assert response['notes']['signatures'] == pulp.getSignature(sig) if distributors: for distributor in response['distributors']: if distributor[ 'distributor_type_id'] == 'docker_distributor_web': assert distributor['distributor_config'][ 'repo-registry-id'] == registry_id assert distributor['distributor_config'][ 'redirect-url'] == rurl if repotype: assert response['notes']['_repo-type'] == repotype if importer_type_id: assert response['importer_type_id'] == importer_type_id if rel_url: assert response['notes']['relative_url'] == rel_url if distributors: for distributor in response['distributors']: if distributor[ 'distributor_type_id'] == 'docker_rsync_distributor': assert distributor['distributor_config'][ 'repo_relative_path'] == rel_url if download is not None: if download: assert response['notes'][ 'include_in_download_service'] == "True" else: assert response['notes'][ 'include_in_download_service'] == "False"
def test_switched_pulp(self): # Test for dockpulp switchover with nested(NamedTemporaryFile(mode='wt'), NamedTemporaryFile(mode='wt'), NamedTemporaryFile(mode='wt')) as (fp, df, dn): name = 'test' fp.write( dedent(""" [pulps] {name} = foo [registries] {name} = foo [filers] {name} = foo [redirect] {name} = no [distributors] {name} = foo [release_order] {name} = foo [switch_ver] version = 10.0 [switch_release] {name} = bar """).format(name=name)) fp.flush() df.write( dedent(""" { "foo":{ "distributor_type_id": "docker_distributor_web", "distributor_config": {} }, "switch":{ "distributor_type_id": "docker_distributor_web", "distributor_config": {} } } """)) df.flush() dn.write( dedent(""" { "foo":{ "signature": "", "name_enforce": "", "content_enforce": "", "name_restrict": [] } } """)) dn.flush() url = '/pulp/api/v2/status' response = {'versions': {'platform_version': '10.0'}} flexmock(RequestsHttpCaller) (RequestsHttpCaller.should_receive('__call__').with_args( 'get', url).and_return(response)) switched_pulp = Pulp(env=name, config_file=fp.name, config_distributors=df.name, config_distributions=dn.name) assert switched_pulp.release_order == switched_pulp.switch_release response = {'versions': {'platform_version': '1.0'}} (RequestsHttpCaller.should_receive('__call__').with_args( 'get', url).and_return(response)) switched_pulp = Pulp(env=name, config_file=fp.name, config_distributors=df.name, config_distributions=dn.name) assert switched_pulp.release_order != switched_pulp.switch_release