summaryrefslogtreecommitdiff
path: root/obsapi/core.py
diff options
context:
space:
mode:
Diffstat (limited to 'obsapi/core.py')
-rw-r--r--obsapi/core.py44
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")