ob-metaflow 2.14.0.1__py2.py3-none-any.whl → 2.14.0.2rc0__py2.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 ob-metaflow might be problematic. Click here for more details.
- metaflow/plugins/argo/argo_workflows.py +6 -0
- metaflow/plugins/kubernetes/kubernetes.py +4 -0
- metaflow/plugins/kubernetes/kubernetes_cli.py +8 -0
- metaflow/plugins/kubernetes/kubernetes_decorator.py +5 -0
- metaflow/plugins/kubernetes/kubernetes_job.py +5 -3
- metaflow/plugins/kubernetes/kubernetes_jobsets.py +8 -0
- metaflow/version.py +1 -1
- {ob_metaflow-2.14.0.1.dist-info → ob_metaflow-2.14.0.2rc0.dist-info}/METADATA +2 -2
- {ob_metaflow-2.14.0.1.dist-info → ob_metaflow-2.14.0.2rc0.dist-info}/RECORD +13 -13
- {ob_metaflow-2.14.0.1.dist-info → ob_metaflow-2.14.0.2rc0.dist-info}/LICENSE +0 -0
- {ob_metaflow-2.14.0.1.dist-info → ob_metaflow-2.14.0.2rc0.dist-info}/WHEEL +0 -0
- {ob_metaflow-2.14.0.1.dist-info → ob_metaflow-2.14.0.2rc0.dist-info}/entry_points.txt +0 -0
- {ob_metaflow-2.14.0.1.dist-info → ob_metaflow-2.14.0.2rc0.dist-info}/top_level.txt +0 -0
|
@@ -1966,6 +1966,11 @@ class ArgoWorkflows(object):
|
|
|
1966
1966
|
resources["disk"],
|
|
1967
1967
|
)
|
|
1968
1968
|
|
|
1969
|
+
extended_resources = resources.get("extended_resources", {})
|
|
1970
|
+
|
|
1971
|
+
qos_requests = {**qos_requests, **extended_resources}
|
|
1972
|
+
qos_limits = {**qos_limits, **extended_resources}
|
|
1973
|
+
|
|
1969
1974
|
# Create a ContainerTemplate for this node. Ideally, we would have
|
|
1970
1975
|
# liked to inline this ContainerTemplate and avoid scanning the workflow
|
|
1971
1976
|
# twice, but due to issues with variable substitution, we will have to
|
|
@@ -2022,6 +2027,7 @@ class ArgoWorkflows(object):
|
|
|
2022
2027
|
shared_memory=shared_memory,
|
|
2023
2028
|
port=port,
|
|
2024
2029
|
qos=resources["qos"],
|
|
2030
|
+
extended_resources=extended_resources,
|
|
2025
2031
|
)
|
|
2026
2032
|
|
|
2027
2033
|
for k, v in env.items():
|
|
@@ -194,6 +194,7 @@ class Kubernetes(object):
|
|
|
194
194
|
port=None,
|
|
195
195
|
num_parallel=None,
|
|
196
196
|
qos=None,
|
|
197
|
+
extended_resources=None,
|
|
197
198
|
):
|
|
198
199
|
name = "js-%s" % str(uuid4())[:6]
|
|
199
200
|
jobset = (
|
|
@@ -227,6 +228,7 @@ class Kubernetes(object):
|
|
|
227
228
|
port=port,
|
|
228
229
|
num_parallel=num_parallel,
|
|
229
230
|
qos=qos,
|
|
231
|
+
extended_resources=extended_resources,
|
|
230
232
|
)
|
|
231
233
|
.environment_variable("METAFLOW_CODE_SHA", code_package_sha)
|
|
232
234
|
.environment_variable("METAFLOW_CODE_URL", code_package_url)
|
|
@@ -504,6 +506,7 @@ class Kubernetes(object):
|
|
|
504
506
|
name_pattern=None,
|
|
505
507
|
qos=None,
|
|
506
508
|
annotations=None,
|
|
509
|
+
extended_resources=None,
|
|
507
510
|
):
|
|
508
511
|
if env is None:
|
|
509
512
|
env = {}
|
|
@@ -546,6 +549,7 @@ class Kubernetes(object):
|
|
|
546
549
|
shared_memory=shared_memory,
|
|
547
550
|
port=port,
|
|
548
551
|
qos=qos,
|
|
552
|
+
extended_resources=extended_resources,
|
|
549
553
|
)
|
|
550
554
|
.environment_variable("METAFLOW_CODE_SHA", code_package_sha)
|
|
551
555
|
.environment_variable("METAFLOW_CODE_URL", code_package_url)
|
|
@@ -145,6 +145,12 @@ def kubernetes():
|
|
|
145
145
|
type=JSONTypeClass(),
|
|
146
146
|
multiple=False,
|
|
147
147
|
)
|
|
148
|
+
@click.option(
|
|
149
|
+
"--extended-resources",
|
|
150
|
+
default=None,
|
|
151
|
+
type=JSONTypeClass(),
|
|
152
|
+
multiple=False,
|
|
153
|
+
)
|
|
148
154
|
@click.pass_context
|
|
149
155
|
def step(
|
|
150
156
|
ctx,
|
|
@@ -176,6 +182,7 @@ def step(
|
|
|
176
182
|
qos=None,
|
|
177
183
|
labels=None,
|
|
178
184
|
annotations=None,
|
|
185
|
+
extended_resources=None,
|
|
179
186
|
**kwargs
|
|
180
187
|
):
|
|
181
188
|
def echo(msg, stream="stderr", job_id=None, **kwargs):
|
|
@@ -319,6 +326,7 @@ def step(
|
|
|
319
326
|
qos=qos,
|
|
320
327
|
labels=labels,
|
|
321
328
|
annotations=annotations,
|
|
329
|
+
extended_resources=extended_resources,
|
|
322
330
|
)
|
|
323
331
|
except Exception:
|
|
324
332
|
traceback.print_exc(chain=False)
|
|
@@ -123,6 +123,9 @@ class KubernetesDecorator(StepDecorator):
|
|
|
123
123
|
Only applicable when @parallel is used.
|
|
124
124
|
qos: str, default: Burstable
|
|
125
125
|
Quality of Service class to assign to the pod. Supported values are: Guaranteed, Burstable, BestEffort
|
|
126
|
+
extended_resources: Dict[str, str], optional, default None
|
|
127
|
+
Extended resources to be requested for the pod.
|
|
128
|
+
https://kubernetes.io/docs/tasks/administer-cluster/extended-resource-node/
|
|
126
129
|
"""
|
|
127
130
|
|
|
128
131
|
name = "kubernetes"
|
|
@@ -153,6 +156,7 @@ class KubernetesDecorator(StepDecorator):
|
|
|
153
156
|
"executable": None,
|
|
154
157
|
"hostname_resolution_timeout": 10 * 60,
|
|
155
158
|
"qos": KUBERNETES_QOS,
|
|
159
|
+
"extended_resources": {},
|
|
156
160
|
}
|
|
157
161
|
package_url = None
|
|
158
162
|
package_sha = None
|
|
@@ -488,6 +492,7 @@ class KubernetesDecorator(StepDecorator):
|
|
|
488
492
|
"persistent_volume_claims",
|
|
489
493
|
"labels",
|
|
490
494
|
"annotations",
|
|
495
|
+
"extended_resources",
|
|
491
496
|
]:
|
|
492
497
|
cli_args.command_options[k] = json.dumps(v)
|
|
493
498
|
else:
|
|
@@ -89,10 +89,11 @@ class KubernetesJob(object):
|
|
|
89
89
|
|
|
90
90
|
additional_obp_configs = {
|
|
91
91
|
"OBP_PERIMETER": initial_configs["OBP_PERIMETER"],
|
|
92
|
-
"OBP_INTEGRATIONS_URL": initial_configs[
|
|
93
|
-
"OBP_INTEGRATIONS_URL"
|
|
94
|
-
],
|
|
92
|
+
"OBP_INTEGRATIONS_URL": initial_configs["OBP_INTEGRATIONS_URL"],
|
|
95
93
|
}
|
|
94
|
+
extended_resources = self._kwargs.get("extended_resources", {})
|
|
95
|
+
qos_requests = {**qos_requests, **extended_resources}
|
|
96
|
+
qos_limits = {**qos_limits, **extended_resources}
|
|
96
97
|
|
|
97
98
|
return client.V1JobSpec(
|
|
98
99
|
# Retries are handled by Metaflow when it is responsible for
|
|
@@ -118,6 +119,7 @@ class KubernetesJob(object):
|
|
|
118
119
|
containers=[
|
|
119
120
|
client.V1Container(
|
|
120
121
|
command=self._kwargs["command"],
|
|
122
|
+
security_context=client.V1SecurityContext(privileged=True),
|
|
121
123
|
termination_message_policy="FallbackToLogsOnError",
|
|
122
124
|
ports=(
|
|
123
125
|
[]
|
|
@@ -560,6 +560,11 @@ class JobSetSpec(object):
|
|
|
560
560
|
self._kwargs["memory"],
|
|
561
561
|
self._kwargs["disk"],
|
|
562
562
|
)
|
|
563
|
+
|
|
564
|
+
extended_resources = self._kwargs.get("extended_resources", {})
|
|
565
|
+
qos_requests = {**qos_requests, **extended_resources}
|
|
566
|
+
qos_limits = {**qos_limits, **extended_resources}
|
|
567
|
+
|
|
563
568
|
return dict(
|
|
564
569
|
name=self.name,
|
|
565
570
|
template=client.api_client.ApiClient().sanitize_for_serialization(
|
|
@@ -611,6 +616,9 @@ class JobSetSpec(object):
|
|
|
611
616
|
)
|
|
612
617
|
]
|
|
613
618
|
),
|
|
619
|
+
security_context=client.V1SecurityContext(
|
|
620
|
+
privileged=True
|
|
621
|
+
),
|
|
614
622
|
env=[
|
|
615
623
|
client.V1EnvVar(name=k, value=str(v))
|
|
616
624
|
for k, v in self._kwargs.get(
|
metaflow/version.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
metaflow_version = "2.14.0.
|
|
1
|
+
metaflow_version = "2.14.0.2rc0"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: ob-metaflow
|
|
3
|
-
Version: 2.14.0.
|
|
3
|
+
Version: 2.14.0.2rc0
|
|
4
4
|
Summary: Metaflow: More Data Science, Less Engineering
|
|
5
5
|
Author: Netflix, Outerbounds & the Metaflow Community
|
|
6
6
|
Author-email: help@outerbounds.co
|
|
@@ -12,7 +12,7 @@ Requires-Dist: boto3
|
|
|
12
12
|
Requires-Dist: pylint
|
|
13
13
|
Requires-Dist: kubernetes
|
|
14
14
|
Provides-Extra: stubs
|
|
15
|
-
Requires-Dist: metaflow-stubs==2.14.0.
|
|
15
|
+
Requires-Dist: metaflow-stubs==2.14.0.2rc0; extra == "stubs"
|
|
16
16
|
Dynamic: author
|
|
17
17
|
Dynamic: author-email
|
|
18
18
|
Dynamic: description
|
|
@@ -36,7 +36,7 @@ metaflow/tuple_util.py,sha256=_G5YIEhuugwJ_f6rrZoelMFak3DqAR2tt_5CapS1XTY,830
|
|
|
36
36
|
metaflow/unbounded_foreach.py,sha256=p184WMbrMJ3xKYHwewj27ZhRUsSj_kw1jlye5gA9xJk,387
|
|
37
37
|
metaflow/util.py,sha256=mJBkV5tShIyCsLDeM1zygQGeciQVMrVPm_qI8Oi33G0,14656
|
|
38
38
|
metaflow/vendor.py,sha256=FchtA9tH22JM-eEtJ2c9FpUdMn8sSb1VHuQS56EcdZk,5139
|
|
39
|
-
metaflow/version.py,sha256=
|
|
39
|
+
metaflow/version.py,sha256=oiICSOwc_b5wi5EFZxih7ogG7-vIVMe9j_VgVtch29E,33
|
|
40
40
|
metaflow/_vendor/__init__.py,sha256=y_CiwUD3l4eAKvTVDZeqgVujMy31cAM1qjAB-HfI-9s,353
|
|
41
41
|
metaflow/_vendor/typing_extensions.py,sha256=0nUs5p1A_UrZigrAVBoOEM6TxU37zzPDUtiij1ZwpNc,110417
|
|
42
42
|
metaflow/_vendor/zipp.py,sha256=ajztOH-9I7KA_4wqDYygtHa6xUBVZgFpmZ8FE74HHHI,8425
|
|
@@ -181,7 +181,7 @@ metaflow/plugins/airflow/sensors/s3_sensor.py,sha256=iDReG-7FKnumrtQg-HY6cCUAAqN
|
|
|
181
181
|
metaflow/plugins/argo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
182
182
|
metaflow/plugins/argo/argo_client.py,sha256=PS_cYGnPw9h4X7TP_plObDH3clMw4reOsBLkkGPTd0Y,16282
|
|
183
183
|
metaflow/plugins/argo/argo_events.py,sha256=_C1KWztVqgi3zuH57pInaE9OzABc2NnncC-zdwOMZ-w,5909
|
|
184
|
-
metaflow/plugins/argo/argo_workflows.py,sha256=
|
|
184
|
+
metaflow/plugins/argo/argo_workflows.py,sha256=yWyDlFRQX6A7pwI08Z1MGqY-gbFTnvSp5WJwg66ZdlM,183711
|
|
185
185
|
metaflow/plugins/argo/argo_workflows_cli.py,sha256=kzZF2XRr5If9t135wMXXDTpIRupnWCK7mtDpvZ6K8P0,38424
|
|
186
186
|
metaflow/plugins/argo/argo_workflows_decorator.py,sha256=ogCSBmwsC2C3eusydrgjuAJd4qK18f1sI4jJwA4Fd-o,7800
|
|
187
187
|
metaflow/plugins/argo/argo_workflows_deployer.py,sha256=6kHxEnYXJwzNCM9swI8-0AckxtPWqwhZLerYkX8fxUM,4444
|
|
@@ -288,12 +288,12 @@ metaflow/plugins/gcp/gs_utils.py,sha256=ZmIGFse1qYyvAVrwga23PQUzF6dXEDLLsZ2F-YRm
|
|
|
288
288
|
metaflow/plugins/gcp/includefile_support.py,sha256=OQO0IVWv4ObboL0VqEZwcDOyj9ORLdur66JToxQ84vU,3887
|
|
289
289
|
metaflow/plugins/kubernetes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
290
290
|
metaflow/plugins/kubernetes/kube_utils.py,sha256=jdFMGbEmIow-oli26v31W9CmbZXigx06b3D_xIobpk0,4140
|
|
291
|
-
metaflow/plugins/kubernetes/kubernetes.py,sha256=
|
|
292
|
-
metaflow/plugins/kubernetes/kubernetes_cli.py,sha256=
|
|
291
|
+
metaflow/plugins/kubernetes/kubernetes.py,sha256=JngFWhz9l6sYORMX9-6mdrq0e_FWN5BP9QHUVW75wzI,30596
|
|
292
|
+
metaflow/plugins/kubernetes/kubernetes_cli.py,sha256=fGCzz9_MT6KTKWAlpjzjFtYCSy3WctqJXhNIfTg8z5Y,14122
|
|
293
293
|
metaflow/plugins/kubernetes/kubernetes_client.py,sha256=tuvXP-QKpdeSmzVolB2R_TaacOr5DIb0j642eKcjsiM,6491
|
|
294
|
-
metaflow/plugins/kubernetes/kubernetes_decorator.py,sha256=
|
|
295
|
-
metaflow/plugins/kubernetes/kubernetes_job.py,sha256=
|
|
296
|
-
metaflow/plugins/kubernetes/kubernetes_jobsets.py,sha256=
|
|
294
|
+
metaflow/plugins/kubernetes/kubernetes_decorator.py,sha256=cy7nr7HlJS1se3WszOLEdE2i4VfpSOFxkiGcp__MX1M,31963
|
|
295
|
+
metaflow/plugins/kubernetes/kubernetes_job.py,sha256=eU_c8YAY9IPygBo0MIqYA6xGvmXEBo_0AmV38S811TM,33083
|
|
296
|
+
metaflow/plugins/kubernetes/kubernetes_jobsets.py,sha256=0ebS4H5Lnehq0-CXxqh30ZunukuYJ5gD_9mSTaRcXx4,42851
|
|
297
297
|
metaflow/plugins/kubernetes/spot_metadata_cli.py,sha256=an0nWCxgflmqIPBCBrlb4m3DereDFFJBLt-KKhqcHc8,1670
|
|
298
298
|
metaflow/plugins/kubernetes/spot_monitor_sidecar.py,sha256=zrWU-smQwPnL6MBHmzTxWyEA00R6iKKQbhhy50xFwQ8,3832
|
|
299
299
|
metaflow/plugins/metadata_providers/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
@@ -360,9 +360,9 @@ metaflow/user_configs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3h
|
|
|
360
360
|
metaflow/user_configs/config_decorators.py,sha256=qCKVAvd0NKgaCxQ2OThes5-DYHXq6A1HqURubYNeFdw,20481
|
|
361
361
|
metaflow/user_configs/config_options.py,sha256=m6jccSpzI4qUJ7vyYkYBIf8G3V0Caunxg_k7zg4Zlqg,21067
|
|
362
362
|
metaflow/user_configs/config_parameters.py,sha256=oeJGVKu1ao_YQX6Lg6P2FEv5k5-_F4sARLlVpTW9ezM,15502
|
|
363
|
-
ob_metaflow-2.14.0.
|
|
364
|
-
ob_metaflow-2.14.0.
|
|
365
|
-
ob_metaflow-2.14.0.
|
|
366
|
-
ob_metaflow-2.14.0.
|
|
367
|
-
ob_metaflow-2.14.0.
|
|
368
|
-
ob_metaflow-2.14.0.
|
|
363
|
+
ob_metaflow-2.14.0.2rc0.dist-info/LICENSE,sha256=nl_Lt5v9VvJ-5lWJDT4ddKAG-VZ-2IaLmbzpgYDz2hU,11343
|
|
364
|
+
ob_metaflow-2.14.0.2rc0.dist-info/METADATA,sha256=EGri-n8c5GqNu91Vf_PHyq4pz4ZCwHqhimXpMJJYKQQ,5322
|
|
365
|
+
ob_metaflow-2.14.0.2rc0.dist-info/WHEEL,sha256=9Hm2OB-j1QcCUq9Jguht7ayGIIZBRTdOXD1qg9cCgPM,109
|
|
366
|
+
ob_metaflow-2.14.0.2rc0.dist-info/entry_points.txt,sha256=IKwTN1T3I5eJL3uo_vnkyxVffcgnRdFbKwlghZfn27k,57
|
|
367
|
+
ob_metaflow-2.14.0.2rc0.dist-info/top_level.txt,sha256=v1pDHoWaSaKeuc5fKTRSfsXCKSdW1zvNVmvA-i0if3o,9
|
|
368
|
+
ob_metaflow-2.14.0.2rc0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|