Esempio n. 1
0
def mock_snapshot_provider(image, command, volumes):
    repo_snapshot = RepositorySnapshot.from_repository_definition(noop_repo())
    with open(
            os.path.abspath(
                os.path.join(list(volumes.keys())[0], 'asuperuniqueid.json')),
            'w+') as fp:
        fp.write(serialize_dagster_namedtuple(repo_snapshot))
Esempio n. 2
0
def define_test_snapshot_context():
    return DagsterSnapshotGraphQLContext(
        instance=DagsterInstance.ephemeral(),
        execution_manager=SynchronousExecutionManager(),
        repository_snapshot=RepositorySnapshot.from_repository_definition(
            define_repository()),
    )
Esempio n. 3
0
def test_create_app_with_snapshot():
    handle = ExecutionTargetHandle.for_repo_yaml(
        file_relative_path(__file__, './repository.yaml'))
    repository_snapshot = RepositorySnapshot.from_repository_definition(
        handle.build_repository_definition())
    assert create_app_with_snapshot(repository_snapshot,
                                    DagsterInstance.ephemeral())
Esempio n. 4
0
def snapshot_command(output_file, **kwargs):
    handle = handle_for_repo_cli_args(kwargs)

    # add the path for the cwd so imports in dynamically loaded code work correctly
    sys.path.append(os.getcwd())

    definition = handle.entrypoint.perform_load()
    repository_snapshot = RepositorySnapshot.from_repository_definition(definition)
    with open(os.path.abspath(output_file), 'w+') as fp:
        fp.write(serialize_dagster_namedtuple(repository_snapshot))
Esempio n. 5
0
def get_repository_snapshot_from_cli_args(cli_args):
    if cli_args.get('image'):
        _cli_load_invariant(
            is_module_available('docker'),
            msg='--image is not supported without dagster[docker] or the Python package docker installed.',
        )
        return get_container_snapshot(cli_args.get('image'))
    return RepositorySnapshot.from_repository_definition(
        handle_for_repo_cli_args(cli_args).build_repository_definition()
    )
Esempio n. 6
0
def test_container_snapshot_provider(mocker):
    mocker.patch('dagster.core.definitions.container.uuid4',
                 return_value='asuperuniqueid')

    execute_container_mock = mocker.patch(
        'dagster.core.definitions.container.run_serialized_container_command',
        side_effect=mock_snapshot_provider,
    )
    snapshot = get_container_snapshot("foo:latest")
    execute_container_mock.assert_called_with(
        image="foo:latest",
        command='dagster repository snapshot {}'.format(
            os.path.join('/data', 'asuperuniqueid.json')),
        volumes=mocker.ANY,
    )
    assert isinstance(snapshot, RepositorySnapshot)
    assert snapshot == RepositorySnapshot.from_repository_definition(
        noop_repo())
def test_repository_snap_all_props():
    @solid
    def noop_solid(_):
        pass

    @pipeline
    def noop_pipeline():
        noop_solid()

    repo = RepositoryDefinition(name='noop_repo',
                                pipeline_defs=[noop_pipeline])
    repo_snap = RepositorySnapshot.from_repository_definition(repo)

    assert repo_snap.name == 'noop_repo'
    assert len(repo_snap.pipeline_snapshots) == 1
    assert isinstance(repo_snap.pipeline_snapshots[0], PipelineSnapshot)
    assert repo_snap.pipeline_snapshots[0].name == 'noop_pipeline'
    assert repo_snap.pipeline_snapshots[0].description is None
    assert repo_snap.pipeline_snapshots[0].tags == {}
def test_repository_snap_empty():
    repo = RepositoryDefinition(name='empty_repo', pipeline_defs=[])
    repo_snap = RepositorySnapshot.from_repository_definition(repo)
    assert repo_snap.name == 'empty_repo'
    assert len(repo_snap.pipeline_snapshots) == 0