dagster-cloud 1.11.4__py3-none-any.whl → 1.11.6__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.
@@ -12,8 +12,7 @@ from typing import TYPE_CHECKING, Any, Optional, Union, cast
12
12
  import dagster._check as check
13
13
  from dagster import DagsterInstance
14
14
  from dagster._core.launcher.base import LaunchRunContext
15
- from dagster._core.remote_representation import CodeLocationOrigin
16
- from dagster._core.remote_representation.origin import RegisteredCodeLocationOrigin
15
+ from dagster._core.remote_origin import CodeLocationOrigin, RegisteredCodeLocationOrigin
17
16
  from dagster._core.utils import FuturesAwareThreadPoolExecutor
18
17
  from dagster._grpc.client import DagsterGrpcClient
19
18
  from dagster._grpc.types import CancelExecutionRequest
@@ -1,6 +1,6 @@
1
1
  from dagster import deserialize_value
2
2
  from dagster._core.definitions.schedule_definition import ScheduleExecutionData
3
- from dagster._core.remote_representation import ScheduleExecutionErrorSnap
3
+ from dagster._core.remote_representation.external_data import ScheduleExecutionErrorSnap
4
4
 
5
5
  from dagster_cloud.opentelemetry.observers.execution_observer import ExecutionObserverInstruments
6
6
 
@@ -1,6 +1,6 @@
1
1
  from dagster import deserialize_value
2
2
  from dagster._core.definitions.sensor_definition import SensorExecutionData
3
- from dagster._core.remote_representation import SensorExecutionErrorSnap
3
+ from dagster._core.remote_representation.external_data import SensorExecutionErrorSnap
4
4
 
5
5
  from dagster_cloud.opentelemetry.observers.execution_observer import ExecutionObserverInstruments
6
6
 
@@ -7,7 +7,8 @@ from typing import Any, Optional, TypedDict, Union
7
7
  from dagster._core.code_pointer import CodePointer
8
8
  from dagster._core.definitions.selector import JobSelector
9
9
  from dagster._core.events.log import EventLogEntry
10
- from dagster._core.remote_representation import CodeLocationOrigin, RepositorySnap
10
+ from dagster._core.remote_origin import CodeLocationOrigin
11
+ from dagster._core.remote_representation.external_data import RepositorySnap
11
12
  from dagster._core.storage.dagster_run import DagsterRun
12
13
  from dagster._core.utils import RequestUtilizationMetrics
13
14
  from dagster._record import IHaveNew, copy, record, record_custom
