Updating results in the google spreadsheet for single jobs

Change-Id: Idda0fa163217950248ed98ef71e8045bfcfbe2cf
Related-prod: PROD-30971
diff --git a/daily_jenkins_job_report/daily_report/config.py b/daily_jenkins_job_report/daily_report/config.py
index 4ea0949..6928bb2 100755
--- a/daily_jenkins_job_report/daily_report/config.py
+++ b/daily_jenkins_job_report/daily_report/config.py
@@ -6,7 +6,6 @@
 # For updating Google sheets
 GOOGLE_AUTH = '/home/ubuntu/osccore-qa-testing-tools/daily_jenkins_job_report/daily_report/oscore-e717344565a0.json'
 GOOGLE_SHEET_NAME = 'June 2019'
-ALL_GS_JOBS =  [{'gs_job_name': 'oscore-promote-openstack-pike-xenial_virtual-mcp11-aio-barbican-pike', 'row_number': 4, 'column_number': 'A'}, {'gs_job_name': 'oscore-promote-openstack-pike-xenial_virtual-mcp11-aio-ssl-pike', 'row_number': 5, 'column_number': 'A'}, {'gs_job_name': 'oscore-promote-openstack-pike-xenial_virtual-mcp11-aio-octavia-pike', 'row_number': 6, 'column_number': 'A'}, {'gs_job_name': 'oscore-promote-openstack-pike-xenial_virtual-mcp11-aio-manila-pike', 'row_number': 7, 'column_number': 'A'}, {'gs_job_name': 'oscore-promote-openstack-pike-xenial_virtual-mcp11-aio-telemetry-pike', 'row_number': 8, 'column_number': 'A'}, {'gs_job_name': 'oscore-promote-openstack-queens-xenial_virtual-mcp11-aio-barbican-queens', 'row_number': 9, 'column_number': 'A'}, {'gs_job_name': 'oscore-promote-openstack-queens-xenial_virtual-mcp11-aio-telemetry-queens', 'row_number': 10, 'column_number': 'A'}, {'gs_job_name': 'oscore-promote-openstack-queens-xenial_virtual-mcp11-aio-manila-queens', 'row_number': 11, 'column_number': 'A'}, {'gs_job_name': 'oscore-promote-openstack-queens-xenial_virtual-mcp11-aio-ssl-queens', 'row_number': 12, 'column_number': 'A'}, {'gs_job_name': 'oscore-promote-openstack-queens-xenial_virtual-mcp11-aio-octavia-queens', 'row_number': 13, 'column_number': 'A'}, {'gs_job_name': 'oscore-promote-openstack-ocata-xenial_virtual-mcp11-aio-stable/ocata', 'row_number': 14, 'column_number': 'A'}, {'gs_job_name': 'oscore-promote-openstack-ocata-xenial_openstack-ovs-core-designate-ocata', 'row_number': 15, 'column_number': 'A'}, {'gs_job_name': 'oscore-oscc-ci_virtual-mcp11-aio-newton', 'row_number': 16, 'column_number': 'A'}, {'gs_job_name': 'oscore-oscc-ci_virtual-mcp11-aio-mitaka', 'row_number': 17, 'column_number': 'A'}, {'gs_job_name': 'oscore-oscc-ci_virtual-mcp11-aio-ocata', 'row_number': 18, 'column_number': 'A'}, {'gs_job_name': 'oscore-oscc-ci_virtual-mcp11-aio-pike', 'row_number': 19, 'column_number': 'A'}, {'gs_job_name': 'oscore-oscc-ci_virtual-mcp11-aio-advanced-keystone-queens', 'row_number': 20, 'column_number': 'A'}, {'gs_job_name': 'oscore-oscc-ci_openstack-ovs-core-extra-ssl-pike', 'row_number': 21, 'column_number': 'A'}, {'gs_job_name': 'oscore-oscc-ci_openstack-ovs-core-telemetry-ceph-queens', 'row_number': 22, 'column_number': 'A'}, {'gs_job_name': 'oscore-oscc-ci_openstack-ovs-core-octavia-pike', 'row_number': 23, 'column_number': 'A'}, {'gs_job_name': 'oscore-oscc-ci_openstack-ovs-core-extra-ssl-queens', 'row_number': 24, 'column_number': 'A'}, {'gs_job_name': 'oscore-oscc-ci_openstack-ovs-core-octavia-queens', 'row_number': 25, 'column_number': 'A'}, {'gs_job_name': 'oscore-oscc-ci_virtual-mcp11-aio-barbican-pike', 'row_number': 26, 'column_number': 'A'}, {'gs_job_name': 'oscore-oscc-ci_openstack-ovs-core-barbican-ssl-queens', 'row_number': 27, 'column_number': 'A'}, {'gs_job_name': 'oscore-oscc-ci_virtual-mcp11-aio-ironic-pike', 'row_number': 28, 'column_number': 'A'}, {'gs_job_name': 'oscore-oscc-ci_openstack-ovs-core-ironic-queens', 'row_number': 29, 'column_number': 'A'}, {'gs_job_name': 'oscore-oscc-ci_virtual-mcp11-aio (stepler AIO)', 'row_number': 30, 'column_number': 'A'}, {'gs_job_name': 'oscore-oscc-ci_openstack-ovs-core-ceph-queens (stepler CC)', 'row_number': 31, 'column_number': 'A'}, {'gs_job_name': 'oscore-oscc-ci_openstack-ovs-core-ironic-ceph-queens', 'row_number': 32, 'column_number': 'A'}, {'gs_job_name': 'oscore-test-release-2019.2.0_openstack-ovs-core-extra-ssl-queens', 'row_number': 33, 'column_number': 'A'}, {'gs_job_name': 'oscore-test-release-2019.2.0_openstack-ovs-core-barbican-ssl-queens', 'row_number': 34, 'column_number': 'A'}, {'gs_job_name': 'oscore-test-release-2019.2.0_openstack-ovs-core-telemetry-ceph-queens', 'row_number': 35, 'column_number': 'A'}, {'gs_job_name': 'oscore-test-release-2019.2.0_openstack-ovs-core-extra-ssl-pike', 'row_number': 36, 'column_number': 'A'}, {'gs_job_name': 'oscore-test-release-2018.4.0_openstack-ovs-core-mitaka', 'row_number': 37, 'column_number': 'A'}, {'gs_job_name': 'oscore-test-release-2018.4.0_openstack-ovs-core-extra-ssl-pike', 'row_number': 38, 'column_number': 'A'}, {'gs_job_name': 'oscore-test-release-2018.4.0_openstack-ovs-core-designate-ocata', 'row_number': 39, 'column_number': 'A'}, {'gs_job_name': 'oscore-test-release-2018.8.0_openstack-ovs-core-pike', 'row_number': 40, 'column_number': 'A'}, {'gs_job_name': 'oscore-test-release-2018.8.0_openstack-ovs-core-queens', 'row_number': 41, 'column_number': 'A'}, {'gs_job_name': 'oscore-test-release-2018.11.0_openstack-ovs-core-ssl-queens', 'row_number': 42, 'column_number': 'A'}, {'gs_job_name': 'oscore-test-release-2018.11.0_openstack-ovs-core-mitaka', 'row_number': 43, 'column_number': 'A'}, {'gs_job_name': 'oscore-test-release-2018.11.0_openstack-ovs-core-ocata', 'row_number': 44, 'column_number': 'A'}, {'gs_job_name': 'oscore-test-release-2018.11.0_openstack-ovs-core-ssl-pike', 'row_number': 45, 'column_number': 'A'}, {'gs_job_name': 'oscore-test-openstack-upgrade-pike-queens-core-barbican', 'row_number': 46, 'column_number': 'A'}, {'gs_job_name': 'oscore-test-openstack-upgrade-pike-queens-core-ssl', 'row_number': 47, 'column_number': 'A'}]
 
 # For get_jobs_results.py save_results_to_html method
 GENERATED_REPORT = '/var/www/oscore_jobs.com/html/reports/'
