osclib/core: provide entity_exists() and use in StagingAPI.item_exists().

This commit is contained in:
Jimmy Berry 2019-02-15 10:55:39 -06:00
parent 53bbe0341b
commit 249491d6f6
2 changed files with 13 additions and 9 deletions

View File

@ -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

View File

@ -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):
"""