Add jenkins build tag for result api
authorboucherv <valentin.boucher@orange.com>
Wed, 24 Feb 2016 13:33:51 +0000 (14:33 +0100)
committerboucherv <valentin.boucher@orange.com>
Wed, 24 Feb 2016 14:19:34 +0000 (15:19 +0100)
Ex: jenkins-functest-compass-intel-pod8-daily-master-19
this will bring together all  tests passed on the same functest run

JIRA: FUNCTEST-140
Change-Id: I3c1cd8137184509ee5fdeeb2df5399d4c71e3f67
Signed-off-by: boucherv <valentin.boucher@orange.com>
testcases/Controllers/ODL/CI/odlreport2db.py
testcases/Controllers/ONOS/Teston/CI/onosfunctest.py
testcases/VIM/OpenStack/CI/libraries/run_rally.py
testcases/features/doctor.py
testcases/features/promise.py
testcases/functest_utils.py
testcases/vIMS/CI/vIMS.py
testcases/vPing/CI/libraries/vPing_ssh.py
testcases/vPing/CI/libraries/vPing_userdata.py

index 4706796..50731ff 100644 (file)
@@ -122,6 +122,7 @@ def main(argv):
         f.close()
 
     database = functest_yaml.get("results").get("test_db_url")
+    build_tag = functest_utils.get_build_tag()
 
     try:
         # example:
@@ -135,6 +136,7 @@ def main(argv):
                                           None,
                                           data['pod_name'],
                                           scenario,
+                                          build_tag,
                                           data)
     except:
         print("Error pushing results into Database '%s'" % sys.exc_info()[0])
index dc45088..563fa50 100644 (file)
@@ -180,12 +180,13 @@ def main():
         # TODO check path result for the file
         scenario = functest_utils.get_scenario(logger)
         pod_name = functest_utils.get_pod_name(logger)
+        build_tag = functest_utils.get_build_tag(logger)
         result = GetResult()
         functest_utils.push_results_to_db(TEST_DB,
                                           "functest",
                                           "ONOS",
                                           logger, pod_name, scenario,
-                                          payload=result)
+                                          build_tag, payload=result)
     except:
         logger.error("Error pushing results into Database")
 
index 6b1aae2..1ea6ca6 100755 (executable)
@@ -106,10 +106,12 @@ def push_results_to_db(case, payload):
     installer = functest_utils.get_installer_type(logger)
     scenario = functest_utils.get_scenario(logger)
     pod_name = functest_utils.get_pod_name(logger)
+    build_tag = functest_utils.get_build_tag(logger)
     # TODO pod_name hardcoded, info shall come from Jenkins
     params = {"project_name": "functest", "case_name": case,
               "pod_name": pod_name, "installer": installer,
-              "version": scenario, "details": payload}
+              "version": scenario, "build_tag": build_tag,
+              "details": payload}
 
     headers = {'Content-Type': 'application/json'}
     r = requests.post(url, data=json.dumps(params), headers=headers)
index 5669a99..52ffaa9 100644 (file)
@@ -63,17 +63,19 @@ def main():
     }
     pod_name = functest_utils.get_pod_name(logger)
     scenario = functest_utils.get_scenario(logger)
+    build_tag = functest_utils.get_build_tag(logger)
     logger.info("Pushing result: TEST_DB_URL=%(db)s pod_name=%(pod)s "
                 "scenario=%(s)s details=%(d)s" % {
                     'db': TEST_DB_URL,
                     'pod': pod_name,
                     's': scenario,
+                    'b': build_tag,
                     'd': details,
                 })
     functest_utils.push_results_to_db(TEST_DB_URL,
                                       'doctor','doctor-notification',
                                       logger, pod_name, scenario,
-                                      details)
+                                      build_tag, details)
 
 
 if __name__ == '__main__':
index 16b2618..ec38ec2 100644 (file)
@@ -252,6 +252,7 @@ def main():
         pod_name = functest_utils.get_pod_name(logger)
         installer = functest_utils.get_installer_type(logger)
         scenario = functest_utils.get_scenario(logger)
+        build_tag = functest_utils.get_build_tag(logger)
         git_version = functest_utils.get_git_branch(PROMISE_REPO)
         url = TEST_DB + "/results"
 
@@ -261,7 +262,7 @@ def main():
 
         params = {"project_name": "promise", "case_name": "promise",
                   "pod_name": str(pod_name), 'installer': installer,
-                  "version": scenario, 'details': json_results}
+                  "version": scenario, "build_tag": build_tag, 'details': json_results}
         headers = {'Content-Type': 'application/json'}
 
         logger.info("Pushing results to DB...")
index f119c27..7849782 100644 (file)
@@ -87,7 +87,7 @@ def get_instance_status(nova_client, instance):
         instance = nova_client.servers.get(instance.id)
         return instance.status
     except Exception, e:
-        #print "Error [get_instance_status(nova_client, '%s')]:" % \
+        # print "Error [get_instance_status(nova_client, '%s')]:" % \
         #    str(instance), e
         return None
 
@@ -440,6 +440,7 @@ def get_security_groups(neutron_client):
         print "Error [get_security_groups(neutron_client)]:", e
         return None
 