@@ -13,7 +13,7 @@ from dagster._core.errors import (
13
13
  from dagster._core.events import DagsterEvent
14
14
  from dagster._core.execution.backfill import BulkActionsFilter, BulkActionStatus, PartitionBackfill
15
15
  from dagster._core.execution.telemetry import RunTelemetryData
16
- from dagster._core.remote_representation.origin import RemoteJobOrigin
16
+ from dagster._core.remote_origin import RemoteJobOrigin
17
17
  from dagster._core.snap import ExecutionPlanSnapshot, JobSnap, create_execution_plan_snapshot_id
18
18
  from dagster._core.storage.dagster_run import (
19
19
  DagsterRun,
dagster_cloud/version.py CHANGED
@@ -1 +1 @@
1
- __version__ = "1.11.4"
1
+ __version__ = "1.11.6"
@@ -64,6 +64,7 @@ class Client:
64
64
  grace_period: int = DEFAULT_ECS_GRACE_PERIOD,
65
65
  launch_type: str = "FARGATE",
66
66
  show_debug_cluster_info: bool = True,
67
+ assign_public_ip: Optional[bool] = None,
67
68
  ):
68
69
  self.ecs = ecs_client if ecs_client else boto3.client("ecs", config=config)
69
70
  self.logs = boto3.client("logs", config=config)
@@ -85,6 +86,7 @@ class Client:
85
86
  self.grace_period = check.int_param(grace_period, "grace_period")
86
87
  self.launch_type = check.str_param(launch_type, "launch_type")
87
88
  self._namespace: Optional[str] = None
89
+ self._assign_public_ip_override = assign_public_ip
88
90
 
89
91
  @property
90
92
  def ec2(self):
@@ -115,14 +117,17 @@ class Client:
115
117
  @property
116
118
  @cached_method
117
119
  def network_configuration(self):
120
+ if self.launch_type != "FARGATE":
121
+ assign_public_ip = None
122
+ elif self._assign_public_ip_override is not None:
123
+ assign_public_ip = "ENABLED" if self._assign_public_ip_override else "DISABLED"
124
+ else:
125
+ assign_public_ip = self._infer_assign_public_ip()
126
+
118
127
  network_configuration = {
119
128
  "awsvpcConfiguration": {
120
129
  "subnets": self.subnet_ids,
121
- **(
122
- {"assignPublicIp": self._assign_public_ip()}
123
- if self.launch_type == "FARGATE"
124
- else {}
125
- ),
130
+ **({"assignPublicIp": assign_public_ip} if assign_public_ip else {}),
126
131
  },
127
132
  }
128
133
 
@@ -760,7 +765,7 @@ class Client:
760
765
  if service["Name"] == service_name:
761
766
  return service["Id"]
762
767
 
763
- def _assign_public_ip(self):
768
+ def _infer_assign_public_ip(self):
764
769
  # https://docs.aws.amazon.com/AmazonECS/latest/userguide/fargate-task-networking.html
765
770
  # Assign a public IP if any of the subnets are public
766
771
  route_tables = self.ec2.route_tables.filter(
@@ -90,6 +90,7 @@ class EcsUserCodeLauncher(DagsterCloudUserCodeLauncher[EcsServerHandleType], Con
90
90
  enable_ecs_exec=False,
91
91
  server_task_definition_prefix: str = "server",
92
92
  run_task_definition_prefix: str = "run",
93
+ assign_public_ip: Optional[bool] = None,
93
94
  **kwargs,
94
95
  ):
95
96
  self.ecs = boto3.client("ecs")
@@ -182,6 +183,7 @@ class EcsUserCodeLauncher(DagsterCloudUserCodeLauncher[EcsServerHandleType], Con
182
183
  timeout=self._ecs_timeout,
183
184
  grace_period=self._ecs_grace_period,
184
185
  launch_type=self.launch_type,
186
+ assign_public_ip=assign_public_ip,
185
187
  )
186
188
  super().__init__(**kwargs)
187
189
 
@@ -297,6 +299,16 @@ class EcsUserCodeLauncher(DagsterCloudUserCodeLauncher[EcsServerHandleType], Con
297
299
  "run_task_definition_prefix": Field(
298
300
  str, is_required=False, default_value="dagsterrun"
299
301
  ),
302
+ "assign_public_ip": Field(
303
+ Noneable(bool),
304
+ is_required=False,
305
+ default_value=None,
306
+ description=(
307
+ "When using the FARGATE launch type, the launcher will attempt to automatically determine if it is "
308
+ "necessary to assign a public IP to the ECS task. In complex network topologies, this automatic "
309
+ "determination may not be accurate. In this case, you can explicitly set this value to True or False."
310
+ ),
311
+ ),
300
312
  },
301
313
  SHARED_ECS_CONFIG,
302
314
  SHARED_USER_CODE_LAUNCHER_CONFIG,
@@ -2,7 +2,7 @@ import hashlib
2
2
  import re
3
3
  from typing import Optional
4
4
 
5
- from dagster._core.remote_representation.origin import RemoteJobOrigin
5
+ from dagster._core.remote_origin import RemoteJobOrigin
6
6
  from dagster_aws.ecs.utils import sanitize_family
7
7
 
8
8
  from ..user_code_launcher.utils import get_human_readable_label, unique_resource_name
@@ -27,13 +27,13 @@ from dagster._core.definitions.selector import JobSelector
27
27
  from dagster._core.errors import DagsterUserCodeUnreachableError
28
28
  from dagster._core.instance import MayHaveInstanceWeakref
29
29
  from dagster._core.launcher import RunLauncher
30
- from dagster._core.remote_representation import RemoteRepositoryOrigin
31
- from dagster._core.remote_representation.external_data import (
32
- extract_serialized_job_snap_from_serialized_job_data_snap,
33
- )
34
- from dagster._core.remote_representation.origin import (
30
+ from dagster._core.remote_origin import (
35
31
  CodeLocationOrigin,
36
32
  RegisteredCodeLocationOrigin,
33
+ RemoteRepositoryOrigin,
34
+ )
35
+ from dagster._core.remote_representation.external_data import (
36
+ extract_serialized_job_snap_from_serialized_job_data_snap,
37
37
  )
38
38
  from dagster._grpc.client import DagsterGrpcClient
39
39
  from dagster._grpc.types import GetCurrentImageResult, ListRepositoriesResponse
@@ -1534,8 +1534,8 @@ class DagsterCloudUserCodeLauncher(
1534
1534
  del self._first_unavailable_times[deployment_location]
1535
1535
 
1536
1536
  # redeploy the multipex server in this case as well to ensure a fresh start
1537
- # (and ensure that we don't try to create the same PexServerHandle again and
1538
- # delete the code location in a loop)
1537
+ # if it resource contrained (and ensure that we don't try to create the same
1538
+ # PexServerHandle again and delete the code location in a loop)
1539
1539
  if deployment_location in self._multipex_servers:
1540
1540
  del self._multipex_servers[deployment_location]
1541
1541
 
@@ -1568,11 +1568,11 @@ class DagsterCloudUserCodeLauncher(
1568
1568
  if isinstance(grpc_server_or_error, DagsterCloudGrpcServer):
1569
1569
  self._logger.warning(
1570
1570
  "Pex servers disappeared for running code location %s:%s. Removing actual entries to"
1571
- " activate reconciliation logic.",
1571
+ " activate reconciliation logic and deploy a new code server and multipex server.",
1572
1572
  deployment_name,
1573
1573
  location_name,
1574
1574
  )
1575
- del self._actual_entries[deployment_location]
1575
+ self._trigger_recovery_server_restart(deployment_location)
1576
1576
 
1577
1577
  # Check to see if any servers have become unresponsive
1578
1578
  unavailable_server_timeout = int(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dagster-cloud
3
- Version: 1.11.4
3
+ Version: 1.11.6
4
4
  Author-email: Elementl <support@elementl.com>
5
5
  License: Apache-2.0
6
6
  Project-URL: Homepage, https://dagster.io/cloud
@@ -28,9 +28,9 @@ Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
28
28
  Classifier: Operating System :: OS Independent
29
29
  Requires-Python: <3.14,>=3.9
30
30
  Description-Content-Type: text/markdown
31
- Requires-Dist: dagster==1.11.4
32
- Requires-Dist: dagster-shared==1.11.4
33
- Requires-Dist: dagster-cloud-cli==1.11.4
31
+ Requires-Dist: dagster==1.11.6
32
+ Requires-Dist: dagster-shared==1.11.6
33
+ Requires-Dist: dagster-cloud-cli==1.11.6
34
34
  Requires-Dist: opentelemetry-api<2,>=1.27.0
35
35
  Requires-Dist: opentelemetry-sdk<2,>=1.27.0
36
36
  Requires-Dist: opentelemetry-exporter-otlp-proto-grpc<2,>=1.27.0
@@ -65,12 +65,12 @@ Provides-Extra: insights
65
65
  Requires-Dist: pyarrow; extra == "insights"
66
66
  Provides-Extra: docker
67
67
  Requires-Dist: docker; extra == "docker"
68
- Requires-Dist: dagster-docker==0.27.4; extra == "docker"
68
+ Requires-Dist: dagster-docker==0.27.6; extra == "docker"
69
69
  Provides-Extra: kubernetes
70
70
  Requires-Dist: kubernetes; extra == "kubernetes"
71
- Requires-Dist: dagster-k8s==0.27.4; extra == "kubernetes"
71
+ Requires-Dist: dagster-k8s==0.27.6; extra == "kubernetes"
72
72
  Provides-Extra: ecs
73
- Requires-Dist: dagster-aws==0.27.4; extra == "ecs"
73
+ Requires-Dist: dagster-aws==0.27.6; extra == "ecs"
74
74
  Requires-Dist: boto3; extra == "ecs"
75
75
  Provides-Extra: sandbox
76
76
  Requires-Dist: supervisor; extra == "sandbox"
@@ -1,22 +1,22 @@
1
1
  dagster_cloud/__init__.py,sha256=q3UY5eTfCSqZrr35mmn1b1B_AD1VbfR4Alj8cZ49Xg4,316
2
2
  dagster_cloud/constants.py,sha256=CPAqXJ99SWGMviksdIA2A9894FEvHChNk8UcP4TluYM,455
3
3
  dagster_cloud/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
- dagster_cloud/version.py,sha256=SZgrFPABnOnumxiOr6A8QdZXkU7H0O-yhudPHfeLCHU,23
4
+ dagster_cloud/version.py,sha256=KQSZqBAP-Pzd26mHXgNrIiDBXJRYDGiUXrNOGzIbFxs,23
5
5
  dagster_cloud/agent/__init__.py,sha256=_erVyIrxuHUiyNerwX8vNZcKZN8NAloTEkPq8vPZ3MI,811
6
- dagster_cloud/agent/dagster_cloud_agent.py,sha256=jT1PSysqZFI-SAiS43oYLd5aVIlyczH6r2eIRCphHlc,57075
6
+ dagster_cloud/agent/dagster_cloud_agent.py,sha256=C72rumzRFFX41L2y7j-pJFrTAnvW60ZiS_AQRTUjExg,57013
7
7
  dagster_cloud/agent/queries.py,sha256=iI84GQ1Zxt5ryo6M1ELIaIae-gwUY14QPPMUeiFK97o,1837
8
8
  dagster_cloud/agent/cli/__init__.py,sha256=rGbeQJ2Ap95wPYQuk5XbyHAfP9cs-XPUSmuVM_k278k,9084
9
9
  dagster_cloud/agent/instrumentation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
10
  dagster_cloud/agent/instrumentation/constants.py,sha256=X4GG4adYsOAde_kff89LtErMS9abbna_wm9sjGPvvlw,95
11
11
  dagster_cloud/agent/instrumentation/run_launch.py,sha256=TmvBBymQ-Iniqbkm16jrACOHQjQLSB-kmw0g6gUccqU,750
12
- dagster_cloud/agent/instrumentation/schedule.py,sha256=YW0dklYtuZOQjtqms33gVWgG9821zbuLZ3V2-BeHDFc,1290
13
- dagster_cloud/agent/instrumentation/sensor.py,sha256=mi45lc_MseiRL7irZKTVRYhk9kj7y7XjnGLCqVfHrr0,1276
12
+ dagster_cloud/agent/instrumentation/schedule.py,sha256=DRhJ_2PwGeaeOZ1ey9NbSsAplY_EJS1supcrljtc858,1304
13
+ dagster_cloud/agent/instrumentation/sensor.py,sha256=wGpe3XHyXx4PWlXEa7CNQq3f7-IxWdOgTLEJH2FRnGk,1290
14
14
  dagster_cloud/anomaly_detection/__init__.py,sha256=Qh36mKv0HZTIN0WI-ItlN_tYmiMXR5PIThco5ieJ1gY,279
15
15
  dagster_cloud/anomaly_detection/defs.py,sha256=htd3E_Fn_J2y-_SQozFRPlBdRWihsxEpofO_MEcuQnk,10100
16
16
  dagster_cloud/anomaly_detection/mutation.py,sha256=TDMwkfWGXKF0609FL8T1NgnXgtIoSi8VpjSQ3y89C8Y,410
17
17
  dagster_cloud/anomaly_detection/types.py,sha256=9kJrJOT0Y57fk_4mGerNbwFJLNglI0XAP6NBW0hHuYE,2239
18
18
  dagster_cloud/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
19
- dagster_cloud/api/dagster_cloud_api.py,sha256=QPa9ZDnV7dF6GCEESROulm8DR5T2p8j5s22fTI3uXr8,14536
19
+ dagster_cloud/api/dagster_cloud_api.py,sha256=6ge6WX8SCRKu9wTD0YgTBvCHgPN1_DFrIH_Y0Y9GFuA,14589
20
20
  dagster_cloud/artifacts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
21
  dagster_cloud/auth/__init__.py,sha256=rUuAWah3YD-0tatQPFlmLNJpsGQ9ZRj7sUOSTrnf0zQ,248
22
22
  dagster_cloud/auth/constants.py,sha256=hl2aE8Wsg-Z6EDW9sDJAWMoEvTCPQgdlKOqoqnVP10Q,1242
@@ -98,7 +98,7 @@ dagster_cloud/storage/event_logs/storage.py,sha256=bu3GOrPu_RkCr29xic78-rRfI4h_Z
98
98
  dagster_cloud/storage/event_logs/utils.py,sha256=M6uvW8L-H7600bjOy5yTTealHVKKXAFBJO4dRZObTdI,3061
99
99
  dagster_cloud/storage/runs/__init__.py,sha256=9oV0o8ETp6-fjMRXXabwK0ggi62ue9R00ehmmStMR_s,60
100
100
  dagster_cloud/storage/runs/queries.py,sha256=vJFvL5cU8iV-CqwOZUTupKJ42-LJ0FJDR113LjOqWvc,7250
101
- dagster_cloud/storage/runs/storage.py,sha256=lLdAw7qZCrWlNOkyRUBI0Lf51Ro3E53uaxur14YmZr0,22493
101
+ dagster_cloud/storage/runs/storage.py,sha256=LIDCLNI3loEWgXd8ajoWLm3vL_oWXGr8AenbvdBqe9E,22478
102
102
  dagster_cloud/storage/schedules/__init__.py,sha256=BZhk8jNyiND0X8i85e6M-8l0kkDTAhpKvsNcsqq1JwE,70
103
103
  dagster_cloud/storage/schedules/queries.py,sha256=TnrMvk1rCSKG_gWcxYjGg27X9ie_AVU9350NLL3OR-k,1930
104
104
  dagster_cloud/storage/schedules/storage.py,sha256=Pey8K4fBZOHpykpWc6QOB40fVX-9gfQajGbjk9JyCYM,7745
@@ -113,19 +113,19 @@ dagster_cloud/workspace/config_schema/kubernetes.py,sha256=JIdZ5hX06hAw1lGT-5Acw
113
113
  dagster_cloud/workspace/docker/__init__.py,sha256=ioVI3SHL4gnzPaG7z25BTiejVTDpBgoCW_FwbRHB8FM,15112
114
114
  dagster_cloud/workspace/docker/utils.py,sha256=80vo8QphKxgb47JqDBOMZxTHN_MxReCjYXpppmfiue4,352
115
115
  dagster_cloud/workspace/ecs/__init__.py,sha256=0GliAaE4NYzMD0ALQIG20cRM5ou77bj_FaiysgqoOKI,65
116
- dagster_cloud/workspace/ecs/client.py,sha256=gabMBJv6GcR3KmJqESfdRTvIAArydTrzkvdNQWzywZ8,31355
117
- dagster_cloud/workspace/ecs/launcher.py,sha256=Cp4avJDdCM7sMQtJKDFkuwJF-uPx5pRoJ1qBUiSMC1Q,30475
116
+ dagster_cloud/workspace/ecs/client.py,sha256=9c4juhbKgzj7z0MBtEiOSOt0cYABq-c6GLXbyWX4Wic,31675
117
+ dagster_cloud/workspace/ecs/launcher.py,sha256=zfCZBXQib8hvVxY2Jhf5x6uL-wFSSai3zzdnXVGHAlo,31179
118
118
  dagster_cloud/workspace/ecs/run_launcher.py,sha256=rra0PMk_hdp2EkXGUkNvrrQ3dvzTrtqvwlI9ja83q54,574
119
119
  dagster_cloud/workspace/ecs/service.py,sha256=v-puyDEg2BzHA3RJqEhH8V04bUAcrYIlPCH1SThvwWw,4126
120
- dagster_cloud/workspace/ecs/utils.py,sha256=r5A4-GYZhOg7MvWfRvM_uVO9hbbd0QRdT_w2AmDmuoE,2970
120
+ dagster_cloud/workspace/ecs/utils.py,sha256=P10DJ2VihnPCbrYWDwY3CEeMDLuHJEY2JgBjx2LfftI,2955
121
121
  dagster_cloud/workspace/kubernetes/__init__.py,sha256=42YtKXth8ognW1yYL3KomqsMM2tS2wanD5xnxcC_roc,65
122
122
  dagster_cloud/workspace/kubernetes/launcher.py,sha256=fz53VgKZUYihDyA_ffz8W1wNjAViuz5SxAFCnl15vRc,28279
123
123
  dagster_cloud/workspace/kubernetes/utils.py,sha256=quOuufFp-Og2k-DEyserkrWd6Vj157OvRZJwLuMQYaY,12213
124
124
  dagster_cloud/workspace/user_code_launcher/__init__.py,sha256=6ib1U47aqB4R9BbzJVKR8cAy16RVg5VHRxsUoON1_FQ,745
125
125
  dagster_cloud/workspace/user_code_launcher/process.py,sha256=VZMfBf4OmXNwP0H0ckUMpqD-glqsBgACXS-xO6Pn6nM,14274
126
- dagster_cloud/workspace/user_code_launcher/user_code_launcher.py,sha256=RHHaO2LkGsFCWzSnuOQhiw2lnC7sdtflTba42Dkmcd0,102815
126
+ dagster_cloud/workspace/user_code_launcher/user_code_launcher.py,sha256=Lep5P9_0i9hOCZ5oN5C_J4ojRvnNtMdj-yHA_ou5h5g,102845
127
127
  dagster_cloud/workspace/user_code_launcher/utils.py,sha256=t8Epee9MrXtRhWL-b_3avXxgMGrjLScUNWtBUUGpMCg,5285
128
- dagster_cloud-1.11.4.dist-info/METADATA,sha256=7VZuUD8Yh-rCVysAQkVOQU29Y5u89zVqgKGRjgsRjO0,6577
129
- dagster_cloud-1.11.4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
130
- dagster_cloud-1.11.4.dist-info/top_level.txt,sha256=2hMt-U33jyCgnywNrDB9Ih0EpaVmiO6dFkYcJ7Iwx4I,14
131
- dagster_cloud-1.11.4.dist-info/RECORD,,
128
+ dagster_cloud-1.11.6.dist-info/METADATA,sha256=2vOtXz7w08Lk5FcQW-FVAqtQ88GsR50ykqs9KQCgyCA,6577
129
+ dagster_cloud-1.11.6.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
130
+ dagster_cloud-1.11.6.dist-info/top_level.txt,sha256=2hMt-U33jyCgnywNrDB9Ih0EpaVmiO6dFkYcJ7Iwx4I,14
131
+ dagster_cloud-1.11.6.dist-info/RECORD,,