Migration - Allow element version update
Migration should allow the update of element definition versions.
Solution 1: add a flag in composition definition
The validation is active by default.
To disable the validation:
define the flag "migrateMajorVersion" as a property into the new composition definition with default false.
org.onap.policy.clamp.acm.AutomationCompositionElement: version: 1.0.1 derived_from: tosca.nodetypes.Root properties: provider: type: string required: false migrateMajorVersion: type: boolean required: false default: false metadata: common: true description: Allow to migrate to major version startPhase: type: integer required: false constraints: - greater-or-equal: 0 metadata: common: true description: A value indicating the start phase in which this automation composition element will be started, the first start phase is zero. Automation composition elements are started in their start_phase order and stopped in reverse start phase order. Automation composition elements with the same start phase are started and stopped simultaneously
use the property "migrateMajorVersion".
onap.policy.clamp.ac.element.Policy_AutomationCompositionElement: version: 1.2.4 type: org.onap.policy.clamp.acm.PolicyAutomationCompositionElement type_version: 1.0.0 description: Automation composition element for the operational policy for Performance Management Subscription Handling properties: provider: Ericsson startPhase: 0 migrateMajorVersion: false
Solution 2: add a property in properties file:
The validation is active by default.
To disable the validation, add migrate.validation.majorversion.enable property and set to false into properties file.
migrate:
validation:
majorversion:
enable: false
Versioning Validation:
Composition Element definition | New Composition Element definition | Compatibility | Validation |
---|---|---|---|
Key 1.0.1 | Key 1.0.1 | IDENTICAL | OK |
Key 1.0.1 | Key 1.0.1+build1 | PATCH | OK |
Key 1.0.1 | Key 1.0.2 | PATCH | OK |
Key 1.0.1 | Key 1.1.0 | MINOR | OK |
Key 1.0.1 | Key 2.0.1 | MAJOR | FAIL or OK based on flag |
KeyDiff 1.0.1 | Key 1.0.1 | DIFFERENT | FAIL |
Example:
Creation composition "1.2.3" and prime (compositionId):
Creation Instance and deploy:
Creation Composition 1.2.4 and prime (compositionTargetId):
Migration Instance from 1.2.3 to 1.2.4:
Implementation of the Participant using AcElementListenerV1
Participant has to implement the "migrate" method.
public void migrate(UUID instanceId, AcElementDeploy element, UUID compositionTargetId,
Map<String, Object> properties) throws PfModelException {
Retrieve outProperties from composition 1.2.3 and 1.2.4: The hardcoded values in the code below is intended to show the implication to have different version:
Retrieve outProperties in real scenario
Implementation of the Participant using AcElementListenerV2
All data are already available into the respectively Objects.