% (__file__)
#==================================================================================
+# Sync_SR
+
+def sync_sr_submit_for_sync_sr_map(bm_sync_git_tag, bm_member_git_tag_list):
+ print '[%s] enter sync_sr_submit_for_sync_sr_map\n' % (__file__)
+
+ # get curr_sr_status_id
+ query = "SELECT id FROM sr_status WHERE sr = %s"
+ query_data = (bm_sync_git_tag,)
+ sync_sr_status_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+ #print '[%s] sync_sr_status_id(%s)\n' % (__file__, sync_sr_status_id)
+
+ query = "SELECT id FROM sr_status WHERE sr = %s"
+ query_data = (bm_member_git_tag_list,)
+ member_sr_status_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+ #print '[%s] member_sr_status_id(%s)\n' % (__file__, member_sr_status_id)
+
+ query = "INSERT INTO sync_sr_map (sync_sr_status_id, member_sr_status_id) VALUES(%s, %s)"
+ query_data = (sync_sr_status_id, member_sr_status_id)
+ buildmonitor_db.do_query(query, query_data)
+
+def sync_sr_submit_for_sr_status(bm_git_tag):
+ print '[%s] enter sync_sr_submit_for_sr_status\n' % (__file__)
+
+ # get curr_sr_status_id
+ query = "SELECT id FROM sr_status WHERE sr = %s"
+ query_data = (bm_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 == INVALID_ID:
+ query = "INSERT INTO sr_status (sr, status, submit_time) VALUES(%s, %s, %s)"
+ query_data = (bm_git_tag, 'C', datetime.strptime(bm_git_tag[-15:], '%Y%m%d.%H%M%S'))
+ 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 sync_sr_submit_for_sr_commit(commit_date, commit_msg, submit_date, submit_msg,
+ submitter, git_tag, gerrit_project,
+ gerrit_newrev, gerrit_account_name):
+ print '[%s] enter sync_sr_submit_for_sr_commit\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)
+
+ print '[%s] gerrit_project(%s)\n' % (__file__, gerrit_project)
+ if gerrit_project[0] == '-':
+ print '[%s] mixed git(%s)\n' % (__file__, gerrit_project)
+ gerrit_project = gerrit_project[1:]
+ obs_pkg_name = os.path.basename(gerrit_project) + '(mixed)'
+ elif gerrit_project[0] == '+':
+ print '[%s] pure git(%s)\n' % (__file__, gerrit_project)
+ gerrit_project = gerrit_project[1:]
+ obs_pkg_name = os.path.basename(gerrit_project[1:])
+ elif gerrit_project == "N/A":
+ print '[%s] Sync SR(%s)\n' % (__file__, gerrit_project)
+ obs_pkg_name = "N/A"
+ else:
+ print '[%s] no mixed marker "+" or "-", will be set as default(%s)\n' \
+ % (__file__, gerrit_project)
+ obs_pkg_name = os.path.basename(gerrit_project)
+
+ bm_submitter = submitter.replace('<', '').replace('>', '')
+ print '[%s] bm_submitter(%s) obs_pkg_name(%s)' \
+ % (__file__, bm_submitter, obs_pkg_name)
+
+ 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,
+ bm_submitter)
+ buildmonitor_db.do_query(query, query_data)
+
+def sync_package_build_for_sr_detail_sr_stage(git_tag, bm_start_datetime,
+ bm_end_datetime, bm_src_project_lst):
+ print '[%s] enter sync_package_build_for_sr_detail_sr_stage\n' % (__file__)
+
+ # get current_sr_status_id (should be here after sync_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)
+
+ # Wait 60 seconds to find the info_project_id
+ #print '[%s] wait 60 sec\n' % (__file__)
+ #sleep(60)
+
+ ### for sr_status_detail & sr_stage
+ # bm_src_project_lst is needed for multi profile
+ print '[%s] bm_src_project_lst(%s)\n' % (__file__, bm_src_project_lst)
+ for bm_src_project in bm_src_project_lst:
+ #print '[%s] bm_src_project(%s)\n' % (__file__, bm_src_project)
+
+ # get info_project_id -> get pre_build_project_id
+ query = "SELECT id FROM info_project WHERE project_name = %s"
+ query_data = (bm_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)
+
+ # defensive code for the duplicated build_project_id
+ if pre_build_project_id == INVALID_ID:
+ print '[%s] cannot find build_project_id!! Adding NOW!!\n' % (__file__)
+ query = "INSERT INTO build_project (info_project_id, status) VALUES(%s, %s)"
+ query_data = (info_project_id, 'C')
+ buildmonitor_db.do_query(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][After] 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 == INVALID_ID:
+ # 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, bm_start_datetime,
+ bm_end_datetime, pre_build_project_id)
+ # [1] end stage / [2] start stage
+ start_pre_build_for_sr_stage(git_tag, bm_start_datetime,
+ bm_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, bm_start_datetime,
+ bm_end_datetime, pre_build_project_id)
+ # [1] end stage / [2] start stage
+ start_pre_build_for_sr_stage(git_tag, bm_start_datetime,
+ bm_end_datetime, pre_build_project_id)
+#==================================================================================
def main():
"""
Script entry point.
bm_remote_jenkins_build_job(remote_data)
#=======================================================
+ # Sync_SR_Submit
+ elif bm_stage == 'Sync_SR_Submit':
+ print '[%s][Sync_SR_Submit]\n' % (__file__)
+
+ # get vars
+ commit_date = transform_date(content.get("commit_date"))
+ commit_msg = truncate_msg(content.get("commit_msg"))
+ submit_date = transform_date(content.get("submit_date"))
+ submit_msg = truncate_msg(content.get("submit_msg"))
+ submitter = content.get("submitter")
+ gerrit_project = content.get("gerrit_project")
+ gerrit_newrev = content.get("gerrit_newrev")
+ gerrit_account_name = content.get("gerrit_account_name")
+ bm_start_datetime = content.get("bm_start_datetime")
+ bm_end_datetime = content.get("bm_end_datetime")
+ bm_src_project_lst = content.get("bm_src_project_lst")
+
+ bm_member_sr_info = content.get("bm_member_sr_info")
+ print 'bm_member_sr_info(%s)\n' % (bm_member_sr_info)
+ bm_sync_git_tag = content.get("bm_sync_git_tag")
+ print 'bm_sync_git_tag(%s)\n' % (bm_sync_git_tag)
+
+ # func call
+ ### 1. bm_sync_git_tag (sr_status + sr_commit + sr_status_detail + sr_stage)
+ sync_sr_submit_for_sr_status(bm_sync_git_tag)
+ sync_sr_submit_for_sr_commit(commit_date, commit_msg, submit_date, submit_msg,
+ submitter, bm_sync_git_tag, gerrit_project,
+ gerrit_newrev, gerrit_account_name)
+ sync_package_build_for_sr_detail_sr_stage(bm_sync_git_tag, bm_start_datetime,
+ bm_end_datetime,
+ bm_src_project_lst)
+
+ ### 2. bm_member_git_tag_list (sr_status + sr_commit)
+ for each_request in bm_member_sr_info['requests']:
+ print ' snapshot:%s' % each_request['snapshot']
+ print ' submit_list:'
+ for each_sr_info in each_request['submit_list']:
+ each_git_tag = each_sr_info.keys()[0]
+ print ' %s' % each_git_tag
+
+ # member_sr for [sr_status] table
+ sync_sr_submit_for_sr_status(each_git_tag)
+
+ # member sr & sync_sr for [sync_sr_map] table
+ sync_sr_submit_for_sync_sr_map(bm_sync_git_tag, each_git_tag)
+
+ for each_git_path in each_sr_info[each_sr_info.keys()[0]]:
+ print ' %s' % each_git_path # replace gerrit_project
+ # member sr for [sr_commit]
+ sync_sr_submit_for_sr_commit(commit_date, commit_msg,
+ submit_date, submit_msg,
+ submitter, each_git_tag,
+ each_git_path, gerrit_newrev,
+ gerrit_account_name)
+
+
+ #update_sr_submit_log_completed(git_tag)
+
+ #=======================================================
# [PRE] Build
#=======================================================
# [PRE] Snap