From 967b8d815a591170577bc7b24432b211cc32fdf2 Mon Sep 17 00:00:00 2001 From: JamieDeMaria Date: Fri, 11 Oct 2024 15:53:54 -0400 Subject: [PATCH] update --- .../ui-core/src/graphql/schema.graphql | 10 +-- .../packages/ui-core/src/graphql/types.ts | 67 ++++++++++--------- .../dagster_graphql/schema/backfill.py | 52 ++++++++++---- .../dagster_graphql/schema/launched_by.py | 11 ++- .../schema/pipelines/pipeline.py | 50 ++++++++++---- 5 files changed, 125 insertions(+), 65 deletions(-) diff --git a/js_modules/dagster-ui/packages/ui-core/src/graphql/schema.graphql b/js_modules/dagster-ui/packages/ui-core/src/graphql/schema.graphql index 23c681a1442d7..94af81a6d2892 100644 --- a/js_modules/dagster-ui/packages/ui-core/src/graphql/schema.graphql +++ b/js_modules/dagster-ui/packages/ui-core/src/graphql/schema.graphql @@ -1428,7 +1428,7 @@ type Run implements PipelineRun & RunsFeedEntry { endTime: Float assetSelection: [AssetKey!] assetCheckSelection: [AssetCheckhandle!] - launchedBy: GrapheneLaunchedBy! + launchedBy: LaunchedBy! parentPipelineSnapshotId: String resolvedOpSelection: [String!] assetMaterializations: [MaterializationEvent!]! @@ -1453,7 +1453,7 @@ interface RunsFeedEntry { jobName: String assetSelection: [AssetKey!] assetCheckSelection: [AssetCheckhandle!] - launchedBy: GrapheneLaunchedBy! + launchedBy: LaunchedBy! } type AssetCheckhandle { @@ -1461,9 +1461,9 @@ type AssetCheckhandle { assetKey: AssetKey! } -type GrapheneLaunchedBy { +type LaunchedBy { kind: String! - value: String! + tag: PipelineTag! } type SelectorTypeConfigError implements PipelineConfigValidationError { @@ -2849,7 +2849,7 @@ type PartitionBackfill implements RunsFeedEntry { jobName: String assetSelection: [AssetKey!] assetCheckSelection: [AssetCheckhandle!] - launchedBy: GrapheneLaunchedBy! + launchedBy: LaunchedBy! status: BulkActionStatus! partitionNames: [String!] isValidSerialization: Boolean! diff --git a/js_modules/dagster-ui/packages/ui-core/src/graphql/types.ts b/js_modules/dagster-ui/packages/ui-core/src/graphql/types.ts index 07878f989ba26..b1aa96b2d67f5 100644 --- a/js_modules/dagster-ui/packages/ui-core/src/graphql/types.ts +++ b/js_modules/dagster-ui/packages/ui-core/src/graphql/types.ts @@ -1697,12 +1697,6 @@ export type GraphSelector = { repositoryName: Scalars['String']['input']; }; -export type GrapheneLaunchedBy = { - __typename: 'GrapheneLaunchedBy'; - kind: Scalars['String']['output']; - value: Scalars['String']['output']; -}; - export type HandledOutputEvent = DisplayableEvent & MessageEvent & StepEvent & { @@ -2260,6 +2254,12 @@ export type LaunchRunSuccess = LaunchPipelineRunSuccess & { run: Run; }; +export type LaunchedBy = { + __typename: 'LaunchedBy'; + kind: Scalars['String']['output']; + tag: PipelineTag; +}; + export type ListDagsterType = DagsterType & WrappingDagsterType & { __typename: 'ListDagsterType'; @@ -3093,7 +3093,7 @@ export type PartitionBackfill = RunsFeedEntry & { isAssetBackfill: Scalars['Boolean']['output']; isValidSerialization: Scalars['Boolean']['output']; jobName: Maybe; - launchedBy: GrapheneLaunchedBy; + launchedBy: LaunchedBy; logEvents: InstigationEventConnection; numCancelable: Scalars['Int']['output']; numPartitions: Maybe; @@ -4453,7 +4453,7 @@ export type Run = PipelineRun & hasUnconstrainedRootNodes: Scalars['Boolean']['output']; id: Scalars['ID']['output']; jobName: Scalars['String']['output']; - launchedBy: GrapheneLaunchedBy; + launchedBy: LaunchedBy; mode: Scalars['String']['output']; parentPipelineSnapshotId: Maybe; parentRunId: Maybe; @@ -4798,7 +4798,7 @@ export type RunsFeedEntry = { endTime: Maybe; id: Scalars['ID']['output']; jobName: Maybe; - launchedBy: GrapheneLaunchedBy; + launchedBy: LaunchedBy; runStatus: Maybe; startTime: Maybe; tags: Array; @@ -8586,19 +8586,6 @@ export const buildGraphSelector = ( }; }; -export const buildGrapheneLaunchedBy = ( - overrides?: Partial, - _relationshipsToOmit: Set = new Set(), -): {__typename: 'GrapheneLaunchedBy'} & GrapheneLaunchedBy => { - const relationshipsToOmit: Set = new Set(_relationshipsToOmit); - relationshipsToOmit.add('GrapheneLaunchedBy'); - return { - __typename: 'GrapheneLaunchedBy', - kind: overrides && overrides.hasOwnProperty('kind') ? overrides.kind! : 'molestiae', - value: overrides && overrides.hasOwnProperty('value') ? overrides.value! : 'soluta', - }; -}; - export const buildHandledOutputEvent = ( overrides?: Partial, _relationshipsToOmit: Set = new Set(), @@ -9495,6 +9482,24 @@ export const buildLaunchRunSuccess = ( }; }; +export const buildLaunchedBy = ( + overrides?: Partial, + _relationshipsToOmit: Set = new Set(), +): {__typename: 'LaunchedBy'} & LaunchedBy => { + const relationshipsToOmit: Set = new Set(_relationshipsToOmit); + relationshipsToOmit.add('LaunchedBy'); + return { + __typename: 'LaunchedBy', + kind: overrides && overrides.hasOwnProperty('kind') ? overrides.kind! : 'labore', + tag: + overrides && overrides.hasOwnProperty('tag') + ? overrides.tag! + : relationshipsToOmit.has('PipelineTag') + ? ({} as PipelineTag) + : buildPipelineTag({}, relationshipsToOmit), + }; +}; + export const buildListDagsterType = ( overrides?: Partial, _relationshipsToOmit: Set = new Set(), @@ -10863,9 +10868,9 @@ export const buildPartitionBackfill = ( launchedBy: overrides && overrides.hasOwnProperty('launchedBy') ? overrides.launchedBy! - : relationshipsToOmit.has('GrapheneLaunchedBy') - ? ({} as GrapheneLaunchedBy) - : buildGrapheneLaunchedBy({}, relationshipsToOmit), + : relationshipsToOmit.has('LaunchedBy') + ? ({} as LaunchedBy) + : buildLaunchedBy({}, relationshipsToOmit), logEvents: overrides && overrides.hasOwnProperty('logEvents') ? overrides.logEvents! @@ -13049,9 +13054,9 @@ export const buildRun = ( launchedBy: overrides && overrides.hasOwnProperty('launchedBy') ? overrides.launchedBy! - : relationshipsToOmit.has('GrapheneLaunchedBy') - ? ({} as GrapheneLaunchedBy) - : buildGrapheneLaunchedBy({}, relationshipsToOmit), + : relationshipsToOmit.has('LaunchedBy') + ? ({} as LaunchedBy) + : buildLaunchedBy({}, relationshipsToOmit), mode: overrides && overrides.hasOwnProperty('mode') ? overrides.mode! : 'laboriosam', parentPipelineSnapshotId: overrides && overrides.hasOwnProperty('parentPipelineSnapshotId') @@ -13690,9 +13695,9 @@ export const buildRunsFeedEntry = ( launchedBy: overrides && overrides.hasOwnProperty('launchedBy') ? overrides.launchedBy! - : relationshipsToOmit.has('GrapheneLaunchedBy') - ? ({} as GrapheneLaunchedBy) - : buildGrapheneLaunchedBy({}, relationshipsToOmit), + : relationshipsToOmit.has('LaunchedBy') + ? ({} as LaunchedBy) + : buildLaunchedBy({}, relationshipsToOmit), runStatus: overrides && overrides.hasOwnProperty('runStatus') ? overrides.runStatus! diff --git a/python_modules/dagster-graphql/dagster_graphql/schema/backfill.py b/python_modules/dagster-graphql/dagster_graphql/schema/backfill.py index d41379d9acf34..fd69ed12d923b 100644 --- a/python_modules/dagster-graphql/dagster_graphql/schema/backfill.py +++ b/python_modules/dagster-graphql/dagster_graphql/schema/backfill.py @@ -532,23 +532,49 @@ def resolve_launchedBy(self, _graphene_info: ResolveInfo): deetermined based on the tags of the backfill, not the source of the backfill as stored in the DB. Thus, some backfills may have different launchedBy values from source columns. """ - if self.tags.get(USER_TAG): - return GrapheneLaunchedBy(kind="user", value=self.tags[USER_TAG]) - if self.tags.get(SCHEDULE_NAME_TAG): - return GrapheneLaunchedBy(kind="schedule", value=self.tags[SCHEDULE_NAME_TAG]) - if self.tags.get(SENSOR_NAME_TAG): - return GrapheneLaunchedBy(kind="sensor", value=self.tags[SENSOR_NAME_TAG]) - if self.tage.get(AUTO_MATERIALIZE_TAG): + from dagster_graphql.schema.tags import GraphenePipelineTag + + if self._backfill_job.tags.get(USER_TAG): + return GrapheneLaunchedBy( + kind="user", + tag=GraphenePipelineTag(key=USER_TAG, value=self._backfill_job.tags[USER_TAG]), + ) + if self._backfill_job.tags.get(SCHEDULE_NAME_TAG): return GrapheneLaunchedBy( - kind="auto-materialize", value=self.tags[AUTO_MATERIALIZE_TAG] + kind="schedule", + tag=GraphenePipelineTag( + key=SCHEDULE_NAME_TAG, value=self._backfill_job.tags[SCHEDULE_NAME_TAG] + ), + ) + if self._backfill_job.tags.get(SENSOR_NAME_TAG): + return GrapheneLaunchedBy( + kind="sensor", + tag=GraphenePipelineTag( + key=SENSOR_NAME_TAG, value=self._backfill_job.tags[SENSOR_NAME_TAG] + ), ) - if self.tags.get("dagster/created_by") == "auto_materialize": + if self._backfill_job.tags.get(AUTO_MATERIALIZE_TAG): return GrapheneLaunchedBy( - kind="auto-materialize", value=self.tags["dagster/created_by"] + kind="auto-materialize", + tag=GraphenePipelineTag( + key=AUTO_MATERIALIZE_TAG, value=self._backfill_job.tags[AUTO_MATERIALIZE_TAG] + ), + ) + if self._backfill_job.tags.get("dagster/created_by") == "auto_materialize": + return GrapheneLaunchedBy( + kind="auto-materialize", + tag=GraphenePipelineTag( + key="dagster/created_by", value=self._backfill_job.tags["dagster/created_by"] + ), + ) + if self._backfill_job.tags.get(AUTO_OBSERVE_TAG): + return GrapheneLaunchedBy( + kind="auto-observe", + tag=GraphenePipelineTag( + key=AUTO_OBSERVE_TAG, value=self._backfill_job.tags[AUTO_OBSERVE_TAG] + ), ) - if self.tags.get(AUTO_OBSERVE_TAG): - return GrapheneLaunchedBy(kind="auto-observe", value=self.tags[AUTO_OBSERVE_TAG]) - return GrapheneLaunchedBy(kind="manual", value="") + return GrapheneLaunchedBy(kind="manual", tag=GraphenePipelineTag(key="", value="")) def resolve_runStatus(self, _graphene_info: ResolveInfo) -> GrapheneRunStatus: return GrapheneBulkActionStatus(self.status).to_dagster_run_status() diff --git a/python_modules/dagster-graphql/dagster_graphql/schema/launched_by.py b/python_modules/dagster-graphql/dagster_graphql/schema/launched_by.py index 3984e72dcbb06..4f62594110cc1 100644 --- a/python_modules/dagster-graphql/dagster_graphql/schema/launched_by.py +++ b/python_modules/dagster-graphql/dagster_graphql/schema/launched_by.py @@ -1,10 +1,15 @@ import graphene +from dagster_graphql.schema.tags import GraphenePipelineTag + class GrapheneLaunchedBy(graphene.ObjectType): kind = graphene.NonNull(graphene.String) - value = graphene.NonNull(graphene.String) + tag = graphene.NonNull(GraphenePipelineTag) + + class Meta: + name = "LaunchedBy" - def __init__(self, kind: str, value: str): + def __init__(self, kind: str, tag): self.kind = kind - self.value = value + self.tag = tag diff --git a/python_modules/dagster-graphql/dagster_graphql/schema/pipelines/pipeline.py b/python_modules/dagster-graphql/dagster_graphql/schema/pipelines/pipeline.py index ef9cddadee306..877b0a53b4146 100644 --- a/python_modules/dagster-graphql/dagster_graphql/schema/pipelines/pipeline.py +++ b/python_modules/dagster-graphql/dagster_graphql/schema/pipelines/pipeline.py @@ -546,23 +546,47 @@ def resolve_launchedBy(self, _graphene_info: ResolveInfo): deetermined based on the tags of the run, not the source of the run as stored in the DB. Thus, some runs may have different launchedBy values from source columns. """ - if self.tags.get(USER_TAG): - return GrapheneLaunchedBy(kind="user", value=self.tags[USER_TAG]) - if self.tags.get(SCHEDULE_NAME_TAG): - return GrapheneLaunchedBy(kind="schedule", value=self.tags[SCHEDULE_NAME_TAG]) - if self.tags.get(SENSOR_NAME_TAG): - return GrapheneLaunchedBy(kind="sensor", value=self.tags[SENSOR_NAME_TAG]) - if self.tage.get(AUTO_MATERIALIZE_TAG): + if self.dagster_run.tags.get(USER_TAG): return GrapheneLaunchedBy( - kind="auto-materialize", value=self.tags[AUTO_MATERIALIZE_TAG] + kind="user", + tag=GraphenePipelineTag(key=USER_TAG, value=self.dagster_run.tags[USER_TAG]), ) - if self.tags.get("dagster/created_by") == "auto_materialize": + if self.dagster_run.tags.get(SCHEDULE_NAME_TAG): return GrapheneLaunchedBy( - kind="auto-materialize", value=self.tags["dagster/created_by"] + kind="schedule", + tag=GraphenePipelineTag( + key=SCHEDULE_NAME_TAG, value=self.dagster_run.tags[SCHEDULE_NAME_TAG] + ), ) - if self.tags.get(AUTO_OBSERVE_TAG): - return GrapheneLaunchedBy(kind="auto-observe", value=self.tags[AUTO_OBSERVE_TAG]) - return GrapheneLaunchedBy(kind="manual", value="") + if self.dagster_run.tags.get(SENSOR_NAME_TAG): + return GrapheneLaunchedBy( + kind="sensor", + tag=GraphenePipelineTag( + key=SENSOR_NAME_TAG, value=self.dagster_run.tags[SENSOR_NAME_TAG] + ), + ) + if self.dagster_run.tags.get(AUTO_MATERIALIZE_TAG): + return GrapheneLaunchedBy( + kind="auto-materialize", + tag=GraphenePipelineTag( + key=AUTO_MATERIALIZE_TAG, value=self.dagster_run.tags[AUTO_MATERIALIZE_TAG] + ), + ) + if self.dagster_run.tags.get("dagster/created_by") == "auto_materialize": + return GrapheneLaunchedBy( + kind="auto-materialize", + tag=GraphenePipelineTag( + key="dagster/created_by", value=self.dagster_run.tags["dagster/created_by"] + ), + ) + if self.dagster_run.tags.get(AUTO_OBSERVE_TAG): + return GrapheneLaunchedBy( + kind="auto-observe", + tag=GraphenePipelineTag( + key=AUTO_OBSERVE_TAG, value=self.dagster_run.tags[AUTO_OBSERVE_TAG] + ), + ) + return GrapheneLaunchedBy(kind="manual", tag=GraphenePipelineTag(key="", value="")) def resolve_rootRunId(self, _graphene_info: ResolveInfo): return self.dagster_run.root_run_id