diff options
| author | Scott Bahling <sbahling@suse.de> | 2016-09-14 12:11:47 +0200 |
|---|---|---|
| committer | Scott Bahling <sbahling@suse.de> | 2016-09-14 12:11:47 +0200 |
| commit | 2f71f136702ba9fdf740ce9f2598cd804370516b (patch) | |
| tree | 62718a8ee094e052229f93dac3bb32e7e9078d2b /obsapi/core.py | |
| parent | 525ac83bf2bb2c0a23ba78045cbfa6393a4cb2d8 (diff) | |
| download | obsapi-2f71f136702ba9fdf740ce9f2598cd804370516b.tar.gz obsapi-2f71f136702ba9fdf740ce9f2598cd804370516b.tar.xz obsapi-2f71f136702ba9fdf740ce9f2598cd804370516b.zip | |
Implement locking api; refactor ObsSourceApi get/put/post callsobsapi-0.0.6
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") |
