outerbounds 0.3.182rc1__py3-none-any.whl → 0.3.182rc2__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/apps/app_cli.py +23 -3
- outerbounds/apps/capsule.py +11 -1
- {outerbounds-0.3.182rc1.dist-info → outerbounds-0.3.182rc2.dist-info}/METADATA +3 -3
- {outerbounds-0.3.182rc1.dist-info → outerbounds-0.3.182rc2.dist-info}/RECORD +6 -6
- {outerbounds-0.3.182rc1.dist-info → outerbounds-0.3.182rc2.dist-info}/WHEEL +0 -0
- {outerbounds-0.3.182rc1.dist-info → outerbounds-0.3.182rc2.dist-info}/entry_points.txt +0 -0
outerbounds/apps/app_cli.py
CHANGED
@@ -439,6 +439,12 @@ def deployment_instance_options(func):
|
|
439
439
|
help=DEPLOYMENT_READY_CONDITIONS.__doc__,
|
440
440
|
default=DEPLOYMENT_READY_CONDITIONS.ATLEAST_ONE_RUNNING,
|
441
441
|
)
|
442
|
+
@click.option(
|
443
|
+
"--status-file",
|
444
|
+
type=str,
|
445
|
+
help="The path to the file where the final status of the deployment will be written.",
|
446
|
+
default=None,
|
447
|
+
)
|
442
448
|
@click.option(
|
443
449
|
"--readiness-wait-time",
|
444
450
|
type=int,
|
@@ -446,9 +452,10 @@ def deployment_instance_options(func):
|
|
446
452
|
default=4,
|
447
453
|
)
|
448
454
|
@click.option(
|
449
|
-
"--
|
455
|
+
"--deployment-timeout",
|
456
|
+
"max_wait_time",
|
450
457
|
type=int,
|
451
|
-
help="The maximum time (in seconds) to wait for the deployment to
|
458
|
+
help="The maximum time (in seconds) to wait for the deployment to reach readiness before timing out.",
|
452
459
|
default=600,
|
453
460
|
)
|
454
461
|
@click.option(
|
@@ -702,6 +709,7 @@ def deploy(
|
|
702
709
|
readiness_condition=None,
|
703
710
|
max_wait_time=None,
|
704
711
|
readiness_wait_time=None,
|
712
|
+
status_file=None,
|
705
713
|
no_loader=False,
|
706
714
|
**options,
|
707
715
|
):
|
@@ -908,7 +916,9 @@ def deploy(
|
|
908
916
|
capsule_logger = partial(_spinner_logger, capsule_spinner)
|
909
917
|
capsule_spinner.start()
|
910
918
|
|
911
|
-
|
919
|
+
# We only get the `capsule_response` if the deployment is has reached
|
920
|
+
# a successful terminal state.
|
921
|
+
final_status = capsule.wait_for_terminal_state(logger=capsule_logger)
|
912
922
|
if capsule_spinner:
|
913
923
|
capsule_spinner.stop()
|
914
924
|
|
@@ -918,6 +928,16 @@ def deploy(
|
|
918
928
|
system_msg=True,
|
919
929
|
)
|
920
930
|
|
931
|
+
if status_file:
|
932
|
+
# Create the file if it doesn't exist
|
933
|
+
with open(status_file, "w") as f:
|
934
|
+
f.write(json.dumps(final_status, indent=4))
|
935
|
+
logger(
|
936
|
+
f"📝 {capsule.capsule_type} {app_config.config['name']} ({capsule.identifier}) deployment status written to {status_file}",
|
937
|
+
color=ColorTheme.INFO_COLOR,
|
938
|
+
system_msg=True,
|
939
|
+
)
|
940
|
+
|
921
941
|
except Exception as e:
|
922
942
|
logger(
|
923
943
|
f"Deployment failed: [{e.__class__.__name__}]: {e}",
|
outerbounds/apps/capsule.py
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
from datetime import datetime
|
1
2
|
import json
|
2
3
|
import os
|
3
4
|
import pathlib
|
@@ -796,4 +797,13 @@ class CapsuleDeployer:
|
|
796
797
|
self.identifier,
|
797
798
|
f"Capsule {self.identifier} failed to be ready to serve traffic",
|
798
799
|
)
|
799
|
-
|
800
|
+
|
801
|
+
return dict(
|
802
|
+
id=self.identifier,
|
803
|
+
auth_type=self.capsule_type,
|
804
|
+
public_url=self.status.out_of_cluster_url,
|
805
|
+
available_replicas=self.status.available_replicas,
|
806
|
+
name=self.name,
|
807
|
+
deployed_version=self.current_deployment_instance_version,
|
808
|
+
deployed_at=datetime.now().isoformat(),
|
809
|
+
)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: outerbounds
|
3
|
-
Version: 0.3.
|
3
|
+
Version: 0.3.182rc2
|
4
4
|
Summary: More Data Science, Less Administration
|
5
5
|
License: Proprietary
|
6
6
|
Keywords: data science,machine learning,MLOps
|
@@ -29,8 +29,8 @@ Requires-Dist: google-cloud-secret-manager (>=2.20.0,<3.0.0) ; extra == "gcp"
|
|
29
29
|
Requires-Dist: google-cloud-storage (>=2.14.0,<3.0.0) ; extra == "gcp"
|
30
30
|
Requires-Dist: metaflow-checkpoint (==0.2.1)
|
31
31
|
Requires-Dist: ob-metaflow (==2.15.17.1)
|
32
|
-
Requires-Dist: ob-metaflow-extensions (==1.1.
|
33
|
-
Requires-Dist: ob-metaflow-stubs (==6.0.3.
|
32
|
+
Requires-Dist: ob-metaflow-extensions (==1.1.170rc2)
|
33
|
+
Requires-Dist: ob-metaflow-stubs (==6.0.3.182rc2)
|
34
34
|
Requires-Dist: opentelemetry-distro (>=0.41b0) ; extra == "otel"
|
35
35
|
Requires-Dist: opentelemetry-exporter-otlp-proto-http (>=1.20.0) ; extra == "otel"
|
36
36
|
Requires-Dist: opentelemetry-instrumentation-requests (>=0.41b0) ; extra == "otel"
|
@@ -44,10 +44,10 @@ outerbounds/_vendor/yaml/serializer.py,sha256=8wFZRy9SsQSktF_f9OOroroqsh4qVUe53r
|
|
44
44
|
outerbounds/_vendor/yaml/tokens.py,sha256=JBSu38wihGr4l73JwbfMA7Ks1-X84g8-NskTz7KwPmA,2578
|
45
45
|
outerbounds/apps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
46
46
|
outerbounds/apps/_state_machine.py,sha256=eAJFNt_9kwE70XyXoMU107TrzPRnb2xcAyVtXV1yAGc,14646
|
47
|
-
outerbounds/apps/app_cli.py,sha256=
|
47
|
+
outerbounds/apps/app_cli.py,sha256=0TCSxkKz9psJMGULMJcqXvrEJNibBDUTVoY37N5pcIk,51003
|
48
48
|
outerbounds/apps/app_config.py,sha256=UHVK8JLIuW-OcGg5WxDm4QHeImPGtohD4KpJryZntC4,11307
|
49
49
|
outerbounds/apps/artifacts.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
50
|
-
outerbounds/apps/capsule.py,sha256=
|
50
|
+
outerbounds/apps/capsule.py,sha256=8ZoEjLwcUvbps6H03hkl25cAGj8pyaVNziaAK8AZTxY,31523
|
51
51
|
outerbounds/apps/cli_to_config.py,sha256=Thc5jXRxoU6Pr8kAVVOX-5Es5ha6y6Vh_GBzL__oI7Q,3299
|
52
52
|
outerbounds/apps/click_importer.py,sha256=nnkPOR6TKrtIpc3a5Fna1zVJoQqDZvUXlNA9CdiNKFc,995
|
53
53
|
outerbounds/apps/code_package/__init__.py,sha256=8McF7pgx8ghvjRnazp2Qktlxi9yYwNiwESSQrk-2oW8,68
|
@@ -78,7 +78,7 @@ outerbounds/utils/metaflowconfig.py,sha256=l2vJbgPkLISU-XPGZFaC8ZKmYFyJemlD6bwB-
|
|
78
78
|
outerbounds/utils/schema.py,sha256=lMUr9kNgn9wy-sO_t_Tlxmbt63yLeN4b0xQXbDUDj4A,2331
|
79
79
|
outerbounds/utils/utils.py,sha256=4Z8cszNob_8kDYCLNTrP-wWads_S_MdL3Uj3ju4mEsk,501
|
80
80
|
outerbounds/vendor.py,sha256=gRLRJNXtZBeUpPEog0LOeIsl6GosaFFbCxUvR4bW6IQ,5093
|
81
|
-
outerbounds-0.3.
|
82
|
-
outerbounds-0.3.
|
83
|
-
outerbounds-0.3.
|
84
|
-
outerbounds-0.3.
|
81
|
+
outerbounds-0.3.182rc2.dist-info/METADATA,sha256=QNhNeHMNuCMReA27whbsen3OPIniLUinbQ3ScvLfQLc,1846
|
82
|
+
outerbounds-0.3.182rc2.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
83
|
+
outerbounds-0.3.182rc2.dist-info/entry_points.txt,sha256=AP6rZg7y5SK9e9a9iVq0Fi9Q2KPjPZSwtZ6R98rLw-8,56
|
84
|
+
outerbounds-0.3.182rc2.dist-info/RECORD,,
|
File without changes
|
File without changes
|