diff --git a/js_modules/dagster-ui/packages/ui-core/src/graphql/possibleTypes.generated.json b/js_modules/dagster-ui/packages/ui-core/src/graphql/possibleTypes.generated.json index a809c08388c95..1a546c8f5f932 100644 --- a/js_modules/dagster-ui/packages/ui-core/src/graphql/possibleTypes.generated.json +++ b/js_modules/dagster-ui/packages/ui-core/src/graphql/possibleTypes.generated.json @@ -1 +1 @@ -{"DisplayableEvent":["EngineEvent","ExecutionStepOutputEvent","ExpectationResult","FailureMetadata","HandledOutputEvent","LoadedInputEvent","ObjectStoreOperationResult","ResourceInitFailureEvent","ResourceInitStartedEvent","ResourceInitSuccessEvent","StepWorkerStartedEvent","StepWorkerStartingEvent","MaterializationEvent","ObservationEvent","TypeCheck"],"MarkerEvent":["EngineEvent","ResourceInitFailureEvent","ResourceInitStartedEvent","ResourceInitSuccessEvent","StepWorkerStartedEvent","StepWorkerStartingEvent"],"ErrorEvent":["EngineEvent","ExecutionStepFailureEvent","ExecutionStepUpForRetryEvent","HookErroredEvent","RunCanceledEvent","RunFailureEvent","ResourceInitFailureEvent"],"MessageEvent":["EngineEvent","ExecutionStepFailureEvent","ExecutionStepInputEvent","ExecutionStepOutputEvent","ExecutionStepRestartEvent","ExecutionStepSkippedEvent","ExecutionStepStartEvent","ExecutionStepSuccessEvent","ExecutionStepUpForRetryEvent","HandledOutputEvent","HookCompletedEvent","HookErroredEvent","HookSkippedEvent","LoadedInputEvent","LogMessageEvent","ObjectStoreOperationEvent","RunCanceledEvent","RunCancelingEvent","RunDequeuedEvent","RunEnqueuedEvent","RunFailureEvent","ResourceInitFailureEvent","ResourceInitStartedEvent","ResourceInitSuccessEvent","RunStartEvent","RunStartingEvent","RunSuccessEvent","StepExpectationResultEvent","StepWorkerStartedEvent","StepWorkerStartingEvent","MaterializationEvent","ObservationEvent","AssetMaterializationPlannedEvent","LogsCapturedEvent","AlertStartEvent","AlertSuccessEvent","AlertFailureEvent","AssetCheckEvaluationPlannedEvent","AssetCheckEvaluationEvent"],"RunEvent":["RunCanceledEvent","RunCancelingEvent","RunDequeuedEvent","RunEnqueuedEvent","RunFailureEvent","RunStartEvent","RunStartingEvent","RunSuccessEvent","AssetMaterializationPlannedEvent","AlertStartEvent","AlertSuccessEvent","AlertFailureEvent"],"PipelineRunStepStats":["RunStepStats"],"StepEvent":["EngineEvent","ExecutionStepFailureEvent","ExecutionStepInputEvent","ExecutionStepOutputEvent","ExecutionStepRestartEvent","ExecutionStepSkippedEvent","ExecutionStepStartEvent","ExecutionStepSuccessEvent","ExecutionStepUpForRetryEvent","HandledOutputEvent","HookCompletedEvent","HookErroredEvent","HookSkippedEvent","LoadedInputEvent","ObjectStoreOperationEvent","ResourceInitFailureEvent","ResourceInitStartedEvent","ResourceInitSuccessEvent","StepExpectationResultEvent","StepWorkerStartedEvent","StepWorkerStartingEvent","MaterializationEvent","ObservationEvent","AssetCheckEvaluationPlannedEvent","AssetCheckEvaluationEvent"],"AssetOwner":["UserAssetOwner","TeamAssetOwner"],"AssetPartitionStatuses":["DefaultPartitionStatuses","MultiPartitionStatuses","TimePartitionStatuses"],"PartitionStatus1D":["TimePartitionStatuses","DefaultPartitionStatuses"],"AssetChecksOrError":["AssetChecks","AssetCheckNeedsMigrationError","AssetCheckNeedsUserCodeUpgrade","AssetCheckNeedsAgentUpgradeError"],"Instigator":["Schedule","Sensor"],"EvaluationStackEntry":["EvaluationStackListItemEntry","EvaluationStackPathEntry","EvaluationStackMapKeyEntry","EvaluationStackMapValueEntry"],"IPipelineSnapshot":["Pipeline","PipelineSnapshot","Job"],"PipelineConfigValidationError":["FieldNotDefinedConfigError","FieldsNotDefinedConfigError","MissingFieldConfigError","MissingFieldsConfigError","RuntimeMismatchConfigError","SelectorTypeConfigError"],"PipelineConfigValidationInvalid":["RunConfigValidationInvalid"],"PipelineConfigValidationResult":["InvalidSubsetError","PipelineConfigValidationValid","RunConfigValidationInvalid","PipelineNotFoundError","PythonError"],"PipelineReference":["PipelineSnapshot","UnknownPipeline"],"PipelineRun":["Run"],"DagsterRunEvent":["ExecutionStepFailureEvent","ExecutionStepInputEvent","ExecutionStepOutputEvent","ExecutionStepSkippedEvent","ExecutionStepStartEvent","ExecutionStepSuccessEvent","ExecutionStepUpForRetryEvent","ExecutionStepRestartEvent","LogMessageEvent","ResourceInitFailureEvent","ResourceInitStartedEvent","ResourceInitSuccessEvent","RunFailureEvent","RunStartEvent","RunEnqueuedEvent","RunDequeuedEvent","RunStartingEvent","RunCancelingEvent","RunCanceledEvent","RunSuccessEvent","StepWorkerStartedEvent","StepWorkerStartingEvent","HandledOutputEvent","LoadedInputEvent","LogsCapturedEvent","ObjectStoreOperationEvent","StepExpectationResultEvent","MaterializationEvent","ObservationEvent","EngineEvent","HookCompletedEvent","HookSkippedEvent","HookErroredEvent","AlertStartEvent","AlertSuccessEvent","AlertFailureEvent","AssetMaterializationPlannedEvent","AssetCheckEvaluationPlannedEvent","AssetCheckEvaluationEvent"],"PipelineRunLogsSubscriptionPayload":["PipelineRunLogsSubscriptionSuccess","PipelineRunLogsSubscriptionFailure"],"RunOrError":["Run","RunNotFoundError","PythonError"],"PipelineRunStatsSnapshot":["RunStatsSnapshot"],"RunStatsSnapshotOrError":["RunStatsSnapshot","PythonError"],"PipelineSnapshotOrError":["PipelineNotFoundError","PipelineSnapshot","PipelineSnapshotNotFoundError","PythonError"],"MegaRun":["Run","PartitionBackfill"],"AssetOrError":["Asset","AssetNotFoundError"],"AssetsOrError":["AssetConnection","PythonError"],"DeletePipelineRunResult":["DeletePipelineRunSuccess","UnauthorizedError","PythonError","RunNotFoundError"],"ExecutionPlanOrError":["ExecutionPlan","RunConfigValidationInvalid","PipelineNotFoundError","InvalidSubsetError","PythonError"],"PipelineOrError":["Pipeline","PipelineNotFoundError","InvalidSubsetError","PythonError"],"ReloadRepositoryLocationMutationResult":["WorkspaceLocationEntry","ReloadNotSupported","RepositoryLocationNotFound","UnauthorizedError","PythonError"],"RepositoryLocationOrLoadError":["RepositoryLocation","PythonError"],"ReloadWorkspaceMutationResult":["Workspace","UnauthorizedError","PythonError"],"ShutdownRepositoryLocationMutationResult":["ShutdownRepositoryLocationSuccess","RepositoryLocationNotFound","UnauthorizedError","PythonError"],"TerminatePipelineExecutionFailure":["TerminateRunFailure"],"TerminatePipelineExecutionSuccess":["TerminateRunSuccess"],"TerminateRunResult":["TerminateRunSuccess","TerminateRunFailure","RunNotFoundError","UnauthorizedError","PythonError"],"ScheduleMutationResult":["PythonError","UnauthorizedError","ScheduleStateResult"],"ScheduleOrError":["Schedule","ScheduleNotFoundError","PythonError"],"SchedulerOrError":["Scheduler","SchedulerNotDefinedError","PythonError"],"SchedulesOrError":["Schedules","RepositoryNotFoundError","PythonError"],"ScheduleTickSpecificData":["ScheduleTickSuccessData","ScheduleTickFailureData"],"LaunchBackfillResult":["LaunchBackfillSuccess","PartitionSetNotFoundError","InvalidStepError","InvalidOutputError","RunConfigValidationInvalid","PipelineNotFoundError","RunConflict","UnauthorizedError","PythonError","InvalidSubsetError","PresetNotFoundError","ConflictingExecutionParamsError","NoModeProvidedError"],"ConfigTypeOrError":["EnumConfigType","CompositeConfigType","RegularConfigType","PipelineNotFoundError","ConfigTypeNotFoundError","PythonError"],"ConfigType":["ArrayConfigType","CompositeConfigType","EnumConfigType","NullableConfigType","RegularConfigType","ScalarUnionConfigType","MapConfigType"],"WrappingConfigType":["ArrayConfigType","NullableConfigType"],"DagsterType":["ListDagsterType","NullableDagsterType","RegularDagsterType"],"DagsterTypeOrError":["RegularDagsterType","PipelineNotFoundError","DagsterTypeNotFoundError","PythonError"],"WrappingDagsterType":["ListDagsterType","NullableDagsterType"],"Error":["AssetCheckNeedsMigrationError","AssetCheckNeedsUserCodeUpgrade","AssetCheckNeedsAgentUpgradeError","AssetNotFoundError","ConflictingExecutionParamsError","ConfigTypeNotFoundError","DagsterTypeNotFoundError","InvalidPipelineRunsFilterError","InvalidSubsetError","ModeNotFoundError","NoModeProvidedError","PartitionSetNotFoundError","PipelineNotFoundError","RunConflict","PipelineSnapshotNotFoundError","PresetNotFoundError","PythonError","ErrorChainLink","UnauthorizedError","ReloadNotSupported","RepositoryLocationNotFound","RepositoryNotFoundError","ResourceNotFoundError","RunGroupNotFoundError","RunNotFoundError","ScheduleNotFoundError","SchedulerNotDefinedError","SensorNotFoundError","UnsupportedOperationError","DuplicateDynamicPartitionError","InstigationStateNotFoundError","SolidStepStatusUnavailableError","GraphNotFoundError","BackfillNotFoundError","PartitionSubsetDeserializationError","AutoMaterializeAssetEvaluationNeedsMigrationError"],"PipelineRunConflict":["RunConflict"],"PipelineRunNotFoundError":["RunNotFoundError"],"RepositoriesOrError":["RepositoryConnection","RepositoryNotFoundError","PythonError"],"RepositoryOrError":["PythonError","Repository","RepositoryNotFoundError"],"WorkspaceLocationEntryOrError":["WorkspaceLocationEntry","PythonError"],"InstigationTypeSpecificData":["SensorData","ScheduleData"],"InstigationStateOrError":["InstigationState","InstigationStateNotFoundError","PythonError"],"InstigationStatesOrError":["InstigationStates","PythonError"],"MetadataEntry":["TableColumnLineageMetadataEntry","TableSchemaMetadataEntry","TableMetadataEntry","FloatMetadataEntry","IntMetadataEntry","JsonMetadataEntry","BoolMetadataEntry","MarkdownMetadataEntry","PathMetadataEntry","NotebookMetadataEntry","PythonArtifactMetadataEntry","TextMetadataEntry","UrlMetadataEntry","PipelineRunMetadataEntry","AssetMetadataEntry","JobMetadataEntry","CodeReferencesMetadataEntry","NullMetadataEntry","TimestampMetadataEntry"],"SourceLocation":["LocalFileCodeReference","UrlCodeReference"],"PartitionRunConfigOrError":["PartitionRunConfig","PythonError"],"AssetBackfillStatus":["AssetPartitionsStatusCounts","UnpartitionedAssetStatus"],"PartitionSetOrError":["PartitionSet","PartitionSetNotFoundError","PythonError"],"PartitionSetsOrError":["PartitionSets","PipelineNotFoundError","PythonError"],"PartitionsOrError":["Partitions","PythonError"],"PartitionStatusesOrError":["PartitionStatuses","PythonError"],"PartitionTagsOrError":["PartitionTags","PythonError"],"RunConfigSchemaOrError":["RunConfigSchema","PipelineNotFoundError","InvalidSubsetError","ModeNotFoundError","PythonError"],"LaunchRunResult":["LaunchRunSuccess","InvalidStepError","InvalidOutputError","RunConfigValidationInvalid","PipelineNotFoundError","RunConflict","UnauthorizedError","PythonError","InvalidSubsetError","PresetNotFoundError","ConflictingExecutionParamsError","NoModeProvidedError"],"LaunchRunReexecutionResult":["LaunchRunSuccess","InvalidStepError","InvalidOutputError","RunConfigValidationInvalid","PipelineNotFoundError","RunConflict","UnauthorizedError","PythonError","InvalidSubsetError","PresetNotFoundError","ConflictingExecutionParamsError","NoModeProvidedError"],"LaunchPipelineRunSuccess":["LaunchRunSuccess"],"RunsOrError":["Runs","InvalidPipelineRunsFilterError","PythonError"],"PipelineRuns":["Runs"],"RunGroupOrError":["RunGroup","RunGroupNotFoundError","PythonError"],"SensorOrError":["Sensor","SensorNotFoundError","UnauthorizedError","PythonError"],"SensorsOrError":["Sensors","RepositoryNotFoundError","PythonError"],"StopSensorMutationResultOrError":["StopSensorMutationResult","UnauthorizedError","PythonError"],"ISolidDefinition":["CompositeSolidDefinition","SolidDefinition"],"SolidContainer":["Pipeline","PipelineSnapshot","Job","CompositeSolidDefinition","Graph"],"SolidStepStatsOrError":["SolidStepStatsConnection","SolidStepStatusUnavailableError"],"WorkspaceOrError":["Workspace","PythonError"],"WorkspaceLocationStatusEntriesOrError":["WorkspaceLocationStatusEntries","PythonError"],"GraphOrError":["Graph","GraphNotFoundError","PythonError"],"ResourceDetailsOrError":["ResourceDetails","ResourceNotFoundError","PythonError"],"ResourcesOrError":["ResourceDetailsList","RepositoryNotFoundError","PythonError"],"EnvVarWithConsumersOrError":["EnvVarWithConsumersList","PythonError"],"MegaRunsOrError":["MegaRuns","InvalidPipelineRunsFilterError","PythonError"],"RunTagKeysOrError":["PythonError","RunTagKeys"],"RunTagsOrError":["PythonError","RunTags"],"RunIdsOrError":["RunIds","InvalidPipelineRunsFilterError","PythonError"],"AssetNodeOrError":["AssetNode","AssetNotFoundError"],"PartitionBackfillOrError":["PartitionBackfill","BackfillNotFoundError","PythonError"],"PartitionBackfillsOrError":["PartitionBackfills","PythonError"],"EventConnectionOrError":["EventConnection","RunNotFoundError","PythonError"],"AutoMaterializeAssetEvaluationRecordsOrError":["AutoMaterializeAssetEvaluationRecords","AutoMaterializeAssetEvaluationNeedsMigrationError"],"PartitionKeysOrError":["PartitionKeys","PartitionSubsetDeserializationError"],"AutoMaterializeRuleEvaluationData":["TextRuleEvaluationData","ParentMaterializedRuleEvaluationData","WaitingOnKeysRuleEvaluationData"],"AssetConditionEvaluationNode":["UnpartitionedAssetConditionEvaluationNode","PartitionedAssetConditionEvaluationNode","SpecificPartitionAssetConditionEvaluationNode"],"AssetConditionEvaluationRecordsOrError":["AssetConditionEvaluationRecords","AutoMaterializeAssetEvaluationNeedsMigrationError"],"SensorDryRunResult":["PythonError","SensorNotFoundError","DryRunInstigationTick"],"ScheduleDryRunResult":["DryRunInstigationTick","PythonError","ScheduleNotFoundError"],"TerminateRunsResultOrError":["TerminateRunsResult","PythonError"],"AssetWipeMutationResult":["AssetNotFoundError","UnauthorizedError","PythonError","UnsupportedOperationError","AssetWipeSuccess"],"ReportRunlessAssetEventsResult":["UnauthorizedError","PythonError","ReportRunlessAssetEventsSuccess"],"ResumeBackfillResult":["ResumeBackfillSuccess","UnauthorizedError","PythonError"],"CancelBackfillResult":["CancelBackfillSuccess","UnauthorizedError","PythonError"],"LogTelemetryMutationResult":["LogTelemetrySuccess","PythonError"],"AddDynamicPartitionResult":["AddDynamicPartitionSuccess","UnauthorizedError","PythonError","DuplicateDynamicPartitionError"],"DeleteDynamicPartitionsResult":["DeleteDynamicPartitionsSuccess","UnauthorizedError","PythonError"]} \ No newline at end of file +{"DisplayableEvent":["EngineEvent","ExecutionStepOutputEvent","ExpectationResult","FailureMetadata","HandledOutputEvent","LoadedInputEvent","ObjectStoreOperationResult","ResourceInitFailureEvent","ResourceInitStartedEvent","ResourceInitSuccessEvent","StepWorkerStartedEvent","StepWorkerStartingEvent","MaterializationEvent","ObservationEvent","TypeCheck"],"MarkerEvent":["EngineEvent","ResourceInitFailureEvent","ResourceInitStartedEvent","ResourceInitSuccessEvent","StepWorkerStartedEvent","StepWorkerStartingEvent"],"ErrorEvent":["EngineEvent","ExecutionStepFailureEvent","ExecutionStepUpForRetryEvent","HookErroredEvent","RunCanceledEvent","RunFailureEvent","ResourceInitFailureEvent"],"MessageEvent":["EngineEvent","ExecutionStepFailureEvent","ExecutionStepInputEvent","ExecutionStepOutputEvent","ExecutionStepRestartEvent","ExecutionStepSkippedEvent","ExecutionStepStartEvent","ExecutionStepSuccessEvent","ExecutionStepUpForRetryEvent","HandledOutputEvent","HookCompletedEvent","HookErroredEvent","HookSkippedEvent","LoadedInputEvent","LogMessageEvent","ObjectStoreOperationEvent","RunCanceledEvent","RunCancelingEvent","RunDequeuedEvent","RunEnqueuedEvent","RunFailureEvent","ResourceInitFailureEvent","ResourceInitStartedEvent","ResourceInitSuccessEvent","RunStartEvent","RunStartingEvent","RunSuccessEvent","StepExpectationResultEvent","StepWorkerStartedEvent","StepWorkerStartingEvent","MaterializationEvent","ObservationEvent","AssetMaterializationPlannedEvent","LogsCapturedEvent","AlertStartEvent","AlertSuccessEvent","AlertFailureEvent","AssetCheckEvaluationPlannedEvent","AssetCheckEvaluationEvent"],"RunEvent":["RunCanceledEvent","RunCancelingEvent","RunDequeuedEvent","RunEnqueuedEvent","RunFailureEvent","RunStartEvent","RunStartingEvent","RunSuccessEvent","AssetMaterializationPlannedEvent","AlertStartEvent","AlertSuccessEvent","AlertFailureEvent"],"PipelineRunStepStats":["RunStepStats"],"StepEvent":["EngineEvent","ExecutionStepFailureEvent","ExecutionStepInputEvent","ExecutionStepOutputEvent","ExecutionStepRestartEvent","ExecutionStepSkippedEvent","ExecutionStepStartEvent","ExecutionStepSuccessEvent","ExecutionStepUpForRetryEvent","HandledOutputEvent","HookCompletedEvent","HookErroredEvent","HookSkippedEvent","LoadedInputEvent","ObjectStoreOperationEvent","ResourceInitFailureEvent","ResourceInitStartedEvent","ResourceInitSuccessEvent","StepExpectationResultEvent","StepWorkerStartedEvent","StepWorkerStartingEvent","MaterializationEvent","ObservationEvent","AssetCheckEvaluationPlannedEvent","AssetCheckEvaluationEvent"],"AssetOwner":["UserAssetOwner","TeamAssetOwner"],"AssetPartitionStatuses":["DefaultPartitionStatuses","MultiPartitionStatuses","TimePartitionStatuses"],"PartitionStatus1D":["TimePartitionStatuses","DefaultPartitionStatuses"],"AssetChecksOrError":["AssetChecks","AssetCheckNeedsMigrationError","AssetCheckNeedsUserCodeUpgrade","AssetCheckNeedsAgentUpgradeError"],"Instigator":["Schedule","Sensor"],"EvaluationStackEntry":["EvaluationStackListItemEntry","EvaluationStackPathEntry","EvaluationStackMapKeyEntry","EvaluationStackMapValueEntry"],"IPipelineSnapshot":["Pipeline","PipelineSnapshot","Job"],"PipelineConfigValidationError":["FieldNotDefinedConfigError","FieldsNotDefinedConfigError","MissingFieldConfigError","MissingFieldsConfigError","RuntimeMismatchConfigError","SelectorTypeConfigError"],"PipelineConfigValidationInvalid":["RunConfigValidationInvalid"],"PipelineConfigValidationResult":["InvalidSubsetError","PipelineConfigValidationValid","RunConfigValidationInvalid","PipelineNotFoundError","PythonError"],"PipelineReference":["PipelineSnapshot","UnknownPipeline"],"PipelineRun":["Run"],"DagsterRunEvent":["ExecutionStepFailureEvent","ExecutionStepInputEvent","ExecutionStepOutputEvent","ExecutionStepSkippedEvent","ExecutionStepStartEvent","ExecutionStepSuccessEvent","ExecutionStepUpForRetryEvent","ExecutionStepRestartEvent","LogMessageEvent","ResourceInitFailureEvent","ResourceInitStartedEvent","ResourceInitSuccessEvent","RunFailureEvent","RunStartEvent","RunEnqueuedEvent","RunDequeuedEvent","RunStartingEvent","RunCancelingEvent","RunCanceledEvent","RunSuccessEvent","StepWorkerStartedEvent","StepWorkerStartingEvent","HandledOutputEvent","LoadedInputEvent","LogsCapturedEvent","ObjectStoreOperationEvent","StepExpectationResultEvent","MaterializationEvent","ObservationEvent","EngineEvent","HookCompletedEvent","HookSkippedEvent","HookErroredEvent","AlertStartEvent","AlertSuccessEvent","AlertFailureEvent","AssetMaterializationPlannedEvent","AssetCheckEvaluationPlannedEvent","AssetCheckEvaluationEvent"],"PipelineRunLogsSubscriptionPayload":["PipelineRunLogsSubscriptionSuccess","PipelineRunLogsSubscriptionFailure"],"RunOrError":["Run","RunNotFoundError","PythonError"],"PipelineRunStatsSnapshot":["RunStatsSnapshot"],"RunStatsSnapshotOrError":["RunStatsSnapshot","PythonError"],"PipelineSnapshotOrError":["PipelineNotFoundError","PipelineSnapshot","PipelineSnapshotNotFoundError","PythonError"],"RunsFeedEntry":["Run","PartitionBackfill"],"AssetOrError":["Asset","AssetNotFoundError"],"AssetsOrError":["AssetConnection","PythonError"],"DeletePipelineRunResult":["DeletePipelineRunSuccess","UnauthorizedError","PythonError","RunNotFoundError"],"ExecutionPlanOrError":["ExecutionPlan","RunConfigValidationInvalid","PipelineNotFoundError","InvalidSubsetError","PythonError"],"PipelineOrError":["Pipeline","PipelineNotFoundError","InvalidSubsetError","PythonError"],"ReloadRepositoryLocationMutationResult":["WorkspaceLocationEntry","ReloadNotSupported","RepositoryLocationNotFound","UnauthorizedError","PythonError"],"RepositoryLocationOrLoadError":["RepositoryLocation","PythonError"],"ReloadWorkspaceMutationResult":["Workspace","UnauthorizedError","PythonError"],"ShutdownRepositoryLocationMutationResult":["ShutdownRepositoryLocationSuccess","RepositoryLocationNotFound","UnauthorizedError","PythonError"],"TerminatePipelineExecutionFailure":["TerminateRunFailure"],"TerminatePipelineExecutionSuccess":["TerminateRunSuccess"],"TerminateRunResult":["TerminateRunSuccess","TerminateRunFailure","RunNotFoundError","UnauthorizedError","PythonError"],"ScheduleMutationResult":["PythonError","UnauthorizedError","ScheduleStateResult"],"ScheduleOrError":["Schedule","ScheduleNotFoundError","PythonError"],"SchedulerOrError":["Scheduler","SchedulerNotDefinedError","PythonError"],"SchedulesOrError":["Schedules","RepositoryNotFoundError","PythonError"],"ScheduleTickSpecificData":["ScheduleTickSuccessData","ScheduleTickFailureData"],"LaunchBackfillResult":["LaunchBackfillSuccess","PartitionSetNotFoundError","InvalidStepError","InvalidOutputError","RunConfigValidationInvalid","PipelineNotFoundError","RunConflict","UnauthorizedError","PythonError","InvalidSubsetError","PresetNotFoundError","ConflictingExecutionParamsError","NoModeProvidedError"],"ConfigTypeOrError":["EnumConfigType","CompositeConfigType","RegularConfigType","PipelineNotFoundError","ConfigTypeNotFoundError","PythonError"],"ConfigType":["ArrayConfigType","CompositeConfigType","EnumConfigType","NullableConfigType","RegularConfigType","ScalarUnionConfigType","MapConfigType"],"WrappingConfigType":["ArrayConfigType","NullableConfigType"],"DagsterType":["ListDagsterType","NullableDagsterType","RegularDagsterType"],"DagsterTypeOrError":["RegularDagsterType","PipelineNotFoundError","DagsterTypeNotFoundError","PythonError"],"WrappingDagsterType":["ListDagsterType","NullableDagsterType"],"Error":["AssetCheckNeedsMigrationError","AssetCheckNeedsUserCodeUpgrade","AssetCheckNeedsAgentUpgradeError","AssetNotFoundError","ConflictingExecutionParamsError","ConfigTypeNotFoundError","DagsterTypeNotFoundError","InvalidPipelineRunsFilterError","InvalidSubsetError","ModeNotFoundError","NoModeProvidedError","PartitionSetNotFoundError","PipelineNotFoundError","RunConflict","PipelineSnapshotNotFoundError","PresetNotFoundError","PythonError","ErrorChainLink","UnauthorizedError","ReloadNotSupported","RepositoryLocationNotFound","RepositoryNotFoundError","ResourceNotFoundError","RunGroupNotFoundError","RunNotFoundError","ScheduleNotFoundError","SchedulerNotDefinedError","SensorNotFoundError","UnsupportedOperationError","DuplicateDynamicPartitionError","InstigationStateNotFoundError","SolidStepStatusUnavailableError","GraphNotFoundError","BackfillNotFoundError","PartitionSubsetDeserializationError","AutoMaterializeAssetEvaluationNeedsMigrationError"],"PipelineRunConflict":["RunConflict"],"PipelineRunNotFoundError":["RunNotFoundError"],"RepositoriesOrError":["RepositoryConnection","RepositoryNotFoundError","PythonError"],"RepositoryOrError":["PythonError","Repository","RepositoryNotFoundError"],"WorkspaceLocationEntryOrError":["WorkspaceLocationEntry","PythonError"],"InstigationTypeSpecificData":["SensorData","ScheduleData"],"InstigationStateOrError":["InstigationState","InstigationStateNotFoundError","PythonError"],"InstigationStatesOrError":["InstigationStates","PythonError"],"MetadataEntry":["TableColumnLineageMetadataEntry","TableSchemaMetadataEntry","TableMetadataEntry","FloatMetadataEntry","IntMetadataEntry","JsonMetadataEntry","BoolMetadataEntry","MarkdownMetadataEntry","PathMetadataEntry","NotebookMetadataEntry","PythonArtifactMetadataEntry","TextMetadataEntry","UrlMetadataEntry","PipelineRunMetadataEntry","AssetMetadataEntry","JobMetadataEntry","CodeReferencesMetadataEntry","NullMetadataEntry","TimestampMetadataEntry"],"SourceLocation":["LocalFileCodeReference","UrlCodeReference"],"PartitionRunConfigOrError":["PartitionRunConfig","PythonError"],"AssetBackfillStatus":["AssetPartitionsStatusCounts","UnpartitionedAssetStatus"],"PartitionSetOrError":["PartitionSet","PartitionSetNotFoundError","PythonError"],"PartitionSetsOrError":["PartitionSets","PipelineNotFoundError","PythonError"],"PartitionsOrError":["Partitions","PythonError"],"PartitionStatusesOrError":["PartitionStatuses","PythonError"],"PartitionTagsOrError":["PartitionTags","PythonError"],"RunConfigSchemaOrError":["RunConfigSchema","PipelineNotFoundError","InvalidSubsetError","ModeNotFoundError","PythonError"],"LaunchRunResult":["LaunchRunSuccess","InvalidStepError","InvalidOutputError","RunConfigValidationInvalid","PipelineNotFoundError","RunConflict","UnauthorizedError","PythonError","InvalidSubsetError","PresetNotFoundError","ConflictingExecutionParamsError","NoModeProvidedError"],"LaunchRunReexecutionResult":["LaunchRunSuccess","InvalidStepError","InvalidOutputError","RunConfigValidationInvalid","PipelineNotFoundError","RunConflict","UnauthorizedError","PythonError","InvalidSubsetError","PresetNotFoundError","ConflictingExecutionParamsError","NoModeProvidedError"],"LaunchPipelineRunSuccess":["LaunchRunSuccess"],"RunsOrError":["Runs","InvalidPipelineRunsFilterError","PythonError"],"PipelineRuns":["Runs"],"RunGroupOrError":["RunGroup","RunGroupNotFoundError","PythonError"],"SensorOrError":["Sensor","SensorNotFoundError","UnauthorizedError","PythonError"],"SensorsOrError":["Sensors","RepositoryNotFoundError","PythonError"],"StopSensorMutationResultOrError":["StopSensorMutationResult","UnauthorizedError","PythonError"],"ISolidDefinition":["CompositeSolidDefinition","SolidDefinition"],"SolidContainer":["Pipeline","PipelineSnapshot","Job","CompositeSolidDefinition","Graph"],"SolidStepStatsOrError":["SolidStepStatsConnection","SolidStepStatusUnavailableError"],"WorkspaceOrError":["Workspace","PythonError"],"WorkspaceLocationStatusEntriesOrError":["WorkspaceLocationStatusEntries","PythonError"],"GraphOrError":["Graph","GraphNotFoundError","PythonError"],"ResourceDetailsOrError":["ResourceDetails","ResourceNotFoundError","PythonError"],"ResourcesOrError":["ResourceDetailsList","RepositoryNotFoundError","PythonError"],"EnvVarWithConsumersOrError":["EnvVarWithConsumersList","PythonError"],"RunsFeedConnectionOrError":["RunsFeedConnection","PythonError"],"RunTagKeysOrError":["PythonError","RunTagKeys"],"RunTagsOrError":["PythonError","RunTags"],"RunIdsOrError":["RunIds","InvalidPipelineRunsFilterError","PythonError"],"AssetNodeOrError":["AssetNode","AssetNotFoundError"],"PartitionBackfillOrError":["PartitionBackfill","BackfillNotFoundError","PythonError"],"PartitionBackfillsOrError":["PartitionBackfills","PythonError"],"EventConnectionOrError":["EventConnection","RunNotFoundError","PythonError"],"AutoMaterializeAssetEvaluationRecordsOrError":["AutoMaterializeAssetEvaluationRecords","AutoMaterializeAssetEvaluationNeedsMigrationError"],"PartitionKeysOrError":["PartitionKeys","PartitionSubsetDeserializationError"],"AutoMaterializeRuleEvaluationData":["TextRuleEvaluationData","ParentMaterializedRuleEvaluationData","WaitingOnKeysRuleEvaluationData"],"AssetConditionEvaluationNode":["UnpartitionedAssetConditionEvaluationNode","PartitionedAssetConditionEvaluationNode","SpecificPartitionAssetConditionEvaluationNode"],"AssetConditionEvaluationRecordsOrError":["AssetConditionEvaluationRecords","AutoMaterializeAssetEvaluationNeedsMigrationError"],"SensorDryRunResult":["PythonError","SensorNotFoundError","DryRunInstigationTick"],"ScheduleDryRunResult":["DryRunInstigationTick","PythonError","ScheduleNotFoundError"],"TerminateRunsResultOrError":["TerminateRunsResult","PythonError"],"AssetWipeMutationResult":["AssetNotFoundError","UnauthorizedError","PythonError","UnsupportedOperationError","AssetWipeSuccess"],"ReportRunlessAssetEventsResult":["UnauthorizedError","PythonError","ReportRunlessAssetEventsSuccess"],"ResumeBackfillResult":["ResumeBackfillSuccess","UnauthorizedError","PythonError"],"CancelBackfillResult":["CancelBackfillSuccess","UnauthorizedError","PythonError"],"LogTelemetryMutationResult":["LogTelemetrySuccess","PythonError"],"AddDynamicPartitionResult":["AddDynamicPartitionSuccess","UnauthorizedError","PythonError","DuplicateDynamicPartitionError"],"DeleteDynamicPartitionsResult":["DeleteDynamicPartitionsSuccess","UnauthorizedError","PythonError"]} \ No newline at end of file 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 c3211facf651b..1be9e9c45ed23 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 @@ -1371,7 +1371,7 @@ type RuntimeMismatchConfigError implements PipelineConfigValidationError { valueRep: String } -type Run implements PipelineRun & MegaRun { +type Run implements PipelineRun & RunsFeedEntry { id: ID! runId: String! pipelineSnapshotId: String @@ -1401,7 +1401,7 @@ type Run implements PipelineRun & MegaRun { endTime: Float assetSelection: [AssetKey!] assetCheckSelection: [AssetCheckhandle!] - runType: MegaRunType! + runType: RunsFeedType! parentPipelineSnapshotId: String resolvedOpSelection: [String!] assetMaterializations: [MaterializationEvent!]! @@ -1414,7 +1414,7 @@ type Run implements PipelineRun & MegaRun { hasUnconstrainedRootNodes: Boolean! } -interface MegaRun { +interface RunsFeedEntry { runId: String! runStatus: RunStatus creationTime: Float! @@ -1424,7 +1424,7 @@ interface MegaRun { jobName: String assetSelection: [AssetKey!] assetCheckSelection: [AssetCheckhandle!] - runType: MegaRunType! + runType: RunsFeedType! } type AssetCheckhandle { @@ -1432,7 +1432,7 @@ type AssetCheckhandle { assetKey: AssetKey! } -enum MegaRunType { +enum RunsFeedType { BACKFILL RUN } @@ -2775,7 +2775,7 @@ type PartitionRun { run: Run } -type PartitionBackfill implements MegaRun { +type PartitionBackfill implements RunsFeedEntry { runId: String! runStatus: RunStatus! creationTime: Float! @@ -2785,7 +2785,7 @@ type PartitionBackfill implements MegaRun { jobName: String assetSelection: [AssetKey!] assetCheckSelection: [AssetCheckhandle!] - runType: MegaRunType! + runType: RunsFeedType! id: String! status: BulkActionStatus! partitionNames: [String!] @@ -3243,7 +3243,7 @@ type Query { pipelineRunOrError(runId: ID!): RunOrError! runsOrError(filter: RunsFilter, cursor: String, limit: Int): RunsOrError! runOrError(runId: ID!): RunOrError! - megaRunsOrError(cursor: String, limit: Int): MegaRunsOrError! + runsFeedOrError(cursor: String, limit: Int): RunsFeedConnectionOrError! runTagKeysOrError: RunTagKeysOrError runTagsOrError(tagKeys: [String!], valuePrefix: String, limit: Int): RunTagsOrError runIdsOrError(filter: RunsFilter, cursor: String, limit: Int): RunIdsOrError! @@ -3393,14 +3393,10 @@ enum EnvVarConsumerType { RESOURCE } -union MegaRunsOrError = MegaRuns | InvalidPipelineRunsFilterError | PythonError +union RunsFeedConnectionOrError = RunsFeedConnection | PythonError -type MegaRuns { - results: MegaRunsConnection! -} - -type MegaRunsConnection { - results: [MegaRun!]! +type RunsFeedConnection { + results: [RunsFeedEntry!]! cursor: String! hasMore: 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 dedca0ca14258..f7c6221454f4c 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 @@ -2527,38 +2527,6 @@ export type MaterializedPartitionRangeStatuses2D = { secondaryDim: PartitionStatus1D; }; -export type MegaRun = { - assetCheckSelection: Maybe>; - assetSelection: Maybe>; - creationTime: Scalars['Float']['output']; - endTime: Maybe; - jobName: Maybe; - runId: Scalars['String']['output']; - runStatus: Maybe; - runType: MegaRunType; - startTime: Maybe; - tags: Array; -}; - -export enum MegaRunType { - BACKFILL = 'BACKFILL', - RUN = 'RUN', -} - -export type MegaRuns = { - __typename: 'MegaRuns'; - results: MegaRunsConnection; -}; - -export type MegaRunsConnection = { - __typename: 'MegaRunsConnection'; - cursor: Scalars['String']['output']; - hasMore: Scalars['Boolean']['output']; - results: Array; -}; - -export type MegaRunsOrError = InvalidPipelineRunsFilterError | MegaRuns | PythonError; - export type MessageEvent = { eventType: Maybe; level: LogLevel; @@ -3088,7 +3056,7 @@ export type PartitionRunsArgs = { limit?: InputMaybe; }; -export type PartitionBackfill = MegaRun & { +export type PartitionBackfill = RunsFeedEntry & { __typename: 'PartitionBackfill'; assetBackfillData: Maybe; assetCheckSelection: Maybe>; @@ -3118,7 +3086,7 @@ export type PartitionBackfill = MegaRun & { reexecutionSteps: Maybe>; runId: Scalars['String']['output']; runStatus: RunStatus; - runType: MegaRunType; + runType: RunsFeedType; runs: Array; startTime: Maybe; status: BulkActionStatus; @@ -3732,7 +3700,6 @@ export type Query = { isPipelineConfigValid: PipelineConfigValidationResult; locationStatusesOrError: WorkspaceLocationStatusEntriesOrError; logsForRun: EventConnectionOrError; - megaRunsOrError: MegaRunsOrError; partitionBackfillOrError: PartitionBackfillOrError; partitionBackfillsOrError: PartitionBackfillsOrError; partitionSetOrError: PartitionSetOrError; @@ -3750,6 +3717,7 @@ export type Query = { runOrError: RunOrError; runTagKeysOrError: Maybe; runTagsOrError: Maybe; + runsFeedOrError: RunsFeedConnectionOrError; runsOrError: RunsOrError; scheduleOrError: ScheduleOrError; scheduler: SchedulerOrError; @@ -3890,11 +3858,6 @@ export type QueryLogsForRunArgs = { runId: Scalars['ID']['input']; }; -export type QueryMegaRunsOrErrorArgs = { - cursor?: InputMaybe; - limit?: InputMaybe; -}; - export type QueryPartitionBackfillOrErrorArgs = { backfillId: Scalars['String']['input']; }; @@ -3967,6 +3930,11 @@ export type QueryRunTagsOrErrorArgs = { valuePrefix?: InputMaybe; }; +export type QueryRunsFeedOrErrorArgs = { + cursor?: InputMaybe; + limit?: InputMaybe; +}; + export type QueryRunsOrErrorArgs = { cursor?: InputMaybe; filter?: InputMaybe; @@ -4401,8 +4369,8 @@ export type ResumeBackfillSuccess = { backfillId: Scalars['String']['output']; }; -export type Run = MegaRun & - PipelineRun & { +export type Run = PipelineRun & + RunsFeedEntry & { __typename: 'Run'; assetCheckSelection: Maybe>; assetMaterializations: Array; @@ -4435,7 +4403,7 @@ export type Run = MegaRun & runConfigYaml: Scalars['String']['output']; runId: Scalars['String']['output']; runStatus: RunStatus; - runType: MegaRunType; + runType: RunsFeedType; solidSelection: Maybe>; startTime: Maybe; stats: RunStatsSnapshotOrError; @@ -4743,6 +4711,33 @@ export type Runs = PipelineRuns & { results: Array; }; +export type RunsFeedConnection = { + __typename: 'RunsFeedConnection'; + cursor: Scalars['String']['output']; + hasMore: Scalars['Boolean']['output']; + results: Array; +}; + +export type RunsFeedConnectionOrError = PythonError | RunsFeedConnection; + +export type RunsFeedEntry = { + assetCheckSelection: Maybe>; + assetSelection: Maybe>; + creationTime: Scalars['Float']['output']; + endTime: Maybe; + jobName: Maybe; + runId: Scalars['String']['output']; + runStatus: Maybe; + runType: RunsFeedType; + startTime: Maybe; + tags: Array; +}; + +export enum RunsFeedType { + BACKFILL = 'BACKFILL', + RUN = 'RUN', +} + export type RunsFilter = { createdAfter?: InputMaybe; createdBefore?: InputMaybe; @@ -9878,67 +9873,6 @@ export const buildMaterializedPartitionRangeStatuses2D = ( }; }; -export const buildMegaRun = ( - overrides?: Partial, - _relationshipsToOmit: Set = new Set(), -): {__typename: 'MegaRun'} & MegaRun => { - const relationshipsToOmit: Set = new Set(_relationshipsToOmit); - relationshipsToOmit.add('MegaRun'); - return { - __typename: 'MegaRun', - assetCheckSelection: - overrides && overrides.hasOwnProperty('assetCheckSelection') - ? overrides.assetCheckSelection! - : [], - assetSelection: - overrides && overrides.hasOwnProperty('assetSelection') ? overrides.assetSelection! : [], - creationTime: - overrides && overrides.hasOwnProperty('creationTime') ? overrides.creationTime! : 1.1, - endTime: overrides && overrides.hasOwnProperty('endTime') ? overrides.endTime! : 2.59, - jobName: overrides && overrides.hasOwnProperty('jobName') ? overrides.jobName! : 'rerum', - runId: overrides && overrides.hasOwnProperty('runId') ? overrides.runId! : 'nesciunt', - runStatus: - overrides && overrides.hasOwnProperty('runStatus') - ? overrides.runStatus! - : RunStatus.CANCELED, - runType: - overrides && overrides.hasOwnProperty('runType') ? overrides.runType! : MegaRunType.BACKFILL, - startTime: overrides && overrides.hasOwnProperty('startTime') ? overrides.startTime! : 7.11, - tags: overrides && overrides.hasOwnProperty('tags') ? overrides.tags! : [], - }; -}; - -export const buildMegaRuns = ( - overrides?: Partial, - _relationshipsToOmit: Set = new Set(), -): {__typename: 'MegaRuns'} & MegaRuns => { - const relationshipsToOmit: Set = new Set(_relationshipsToOmit); - relationshipsToOmit.add('MegaRuns'); - return { - __typename: 'MegaRuns', - results: - overrides && overrides.hasOwnProperty('results') - ? overrides.results! - : relationshipsToOmit.has('MegaRunsConnection') - ? ({} as MegaRunsConnection) - : buildMegaRunsConnection({}, relationshipsToOmit), - }; -}; - -export const buildMegaRunsConnection = ( - overrides?: Partial, - _relationshipsToOmit: Set = new Set(), -): {__typename: 'MegaRunsConnection'} & MegaRunsConnection => { - const relationshipsToOmit: Set = new Set(_relationshipsToOmit); - relationshipsToOmit.add('MegaRunsConnection'); - return { - __typename: 'MegaRunsConnection', - cursor: overrides && overrides.hasOwnProperty('cursor') ? overrides.cursor! : 'tempore', - hasMore: overrides && overrides.hasOwnProperty('hasMore') ? overrides.hasMore! : true, - results: overrides && overrides.hasOwnProperty('results') ? overrides.results! : [], - }; -}; - export const buildMessageEvent = ( overrides?: Partial, _relationshipsToOmit: Set = new Set(), @@ -10851,7 +10785,7 @@ export const buildPartitionBackfill = ( ? overrides.runStatus! : RunStatus.CANCELED, runType: - overrides && overrides.hasOwnProperty('runType') ? overrides.runType! : MegaRunType.BACKFILL, + overrides && overrides.hasOwnProperty('runType') ? overrides.runType! : RunsFeedType.BACKFILL, runs: overrides && overrides.hasOwnProperty('runs') ? overrides.runs! : [], startTime: overrides && overrides.hasOwnProperty('startTime') ? overrides.startTime! : 9.35, status: @@ -12039,12 +11973,6 @@ export const buildQuery = ( : relationshipsToOmit.has('EventConnection') ? ({} as EventConnection) : buildEventConnection({}, relationshipsToOmit), - megaRunsOrError: - overrides && overrides.hasOwnProperty('megaRunsOrError') - ? overrides.megaRunsOrError! - : relationshipsToOmit.has('InvalidPipelineRunsFilterError') - ? ({} as InvalidPipelineRunsFilterError) - : buildInvalidPipelineRunsFilterError({}, relationshipsToOmit), partitionBackfillOrError: overrides && overrides.hasOwnProperty('partitionBackfillOrError') ? overrides.partitionBackfillOrError! @@ -12142,6 +12070,12 @@ export const buildQuery = ( : relationshipsToOmit.has('PythonError') ? ({} as PythonError) : buildPythonError({}, relationshipsToOmit), + runsFeedOrError: + overrides && overrides.hasOwnProperty('runsFeedOrError') + ? overrides.runsFeedOrError! + : relationshipsToOmit.has('PythonError') + ? ({} as PythonError) + : buildPythonError({}, relationshipsToOmit), runsOrError: overrides && overrides.hasOwnProperty('runsOrError') ? overrides.runsOrError! @@ -12977,7 +12911,7 @@ export const buildRun = ( ? overrides.runStatus! : RunStatus.CANCELED, runType: - overrides && overrides.hasOwnProperty('runType') ? overrides.runType! : MegaRunType.BACKFILL, + overrides && overrides.hasOwnProperty('runType') ? overrides.runType! : RunsFeedType.BACKFILL, solidSelection: overrides && overrides.hasOwnProperty('solidSelection') ? overrides.solidSelection! : [], startTime: overrides && overrides.hasOwnProperty('startTime') ? overrides.startTime! : 2.52, @@ -13520,6 +13454,50 @@ export const buildRuns = ( }; }; +export const buildRunsFeedConnection = ( + overrides?: Partial, + _relationshipsToOmit: Set = new Set(), +): {__typename: 'RunsFeedConnection'} & RunsFeedConnection => { + const relationshipsToOmit: Set = new Set(_relationshipsToOmit); + relationshipsToOmit.add('RunsFeedConnection'); + return { + __typename: 'RunsFeedConnection', + cursor: overrides && overrides.hasOwnProperty('cursor') ? overrides.cursor! : 'iure', + hasMore: overrides && overrides.hasOwnProperty('hasMore') ? overrides.hasMore! : false, + results: overrides && overrides.hasOwnProperty('results') ? overrides.results! : [], + }; +}; + +export const buildRunsFeedEntry = ( + overrides?: Partial, + _relationshipsToOmit: Set = new Set(), +): {__typename: 'RunsFeedEntry'} & RunsFeedEntry => { + const relationshipsToOmit: Set = new Set(_relationshipsToOmit); + relationshipsToOmit.add('RunsFeedEntry'); + return { + __typename: 'RunsFeedEntry', + assetCheckSelection: + overrides && overrides.hasOwnProperty('assetCheckSelection') + ? overrides.assetCheckSelection! + : [], + assetSelection: + overrides && overrides.hasOwnProperty('assetSelection') ? overrides.assetSelection! : [], + creationTime: + overrides && overrides.hasOwnProperty('creationTime') ? overrides.creationTime! : 5.76, + endTime: overrides && overrides.hasOwnProperty('endTime') ? overrides.endTime! : 9.19, + jobName: overrides && overrides.hasOwnProperty('jobName') ? overrides.jobName! : 'sed', + runId: overrides && overrides.hasOwnProperty('runId') ? overrides.runId! : 'consequatur', + runStatus: + overrides && overrides.hasOwnProperty('runStatus') + ? overrides.runStatus! + : RunStatus.CANCELED, + runType: + overrides && overrides.hasOwnProperty('runType') ? overrides.runType! : RunsFeedType.BACKFILL, + startTime: overrides && overrides.hasOwnProperty('startTime') ? overrides.startTime! : 8.94, + tags: overrides && overrides.hasOwnProperty('tags') ? overrides.tags! : [], + }; +}; + export const buildRunsFilter = ( overrides?: Partial, _relationshipsToOmit: Set = new Set(), diff --git a/python_modules/dagster-graphql/dagster_graphql/implementation/fetch_runs.py b/python_modules/dagster-graphql/dagster_graphql/implementation/fetch_runs.py index b743163d21639..0ef6ad6c714a1 100644 --- a/python_modules/dagster-graphql/dagster_graphql/implementation/fetch_runs.py +++ b/python_modules/dagster-graphql/dagster_graphql/implementation/fetch_runs.py @@ -33,11 +33,11 @@ from ..schema.errors import GrapheneRunNotFoundError from ..schema.execution import GrapheneExecutionPlan from ..schema.logs.events import GrapheneRunStepStats - from ..schema.mega_run import GrapheneMegaRun from ..schema.pipelines.config import GraphenePipelineConfigValidationValid from ..schema.pipelines.pipeline import GrapheneEventConnection, GrapheneRun from ..schema.pipelines.pipeline_run_stats import GrapheneRunStatsSnapshot from ..schema.runs import GrapheneRunGroup, GrapheneRunTagKeys, GrapheneRunTags + from ..schema.runs_feed import GrapheneRunsFeedConnection from ..schema.util import ResolveInfo @@ -388,7 +388,7 @@ def get_logs_for_run( @record -class MegaRunCursor: +class RunsFeedCursor: run_cursor: Optional[str] backfill_cursor: Optional[str] @@ -398,7 +398,7 @@ def to_string(self) -> str: @staticmethod def from_string(serialized: Optional[str]): if serialized is None: - return MegaRunCursor( + return RunsFeedCursor( run_cursor=None, backfill_cursor=None, ) @@ -406,7 +406,7 @@ def from_string(serialized: Optional[str]): if len(parts) != 2: raise DagsterInvariantViolationError(f"Invalid cursor for querying runs: {serialized}") - return MegaRunCursor( + return RunsFeedCursor( run_cursor=parts[0] if parts[0] else None, backfill_cursor=parts[1] if parts[1] else None, ) @@ -430,30 +430,31 @@ def _fetch_runs_not_in_backfill( return runs[:limit] -def get_mega_runs( +def get_runs_feed_entries( graphene_info: "ResolveInfo", cursor: Optional[str] = None, limit: Optional[int] = None, -) -> Tuple[Sequence["GrapheneMegaRun"], str, bool]: +) -> "GrapheneRunsFeedConnection": """Returns a merged list of backfills and single runs (runs that are not part of a backfill), the cursor to fetch the next page, and a boolean indicating if there are more results to fetch. - Cursor format: run_id;backfill_id - see MegaRunCursor + Cursor format: run_id;backfill_id - see RunsFeedCursor """ from ..schema.backfill import GraphenePartitionBackfill from ..schema.pipelines.pipeline import GrapheneRun + from ..schema.runs_feed import GrapheneRunsFeedConnection check.opt_str_param(cursor, "cursor") check.opt_int_param(limit, "limit") instance = graphene_info.context.instance - mega_run_cursor = MegaRunCursor.from_string(cursor) + runs_feed_cursor = RunsFeedCursor.from_string(cursor) # if using limit, fetch limit+1 of each type to know if there are more than limit remaining fetch_limit = limit + 1 if limit else None - backfills = instance.get_backfills(cursor=mega_run_cursor.backfill_cursor, limit=fetch_limit) + backfills = instance.get_backfills(cursor=runs_feed_cursor.backfill_cursor, limit=fetch_limit) runs = _fetch_runs_not_in_backfill( - instance, cursor=mega_run_cursor.run_cursor, limit=fetch_limit + instance, cursor=runs_feed_cursor.run_cursor, limit=fetch_limit ) if ( @@ -471,40 +472,42 @@ def get_mega_runs( # case when limit was not passed, so we fetched all of the results has_more = False - all_mega_runs = [GraphenePartitionBackfill(backfill) for backfill in backfills] + [ + all_runs = [GraphenePartitionBackfill(backfill) for backfill in backfills] + [ GrapheneRun(run) for run in runs ] # order runs and backfills by create_time. typically we sort by storage id but that won't work here since # they are different tables - all_mega_runs = sorted( - all_mega_runs, + all_runs = sorted( + all_runs, key=lambda x: x.resolve_creationTime(graphene_info), # ideally could just do .creationTime reverse=True, ) if limit: - to_return = all_mega_runs[:limit] + to_return = all_runs[:limit] else: - to_return = all_mega_runs + to_return = all_runs new_run_cursor = None new_backfill_cursor = None - for mega_run in reversed(to_return): + for run in reversed(to_return): if new_run_cursor is not None and new_backfill_cursor is not None: break - if new_backfill_cursor is None and isinstance(mega_run, GraphenePartitionBackfill): - new_backfill_cursor = mega_run.id - if new_run_cursor is None and isinstance(mega_run, GrapheneRun): - new_run_cursor = mega_run.runId + if new_backfill_cursor is None and isinstance(run, GraphenePartitionBackfill): + new_backfill_cursor = run.id + if new_run_cursor is None and isinstance(run, GrapheneRun): + new_run_cursor = run.runId # if either of the new cursors are None, replace with the cursor passed in so the next call doesn't # restart at the top the table. - final_cursor = MegaRunCursor( - run_cursor=new_run_cursor if new_run_cursor else mega_run_cursor.run_cursor, + final_cursor = RunsFeedCursor( + run_cursor=new_run_cursor if new_run_cursor else runs_feed_cursor.run_cursor, backfill_cursor=new_backfill_cursor if new_backfill_cursor - else mega_run_cursor.backfill_cursor, + else runs_feed_cursor.backfill_cursor, ) - return to_return, final_cursor.to_string(), has_more + return GrapheneRunsFeedConnection( + results=to_return, cursor=final_cursor.to_string(), hasMore=has_more + ) diff --git a/python_modules/dagster-graphql/dagster_graphql/schema/backfill.py b/python_modules/dagster-graphql/dagster_graphql/schema/backfill.py index c6797af151807..109d65eea5075 100644 --- a/python_modules/dagster-graphql/dagster_graphql/schema/backfill.py +++ b/python_modules/dagster-graphql/dagster_graphql/schema/backfill.py @@ -47,8 +47,8 @@ GrapheneUnauthorizedError, create_execution_params_error_types, ) -from .mega_run import GrapheneMegaRun, GrapheneMegaRunType from .pipelines.config import GrapheneRunConfigValidationInvalid +from .runs_feed import GrapheneRunsFeedEntry, GrapheneRunsFeedEntryType from .util import ResolveInfo, non_null_list if TYPE_CHECKING: @@ -293,16 +293,16 @@ def resolve_assetBackfillStatuses(self, graphene_info: ResolveInfo): class GraphenePartitionBackfill(graphene.ObjectType): class Meta: - interfaces = (GrapheneMegaRun,) + interfaces = (GrapheneRunsFeedEntry,) name = "PartitionBackfill" id = graphene.NonNull(graphene.String) - runId = graphene.NonNull(graphene.String) # for MegaRun interface - dupe of id + runId = graphene.NonNull(graphene.String) # for RunsFeedEntry interface - dupe of id status = graphene.NonNull(GrapheneBulkActionStatus) runStatus = graphene.NonNull( GrapheneRunStatus - ) # for MegaRun interface - combines status with sub-run statuses + ) # for RunsFeedEntry interface - combines status with sub-run statuses partitionNames = graphene.List(graphene.NonNull(graphene.String)) isValidSerialization = graphene.NonNull(graphene.Boolean) numPartitions = graphene.Field(graphene.Int) @@ -312,10 +312,12 @@ class Meta: assetSelection = graphene.List(graphene.NonNull(GrapheneAssetKey)) partitionSetName = graphene.Field(graphene.String) timestamp = graphene.NonNull(graphene.Float) - creationTime = graphene.NonNull(graphene.Float) # for MegaRun interface - dupe of timestamp - startTime = graphene.Float() # for MegaRun interface - dupe of timestamp + creationTime = graphene.NonNull( + graphene.Float + ) # for RunsFeedEntry interface - dupe of timestamp + startTime = graphene.Float() # for RunsFeedEntry interface - dupe of timestamp endTimestamp = graphene.Field(graphene.Float) - endTime = graphene.Float() # for MegaRun interface - dupe of endTimestamp + endTime = graphene.Float() # for RunsFeedEntry interface - dupe of endTimestamp partitionSet = graphene.Field("dagster_graphql.schema.partition_sets.GraphenePartitionSet") runs = graphene.Field( non_null_list("dagster_graphql.schema.pipelines.pipeline.GrapheneRun"), @@ -352,11 +354,11 @@ class Meta: graphene.NonNull("dagster_graphql.schema.instigation.GrapheneInstigationEventConnection"), cursor=graphene.String(), ) - jobName = graphene.String() # for MegaRun interface - dupe of partitionSetName + jobName = graphene.String() # for RunsFeedEntry interface - dupe of partitionSetName assetCheckSelection = graphene.List( graphene.NonNull("dagster_graphql.schema.asset_checks.GrapheneAssetCheckHandle") ) - runType = graphene.NonNull(GrapheneMegaRunType) + runType = graphene.NonNull(GrapheneRunsFeedEntryType) def __init__(self, backfill_job: PartitionBackfill): self._backfill_job = check.inst_param(backfill_job, "backfill_job", PartitionBackfill) @@ -376,7 +378,7 @@ def __init__(self, backfill_job: PartitionBackfill): # creationTime=backfill_job.backfill_timestamp, startTime=backfill_job.backfill_timestamp, assetSelection=backfill_job.asset_selection, - runType=GrapheneMegaRunType.BACKFILL, + runType=GrapheneRunsFeedEntryType.BACKFILL, ) def _get_partition_set(self, graphene_info: ResolveInfo) -> Optional[ExternalPartitionSet]: diff --git a/python_modules/dagster-graphql/dagster_graphql/schema/mega_run.py b/python_modules/dagster-graphql/dagster_graphql/schema/mega_run.py deleted file mode 100644 index a19c0083f6091..0000000000000 --- a/python_modules/dagster-graphql/dagster_graphql/schema/mega_run.py +++ /dev/null @@ -1,69 +0,0 @@ -import graphene - -from ..implementation.fetch_runs import get_mega_runs -from .asset_key import GrapheneAssetKey -from .errors import GrapheneInvalidPipelineRunsFilterError, GraphenePythonError -from .util import ResolveInfo, non_null_list - - -class GrapheneMegaRunType(graphene.Enum): - BACKFILL = "BACKFILL" - RUN = "RUN" - - class Meta: - name = "MegaRunType" - - -class GrapheneMegaRun(graphene.Interface): - runId = graphene.NonNull(graphene.String) - runStatus = graphene.Field("dagster_graphql.schema.pipelines.pipeline.GrapheneRunStatus") - creationTime = graphene.NonNull(graphene.Float) - startTime = graphene.Float() - endTime = graphene.Float() - tags = non_null_list("dagster_graphql.schema.tags.GraphenePipelineTag") - jobName = graphene.String() - assetSelection = graphene.List(graphene.NonNull(GrapheneAssetKey)) - assetCheckSelection = graphene.List( - graphene.NonNull("dagster_graphql.schema.asset_checks.GrapheneAssetCheckHandle") - ) - runType = graphene.NonNull(GrapheneMegaRunType) - - class Meta: - name = "MegaRun" - - -class GrapheneMegaRunsConnection(graphene.ObjectType): - class Meta: - name = "MegaRunsConnection" - - results = non_null_list("dagster_graphql.schema.mega_run.GrapheneMegaRun") - cursor = graphene.NonNull(graphene.String) - hasMore = graphene.NonNull(graphene.Boolean) - - -class GrapheneMegaRuns(graphene.ObjectType): - results = graphene.NonNull(GrapheneMegaRunsConnection) - - class Meta: - name = "MegaRuns" - - def __init__(self, cursor, limit): - super().__init__() - - self._cursor = cursor - self._limit = limit - - def resolve_results(self, graphene_info: ResolveInfo): - results, cursor, has_more = get_mega_runs(graphene_info, self._cursor, self._limit) - return GrapheneMegaRunsConnection(results=results, cursor=cursor, hasMore=has_more) - - -class GrapheneMegaRunsOrError(graphene.Union): - class Meta: - types = (GrapheneMegaRuns, GrapheneInvalidPipelineRunsFilterError, GraphenePythonError) - name = "MegaRunsOrError" - - -types = [ - GrapheneMegaRunsOrError, -] 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 3391fa1587b05..fadd371f11199 100644 --- a/python_modules/dagster-graphql/dagster_graphql/schema/pipelines/pipeline.py +++ b/python_modules/dagster-graphql/dagster_graphql/schema/pipelines/pipeline.py @@ -44,9 +44,9 @@ GrapheneObservationEvent, GrapheneRunStepStats, ) -from ..mega_run import GrapheneMegaRun, GrapheneMegaRunType from ..repository_origin import GrapheneRepositoryOrigin from ..runs import GrapheneRunConfigData +from ..runs_feed import GrapheneRunsFeedEntry, GrapheneRunsFeedEntryType from ..schedules.schedules import GrapheneSchedule from ..sensors import GrapheneSensor from ..solids import ( @@ -328,7 +328,7 @@ class GrapheneRun(graphene.ObjectType): parentPipelineSnapshotId = graphene.String() repositoryOrigin = graphene.Field(GrapheneRepositoryOrigin) status = graphene.NonNull(GrapheneRunStatus) - runStatus = graphene.NonNull(GrapheneRunStatus) # for MegaRun interface - dupe of status + runStatus = graphene.NonNull(GrapheneRunStatus) # for RunsFeedEntry interface - dupe of status pipeline = graphene.NonNull(GraphenePipelineReference) pipelineName = graphene.NonNull(graphene.String) jobName = graphene.NonNull(graphene.String) @@ -364,10 +364,10 @@ class GrapheneRun(graphene.ObjectType): hasConcurrencyKeySlots = graphene.NonNull(graphene.Boolean) rootConcurrencyKeys = graphene.List(graphene.NonNull(graphene.String)) hasUnconstrainedRootNodes = graphene.NonNull(graphene.Boolean) - runType = graphene.NonNull(GrapheneMegaRunType) + runType = graphene.NonNull(GrapheneRunsFeedEntryType) class Meta: - interfaces = (GraphenePipelineRun, GrapheneMegaRun) + interfaces = (GraphenePipelineRun, GrapheneRunsFeedEntry) name = "Run" def __init__(self, record: RunRecord): @@ -378,7 +378,7 @@ def __init__(self, record: RunRecord): status=dagster_run.status.value, runStatus=dagster_run.status.value, mode=DEFAULT_MODE_NAME, - runType=GrapheneMegaRunType.RUN, + runType=GrapheneRunsFeedEntryType.RUN, ) self.dagster_run = dagster_run self._run_record = record diff --git a/python_modules/dagster-graphql/dagster_graphql/schema/roots/query.py b/python_modules/dagster-graphql/dagster_graphql/schema/roots/query.py index 7cd359cbef54b..ae3841d71c997 100644 --- a/python_modules/dagster-graphql/dagster_graphql/schema/roots/query.py +++ b/python_modules/dagster-graphql/dagster_graphql/schema/roots/query.py @@ -34,7 +34,7 @@ ) from dagster_graphql.implementation.fetch_env_vars import get_utilized_env_vars_or_error from dagster_graphql.implementation.fetch_logs import get_captured_log_metadata -from dagster_graphql.implementation.fetch_runs import get_assets_latest_info +from dagster_graphql.implementation.fetch_runs import get_assets_latest_info, get_runs_feed_entries from dagster_graphql.schema.asset_condition_evaluations import ( GrapheneAssetConditionEvaluation, GrapheneAssetConditionEvaluationRecordsOrError, @@ -148,7 +148,6 @@ GrapheneCapturedLogsMetadata, from_captured_log_data, ) -from ..mega_run import GrapheneMegaRuns, GrapheneMegaRunsOrError from ..partition_sets import GraphenePartitionSetOrError, GraphenePartitionSetsOrError from ..permissions import GraphenePermission from ..pipelines.config_result import GraphenePipelineConfigValidationResult @@ -167,6 +166,7 @@ GrapheneRunTagsOrError, parse_run_config_input, ) +from ..runs_feed import GrapheneRunsFeedConnectionOrError from ..schedules import GrapheneScheduleOrError, GrapheneSchedulerOrError, GrapheneSchedulesOrError from ..sensors import GrapheneSensorOrError, GrapheneSensorsOrError from ..test import GrapheneTestFields @@ -348,11 +348,11 @@ class Meta: runId=graphene.NonNull(graphene.ID), description="Retrieve a run by its run id.", ) - megaRunsOrError = graphene.Field( - graphene.NonNull(GrapheneMegaRunsOrError), + runsFeedOrError = graphene.Field( + graphene.NonNull(GrapheneRunsFeedConnectionOrError), cursor=graphene.String(), limit=graphene.Int(), - description="Retireve MegaRuns after applying cursor and limit.", + description="Retireve entries for the Runs Feed after applying cursor and limit.", ) runTagKeysOrError = graphene.Field( GrapheneRunTagKeysOrError, description="Retrieve the distinct tag keys from all runs." @@ -810,10 +810,10 @@ def resolve_runIdsOrError( async def resolve_runOrError(self, graphene_info: ResolveInfo, runId): return await gen_run_by_id(graphene_info, runId) - def resolve_megaRunsOrError( - self, _graphene_info: ResolveInfo, cursor: Optional[str] = None, limit: Optional[int] = None + def resolve_runsFeedOrError( + self, graphene_info: ResolveInfo, cursor: Optional[str] = None, limit: Optional[int] = None ): - return GrapheneMegaRuns(cursor=cursor, limit=limit) + return get_runs_feed_entries(graphene_info=graphene_info, cursor=cursor, limit=limit) @capture_error def resolve_partitionSetsOrError( diff --git a/python_modules/dagster-graphql/dagster_graphql/schema/runs_feed.py b/python_modules/dagster-graphql/dagster_graphql/schema/runs_feed.py new file mode 100644 index 0000000000000..c3594ee3a3cbe --- /dev/null +++ b/python_modules/dagster-graphql/dagster_graphql/schema/runs_feed.py @@ -0,0 +1,51 @@ +import graphene + +from .asset_key import GrapheneAssetKey +from .errors import GraphenePythonError +from .util import non_null_list + + +class GrapheneRunsFeedEntryType(graphene.Enum): + BACKFILL = "BACKFILL" + RUN = "RUN" + + class Meta: + name = "RunsFeedType" + + +class GrapheneRunsFeedEntry(graphene.Interface): + runId = graphene.NonNull(graphene.String) + runStatus = graphene.Field("dagster_graphql.schema.pipelines.pipeline.GrapheneRunStatus") + creationTime = graphene.NonNull(graphene.Float) + startTime = graphene.Float() + endTime = graphene.Float() + tags = non_null_list("dagster_graphql.schema.tags.GraphenePipelineTag") + jobName = graphene.String() + assetSelection = graphene.List(graphene.NonNull(GrapheneAssetKey)) + assetCheckSelection = graphene.List( + graphene.NonNull("dagster_graphql.schema.asset_checks.GrapheneAssetCheckHandle") + ) + runType = graphene.NonNull(GrapheneRunsFeedEntryType) + + class Meta: + name = "RunsFeedEntry" + + +class GrapheneRunsFeedConnection(graphene.ObjectType): + class Meta: + name = "RunsFeedConnection" + + results = non_null_list(GrapheneRunsFeedEntry) + cursor = graphene.NonNull(graphene.String) + hasMore = graphene.NonNull(graphene.Boolean) + + +class GrapheneRunsFeedConnectionOrError(graphene.Union): + class Meta: + types = (GrapheneRunsFeedConnection, GraphenePythonError) + name = "RunsFeedConnectionOrError" + + +types = [ + GrapheneRunsFeedConnectionOrError, +] diff --git a/python_modules/dagster-graphql/dagster_graphql_tests/graphql/test_mega_run.py b/python_modules/dagster-graphql/dagster_graphql_tests/graphql/test_runs_feed.py similarity index 61% rename from python_modules/dagster-graphql/dagster_graphql_tests/graphql/test_mega_run.py rename to python_modules/dagster-graphql/dagster_graphql_tests/graphql/test_runs_feed.py index f42f0bde66bb5..62bc2e1242bee 100644 --- a/python_modules/dagster-graphql/dagster_graphql_tests/graphql/test_mega_run.py +++ b/python_modules/dagster-graphql/dagster_graphql_tests/graphql/test_runs_feed.py @@ -5,18 +5,17 @@ from dagster._core.test_utils import create_run_for_test from dagster._core.utils import make_new_backfill_id from dagster._time import get_current_timestamp -from dagster_graphql.implementation.fetch_runs import MegaRunCursor +from dagster_graphql.implementation.fetch_runs import RunsFeedCursor from dagster_graphql.test.utils import execute_dagster_graphql from dagster_graphql_tests.graphql.graphql_context_test_suite import ( ExecutingGraphQLContextTestMatrix, ) -GET_MEGA_RUNS_QUERY = """ -query MegaRunsQuery($cursor: String, $limit: Int!) { - megaRunsOrError(cursor: $cursor, limit: $limit) { - ... on MegaRuns { - results { +GET_RUNS_FEED_QUERY = """ +query RunsFeedEntryQuery($cursor: String, $limit: Int!) { + runsFeedOrError(cursor: $cursor, limit: $limit) { + ... on RunsFeedConnection { results { runId runStatus @@ -38,7 +37,6 @@ } cursor hasMore - } } ... on PythonError { stack @@ -84,8 +82,8 @@ def _create_backfill(graphql_context) -> str: return backfill.backfill_id -class TestMegaRuns(ExecutingGraphQLContextTestMatrix): - def test_get_mega_runs(self, graphql_context): +class TestRunsFeed(ExecutingGraphQLContextTestMatrix): + def test_get_runs_feed(self, graphql_context): for _ in range(10): _create_run(graphql_context) time.sleep(CREATE_DELAY) @@ -93,7 +91,7 @@ def test_get_mega_runs(self, graphql_context): result = execute_dagster_graphql( graphql_context, - GET_MEGA_RUNS_QUERY, + GET_RUNS_FEED_QUERY, variables={ "limit": 10, "cursor": None, @@ -103,35 +101,35 @@ def test_get_mega_runs(self, graphql_context): assert not result.errors assert result.data - assert len(result.data["megaRunsOrError"]["results"]["results"]) == 10 + assert len(result.data["runsFeedOrError"]["results"]) == 10 prev_run_time = None - for res in result.data["megaRunsOrError"]["results"]["results"]: + for res in result.data["runsFeedOrError"]["results"]: if prev_run_time: assert res["creationTime"] <= prev_run_time prev_run_time = res["creationTime"] - assert result.data["megaRunsOrError"]["results"]["hasMore"] - old_cursor = result.data["megaRunsOrError"]["results"]["cursor"] + assert result.data["runsFeedOrError"]["hasMore"] + old_cursor = result.data["runsFeedOrError"]["cursor"] assert old_cursor is not None result = execute_dagster_graphql( graphql_context, - GET_MEGA_RUNS_QUERY, + GET_RUNS_FEED_QUERY, variables={ "limit": 10, "cursor": old_cursor, }, ) - assert len(result.data["megaRunsOrError"]["results"]["results"]) == 10 - for res in result.data["megaRunsOrError"]["results"]["results"]: + assert len(result.data["runsFeedOrError"]["results"]) == 10 + for res in result.data["runsFeedOrError"]["results"]: if prev_run_time: assert res["creationTime"] <= prev_run_time prev_run_time = res["creationTime"] - assert not result.data["megaRunsOrError"]["results"]["hasMore"] + assert not result.data["runsFeedOrError"]["hasMore"] - def test_get_mega_runs_ignores_backfill_runs(self, graphql_context): + def test_get_runs_feed_ignores_backfill_runs(self, graphql_context): for _ in range(10): _create_run_for_backfill(graphql_context, backfill_id="foo") time.sleep(CREATE_DELAY) @@ -139,7 +137,7 @@ def test_get_mega_runs_ignores_backfill_runs(self, graphql_context): result = execute_dagster_graphql( graphql_context, - GET_MEGA_RUNS_QUERY, + GET_RUNS_FEED_QUERY, variables={ "limit": 10, "cursor": None, @@ -149,17 +147,17 @@ def test_get_mega_runs_ignores_backfill_runs(self, graphql_context): assert not result.errors assert result.data - assert len(result.data["megaRunsOrError"]["results"]["results"]) == 10 + assert len(result.data["runsFeedOrError"]["results"]) == 10 prev_run_time = None - for res in result.data["megaRunsOrError"]["results"]["results"]: + for res in result.data["runsFeedOrError"]["results"]: if prev_run_time: assert res["creationTime"] <= prev_run_time prev_run_time = res["creationTime"] assert res["runType"] == "BACKFILL" - assert not result.data["megaRunsOrError"]["results"]["hasMore"] + assert not result.data["runsFeedOrError"]["hasMore"] - def test_get_mega_runs_inexact_limit(self, graphql_context): + def test_get_runs_feed_inexact_limit(self, graphql_context): for _ in range(10): _create_run(graphql_context) time.sleep(CREATE_DELAY) @@ -167,7 +165,7 @@ def test_get_mega_runs_inexact_limit(self, graphql_context): result = execute_dagster_graphql( graphql_context, - GET_MEGA_RUNS_QUERY, + GET_RUNS_FEED_QUERY, variables={ "limit": 15, "cursor": None, @@ -177,37 +175,37 @@ def test_get_mega_runs_inexact_limit(self, graphql_context): assert not result.errors assert result.data - assert len(result.data["megaRunsOrError"]["results"]["results"]) == 15 + assert len(result.data["runsFeedOrError"]["results"]) == 15 prev_run_time = None - for res in result.data["megaRunsOrError"]["results"]["results"]: + for res in result.data["runsFeedOrError"]["results"]: if prev_run_time: assert res["creationTime"] <= prev_run_time prev_run_time = res["creationTime"] - assert result.data["megaRunsOrError"]["results"]["hasMore"] - assert result.data["megaRunsOrError"]["results"]["cursor"] is not None + assert result.data["runsFeedOrError"]["hasMore"] + assert result.data["runsFeedOrError"]["cursor"] is not None result = execute_dagster_graphql( graphql_context, - GET_MEGA_RUNS_QUERY, + GET_RUNS_FEED_QUERY, variables={ "limit": 10, - "cursor": result.data["megaRunsOrError"]["results"]["cursor"], + "cursor": result.data["runsFeedOrError"]["cursor"], }, ) - assert len(result.data["megaRunsOrError"]["results"]["results"]) == 5 - for res in result.data["megaRunsOrError"]["results"]["results"]: + assert len(result.data["runsFeedOrError"]["results"]) == 5 + for res in result.data["runsFeedOrError"]["results"]: if prev_run_time: assert res["creationTime"] <= prev_run_time prev_run_time = res["creationTime"] - assert not result.data["megaRunsOrError"]["results"]["hasMore"] + assert not result.data["runsFeedOrError"]["hasMore"] - def test_get_mega_runs_no_runs_or_backfills_exist(self, graphql_context): + def test_get_runs_feed_no_runs_or_backfills_exist(self, graphql_context): result = execute_dagster_graphql( graphql_context, - GET_MEGA_RUNS_QUERY, + GET_RUNS_FEED_QUERY, variables={ "limit": 10, "cursor": None, @@ -217,10 +215,10 @@ def test_get_mega_runs_no_runs_or_backfills_exist(self, graphql_context): assert not result.errors assert result.data - assert len(result.data["megaRunsOrError"]["results"]["results"]) == 0 - assert not result.data["megaRunsOrError"]["results"]["hasMore"] + assert len(result.data["runsFeedOrError"]["results"]) == 0 + assert not result.data["runsFeedOrError"]["hasMore"] - def test_get_mega_runs_cursor_respected(self, graphql_context): + def test_get_runs_feed_cursor_respected(self, graphql_context): for _ in range(10): _create_run(graphql_context) time.sleep(CREATE_DELAY) @@ -228,7 +226,7 @@ def test_get_mega_runs_cursor_respected(self, graphql_context): result = execute_dagster_graphql( graphql_context, - GET_MEGA_RUNS_QUERY, + GET_RUNS_FEED_QUERY, variables={ "limit": 10, "cursor": None, @@ -238,31 +236,31 @@ def test_get_mega_runs_cursor_respected(self, graphql_context): assert not result.errors assert result.data - assert len(result.data["megaRunsOrError"]["results"]["results"]) == 10 + assert len(result.data["runsFeedOrError"]["results"]) == 10 prev_run_time = None - for res in result.data["megaRunsOrError"]["results"]["results"]: + for res in result.data["runsFeedOrError"]["results"]: if prev_run_time: assert res["creationTime"] <= prev_run_time prev_run_time = res["creationTime"] - assert result.data["megaRunsOrError"]["results"]["hasMore"] - assert result.data["megaRunsOrError"]["results"]["cursor"] is not None + assert result.data["runsFeedOrError"]["hasMore"] + assert result.data["runsFeedOrError"]["cursor"] is not None - old_cursor = MegaRunCursor.from_string(result.data["megaRunsOrError"]["results"]["cursor"]) + old_cursor = RunsFeedCursor.from_string(result.data["runsFeedOrError"]["cursor"]) run_cursor_run = graphql_context.instance.get_run_record_by_id(old_cursor.run_cursor) backfill_cursor_backfill = graphql_context.instance.get_backfill(old_cursor.backfill_cursor) result = execute_dagster_graphql( graphql_context, - GET_MEGA_RUNS_QUERY, + GET_RUNS_FEED_QUERY, variables={ "limit": 10, "cursor": old_cursor.to_string(), }, ) - assert len(result.data["megaRunsOrError"]["results"]["results"]) == 10 - for res in result.data["megaRunsOrError"]["results"]["results"]: + assert len(result.data["runsFeedOrError"]["results"]) == 10 + for res in result.data["runsFeedOrError"]["results"]: if prev_run_time: assert res["creationTime"] <= prev_run_time prev_run_time = res["creationTime"] @@ -273,9 +271,9 @@ def test_get_mega_runs_cursor_respected(self, graphql_context): assert res["creationTime"] <= run_cursor_run.create_timestamp.timestamp() assert res["creationTime"] <= backfill_cursor_backfill.backfill_timestamp - assert not result.data["megaRunsOrError"]["results"]["hasMore"] + assert not result.data["runsFeedOrError"]["hasMore"] - def test_get_mega_runs_one_backfill_long_ago(self, graphql_context): + def test_get_runs_feed_one_backfill_long_ago(self, graphql_context): backfill_id = _create_backfill(graphql_context) time.sleep(1) # to ensure that all runs are more recent than the backfill for _ in range(15): @@ -283,7 +281,7 @@ def test_get_mega_runs_one_backfill_long_ago(self, graphql_context): result = execute_dagster_graphql( graphql_context, - GET_MEGA_RUNS_QUERY, + GET_RUNS_FEED_QUERY, variables={ "limit": 10, "cursor": None, @@ -293,9 +291,9 @@ def test_get_mega_runs_one_backfill_long_ago(self, graphql_context): assert not result.errors assert result.data - assert len(result.data["megaRunsOrError"]["results"]["results"]) == 10 + assert len(result.data["runsFeedOrError"]["results"]) == 10 prev_run_time = None - for res in result.data["megaRunsOrError"]["results"]["results"]: + for res in result.data["runsFeedOrError"]["results"]: if prev_run_time: assert res["creationTime"] <= prev_run_time prev_run_time = res["creationTime"] @@ -303,41 +301,37 @@ def test_get_mega_runs_one_backfill_long_ago(self, graphql_context): # first 10 results should all be runs assert res["runType"] == "RUN" - assert result.data["megaRunsOrError"]["results"]["hasMore"] - assert result.data["megaRunsOrError"]["results"]["cursor"] is not None + assert result.data["runsFeedOrError"]["hasMore"] + assert result.data["runsFeedOrError"]["cursor"] is not None # no backfills have been returned yet, so backfill cursor should be None assert ( - MegaRunCursor.from_string( - result.data["megaRunsOrError"]["results"]["cursor"] - ).backfill_cursor + RunsFeedCursor.from_string(result.data["runsFeedOrError"]["cursor"]).backfill_cursor is None ) result = execute_dagster_graphql( graphql_context, - GET_MEGA_RUNS_QUERY, + GET_RUNS_FEED_QUERY, variables={ "limit": 10, - "cursor": result.data["megaRunsOrError"]["results"]["cursor"], + "cursor": result.data["runsFeedOrError"]["cursor"], }, ) - assert len(result.data["megaRunsOrError"]["results"]["results"]) == 6 - for res in result.data["megaRunsOrError"]["results"]["results"]: + assert len(result.data["runsFeedOrError"]["results"]) == 6 + for res in result.data["runsFeedOrError"]["results"]: if prev_run_time: assert res["creationTime"] <= prev_run_time prev_run_time = res["creationTime"] - assert not result.data["megaRunsOrError"]["results"]["hasMore"] - assert result.data["megaRunsOrError"]["results"]["cursor"] is not None + assert not result.data["runsFeedOrError"]["hasMore"] + assert result.data["runsFeedOrError"]["cursor"] is not None assert ( - MegaRunCursor.from_string( - result.data["megaRunsOrError"]["results"]["cursor"] - ).backfill_cursor + RunsFeedCursor.from_string(result.data["runsFeedOrError"]["cursor"]).backfill_cursor == backfill_id ) - def test_get_mega_runs_one_new_backfill(self, graphql_context): + def test_get_runs_feed_one_new_backfill(self, graphql_context): for _ in range(15): _create_run(graphql_context) @@ -346,7 +340,7 @@ def test_get_mega_runs_one_new_backfill(self, graphql_context): result = execute_dagster_graphql( graphql_context, - GET_MEGA_RUNS_QUERY, + GET_RUNS_FEED_QUERY, variables={ "limit": 10, "cursor": None, @@ -356,33 +350,31 @@ def test_get_mega_runs_one_new_backfill(self, graphql_context): assert not result.errors assert result.data - assert len(result.data["megaRunsOrError"]["results"]["results"]) == 10 + assert len(result.data["runsFeedOrError"]["results"]) == 10 prev_run_time = None - for res in result.data["megaRunsOrError"]["results"]["results"]: + for res in result.data["runsFeedOrError"]["results"]: if prev_run_time: assert res["creationTime"] <= prev_run_time prev_run_time = res["creationTime"] - assert result.data["megaRunsOrError"]["results"]["hasMore"] - assert result.data["megaRunsOrError"]["results"]["cursor"] is not None + assert result.data["runsFeedOrError"]["hasMore"] + assert result.data["runsFeedOrError"]["cursor"] is not None assert ( - MegaRunCursor.from_string( - result.data["megaRunsOrError"]["results"]["cursor"] - ).backfill_cursor + RunsFeedCursor.from_string(result.data["runsFeedOrError"]["cursor"]).backfill_cursor == backfill_id ) result = execute_dagster_graphql( graphql_context, - GET_MEGA_RUNS_QUERY, + GET_RUNS_FEED_QUERY, variables={ "limit": 10, - "cursor": result.data["megaRunsOrError"]["results"]["cursor"], + "cursor": result.data["runsFeedOrError"]["cursor"], }, ) - assert len(result.data["megaRunsOrError"]["results"]["results"]) == 6 - for res in result.data["megaRunsOrError"]["results"]["results"]: + assert len(result.data["runsFeedOrError"]["results"]) == 6 + for res in result.data["runsFeedOrError"]["results"]: if prev_run_time: assert res["creationTime"] <= prev_run_time prev_run_time = res["creationTime"] @@ -390,24 +382,21 @@ def test_get_mega_runs_one_new_backfill(self, graphql_context): # all remaining results should be runs assert res["runType"] == "RUN" - assert not result.data["megaRunsOrError"]["results"]["hasMore"] - assert result.data["megaRunsOrError"]["results"]["cursor"] is not None + assert not result.data["runsFeedOrError"]["hasMore"] + assert result.data["runsFeedOrError"]["cursor"] is not None # even though no backfill was returned, the cursor should point to the backfill that was returned by the previous call assert ( - MegaRunCursor.from_string( - result.data["megaRunsOrError"]["results"]["cursor"] - ).backfill_cursor + RunsFeedCursor.from_string(result.data["runsFeedOrError"]["cursor"]).backfill_cursor == backfill_id ) - def test_get_mega_runs_backfill_created_between_calls(self, graphql_context): - # TestMegaRuns::test_get_mega_runs_backfill_created_between_calls[sqlite_with_default_run_launcher_managed_grpc_env] + def test_get_runs_feed_backfill_created_between_calls(self, graphql_context): for _ in range(10): _create_run(graphql_context) result = execute_dagster_graphql( graphql_context, - GET_MEGA_RUNS_QUERY, + GET_RUNS_FEED_QUERY, variables={ "limit": 5, "cursor": None, @@ -417,19 +406,17 @@ def test_get_mega_runs_backfill_created_between_calls(self, graphql_context): assert not result.errors assert result.data - assert len(result.data["megaRunsOrError"]["results"]["results"]) == 5 + assert len(result.data["runsFeedOrError"]["results"]) == 5 prev_run_time = None - for res in result.data["megaRunsOrError"]["results"]["results"]: + for res in result.data["runsFeedOrError"]["results"]: if prev_run_time: assert res["creationTime"] <= prev_run_time prev_run_time = res["creationTime"] - assert result.data["megaRunsOrError"]["results"]["hasMore"] - assert result.data["megaRunsOrError"]["results"]["cursor"] is not None + assert result.data["runsFeedOrError"]["hasMore"] + assert result.data["runsFeedOrError"]["cursor"] is not None assert ( - MegaRunCursor.from_string( - result.data["megaRunsOrError"]["results"]["cursor"] - ).backfill_cursor + RunsFeedCursor.from_string(result.data["runsFeedOrError"]["cursor"]).backfill_cursor is None ) @@ -438,18 +425,18 @@ def test_get_mega_runs_backfill_created_between_calls(self, graphql_context): result = execute_dagster_graphql( graphql_context, - GET_MEGA_RUNS_QUERY, + GET_RUNS_FEED_QUERY, variables={ "limit": 10, - "cursor": result.data["megaRunsOrError"]["results"]["cursor"], + "cursor": result.data["runsFeedOrError"]["cursor"], }, ) # TODO - should this next query include the new backfill? Which maybe # means that the cursor needs to hold a timestamp as well that we compare results to - # assert len(result.data["megaRunsOrError"]["results"]["results"]) == 5 - # for res in result.data["megaRunsOrError"]["results"]["results"]: + # assert len(result.data["runsFeedOrError"]["results"]) == 5 + # for res in result.data["runsFeedOrError"]["results"]: # if prev_run_time: # assert res["creationTime"] <= prev_run_time # prev_run_time = res["creationTime"] @@ -457,6 +444,6 @@ def test_get_mega_runs_backfill_created_between_calls(self, graphql_context): # # the newly created backfill should not be returned? # assert res["runType"] == "RUN" - # assert not result.data["megaRunsOrError"]["results"]["hasMore"] - # assert result.data["megaRunsOrError"]["results"]["cursor"] is not None - # assert MegaRunCursor.from_string(result.data["megaRunsOrError"]["results"]["cursor"]).backfill_cursor is None + # assert not result.data["runsFeedOrError"]["hasMore"] + # assert result.data["runsFeedOrError"]["cursor"] is not None + # assert RunsFeedCursor.from_string(result.data["runsFeedOrError"]["cursor"]).backfill_cursor is None