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.

@@ -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"
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.1
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.1; extra == "stubs"
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=OaCJjK-uyp1C0aFiz2JTkqP14Wyxki5dmByGYREkaeI,30
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=zx5aVyLLwnBzjhu7d9-DotQaw6WgHEoWmZ0KqRNdJCo,183449
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=4WHVs421w5JfFSRAdpiZ6X9w7xEK8UPYGNcc9e0JOFc,30420
292
- metaflow/plugins/kubernetes/kubernetes_cli.py,sha256=o_o0BDEJFpTuga7txRmkvZH8OIuTb5kI4UaG6xbzf84,13929
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=Spz1vkIurf9Z9mENZEdXk2tLS3v2jqVJIF5wyYyqbJ4,31684
295
- metaflow/plugins/kubernetes/kubernetes_job.py,sha256=0PjcVgJkmSqjBNEkibk8y0xxBrgu99D8ar9RsXnzCeY,32833
296
- metaflow/plugins/kubernetes/kubernetes_jobsets.py,sha256=9kU43eE5IvIa7y-POzBdxnJOazWsedKhwQ51Tu1HN_A,42471
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.1.dist-info/LICENSE,sha256=nl_Lt5v9VvJ-5lWJDT4ddKAG-VZ-2IaLmbzpgYDz2hU,11343
364
- ob_metaflow-2.14.0.1.dist-info/METADATA,sha256=-RYFWzqmKGJhhK1Ruy5UyjceMVZLPc6GEcokwJqoO48,5316
365
- ob_metaflow-2.14.0.1.dist-info/WHEEL,sha256=9Hm2OB-j1QcCUq9Jguht7ayGIIZBRTdOXD1qg9cCgPM,109
366
- ob_metaflow-2.14.0.1.dist-info/entry_points.txt,sha256=IKwTN1T3I5eJL3uo_vnkyxVffcgnRdFbKwlghZfn27k,57
367
- ob_metaflow-2.14.0.1.dist-info/top_level.txt,sha256=v1pDHoWaSaKeuc5fKTRSfsXCKSdW1zvNVmvA-i0if3o,9
368
- ob_metaflow-2.14.0.1.dist-info/RECORD,,
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,,