Migration - Precheck
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 state of the instance in "MIGRATING-PRECHECK"
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 (state will back as before the precheck-migration call)
FAILED: means something went wrong during the migration precheck (state will be in "MIGRATING-PRECHECK")
It will be implemented migratePrecheck() in participant-simulator to test all scenarios.
Allowed operations
stateChangeResult | state | Allowed | Not Allowed |
---|---|---|---|
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
.......................
What state suits for migration-precheck?
Differently in what happen in deploy, undeploy, update and migrate, the migration-precheck operation do not make changes in the applications (same will be for prepare and review). What state is most suitable for that operation?
Using deployState, lockState or a new subState does not impact the migration-precheck functionality, it is an implementation detail that it help to understand how to implement all new functionalities.