Before a migrate is carried out, we wish to check that the current state of the instance is ready for migration with a pre-check - effectively like a healthcheck.
Only once this done should we be able to trigger migrate.
Assumptions:
- We assume that composition target is already primed
- Participants execute the effective pre-check.
- Pre-check is completely optional. it will be executed before the migration. If it fail or the migration is not supported, can the migration be executed?
- User receives the result of the precheck on the outProperties result.
Solution: create a new flow for migration-precheck
User can send the action migration-precheck POST. The user can do the action migration POST after that. The migration flow will be unchanged and backwards-compatible.
- User send migration-precheck action
- Acm-runtime set the instance in "MIGRATING-PRECHECK" deployState
- Acm-runtime sends migration-precheck message to participants (it will be AUTOMATION_COMPOSITION_MIGRATION message with Boolean flag "precheck" set to true)
- Participant receives migration-precheck message and executes the precheck and sends the result (it will be a new method "migratePrecheck()" that participant has to implement)
- Acm-runtime receives precheck-result messages from all participants
- Acm-runtime shows this result into the stateChangeResult
- NO_ERROR: means the migration is supported (deployState will be in "DEPLOYED")
- FAILED: means something went wrong during the migration precheck (deployState will be in "MIGRATING-PRECHECK")
- It will be implemented migratePrecheck() in participant-simulator to test all scenarios.
Allowed operations
stateChangeResult | deployState | Allowed | Not Allowed Operation |
---|---|---|---|
FAILED | MIGRATING-PRECHECK | UNDEPLOY, MIGRATE_PRECHECK | UPDATE, DELETE, DEPLOY, MIGRATE, UNLOCK, LOCK |
TIMEOUT | MIGRATING-PRECHECK | UNDEPLOY, MIGRATE_PRECHECK | UPDATE, DELETE, DEPLOY, MIGRATE, UNLOCK, LOCK |
How the user can send the action migration-precheck POST?
Below the list of solutions:
- parameter in POST action: {{address}}:{{port}}/onap/policy/clamp/acm/v2/compositions/{{compositionId}}/instances?precheck=true
- new filed into the Body:
name: DemoInstance0 version: 1.0.1 compositionId: {{composition1Id}} instanceId: {{instanceId}} compositionTargetId: {{composition2Id}} precheck: true .......................