CPS-1312: CPS(/NCMP) Does not have version control



References

CPS-1312: CPS(/NCMP) Version Upgrade Control. Short Term SolutionClosed

CPS-1307: NCMP CRUD operations do not work after upgrade/downgradeClosed


Assumptions

Assumption

Notes

Assumption

Notes

1

There will be separate short and long term solutions



2

ETH wil provide SQL transformation statements (including rollback)
with help from CPS Team re. dmi-registry model updates





Issues & Decisions

Issue

Notes 

Decision

Issue

Notes 

Decision

1

Short term solution will be delivered on 'latest branch

NOT in any specific commit/version mention in original bug

Agreed in meeting with stakeholders on Sep 30, 2022 

2

Where to Store Version Number

Database/ Liquibase
(Liquibase not possible for NCMP)
CPS-Core Liquibase as 'id' field which act as vessio. Current id/version is 15
see changelog/db/changes/15-rename-column-yang-resource-table.yaml

Sep 30, 2022 @Tony Finnerty and team agreed that Liquibase 'Change set ID' can be used CPS (schema) Version






3

Does NCMP need (separate) version number from CPS-Core

Longterm: For the purpose of data-transformation the dmi-registry revision can be used to control upgrades in NCMP



4

4

Where to trigger implement upgrade action

Options:

  1. Init container 

  2. kubernetes - hooks

  3. SpringBoot lifecycle events

  4. Liquibase step 16

Sep 30, 2022 Developer agreed on Liquibase step 16 (depending issue #7)

5

What Dmi-registry yangmodel version we need to upgrade FROM and TO (latest) 

Relate commit message: https://gerrit.onap.org/r/gitweb?p=cps.git;a=commit;h=7914c8924723092345e8b4d829f15d2a3a5c72c8

Was the data compatibility issue introduced by changelog/db/changes/14-loadData-dmi-registry-2022-05-10-schema-set.yaml

@Luke Gleeson (Unlicensed) will found out  and share with ETH team 

6

Technical debt: dmi-registry is installed as part of liquibase steps in CPS-Core. Can solution build upon this technical debt

Add liquibase steps in CPS instead of a NVCMP only solution 

Sep 30, 2022  @Tony Finnerty and team agreed to use Liquibase steps for short term solution.

But long term solution need to address this technical debt before any further update to the NCMP schema (registry model)

Check with @Tony Finnerty 

7

Do we need to worry about rollback 

requires specific statements to execute rollback

  • Rollback: immediata revert to previous state of DB before upgrade

  • Downgrade: revert to a previous DB schema (and yand models) after using it for a while and data has been modified since last upgrade. 

Sep 30, 2022 Team and stakeholder agreed rollback support is required in case upgrade fails at customer

8

Size of customer data, can transformation cause delay/startup problems

@kieran mccarthy estimates actual customer less then 1,000 nodes. 

Sep 30, 2022 @Luke Gleeson (Unlicensed) and @Toine Siebelink  agreed this solution should be tested with at least 1,000 registration in the DB (and communicate this with ETH. ETH should probably test it to because of their specific Helm configuration)

9

Describe/document upgrade and rollback procedures?

Is this needed or handle as part of orchestration install/upgrade procedures

Sep 30, 2022 @Luke Gleeson (Unlicensed) and @Toine Siebelink agreed, No, this should be part of standard kubernetes upgrade procedure and Liquibase should do its job (which wil be verified anyway, see decision #8)



Short Term Solution

  1. Use Liquibase ID as CPS & NCMP 'version'

  2. Add Liquibase step 16 with a 'reversible''dummy' transformation

  3. Test liquibase upgrade

  4. Test liquibase rollback

Long Term Solution (out of scope)

  • Resolve technical debt about CPS-Core installing and upgrading NCMP models and data

  • Consider Downgrade