GBS - misc_info column for stage 59/170659/1
authorhyokeun <hyokeun.jeon@samsung.com>
Wed, 21 Feb 2018 07:52:46 +0000 (16:52 +0900)
committerhyokeun <hyokeun.jeon@samsung.com>
Wed, 21 Feb 2018 07:52:46 +0000 (16:52 +0900)
Change-Id: I539ed1ca80fc32c055a921a6e367036f2ceca726

common/buildmonitor_extention.py
job_buildmonitor_gbs.py

index 28246ed..9707b46 100644 (file)
@@ -82,10 +82,11 @@ class BuildMonitorExtention(object):
 
         query = "SELECT name, sr_auto_reject FROM main_project WHERE sr_auto_reject <> %s"
         query_data =("0",)
+
         projects = get_multi_values_from_query_data(query, query_data)
         for prj in projects:
             prj_list[prj[0]] = int(prj[1])
-
+    
         return prj_list
 
     def get_build_project_id(self, project):
@@ -514,6 +515,68 @@ class BuildMonitorExtention(object):
         query_data = ( status, error_string, id)
         do_query(query, query_data)
 
+    def get_build_repository_name_id(self, repo_name):
+
+        if not self.is_connect():
+            return
+
+        query = "SELECT id FROM build_repository_name WHERE repository = %s"
+        query_data = (repo_name,)
+
+        return get_value_from_query_data(query, query_data)
+
+    def update_build_repository_name(self, repo_name):
+
+        if not self.is_connect():
+            return
+
+        query = "INSERT INTO build_repository_name (repository) SELECT * FROM (SELECT %s) AS tmp \
+                 WHERE NOT EXISTS (SELECT repository FROM build_repository_name WHERE repository = %s) LIMIT 1"
+        do_query(query, (repo_name, repo_name))
+
+        return self.get_build_repository_name_id(repo_name)
+
+    def get_build_arch_name_id(self, arch_name):
+
+        if not self.is_connect():
+            return
+
+        query = "SELECT id FROM build_arch_name WHERE repository = %s"
+        query_data = (arch_name,)
+
+        return get_value_from_query_data(query, query_data)
+
+    def update_build_arch_name(self, arch_name):
+
+        if not self.is_connect():
+            return
+
+        query = "INSERT INTO build_arch_name (arch) SELECT * FROM (SELECT %s) AS tmp \
+                 WHERE NOT EXISTS (SELECT arch FROM build_arch_name WHERE arch = %s) LIMIT 1"
+        do_query(query, (arch_name, arch_name))
+
+        return self.get_build_arch_name_id(arch_name)
+
+    def get_device_name_id(self, device_name):
+
+        if not self.is_connect():
+            return
+
+        query = "SELECT id FROM device_name WHERE device_name = %s"
+        query_data = (device_name,)
+
+        return get_value_from_query_data(query, query_data)
+
+    def update_device_name(self, device_name):
+
+        if not self.is_connect():
+            return
+
+        query = "INSERT INTO device_name (device_name) SELECT * FROM (SELECT %s) AS tmp \
+                 WHERE NOT EXISTS (SELECT device_name FROM device_name WHERE device_name = %s) LIMIT 1"
+        do_query(query, (device_name, device_name))
+
+        return self.get_device_name_id(device_name)
 
 class GbsDashboard(BuildMonitorExtention):
 
@@ -550,25 +613,22 @@ class GbsDashboard(BuildMonitorExtention):
 
     def set_stage(self, tag, stage, reason=None, timestamp=None):
 
+        assert type(reason) == dict
+
         if reason is None or reason == "":
-            reason = ""
+            reason = {"status": ""}
 
         assert timestamp is not None
 
-        query = "INSERT INTO gbs_stage (gbs_status_id, gbs_stage_id, stage_status, record_date) \
+        query = "INSERT INTO gbs_stage (gbs_status_id, gbs_stage_id, stage_status, record_date, misc_info) \
                  SELECT * FROM ( \
                   (SELECT id FROM gbs_status WHERE tag=%s) AS tmp1, \
                   (SELECT id FROM gbs_stage_lookup WHERE stage=%s) AS tmp2, \
                   (SELECT (%s)) AS tmp3, \
-                  (SELECT (%s)) AS tmp4) \
-                 WHERE NOT EXISTS ( \
-                  SELECT * FROM (SELECT gsl.stage AS stage_name FROM gbs_stage gs, \
-                   gbs_status gst, gbs_stage_lookup gsl \
-                   WHERE gst.tag=%s AND gst.id=gs.gbs_status_id AND gs.gbs_stage_id=gsl.id \
-                   ORDER BY gs.id DESC LIMIT 1) AS tmp \
-                  WHERE stage_name=%s) \
+                  (SELECT (%s)) AS tmp4, \
+                  (SELECT (%s)) AS tmp5) \
                  LIMIT 1"
-        query_data = (tag, stage, reason, timestamp, tag, stage)
+        query_data = (tag, stage, reason.get("status",""), timestamp, "%s" % reason)
         do_query(query, query_data)
 
     def set_packages(self, tag, packages):
@@ -631,7 +691,6 @@ def put_snapshot_manifest(bm_ext, snapshot_name, manifest_items, start_datetime)
     bm_ext.purge_snapshot_manifest_exist(build_project_id)
 
     manifest_data = []
-
     # getid from git_repository
     for git_repo, git_commit, obs_name in manifest_items:
 
index 11a5315..1d0099a 100644 (file)
@@ -49,7 +49,22 @@ class LocalError(Exception):
     """Local error exception."""
     pass
 
+def update_reason_lookup(gbs_inst, data):
+    for k, v in data.iteritems():
+        if k == "repo":
+            data[k] = int(gbs_inst.update_build_repository_name(data[k]))
+        elif k == "arch":
+            data[k] = int(gbs_inst.update_build_arch_name(data[k]))
+        elif k == "ks_name":
+            data[k] = int(gbs_inst.update_device_name(data[k]))
+
 def _set_stage(gbs_inst, stage, content):
+
+    if type(content.get('reason')) == dict:
+        update_reason_lookup(gbs_inst, content.get('reason'))
+    else:
+        content['reason'] = {'status': content.get('reason', '')}
+
     gbs_inst.set_stage(
                        content.get('tag'),
                        stage,