+
 def get_security_group_id(neutron_client, sg_name):
     security_groups = get_security_groups(neutron_client)
     id = ''
@@ -476,7 +477,7 @@ def create_secgroup_rule(neutron_client, sg_id, direction, protocol,
                                              'protocol': protocol}}
     else:
         print "Error [create_secgroup_rule(neutron_client, '%s', '%s', "\
-              "'%s', '%s', '%s', '%s')]:" % (neutron_client, sg_id, direction, \
+              "'%s', '%s', '%s', '%s')]:" % (neutron_client, sg_id, direction,
                                              port_range_min, port_range_max, protocol),\
               " Invalid values for port_range_min, port_range_max"
         return False
@@ -621,7 +622,8 @@ def update_cinder_quota(cinder_client, tenant_id, vols_quota,
         return True
     except Exception, e:
         print "Error [update_cinder_quota(cinder_client, '%s', '%s', '%s'" \
-            "'%s')]:" % (tenant_id, vols_quota, snapshots_quota, gigabytes_quota), e
+            "'%s')]:" % (tenant_id, vols_quota,
+                         snapshots_quota, gigabytes_quota), e
         return False
 
 
@@ -755,11 +757,6 @@ def delete_user(keystone_client, user_id):
         return False
 
 
-
-
-
-
-
 # ----------------------------------------------------------
 #
 #               INTERNET UTILS
@@ -792,8 +789,6 @@ def download_url(url, dest_path):
     return True
 
 
-
-
 # ----------------------------------------------------------
 #
 #               CI UTILS
@@ -849,8 +844,22 @@ def get_pod_name(logger=None):
         return "unknown-pod"
 
 
+def get_build_tag(logger=None):
+    """
+    Get build tag of jenkins jobs
+    """
+    try:
+        build_tag = os.environ['BUILD_TAG']
+    except KeyError:
+        if logger:
+            logger.error("Impossible to retrieve the build tag")
+        build_tag = "unknown_build_tag"
+
+    return build_tag
+
+
 def push_results_to_db(db_url, project, case_name, logger, pod_name,
-                       version, payload):
+                       version, build_tag="unknown_build_tag", payload):
     """
     POST results to the Result target DB
     """
@@ -858,7 +867,7 @@ def push_results_to_db(db_url, project, case_name, logger, pod_name,
     installer = get_installer_type(logger)
     params = {"project_name": project, "case_name": case_name,
               "pod_name": pod_name, "installer": installer,
-              "version": version, "details": payload}
+              "version": version, "build_tag": build_tag, "details": payload}
 
     headers = {'Content-Type': 'application/json'}
     try:
@@ -867,8 +876,8 @@ def push_results_to_db(db_url, project, case_name, logger, pod_name,
             logger.debug(r)
         return True
     except Exception, e:
-        print "Error [push_results_to_db('%s', '%s', '%s', '%s', '%s', '%s')]:" \
-            % (db_url, project, case_name, pod_name, version, payload), e
+        print "Error [push_results_to_db('%s', '%s', '%s', '%s', '%s', '%s', '%s')]:" \
+            % (db_url, project, case_name, pod_name, version, build_tag, payload), e
         return False
 
 
index 1746d38..256a0a0 100644 (file)
@@ -136,12 +136,14 @@ def push_results():
 
         scenario = functest_utils.get_scenario(logger)
         pod_name = functest_utils.get_pod_name(logger)
+        build_tag = functest_utils.get_build_tag(logger)
 
-        functest_utils.push_results_to_db(db_url=DB_URL, 
+        functest_utils.push_results_to_db(db_url=DB_URL,
                                           project="functest",
                                           case_name="vIMS",
                                           logger=logger, pod_name=pod_name,
                                           version=scenario,
+                                          build_tag=build_tag,
                                           payload=RESULTS)
 
 
index e3b2ec5..508ac0f 100644 (file)
@@ -334,10 +334,11 @@ def push_results(start_time_ts, duration, test_status):
         logger.debug("Pushing result into DB...")
         scenario = functest_utils.get_scenario(logger)
         pod_name = functest_utils.get_pod_name(logger)
+        build_tag = functest_utils.get_build_tag(logger)
         functest_utils.push_results_to_db(TEST_DB,
                                           "functest",
                                           "vPing",
-                                          logger, pod_name, scenario,
+                                          logger, pod_name, scenario, build_tag,
                                           payload={'timestart': start_time_ts,
                                                    'duration': duration,
                                                    'status': test_status})
index eac2df5..8f21420 100644 (file)
@@ -316,10 +316,11 @@ def push_results(start_time_ts, duration, test_status):
         logger.debug("Pushing result into DB...")
         scenario = functest_utils.get_scenario(logger)
         pod_name = functest_utils.get_pod_name(logger)
+        build_tag = functest_utils.get_build_tag(logger)
         functest_utils.push_results_to_db(TEST_DB,
                                           "functest",
                                           "vPing_userdata",
-                                          logger, pod_name, scenario,
+                                          logger, pod_name, scenario, build_tag,
                                           payload={'timestart': start_time_ts,
                                                    'duration': duration,
                                                    'status': test_status})