diff --git a/.bumpversion.cfg b/.bumpversion.cfg index 72126112..2f9a3bc7 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 5.0.0 +current_version = 5.0.1 commit = False tag = False parse = (?P\d+)\.(?P\d+)\.(?P\d+)(\.(?P[a-z]+)(?P\d+))? diff --git a/.whitesource b/.whitesource new file mode 100644 index 00000000..e82e82f3 --- /dev/null +++ b/.whitesource @@ -0,0 +1,48 @@ +{ + "scanSettings": { + "configMode": "AUTO", + "configExternalURL": "", + "projectToken": "", + "enableLicenseViolations": "true", + "displayLicenseViolations": "true", + "enableIaC": "true", + "baseBranches": [] + }, + "scanSettingsSAST": { + "enableScan": true, + "scanPullRequests": true, + "incrementalScan": true, + "baseBranches": [], + "snippetSize": 10 + }, + "checkRunSettings": { + "vulnerableCheckRunConclusionLevel": "failure", + "displayMode": "diff", + "useMendCheckNames": true + }, + "checkRunSettingsSAST": { + "checkRunConclusionLevel": "failure", + "severityThreshold": "high" + }, + "issueSettings": { + "minSeverityLevel": "LOW", + "issueType": "DEPENDENCY" + }, + "issueSettingsSAST": { + "minSeverityLevel": "high", + "issueType": "repo" + }, + "remediateSettings": { + "workflowRules": { + "enabled": true + } + }, + "imageSettings":{ + "imageTracing":{ + "enableImageTracingPR": false, + "addRepositoryCoordinate": false, + "addDockerfilePath": false, + "addMendIdentifier": false + } + } +} \ No newline at end of file diff --git a/common/src/main/python/dlpx/virtualization/common/VERSION b/common/src/main/python/dlpx/virtualization/common/VERSION index 0062ac97..6b244dcd 100644 --- a/common/src/main/python/dlpx/virtualization/common/VERSION +++ b/common/src/main/python/dlpx/virtualization/common/VERSION @@ -1 +1 @@ -5.0.0 +5.0.1 diff --git a/docs/docs/References/Glossary.md b/docs/docs/References/Glossary.md index cf10b678..7aba6042 100644 --- a/docs/docs/References/Glossary.md +++ b/docs/docs/References/Glossary.md @@ -78,6 +78,9 @@ For example, a MySQL plugin might provide an operation called "stop" which knows ## Provisioning The process of making a virtual copy of a dataset and making it available for use on a target environment. +## Record Size +Delphix allows plugins to override the default record size for the linked source and virtual source datafiles. If the “recordSizeInKB” parameter is passed, it will be used to override the default record size and set the new record size for the respective dSources and empty VDBs. VDBs with parent will be inheriting the record size from their parent dSource or VDB. If the parameter is not passed, then default 8K record size will be set for the datafiles. + ## Replication Delphix allows end users to replicate data objects between Delphix Engines by creating a replication profile. Data objects that belong to a plugin can also be part of the replication profile. Refer to the [Delphix Engine Documentation](https://cd.delphix.com/docs/latest/) for more details. diff --git a/docs/docs/References/Schemas_and_Autogenerated_Classes.md b/docs/docs/References/Schemas_and_Autogenerated_Classes.md index 2c993835..d396d6e6 100644 --- a/docs/docs/References/Schemas_and_Autogenerated_Classes.md +++ b/docs/docs/References/Schemas_and_Autogenerated_Classes.md @@ -122,6 +122,20 @@ Defines properties used to identify [linked sources](Glossary.md#linked-source). } ``` +To set [record size](Glossary.md#record-size) for the datafiles of the linked source, pass the property "recordSizeInKB" in the [LinkedSourceDefinition Schema](#linkedsourcedefinition-schema). The value of the recordSizeInKB property must be an integer and power of 2 ranging from 1 to 16384. It will set the value of record size in KB. If this parameter is not passed, then default 8K record size will be set. +```json +{ + "type": "object", + "required": ["name", "port"], + "additionalProperties": false, + "properties": { + "name": { "type": "string" }, + "port": { "type": "integer" }, + "recordSizeInKB": {"type": "integer"} + } +} +``` + ### LinkedSourceDefinition Class Autogenerated based on the [LinkedSourceDefinition Schema](#linkedsourcedefinition-schema). @@ -164,6 +178,20 @@ Defines properties used to identify [virtual sources](Glossary.md#virtual-source } ``` +To set [record size](Glossary.md#record-size) for the datafiles of the empty VDB, pass the property "recordSizeInKB" in the [VirtualSourceDefinition Schema](#virtualsourcedefinition-schema). The value of the recordSizeInKB property must be an integer and power of 2 ranging from 1 to 16384. It will set the value of record size in KB. If this parameter is not passed, then default 8K record size will be set. VDB with parent source will inherit the record size value from its parent dSource or VDB. +```json +{ + "type": "object", + "required": ["name", "port"], + "additionalProperties": false, + "properties": { + "name": { "type": "string" }, + "port": { "type": "integer" }, + "recordSizeInKB": {"type": "integer"} + } +} +``` + ### VirtualSourceDefinition Class Autogenerated based on the [VirtualSourceDefinition Schema](#virtualsourcedefinition-schema). diff --git a/docs/docs/References/Version_Compatibility.md b/docs/docs/References/Version_Compatibility.md index c855eb33..0507dc89 100644 --- a/docs/docs/References/Version_Compatibility.md +++ b/docs/docs/References/Version_Compatibility.md @@ -4,6 +4,7 @@ | vSDK Version | Earliest Supported DE Version | Latest Supported DE Version | |------------------------------------------|:-----------------------------:|:-----------------------------------------------------------------:| +| [5.0.1](../Release_Notes/5.0.1/5.0.1.md) | 2025.2.0.0 | [Latest Release](https://cd.delphix.com/docs/latest/new-features) | | [5.0.0](../Release_Notes/5.0.0/5.0.0.md) | 29.0.0.0 | [Latest Release](https://cd.delphix.com/docs/latest/new-features) | | [4.1.0](../Release_Notes/4.1.0/4.1.0.md) | 12.0.0.0 | [Latest Release](https://cd.delphix.com/docs/latest/new-features) | | [4.0.5](../Release_Notes/4.0.5/4.0.5.md) | 6.0.16.0 | [Latest Release](https://cd.delphix.com/docs/latest/new-features) | @@ -19,6 +20,7 @@ | vSDK Version | Python Version | |------------------------------------------|:--------------:| +| [5.0.1](../Release_Notes/5.0.1/5.0.1.md) | 3.11 | | [5.0.0](../Release_Notes/5.0.0/5.0.0.md) | 3.11 | | [4.1.0](../Release_Notes/4.1.0/4.1.0.md) | 3.8 | | [4.0.5](../Release_Notes/4.0.5/4.0.5.md) | 3.8 | diff --git a/docs/docs/Release_Notes/.pages b/docs/docs/Release_Notes/.pages index 9f67f5fe..17365274 100644 --- a/docs/docs/Release_Notes/.pages +++ b/docs/docs/Release_Notes/.pages @@ -1,4 +1,5 @@ arrange: + - 5.0.1 - 5.0.0 - 4.1.0 - 4.0.5 diff --git a/docs/docs/Release_Notes/5.0.1/5.0.1.md b/docs/docs/Release_Notes/5.0.1/5.0.1.md new file mode 100644 index 00000000..a37a0437 --- /dev/null +++ b/docs/docs/Release_Notes/5.0.1/5.0.1.md @@ -0,0 +1,11 @@ +# Release - v5.0.1 + +To install or upgrade the SDK, refer to instructions [here](../../Getting_Started.md#installation). + +## New & Improved + +* Enhanced schema validation to set [record size](../../References/Glossary.md#record-size). + +## Breaking Changes + +* No breaking changes in this release! \ No newline at end of file diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml index 147990ad..35f13b30 100644 --- a/docs/mkdocs.yml +++ b/docs/mkdocs.yml @@ -1,4 +1,4 @@ -site_name: Delphix Virtualization SDK 5.0.0 +site_name: Delphix Virtualization SDK 5.0.1 repo_name: Delphix Virtualization SDK repo_url: https://github.com/delphix/virtualization-sdk/ @@ -20,7 +20,7 @@ theme: - content.code.copy - content.code.annotate -copyright: Copyright © 2024 Delphix Corp. +copyright: Copyright © 2025 Delphix Corp. extra: analytics: diff --git a/dvp/src/main/python/dlpx/virtualization/VERSION b/dvp/src/main/python/dlpx/virtualization/VERSION index 0062ac97..6b244dcd 100644 --- a/dvp/src/main/python/dlpx/virtualization/VERSION +++ b/dvp/src/main/python/dlpx/virtualization/VERSION @@ -1 +1 @@ -5.0.0 +5.0.1 diff --git a/libs/src/main/python/dlpx/virtualization/libs/VERSION b/libs/src/main/python/dlpx/virtualization/libs/VERSION index 0062ac97..6b244dcd 100644 --- a/libs/src/main/python/dlpx/virtualization/libs/VERSION +++ b/libs/src/main/python/dlpx/virtualization/libs/VERSION @@ -1 +1 @@ -5.0.0 +5.0.1 diff --git a/platform/src/main/python/dlpx/virtualization/platform/VERSION b/platform/src/main/python/dlpx/virtualization/platform/VERSION index 0062ac97..6b244dcd 100644 --- a/platform/src/main/python/dlpx/virtualization/platform/VERSION +++ b/platform/src/main/python/dlpx/virtualization/platform/VERSION @@ -1 +1 @@ -5.0.0 +5.0.1 diff --git a/tools/src/main/python/dlpx/virtualization/_internal/VERSION b/tools/src/main/python/dlpx/virtualization/_internal/VERSION index 0062ac97..6b244dcd 100644 --- a/tools/src/main/python/dlpx/virtualization/_internal/VERSION +++ b/tools/src/main/python/dlpx/virtualization/_internal/VERSION @@ -1 +1 @@ -5.0.0 +5.0.1 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 edbfeab6..59c39057 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 @@ -166,6 +166,15 @@ "required": ["nameField", "identityFields"], "nameField": { "type": "string" }, "identityFields": { "type": "array", "minItems": 1, "items": { "type": "string" } } + }, + "recordSizeObject": { + "type": "object", + "properties": { + "properties": { + "properties": { + "recordSizeInKB" : {"properties": {"type": {"enum" : ["integer"]}}}} + } + } } }, "type": "object", @@ -200,10 +209,24 @@ ] }, "virtualSourceDefinition": { - "$ref": "#/definitions/jsonSchema" + "allOf": [ + { + "$ref": "#/definitions/jsonSchema" + }, + { + "$ref": "#/definitions/recordSizeObject" + } + ] }, "linkedSourceDefinition": { - "$ref": "#/definitions/jsonSchema" + "allOf": [ + { + "$ref": "#/definitions/jsonSchema" + }, + { + "$ref": "#/definitions/recordSizeObject" + } + ] }, "snapshotDefinition": { "$ref": "#/definitions/jsonSchema" 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 669fc919..22779c64 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 @@ -7,7 +7,7 @@ from dlpx.virtualization._internal import package_util -DVP_VERSION = '5.0.0' +DVP_VERSION = '5.0.1' DVP_API_VERSION = '1.9.0' diff --git a/tools/src/test/python/dlpx/virtualization/_internal/test_schema_validator.py b/tools/src/test/python/dlpx/virtualization/_internal/test_schema_validator.py index 5f735a79..3dbed667 100644 --- a/tools/src/test/python/dlpx/virtualization/_internal/test_schema_validator.py +++ b/tools/src/test/python/dlpx/virtualization/_internal/test_schema_validator.py @@ -356,3 +356,56 @@ def test_bad_type_in_array(schema_file): message = err_info.value.message assert ("'strings' is not valid under any of the given schemas" in message) + + @staticmethod + @pytest.mark.parametrize('linked_source_definition', + [{ + 'type': 'object', + 'additionalProperties': False, + 'properties': { + 'recordSizeInKB': { + 'type': 'string' + } + } + }]) + def test_bad_recordSizeInKB_type_string(schema_file): + with pytest.raises(exceptions.SchemaValidationError) as err_info: + validator = SchemaValidator(schema_file, const.PLUGIN_SCHEMA) + validator.validate() + + message = err_info.value.message + assert "'string' is not one of ['integer']" in message + + @staticmethod + @pytest.mark.parametrize('virtual_source_definition', + [{ + 'type': 'object', + 'additionalProperties': False, + 'properties': { + 'recordSizeInKB': { + 'type': 'array' + } + } + }]) + def test_bad_recordSizeInKB_type_array_virtual(schema_file): + with pytest.raises(exceptions.SchemaValidationError) as err_info: + validator = SchemaValidator(schema_file, const.PLUGIN_SCHEMA) + validator.validate() + + message = err_info.value.message + assert "'array' is not one of ['integer']" in message + + @staticmethod + @pytest.mark.parametrize('virtual_source_definition', + [{ + 'type': 'object', + 'additionalProperties': False, + 'properties': { + 'recordSizeInKB': { + 'type': 'integer' + } + } + }]) + def test_recordSizeInKB_type_virtual(schema_file): + validator = SchemaValidator(schema_file, const.PLUGIN_SCHEMA) + validator.validate()