"""Local error exception."""
pass
-#-------------------------------------------------------------------------------
-# global variables
-status_str = ""
-error_string = ""
-obs_api = os.getenv("OBS_API_URL")
-obs_user = os.getenv("OBS_API_USERNAME")
-obs_passwd = os.getenv("OBS_API_PASSWD")
-
-repa_decision = os.getenv("REPA_DECISION")
-obs_project = os.getenv("OBS_PROJECT")
-sr_tag = os.getenv("SR_TAG")
-repa_comment = os.getenv("REPA_COMMENT")
-repa_user = os.getenv("REPA_USER")
-
-#-------------------------------------------------------------------------------
def is_aggregate_package(build, proj, pack):
if "_aggregate" in build.get_src_file_list(proj, pack):
return True
return False
-
def accept_or_reject(build, prerelease_proj, git_tag, state, comment=''):
info = build.get_info(prerelease_proj)
print "repa %s %s (%s)" % (state, git_tag, prerelease_proj)
- global status_str
- status_str = "Succeeded"
submitter = info.get('submitter', '')
projects = '[' + ', '.join(info['projects']) + ']'
print 'set SR state to', state
def repa_reject(build, proj, git_tag, comment=''):
- accept_or_reject(build, proj, git_tag, 'declined', comment)
+ try:
+ accept_or_reject(build, proj, git_tag, 'declined', comment)
+ return ""
+ except Exception as err:
+ return str(err)
def repa_accept(build, proj, git_tag, comment=''):
- accept_or_reject(build, proj, git_tag, 'accepted', comment)
+ try:
+ accept_or_reject(build, proj, git_tag, 'accepted', comment)
+ return ""
+ except Exception as err:
+ return str(err)
-def main():
- """Script entry point.
+def process_single_item(no, repa_decision, obs_project, sr_tag, repa_comment, repa_user):
+ """
"""
- print '---[JOB STARTED: repa]-------------------------'
+ error_string = ""
+ print "\n=========="
print "OBS_PROJECT = ", obs_project
print "SR_TAG = ", sr_tag
print "REPA_COMMENT = ", repa_comment
print "REPA_DECISION = ", repa_decision
print "REPA_USER = ", repa_user
+ obs_api = os.getenv("OBS_API_URL")
+ obs_user = os.getenv("OBS_API_USERNAME")
+ obs_passwd = os.getenv("OBS_API_PASSWD")
+
build = BuildService(obs_api, obs_user, obs_passwd)
ret = 0
if os.getenv("REPA_CHECK_PERMISSION", 0):
if not check_permission(build, obs_project, repa_user):
- raise LocalError("User %s does not have permission for OBS project %s" % (repa_user, obs_project))
-
- if repa_decision == "accept":
- repa_accept(build, prerelease_proj, sr_tag, repa_comment)
+ error_string = "User %s does not have permission for OBS project %s" % (repa_user, obs_project)
+
+ if error_string is None or error_string == "":
+ if repa_decision == "accept":
+ error_string = repa_accept(build, prerelease_proj, sr_tag, repa_comment)
+ else:
+ error_string = repa_reject(build, prerelease_proj, sr_tag, repa_comment)
+
+ # BUILD-MONITOR
+ bm_stage = "REPA"
+ if error_string is None or error_string == "":
+ status_str = "Succeeded"
else:
- repa_reject(build, prerelease_proj, sr_tag, repa_comment)
+ status_str = "Failed"
+ bm_data = {"bm_stage": bm_stage,
+ "sr_tag": sr_tag,
+ "profile":obs_project,
+ "status": status_str,
+ "status_reason": error_string}
+ trigger_next("BUILD-MONITOR_%s" % (no), bm_data)
- return 0
+ return error_string
if __name__ == '__main__':
- try:
- exit_status = main()
- except Exception as err:
- print err
- global status_str, error_string
- status_str = "Failed"
- error_string = str(err)
- exit_status = 1
-
-bm_stage = "REPA"
-bm_data = {"bm_stage": bm_stage,
- "sr_tag": sr_tag,
- "profile":obs_project,
- "status": status_str,
- "status_reason": error_string}
-trigger_next("BUILD-MONITOR", bm_data)
+ repa_decision = os.getenv("REPA_DECISION")
+ obs_project = os.getenv("OBS_PROJECT")
+ sr_tag = os.getenv("SR_TAG")
+ repa_comment = os.getenv("REPA_COMMENT")
+ repa_user = os.getenv("REPA_USER")
+
+ errors = []
+
+ if repa_decision and obs_project and sr_tag and repa_comment and repa_user:
+ ret = process_single_item("0", repa_decision, obs_project, sr_tag, repa_comment, repa_user)
+ if len(ret) > 0:
+ errors.append(ret)
+
+ trigger_item = os.getenv("TRIGGER_INFO", None)
+ if trigger_item:
+ item_list = trigger_info(trigger_item)
+ new_list = sorted(item_list, key=lambda k: k['no'])
+ for x in new_list:
+ no = x.get('no')
+ repa_decision = x.get('repa_decision_jenkins')
+ obs_project = x.get('obs_project')
+ sr_tag = x.get('sr_tag')
+ repa_comment = x.get('comment')
+ repa_user = x.get('repa_user')
+ ret = process_single_item(no, repa_decision, obs_project, sr_tag, repa_comment, repa_user)
+ if len(ret) > 0:
+ errors.append(ret)
+
+ if len(errors) >= 1:
+ sys.exit(len(errors))
-sys.exit(exit_status)