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
Operation

Not Allowed
Operation

stateChangeResult

state

Allowed
Operation

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 .......................



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.