88import logging
99
1010import argparse
11+
12+ import botocore
1113from flask import Flask , request
1214import daemonize
1315import json
3739app = Flask (__name__ )
3840app .use_reloader = False
3941
42+
4043class PerfDaemon :
4144 def __init__ (self , user = None , group = None ):
4245 self .user = user
@@ -46,7 +49,8 @@ def __init__(self, user=None, group=None):
4649 self .create_app_endpoints (app )
4750
4851 def main (self ):
49- app .run (host = '0.0.0.0' , debug = False , port = 5000 )
52+ self .set_app_loggers (app )
53+ app .run (host = "0.0.0.0" , debug = False , port = 5000 )
5054
5155 def set_app_loggers (self , app ):
5256 print ("Writting log to {}" .format (LOGNAME ))
@@ -57,22 +61,33 @@ def set_app_loggers(self, app):
5761 app .logger .addHandler (handler )
5862 self .perf .set_logger (app .logger )
5963
60- def update_ec2_vars_from_request (self , request ):
64+ def update_ec2_vars_from_request (self , request , app ):
6165 aws_access_key_id = None
6266 aws_secret_access_key = None
6367 aws_session_token = None
6468 region_name = "us-east-2"
6569 if request .is_json :
6670 data = request .get_json ()
6771 if "aws_access_key_id" in data :
72+ app .logger .info ("detected aws_access_key_id in request" )
6873 aws_access_key_id = data ["aws_access_key_id" ]
6974 if "aws_secret_access_key" in data :
75+ app .logger .info ("detected aws_secret_access_key in request" )
7076 aws_secret_access_key = data ["aws_secret_access_key" ]
7177 if "aws_session_token" in data :
78+ app .logger .info ("detected aws_session_token in request" )
7279 aws_session_token = data ["aws_session_token" ]
7380 if "region_name" in data :
81+ app .logger .info ("detected region_name in request" )
7482 region_name = data ["region_name" ]
7583
84+ if aws_access_key_id is not None :
85+ app .logger .info ("aws_access_key_id is properly set" )
86+ if aws_secret_access_key is not None :
87+ app .logger .info ("aws_secret_access_key is properly set" )
88+ if aws_session_token is not None :
89+ app .logger .info ("aws_session_token is properly set" )
90+
7691 return aws_access_key_id , aws_secret_access_key , aws_session_token , region_name
7792
7893 def update_vars_from_request (self , request , app ):
@@ -187,7 +202,7 @@ def profile_stop(profiler_name, pid):
187202 aws_secret_access_key ,
188203 aws_session_token ,
189204 region_name ,
190- ) = self .update_ec2_vars_from_request (request )
205+ ) = self .update_ec2_vars_from_request (request , app )
191206 if profile_res is True :
192207 # Generate:
193208 # - artifact with Flame Graph SVG
@@ -220,36 +235,43 @@ def profile_stop(profiler_name, pid):
220235 self .github_repo_name ,
221236 "profiles" ,
222237 )
223- for (
224- artifact_name ,
225- profile_artifact ,
226- ) in profile_res_artifacts_map .items ():
227- s3_link = None
228- upload_results_s3 = True
229- if upload_results_s3 :
230- logging .info (
231- "Uploading results to s3. s3 bucket name: {}. s3 bucket path: {}" .format (
232- S3_BUCKET_NAME , s3_bucket_path
238+ try :
239+ for (
240+ artifact_name ,
241+ profile_artifact ,
242+ ) in profile_res_artifacts_map .items ():
243+ s3_link = None
244+ upload_results_s3 = True
245+ if upload_results_s3 :
246+ app .logger .info (
247+ "Uploading results to s3. s3 bucket name: {}. s3 bucket path: {}" .format (
248+ S3_BUCKET_NAME , s3_bucket_path
249+ )
233250 )
251+ url_map = upload_artifacts_to_s3 (
252+ [profile_artifact ],
253+ S3_BUCKET_NAME ,
254+ s3_bucket_path ,
255+ aws_access_key_id ,
256+ aws_secret_access_key ,
257+ aws_session_token ,
258+ region_name ,
259+ )
260+ s3_link = list (url_map .values ())[0 ]
261+ profilers_artifacts_matrix .append (
262+ {
263+ "test_name" : self .test_name ,
264+ "profiler_name" : profiler_name ,
265+ "artifact_name" : artifact_name ,
266+ "s3_link" : s3_link ,
267+ }
234268 )
235- url_map = upload_artifacts_to_s3 (
236- [profile_artifact ],
237- S3_BUCKET_NAME ,
238- s3_bucket_path ,
239- aws_access_key_id ,
240- aws_secret_access_key ,
241- aws_session_token ,
242- region_name ,
243- )
244- s3_link = list (url_map .values ())[0 ]
245- profilers_artifacts_matrix .append (
246- {
247- "test_name" : self .test_name ,
248- "profiler_name" : profiler_name ,
249- "artifact_name" : artifact_name ,
250- "s3_link" : s3_link ,
251- }
269+ except botocore .exceptions .NoCredentialsError :
270+ profile_res = False
271+ summary_msg = (
272+ "Unable to push profile artifacts to s3. Missing credentials."
252273 )
274+ app .logger .error (summary_msg )
253275
254276 status_dict = {
255277 "result" : profile_res ,
0 commit comments