Implemented create_sr and set_sr_state
authorEd Bartosh <eduard.bartosh@intel.com>
Sat, 13 Sep 2014 11:10:02 +0000 (14:10 +0300)
committerEd Bartosh <eduard.bartosh@intel.com>
Sat, 13 Sep 2014 11:10:02 +0000 (14:10 +0300)
Extended buildservice API to create SR and change SR status. Both
methods will be used in the new job for accepting or rejecting SRs.

Change-Id: Ic38473ab99f2185fe32bda29eaaa18a654cd167c
Signed-off-by: Ed Bartosh <eduard.bartosh@intel.com>
common/buildservice.py

index c2a4e8c..a6525ef 100644 (file)
@@ -25,6 +25,7 @@ import os
 import shutil
 import urllib2
 import json
+import cgi
 import xml.etree.cElementTree as ElementTree
 
 from gitbuildsys.errors import ObsError
@@ -534,3 +535,24 @@ class BuildService(OSC):
             repo_element.attrib.pop('linkedbuild')
 
         self.set_meta(ElementTree.tostring(xml_root), project)
+
+    def create_sr(self, src_project, packages, tgt_project, message=''):
+        """Create submit request for the project."""
+        content = '<request><description>%s</description>' % \
+                  cgi.escape(str(message))
+        for package in packages:
+            content += '<action type="submit">'
+            content += '<source project="%s" package="%s"/>' % \
+                       (str(src_project), str(package))
+            content += '<target project="%s" package="%s" />' % \
+                       (str(tgt_project), str(package))
+            content += '</action>'
+        content += '</request>\n'
+        url = core.makeurl(self.apiurl, ['request'], query='cmd=create')
+        reply = self.core_http(core.http_POST, url, data=content)
+        return ElementTree.parse(reply).getroot().get('id')
+
+    def set_sr_state(self, reqid, state, message='', force=False):
+        """Set SR state."""
+        return core.change_request_state(self.apiurl, reqid, state,
+                   message=str(message), force=force)