diff --git a/.bumpversion.cfg b/.bumpversion.cfg index 98ef68c6..879c212f 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 2.2.0.dev1 +current_version = 3.0.0.dev0 commit = False tag = False parse = (?P\d+)\.(?P\d+)\.(?P\d+)(\.(?P[a-z]+)(?P\d+))? diff --git a/README-dev.md b/README-dev.md index 61c23ce7..34540f17 100644 --- a/README-dev.md +++ b/README-dev.md @@ -125,17 +125,17 @@ To run blackbox tests, follow these steps: 2. Navigate to the app-gate directory and start tests using `git blackbox`. For the guide on which test suite to use, see the next sections. -At a minimum, each pull request should pass `appdata_python_samples` and `appdata_sanity` tests with a direct or staged plugin. +At a minimum, each pull request should pass `appdata_python_samples` and `appdata_basic` tests with a direct or staged plugin. See the section below for the description of each test suite. #### Blackbox tests targeting wrappers (mostly Delphix Engine workflows) * appdata_python_samples (sample plugins from the app-gate): `git blackbox -s appdata_python_samples --extra-params="-p virt-sdk-repo=https://github.com//virtualization-sdk.git -p virt-sdk-branch=my-feature"`, -* appdata_sanity with a direct Python plugin on CentOS 7.3: `git blackbox -s appdata_sanity -c APPDATA_PYTHON_DIRECT_CENTOS73 -a --extra-params="-p virt-sdk-repo=https://github.com//virtualization-sdk.git -p virt-sdk-branch=my-feature"`, -* appdata_sanity with a staged Python plugin on CentOS 7.3: `git blackbox -s appdata_sanity -c APPDATA_PYTHON_STAGED_CENTOS73 -a --extra-params="-p virt-sdk-repo=https://github.com//virtualization-sdk.git -p virt-sdk-branch=my-feature"`. +* appdata_basic with a direct Python plugin on CentOS 7.3: `git blackbox -s appdata_basic -c APPDATA_PYTHON_DIRECT_CENTOS73 -a --extra-params="-p virt-sdk-repo=https://github.com//virtualization-sdk.git -p virt-sdk-branch=my-feature"`, +* appdata_basic with a staged Python plugin on CentOS 7.3: `git blackbox -s appdata_basic -c APPDATA_PYTHON_STAGED_CENTOS73 -a --extra-params="-p virt-sdk-repo=https://github.com//virtualization-sdk.git -p virt-sdk-branch=my-feature"`. #### Blackbox tests targeting the CLI (~80% CLI tests) * virtualization_sdk (installs and tests a direct Python plugin on Ubuntu 18): `git blackbox -s virtualization_sdk -c APPDATA_SDK_UBUNTU18_DIRECT_CENTOS73 --extra-params="-p virt-sdk-repo=https://github.com//virtualization-sdk.git -p virt-sdk-branch=my-feature"`, * virtualization_sdk (installs and tests a staged Python plugin on Ubuntu 18): -`git blackbox -s virtualization_sdk -c APPDATA_SDK_UBUNTU18_STAGED_CENTOS73 --extra-params="-p virt-sdk-repo=https://github.com//virtualization-sdk.git -p virt-sdk-branch=my-feature"`. \ No newline at end of file +`git blackbox -s virtualization_sdk -c APPDATA_SDK_UBUNTU18_STAGED_CENTOS73 --extra-params="-p virt-sdk-repo=https://github.com//virtualization-sdk.git -p virt-sdk-branch=my-feature"`. diff --git a/common/setup.py b/common/setup.py index a5e92681..985b4ba3 100644 --- a/common/setup.py +++ b/common/setup.py @@ -4,7 +4,7 @@ PYTHON_SRC = 'src/main/python' install_requires = [ - "dvp-api == 1.4.0.dev10", + "dvp-api == 1.4.0.dev12", ] with open(os.path.join(PYTHON_SRC, 'dlpx/virtualization/common/VERSION')) as version_file: diff --git a/common/src/main/python/dlpx/virtualization/common/VERSION b/common/src/main/python/dlpx/virtualization/common/VERSION index f1855a71..4e0e00e1 100644 --- a/common/src/main/python/dlpx/virtualization/common/VERSION +++ b/common/src/main/python/dlpx/virtualization/common/VERSION @@ -1 +1 @@ -2.2.0.dev1 \ No newline at end of file +3.0.0.dev0 \ No newline at end of file diff --git a/dvp/src/main/python/dlpx/virtualization/VERSION b/dvp/src/main/python/dlpx/virtualization/VERSION index f1855a71..4e0e00e1 100644 --- a/dvp/src/main/python/dlpx/virtualization/VERSION +++ b/dvp/src/main/python/dlpx/virtualization/VERSION @@ -1 +1 @@ -2.2.0.dev1 \ No newline at end of file +3.0.0.dev0 \ No newline at end of file diff --git a/libs/setup.py b/libs/setup.py index 1713aa99..e59da92d 100644 --- a/libs/setup.py +++ b/libs/setup.py @@ -7,7 +7,7 @@ version = version_file.read().strip() install_requires = [ - "dvp-api == 1.4.0.dev10", + "dvp-api == 1.4.0.dev12", "dvp-common == {}".format(version) ] diff --git a/libs/src/main/python/dlpx/virtualization/libs/VERSION b/libs/src/main/python/dlpx/virtualization/libs/VERSION index f1855a71..4e0e00e1 100644 --- a/libs/src/main/python/dlpx/virtualization/libs/VERSION +++ b/libs/src/main/python/dlpx/virtualization/libs/VERSION @@ -1 +1 @@ -2.2.0.dev1 \ No newline at end of file +3.0.0.dev0 \ No newline at end of file diff --git a/platform/setup.py b/platform/setup.py index 3d9daf3c..5944d1e5 100644 --- a/platform/setup.py +++ b/platform/setup.py @@ -7,7 +7,7 @@ version = version_file.read().strip() install_requires = [ - "dvp-api == 1.4.0.dev10", + "dvp-api == 1.4.0.dev12", "dvp-common == {}".format(version), "enum34;python_version < '3.4'", ] diff --git a/platform/src/main/python/dlpx/virtualization/platform/VERSION b/platform/src/main/python/dlpx/virtualization/platform/VERSION index f1855a71..4e0e00e1 100644 --- a/platform/src/main/python/dlpx/virtualization/platform/VERSION +++ b/platform/src/main/python/dlpx/virtualization/platform/VERSION @@ -1 +1 @@ -2.2.0.dev1 \ No newline at end of file +3.0.0.dev0 \ No newline at end of file diff --git a/platform/src/main/python/dlpx/virtualization/platform/_linked.py b/platform/src/main/python/dlpx/virtualization/platform/_linked.py index d6e8c656..ade3ea30 100644 --- a/platform/src/main/python/dlpx/virtualization/platform/_linked.py +++ b/platform/src/main/python/dlpx/virtualization/platform/_linked.py @@ -121,6 +121,7 @@ def _internal_direct_pre_snapshot(self, request): from generated.definitions import RepositoryDefinition from generated.definitions import LinkedSourceDefinition from generated.definitions import SourceConfigDefinition + from generated.definitions import SnapshotParametersDefinition # # While linked.pre_snapshot() is not a required operation, this should @@ -141,10 +142,14 @@ def _internal_direct_pre_snapshot(self, request): json.loads(request.repository.parameters.json)) source_config = SourceConfigDefinition.from_dict( json.loads(request.source_config.parameters.json)) + snapshot_parameters = SnapshotParametersDefinition.from_dict( + json.loads(request.snapshot_parameters.parameters.json)) - self.pre_snapshot_impl(direct_source=direct_source, - repository=repository, - source_config=source_config) + self.pre_snapshot_impl( + direct_source=direct_source, + repository=repository, + source_config=source_config, + optional_snapshot_parameters=snapshot_parameters) direct_pre_snapshot_response = platform_pb2.DirectPreSnapshotResponse() direct_pre_snapshot_response.return_value.CopyFrom( @@ -173,6 +178,7 @@ def _internal_direct_post_snapshot(self, request): from generated.definitions import LinkedSourceDefinition from generated.definitions import SourceConfigDefinition from generated.definitions import SnapshotDefinition + from generated.definitions import SnapshotParametersDefinition def to_protobuf(snapshot): parameters = common_pb2.PluginDefinedObject() @@ -196,10 +202,14 @@ def to_protobuf(snapshot): json.loads(request.repository.parameters.json)) source_config = SourceConfigDefinition.from_dict( json.loads(request.source_config.parameters.json)) + snapshot_parameters = SnapshotParametersDefinition.from_dict( + json.loads(request.snapshot_parameters.parameters.json)) - snapshot = self.post_snapshot_impl(direct_source=direct_source, - repository=repository, - source_config=source_config) + snapshot = self.post_snapshot_impl( + direct_source=direct_source, + repository=repository, + source_config=source_config, + optional_snapshot_parameters=snapshot_parameters) # Validate that this is a SnapshotDefinition object if not isinstance(snapshot, SnapshotDefinition): @@ -266,10 +276,11 @@ def _internal_staged_pre_snapshot(self, request): snapshot_parameters = SnapshotParametersDefinition.from_dict( json.loads(request.snapshot_parameters.parameters.json)) - self.pre_snapshot_impl(staged_source=staged_source, - repository=repository, - source_config=source_config, - snapshot_parameters=snapshot_parameters) + self.pre_snapshot_impl( + staged_source=staged_source, + repository=repository, + source_config=source_config, + optional_snapshot_parameters=snapshot_parameters) response = platform_pb2.StagedPreSnapshotResponse() response.return_value.CopyFrom(platform_pb2.StagedPreSnapshotResult()) @@ -337,7 +348,7 @@ def to_protobuf(snapshot): staged_source=staged_source, repository=repository, source_config=source_config, - snapshot_parameters=snapshot_parameters) + optional_snapshot_parameters=snapshot_parameters) # Validate that this is a SnapshotDefinition object if not isinstance(snapshot, SnapshotDefinition): diff --git a/platform/src/test/python/dlpx/virtualization/fake_generated_definitions.py b/platform/src/test/python/dlpx/virtualization/fake_generated_definitions.py index 481c04a5..90fbcef6 100644 --- a/platform/src/test/python/dlpx/virtualization/fake_generated_definitions.py +++ b/platform/src/test/python/dlpx/virtualization/fake_generated_definitions.py @@ -101,14 +101,6 @@ def to_dict(self): class SnapshotParametersDefinition(Model): - """ - The appdata snapshot parameter will eventually be customizable but for now - this just follows the old appdata parameter where the delphix user can decide - if resync is true or not. This will now go into pre and post snapshot - operations rather than the resync operation. The main point is customers will - set this to be true is that this means the operation is a "hard" resync and - that all data should be refreshed. - """ def __init__(self, resync): self.swagger_types = {'resync': bool} diff --git a/platform/src/test/python/dlpx/virtualization/test_plugin.py b/platform/src/test/python/dlpx/virtualization/test_plugin.py index 5f90bdaa..0d0fa660 100755 --- a/platform/src/test/python/dlpx/virtualization/test_plugin.py +++ b/platform/src/test/python/dlpx/virtualization/test_plugin.py @@ -813,19 +813,23 @@ def source_config_discovery_impl(source_connection, repository): @staticmethod def test_direct_pre_snapshot(my_plugin, direct_source, repository, - source_config): + source_config, snapshot_parameters): @my_plugin.linked.pre_snapshot() - def mock_direct_pre_snapshot(direct_source, repository, source_config): - TestPlugin.assert_plugin_args(direct_source=direct_source, - repository=repository, - source_config=source_config) + def mock_direct_pre_snapshot(direct_source, repository, source_config, + optional_snapshot_parameters): + TestPlugin.assert_plugin_args( + direct_source=direct_source, + repository=repository, + source_config=source_config, + snapshot_parameters=optional_snapshot_parameters) return direct_pre_snapshot_request = platform_pb2.DirectPreSnapshotRequest() TestPlugin.setup_request(request=direct_pre_snapshot_request, direct_source=direct_source, repository=repository, - source_config=source_config) + source_config=source_config, + snapshot_parameters=snapshot_parameters) expected_result = platform_pb2.DirectPreSnapshotResult() direct_pre_snapshot_response = ( @@ -839,20 +843,24 @@ def mock_direct_pre_snapshot(direct_source, repository, source_config): @staticmethod def test_direct_post_snapshot(my_plugin, direct_source, repository, - source_config): + source_config, snapshot_parameters): @my_plugin.linked.post_snapshot() - def direct_post_snapshot_impl(direct_source, repository, - source_config): - TestPlugin.assert_plugin_args(direct_source=direct_source, - repository=repository, - source_config=source_config) + def direct_post_snapshot_impl(direct_source, repository, source_config, + optional_snapshot_parameters): + TestPlugin.assert_plugin_args( + direct_source=direct_source, + repository=repository, + source_config=source_config, + snapshot_parameters=optional_snapshot_parameters) return SnapshotDefinition(TEST_SNAPSHOT) direct_post_snapshot_request = platform_pb2.DirectPostSnapshotRequest() - TestPlugin.setup_request(request=direct_post_snapshot_request, - direct_source=direct_source, - repository=repository, - source_config=source_config) + TestPlugin.setup_request( + request=direct_post_snapshot_request, + direct_source=direct_source, + repository=repository, + source_config=source_config, + snapshot_parameters=snapshot_parameters) direct_post_snapshot_response = ( my_plugin.linked._internal_direct_post_snapshot( @@ -866,20 +874,21 @@ def test_staged_pre_snapshot(my_plugin, staged_source, repository, source_config, snapshot_parameters): @my_plugin.linked.pre_snapshot() def staged_pre_snapshot_impl(staged_source, repository, source_config, - snapshot_parameters): + optional_snapshot_parameters): TestPlugin.assert_plugin_args( staged_source=staged_source, repository=repository, source_config=source_config, - snapshot_parameters=snapshot_parameters) + snapshot_parameters=optional_snapshot_parameters) return staged_pre_snapshot_request = platform_pb2.StagedPreSnapshotRequest() - TestPlugin.setup_request(request=staged_pre_snapshot_request, - staged_source=staged_source, - repository=repository, - source_config=source_config, - snapshot_parameters=snapshot_parameters) + TestPlugin.setup_request( + request=staged_pre_snapshot_request, + staged_source=staged_source, + repository=repository, + source_config=source_config, + snapshot_parameters=snapshot_parameters) expected_result = platform_pb2.StagedPreSnapshotResult() response = my_plugin.linked._internal_staged_pre_snapshot( @@ -894,20 +903,21 @@ def test_staged_post_snapshot(my_plugin, staged_source, repository, source_config, snapshot_parameters): @my_plugin.linked.post_snapshot() def staged_post_snapshot_impl(staged_source, repository, source_config, - snapshot_parameters): + optional_snapshot_parameters): TestPlugin.assert_plugin_args( staged_source=staged_source, repository=repository, source_config=source_config, - snapshot_parameters=snapshot_parameters) + snapshot_parameters=optional_snapshot_parameters) return SnapshotDefinition(TEST_SNAPSHOT) staged_post_snapshot_request = platform_pb2.StagedPostSnapshotRequest() - TestPlugin.setup_request(request=staged_post_snapshot_request, - staged_source=staged_source, - repository=repository, - source_config=source_config, - snapshot_parameters=snapshot_parameters) + TestPlugin.setup_request( + request=staged_post_snapshot_request, + staged_source=staged_source, + repository=repository, + source_config=source_config, + snapshot_parameters=snapshot_parameters) response = my_plugin.linked._internal_staged_post_snapshot( staged_post_snapshot_request) diff --git a/tools/src/main/python/dlpx/virtualization/_internal/VERSION b/tools/src/main/python/dlpx/virtualization/_internal/VERSION index f1855a71..4e0e00e1 100644 --- a/tools/src/main/python/dlpx/virtualization/_internal/VERSION +++ b/tools/src/main/python/dlpx/virtualization/_internal/VERSION @@ -1 +1 @@ -2.2.0.dev1 \ No newline at end of file +3.0.0.dev0 \ No newline at end of file diff --git a/tools/src/main/python/dlpx/virtualization/_internal/codegen.py b/tools/src/main/python/dlpx/virtualization/_internal/codegen.py index 9eda39b7..77a34397 100644 --- a/tools/src/main/python/dlpx/virtualization/_internal/codegen.py +++ b/tools/src/main/python/dlpx/virtualization/_internal/codegen.py @@ -26,24 +26,6 @@ 'definitions': {} } -# -# The default snapshot params we currently support. This is so that in the -# future when we want to support plugin author defined schemas for snapshot -# params the upgrade case will be relatively simple. -# - -SNAPSHOT_PARAMS_JSON = { - 'snapshotParametersDefinition': { - 'type': 'object', - 'additionalProperties': False, - 'properties': { - 'resync': { - 'type': 'boolean' - } - } - } -} - SWAGGER_FILE_NAME = 'swagger.json' CODEGEN_PACKAGE = 'generated' CODEGEN_MODULE = 'definitions' @@ -111,9 +93,7 @@ def generate_python(name, source_dir, plugin_config_dir, schema_content): def _write_swagger_file(name, schema_dict, output_dir): swagger_json = copy.deepcopy(SWAGGER_JSON_FORMAT) swagger_json['info']['title'] = name - swagger_json['definitions'] = copy.deepcopy(schema_dict) - # Add in the snapshot param definition - swagger_json['definitions'].update(SNAPSHOT_PARAMS_JSON) + swagger_json['definitions'] = schema_dict swagger_file = os.path.join(output_dir, SWAGGER_FILE_NAME) logger.info('Writing swagger file to {}'.format(swagger_file)) diff --git a/tools/src/main/python/dlpx/virtualization/_internal/commands/build.py b/tools/src/main/python/dlpx/virtualization/_internal/commands/build.py index e56bc7f5..b9185b2a 100644 --- a/tools/src/main/python/dlpx/virtualization/_internal/commands/build.py +++ b/tools/src/main/python/dlpx/virtualization/_internal/commands/build.py @@ -207,6 +207,8 @@ def prepare_upload_artifact(plugin_config_content, src_dir, schemas, manifest): prepare_discovery_definition(plugin_config_content, schemas), 'snapshotSchema': schemas['snapshotDefinition'], + 'snapshotParametersDefinition': + schemas['snapshotParametersDefinition'], 'manifest': manifest } diff --git a/tools/src/main/python/dlpx/virtualization/_internal/commands/plugin_template/direct_operations.py.template b/tools/src/main/python/dlpx/virtualization/_internal/commands/plugin_template/direct_operations.py.template index 88b5a416..164e512a 100644 --- a/tools/src/main/python/dlpx/virtualization/_internal/commands/plugin_template/direct_operations.py.template +++ b/tools/src/main/python/dlpx/virtualization/_internal/commands/plugin_template/direct_operations.py.template @@ -1,3 +1,4 @@ @plugin.linked.post_snapshot() -def linked_post_snapshot(direct_source, repository, source_config): +def linked_post_snapshot(direct_source, repository, source_config, + optional_snapshot_parameters): return SnapshotDefinition() \ No newline at end of file diff --git a/tools/src/main/python/dlpx/virtualization/_internal/commands/plugin_template/schema_template.json b/tools/src/main/python/dlpx/virtualization/_internal/commands/plugin_template/schema_template.json index 261d2e15..8dd02073 100644 --- a/tools/src/main/python/dlpx/virtualization/_internal/commands/plugin_template/schema_template.json +++ b/tools/src/main/python/dlpx/virtualization/_internal/commands/plugin_template/schema_template.json @@ -31,5 +31,10 @@ "type" : "object", "additionalProperties" : false, "properties" : {} + }, + "snapshotParametersDefinition": { + "type" : "object", + "additionalProperties" : false, + "properties" : {} } } diff --git a/tools/src/main/python/dlpx/virtualization/_internal/commands/plugin_template/staged_operations.py.template b/tools/src/main/python/dlpx/virtualization/_internal/commands/plugin_template/staged_operations.py.template index f23cb76f..d5879ec4 100644 --- a/tools/src/main/python/dlpx/virtualization/_internal/commands/plugin_template/staged_operations.py.template +++ b/tools/src/main/python/dlpx/virtualization/_internal/commands/plugin_template/staged_operations.py.template @@ -2,7 +2,7 @@ def linked_post_snapshot(staged_source, repository, source_config, - snapshot_parameters): + optional_snapshot_parameters): return SnapshotDefinition() diff --git a/tools/src/main/python/dlpx/virtualization/_internal/validation_schemas/plugin_importer.yaml b/tools/src/main/python/dlpx/virtualization/_internal/validation_schemas/plugin_importer.yaml index 98e41c19..d769cd62 100644 --- a/tools/src/main/python/dlpx/virtualization/_internal/validation_schemas/plugin_importer.yaml +++ b/tools/src/main/python/dlpx/virtualization/_internal/validation_schemas/plugin_importer.yaml @@ -13,12 +13,12 @@ EXPECTED_STAGED_ARGS_BY_OP: - staged_source - repository - source_config - - snapshot_parameters + - optional_snapshot_parameters post_snapshot_impl: - staged_source - repository - source_config - - snapshot_parameters + - optional_snapshot_parameters start_staging_impl: - staged_source - repository @@ -92,10 +92,12 @@ EXPECTED_DIRECT_ARGS_BY_OP: - direct_source - repository - source_config + - optional_snapshot_parameters post_snapshot_impl: - direct_source - repository - source_config + - optional_snapshot_parameters VirtualOperations: configure_impl: - virtual_source diff --git a/tools/src/main/python/dlpx/virtualization/_internal/validation_schemas/plugin_schema.json b/tools/src/main/python/dlpx/virtualization/_internal/validation_schemas/plugin_schema.json index 2d29ee37..b8be1836 100644 --- a/tools/src/main/python/dlpx/virtualization/_internal/validation_schemas/plugin_schema.json +++ b/tools/src/main/python/dlpx/virtualization/_internal/validation_schemas/plugin_schema.json @@ -179,7 +179,8 @@ "sourceConfigDefinition", "virtualSourceDefinition", "linkedSourceDefinition", - "snapshotDefinition" + "snapshotDefinition", + "snapshotParametersDefinition" ], "properties": { "repositoryDefinition": { @@ -210,6 +211,9 @@ }, "snapshotDefinition": { "$ref": "#/definitions/jsonSchema" + }, + "snapshotParametersDefinition": { + "$ref": "#/definitions/jsonSchema" } }, "additionalProperties": false diff --git a/tools/src/test/python/dlpx/virtualization/_internal/commands/test_build.py b/tools/src/test/python/dlpx/virtualization/_internal/commands/test_build.py index a2077b33..351d627a 100644 --- a/tools/src/test/python/dlpx/virtualization/_internal/commands/test_build.py +++ b/tools/src/test/python/dlpx/virtualization/_internal/commands/test_build.py @@ -8,6 +8,7 @@ import yaml from dlpx.virtualization._internal import const, exceptions from dlpx.virtualization._internal.commands import build +from dlpx.virtualization._internal.commands import initialize as init from dlpx.virtualization._internal.plugin_importer import PluginImporter import mock @@ -48,6 +49,9 @@ def test_build_success(mock_relative_path, mock_install_deps, gen_py.plugin_content_dir, gen_py.schema_dict) mock_plugin_manifest.assert_called() + mock_install_deps.assert_called() + mock_relative_path.assert_called() + # After running build this file should now exist. assert os.path.exists(artifact_file) @@ -56,6 +60,31 @@ def test_build_success(mock_relative_path, mock_install_deps, assert content == artifact_content + @staticmethod + @pytest.mark.parametrize('ingestion_strategy', + [const.DIRECT_TYPE, const.STAGED_TYPE]) + @pytest.mark.parametrize('host_type', + [const.UNIX_HOST_TYPE, const.WINDOWS_HOST_TYPE]) + @mock.patch( + 'dlpx.virtualization._internal.plugin_dependency_util.install_deps') + @mock.patch('os.path.isabs', return_value=False) + def test_build_success_from_init(mock_relative_path, mock_install_deps, + tmpdir, ingestion_strategy, host_type, + plugin_name, artifact_file): + # Initialize an empty directory. + init.init(tmpdir.strpath, ingestion_strategy, plugin_name, host_type) + plugin_config_file = os.path.join( + tmpdir.strpath, init.DEFAULT_PLUGIN_CONFIG_FILE) + # Before running build assert that the artifact file does not exist. + assert not os.path.exists(artifact_file) + + build.build(plugin_config_file, artifact_file, False, False) + + mock_relative_path.assert_called() + mock_install_deps.assert_called() + + assert os.path.exists(artifact_file) + @staticmethod @pytest.mark.parametrize('artifact_filename', ['somefile.json']) @mock.patch.object(PluginImporter, @@ -284,13 +313,13 @@ def test_prepare_discovery_definition(plugin_config_content, assert actual_discovery_definition == discovery_definition @staticmethod - def test_prepare_upload_artifact_success(basic_artifact_content, + def test_prepare_upload_artifact_success(artifact_content, plugin_config_content, src_dir, schema_content): upload_artifact = build.prepare_upload_artifact( plugin_config_content, src_dir, schema_content, {}) - assert upload_artifact == basic_artifact_content + assert upload_artifact == artifact_content @staticmethod def test_generate_upload_artifact_success(tmpdir, artifact_content): diff --git a/tools/src/test/python/dlpx/virtualization/_internal/commands/test_codegen.py b/tools/src/test/python/dlpx/virtualization/_internal/commands/test_codegen.py index 383e9189..0548c654 100644 --- a/tools/src/test/python/dlpx/virtualization/_internal/commands/test_codegen.py +++ b/tools/src/test/python/dlpx/virtualization/_internal/commands/test_codegen.py @@ -175,8 +175,7 @@ def test_get_build_dir_fail(): " Error message: No such file or directory") @staticmethod - def test_write_swagger_file(tmpdir, schema_content, - swagger_schema_content): + def test_write_swagger_file(tmpdir, schema_content): name = 'test' expected_file = tmpdir.join(codegen.SWAGGER_FILE_NAME).strpath codegen._write_swagger_file(name, schema_content, tmpdir.strpath) @@ -186,7 +185,7 @@ def test_write_swagger_file(tmpdir, schema_content, with open(expected_file, 'rb') as f: content = json.load(f) - assert content['definitions'] == swagger_schema_content + assert content['definitions'] == schema_content assert content['info']['title'] == name @staticmethod diff --git a/tools/src/test/python/dlpx/virtualization/_internal/conftest.py b/tools/src/test/python/dlpx/virtualization/_internal/conftest.py index 0f95743c..3df3afc4 100644 --- a/tools/src/test/python/dlpx/virtualization/_internal/conftest.py +++ b/tools/src/test/python/dlpx/virtualization/_internal/conftest.py @@ -37,7 +37,8 @@ def plugin_config_file(tmpdir, plugin_config_filename, plugin_config_content): default_flow_style=False) f = tmpdir.join(plugin_config_filename) - f.write(plugin_config_content) + if plugin_config_content: + f.write(plugin_config_content) return f.strpath @@ -453,7 +454,8 @@ def plugin_manifest(upgrade_operation): @pytest.fixture def schema_content(repository_definition, source_config_definition, virtual_source_definition, linked_source_definition, - snapshot_definition, additional_definition): + snapshot_definition, snapshot_parameters_definition, + additional_definition): schema = {} @@ -472,19 +474,12 @@ def schema_content(repository_definition, source_config_definition, if snapshot_definition: schema['snapshotDefinition'] = snapshot_definition - if additional_definition: - schema['additionalDefinition'] = additional_definition - - return schema - - -@pytest.fixture -def swagger_schema_content(schema_content, snapshot_parameters_definition): - - schema = schema_content if snapshot_parameters_definition: schema['snapshotParametersDefinition'] = snapshot_parameters_definition + if additional_definition: + schema['additionalDefinition'] = additional_definition + return schema @@ -570,54 +565,10 @@ def additional_definition(): return None -@pytest.fixture -def basic_artifact_content(engine_api, virtual_source_definition, - linked_source_definition, discovery_definition, - snapshot_definition): - artifact = { - 'type': 'Plugin', - 'name': '16bef554-9470-11e9-b2e3-8c8590d4a42c', - 'prettyName': 'python_vfiles', - 'externalVersion': '2.0.0', - 'defaultLocale': 'en-us', - 'language': 'PYTHON27', - 'hostTypes': ['UNIX'], - 'entryPoint': 'python_vfiles:vfiles', - 'buildApi': package_util.get_build_api_version(), - 'engineApi': engine_api, - 'rootSquashEnabled': True, - 'buildNumber': '2', - 'luaName': 'lua-toolkit-1', - 'extendedStartStopHooks': False, - 'minimumLuaVersion': '2.3', - 'sourceCode': 'UEsFBgAAAAAAAAAAAAAAAAAAAAAAAA==', - 'manifest': {} - } - if virtual_source_definition: - artifact['virtualSourceDefinition'] = { - 'type': 'PluginVirtualSourceDefinition', - 'parameters': virtual_source_definition - } - - if linked_source_definition: - artifact['linkedSourceDefinition'] = { - 'type': 'PluginLinkedDirectSourceDefinition', - 'parameters': linked_source_definition - } - - if discovery_definition: - artifact['discoveryDefinition'] = discovery_definition - - if snapshot_definition: - artifact['snapshotSchema'] = snapshot_definition - - return artifact - - @pytest.fixture def artifact_content(engine_api, virtual_source_definition, linked_source_definition, discovery_definition, - snapshot_definition): + snapshot_definition, snapshot_parameters_definition): """ This fixture creates base artifact that was generated from build and used in upload. If any fields besides engine_api needs to be changed, @@ -664,6 +615,10 @@ def artifact_content(engine_api, virtual_source_definition, if snapshot_definition: artifact['snapshotSchema'] = snapshot_definition + if snapshot_parameters_definition: + artifact['snapshotParametersDefinition'] = ( + snapshot_parameters_definition) + return artifact diff --git a/tools/src/test/python/dlpx/virtualization/_internal/fake_plugin/direct/multiple_warnings.py b/tools/src/test/python/dlpx/virtualization/_internal/fake_plugin/direct/multiple_warnings.py index c0a031bc..56f4d299 100644 --- a/tools/src/test/python/dlpx/virtualization/_internal/fake_plugin/direct/multiple_warnings.py +++ b/tools/src/test/python/dlpx/virtualization/_internal/fake_plugin/direct/multiple_warnings.py @@ -18,12 +18,14 @@ def source_config_discovery(source_connection, repository): @vfiles.linked.pre_snapshot() -def direct_pre_snapshot(direct_source, repository, source_config): +def direct_pre_snapshot(direct_source, repository, source_config, + optional_snapshot_parameters): return @vfiles.linked.post_snapshot() -def direct_post_snapshot(direct_source, repository, source_config): +def direct_post_snapshot(direct_source, repository, source_config, + optional_snapshot_parameters): return None @@ -40,12 +42,12 @@ def mount_specification(repository, virtual_source): @vfiles.virtual.post_snapshot() -def postSnapshot(repository, source_config, virtual_source): +def post_snapshot(repository, source_config, virtual_source): return None @vfiles.virtual.pre_snapshot() -def preSnapshot(repository, source_config, virtual_source): +def pre_snapshot(repository, source_config, virtual_source): pass diff --git a/tools/src/test/python/dlpx/virtualization/_internal/fake_plugin/direct/successful.py b/tools/src/test/python/dlpx/virtualization/_internal/fake_plugin/direct/successful.py index e8ef3d1c..cb355933 100644 --- a/tools/src/test/python/dlpx/virtualization/_internal/fake_plugin/direct/successful.py +++ b/tools/src/test/python/dlpx/virtualization/_internal/fake_plugin/direct/successful.py @@ -18,12 +18,14 @@ def source_config_discovery(source_connection, repository): @direct.linked.pre_snapshot() -def direct_pre_snapshot(direct_source, repository, source_config): +def direct_pre_snapshot(direct_source, repository, source_config, + optional_snapshot_parameters): return @direct.linked.post_snapshot() -def direct_post_snapshot(direct_source, repository, source_config): +def direct_post_snapshot(direct_source, repository, source_config, + optional_snapshot_parameters): return None @@ -45,12 +47,12 @@ def mount_specification(repository, virtual_source): @direct.virtual.post_snapshot() -def postSnapshot(repository, source_config, virtual_source): +def post_snapshot(repository, source_config, virtual_source): return None @direct.virtual.pre_snapshot() -def preSnapshot(repository, source_config, virtual_source): +def pre_snapshot(repository, source_config, virtual_source): pass diff --git a/tools/src/test/python/dlpx/virtualization/_internal/fake_plugin/direct/upgrade_warnings.py b/tools/src/test/python/dlpx/virtualization/_internal/fake_plugin/direct/upgrade_warnings.py index 68ecd5b2..0046fe49 100644 --- a/tools/src/test/python/dlpx/virtualization/_internal/fake_plugin/direct/upgrade_warnings.py +++ b/tools/src/test/python/dlpx/virtualization/_internal/fake_plugin/direct/upgrade_warnings.py @@ -18,12 +18,14 @@ def source_config_discovery(source_connection, repository): @direct.linked.pre_snapshot() -def direct_pre_snapshot(direct_source, repository, source_config): +def direct_pre_snapshot(direct_source, repository, source_config, + optional_snapshot_parameters): return @direct.linked.post_snapshot() -def direct_post_snapshot(direct_source, repository, source_config): +def direct_post_snapshot(direct_source, repository, source_config, + optional_snapshot_parameters): return None diff --git a/tools/src/test/python/dlpx/virtualization/_internal/fake_plugin/staged/multiple_warnings.py b/tools/src/test/python/dlpx/virtualization/_internal/fake_plugin/staged/multiple_warnings.py index 094c1dde..5f3a6c81 100644 --- a/tools/src/test/python/dlpx/virtualization/_internal/fake_plugin/staged/multiple_warnings.py +++ b/tools/src/test/python/dlpx/virtualization/_internal/fake_plugin/staged/multiple_warnings.py @@ -32,13 +32,13 @@ def staged_mount_specification(staged_source, repository): @staged.linked.pre_snapshot() def staged_pre_snapshot(repository, source_config, staged_source, - snapshot_parameters): + optional_snapshot_parameters): pass @staged.linked.post_snapshot() def staged_post_snapshot(repository, source_config, staged_source, - snapshot_parameters): + optional_snapshot_parameters): return None diff --git a/tools/src/test/python/dlpx/virtualization/_internal/fake_plugin/staged/successful.py b/tools/src/test/python/dlpx/virtualization/_internal/fake_plugin/staged/successful.py index 0d6ca414..bea862cf 100644 --- a/tools/src/test/python/dlpx/virtualization/_internal/fake_plugin/staged/successful.py +++ b/tools/src/test/python/dlpx/virtualization/_internal/fake_plugin/staged/successful.py @@ -31,13 +31,13 @@ def staged_mount_specification(staged_source, repository): @staged.linked.pre_snapshot() def staged_pre_snapshot(repository, source_config, staged_source, - snapshot_parameters): + optional_snapshot_parameters): pass @staged.linked.post_snapshot() def staged_post_snapshot(repository, source_config, staged_source, - snapshot_parameters): + optional_snapshot_parameters): return None diff --git a/tools/src/test/python/dlpx/virtualization/_internal/test_package_util.py b/tools/src/test/python/dlpx/virtualization/_internal/test_package_util.py index 4813de52..063fb132 100644 --- a/tools/src/test/python/dlpx/virtualization/_internal/test_package_util.py +++ b/tools/src/test/python/dlpx/virtualization/_internal/test_package_util.py @@ -10,7 +10,7 @@ class TestPackageUtil: @staticmethod def test_get_version(): - assert package_util.get_version() == '2.2.0.dev1' + assert package_util.get_version() == '3.0.0.dev0' @staticmethod def test_get_virtualization_api_version():