diff --git a/osclib/core.py b/osclib/core.py index d8ad4ce3..f5efa133 100644 --- a/osclib/core.py +++ b/osclib/core.py @@ -461,3 +461,14 @@ def project_meta_revision(apiurl, project): root = ET.fromstringlist(get_commitlog( apiurl, project, '_project', None, format='xml', meta=True)) return int(root.find('logentry').get('revision')) + +def entity_exists(apiurl, project, package=None): + try: + http_GET(makeurl(apiurl, filter(None, ['source', project, package]) + ['_meta'])) + except HTTPError as e: + if e.code == 404: + return False + + raise e + + return True diff --git a/osclib/stagingapi.py b/osclib/stagingapi.py index 6bb36ac7..48681def 100644 --- a/osclib/stagingapi.py +++ b/osclib/stagingapi.py @@ -47,6 +47,7 @@ from osc.core import streamfile from osclib.cache import Cache from osclib.core import devel_project_get +from osclib.core import entity_exists from osclib.core import project_list_prefix from osclib.core import project_pseudometa_file_load from osclib.core import project_pseudometa_file_save @@ -1406,15 +1407,7 @@ class StagingAPI(object): :param project: project name to check :param package: optional package to check """ - if package: - url = self.makeurl(['source', project, package, '_meta']) - else: - url = self.makeurl(['source', project, '_meta']) - try: - http_GET(url) - except HTTPError: - return False - return True + return entity_exists(self.apiurl, project, package) def package_version(self, project, package): """