Skip to content

Commit 206c2a4

Browse files
committed
fix kms_setup
1 parent 5ae7bf8 commit 206c2a4

File tree

4 files changed

+108
-74
lines changed

4 files changed

+108
-74
lines changed

.evergreen/scripts/kms_tester.py

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
from __future__ import annotations
2+
3+
import os
4+
5+
from utils import DRIVERS_TOOLS, LOGGER, ROOT, read_env, run_command, write_env
6+
7+
TMP_DRIVER_FILE = "/tmp/mongo-python-driver.tgz" # noqa: S108
8+
CSFLE_FOLDER = f"{DRIVERS_TOOLS}/.evergreen/csfle"
9+
10+
11+
def setup_azure_vm() -> None:
12+
LOGGER.info("Setting up Azure VM...")
13+
cmd = f"""AZUREKMS_SRC="{TMP_DRIVER_FILE}" AZUREKMS_DST="~/" \
14+
{CSFLE_FOLDER}/azurekms/copy-file.sh"""
15+
run_command(cmd)
16+
cmd = """AZUREKMS_CMD="tar xf mongo-python-driver.tgz" \
17+
{CSFLE_FOLDER}/azurekms/run-command.sh"""
18+
run_command(cmd)
19+
cmd = f"""AZUREKMS_CMD="bash .evergreen/just.sh setup-test kms azure-remote" \
20+
{CSFLE_FOLDER}/azurekms/run-command.sh"""
21+
run_command(cmd)
22+
LOGGER.info("Setting up Azure VM... done.")
23+
24+
25+
def setup_gcp_vm() -> None:
26+
LOGGER.info("Setting up GCP VM...")
27+
cmd = f"GCPKMS_SRC={TMP_DRIVER_FILE} GCPKMS_DST=$GCPKMS_INSTANCENAME: {CSFLE_FOLDER}/gcpkms/copy-file.sh"
28+
run_command(cmd)
29+
cmd = f'GCPKMS_CMD="tar xf mongo-python-driver.tgz" {CSFLE_FOLDER}/gcpkms/run-command.sh'
30+
run_command(cmd)
31+
cmd = f'GCPKMS_CMD="bash ./.evergreen/just.sh setup-test kms gcp-remote" {CSFLE_FOLDER}/gcpkms/run-command.sh'
32+
run_command(cmd)
33+
LOGGER.info("Setting up GCP VM...")
34+
35+
36+
def create_archive():
37+
run_command("git add .", cwd=ROOT)
38+
run_command('git commit -m "add files"', check=False, cwd=ROOT)
39+
run_command(f"git archive -o {TMP_DRIVER_FILE} HEAD", cwd=ROOT)
40+
41+
42+
def setup_kms(sub_test_name: str) -> None:
43+
if "-" in sub_test_name:
44+
sub_test_target, sub_test_type = sub_test_name.split("-")[0]
45+
else:
46+
sub_test_target = sub_test_name
47+
sub_test_type = ""
48+
49+
assert sub_test_target in ["azure", "kms"]
50+
assert sub_test_type in ["", "remote", "fail"]
51+
success = sub_test_type != "fail"
52+
53+
if sub_test_target == "azure":
54+
write_env("TEST_FLE_AZURE_AUTO")
55+
else:
56+
write_env("TEST_FLE_GCP_AUTO")
57+
58+
write_env("SUCCESS", success)
59+
60+
# For remote tests, there is no further work required.
61+
if sub_test_type == "remote":
62+
return
63+
64+
if sub_test_target == "azure":
65+
os.environ["AZUREKMS_VMNAME_PREFIX"] = "PYTHON_DRIVER"
66+
67+
run_command(f"{CSFLE_FOLDER}/{sub_test_target}kms/setup-secrets.sh")
68+
config = read_env(f"{CSFLE_FOLDER}/{sub_test_target}kms/secrets-export.sh")
69+
if success:
70+
run_command(f"{CSFLE_FOLDER}/{sub_test_target}kms/setup.sh")
71+
create_archive()
72+
73+
if sub_test_target == "azure":
74+
setup_azure_vm(config)
75+
else:
76+
setup_gcp_vm(config)
77+
78+
if sub_test_target == "azure":
79+
write_env("KEY_NAME", config["AZUREKMS_KEYNAME"])
80+
write_env("KEY_VAULT_ENDPOINT", config["AZUREKMS_KEYVAULTENDPOINT"])
81+
82+
83+
def test_kms_vm(sub_test_name: str) -> None:
84+
if sub_test_name == "azure":
85+
key_name = os.environ["KEY_NAME"]
86+
key_vault_endpoint = os.environ["KEY_VAULT_ENDPOINT"]
87+
cmd = (
88+
f'AZUREKMS_CMD="KEY_NAME="{key_name}" KEY_VAULT_ENDPOINT="{key_vault_endpoint}" bash ./.evergreen/just.sh test-eg"'
89+
f"{CSFLE_FOLDER}/azurekms/run-command.sh"
90+
)
91+
else:
92+
cmd = f'GCPKMS_CMD="./.evergreen/just.sh test-eg" {CSFLE_FOLDER}/gcpkms/run-command.sh'
93+
run_command(cmd)
94+
95+
96+
if __name__ == "__main__":
97+
setup_kms()

.evergreen/scripts/run_tests.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
TEST_PERF = os.environ.get("TEST_PERF")
1717
GREEN_FRAMEWORK = os.environ.get("GREEN_FRAMEWORK")
1818
TEST_ARGS = os.environ.get("TEST_ARGS", "").split()
19+
TEST_NAME = os.environ.get("TEST_NAME")
20+
SUB_TEST_NAME = os.environ.get("SUB_TEST_NAME")
1921

2022

2123
def handle_perf(start_time: datetime):
@@ -97,7 +99,14 @@ def run() -> None:
9799
if TEST_PERF:
98100
start_time = datetime.now()
99101

100-
# Run the tests.
102+
# Run remote kms tests.
103+
if TEST_NAME == "kms" and SUB_TEST_NAME in ["azure", "gcp"]:
104+
from kms_tester import test_kms_vm
105+
106+
test_kms_vm(SUB_TEST_NAME)
107+
return
108+
109+
# Run local tests.
101110
pytest.main(TEST_ARGS)
102111

103112
# Handle perf test post actions.

.evergreen/scripts/setup_kms.py

Lines changed: 0 additions & 72 deletions
This file was deleted.

.evergreen/scripts/setup_tests.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -353,7 +353,7 @@ def handle_test_env() -> None:
353353
write_env("LD_LIBRARY_PATH", f"{CRYPT_SHARED_DIR}:${{LD_LIBRARY_PATH:-}}")
354354

355355
if test_name == "kms":
356-
from setup_kms import setup_kms
356+
from kms_tester import setup_kms
357357

358358
setup_kms(sub_test_name)
359359

0 commit comments

Comments
 (0)