diff options
Diffstat (limited to 'obsapi/core.py')
| -rw-r--r-- | obsapi/core.py | 24 |
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) |
