Exemplo n.º 1
0
    def build(pipeline_def, run_config=None, mode=None):
        '''This method validates a given run config against the pipeline config schema. If
        successful, we instantiate an EnvironmentConfig object.

        In case the run_config is invalid, this method raises a DagsterInvalidConfigError
        '''
        from dagster.config.validate import process_config
        from .composite_descent import composite_descent

        check.inst_param(pipeline_def, 'pipeline_def', PipelineDefinition)
        run_config = check.opt_dict_param(run_config, 'run_config')
        check.opt_str_param(mode, 'mode')

        mode = mode or pipeline_def.get_default_mode_name()
        environment_type = create_environment_type(pipeline_def, mode)

        config_evr = process_config(environment_type, run_config)
        if not config_evr.success:
            raise DagsterInvalidConfigError(
                'Error in config for pipeline {}'.format(pipeline_def.name),
                config_evr.errors,
                run_config,
            )

        config_value = config_evr.value

        mode_def = pipeline_def.get_mode_definition(mode)
        resource_configs = config_value.get('resources', {})
        processed_resource_configs = {}
        for resource_key, resource_def in mode_def.resource_defs.items():
            resource_config = resource_configs.get(resource_key, {})
            resource_config_evr = resource_def.process_config(resource_config)
            if not resource_config_evr.success:
                raise DagsterInvalidConfigError(
                    'Error in config for resource {}'.format(resource_key),
                    resource_config_evr.errors,
                    resource_config,
                )
            else:
                processed_resource_configs[
                    resource_key] = resource_config_evr.value

        solid_config_dict = composite_descent(pipeline_def,
                                              config_value.get('solids', {}))
        # TODO:  replace this with a simple call to from_dict of the config.get when ready to fully deprecate
        temp_intermed = config_value.get('intermediate_storage')
        if config_value.get('storage'):
            if temp_intermed is None:
                temp_intermed = {EmptyIntermediateStoreBackcompatConfig(): {}}

        return EnvironmentConfig(
            solids=solid_config_dict,
            execution=ExecutionConfig.from_dict(config_value.get('execution')),
            storage=StorageConfig.from_dict(config_value.get('storage')),
            intermediate_storage=IntermediateStorageConfig.from_dict(
                temp_intermed),
            loggers=config_value.get('loggers'),
            original_config_dict=run_config,
            resources=processed_resource_configs,
        )
Exemplo n.º 2
0
    def build(pipeline_def, environment_dict=None, mode=None):
        '''This method validates a given environment dict against the pipeline config schema. If
        successful, we instantiate an EnvironmentConfig object.

        In case the environment_dict is invalid, this method raises a DagsterInvalidConfigError
        '''
        from dagster.config.validate import process_config
        from .composite_descent import composite_descent

        check.inst_param(pipeline_def, 'pipeline_def', PipelineDefinition)
        environment_dict = check.opt_dict_param(environment_dict,
                                                'environment_dict')
        check.opt_str_param(mode, 'mode')

        mode = mode or pipeline_def.get_default_mode_name()
        environment_type = create_environment_type(pipeline_def, mode)

        config_evr = process_config(environment_type, environment_dict)
        if not config_evr.success:
            raise DagsterInvalidConfigError(
                'Error in config for pipeline {}'.format(pipeline_def.name),
                config_evr.errors,
                environment_dict,
            )

        config_value = config_evr.value

        solid_config_dict = composite_descent(pipeline_def,
                                              config_value.get('solids', {}))

        return EnvironmentConfig(
            solids=solid_config_dict,
            execution=ExecutionConfig.from_dict(config_value.get('execution')),
            storage=StorageConfig.from_dict(config_value.get('storage')),
            loggers=config_value.get('loggers'),
            original_config_dict=environment_dict,
            resources=config_value.get('resources'),
        )
