Skip to content

Commit afc9b8d

Browse files
Fixed perf daemon artifacts generation (#238)
1 parent e851b2a commit afc9b8d

File tree

6 files changed

+78
-10
lines changed

6 files changed

+78
-10
lines changed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "redisbench-admin"
3-
version = "0.5.14"
3+
version = "0.5.15"
44
description = "Redis benchmark run helper. A wrapper around Redis and Redis Modules benchmark tools ( ftsb_redisearch, memtier_benchmark, redis-benchmark, aibench, etc... )."
55
authors = ["filipecosta90 <[email protected]>","Redis Performance Group <[email protected]>"]
66
readme = "README.md"

redisbench_admin/profilers/daemon.py

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,24 @@ def set_app_loggers(self, app):
5454
app.logger.addHandler(handler)
5555
self.perf.set_logger(app.logger)
5656

57+
def update_ec2_vars_from_request(self, request):
58+
aws_access_key_id = None
59+
aws_secret_access_key = None
60+
aws_session_token = None
61+
region_name = "us-east-2"
62+
if request.is_json:
63+
data = request.get_json()
64+
if "aws_access_key_id" in data:
65+
aws_access_key_id = data["aws_access_key_id"]
66+
if "aws_secret_access_key" in data:
67+
aws_secret_access_key = data["aws_secret_access_key"]
68+
if "aws_session_token" in data:
69+
aws_session_token = data["aws_session_token"]
70+
if "region_name" in data:
71+
region_name = data["region_name"]
72+
73+
return aws_access_key_id, aws_secret_access_key, aws_session_token, region_name
74+
5775
def update_vars_from_request(self, request, app):
5876
app.logger.info("Updating vars from request")
5977
self.dso = ""
@@ -158,9 +176,15 @@ def profile_status(profiler_name, pid):
158176
def profile_stop(profiler_name, pid):
159177
profile_res = self.perf.stop_profile()
160178
profilers_artifacts_matrix = []
161-
bucket_location = "us-east-2"
179+
162180
primary_id = 1
163181
total_primaries = 1
182+
(
183+
aws_access_key_id,
184+
aws_secret_access_key,
185+
aws_session_token,
186+
region_name,
187+
) = self.update_ec2_vars_from_request(request)
164188
if profile_res is True:
165189
# Generate:
166190
# - artifact with Flame Graph SVG
@@ -209,7 +233,10 @@ def profile_stop(profiler_name, pid):
209233
[profile_artifact],
210234
S3_BUCKET_NAME,
211235
s3_bucket_path,
212-
bucket_location,
236+
aws_access_key_id,
237+
aws_secret_access_key,
238+
aws_session_token,
239+
region_name,
213240
)
214241
s3_link = list(url_map.values())[0]
215242
profilers_artifacts_matrix.append(

redisbench_admin/profilers/perf_daemon_caller.py

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,11 @@ def __init__(self, remote_endpoint, **kwargs):
3030
self.pid = None
3131
self.test_name = ""
3232
self.setup_name = ""
33+
self.aws_access_key_id = None
34+
self.aws_secret_access_key = None
35+
self.aws_session_token = None
36+
self.region_name = None
37+
3338
if "dso" in kwargs:
3439
self.dso = kwargs.get("dso")
3540
if "test_name" in kwargs:
@@ -46,6 +51,14 @@ def __init__(self, remote_endpoint, **kwargs):
4651
self.github_org_name = kwargs.get("github_org_name")
4752
if "github_sha" in kwargs:
4853
self.github_sha = kwargs.get("github_sha")
54+
if "aws_access_key_id" in kwargs:
55+
self.aws_access_key_id = kwargs["aws_access_key_id"]
56+
if "aws_secret_access_key" in kwargs:
57+
self.aws_secret_access_key = kwargs["aws_secret_access_key"]
58+
if "aws_session_token" in kwargs:
59+
self.aws_session_token = kwargs["aws_session_token"]
60+
if "region_name" in kwargs:
61+
self.region_name = kwargs["region_name"]
4962

5063
def set_logger(self, logger_app):
5164
self.logger = logger_app
@@ -87,8 +100,17 @@ def stop_profile(self, **kwargs):
87100
url = "http://{}/profiler/perf/stop/{}".format(
88101
self.remote_endpoint, self.pid
89102
)
103+
data = {}
104+
if self.aws_access_key_id is not None:
105+
data["aws_access_key_id"] = self.aws_access_key_id
106+
if self.aws_secret_access_key is not None:
107+
data["aws_secret_access_key"] = self.aws_secret_access_key
108+
if self.aws_session_token is not None:
109+
data["aws_session_token"] = self.aws_session_token
110+
if self.region_name is not None:
111+
data["region_name"] = self.region_name
90112

91-
response = requests.post(url)
113+
response = requests.post(url, data=None, json=data)
92114
if response.status_code == 200:
93115
result = True
94116
status_dict = response.json()

redisbench_admin/run_remote/run_remote.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,9 @@
5050
from redisbench_admin.utils.utils import (
5151
EC2_PRIVATE_PEM,
5252
upload_artifacts_to_s3,
53+
EC2_ACCESS_KEY,
54+
EC2_SECRET_KEY,
55+
EC2_REGION,
5356
)
5457

5558

@@ -381,6 +384,9 @@ def run_remote_command_logic(args, project_name, project_version):
381384
github_repo_name=tf_github_repo,
382385
github_org_name=tf_github_org,
383386
github_sha=tf_github_sha,
387+
aws_access_key_id=EC2_ACCESS_KEY,
388+
aws_secret_access_key=EC2_SECRET_KEY,
389+
region_name=EC2_REGION,
384390
)
385391
primary_one_pid = redis_conns[0].info()[
386392
"process_id"

redisbench_admin/utils/redisgraph_benchmark_go.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ def setup_remote_benchmark_agent(
1515
commands = [
1616
"apt install python3-pip -y",
1717
"pip3 install redisbench-admin>=0.5.12",
18-
"perf-daemon start",
18+
"/usr/local/bin/perf-daemon start",
1919
]
2020
execute_remote_commands(
2121
client_public_ip, username, private_key, commands, client_ssh_port

redisbench_admin/utils/utils.py

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,28 @@
2626

2727

2828
def upload_artifacts_to_s3(
29-
artifacts, s3_bucket_name, s3_bucket_path, bucket_location=None
29+
artifacts,
30+
s3_bucket_name,
31+
s3_bucket_path,
32+
aws_access_key_id=None,
33+
aws_secret_access_key=None,
34+
aws_session_token=None,
35+
region_name=None,
3036
):
3137
artifacts_map = {}
38+
if region_name is None:
39+
region_name = EC2_REGION
3240
logging.info("-- uploading results to s3 -- ")
33-
s3 = boto3.resource("s3")
41+
if aws_access_key_id is not None and aws_secret_access_key is not None:
42+
session = boto3.Session(
43+
aws_access_key_id, aws_secret_access_key, aws_session_token, region_name
44+
)
45+
s3 = session.resource("s3")
46+
else:
47+
s3 = boto3.resource("s3")
3448
bucket = s3.Bucket(s3_bucket_name)
3549
progress = tqdm(unit="files", total=len(artifacts))
36-
if bucket_location is None:
37-
bucket_location = EC2_REGION
50+
3851
for full_artifact_path in artifacts:
3952
artifact = os.path.basename(full_artifact_path)
4053
object_key = "{bucket_path}{filename}".format(
@@ -46,7 +59,7 @@ def upload_artifacts_to_s3(
4659
object_acl.put(ACL="public-read")
4760
progress.update()
4861
url = "https://s3.{0}.amazonaws.com/{1}/{2}{3}".format(
49-
bucket_location, s3_bucket_name, s3_bucket_path, quote_plus(artifact)
62+
region_name, s3_bucket_name, s3_bucket_path, quote_plus(artifact)
5063
)
5164
artifacts_map[artifact] = url
5265
progress.close()

0 commit comments

Comments
 (0)