outerbounds 0.3.89__py3-none-any.whl → 0.3.91__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- outerbounds/command_groups/perimeters_cli.py +56 -2
- {outerbounds-0.3.89.dist-info → outerbounds-0.3.91.dist-info}/METADATA +4 -4
- {outerbounds-0.3.89.dist-info → outerbounds-0.3.91.dist-info}/RECORD +5 -5
- {outerbounds-0.3.89.dist-info → outerbounds-0.3.91.dist-info}/WHEEL +0 -0
- {outerbounds-0.3.89.dist-info → outerbounds-0.3.91.dist-info}/entry_points.txt +0 -0
@@ -1,10 +1,12 @@
|
|
1
1
|
import json
|
2
2
|
import os
|
3
3
|
import sys
|
4
|
+
from io import StringIO
|
4
5
|
from os import path
|
5
6
|
from typing import Any, Dict
|
6
7
|
from outerbounds._vendor import click
|
7
8
|
import requests
|
9
|
+
import configparser
|
8
10
|
|
9
11
|
from ..utils import metaflowconfig
|
10
12
|
from ..utils.utils import safe_write_to_disk
|
@@ -440,6 +442,9 @@ def ensure_cloud_credentials_for_shell(config_dir, profile):
|
|
440
442
|
if "METAFLOW_DEFAULT_GCP_CLIENT_PROVIDER" in mf_config:
|
441
443
|
# This is a GCP deployment.
|
442
444
|
ensure_gcp_cloud_creds(config_dir, profile)
|
445
|
+
elif "METAFLOW_DEFAULT_AWS_CLIENT_PROVIDER" in mf_config:
|
446
|
+
# This is an AWS deployment.
|
447
|
+
ensure_aws_cloud_creds(config_dir, profile)
|
443
448
|
|
444
449
|
|
445
450
|
def confirm_user_has_access_to_perimeter_or_fail(
|
@@ -473,8 +478,13 @@ def ensure_gcp_cloud_creds(config_dir, profile):
|
|
473
478
|
)
|
474
479
|
metaflow_token = metaflowconfig.get_metaflow_token_from_config(config_dir, profile)
|
475
480
|
|
476
|
-
|
477
|
-
|
481
|
+
try:
|
482
|
+
# GOOGLE_APPLICATION_CREDENTIALS is a well known gcloud environment variable
|
483
|
+
credentials_file_loc = os.environ["GOOGLE_APPLICATION_CREDENTIALS"]
|
484
|
+
except KeyError:
|
485
|
+
# This is most likely an old workstation when these params weren't set. Do nothing.
|
486
|
+
# Alternatively, user might have deliberately unset it to use their own auth.
|
487
|
+
return
|
478
488
|
|
479
489
|
credentials_json = {
|
480
490
|
"type": "external_account",
|
@@ -492,6 +502,50 @@ def ensure_gcp_cloud_creds(config_dir, profile):
|
|
492
502
|
safe_write_to_disk(credentials_file_loc, json.dumps(credentials_json))
|
493
503
|
|
494
504
|
|
505
|
+
def ensure_aws_cloud_creds(config_dir, profile):
|
506
|
+
token_info = get_aws_auth_credentials(config_dir, profile)
|
507
|
+
|
508
|
+
try:
|
509
|
+
token_file_loc = os.environ["OBP_AWS_WEB_IDENTITY_TOKEN_FILE"]
|
510
|
+
|
511
|
+
# AWS_CONFIG_FILE is a well known aws cli environment variable
|
512
|
+
config_file_loc = os.environ["AWS_CONFIG_FILE"]
|
513
|
+
except KeyError:
|
514
|
+
# This is most likely an old workstation when these params weren't set. Do nothing.
|
515
|
+
# Alternatively, user might have deliberately unset it to use their own auth.
|
516
|
+
return
|
517
|
+
|
518
|
+
aws_config = configparser.ConfigParser()
|
519
|
+
aws_config.read(config_file_loc)
|
520
|
+
|
521
|
+
profile_name = "profile outerbounds"
|
522
|
+
if profile_name not in aws_config:
|
523
|
+
aws_config[profile_name] = {}
|
524
|
+
|
525
|
+
aws_config[profile_name]["role_arn"] = token_info["role_arn"]
|
526
|
+
aws_config[profile_name]["web_identity_token_file"] = token_file_loc
|
527
|
+
|
528
|
+
aws_config_string = StringIO()
|
529
|
+
aws_config.write(aws_config_string)
|
530
|
+
|
531
|
+
safe_write_to_disk(token_file_loc, token_info["token"])
|
532
|
+
safe_write_to_disk(config_file_loc, aws_config_string.getvalue())
|
533
|
+
|
534
|
+
|
535
|
+
def get_aws_auth_credentials(config_dir, profile): # pragma: no cover
|
536
|
+
token = metaflowconfig.get_metaflow_token_from_config(config_dir, profile)
|
537
|
+
auth_server_url = metaflowconfig.get_sanitized_url_from_config(
|
538
|
+
config_dir, profile, "OBP_AUTH_SERVER"
|
539
|
+
)
|
540
|
+
|
541
|
+
response = requests.get(
|
542
|
+
"{}/generate/aws".format(auth_server_url), headers={"x-api-key": token}
|
543
|
+
)
|
544
|
+
response.raise_for_status()
|
545
|
+
|
546
|
+
return response.json()
|
547
|
+
|
548
|
+
|
495
549
|
def get_gcp_auth_credentials(config_dir, profile):
|
496
550
|
token = metaflowconfig.get_metaflow_token_from_config(config_dir, profile)
|
497
551
|
auth_server_url = metaflowconfig.get_sanitized_url_from_config(
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: outerbounds
|
3
|
-
Version: 0.3.
|
3
|
+
Version: 0.3.91
|
4
4
|
Summary: More Data Science, Less Administration
|
5
5
|
License: Proprietary
|
6
6
|
Keywords: data science,machine learning,MLOps
|
@@ -24,9 +24,9 @@ Requires-Dist: google-api-core (>=2.16.1,<3.0.0) ; extra == "gcp"
|
|
24
24
|
Requires-Dist: google-auth (>=2.27.0,<3.0.0) ; extra == "gcp"
|
25
25
|
Requires-Dist: google-cloud-secret-manager (>=2.20.0,<3.0.0) ; extra == "gcp"
|
26
26
|
Requires-Dist: google-cloud-storage (>=2.14.0,<3.0.0) ; extra == "gcp"
|
27
|
-
Requires-Dist: ob-metaflow (==2.12.
|
28
|
-
Requires-Dist: ob-metaflow-extensions (==1.1.
|
29
|
-
Requires-Dist: ob-metaflow-stubs (==5.
|
27
|
+
Requires-Dist: ob-metaflow (==2.12.15.1)
|
28
|
+
Requires-Dist: ob-metaflow-extensions (==1.1.80)
|
29
|
+
Requires-Dist: ob-metaflow-stubs (==5.3)
|
30
30
|
Requires-Dist: opentelemetry-distro (==0.41b0)
|
31
31
|
Requires-Dist: opentelemetry-exporter-otlp-proto-http (==1.20.0)
|
32
32
|
Requires-Dist: opentelemetry-instrumentation-requests (==0.41b0)
|
@@ -43,7 +43,7 @@ outerbounds/cli_main.py,sha256=e9UMnPysmc7gbrimq2I4KfltggyU7pw59Cn9aEguVcU,74
|
|
43
43
|
outerbounds/command_groups/__init__.py,sha256=QPWtj5wDRTINDxVUL7XPqG3HoxHNvYOg08EnuSZB2Hc,21
|
44
44
|
outerbounds/command_groups/cli.py,sha256=sorDdQvmTPqIwfvgtuNLILelimXu5CknFnWQFsYFGHs,286
|
45
45
|
outerbounds/command_groups/local_setup_cli.py,sha256=tuuqJRXQ_guEwOuQSIf9wkUU0yg8yAs31myGViAK15s,36364
|
46
|
-
outerbounds/command_groups/perimeters_cli.py,sha256=
|
46
|
+
outerbounds/command_groups/perimeters_cli.py,sha256=mrJfFIRYFOjuiz-9h4OKg2JT8Utmbs72z6wvPzDss3s,18685
|
47
47
|
outerbounds/command_groups/workstations_cli.py,sha256=V5Jbj1cVb4IRllI7fOgNgL6OekRpuFDv6CEhDb4xC6w,22016
|
48
48
|
outerbounds/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
49
49
|
outerbounds/utils/kubeconfig.py,sha256=yvcyRXGR4AhQuqUDqmbGxEOHw5ixMFV0AZIDg1LI_Qo,7981
|
@@ -51,7 +51,7 @@ outerbounds/utils/metaflowconfig.py,sha256=l2vJbgPkLISU-XPGZFaC8ZKmYFyJemlD6bwB-
|
|
51
51
|
outerbounds/utils/schema.py,sha256=cNlgjmteLPbDzSEUSQDsq8txdhMGyezSmM83jU3aa0w,2329
|
52
52
|
outerbounds/utils/utils.py,sha256=4Z8cszNob_8kDYCLNTrP-wWads_S_MdL3Uj3ju4mEsk,501
|
53
53
|
outerbounds/vendor.py,sha256=gRLRJNXtZBeUpPEog0LOeIsl6GosaFFbCxUvR4bW6IQ,5093
|
54
|
-
outerbounds-0.3.
|
55
|
-
outerbounds-0.3.
|
56
|
-
outerbounds-0.3.
|
57
|
-
outerbounds-0.3.
|
54
|
+
outerbounds-0.3.91.dist-info/entry_points.txt,sha256=7ye0281PKlvqxu15rjw60zKg2pMsXI49_A8BmGqIqBw,47
|
55
|
+
outerbounds-0.3.91.dist-info/WHEEL,sha256=vVCvjcmxuUltf8cYhJ0sJMRDLr1XsPuxEId8YDzbyCY,88
|
56
|
+
outerbounds-0.3.91.dist-info/METADATA,sha256=kOks4_LR2Mtdl50EIljhUYOeZpaqjNuRDcPmUzumuhQ,1632
|
57
|
+
outerbounds-0.3.91.dist-info/RECORD,,
|
File without changes
|
File without changes
|