diff options
Diffstat (limited to 'obsapi/core.py')
| -rw-r--r-- | obsapi/core.py | 44 |
1 files changed, 26 insertions, 18 deletions
diff --git a/obsapi/core.py b/obsapi/core.py index 77b6517..5200efe 100644 --- a/obsapi/core.py +++ b/obsapi/core.py @@ -144,10 +144,10 @@ class ObsApi(object): return etree.parse(BytesIO(xml), parser).xpath('.')[0] def get_meta(self, prj, pkg=None): - return self.source.get_meta(prj, pkg) + return self.source.get_meta(prj, pkg=pkg) def put_meta(self, prj, pkg=None, xml=None): - return self.source.put_meta(prj, pkg, data=xml) + return self.source.put_meta(prj, pkg=pkg, xml=xml) def ls(self, prj=None, pkg=None, repo=None, arch=None): if repo and arch: @@ -167,7 +167,7 @@ class ObsApi(object): return lsitems def package_ls(self, prj, pkg): - xml = self.source.get(prj, pkg) + xml = self.source.get(prj, pkg=pkg) d = etree.fromstring(xml) directory = Directory(d.get('name'), d.get('rev'), @@ -184,8 +184,11 @@ class ObsApi(object): ) return (directory, lsitems) - def get_source_info(self, prj, pkg): - xml = self.source.get(prj, pkg, view='info') + def get_source_info(self, prj, pkg, rev=None): + if rev is None: + xml = self.source.get(prj, pkg=pkg, view='info') + else: + xml = self.source.get(prj, pkg=pkg, view='info', rev=rev) tree = etree.fromstring(xml) sinfo = SourceInfo(tree.get('package'), tree.get('rev'), @@ -287,14 +290,15 @@ class ObsApi(object): return vendor + def locked(self, prj, pkg=None): + meta = self.__xml2etree(self.get_meta(prj, pkg)) + if meta.find('lock') is not None: + return True + return False + def lock(self, prj, pkg=None): - if pkg is None: - xml = self.get_project_meta(prj) - put = self.put_project_meta - else: - xml = self.get_package_meta(prj, pkg) - put = self.put_package_meta + xml = self.get_meta(prj, pkg) meta = self.__xml2etree(xml) if meta.tag not in ['project', 'package']: if pkg: @@ -302,14 +306,18 @@ class ObsApi(object): else: raise Exception('Failed to lock project. %s' % prj) - if meta.find('lock') is not None: + if self.locked(prj, pkg): return 'Already Locked' - lock = self.__xml2etree('<lock><enable/></lock>') - meta.append(lock) - if pkg: - r = put(prj, pkg, etree.tostring(meta)) - else: - r = put(prj, etree.tostring(meta)) + lock = etree.SubElement(meta, 'lock') + etree.SubElement(lock, 'enable') + r = self.put_meta(prj, pkg, etree.tostring(meta)) return r + + def unlock(self, prj, pkg=None, comment=None): + if not self.locked(prj, pkg): + return + + comment = comment or "Unlock" + self.source.post(prj, pkg, cmd="unlock", comment="Unlock") |
