root = ElementTree.parse(_file).getroot()
return [node.get('name') for node in root.findall('entry')]
- def get_package_build_result(self, project):
+ def get_package_build_result(self, project, status_filter=None):
""" Get built result of the project """
url = core.makeurl(self.apiurl, ['build', project, '_result'])
for package_status in project_status.findall('status'):
package_name = package_status.attrib['package']
package_status = package_status.attrib['code']
- build_result[repo][arch][package_name] = package_status
+ if status_filter == None or package_status in status_filter:
+ build_result[repo][arch][package_name] = package_status
return build_result
query_data = (build_log_url, build_target_id, info_package_id)
buildmonitor_db.do_query(query, query_data)
+def update_unresolvable_broken_packages(project, unresolvable_broken_packages):
+
+ # 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 ORDER BY id DESC LIMIT 1"
+ query_data = (curr_info_project_id,)
+ curr_build_project_id = buildmonitor_db.get_value_from_query_data(query, query_data)
+
+ for repo in unresolvable_broken_packages:
+ for arch in unresolvable_broken_packages[repo]:
+ for p in unresolvable_broken_packages[repo][arch]:
+ status = unresolvable_broken_packages[repo][arch][p]
+
+ query = "INSERT INTO build_package (build_target_id, info_package_id, start_time," \
+ "end_time, build_status) VALUES ("\
+ "(SELECT id FROM build_target WHERE build_project_id=%s AND repository=%s "\
+ "AND arch=%s ORDER BY id DESC LIMIT 1), "\
+ "(SELECT id FROM info_package WHERE info_project_id=%s AND package_name=%s "\
+ "AND active_flag='Y' ORDER BY id DESC LIMIT 1), "\
+ "NOW(), NOW(), %s)"
+ query_data = (curr_build_project_id, repo, arch, curr_info_project_id, p, status)
+ buildmonitor_db.do_query(query, query_data)
+
#===============================================================================
# [TRBS][job_submit.py]
bm_git_tag = content.get("bm_git_tag")
bm_start_datetime = content.get("bm_start_datetime")
bBuildFail = content.get("bBuildFail")
+ unresolvable_broken_packages = content.get("unresolvable_broken_packages")
# func call
if bm_stage == 'Pre_Snap_Start':
print '[%s] Build failed!! skip insert build_snapshot_id\n' \
% (__file__)
+ update_unresolvable_broken_packages(project, unresolvable_broken_packages)
+
elif bm_stage == 'Pre_Snap_End' or bm_stage == '[TRBS]_Pre_Snap_End':
print '[%s][Pre_Snap_End]\n' % (__file__)
# get vars
project = content.get("project")
bm_start_datetime = content.get("bm_start_datetime")
+ unresolvable_broken_packages = content.get("unresolvable_broken_packages")
# func call
start_create_snapshot_for_sr_stage(project, bm_start_datetime)
+
+ update_unresolvable_broken_packages(project, unresolvable_broken_packages)
+
elif bm_stage == 'Post_Snap_snapshot':
print '[%s][Post_Snap_snapshot]\n' % (__file__)
project = content.get("project")
project = content.get("project")
+ build = BuildService(obs_api, obs_user, obs_passwd)
+
if buildmonitor_enabled:
global bm_project # for update_fail_xxx
bm_project = project
bm_data = {"bm_stage" : bm_stage,
"bm_stage_func" : 'start_create_snapshot_for_sr_stage',
"project" : project,
- "bm_start_datetime" : str(bm_start_datetime)
+ "bm_start_datetime" : str(bm_start_datetime),
+ "unresolvable_broken_packages": build.get_package_build_result(project, ["unresolvable", "broken"])
}
trigger_next("BUILD-MONITOR-1-%s" % bm_stage, bm_data)
- build = BuildService(obs_api, obs_user, obs_passwd)
-
# Init backend database
redis_host = os.getenv("REDIS_HOST")
redis_port = int(os.getenv("REDIS_PORT"))