From: lukegleeson Date: Thu, 10 Feb 2022 10:58:29 +0000 (+0000) Subject: Update dmi-registry yang to support cmHandle State X-Git-Tag: 3.0.0~9^2 X-Git-Url: https://gerrit.onap.org/r/gitweb?p=cps.git;a=commitdiff_plain;h=0cbc448573409a43eb3bf7b4c9cb49d418a4c999 Update dmi-registry yang to support cmHandle State - Added dmi-registry@2022-02-10 which contains the new dmi-registry yang model to support the cmHandle State. - Added changelog 12 which removes previous dmi-registries from the db - Added changelog 13 which adds new dmi-registry - Edited yangResourceCsvGenerator.py so that it generates for each argument given and does not generate the module_name and revision for dmi-registry@2021-12-13. - Updated rollback for changeset 11.1 Issue-ID: CPS-874 Signed-off-by: lukegleeson Change-Id: I4ab949f0bc00a52376b42a5ac8a33d397eefcedf --- diff --git a/cps-parent/pom.xml b/cps-parent/pom.xml index 434464ac6..e03dce3db 100755 --- a/cps-parent/pom.xml +++ b/cps-parent/pom.xml @@ -3,7 +3,7 @@ ============LICENSE_START======================================================= Copyright (c) 2021 Pantheon.tech. Modifications Copyright (C) 2021 Bell Canada. - Modifications Copyright (C) 2021 Nordix Foundation. + Modifications Copyright (C) 2021-2022 Nordix Foundation. ================================================================================ Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -421,6 +421,7 @@ yangResourceCsvGenerator.py dmi-registry@2021-12-13 + dmi-registry@2022-02-10 diff --git a/cps-ri/src/main/resources/changelog/changelog-master.yaml b/cps-ri/src/main/resources/changelog/changelog-master.yaml index 14f3726d2..251cec64b 100644 --- a/cps-ri/src/main/resources/changelog/changelog-master.yaml +++ b/cps-ri/src/main/resources/changelog/changelog-master.yaml @@ -1,5 +1,6 @@ # ============LICENSE_START======================================================= # Copyright (c) 2021 Bell Canada. +# Modifications Copyright (C) 2022 Nordix Foundation. # ================================================================================ # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -37,3 +38,7 @@ databaseChangeLog: file: changelog/db/changes/10-loadData-dmi-registry-fragment.yaml - include: file: changelog/db/changes/11-add-column-to-yang-resources-table.yaml + - include: + file: changelog/db/changes/12-delete-all-previous-dmi-registry-schema-set.yaml + - include: + file: changelog/db/changes/13-insert-dmi-registry-2022-02-10-schema-set.yaml diff --git a/cps-ri/src/main/resources/changelog/db/changes/11-add-column-to-yang-resources-table.yaml b/cps-ri/src/main/resources/changelog/db/changes/11-add-column-to-yang-resources-table.yaml index 139e83be2..8643a0545 100644 --- a/cps-ri/src/main/resources/changelog/db/changes/11-add-column-to-yang-resources-table.yaml +++ b/cps-ri/src/main/resources/changelog/db/changes/11-add-column-to-yang-resources-table.yaml @@ -40,4 +40,4 @@ databaseChangeLog: - sql: sql: update yang_resource set module_name = 'dummy_module_name', revision = '2021-08-04' where module_name is null and revision is null rollback: - comment: Rollback for change set 11.1 is not supported. Please rollback change set 11 to rollback changeset 11.1. Change set 11.1 removes null values from the yang_resource table created by change set 11. \ No newline at end of file + sql: update yang_resource set module_name = null, revision = null where module_name = 'dummy_module_name' and revision = '2021-08-04' \ No newline at end of file diff --git a/cps-ri/src/main/resources/changelog/db/changes/12-delete-all-previous-dmi-registry-schema-set.yaml b/cps-ri/src/main/resources/changelog/db/changes/12-delete-all-previous-dmi-registry-schema-set.yaml new file mode 100644 index 000000000..9eda029b9 --- /dev/null +++ b/cps-ri/src/main/resources/changelog/db/changes/12-delete-all-previous-dmi-registry-schema-set.yaml @@ -0,0 +1,157 @@ +# ============LICENSE_START======================================================= +# Copyright (C) 2022 Nordix Foundation. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# ============LICENSE_END========================================================= + +databaseChangeLog: + - changeSet: + author: cps + label: dmi-registry-schema-delete + id: 12 + sql: delete from schema_set_yang_resources + where schema_set_id = (select id from schema_set where name = 'ncmp-dmi-registry-model') + and yang_resource_id = (select id from yang_resource where name = 'dmi-registry@2021-05-20.yang') + rollback: + loadUpdateData: + encoding: UTF-8 + file: 'changelog/db/changes/data/dmi/schema_set_yang_resources.csv' + quotchar: '"' + primaryKey: 'schema_set_id,yang_resource_id' + separator: '|' + tableName: 'schema_set_yang_resources' + usePreparedStatements: true + + - changeSet: + author: cps + label: dmi-registry-schema-delete + id: 12.1 + sql: delete from yang_resource where name = 'dmi-registry@2021-05-20.yang' + rollback: + loadUpdateData: + encoding: UTF-8 + file: 'changelog/db/changes/data/dmi/yang_resource.csv' + onlyUpdate: 'false' + primaryKey: 'id' + quotchar: '"' + separator: '|' + tableName: 'yang_resource' + columns: + - column: + header: name + name: name + type: STRING + - column: + header: content + name: content + type: STRING + - column: + header: checksum + name: checksum + type: STRING + sql: update yang_resource set module_name = 'dummy_module_name', revision = '2021-08-04' where module_name is null and revision is null + + - changeSet: + author: cps + label: dmi-registry-schema-delete + id: 12.2 + sql: delete from schema_set_yang_resources + where schema_set_id = (select id from schema_set where name = 'ncmp-dmi-registry-model') + and yang_resource_id = (select id from yang_resource where name = 'dmi-registry@2021-10-20.yang') + rollback: + loadUpdateData: + encoding: UTF-8 + file: 'changelog/db/changes/data/dmi/schema_set_yang_resources@2021-10-20.csv' + quotchar: '"' + primaryKey: 'schema_set_id,yang_resource_id' + separator: '|' + tableName: 'schema_set_yang_resources' + usePreparedStatements: true + + - changeSet: + author: cps + label: dmi-registry-schema-delete + id: 12.3 + sql: delete from yang_resource where name = 'dmi-registry@2021-10-20.yang' + rollback: + loadUpdateData: + encoding: UTF-8 + file: 'changelog/db/changes/data/dmi/yang_resource@2021-10-20.csv' + onlyUpdate: 'false' + primaryKey: 'id' + quotchar: '"' + separator: '|' + tableName: 'yang_resource' + columns: + - column: + header: name + name: name + type: STRING + - column: + header: content + name: content + type: STRING + - column: + header: checksum + name: checksum + type: STRING + sql: update yang_resource set module_name = 'dummy_module_name', revision = '2021-08-04' where module_name is null and revision is null + + - changeSet: + author: cps + label: dmi-registry-schema-delete + id: 12.4 + sql: delete from schema_set_yang_resources + where schema_set_id = (select id from schema_set where name = 'ncmp-dmi-registry-model') + and yang_resource_id = (select id from yang_resource where name = 'dmi-registry@2021-12-13.yang') + rollback: + loadUpdateData: + encoding: UTF-8 + file: 'changelog/db/changes/data/dmi/schema_set_yang_resources@2021-12-13.csv' + quotchar: '"' + primaryKey: 'schema_set_id,yang_resource_id' + separator: '|' + tableName: 'schema_set_yang_resources' + usePreparedStatements: true + + - changeSet: + author: cps + label: dmi-registry-schema-delete + id: 12.5 + sql: delete from yang_resource where name = 'dmi-registry@2021-12-13.yang' + rollback: + loadUpdateData: + encoding: UTF-8 + file: 'changelog/db/changes/data/dmi//generated-csv/generated_yang_resource_dmi-registry@2021-12-13.csv' + onlyUpdate: 'false' + primaryKey: 'id' + quotchar: '"' + separator: '|' + tableName: 'yang_resource' + columns: + - column: + header: name + name: name + type: STRING + - column: + header: content + name: content + type: STRING + - column: + header: checksum + name: checksum + type: STRING + sql: update yang_resource set module_name = 'dummy_module_name', revision = '2021-08-04' where module_name is null and revision is null + diff --git a/cps-ri/src/main/resources/changelog/db/changes/13-insert-dmi-registry-2022-02-10-schema-set.yaml b/cps-ri/src/main/resources/changelog/db/changes/13-insert-dmi-registry-2022-02-10-schema-set.yaml new file mode 100644 index 000000000..3351b5419 --- /dev/null +++ b/cps-ri/src/main/resources/changelog/db/changes/13-insert-dmi-registry-2022-02-10-schema-set.yaml @@ -0,0 +1,66 @@ +# ============LICENSE_START======================================================= +# Copyright (C) 2022 Nordix Foundation. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# ============LICENSE_END========================================================= + +databaseChangeLog: + - changeSet: + author: cps + label: dmi-registry-schema-load-revision-2022-02-10 + id: 13 + loadUpdateData: + encoding: UTF-8 + file: 'changelog/db/changes/data/dmi/generated-csv/generated_yang_resource_dmi-registry@2022-02-10.csv' + onlyUpdate: 'false' + primaryKey: 'id' + quotchar: '"' + separator: '|' + tableName: 'yang_resource' + columns: + - column: + header: name + name: name + type: STRING + - column: + header: content + name: content + type: STRING + - column: + header: checksum + name: checksum + type: STRING + - column: + header: module_name + name: module_name + type: STRING + - column: + header: revision + name: revision + type: STRING + rollback: + - sql: + sql: delete from yang_resource where name = 'dmi-registry@2022-02-10.yang' + + - changeSet: + author: cps + label: dmi-registry-schema-load-revision-2022-02-10 + id: 13.1 + sql: INSERT INTO schema_set_yang_resources (schema_set_id, yang_resource_id) + VALUES ((select id from schema_set where name = 'ncmp-dmi-registry-model'), (select id from yang_resource where name = 'dmi-registry@2022-02-10.yang')); + rollback: + sql: delete from schema_set_yang_resources + where schema_set_id = (select id from schema_set where name = 'ncmp-dmi-registry-model') + and yang_resource_id = (select id from yang_resource where name = 'dmi-registry@2022-02-10.yang') \ No newline at end of file diff --git a/cps-ri/src/main/resources/changelog/db/changes/data/yang-models/dmi-registry@2022-02-10.yang b/cps-ri/src/main/resources/changelog/db/changes/data/yang-models/dmi-registry@2022-02-10.yang new file mode 100644 index 000000000..3c6d990c5 --- /dev/null +++ b/cps-ri/src/main/resources/changelog/db/changes/data/yang-models/dmi-registry@2022-02-10.yang @@ -0,0 +1,81 @@ +module dmi-registry { + + yang-version 1.1; + + namespace "org:onap:cps:ncmp"; + + prefix dmi-reg; + + contact "toine.siebelink@est.tech"; + + revision "2022-02-10" { + description + "Added State, LockReason, LockReasonDetails to aid with cmHandle sync and timestamp to aid with retry/timeout scenarios"; + } + + revision "2021-12-13" { + description + "Added new list of public additional properties for a Cm-Handle which are exposed to clients of the NCMP interface"; + } + + revision "2021-10-20" { + description + "Added dmi-data-service-name & dmi-model-service-name to allow separate DMI instances for each responsibility"; + } + + revision "2021-05-20" { + description + "Initial Version"; + } + + container dmi-registry { + list cm-handles { + key "id"; + leaf id { + type string; + } + leaf dmi-service-name { + type string; + } + leaf dmi-data-service-name { + type string; + } + leaf dmi-model-service-name { + type string; + } + + list additional-properties { + key "name"; + leaf name { + type string; + } + leaf value { + type string; + } + } + + list public-properties { + key "name"; + leaf name { + type string; + } + leaf value { + type string; + } + } + + leaf state { + type string; + } + leaf lock-reason { + type string; + } + leaf lock-reason-details { + type string; + } + leaf last-update-time { + type string; + } + } + } +} diff --git a/cps-ri/src/main/resources/yangResourceCsvGenerator.py b/cps-ri/src/main/resources/yangResourceCsvGenerator.py index 9a4077bbd..3a076d437 100644 --- a/cps-ri/src/main/resources/yangResourceCsvGenerator.py +++ b/cps-ri/src/main/resources/yangResourceCsvGenerator.py @@ -18,21 +18,49 @@ import csv +import datetime import hashlib import sys +import re yang_source = '' checksum = '' +regexForModuleName = '(?<=module)(.*)(?={)' +regexForRevision = '(?<=revision)(.*)(?={)' -for yang_source in sys.argv[1:]: - checksum = hashlib.sha256(str(yang_source).encode()).hexdigest() +def main(): + for yang_source in sys.argv[1:]: + checksum = hashlib.sha256(str(yang_source).encode()).hexdigest() -with open('changelog/db/changes/data/yang-models/' + yang_source + '.yang') as content: - dmiRegistry = content.read() + with open('changelog/db/changes/data/yang-models/' + yang_source + '.yang', 'r') as content: + dmiRegistry = content.read() -# open the file in the write mode -with open('changelog/db/changes/data/dmi/generated-csv/generated_yang_resource_' + yang_source + '.csv', 'w', newline='') \ - as file: - writer = csv.writer(file, delimiter='|') - writer.writerow(["name", "content", "checksum"]) - writer.writerow([yang_source + '.yang', dmiRegistry, checksum]) + try: + latestRevision = re.search(regexForRevision, dmiRegistry).group(0).replace('\"','').strip() + except: + print("ERROR IN in yangResourceCsvGenerator.py: Unable to find revision for " + yang_source + '.yang') + + try: + module_name = re.search(regexForModuleName, dmiRegistry).group(0).strip() + except: + print("ERROR IN in yangResourceCsvGenerator.py: Unable to find module name for " + yang_source + '.yang') + + #If true, file was created after module_name and revision columns were added to yang-resources table + writeWithModuleNameAndRevision = yang_source != 'dmi-registry@2021-12-13' + + try: + # open the file in the write mode + with open('changelog/db/changes/data/dmi/generated-csv/generated_yang_resource_' + yang_source + '.csv', 'w', newline='') \ + as file: + writer = csv.writer(file, delimiter='|') + if(writeWithModuleNameAndRevision): + writer.writerow(["name", "content", "checksum", "module_name", "revision"]) + writer.writerow([yang_source + '.yang', dmiRegistry, checksum, module_name, latestRevision]) + else: + writer.writerow(["name", "content", "checksum"]) + writer.writerow([yang_source + '.yang', dmiRegistry, checksum]) + except: + print("ERROR IN in yangResourceCsvGenerator.py: Unable to write to changelog/db/changes/data/dmi/generated-csv/generated_yang_resource_" + yang_source + ".csv") + + +main() \ No newline at end of file