@@ -15,7 +14,7 @@
 LIST_OF_COLUMNS = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L',
                    'M', 'N',
                    'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
-                   'AB', 'AC',
+                   'AA', 'AB', 'AC',
                    'AD', 'AE', 'AF', 'AG', 'AH', 'AI', 'AJ', 'AK', 'AL', 'AM',
                    'AN', 'AO',
                    'AP', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AV', 'AW', 'AX', 'AY',
@@ -31,10 +30,9 @@
              'oscore-test-release-2018.11.0',
              ]
 
-SINGLEJOBS = ['oscore-test-openstack-upgrade-pike-queens-core-ssl',
+SINGLEJOBS = ['oscore-test-openstack-upgrade-pike-queens-core-barbican',
+              'oscore-test-openstack-upgrade-pike-queens-core-ssl',
               'oscore-test-openstack-upgrade-pike-queens-core-extra-ssl',
-              'oscore-stepler-virtual_mcp11_aio-pike-nightly',
-              'oscore-stepler-virtual_mcp11_aio-queens-nightly',
               'oscore-test-openstack-upgrade-pike-queens-core-ironic',
               'oscore-test-mcp-update-core-barbican-queens-2019.2.0-TO-testing',
               ]
diff --git a/daily_jenkins_job_report/daily_report/generate_report.py b/daily_jenkins_job_report/daily_report/generate_report.py
index c12c577..aa6a8ff 100755
--- a/daily_jenkins_job_report/daily_report/generate_report.py
+++ b/daily_jenkins_job_report/daily_report/generate_report.py
@@ -204,8 +204,7 @@
 
 if __name__ == '__main__':
     all_jobs_results = get_all_jobs_results()
-
-    print('all_jobs_results', all_jobs_results)
+    logger.info(f'all_jobs_results: {all_jobs_results}')
 
     save_results_to_html(all_jobs_results)
     update_google_sheets.update_google_sheet(all_jobs_results)
diff --git a/daily_jenkins_job_report/daily_report/update_google_sheets.py b/daily_jenkins_job_report/daily_report/update_google_sheets.py
index a19a347..86b74b7 100755
--- a/daily_jenkins_job_report/daily_report/update_google_sheets.py
+++ b/daily_jenkins_job_report/daily_report/update_google_sheets.py
@@ -75,16 +75,29 @@
                                 network_team_cell = get_network_team_cell(column_to_update, gs['row_number'])
                                 self.wks.update_acell(network_team_cell, 'Area of networking team')
 
+        for gs in gs_jobs:
+            for single_job in jobs_for_update['single_results']:
+                if jobs_for_update['single_results'][single_job]['job_name'] == gs['gs_job_name'] and jobs_for_update['single_results'][single_job]['build_status'] != 'No Results' and jobs_for_update['single_results'][single_job]['build_status'] != 'None':
+                    logger.info(f'Single jobs, column to update {column_to_update}')
+
+                    cell = f"{column_to_update}{gs['row_number']}"
+                    if jobs_for_update['single_results'][single_job]['build_status'] == 'FAILURE':
+                        jobs_for_update['single_results'][single_job]['build_status'] = 'FAILED'
+
+                    if not self.wks.acell(cell).value:
+                        self.wks.update_acell(cell, jobs_for_update['single_results'][single_job]['build_status'])
+
     def get_all_gs_jobs(self, column_number='A'):
         """
         Gets all the google sheet jobs for updating from the first column
         """
         logger.info('Getting all the google sheet jobs for updating from the first column')
         all_jobs = []
-        for i in range(4, 48):
+        for i in range(3, 41):
             all_jobs.append({'gs_job_name': self.wks.acell(column_number + str(i)).value,
                              'row_number': i,
                              'column_number': column_number})
+        logger.info(f'All google jobs: {all_jobs}')
         return all_jobs
 
     def get_today_date_column(self):
@@ -150,10 +163,10 @@
     The main function for updating google sheets.
     All the functions for updating are here
     """
-
-    all_gs_jobs = config.ALL_GS_JOBS
     all_jobs = update_multy_job_names(all_jobs_results)
 
     gs = UpdateGoogleSheets()
     column = gs.get_today_date_column()
+
+    all_gs_jobs = gs.get_all_gs_jobs()
     gs.update_gs_jobs(all_gs_jobs, all_jobs, column)