11import time
22import os
33import re
4- from github import Github
54from datetime import date , datetime
65import subprocess as sp
6+ import traceback
7+
8+ from github import Github
79from azure .storage .blob import BlobClient
10+
811import reply_generator as rg
9- from update_issue_body import update_issue_body , find_readme_link
10- import traceback
12+ from update_issue_body import update_issue_body , find_readme_and_output_folder
13+ from auto_close import auto_close_issue
14+ from get_python_pipeline import get_python_pipelines , get_pipeline_url
15+
1116
1217_NULL = ' '
1318_FILE_OUT = 'release_issue_status.csv'
@@ -121,32 +126,41 @@ def _latest_comment_time(comments, delay_from_create_date):
121126 return delay_from_create_date if not q else int ((time .time () - q [- 1 ][0 ]) / 3600 / 24 )
122127
123128
124- def auto_reply (item , sdk_repo , rest_repo , duplicated_issue ):
129+ def auto_reply (item , request_repo , rest_repo , sdk_repo , duplicated_issue , python_piplines ):
125130 print ("==========new issue number: {}" .format (item .issue_object .number ))
131+ if 'Configured' in item .labels :
132+ item .labels .remove ('Configured' )
133+
126134 if 'auto-link' not in item .labels :
135+ item .labels .append ('auto-link' )
136+ item .issue_object .set_labels (* item .labels )
127137 try :
128- package_name , readme_link = update_issue_body (sdk_repo , rest_repo , item .issue_object .number )
138+ package_name , readme_link , output_folder = update_issue_body (request_repo , rest_repo , item .issue_object .number )
129139 print ("pkname, readme" , package_name , readme_link )
130140 item .package = package_name
131141 key = ('Python' , item .package )
132142 duplicated_issue [key ] = duplicated_issue .get (key , 0 ) + 1
133143 except Exception as e :
134144 item .bot_advice = 'failed to modify the body of the new issue. Please modify manually'
135145 item .labels .append ('attention' )
146+ item .issue_object .set_labels (* item .labels )
136147 print (e )
137148 raise
138- item .labels .append ('auto-link' )
139- item .issue_object .set_labels (* item .labels )
140149 else :
141150 try :
142- readme_link = find_readme_link ( sdk_repo , item .issue_object .number )
151+ readme_link , output_folder = find_readme_and_output_folder ( request_repo , rest_repo , item .issue_object .number )
143152 except Exception as e :
144153 print ('Issue: {} updates body failed' .format (item .issue_object .number ))
145154 item .bot_advice = 'failed to find Readme link, Please check !!'
146155 item .labels .append ('attention' )
156+ item .issue_object .set_labels (* item .labels )
147157 raise
148158 try :
149- reply = rg .begin_reply_generate (item = item , rest_repo = rest_repo , readme_link = readme_link )
159+ print ("*********************" )
160+ print (python_piplines )
161+ pipeline_url = get_pipeline_url (python_piplines , output_folder )
162+ rg .begin_reply_generate (item = item , rest_repo = rest_repo , readme_link = readme_link ,
163+ sdk_repo = sdk_repo , pipeline_url = pipeline_url )
150164 except Exception as e :
151165 item .bot_advice = 'auto reply failed, Please intervene manually !!'
152166 print ('Error from auto reply ========================' )
@@ -158,14 +172,18 @@ def auto_reply(item, sdk_repo, rest_repo, duplicated_issue):
158172def main ():
159173 # get latest issue status
160174 g = Github (os .getenv ('TOKEN' )) # please fill user_token
161- sdk_repo = g .get_repo ('Azure/sdk-release-request' )
162- rest_repo = g .get_repo ('Azure/azure-rest-api-specs' )
163- label1 = sdk_repo .get_label ('ManagementPlane' )
164- open_issues = sdk_repo .get_issues (state = 'open' , labels = [label1 ])
175+ request_repo = g .get_repo ('Azure/sdk-release-request' )
176+ rest_repo = g .get_repo ('Azure/azure-rest-api-specs' )
177+ sdk_repo = g .get_repo ('Azure/azure-sdk-for-python' )
178+ label1 = request_repo .get_label ('ManagementPlane' )
179+ open_issues = request_repo .get_issues (state = 'open' , labels = [label1 ])
165180 issue_status = []
166181 issue_status_python = []
167182 duplicated_issue = dict ()
168183 start_time = time .time ()
184+ # get pipeline definitionid
185+ python_piplines = get_python_pipelines ()
186+
169187 for item in open_issues :
170188 if not item .number :
171189 continue
@@ -204,16 +222,22 @@ def main():
204222 for item in issue_status :
205223 if item .status == 'release' :
206224 item .bot_advice = 'better to release asap.'
207- elif item .comment_num == 0 and 'Python' in item .labels :
225+ elif ( item .comment_num == 0 or 'Configured' in item . labels ) and 'Python' in item .labels :
208226 item .bot_advice = 'new issue and better to confirm quickly.'
209227 try :
210- auto_reply (item , sdk_repo , rest_repo , duplicated_issue )
228+ auto_reply (item , request_repo , rest_repo , sdk_repo , duplicated_issue , python_piplines )
211229 except Exception as e :
212230 continue
213231 elif not item .author_latest_comment in _PYTHON_SDK_ADMINISTRATORS :
214232 item .bot_advice = 'new comment for author.'
215233 elif item .delay_from_latest_update >= 7 :
216234 item .bot_advice = 'delay for a long time and better to handle now.'
235+ if item .comment_num > 1 and item .language == 'Python' :
236+ try :
237+ auto_close_issue (request_repo , item )
238+ except Exception as e :
239+ item .bot_advice = 'auto-close failed, please check!'
240+ print (f"=====issue: { item .issue_object .number } , { e } " )
217241
218242 if item .days_from_latest_commit >= 30 and item .language == 'Python' and '30days attention' not in item .labels :
219243 item .labels .append ('30days attention' )
@@ -243,10 +267,10 @@ def main():
243267 print_check ('git push -f origin HEAD' )
244268
245269 # upload to storage account(it is created in advance)
246- blob = BlobClient .from_connection_string (conn_str = os .getenv ('CONN_STR' ), container_name = os .getenv ('FILE' ),
247- blob_name = _FILE_OUT )
248- with open (_FILE_OUT , 'rb' ) as data :
249- blob .upload_blob (data , overwrite = True )
270+ # blob = BlobClient.from_connection_string(conn_str=os.getenv('CONN_STR'), container_name=os.getenv('FILE'),
271+ # blob_name=_FILE_OUT)
272+ # with open(_FILE_OUT, 'rb') as data:
273+ # blob.upload_blob(data, overwrite=True)
250274
251275
252276if __name__ == '__main__' :
0 commit comments