summaryrefslogtreecommitdiff
path: root/obsapi
diff options
context:
space:
mode:
Diffstat (limited to 'obsapi')
-rw-r--r--obsapi/core.py24
1 files changed, 24 insertions, 0 deletions
diff --git a/obsapi/core.py b/obsapi/core.py
index 45d19c6..748044c 100644
--- a/obsapi/core.py
+++ b/obsapi/core.py
@@ -393,3 +393,27 @@ class ObsApi(object):
for srcfile in flist:
if srcfile.name.endswith('.spec'):
yield self.source.get(prj, pkg, srcfile.name)
+
+ def set_flag(self, prj, pkg=None, flag=None):
+ if flag is None:
+ return None
+
+ try:
+ flag_type = getattr(flag, 'flag', flag.get('flag', None))
+ if flag_type is None:
+ raise Exception('Invalid flag type: None')
+ except AttributeError:
+ raise Exception('flag type %s missing get function' % type(flag))
+
+ status = getattr(flag, 'status', flag.get('status', 'enable'))
+ if status not in ['enable', 'disable']:
+ raise ValueError('flag status expected "enable" or "disable" got %s' % status)
+
+ params = dict(cmd='set_flag',
+ flag=flag_type,
+ status=status,
+ repository=getattr(flag, 'repository', flag.get('repository', None)),
+ arch=getattr(flag, 'arch', flag.get('arch', None)),
+ )
+
+ return self.source.post(prj, pkg, **params)