diff --git a/.bumpversion.cfg b/.bumpversion.cfg index 97a0aeb9..8a428cec 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 2.1.0.dev3 +current_version = 2.2.0.dev0 commit = False tag = False parse = (?P\d+)\.(?P\d+)\.(?P\d+)(\.(?P[a-z]+)(?P\d+))? diff --git a/common/src/main/python/dlpx/virtualization/common/VERSION b/common/src/main/python/dlpx/virtualization/common/VERSION index aa13085a..8cd7bb1b 100644 --- a/common/src/main/python/dlpx/virtualization/common/VERSION +++ b/common/src/main/python/dlpx/virtualization/common/VERSION @@ -1 +1 @@ -2.1.0.dev3 \ No newline at end of file +2.2.0.dev0 \ No newline at end of file diff --git a/docs/docs/References/Plugin_Config.md b/docs/docs/References/Plugin_Config.md index 7295fc79..1626d6f8 100644 --- a/docs/docs/References/Plugin_Config.md +++ b/docs/docs/References/Plugin_Config.md @@ -20,6 +20,7 @@ The name of the file can be specified during the build. By default, the build lo |language|Y|enum|Must be `PYTHON27`.| |defaultLocale|N|enum|The locale to be used by the plugin if the Delphix user does not specify one. Plugin messages will be displayed in this locale by default. The default value is `en-us`.| |rootSquashEnabled|N|boolean|This dictates whether "root squash" is enabled on NFS mounts for the plugin (i.e. whether the `root` user on remote hosts has access to the NFS mounts). Setting this to `false` allows processes usually run as `root`, like Docker daemons, access to the NFS mounts. The default value is `true`. This field only applies to Unix hosts.| +|extendedStartStopHooks|N|boolean|This controls whether the user's pre-start and post-start hooks will run during enable operations (and, likewise, whether pre-stop and post-stop hooks will run during disable operations). The default value is `false`.| ## Example Assume the following basic plugin structure: diff --git a/docs/docs/References/Workflows.md b/docs/docs/References/Workflows.md index 1d8cde14..8bf50999 100644 --- a/docs/docs/References/Workflows.md +++ b/docs/docs/References/Workflows.md @@ -56,10 +56,14 @@ ![Screenshot](images/VirtualSourceEnable.png) +Note: pre- and post-start hooks are only run if `extendedStartStopHooks` is set to `true` in the [plugin config](Plugin_Config.md). + ## Virtual Source Disable ![Screenshot](images/VirtualSourceDisable.png) +Note: pre- and post-stop hooks are only run if `extendedStartStopHooks` is set to `true` in the [plugin config](Plugin_Config.md). + ## Upgrade ![Screenshot](images/PluginUpgrade.png) diff --git a/docs/docs/References/html/VirtualSourceDisable.html b/docs/docs/References/html/VirtualSourceDisable.html index f86ca376..900a9c5e 100644 --- a/docs/docs/References/html/VirtualSourceDisable.html +++ b/docs/docs/References/html/VirtualSourceDisable.html @@ -1,12 +1,11 @@ + - + -Draw.io Diagram - +disable - -
- +
+ - + \ No newline at end of file diff --git a/docs/docs/References/html/VirtualSourceEnable.html b/docs/docs/References/html/VirtualSourceEnable.html index 8465f2dd..1776dcda 100644 --- a/docs/docs/References/html/VirtualSourceEnable.html +++ b/docs/docs/References/html/VirtualSourceEnable.html @@ -1,12 +1,11 @@ + - + -Draw.io Diagram - +enable - -
- +
+ - + \ No newline at end of file diff --git a/docs/docs/References/images/VirtualSourceDisable.png b/docs/docs/References/images/VirtualSourceDisable.png index 8a486342..d7cb9aa1 100644 Binary files a/docs/docs/References/images/VirtualSourceDisable.png and b/docs/docs/References/images/VirtualSourceDisable.png differ diff --git a/docs/docs/References/images/VirtualSourceEnable.png b/docs/docs/References/images/VirtualSourceEnable.png index 736eb83f..1b8316ee 100644 Binary files a/docs/docs/References/images/VirtualSourceEnable.png and b/docs/docs/References/images/VirtualSourceEnable.png differ diff --git a/dvp/src/main/python/dlpx/virtualization/VERSION b/dvp/src/main/python/dlpx/virtualization/VERSION index aa13085a..8cd7bb1b 100644 --- a/dvp/src/main/python/dlpx/virtualization/VERSION +++ b/dvp/src/main/python/dlpx/virtualization/VERSION @@ -1 +1 @@ -2.1.0.dev3 \ No newline at end of file +2.2.0.dev0 \ No newline at end of file diff --git a/libs/src/main/python/dlpx/virtualization/libs/VERSION b/libs/src/main/python/dlpx/virtualization/libs/VERSION index aa13085a..8cd7bb1b 100644 --- a/libs/src/main/python/dlpx/virtualization/libs/VERSION +++ b/libs/src/main/python/dlpx/virtualization/libs/VERSION @@ -1 +1 @@ -2.1.0.dev3 \ No newline at end of file +2.2.0.dev0 \ No newline at end of file diff --git a/platform/src/main/python/dlpx/virtualization/platform/VERSION b/platform/src/main/python/dlpx/virtualization/platform/VERSION index aa13085a..8cd7bb1b 100644 --- a/platform/src/main/python/dlpx/virtualization/platform/VERSION +++ b/platform/src/main/python/dlpx/virtualization/platform/VERSION @@ -1 +1 @@ -2.1.0.dev3 \ No newline at end of file +2.2.0.dev0 \ No newline at end of file diff --git a/tools/src/main/python/dlpx/virtualization/_internal/VERSION b/tools/src/main/python/dlpx/virtualization/_internal/VERSION index aa13085a..8cd7bb1b 100644 --- a/tools/src/main/python/dlpx/virtualization/_internal/VERSION +++ b/tools/src/main/python/dlpx/virtualization/_internal/VERSION @@ -1 +1 @@ -2.1.0.dev3 \ No newline at end of file +2.2.0.dev0 \ No newline at end of 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 8db88052..e56bc7f5 100644 --- a/tools/src/main/python/dlpx/virtualization/_internal/commands/build.py +++ b/tools/src/main/python/dlpx/virtualization/_internal/commands/build.py @@ -1,5 +1,5 @@ # -# Copyright (c) 2019 by Delphix. All rights reserved. +# Copyright (c) 2019, 2020 by Delphix. All rights reserved. # import base64 @@ -217,6 +217,12 @@ def prepare_upload_artifact(plugin_config_content, src_dir, schemas, manifest): if plugin_config_content.get('luaName'): artifact['luaName'] = plugin_config_content['luaName'] + if plugin_config_content.get('extendedStartStopHooks'): + artifact['extendedStartStopHooks'] = plugin_config_content[ + 'extendedStartStopHooks'] + else: + artifact['extendedStartStopHooks'] = False + if plugin_config_content.get('minimumLuaVersion'): artifact['minimumLuaVersion'] = plugin_config_content[ 'minimumLuaVersion'] diff --git a/tools/src/main/python/dlpx/virtualization/_internal/validation_schemas/plugin_config_schema.json b/tools/src/main/python/dlpx/virtualization/_internal/validation_schemas/plugin_config_schema.json index 81241641..15f80871 100644 --- a/tools/src/main/python/dlpx/virtualization/_internal/validation_schemas/plugin_config_schema.json +++ b/tools/src/main/python/dlpx/virtualization/_internal/validation_schemas/plugin_config_schema.json @@ -55,6 +55,9 @@ "type": "string", "pattern": "^[a-z0-9_:-]+$" }, + "extendedStartStopHooks" : { + "type": "boolean" + }, "minimumLuaVersion": { "type": "string", "pattern": "^([0-9]+)\\.([0-9]+)$" diff --git a/tools/src/main/python/dlpx/virtualization/_internal/validation_schemas/plugin_config_schema_no_id_validation.json b/tools/src/main/python/dlpx/virtualization/_internal/validation_schemas/plugin_config_schema_no_id_validation.json index 175fbedf..32eb611f 100644 --- a/tools/src/main/python/dlpx/virtualization/_internal/validation_schemas/plugin_config_schema_no_id_validation.json +++ b/tools/src/main/python/dlpx/virtualization/_internal/validation_schemas/plugin_config_schema_no_id_validation.json @@ -54,6 +54,9 @@ "type": "string", "pattern": "^[a-z0-9_:-]+$" }, + "extendedStartStopHooks" : { + "type": "boolean" + }, "minimumLuaVersion": { "type": "string", "pattern": "^([0-9]+)\\.([0-9]+)$" 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 4daf8afa..a207b31e 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 @@ -664,6 +664,18 @@ def test_build_number_parameter(plugin_config_content, src_dir, assert expected == upload_artifact['buildNumber'] + @staticmethod + @pytest.mark.parametrize('extended_start_stop_hooks, expected', [ + pytest.param(True, True), + pytest.param(False, False), + pytest.param(None, False), + ]) + def test_extended_hooks_parameter(plugin_config_content, src_dir, + schema_content, expected): + upload_artifact = build.prepare_upload_artifact( + plugin_config_content, src_dir, schema_content, {}) + assert expected == upload_artifact.get('extendedStartStopHooks') + @staticmethod @pytest.mark.parametrize('lua_name, expected', [ pytest.param('lua-toolkit-1', 'lua-toolkit-1'), diff --git a/tools/src/test/python/dlpx/virtualization/_internal/conftest.py b/tools/src/test/python/dlpx/virtualization/_internal/conftest.py index 8c02f01c..0f95743c 100644 --- a/tools/src/test/python/dlpx/virtualization/_internal/conftest.py +++ b/tools/src/test/python/dlpx/virtualization/_internal/conftest.py @@ -172,9 +172,10 @@ def artifact_file_created(): def plugin_config_content(plugin_id, plugin_name, external_version, language, host_types, plugin_type, entry_point, src_dir, schema_file, manual_discovery, build_number, - lua_name, minimum_lua_version): + extended_start_stop_hooks, lua_name, + minimum_lua_version): """ - This fixutre creates the dict expected in the properties yaml file the + This fixture creates the dict expected in the properties yaml file the customer must provide for the build and compile commands. """ config = { @@ -220,6 +221,9 @@ def plugin_config_content(plugin_id, plugin_name, external_version, language, if lua_name: config['luaName'] = lua_name + if extended_start_stop_hooks: + config['extendedStartStopHooks'] = extended_start_stop_hooks + if minimum_lua_version: config['minimumLuaVersion'] = minimum_lua_version @@ -281,6 +285,11 @@ def build_number(): return '2.0.0' +@pytest.fixture +def extended_start_stop_hooks(): + return False + + @pytest.fixture def lua_name(): return 'lua-toolkit-1' @@ -579,6 +588,7 @@ def basic_artifact_content(engine_api, virtual_source_definition, 'rootSquashEnabled': True, 'buildNumber': '2', 'luaName': 'lua-toolkit-1', + 'extendedStartStopHooks': False, 'minimumLuaVersion': '2.3', 'sourceCode': 'UEsFBgAAAAAAAAAAAAAAAAAAAAAAAA==', 'manifest': {} @@ -628,6 +638,7 @@ def artifact_content(engine_api, virtual_source_definition, 'rootSquashEnabled': True, 'buildNumber': '2', 'luaName': 'lua-toolkit-1', + 'extendedStartStopHooks': False, 'minimumLuaVersion': '2.3', 'manifest': {} } 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 ab137162..6ab3d656 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.1.0.dev3' + assert package_util.get_version() == '2.2.0.dev0' @staticmethod def test_get_virtualization_api_version():