--- /dev/null
+#!/usr/bin/env python
+#
+# Copyright (c) 2016 Samsung Electronics.Co.Ltd.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the Free
+# Software Foundation; version 2 of the License
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# for more details.
+#
+"""
+BuildMonitor APIs
+
+1. Actions & Related files
+ (1) gbs submit --------------- [job_submit.py]
+ (2) [pre] packae build ------- [on OBS]
+ (3) [pre] snapshot create ---- [job_pre_release_obs.py]
+ (4) [pre] image creation ---- [job_imager.py][job_post_imager.py]
+ (5) SR accept or reject ------ [job_request.py]
+ (6) [post] package build ----- [on OBS]
+ (7) [post] snapshot creation - [job_create_snapshot.py]
+ (8) [post] image creation ---- [job_imager.py]
+ (9) Completed
+ * pre : pre build / post : post build
+
+2. function naming rules
+
+[ACTION]_for_[TABLE]
+
+ex) sr_submit_for_sr_status
+ACTION : gbs submit
+TABLE : sr_status
+
+3. db table list
+
+[SR parts] sr_stage | sr_status | sr_commit | sr_status_details
+[BUILD parts] build_snapshot | build_snapshot_package | build_image
+"""
+
+
+import os
+import sys
+import datetime
+import buildmonitor_db
+
+#===============================================================================
+# connect & disconnect db
+
+def bm_connect_db():
+ buildmonitor_db.connect_db()
+
+def bm_disconnect_db():
+ buildmonitor_db.disconnect_db()
+
+#===============================================================================
+# [job_submit.py]
+
+def sr_submit_for_sr_status(ter_git_tag):
+ print '[%s] enter sr_submit_for_sr_status\n' % (__file__)
+
+ # get curr_sr_status_id
+ query = "SELECT id FROM sr_status WHERE sr = %s"
+ query_data = (ter_git_tag)
+ curr_sr_status_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+ #print '[%s] curr_sr_status_id(%s)\n' % (__file__, curr_sr_status_id)
+
+ if curr_sr_status_id == 9876 or curr_sr_status_id == 0:
+ query = "INSERT INTO sr_status (sr, status) VALUES(%s, %s)"
+ query_data = (ter_git_tag, 'C')
+ buildmonitor_db.do_query(query, query_data)
+ else:
+ print '[%s] Already existing sr_status_id(%s) skip INSERT sr_stage\n' \
+ % (__file__, curr_sr_status_id)
+
+def sr_submit_for_sr_commit(mygit, git_tag, gerrit_project,
+ gerrit_newrev, gerrit_account_name):
+ print '[%s] enter sr_submit_for_sr_commit\n' % (__file__)
+
+ commit_date, cd_err, cd_ret = mygit._git_inout('show', ['-s', '--format=%ci'])
+ commit_msg, cm_err, cm_ret = mygit._git_inout('show', ['-s', '--format=%s'])
+ submit_date, sd_err, sd_ret = mygit._git_inout('for-each-ref', \
+ ['--count=1', '--sort=-taggerdate', '--format=%(taggerdate:iso)'])
+ submit_msg, sm_err, sm_ret = mygit._git_inout('for-each-ref', \
+ ['--count=1', '--sort=-taggerdate', '--format=%(subject)'])
+ submitter, st_err, st_ret = mygit._git_inout('for-each-ref',\
+ ['--count=1', '--sort=-taggerdate', '--format=%(taggeremail)'])
+ #print '[%s] %s%s' % (__file__, commit_date, commit_msg)
+ #print '[%s] %s%s%s' % (__file__, submit_date, submit_msg, submitter)
+
+ # get current_sr_status_id (should be here, after sr_submit_for_sr_status)
+ query = "SELECT id FROM sr_status WHERE sr = %s"
+ query_data = (git_tag)
+ curr_sr_status_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+ #print '[%s] curr_sr_status_id(%s)\n' % (__file__, curr_sr_status_id)
+
+ obs_pkg_name = os.path.basename(gerrit_project)
+ ter_submitter = submitter.split('@')[0].strip('<')
+ #print '[%s] ter_submitter(%s)' % (__file__, ter_submitter)
+
+ query = "INSERT INTO sr_commit (sr_status_id, git_repository," \
+ "obs_package_name, git_commit_id, git_commit_date, " \
+ "git_commit_message, git_committer, sr_submit_date, " \
+ "sr_submit_message, sr_submitter) " \
+ "VALUES(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"
+ query_data = (curr_sr_status_id, gerrit_project, obs_pkg_name,
+ gerrit_newrev, commit_date, commit_msg,
+ gerrit_account_name, submit_date, submit_msg,
+ ter_submitter)
+ buildmonitor_db.do_query(query, query_data)
+
+def start_pre_build_for_sr_stage(git_tag, ter_start_datetime,
+ ter_end_datetime, pre_build_project_id):
+ print '[%s] enter start_pre_build_for_sr_stage\n' % (__file__)
+
+ # get current_sr_status_id (should be here after sr_submit_for_sr_status)
+ query = "SELECT id FROM sr_status WHERE sr = %s"
+ query_data = (git_tag)
+ curr_sr_status_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+ #print '[%s] curr_sr_status_id(%s)\n' % (__file__, curr_sr_status_id)
+
+ ### [1] end stage : SR submit
+ info_stage_id = 1
+ query = "UPDATE sr_stage SET stage_end_time = %s, stage_status = %s " \
+ "WHERE sr_status_id = %s AND info_stage_id = %s AND build_project_id = %s"
+ query_data = (ter_end_datetime, 'S', curr_sr_status_id, info_stage_id, pre_build_project_id)
+ buildmonitor_db.do_query(query, query_data)
+
+ ### [2] start stage : [pre] package build
+ ter_start_datetime = ter_end_datetime
+ info_stage_id = 2
+ query = "INSERT INTO sr_stage (sr_status_id, info_stage_id, stage_start_time, " \
+ "stage_status, build_project_id) VALUES(%s, %s, %s, %s, %s)"
+ query_data = (curr_sr_status_id, info_stage_id, ter_start_datetime, 'R', pre_build_project_id)
+ buildmonitor_db.do_query(query, query_data)
+
+def sr_submit_for_sr_stage(curr_sr_status_id, ter_start_datetime,
+ ter_end_datetime, pre_build_project_id):
+ print '[%s] enter sr_submit_for_sr_stage\n' % (__file__)
+
+ ### [1] SR submit
+ info_stage_id = 1
+ query = "INSERT INTO sr_stage (sr_status_id, info_stage_id, stage_start_time, " \
+ "stage_end_time, stage_status, build_project_id) VALUES(%s, %s, %s, %s, %s, %s)"
+ query_data = (curr_sr_status_id, info_stage_id, ter_start_datetime,
+ ter_end_datetime, 'S', pre_build_project_id)
+ buildmonitor_db.do_query(query, query_data)
+
+def package_build_for_sr_detail_sr_stage(git_tag, ter_start_datetime,
+ ter_end_datetime, ter_src_project_lst):
+ print '[%s] enter package_build_for_sr_detail_sr_stage\n' % (__file__)
+
+ # get current_sr_status_id (should be here after sr_submit_for_sr_status)
+ query = "SELECT id FROM sr_status WHERE sr = %s"
+ query_data = (git_tag)
+ curr_sr_status_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+ #print '[%s] curr_sr_status_id(%s)\n' % (__file__, curr_sr_status_id)
+
+ ### for sr_status_detail & sr_stage
+ # ter_src_project_lst is needed for multi profile
+ print '[%s] ter_src_project_lst(%s)\n' % (__file__, ter_src_project_lst)
+ for ter_src_project in ter_src_project_lst:
+ #print '[%s] ter_src_project(%s)\n' % (__file__, ter_src_project)
+
+ # get info_project_id -> get pre_build_project_id
+ query = "SELECT id FROM info_project WHERE project_name = %s"
+ query_data = (ter_src_project)
+ info_project_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+ query = "SELECT id FROM build_project WHERE info_project_id = %s"
+ query_data = (info_project_id)
+ pre_build_project_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+ print '[%s] info_project_id(%s), pre_build_project_id(%s)\n' \
+ % (__file__, info_project_id, pre_build_project_id)
+
+ # get sr_status_detail_id for checking group submit
+ query = "SELECT id FROM sr_status_detail WHERE sr_status_id = %s " \
+ "AND pre_build_project_id = %s"
+ query_data = (curr_sr_status_id, pre_build_project_id)
+ sr_status_detail_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+ #print '[%s] sr_status_detail_id(%s)\n' % (__file__, sr_status_detail_id)
+
+ if sr_status_detail_id == 9876 or sr_status_detail_id == 0:
+ # get pre_build_project_id
+ query = "SELECT id FROM build_project WHERE info_project_id = %s"
+ query_data = (info_project_id)
+ pre_build_project_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+
+ ### for sr_status_detail
+ query = "INSERT INTO sr_status_detail (sr_status_id, pre_build_project_id) " \
+ "VALUES(%s, %s)"
+ query_data = (curr_sr_status_id, pre_build_project_id)
+ buildmonitor_db.do_query(query, query_data)
+
+ ### for sr_stage for multi profile
+ # [1] start stage
+ sr_submit_for_sr_stage(curr_sr_status_id, ter_start_datetime,
+ ter_end_datetime, pre_build_project_id)
+ # [1] end stage / [2] start stage
+ start_pre_build_for_sr_stage(git_tag, ter_start_datetime,
+ ter_end_datetime, pre_build_project_id)
+ else:
+ # clear the existing tables (sr_stage & build_snapshot)
+ print '[%s] Already existing sr_status_id(%s)!! clear the related tables\n' \
+ % (__file__, sr_status_detail_id)
+ query = "DELETE FROM sr_stage WHERE sr_status_id = %s AND build_project_id = %s"
+ query_data = (curr_sr_status_id, pre_build_project_id)
+ buildmonitor_db.do_query(query, query_data)
+
+ # get build_snapshot_id for deleting build_snapshot_package & build_image
+ query = "SELECT id FROM build_snapshot WHERE build_project_id = %s"
+ query_data = (pre_build_project_id)
+ build_snapshot_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+
+ # delete build_snapshot & build_snapshot_package & build_image
+ query = "DELETE FROM build_snapshot WHERE build_project_id = %s"
+ query_data = (pre_build_project_id)
+ buildmonitor_db.do_query(query, query_data)
+ query = "DELETE FROM build_snapshot_package WHERE build_snapshot_id = %s"
+ query_data = (build_snapshot_id)
+ buildmonitor_db.do_query(query, query_data)
+ query = "DELETE FROM build_image WHERE build_snapshot_id = %s"
+ query_data = (build_snapshot_id)
+ buildmonitor_db.do_query(query, query_data)
+
+ ### for sr_stage for multi profile
+ # [1] start stage
+ sr_submit_for_sr_stage(curr_sr_status_id, ter_start_datetime,
+ ter_end_datetime, pre_build_project_id)
+ # [1] end stage / [2] start stage
+ start_pre_build_for_sr_stage(git_tag, ter_start_datetime,
+ ter_end_datetime, pre_build_project_id)
+
+#===============================================================================
+# [job_pre_release_obs.py]
+
+def update_fail_status_for_sr_stage(project, ter_git_tag):
+ print '[%s] enter update_fail_status_for_sr_stage\n' % (__file__)
+
+ # get curr_sr_status_id
+ query = "SELECT id FROM sr_status WHERE sr = %s"
+ query_data = (ter_git_tag)
+ curr_sr_status_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+ #print '[%s] curr_sr_status_id (%s)\n' % (__file__, curr_sr_status_id)
+
+ # get curr_info_project_id -> get curr_build_project_id for multi profile
+ query = "SELECT id FROM info_project WHERE project_name = %s"
+ query_data = (project)
+ curr_info_project_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+ query = "SELECT id FROM build_project WHERE info_project_id = %s"
+ query_data = (curr_info_project_id)
+ curr_build_project_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+
+ ### [3] stage end : update fail status [pre] snapshot creation
+ info_stage_id = 3
+ query = "UPDATE sr_stage SET stage_status = %s WHERE sr_status_id = %s " \
+ "AND info_stage_id = %s AND build_project_id = %s"
+ query_data = ('F', curr_sr_status_id, info_stage_id, curr_build_project_id)
+ buildmonitor_db.do_query(query, query_data)
+
+def start_pre_create_snapshot_for_sr_stage(project, ter_git_tag, ter_start_datetime):
+ print '[%s] enter start_pre_create_snapshot_for_sr_stage\n' % (__file__)
+
+ # get curr_sr_status_id
+ query = "SELECT id FROM sr_status WHERE sr = %s"
+ query_data = (ter_git_tag)
+ curr_sr_status_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+
+ # get curr_info_project_id -> get curr_build_project_id for multi profile
+ query = "SELECT id FROM info_project WHERE project_name = %s"
+ query_data = (project)
+ curr_info_project_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+ query = "SELECT id FROM build_project WHERE info_project_id = %s"
+ query_data = (curr_info_project_id)
+ curr_build_project_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+
+ # get multi_build_status from build_target
+ query = "SELECT status FROM build_target WHERE build_project_id = %s " \
+ "AND last_flag = %s"
+ query_data = (curr_build_project_id, 'Y')
+ multi_build_status = buildmonitor_db.get_multi_values_from_query_data(query, query_data)
+ print '[%s] multi_build_status(%s)\n' % (__file__, multi_build_status)
+
+ # default 'S'
+ info_stage_status = 'S'
+ for each_build_status in multi_build_status:
+ #print '[%s] each_build_status(%s)\n' % (__file__, each_build_status)
+ if each_build_status[0] == 'F':
+ info_stage_status = 'F'
+ print '[%s] failed!! info_stage_status(%s)\n' % (__file__, info_stage_status)
+
+ ### [2] stage end : [pre] package build
+ info_stage_id = 2
+ ter_end_datetime = ter_start_datetime
+ query = "UPDATE sr_stage SET stage_end_time = %s, stage_status = %s " \
+ "WHERE sr_status_id = %s AND info_stage_id = %s AND build_project_id = %s"
+ query_data = (ter_end_datetime, info_stage_status, curr_sr_status_id,
+ info_stage_id, curr_build_project_id)
+ buildmonitor_db.do_query(query, query_data)
+
+ ### [3] stage start : [pre] snapshot creation
+ info_stage_id = 3
+ query = "INSERT INTO sr_stage (sr_status_id, info_stage_id, stage_start_time, " \
+ "stage_status, build_project_id) VALUES(%s, %s, %s, %s, %s)"
+ query_data = (curr_sr_status_id, info_stage_id,
+ ter_start_datetime, 'R', curr_build_project_id)
+ buildmonitor_db.do_query(query, query_data)
+
+def start_pre_create_snapshot_for_build_snapshot(project, ter_start_datetime):
+ print '[%s] enter start_pre_create_snapshot_for_build_snapshot\n' % (__file__)
+
+ # get pre_info_project_id -> get pre_build_project_id
+ query = "SELECT id FROM info_project WHERE project_name = %s"
+ query_data = (project)
+ pre_info_project_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+ query = "SELECT id FROM build_project WHERE info_project_id = %s"
+ query_data = (pre_info_project_id)
+ pre_build_project_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+ #print '[%s] pre_info_project_id(%s), pre_build_project_id(%s)\n' \
+ # % (__file__, pre_info_project_id, pre_build_project_id)
+
+ ### for build_snapshot
+ query = "INSERT INTO build_snapshot (build_project_id, start_time, status) " \
+ "VALUES(%s, %s, %s)"
+ query_data = (pre_build_project_id, ter_start_datetime, 'R')
+ buildmonitor_db.do_query(query, query_data)
+
+def create_snapshot_packages_for_build_snapshot_package(project, ter_snapshot_name,
+ ter_repo, ter_arch, ter_pkg_urls_dic,
+ base_url,base_path):
+ print '[%s] enter create_snapshot_packages_for_build_snapshot_package\n' % (__file__)
+
+ ter_pkg_url = ter_pkg_urls_dic[ter_arch]
+ ter_pkg_dir = ter_pkg_url.replace(base_url, base_path) #http -> /srv/obs
+ #print '[%s] ter_arch(%s), os.listdir(ter_pkg_dir)(%s)\n' \
+ # % (__file__, ter_arch, os.listdir(ter_pkg_dir))
+
+ if ter_arch == 'ia32':
+ ter_arch = 'i686'
+
+ # get rpm files
+ ter_pkg_name_lst = []
+ ter_pkg_mdate_lst = []
+ ter_pkg_size_lst = []
+ for root, dirs, files in os.walk(ter_pkg_dir):
+ for each_file in files:
+ if each_file.endswith(".rpm"):
+ rpm_file_path = root + '/' + each_file
+ rpm_file_mdate = os.path.getmtime(rpm_file_path)
+ rpm_file_size = os.path.getsize(rpm_file_path)
+ ter_pkg_name_lst.append(each_file)
+ ter_pkg_mdate_lst.append(rpm_file_mdate)
+ ter_pkg_size_lst.append(rpm_file_size)
+ #print '[%s] rpm_file_path(%s), rpm_file_mdate(%s), rpm_file_size(%s)\n' \
+ # % (__file__, rpm_file_path, rpm_file_mdate, rpm_file_size)
+
+ # get pre_info_project_id -> get pre_build_project_id
+ query = "SELECT id FROM info_project WHERE project_name = %s"
+ query_data = (project)
+ pre_info_project_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+ query = "SELECT id FROM build_project WHERE info_project_id = %s"
+ query_data = (pre_info_project_id)
+ pre_build_project_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+ #print '[%s] pre_info_project_id(%s), pre_build_project_id(%s)\n' \
+ # % (__file__, pre_info_project_id, pre_build_project_id)
+
+ # get curr_build_snapshot_id
+ query = "SELECT id FROM build_snapshot WHERE build_project_id = %s"
+ query_data = (pre_build_project_id)
+ curr_build_snapshot_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+ #print '[%s] curr_build_snapshot_id(%s)\n' % (__file__, curr_build_snapshot_id)
+
+ for each_pkg_name, each_pkg_mdate, each_pkg_size in zip(ter_pkg_name_lst, ter_pkg_mdate_lst, ter_pkg_size_lst):
+ timestamp = datetime.datetime.fromtimestamp(each_pkg_mdate)
+ #print '[%s] each_pkg_name(%s), timestamp(%s), each_pkg_size(%s)\n' \
+ # % (__file__, each_pkg_name, timestamp, each_pkg_size)
+ query = "INSERT INTO build_snapshot_package (build_snapshot_id, repository, " \
+ "arch, package_name, created_date, package_size, package_url) " \
+ "VALUES(%s, %s, %s, %s, %s, %s, %s)"
+ query_data = (curr_build_snapshot_id, ter_repo, ter_arch, each_pkg_name,
+ timestamp, each_pkg_size, ter_pkg_url)
+ buildmonitor_db.do_query(query, query_data)
+
+def end_pre_create_snapshot_for_sr_stage(project, ter_git_tag,
+ ter_start_datetime, ter_end_datetime):
+ print '[%s] enter end_pre_create_snapshot_for_sr_stage\n' % (__file__)
+
+ # get curr_sr_status_id
+ query = "SELECT id FROM sr_status WHERE sr = %s"
+ query_data = (ter_git_tag)
+ curr_sr_status_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+
+ # get curr_info_project_id -> get curr_build_project_id for multi profile
+ query = "SELECT id FROM info_project WHERE project_name = %s"
+ query_data = (project)
+ curr_info_project_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+ query = "SELECT id FROM build_project WHERE info_project_id = %s"
+ query_data = (curr_info_project_id)
+ curr_build_project_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+
+ ### [3] stage end : [pre] snapshot creation
+ info_stage_id = 3
+ query = "UPDATE sr_stage SET stage_end_time = %s, stage_status = %s " \
+ "WHERE sr_status_id = %s AND info_stage_id = %s AND build_project_id = %s"
+ query_data = (ter_end_datetime, 'S', curr_sr_status_id,
+ info_stage_id, curr_build_project_id)
+ buildmonitor_db.do_query(query, query_data)
+
+ ### [4] stage start : [pre] image creation
+ info_stage_id = 4
+ query = "INSERT INTO sr_stage (sr_status_id, info_stage_id, stage_start_time, " \
+ "stage_status, build_project_id) VALUES(%s, %s, %s, %s, %s)"
+ query_data = (curr_sr_status_id, info_stage_id, ter_end_datetime,
+ 'R', curr_build_project_id)
+ buildmonitor_db.do_query(query, query_data)
+
+def end_pre_create_snapshot_for_build_snapshot(project, ter_snapshot_name,
+ ter_snapshot_url, ter_end_datetime):
+ print '[%s] enter end_pre_create_snapshot_for_build_snapshot\n' % (__file__)
+
+ # get pre_info_project_id -> get pre_build_project_id
+ query = "SELECT id FROM info_project WHERE project_name = %s"
+ query_data = (project)
+ pre_info_project_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+ query = "SELECT id FROM build_project WHERE info_project_id = %s"
+ query_data = (pre_info_project_id)
+ pre_build_project_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+ #print '[%s] pre_info_project_id(%s), pre_build_project_id(%s)\n' \
+ # % (__file__, pre_info_project_id, pre_build_project_id)
+
+ ### for build_snapshot
+ query = "UPDATE build_snapshot SET snapshot_name = %s, snapshot_url = %s, " \
+ "end_time = %s, status = %s WHERE build_project_id = %s"
+ query_data = (ter_snapshot_name, ter_snapshot_url, ter_end_datetime,
+ 'S', pre_build_project_id)
+ buildmonitor_db.do_query(query, query_data)
+
+#===============================================================================
+# [job_imager.py]
+
+def update_fail_create_image_for_sr_stage(fields, ter_start_datetime):
+ print '[%s] enter update_fail_create_image_for_sr_stage\n' % (__file__)
+
+ ter_prj_name = fields["project"]
+ ter_split_data = fields["project"].split(':')[-1]
+ ter_git_tag = 'submit/tizen/' + ter_split_data
+ ter_url = os.path.join(fields.get('url_pub_base', ''),
+ fields['repo_path'], fields['images_path'])
+ #print '[%s] ter_prj_name(%s), ter_split_data(%s), ter_git_tag(%s), ter_url(%s)\n' \
+ # % (__file__, ter_prj_name, ter_split_data, ter_git_tag, ter_url)
+
+ ter_end_datetime = datetime.datetime.now()
+
+ #if 'prerelease' in ter_url:
+ if not ((ter_url.find("prerelease")) == -1):
+
+ # [pre_build] get current_sr_status_id
+ query = "SELECT id FROM sr_status WHERE sr = %s"
+ query_data = (ter_git_tag)
+ curr_sr_status_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+ #print '[%s][pre_build] info_stage_id(%s), query_data(%s), curr_sr_status_id(%s)\n' \
+ # % (__file__, info_stage_id, query_data, curr_sr_status_id)
+
+ # get curr_info_project_id -> get curr_build_project_id for multi profile
+ query = "SELECT id FROM info_project WHERE project_name = %s"
+ query_data = (ter_prj_name)
+ curr_info_project_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+ query = "SELECT id FROM build_project WHERE info_project_id = %s"
+ query_data = (curr_info_project_id)
+ curr_build_project_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+
+ ### [4] stage : update fail status for [pre] image creation
+ info_stage_id = 4
+ query = "UPDATE sr_stage SET stage_start_time = %s, stage_end_time = %s, stage_status = %s " \
+ "WHERE sr_status_id = %s AND info_stage_id = %s AND build_project_id = %s"
+ query_data = (ter_start_datetime, ter_end_datetime, 'F',
+ curr_sr_status_id, info_stage_id, curr_build_project_id)
+ buildmonitor_db.do_query(query, query_data)
+ else:
+ # get post_info_project_id -> get post_build_project_id
+ query = "SELECT id FROM info_project WHERE project_name = %s"
+ query_data = (ter_prj_name)
+ post_info_project_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+ query = "SELECT id FROM build_project " \
+ "WHERE info_project_id = %s ORDER BY id desc LIMIT 1"
+ query_data = (post_info_project_id)
+ post_build_project_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+
+ # get curr_sr_status_id
+ query = "SELECT sr_status_id FROM sr_status_detail WHERE post_build_project_id = %s"
+ query_data = (post_build_project_id)
+ curr_sr_status_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+ #print '[%s] curr_sr_status_id(%s)\n' % (__file__, curr_sr_status_id)
+
+ ### [8] stage : update fail status for [post] image creation
+ info_stage_id = 8
+ query = "UPDATE sr_stage SET stage_start_time = %s, stage_end_time = %s, stage_status = %s " \
+ "WHERE sr_status_id = %s AND info_stage_id = %s AND build_project_id = %s"
+ query_data = (ter_start_datetime, ter_end_datetime, 'F',
+ curr_sr_status_id, info_stage_id, post_build_project_id)
+ buildmonitor_db.do_query(query, query_data)
+
+def create_image_for_build_image(fields, ter_start_datetime,
+ ter_end_datetime, build_id):
+ print '[%s] enter create_image_for_build_image\n' % (__file__)
+
+ ter_repository = fields['repo']
+ ter_device_name = fields['name']
+ ter_status = fields['status']
+ ter_url = fields['url']
+ #print '[%s] ter_repository(%s), ter_device_name(%s), ter_status(%s), ter_url(%s)\n' \
+ # % (__file__, ter_repository, ter_device_name, ter_status, ter_url)
+
+ ter_base_path = os.getenv('PATH_REPO_BASE')
+ ter_img_url = os.path.join(ter_base_path, fields['repo_path'], fields['images_path'])
+ ter_img_path = ter_img_url + '/' + build_id + '_' + ter_device_name + '.tar.gz'
+ ter_img_size = os.path.getsize(ter_img_path)
+ #print '[%s] ter_img_path(%s), ter_img_size(%s)\n' \
+ # % (__file__, ter_img_path, ter_img_size)
+
+ # get curr_build_snapshot_id
+ query = "SELECT id FROM build_snapshot WHERE snapshot_name = %s"
+ query_data = (build_id)
+ curr_build_snapshot_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+ #print '[%s] curr_build_snapshot_id(%s)\n' % (__file__, curr_build_snapshot_id)
+
+ ### for build_image
+ query = "INSERT INTO build_image (build_snapshot_id, repository, device_name, " \
+ "start_time, end_time, status, image_size, image_url) " \
+ "VALUES(%s, %s, %s, %s, %s, %s, %s, %s)"
+ query_data = (curr_build_snapshot_id, ter_repository, ter_device_name,
+ ter_start_datetime, ter_end_datetime,
+ ter_status, ter_img_size, ter_url)
+ buildmonitor_db.do_query(query, query_data)
+
+#===============================================================================
+# [job_post_image.py]
+
+def end_create_image_for_sr_stage(ter_start_datetime, project):
+ print '[%s] enter end_create_image_for_sr_stage project(%s)\n' % (__file__, project)
+
+ if project.startswith("home:prerelease:"):
+ ter_end_datetime = datetime.datetime.now()
+ ter_git_tag = project.split(":")[-3] + '/' + project.split(":")[-2] + '/' + project.split(":")[-1]
+ #print '[%s] ter_git_tag(%s)\n' % (__file__, ter_git_tag)
+
+ # [pre_build] get current_sr_status_id
+ query = "SELECT id FROM sr_status WHERE sr = %s"
+ query_data = (ter_git_tag)
+ curr_sr_status_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+ #print '[%s][pre_build] query_data(%s), curr_sr_status_id(%s)\n' \
+ # % (__file__, query_data, curr_sr_status_id)
+
+ # get curr_info_project_id -> get curr_build_project_id for multi profile
+ query = "SELECT id FROM info_project WHERE project_name = %s"
+ query_data = (project)
+ curr_info_project_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+ query = "SELECT id FROM build_project WHERE info_project_id = %s"
+ query_data = (curr_info_project_id)
+ curr_build_project_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+
+ ### [4] stage : [pre] image creation
+ info_stage_id = 4
+ query = "UPDATE sr_stage SET stage_end_time = %s, stage_status = %s " \
+ "WHERE sr_status_id = %s AND info_stage_id = %s AND build_project_id = %s"
+ query_data = (ter_end_datetime, 'S',
+ curr_sr_status_id, info_stage_id, curr_build_project_id)
+ buildmonitor_db.do_query(query, query_data)
+
+#===============================================================================
+# [job_request.py]
+
+def sr_accept_for_sr_stage(ter_src_prj_name, ter_target_prj_name,
+ ter_start_datetime, ter_end_datetime, ter_git_tag):
+ print '[%s] enter sr_accept_for_sr_stage\n' % (__file__)
+
+ # get current_sr_status_id
+ query = "SELECT id FROM sr_status WHERE sr = %s"
+ query_data = (ter_git_tag)
+ curr_sr_status_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+ #print '[%s] curr_sr_status_id(%s)\n' % (__file__, curr_sr_status_id)
+
+ # get curr_info_project_id -> get curr_build_project_id for multi profile
+ query = "SELECT id FROM info_project WHERE project_name = %s"
+ query_data = (ter_src_prj_name)
+ curr_info_project_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+ query = "SELECT id FROM build_project WHERE info_project_id = %s"
+ query_data = (curr_info_project_id)
+ curr_build_project_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+
+ ### [5] stage : SR aceept
+ info_stage_id = 5
+ query = "INSERT INTO sr_stage (sr_status_id, info_stage_id, " \
+ "stage_start_time, stage_end_time, stage_status, build_project_id) " \
+ "VALUES(%s, %s, %s, %s, %s, %s)"
+ query_data = (curr_sr_status_id, info_stage_id,
+ ter_start_datetime, ter_end_datetime, 'S', curr_build_project_id)
+ buildmonitor_db.do_query(query, query_data)
+
+ # get curr_info_project_id -> get post_build_project_id for multi profile
+ query = "SELECT id FROM info_project WHERE project_name = %s"
+ query_data = (ter_target_prj_name)
+ curr_info_project_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+ query = "SELECT id FROM build_project " \
+ "WHERE info_project_id = %s ORDER BY id desc LIMIT 1"
+ query_data = (curr_info_project_id)
+ post_build_project_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+
+ ### [6] stage start : [post] package build
+ info_stage_id = 6
+ query = "INSERT INTO sr_stage (sr_status_id, info_stage_id, " \
+ "stage_start_time, stage_status, build_project_id) " \
+ "VALUES(%s, %s, %s, %s, %s)"
+ query_data = (curr_sr_status_id, info_stage_id, ter_start_datetime,
+ 'R', post_build_project_id)
+ buildmonitor_db.do_query(query, query_data)
+
+def sr_reject_for_sr_stage(ter_src_prj_name, ter_start_datetime,
+ ter_end_datetime, ter_git_tag):
+ print '[%s] enter sr_reject_for_sr_stage\n' % (__file__)
+
+ # get curr_sr_status_id
+ query = "SELECT id FROM sr_status WHERE sr = %s"
+ query_data = (ter_git_tag)
+ curr_sr_status_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+ #print '[%s] curr_sr_status_id(%s)\n' % (__file__, curr_sr_status_id)
+
+ # get curr_info_project_id -> get curr_build_project_id for multi profile
+ query = "SELECT id FROM info_project WHERE project_name = %s"
+ query_data = (ter_src_prj_name)
+ curr_info_project_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+ query = "SELECT id FROM build_project WHERE info_project_id = %s"
+ query_data = (curr_info_project_id)
+ curr_build_project_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+
+ ### [5] stage : SR reject
+ info_stage_id = 5
+ query = "INSERT INTO sr_stage (sr_status_id, info_stage_id, stage_start_time, " \
+ "stage_end_time, stage_status, build_project_id) " \
+ "VALUES(%s, %s, %s, %s, %s, %s)"
+ query_data = (curr_sr_status_id, info_stage_id, ter_start_datetime, ter_end_datetime,
+ 'F', curr_build_project_id)
+ buildmonitor_db.do_query(query, query_data)
+
+def sr_accept_reject_for_sr_status_detail(event_fields, ter_start_datetime,
+ ter_end_datetime, ter_git_tag):
+ print '[%s] enter sr_accept_reject_for_sr_status_detail\n' % (__file__)
+
+ obs_req_no = event_fields['id']
+ obs_req_comment = event_fields['comment']
+ obs_req_date = ter_end_datetime
+ obs_req_status = event_fields['state']
+ obs_req_status = obs_req_status.upper()
+ ter_src_prj_name = event_fields['sourceproject']
+ ter_target_prj_name = event_fields['targetproject']
+ #print '[%s] obs_req_no(%s), obs_req_comment(%s), obs_req_date(%s), obs_req_status(%s)\n' \
+ # % (__file__, obs_req_no, obs_req_comment, obs_req_date, obs_req_status)
+ #print '[%s] ter_src_prj_name(%s), ter_target_prj_name(%s), ter_git_tag(%s)\n' \
+ # % (__file__, ter_src_prj_name, ter_target_prj_name, ter_git_tag)
+
+ if obs_req_status == 'ACCEPTED':
+ print '[%s][ACCEPTED] obs_req_status(%s)\n' % (__file__, obs_req_status)
+
+ # get pre_info_project_id -> get pre_build_project_id
+ query = "SELECT id FROM info_project WHERE project_name = %s"
+ query_data = (ter_src_prj_name) # should use ter_src_prj_name
+ pre_info_project_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+ query = "SELECT id FROM build_project WHERE info_project_id = %s"
+ query_data = (pre_info_project_id)
+ pre_build_project_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+ #print '[%s] pre_info_project_id(%d), pre_build_project_id(%s)\n' \
+ # % (__file__, pre_info_project_id, pre_build_project_id)
+
+ # get post_info_project_id -> get post_build_project_id
+ query = "SELECT id FROM info_project WHERE project_name = %s"
+ query_data = (ter_target_prj_name)
+ post_info_project_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+ query = "SELECT id FROM build_project " \
+ "WHERE info_project_id = %s ORDER BY id desc LIMIT 1"
+ query_data = (post_info_project_id)
+ post_build_project_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+ #print '[%s] post_info_project_id(%s), post_build_project_id(%s)\n' \
+ # % (__file__, post_info_project_id, post_build_project_id)
+
+ ### for sr_status_detail
+ query = "UPDATE sr_status_detail SET post_build_project_id = %s, obs_request_no = %s, " \
+ "obs_request_comment = %s, obs_request_date = %s, obs_request_status = %s " \
+ "WHERE pre_build_project_id = %s"
+ query_data = (post_build_project_id, obs_req_no, obs_req_comment,
+ obs_req_date, obs_req_status, pre_build_project_id)
+ buildmonitor_db.do_query(query, query_data)
+
+ ### for sr_stage (now can find the build_project_id of the target prj)
+ sr_accept_for_sr_stage(ter_src_prj_name, ter_target_prj_name,
+ ter_start_datetime, ter_end_datetime, ter_git_tag)
+
+ elif obs_req_status == 'REVOKED' or obs_req_status == 'DECLINED':
+ print '[%s][REVOKED or DECLINED] obs_req_status(%s)\n' \
+ % (__file__, obs_req_status)
+
+ # get info_project_id -> get pre_build_project_id
+ query = "SELECT id FROM info_project WHERE project_name = %s"
+ query_data = (ter_src_prj_name)
+ info_project_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+ query = "SELECT id FROM build_project WHERE info_project_id = %s"
+ query_data = (info_project_id)
+ pre_build_project_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+
+ ### for sr_status_detail
+ query = "UPDATE sr_status_detail SET obs_request_no = %s, " \
+ "obs_request_comment = %s, obs_request_date = %s, obs_request_status = %s " \
+ "WHERE pre_build_project_id = %s"
+ query_data = (obs_req_no, obs_req_comment, obs_req_date,
+ obs_req_status, pre_build_project_id)
+ buildmonitor_db.do_query(query, query_data)
+
+ ### for sr_stage
+ sr_reject_for_sr_stage(ter_src_prj_name, ter_start_datetime,
+ ter_end_datetime, ter_git_tag)
+
+#===============================================================================
+# [job_create_snapshot.py]
+
+def update_fail_create_snapshot_for_sr_stage(project):
+ print '[%s] enter update_fail_create_snapshot_for_sr_stage\n' % (__file__)
+
+ # get post_info_project_id
+ query = "SELECT id FROM info_project WHERE project_name = %s"
+ query_data = (project) # Tizen:Mobile
+ post_info_project_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+
+ # get post_build_project_id
+ query = "SELECT id FROM build_project " \
+ "WHERE info_project_id = %s ORDER BY id desc LIMIT 1"
+ query_data = (post_info_project_id)
+ post_build_project_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+
+ # get curr_sr_status_id
+ query = "SELECT sr_status_id FROM sr_status_detail WHERE post_build_project_id = %s"
+ query_data = (post_build_project_id)
+ curr_sr_status_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+ #print '[%s] post_info_project_id(%s), post_build_project_id(%d), curr_sr_status_id(%s)\n' \
+ # % (__file__, post_info_project_id, post_build_project_id, curr_sr_status_id)
+
+ ### [7] stage : update fail status when failed
+ ter_start_datetime = ter_end_datetime = datetime.datetime.now()
+ query = "UPDATE sr_stage SET stage_start_time = %s, stage_end_time = %s, stage_status = %s " \
+ "WHERE sr_status_id = %s AND build_project_id = %s"
+ query_data = (ter_start_datetime, ter_end_datetime, 'F',
+ curr_sr_status_id, post_build_project_id)
+ buildmonitor_db.do_query(query, query_data)
+
+def start_create_snapshot_for_sr_stage(project, ter_start_datetime):
+ print '[%s] enter start_create_snapshot_for_sr_stage\n' % (__file__)
+
+ # get post_info_project_id
+ query = "SELECT id FROM info_project WHERE project_name = %s"
+ query_data = (project) # Tizen:Mobile
+ post_info_project_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+
+ # get post_build_project_id
+ query = "SELECT id FROM build_project " \
+ "WHERE info_project_id = %s ORDER BY id desc LIMIT 1"
+ query_data = (post_info_project_id)
+ post_build_project_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+
+ # get multi_sr_status_id
+ query = "SELECT sr_status_id FROM sr_status_detail WHERE post_build_project_id = %s"
+ query_data = (post_build_project_id)
+ multi_sr_status_id = buildmonitor_db.get_multi_values_from_query_data(query, query_data)
+ #print '[%s] post_info_project_id(%s), post_build_project_id(%d), multi_sr_status_id(%s)\n' \
+ # % (__file__, post_info_project_id, post_build_project_id, multi_sr_status_id)
+
+ ### [6] end / [7/8] start : [post] snapshot creation
+ for each_sr_status_id in multi_sr_status_id:
+ print '[%s] each_sr_status_id(%s)\n' % (__file__, each_sr_status_id)
+ info_stage_id = 6
+ ter_end_datetime = datetime.datetime.now()
+ query = "UPDATE sr_stage SET stage_end_time = %s, stage_status = %s " \
+ "WHERE sr_status_id = %s AND info_stage_id = %s AND build_project_id = %s"
+ query_data = (ter_end_datetime, 'S',
+ each_sr_status_id[0], info_stage_id, post_build_project_id)
+ buildmonitor_db.do_query(query, query_data)
+
+ info_stage_id = 7
+ query = "INSERT INTO sr_stage (sr_status_id, info_stage_id, " \
+ "stage_start_time, stage_end_time, stage_status, build_project_id) " \
+ "VALUES(%s, %s, %s, %s, %s, %s)"
+ query_data = (each_sr_status_id[0], info_stage_id,
+ ter_start_datetime, ter_end_datetime, 'R', post_build_project_id)
+ buildmonitor_db.do_query(query, query_data)
+
+ info_stage_id = 8
+ query = "INSERT INTO sr_stage (sr_status_id, info_stage_id, " \
+ "stage_start_time, stage_end_time, stage_status, build_project_id) " \
+ "VALUES(%s, %s, %s, %s, %s, %s)"
+ query_data = (each_sr_status_id[0], info_stage_id,
+ ter_start_datetime, ter_end_datetime, 'R', post_build_project_id)
+ buildmonitor_db.do_query(query, query_data)
+
+def start_create_snapshot_for_post_build_snapshot(project, ter_snapshot_name,
+ ter_start_datetime):
+ print '[%s] enter start_create_snapshot_for_post_build_snapshot\n' % (__file__)
+
+ # get post_info_project_id
+ query = "SELECT id FROM info_project WHERE project_name = %s"
+ query_data = (project)
+ post_info_project_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+
+ # get post_build_project_id
+ query = "SELECT id FROM build_project " \
+ "WHERE info_project_id = %s ORDER BY id desc LIMIT 1"
+ query_data = (post_info_project_id)
+ post_build_project_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+ #print '[%s] post_info_project_id(%s), post_build_project_id(%d)\n' \
+ # % (__file__, post_info_project_id, post_build_project_id)
+
+ # insert new post_build_project_id
+ query = "INSERT INTO build_snapshot (build_project_id, snapshot_name, " \
+ "start_time, status) VALUES(%s, %s, %s, %s)"
+ query_data = (post_build_project_id, ter_snapshot_name, ter_start_datetime, 'R')
+ buildmonitor_db.do_query(query, query_data)
+
+def create_snapshot_packages_for_post_build_snapshot_package(repo, project, ter_repo,
+ ter_arch, base_path, snapshot):
+ print '[%s] enter create_snapshot_packages_for_post_build_snapshot_package\n' % (__file__)
+
+ if ter_arch == 'ia32':
+ ter_arch = 'i686'
+ ter_repo_dir = os.path.join(snapshot.path, "repos", ter_repo, "packages")
+ #print '[%s] snapshot.path(%s), ter_repo(%s), ter_arch(%s)\n' \
+ # % (__file__, snapshot.path, ter_repo, ter_arch)
+ #print '[%s] ter_repo_dir(%s), os.listdir(ter_repo_dir)(%s)\n' \
+ # % (__file__, ter_repo_dir, os.listdir(ter_repo_dir))
+
+ ter_base_url = os.getenv("URL_PUBLIC_REPO_BASE")
+ ter_pkg_url = ter_repo_dir.replace(base_path, ter_base_url)
+ #print '[%s] ter_base_url(%s), base_path(%s), ter_pkg_url(%s)\n' \
+ # % (__file__, ter_base_url, base_path, ter_pkg_url)
+
+ # get rpm files
+ ter_pkg_name_lst = []
+ ter_pkg_mdate_lst = []
+ ter_pkg_size_lst = []
+ for root, dirs, files in os.walk(ter_repo_dir):
+ #print '[%s] root(%s), dirs(%s), files(%s)\n' % (__file__, root, dirs, files)
+ for each_file in files:
+ if each_file.endswith(".rpm"):
+ rpm_file_path = os.path.join(root, each_file)
+ rpm_file_mdate = os.path.getmtime(rpm_file_path)
+ rpm_file_size = os.path.getsize(rpm_file_path)
+ ter_pkg_name_lst.append(each_file)
+ ter_pkg_mdate_lst.append(rpm_file_mdate)
+ ter_pkg_size_lst.append(rpm_file_size)
+ # too much log
+ #print '[%s] rpm_file_path(%s), rpm_file_mdate(%s), rpm_file_size(%s)\n' \
+ # % (__file__, rpm_file_path, rpm_file_mdate, rpm_file_size)
+
+ # get post_info_project_id
+ query = "SELECT id FROM info_project WHERE project_name = %s"
+ query_data = (project)
+ post_info_project_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+ #print '[%s] post_info_project_id (%s)\n' % (__file__, post_info_project_id)
+
+ # get post_build_project_id
+ query = "SELECT id FROM build_project " \
+ "WHERE info_project_id = %s ORDER BY id desc LIMIT 1"
+ query_data = (post_info_project_id)
+ build_project_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+
+ # get curr_build_snapshot_id
+ query = "SELECT id FROM build_snapshot WHERE build_project_id = %s"
+ query_data = (build_project_id)
+ curr_build_snapshot_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+
+ for each_pkg_name, each_pkg_mdate, each_pkg_size in zip(ter_pkg_name_lst, ter_pkg_mdate_lst, ter_pkg_size_lst):
+ timestamp = datetime.datetime.fromtimestamp(each_pkg_mdate)
+ # post build
+ #print '[%s] curr_build_snapshot_id(%s), each_pkg_name(%s), timestamp(%s), each_pkg_size(%s)\n' \
+ # % (__file__, curr_build_snapshot_id, each_pkg_name, timestamp, each_pkg_size)
+ query = "INSERT INTO build_snapshot_package (build_snapshot_id, repository, arch, " \
+ "package_name, created_date, package_size, package_url) " \
+ "VALUES(%s, %s, %s, %s, %s, %s, %s)"
+ query_data = (curr_build_snapshot_id, ter_repo, ter_arch,
+ each_pkg_name, timestamp, each_pkg_size, ter_pkg_url)
+ buildmonitor_db.do_query(query, query_data)
+
+def end_create_snapshot_create_images_for_sr_stage(project, ter_start_datetime,
+ ter_end_datetime):
+ print '[%s] enter end_create_snapshot_create_images_for_sr_stage\n' % (__file__)
+
+ ### [7/8/9] end : [post] snapshot creation / [post] image creation / Completed
+ # get post_info_project_id
+ query = "SELECT id FROM info_project WHERE project_name = %s"
+ query_data = (project) # Tizen:Mobile
+ post_info_project_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+
+ # get post_build_project_id
+ query = "SELECT id FROM build_project " \
+ "WHERE info_project_id = %s ORDER BY id desc LIMIT 1"
+ query_data = (post_info_project_id)
+ post_build_project_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+
+ # get multi_sr_status_id
+ query = "SELECT sr_status_id FROM sr_status_detail WHERE post_build_project_id = %s"
+ query_data = (post_build_project_id)
+ multi_sr_status_id = buildmonitor_db.get_multi_values_from_query_data(query, query_data)
+ #print '[%s] post_info_project_id(%s), post_build_project_id(%d), multi_sr_status_id(%s)\n' \
+ # % (__file__, post_info_project_id, post_build_project_id, multi_sr_status_id)
+
+ for each_sr_status_id in multi_sr_status_id:
+ print '[%s] each_sr_status_id(%s)\n' % (__file__, each_sr_status_id)
+
+ # change the state_status of previous stage from 'R' to 'S'
+ info_stage_id = 7
+ query = "UPDATE sr_stage SET stage_end_time = %s, stage_status = %s " \
+ "WHERE sr_status_id = %s AND info_stage_id = %s AND build_project_id = %s"
+ query_data = (ter_end_datetime, 'S',
+ each_sr_status_id[0], info_stage_id, post_build_project_id)
+ buildmonitor_db.do_query(query, query_data)
+
+ info_stage_id = 8
+ query = "UPDATE sr_stage SET stage_end_time = %s, stage_status = %s " \
+ "WHERE sr_status_id = %s AND info_stage_id = %s AND build_project_id = %s"
+ query_data = (ter_end_datetime, 'S',
+ each_sr_status_id[0], info_stage_id, post_build_project_id)
+ buildmonitor_db.do_query(query, query_data)
+
+ info_stage_id = 9
+ ter_start_datetime = datetime.datetime.now()
+ query = "INSERT INTO sr_stage (sr_status_id, info_stage_id, " \
+ "stage_start_time, stage_end_time, stage_status, build_project_id) " \
+ "VALUES(%s, %s, %s, %s, %s, %s)"
+ query_data = (each_sr_status_id[0], info_stage_id,
+ ter_start_datetime, ter_end_datetime, 'S', post_build_project_id)
+ buildmonitor_db.do_query(query, query_data)
+
+def end_create_snapshot_for_post_build_snapshot(project, ter_start_datetime,
+ ter_end_datetime, ter_snapshot_url,
+ ter_snapshot_name):
+ print '[%s] enter end_create_snapshot_for_post_build_snapshot\n' % (__file__)
+
+ # get post_info_project_id
+ query = "SELECT id FROM info_project WHERE project_name = %s"
+ query_data = (project)
+ post_info_project_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+
+ # get post_build_project_id
+ query = "SELECT id FROM build_project " \
+ "WHERE info_project_id = %s ORDER BY id desc LIMIT 1"
+ query_data = (post_info_project_id)
+ post_build_project_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+ #print '[%s] post_info_project_id(%s), post_build_project_id(%d)\n' \
+ # % (__file__, post_info_project_id, post_build_project_id)
+
+ # insert new post_build_project_id
+ query = "UPDATE build_snapshot SET snapshot_url = %s, " \
+ "end_time = %s, status = %s WHERE snapshot_name = %s"
+ query_data = (ter_snapshot_url, ter_end_datetime, 'S', ter_snapshot_name)
+ buildmonitor_db.do_query(query, query_data)
+#==================================================================================
+
+def main():
+ """
+ Script entry point.
+ """
+
+if __name__ == '__main__':
+ try:
+ sys.exit(main(os.path.basename(sys.argv[1])))
+ except LocalError, err:
+ print err
+ sys.exit(1)