From 7103816a8c3e30d586d8e9f92bde4678fbdcc789 Mon Sep 17 00:00:00 2001 From: Manas Date: Jun 19 2019 17:25:20 +0000 Subject: changed as per the divide as per functionality policy --- diff --git a/pgure/fesco.py b/pgure/fesco.py new file mode 100644 index 0000000..809c145 --- /dev/null +++ b/pgure/fesco.py @@ -0,0 +1,101 @@ +import os +import requests +import json +import keyring +import configparser +import editor +from tga import epics as tgaepic +from tga import issues as tgaissue +from tga import userstory as tgauserstory +from pgure import issues as pgaissues + +""" +if config['TAIGA']['TEST'] == 'yes': + taiga_url = config['TAIGA']['CUSTOM_TAIGA_URL'] +elif config['TAIGA']['TEST'] == 'no': + taiga_url = config['TAIGA']['DEFAULT_TAIGA_URL'] +else: + print("please set test status in config") +""" + + +def fesissue(args, configpath): + config = configparser.ConfigParser() + config.read(configpath) + service_id = config['TAIGA']['SERVICE_ID'] # service id + service_token = config['TAIGA']['SERVICE_TOKEN'] + project_id = config['TAIGA']['PROJECT_ID'] + for x in args: # iteratingover name space object + try: + r = tgaissue.get_issue(x, config) # x is user story refrence id + if r.status_code == 200: + data = json.loads(r.content) + print(data, "this is user story data") + details = data['description'] + subject = data['subject'] + taiga_issue_id = data['id'] + taiga_isssue_ref = data['ref'] + taiga_issue_version = data['version'] + #fedora_version = data['epics'] + owner = data['owner_extra_info']['username'] + try: + r = tgaissue.caget_issue(taiga_issue_id, config) + if r.status_code == 200: + data = json.loads(r.content) + summary = data['attributes_values']['11372'] + bugzilla_id = data['attributes_values']['11373'] + approval_required = data['attributes_values']['11374'] + owners = data['attributes_values']['11375'] + contingency_deadline = data['attributes_values']['11376'] + mass_rebuild = data['attributes_values']['11377'] + policy_change = data['attributes_values']['11378'] + modifies_deliverables = data['attributes_values']['11379'] + system_wide_change = data['attributes_values']['11370'] + relengticket = data['attributes_values']['11371'] + fedora_version = data['attributes_values']['11383'] + print("this step") + try: + taiga_issue_link = str(config['TAIGA']['TAIGA_SITE_ISSUE_URL']) + str(taiga_isssue_ref) + maillist_link = "random" + maillist_dsc_list = "random" + owner = "@" + str(owner) + with open("pagure_issue.txt", "w+") as p_txt: + p_txt.write("{}\n\n*{}\n*{}\n*{}\n*{}\n".format(summary, taiga_issue_link, maillist_link, maillist_dsc_list, owner)) + editor.edit(filename="pagure_issue.txt") + try: + with open("pagure_issue.txt", "r") as pg_txt: + issue_text = pg_txt.read() + if system_wide_change == True: + syschange = "System-Wide Change" + elif system_wide_change == False: + syschange = "Self-Contained Change" + title = str(fedora_version) + ' ' + str(syschange) + ':' + str(subject) + print(issue_text) + payload = { + 'title': title, + 'issue_content': issue_text + } + print(title,payload) + r = pgaissues.post_issue(payload, config) + print(r) + if r.status_code == 200: + payload = { + 'status': config['TAIGA']['IS_STATUS_READY_FOR_FESCO'], + 'version': taiga_issue_version + } + r = chagnestatus_issue(taiga_issue_id, payload, config) + print("Succesfully posted issue") + else: + print("Check logs for errors",json.loads(r.content)) + except requests.exceptions.RequestException as e: + print(e) + except Exception as e: + print(e) + else: + print("Unable to post to fesco") + except requests.exceptions.RequestException as e: + print(e) + else: + print("Unable to fetch details from taiga for issue creation") + except requests.exceptions.RequestException as e: + print(e) diff --git a/tga/convert.py b/tga/convert.py new file mode 100644 index 0000000..4baf8be --- /dev/null +++ b/tga/convert.py @@ -0,0 +1,190 @@ +import os +import requests +import json +import keyring +import configparser +from tga import epics as tgaepic +from tga import issues as tgaissue +from tga import userstory as tgauserstory + +""" +config = configparser.ConfigParser() +config.read('config.ini') +#config.read('%s' % (configpath)) +#config.read(['userconfig.ini', os.path.expanduser('~/.')]) + +service_id = config['TAIGA']['SERVICE_ID'] # service id +service_token = config['TAIGA']['SERVICE_TOKEN'] +project_id = config['TAIGA']['PROJECT_ID'] +taiga_url = config['TAIGA']['CUSTOM_TAIGA_URL'] +""" +""" +if config['TAIGA']['TEST'] == 'yes': + taiga_url = config['TAIGA']['CUSTOM_TAIGA_URL'] +elif config['TAIGA']['TEST'] == 'no': + taiga_url = config['TAIGA']['DEFAULT_TAIGA_URL'] +else: + print("please set test status in config") +""" + + +def convert(value, configpath): + config = configparser.ConfigParser() + config.read(configpath) + service_id = config['TAIGA']['SERVICE_ID'] # service id + service_token = config['TAIGA']['SERVICE_TOKEN'] + project_id = config['TAIGA']['PROJECT_ID'] + taiga_url = config['TAIGA']['TAIGA_URL'] + for x in value: + try: + r = tgaissue.get_issue(x, config) # gets the issue + if r.status_code == 200: + data = json.loads(r.content) + print(data, "this is issue data") + details = data['description'] + subject = data['subject'] + issue_id = data['id'] + issue_version = data['version'] # fetch the id as well + #print(issue_id) + print("Step 1") + """ + try: + Because issue id is required to get custom attributes + issues cannot be fetched via refrance id so fetching + the issue by refrence first and then using the id + returned in json to fetch the custom-attributes via + issue id. + Since only refrence is taken via command line + and issue id is difficult to find in taiga + # print(headers) # Debug only + # id_url = str(taiga_url) + "/api/v1/issues/custom-attributes-values" + "/{" + id + "}" + # print(id_url) # debug only + issue_customattr = requests.get( + id_url, + headers=headers, + ) + """ + try: + r = tgaissue.caget_issue(issue_id, config) + if r.status_code == 200: + data = json.loads(r.content) + print(data, "step 2") + #system_wide_change = data['attributes_values']['1'] + # rel-eng-ticket = data['attributes_values']['7'] # bug in taiga thus the later no + summary = data['attributes_values']['11372'] + bugzilla_id = data['attributes_values']['11373'] + approval_required = data['attributes_values']['11374'] + owners = data['attributes_values']['11375'] + contingency_deadline = data['attributes_values']['11376'] + mass_rebuild = data['attributes_values']['11377'] + policy_change = data['attributes_values']['11378'] + modifies_deliverables = data['attributes_values']['11379'] + system_wide_change = data['attributes_values']['11370'] + relengticket = data['attributes_values']['11371'] + fedora_version = data['attributes_values']['11383'] + print(fedora_version) + #print("summary", summary) + #print(bugzilla_id) + print("Fetched Custom Attributes") + """ + Taiga api returns no's instead of the actual names/description + The below no's stand for changes tracker fesco,change-wrangler + 1 = System-wide change + 2 = Summary + 3 = Bugzilla id + 4 = Missing + 5 = Trademark approval required + 6 = Owners + 7 = Rel-eng ticket/Rel-end impact ticket + 11 = Contingencry deadline + 12 = Mass rebuild required + 13 = Policy change required + 14 = Modifies deliverables + """ + try: + payload = { + 'project': project_id, + 'description': details, + 'subject': subject + } + #print(payload) + r = tgauserstory.post_us(payload, config) + #print(json.loads(r.content)) + data = json.loads(r.content) + #print(r.status_code) + if r.status_code == 201: + print("step 3") + data = json.loads(r.content) + us_id = data['id'] + print(id) + payload = { + "attributes_values": { + config['TAIGA']['US_CA_SYSTEM_WIDE_CHANGE']: system_wide_change, + config['TAIGA']['US_CA_SUMMARY']: summary, + config['TAIGA']['US_CA_RELENG_TICKET']: relengticket, + config['TAIGA']['US_CA_TRADEMARK_APPROVAL']: approval_required, + #config['TAIGA']['US_CA_OWNERS']: owners, + config['TAIGA']['US_CA_FESCO_TICKET']: 'random', + config['TAIGA']['US_CA_BUGZILLA_TRACKER']: 'random', + config['TAIGA']['US_CA_BUGZILLA_CONTACT']: bugzilla_id, + config['TAIGA']['US_CA_RELEASE_NOTES']: 'random', + config['TAIGA']['US_CA_CONTINGENCY']: contingency_deadline, + config['TAIGA']['US_CA_MASS_REBUILD']: mass_rebuild, + config['TAIGA']['US_CA_POLICY_CHANGE']: policy_change, + config['TAIGA']['US_CA_MODIFIES_DELIVERABLES']: modifies_deliverables + }, + "version": 1 + } + print(payload) + r = tgauserstory.post_usca(payload, us_id, config) + print(json.loads(r.content)) + print(r.status_code) + if r.status_code == 200: + print("Sucessfully converted issue to user story") + try: + r = tgaepic.list_epic(config) + data = json.loads(r.content) + if r.status_code == 200: + for i in data: + if i['subject'] == str(fedora_version): + epicid = i['id'] + epicref = i['ref'] + break + + r = tgaepic.post_relatedus(us_id, epicid, epicref, config) + if r.status_code == 201: + print("Sucessfully mapped epics") + payload = { + 'status': config['TAIGA']['IS_STATUS_PROCESSED'], + 'version': issue_version + } + r = tgaissue.changestatus_issue(issue_id, payload, config) + print(r.status_code) + print(r.content) + #print(json.loads(r.content)) + if r.status_code == 200: + print("Sucessfully closed issue") + else: + print("Unsuccesful at closing issue,check logs") + else: + print("Unnsucessful conversion please check logs") + except requests.exceptions.RequestException as e: + print(e) + else: + print("Unsuccesful Conversion") + else: + print("Unsuccesful conversion") + except requests.exceptions.RequestException as e: + print(e) + else: + print("Unsuccesful Conversion") + except requests.exceptions.RequestException as e: + print("Failed to fetch attributes of the issue") + print(e) + else: + print("Unable to Convert Issue,Check logs and contact the developer", json.loads(r.content)) + except Exception as e: + print(e) + except requests.exceptions.RequestException as e: + print(e) + diff --git a/tga/userstory b/tga/userstory new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/tga/userstory