Exemplo n.º 3
0
    def build(pipeline_def, run_config=None, mode=None):
        """This method validates a given run config against the pipeline config schema. If
        successful, we instantiate an EnvironmentConfig object.

        In case the run_config is invalid, this method raises a DagsterInvalidConfigError
        """
        from dagster.config.validate import process_config
        from dagster.core.definitions.executor import ExecutorDefinition
        from dagster.core.definitions.intermediate_storage import IntermediateStorageDefinition
        from .composite_descent import composite_descent

        check.inst_param(pipeline_def, "pipeline_def", PipelineDefinition)
        run_config = check.opt_dict_param(run_config, "run_config")
        check.opt_str_param(mode, "mode")

        mode = mode or pipeline_def.get_default_mode_name()
        environment_type = create_environment_type(pipeline_def, mode)

        config_evr = process_config(
            environment_type, run_config_storage_field_backcompat(run_config))
        if not config_evr.success:
            raise DagsterInvalidConfigError(
                "Error in config for pipeline {}".format(pipeline_def.name),
                config_evr.errors,
                run_config,
            )

        config_value = config_evr.value

        mode_def = pipeline_def.get_mode_definition(mode)

        config_mapped_intermediate_storage_configs = config_map_objects(
            config_value,
            mode_def.intermediate_storage_defs,
            "intermediate_storage",
            IntermediateStorageDefinition,
            "intermediate storage",
        )

        config_mapped_execution_configs = config_map_objects(
            config_value, mode_def.executor_defs, "execution",
            ExecutorDefinition, "executor")

        config_mapped_resource_configs = config_map_resources(
            pipeline_def, config_value, mode)
        config_mapped_logger_configs = config_map_loggers(
            pipeline_def, config_value, mode)

        solid_config_dict = composite_descent(pipeline_def,
                                              config_value.get("solids", {}),
                                              mode_def.resource_defs)

        return EnvironmentConfig(
            solids=solid_config_dict,
            execution=ExecutionConfig.from_dict(
                config_mapped_execution_configs),
            intermediate_storage=IntermediateStorageConfig.from_dict(
                config_mapped_intermediate_storage_configs),
            loggers=config_mapped_logger_configs,
            original_config_dict=run_config,
            resources=config_mapped_resource_configs,
            mode=mode,
        )
Exemplo n.º 4
0
    def build(pipeline_def, run_config=None, mode=None):
        """This method validates a given run config against the pipeline config schema. If
        successful, we instantiate an EnvironmentConfig object.

        In case the run_config is invalid, this method raises a DagsterInvalidConfigError
        """
        from dagster.config.validate import process_config
        from dagster.core.definitions.executor import ExecutorDefinition
        from dagster.core.definitions.intermediate_storage import IntermediateStorageDefinition
        from dagster.core.definitions.system_storage import SystemStorageDefinition
        from .composite_descent import composite_descent

        check.inst_param(pipeline_def, "pipeline_def", PipelineDefinition)
        run_config = check.opt_dict_param(run_config, "run_config")
        check.opt_str_param(mode, "mode")

        mode = mode or pipeline_def.get_default_mode_name()
        environment_type = create_environment_type(pipeline_def, mode)

        config_evr = process_config(environment_type, run_config)
        if not config_evr.success:
            raise DagsterInvalidConfigError(
                "Error in config for pipeline {}".format(pipeline_def.name),
                config_evr.errors,
                run_config,
            )

        config_value = config_evr.value

        mode_def = pipeline_def.get_mode_definition(mode)
        config_mapped_intermediate_storage_configs = config_map_objects(
            config_value,
            mode_def.intermediate_storage_defs,
            "intermediate_storage",
            IntermediateStorageDefinition,
            "intermediate storage",
        )
        # TODO:  replace this with a simple call to from_dict of config_mapped_intermediate_storage_configs when ready to fully deprecate
        # TODO:  tracking: https://github.com/dagster-io/dagster/issues/2705
        temp_intermed = config_mapped_intermediate_storage_configs
        if config_value.get("storage") and temp_intermed is None:
            temp_intermed = {EmptyIntermediateStoreBackcompatConfig(): {}}

        config_mapped_execution_configs = config_map_objects(
            config_value, mode_def.executor_defs, "execution",
            ExecutorDefinition, "executor")
        config_mapped_system_storage_configs = config_map_objects(
            config_value,
            mode_def.system_storage_defs,
            "storage",
            SystemStorageDefinition,
            "system storage",
        )

        config_mapped_resource_configs = config_map_resources(
            pipeline_def, config_value, mode)
        config_mapped_logger_configs = config_map_loggers(
            pipeline_def, config_value, mode)

        solid_config_dict = composite_descent(pipeline_def,
                                              config_value.get("solids", {}))

        return EnvironmentConfig(
            solids=solid_config_dict,
            execution=ExecutionConfig.from_dict(
                config_mapped_execution_configs),
            storage=StorageConfig.from_dict(
                config_mapped_system_storage_configs),
            intermediate_storage=IntermediateStorageConfig.from_dict(
                temp_intermed),
            loggers=config_mapped_logger_configs,
            original_config_dict=run_config,
            resources=config_mapped_resource_configs,
        )