truefoundry 0.5.6rc1__py3-none-any.whl → 0.5.7rc1__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.
Potentially problematic release.
This version of truefoundry might be problematic. Click here for more details.
- truefoundry/deploy/cli/commands/deploy_command.py +15 -2
- truefoundry/deploy/lib/clients/servicefoundry_client.py +5 -1
- truefoundry/deploy/v2/lib/deploy.py +7 -2
- truefoundry/deploy/v2/lib/deploy_workflow.py +10 -4
- truefoundry/deploy/v2/lib/deployable_patched_models.py +17 -4
- {truefoundry-0.5.6rc1.dist-info → truefoundry-0.5.7rc1.dist-info}/METADATA +1 -1
- {truefoundry-0.5.6rc1.dist-info → truefoundry-0.5.7rc1.dist-info}/RECORD +9 -9
- {truefoundry-0.5.6rc1.dist-info → truefoundry-0.5.7rc1.dist-info}/WHEEL +0 -0
- {truefoundry-0.5.6rc1.dist-info → truefoundry-0.5.7rc1.dist-info}/entry_points.txt +0 -0
|
@@ -54,10 +54,21 @@ def _get_default_spec_file():
|
|
|
54
54
|
default=True,
|
|
55
55
|
help="Wait and tail the deployment progress",
|
|
56
56
|
)
|
|
57
|
+
@click.option(
|
|
58
|
+
"--force-deploy/--no-force-deploy",
|
|
59
|
+
is_flag=True,
|
|
60
|
+
show_default=True,
|
|
61
|
+
default=False,
|
|
62
|
+
help="Force create a new deployment by canceling any ongoing deployments",
|
|
63
|
+
)
|
|
57
64
|
@click.pass_context
|
|
58
65
|
@handle_exception_wrapper
|
|
59
66
|
def deploy_command(
|
|
60
|
-
ctx: click.Context,
|
|
67
|
+
ctx: click.Context,
|
|
68
|
+
file: str,
|
|
69
|
+
workspace_fqn: Optional[str],
|
|
70
|
+
wait: bool,
|
|
71
|
+
force_deploy: bool,
|
|
61
72
|
):
|
|
62
73
|
if ctx.invoked_subcommand is not None:
|
|
63
74
|
return
|
|
@@ -74,7 +85,9 @@ def deploy_command(
|
|
|
74
85
|
application_definition = yaml.safe_load(f)
|
|
75
86
|
|
|
76
87
|
application = Application.parse_obj(application_definition)
|
|
77
|
-
application.deploy(
|
|
88
|
+
application.deploy(
|
|
89
|
+
workspace_fqn=workspace_fqn, wait=wait, force_deploy=force_deploy
|
|
90
|
+
)
|
|
78
91
|
sys.exit(0)
|
|
79
92
|
|
|
80
93
|
click.echo(
|
|
@@ -239,12 +239,16 @@ class ServiceFoundryServiceClient(BaseServiceFoundryServiceClient):
|
|
|
239
239
|
|
|
240
240
|
@check_min_cli_version
|
|
241
241
|
def deploy_application(
|
|
242
|
-
self,
|
|
242
|
+
self,
|
|
243
|
+
workspace_id: str,
|
|
244
|
+
application: auto_gen_models.Workflow,
|
|
245
|
+
force_deploy: bool,
|
|
243
246
|
) -> Deployment:
|
|
244
247
|
data = {
|
|
245
248
|
"workspaceId": workspace_id,
|
|
246
249
|
"name": application.name,
|
|
247
250
|
"manifest": application.dict(exclude_none=True),
|
|
251
|
+
"forceDeploy": force_deploy,
|
|
248
252
|
}
|
|
249
253
|
logger.debug(json.dumps(data))
|
|
250
254
|
url = f"{self._api_server_url}/{VERSION_PREFIX}/deployment"
|
|
@@ -249,7 +249,10 @@ or pass it explicitly using `--workspace-fqn` argument on CLI.
|
|
|
249
249
|
|
|
250
250
|
|
|
251
251
|
def deploy_component(
|
|
252
|
-
component: Component,
|
|
252
|
+
component: Component,
|
|
253
|
+
workspace_fqn: Optional[str] = None,
|
|
254
|
+
wait: bool = True,
|
|
255
|
+
force_deploy: bool = False,
|
|
253
256
|
) -> Deployment:
|
|
254
257
|
_warn_when_gpu_selected_without_cuda(component=component)
|
|
255
258
|
workspace_fqn = _resolve_workspace_fqn(
|
|
@@ -269,7 +272,9 @@ def deploy_component(
|
|
|
269
272
|
)
|
|
270
273
|
client = ServiceFoundryServiceClient()
|
|
271
274
|
response = client.deploy_application(
|
|
272
|
-
workspace_id=workspace_id,
|
|
275
|
+
workspace_id=workspace_id,
|
|
276
|
+
application=updated_component,
|
|
277
|
+
force_deploy=force_deploy,
|
|
273
278
|
)
|
|
274
279
|
logger.info(
|
|
275
280
|
"🚀 Deployment started for application '%s'. Deployment FQN is '%s'.",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import os
|
|
2
2
|
import sys
|
|
3
3
|
from pathlib import Path
|
|
4
|
-
from typing import Dict, List, Optional, Union
|
|
4
|
+
from typing import Callable, Dict, List, Optional, Union
|
|
5
5
|
|
|
6
6
|
import requirements
|
|
7
7
|
from flytekit.configuration import (
|
|
@@ -37,13 +37,16 @@ from truefoundry.workflow.workflow import (
|
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
def _handle_code_upload_for_workflow(
|
|
40
|
-
workflow: auto_gen_models.Workflow,
|
|
40
|
+
workflow: auto_gen_models.Workflow,
|
|
41
|
+
workspace_fqn: str,
|
|
42
|
+
upload_code_package: Callable[[str, str, str], str],
|
|
41
43
|
) -> auto_gen_models.Workflow:
|
|
42
44
|
new_workflow = workflow.copy(deep=True)
|
|
43
45
|
new_workflow.source = local_source_to_remote_source(
|
|
44
46
|
local_source=workflow.source,
|
|
45
47
|
workspace_fqn=workspace_fqn,
|
|
46
48
|
component_name=workflow.name,
|
|
49
|
+
upload_code_package=upload_code_package,
|
|
47
50
|
)
|
|
48
51
|
return new_workflow
|
|
49
52
|
|
|
@@ -270,6 +273,7 @@ def deploy_workflow(
|
|
|
270
273
|
workflow: auto_gen_models.Workflow,
|
|
271
274
|
workspace_fqn: str,
|
|
272
275
|
wait: bool = True,
|
|
276
|
+
force_deploy: bool = False,
|
|
273
277
|
) -> Deployment:
|
|
274
278
|
_generate_manifest_for_workflow(workflow)
|
|
275
279
|
_validate_workspace_fqn(workflow, workspace_fqn)
|
|
@@ -283,12 +287,14 @@ def deploy_workflow(
|
|
|
283
287
|
logger.info(
|
|
284
288
|
f"Deploying workflow {workflow.name} to workspace {workspace_fqn} ({workspace_id})"
|
|
285
289
|
)
|
|
290
|
+
client = ServiceFoundryServiceClient()
|
|
286
291
|
|
|
287
292
|
workflow = _handle_code_upload_for_workflow(
|
|
288
|
-
workflow=workflow,
|
|
293
|
+
workflow=workflow,
|
|
294
|
+
workspace_fqn=workspace_fqn,
|
|
295
|
+
upload_code_package=client.upload_code_package,
|
|
289
296
|
)
|
|
290
297
|
|
|
291
|
-
client = ServiceFoundryServiceClient()
|
|
292
298
|
deployment = client.deploy_application(
|
|
293
299
|
workspace_id=workspace_id, application=workflow
|
|
294
300
|
)
|
|
@@ -11,8 +11,15 @@ class DeployablePatchedModelBase(BaseModel):
|
|
|
11
11
|
class Config:
|
|
12
12
|
extra = "forbid"
|
|
13
13
|
|
|
14
|
-
def deploy(
|
|
15
|
-
|
|
14
|
+
def deploy(
|
|
15
|
+
self, workspace_fqn: str, wait: bool = True, force_deploy: bool = False
|
|
16
|
+
) -> Deployment:
|
|
17
|
+
return deploy_component(
|
|
18
|
+
component=self,
|
|
19
|
+
workspace_fqn=workspace_fqn,
|
|
20
|
+
wait=wait,
|
|
21
|
+
force_deploy=force_deploy,
|
|
22
|
+
)
|
|
16
23
|
|
|
17
24
|
|
|
18
25
|
class Service(models.Service, DeployablePatchedModelBase):
|
|
@@ -73,7 +80,9 @@ class SSHServer(models.SSHServer, DeployablePatchedModelBase):
|
|
|
73
80
|
|
|
74
81
|
|
|
75
82
|
class Application(models.Application, DeployablePatchedModelBase):
|
|
76
|
-
def deploy(
|
|
83
|
+
def deploy(
|
|
84
|
+
self, workspace_fqn: str, wait: bool = True, force_deploy: bool = False
|
|
85
|
+
) -> Deployment:
|
|
77
86
|
if isinstance(self.__root__, models.Workflow):
|
|
78
87
|
from truefoundry.deploy.v2.lib.deploy_workflow import deploy_workflow
|
|
79
88
|
|
|
@@ -81,10 +90,14 @@ class Application(models.Application, DeployablePatchedModelBase):
|
|
|
81
90
|
workflow=self.__root__,
|
|
82
91
|
workspace_fqn=workspace_fqn,
|
|
83
92
|
wait=wait,
|
|
93
|
+
force_deploy=force_deploy,
|
|
84
94
|
)
|
|
85
95
|
else:
|
|
86
96
|
return deploy_component(
|
|
87
|
-
component=self.__root__,
|
|
97
|
+
component=self.__root__,
|
|
98
|
+
workspace_fqn=workspace_fqn,
|
|
99
|
+
wait=wait,
|
|
100
|
+
force_deploy=force_deploy,
|
|
88
101
|
)
|
|
89
102
|
|
|
90
103
|
|
|
@@ -61,7 +61,7 @@ truefoundry/deploy/cli/commands/apply_command.py,sha256=Y2e_C8HVpo8CssVod-3JRz-8
|
|
|
61
61
|
truefoundry/deploy/cli/commands/build_command.py,sha256=zJBywMatbpUlXx5O2aqpEVmPeBIJ9RNnG9abSc8C8CE,1234
|
|
62
62
|
truefoundry/deploy/cli/commands/create_command.py,sha256=rCajvQvAfZU10nDZOYpRACbAATH1zj52ihTWrhnLLUc,1829
|
|
63
63
|
truefoundry/deploy/cli/commands/delete_command.py,sha256=JMibxvt1rsZ8sODa0jI1e6vavjN8Pv04ttVFURSTKTw,2362
|
|
64
|
-
truefoundry/deploy/cli/commands/deploy_command.py,sha256=
|
|
64
|
+
truefoundry/deploy/cli/commands/deploy_command.py,sha256=JW7_gUwM7sg7cNkK-28AdNdgFj26Oj2KjkqIO-CvZFg,4172
|
|
65
65
|
truefoundry/deploy/cli/commands/deploy_init_command.py,sha256=g-jBfrEmhZ0TDWsyqPDn4K6q33EqJSGmBTt1eMYig-w,600
|
|
66
66
|
truefoundry/deploy/cli/commands/get_command.py,sha256=HZQGWib-qrS0RdzctRDwDLfMGu0wqWkAM1u26cTZlsc,5944
|
|
67
67
|
truefoundry/deploy/cli/commands/list_command.py,sha256=zKu_JWY35eMIzgSNFYtmwi2uezZ4k-8yk3C1Vqsvshc,4470
|
|
@@ -81,7 +81,7 @@ truefoundry/deploy/io/output_callback.py,sha256=V2YwUFec4G4a67lM4r-x_64AqdOVNo_9
|
|
|
81
81
|
truefoundry/deploy/io/rich_output_callback.py,sha256=TJLiRD-EnFVwgcepxR7WN0koKqW1X2DevETPhNPi_nU,829
|
|
82
82
|
truefoundry/deploy/lib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
83
83
|
truefoundry/deploy/lib/clients/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
84
|
-
truefoundry/deploy/lib/clients/servicefoundry_client.py,sha256=
|
|
84
|
+
truefoundry/deploy/lib/clients/servicefoundry_client.py,sha256=twgEUKSES8HWewMj-8xeD1O3AOz9kfhaaZA4D0BATxk,26444
|
|
85
85
|
truefoundry/deploy/lib/const.py,sha256=Wg0GDnfFu-g1fJr4lU80NH2ULw0R0dYjV7LnW-PbOeM,173
|
|
86
86
|
truefoundry/deploy/lib/dao/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
87
87
|
truefoundry/deploy/lib/dao/application.py,sha256=oMszpueXPUfTUuN_XdKwoRjQyqAgWHhZ-10cbprCVdM,9226
|
|
@@ -98,9 +98,9 @@ truefoundry/deploy/lib/win32.py,sha256=1RcvPTdlOAJ48rt8rCbE2Ufha2ztRqBAE9dueNXAr
|
|
|
98
98
|
truefoundry/deploy/python_deploy_codegen.py,sha256=qJHH1BJQII9e6PhkcRFYiE_3De7_VMMm8nM4AX5Eq1o,6513
|
|
99
99
|
truefoundry/deploy/v2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
100
100
|
truefoundry/deploy/v2/lib/__init__.py,sha256=WEiVMZXOVljzEE3tpGJil14liIn_PCDoACJ6b3tZ6sI,188
|
|
101
|
-
truefoundry/deploy/v2/lib/deploy.py,sha256=
|
|
102
|
-
truefoundry/deploy/v2/lib/deploy_workflow.py,sha256=
|
|
103
|
-
truefoundry/deploy/v2/lib/deployable_patched_models.py,sha256=
|
|
101
|
+
truefoundry/deploy/v2/lib/deploy.py,sha256=Uk4osyx7uGfYWgyzd6FlmDEnR6tnIjDdytIlCQAq9Xs,12441
|
|
102
|
+
truefoundry/deploy/v2/lib/deploy_workflow.py,sha256=NM6MDdJ7qeqr1HPM5dLLhwkshQ3OweKQOFjzRZ_2c5w,12797
|
|
103
|
+
truefoundry/deploy/v2/lib/deployable_patched_models.py,sha256=6zLJmzRfKXoYa151lc_WUIUOc4wBtNthFfGS9IWMrQc,3990
|
|
104
104
|
truefoundry/deploy/v2/lib/models.py,sha256=pSolLMTArDuYpeNsmeeS5DWliloN_iCDfZSpRllMHUg,1120
|
|
105
105
|
truefoundry/deploy/v2/lib/patched_models.py,sha256=-YnzXSabKs8XDx2I5zYjSKj1lM2qf-L4huewtHSvnP4,16310
|
|
106
106
|
truefoundry/deploy/v2/lib/source.py,sha256=wArU8AwSy7U9EUGLEMmB4Ke7ZwgZWmh8fFU-PACogIk,9347
|
|
@@ -367,7 +367,7 @@ truefoundry/workflow/remote_filesystem/tfy_signed_url_client.py,sha256=xcT0wQmQl
|
|
|
367
367
|
truefoundry/workflow/remote_filesystem/tfy_signed_url_fs.py,sha256=nSGPZu0Gyd_jz0KsEE-7w_BmnTD8CVF1S8cUJoxaCbc,13305
|
|
368
368
|
truefoundry/workflow/task.py,sha256=34m55mALXx6ko9o5HkK6FDtMajdvJzBhOsHwDM2RcBA,1779
|
|
369
369
|
truefoundry/workflow/workflow.py,sha256=WaTqUjhwfAXDWu4E5ehuwAxrCbDJkoAf1oWmR2E9Qy0,4575
|
|
370
|
-
truefoundry-0.5.
|
|
371
|
-
truefoundry-0.5.
|
|
372
|
-
truefoundry-0.5.
|
|
373
|
-
truefoundry-0.5.
|
|
370
|
+
truefoundry-0.5.7rc1.dist-info/METADATA,sha256=x5GilnYFCgdiFnR85bO_VZSTstYfnHbumizGDELekAM,2887
|
|
371
|
+
truefoundry-0.5.7rc1.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
|
|
372
|
+
truefoundry-0.5.7rc1.dist-info/entry_points.txt,sha256=TXvUxQkI6zmqJuycPsyxEIMr3oqfDjgrWj0m_9X12x4,95
|
|
373
|
+
truefoundry-0.5.7rc1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|