aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cps-dependencies/pom.xml4
-rwxr-xr-xcps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/NetworkCmProxyController.java6
-rw-r--r--cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/handlers/NcmpCachedResourceRequestHandler.java10
-rw-r--r--cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/handlers/NcmpDatastoreRequestHandler.java30
-rw-r--r--cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/handlers/NcmpPassthroughResourceRequestHandler.java12
-rw-r--r--cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/NetworkCmProxyControllerSpec.groovy243
-rw-r--r--cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/handlers/NcmpDatastoreRequestHandlerSpec.groovy10
-rw-r--r--cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/NetworkCmProxyDataService.java27
-rwxr-xr-xcps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImpl.java18
-rw-r--r--cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/events/cmsubscription/service/CmNotificationSubscriptionPersistenceService.java11
-rw-r--r--cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/events/cmsubscription/service/CmNotificationSubscriptionPersistenceServiceImpl.java64
-rw-r--r--cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/operations/DmiDataOperations.java17
-rw-r--r--cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/utils/AlternateIdChecker.java34
-rw-r--r--cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/models/CmResourceAddress.java25
-rw-r--r--cps-ncmp-service/src/main/java/org/onap/cps/ncmp/init/AbstractModelLoader.java29
-rw-r--r--cps-ncmp-service/src/main/java/org/onap/cps/ncmp/init/CmDataSubscriptionModelLoader.java2
-rw-r--r--cps-ncmp-service/src/main/java/org/onap/cps/ncmp/init/InventoryModelLoader.java9
-rw-r--r--cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImplSpec.groovy27
-rw-r--r--cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/events/cmsubscription/service/CmNotificationSubscriptionPersistenceServiceImplSpec.groovy47
-rw-r--r--cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/operations/DmiDataOperationsSpec.groovy5
-rw-r--r--cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/utils/AlternateIdCheckerSpec.groovy3
-rw-r--r--cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/init/AbstractModelLoaderSpec.groovy8
-rw-r--r--cps-parent/pom.xml2
-rw-r--r--cps-ri/src/main/resources/changelog/changelog-master.yaml40
-rw-r--r--cps-ri/src/main/resources/changelog/db/changes/01-createCPSTables.yaml239
-rw-r--r--cps-ri/src/main/resources/changelog/db/changes/02-loadData-dataspace.yaml29
-rw-r--r--cps-ri/src/main/resources/changelog/db/changes/03-loadData-schema-set.yaml69
-rw-r--r--cps-ri/src/main/resources/changelog/db/changes/04-loadData-anchor.yaml29
-rw-r--r--cps-ri/src/main/resources/changelog/db/changes/05-loadData-fragment.yaml84
-rw-r--r--cps-ri/src/main/resources/changelog/db/changes/06-delete-not-required-fragment-index.yaml35
-rw-r--r--cps-ri/src/main/resources/changelog/db/changes/07-update-yang-resource-checksums.yaml45
-rw-r--r--cps-ri/src/main/resources/changelog/db/changes/08-update-yang-resources-cps-ran-model-forward.sql1306
-rw-r--r--cps-ri/src/main/resources/changelog/db/changes/08-update-yang-resources-cps-ran-model-rollback.sql1303
-rw-r--r--cps-ri/src/main/resources/changelog/db/changes/08-update-yang-resources-ietf-inet-types-forward.sql462
-rw-r--r--cps-ri/src/main/resources/changelog/db/changes/08-update-yang-resources-ietf-inet-types-rollback.sql461
-rw-r--r--cps-ri/src/main/resources/changelog/db/changes/08-update-yang-resources-ietf-yang-types-forward.sql485
-rw-r--r--cps-ri/src/main/resources/changelog/db/changes/08-update-yang-resources-ietf-yang-types-rollback.sql484
-rw-r--r--cps-ri/src/main/resources/changelog/db/changes/08-update-yang-resources.yaml36
-rw-r--r--cps-ri/src/main/resources/changelog/db/changes/09-loadData-dmi-registry-schema-set.yaml210
-rw-r--r--cps-ri/src/main/resources/changelog/db/changes/10-loadData-dmi-registry-fragment.yaml88
-rw-r--r--cps-ri/src/main/resources/changelog/db/changes/11-add-column-to-yang-resources-table.yaml43
-rw-r--r--cps-ri/src/main/resources/changelog/db/changes/12-delete-all-previous-dmi-registry-schema-set.yaml157
-rw-r--r--cps-ri/src/main/resources/changelog/db/changes/13-insert-dmi-registry-2022-02-10-schema-set.yaml66
-rw-r--r--cps-ri/src/main/resources/changelog/db/changes/14-loadData-dmi-registry-2022-05-10-schema-set.yaml113
-rw-r--r--cps-ri/src/main/resources/changelog/db/changes/15-rename-column-yang-resource-table.yaml14
-rw-r--r--cps-ri/src/main/resources/changelog/db/changes/16-insert-cm-handle-state-forward.sql137
-rw-r--r--cps-ri/src/main/resources/changelog/db/changes/16-insert-cm-handle-state-rollback.sql4
-rw-r--r--cps-ri/src/main/resources/changelog/db/changes/16-insert-cm-handle-state.yaml11
-rw-r--r--cps-ri/src/main/resources/changelog/db/changes/17-add-index-to-schema-set-yang-resources.yaml15
-rw-r--r--cps-ri/src/main/resources/changelog/db/changes/18-cascade-delete-fragment-children.yaml34
-rw-r--r--cps-ri/src/main/resources/changelog/db/changes/19-delete-not-required-dataspace-id-from-fragment.yaml109
-rw-r--r--cps-ri/src/main/resources/changelog/db/changes/20-change-foreign-key-id-types-to-integer.yaml48
-rw-r--r--cps-ri/src/main/resources/changelog/db/changes/21-escape-quotes-in-xpath.yaml29
-rw-r--r--cps-ri/src/main/resources/changelog/db/changes/data/anchor.csv2
-rw-r--r--cps-ri/src/main/resources/changelog/db/changes/data/dataspace.csv2
-rw-r--r--cps-ri/src/main/resources/changelog/db/changes/data/dmi/anchor.csv2
-rw-r--r--cps-ri/src/main/resources/changelog/db/changes/data/dmi/dataspace.csv2
-rw-r--r--cps-ri/src/main/resources/changelog/db/changes/data/dmi/fragment.csv2
-rw-r--r--cps-ri/src/main/resources/changelog/db/changes/data/dmi/schema_set.csv2
-rw-r--r--cps-ri/src/main/resources/changelog/db/changes/data/dmi/schema_set_yang_resources.csv3
-rw-r--r--cps-ri/src/main/resources/changelog/db/changes/data/dmi/schema_set_yang_resources@2021-10-20.csv3
-rw-r--r--cps-ri/src/main/resources/changelog/db/changes/data/dmi/schema_set_yang_resources@2021-12-13.csv3
-rw-r--r--cps-ri/src/main/resources/changelog/db/changes/data/dmi/yang_resource.csv48
-rw-r--r--cps-ri/src/main/resources/changelog/db/changes/data/dmi/yang_resource@2021-10-20.csv53
-rw-r--r--cps-ri/src/main/resources/changelog/db/changes/data/fragment.csv144
-rw-r--r--cps-ri/src/main/resources/changelog/db/changes/data/schema_set.csv2
-rw-r--r--cps-ri/src/main/resources/changelog/db/changes/data/schema_set_yang_resources.csv4
-rw-r--r--cps-ri/src/main/resources/changelog/db/changes/data/yang_resource.csv2236
-rw-r--r--csit/tests/cps-admin/cps-admin.robot9
-rw-r--r--docs/deployment.rst7
-rw-r--r--docs/release-notes.rst2
-rw-r--r--integration-test/pom.xml14
-rw-r--r--integration-test/src/test/groovy/org/onap/cps/integration/base/CpsIntegrationSpecBase.groovy19
-rw-r--r--integration-test/src/test/groovy/org/onap/cps/integration/functional/NcmpCmHandleCreateSpec.groovy18
-rw-r--r--integration-test/src/test/groovy/org/onap/cps/integration/functional/NcmpCmNotificationSubscriptionSpec.groovy46
-rw-r--r--integration-test/src/test/java/org/onap/cps/integration/KafkaTestContainer.java86
76 files changed, 756 insertions, 8781 deletions
diff --git a/cps-dependencies/pom.xml b/cps-dependencies/pom.xml
index 69ea85917..68f36fb83 100644
--- a/cps-dependencies/pom.xml
+++ b/cps-dependencies/pom.xml
@@ -2,7 +2,7 @@
<!--
============LICENSE_START=======================================================
Copyright (c) 2021 Linux Foundation.
- Modifications Copyright (C) 2020-2023 Nordix Foundation
+ Modifications Copyright (C) 2020-2024 Nordix Foundation
Modifications Copyright (C) 2022 Bell Canada.
================================================================================
Licensed under the Apache License, Version 2.0 (the "License");
@@ -130,7 +130,7 @@
<dependency>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs</artifactId>
- <version>4.2.0</version>
+ <version>4.2.3</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
diff --git a/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/NetworkCmProxyController.java b/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/NetworkCmProxyController.java
index 66c159105..93cbccf1a 100755
--- a/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/NetworkCmProxyController.java
+++ b/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/NetworkCmProxyController.java
@@ -44,6 +44,7 @@ import org.onap.cps.ncmp.api.impl.inventory.CompositeState;
import org.onap.cps.ncmp.api.impl.operations.DatastoreType;
import org.onap.cps.ncmp.api.impl.trustlevel.TrustLevel;
import org.onap.cps.ncmp.api.models.CmHandleQueryApiParameters;
+import org.onap.cps.ncmp.api.models.CmResourceAddress;
import org.onap.cps.ncmp.api.models.NcmpServiceCmHandle;
import org.onap.cps.ncmp.rest.api.NetworkCmProxyApi;
import org.onap.cps.ncmp.rest.controller.handlers.NcmpCachedResourceRequestHandler;
@@ -107,8 +108,9 @@ public class NetworkCmProxyController implements NetworkCmProxyApi {
final Boolean includeDescendants,
final String authorization) {
final NcmpDatastoreRequestHandler ncmpDatastoreRequestHandler = getNcmpDatastoreRequestHandler(datastoreName);
- return ncmpDatastoreRequestHandler.executeRequest(datastoreName, cmHandle, resourceIdentifier,
- optionsParamInQuery, topicParamInQuery, includeDescendants, authorization);
+ final CmResourceAddress cmResourceAddress = new CmResourceAddress(datastoreName, cmHandle, resourceIdentifier);
+ return ncmpDatastoreRequestHandler.executeRequest(cmResourceAddress, optionsParamInQuery, topicParamInQuery,
+ includeDescendants, authorization);
}
@Override
diff --git a/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/handlers/NcmpCachedResourceRequestHandler.java b/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/handlers/NcmpCachedResourceRequestHandler.java
index 430c0996f..e6d6faf98 100644
--- a/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/handlers/NcmpCachedResourceRequestHandler.java
+++ b/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/handlers/NcmpCachedResourceRequestHandler.java
@@ -1,6 +1,6 @@
/*
* ============LICENSE_START=======================================================
- * Copyright (C) 2022-2023 Nordix Foundation
+ * Copyright (C) 2022-2024 Nordix Foundation
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -23,6 +23,7 @@ package org.onap.cps.ncmp.rest.controller.handlers;
import java.util.function.Supplier;
import org.onap.cps.ncmp.api.NetworkCmProxyDataService;
import org.onap.cps.ncmp.api.NetworkCmProxyQueryService;
+import org.onap.cps.ncmp.api.models.CmResourceAddress;
import org.onap.cps.ncmp.rest.executor.CpsNcmpTaskExecutor;
import org.onap.cps.spi.FetchDescendantsOption;
import org.springframework.http.ResponseEntity;
@@ -68,9 +69,7 @@ public class NcmpCachedResourceRequestHandler extends NcmpDatastoreRequestHandle
}
@Override
- protected Supplier<Object> getTaskSupplierForGetRequest(final String datastoreName,
- final String cmHandleId,
- final String resourceIdentifier,
+ protected Supplier<Object> getTaskSupplierForGetRequest(final CmResourceAddress cmResourceAddress,
final String optionsParamInQuery,
final String topicParamInQuery,
final String requestId,
@@ -79,8 +78,7 @@ public class NcmpCachedResourceRequestHandler extends NcmpDatastoreRequestHandle
final FetchDescendantsOption fetchDescendantsOption = getFetchDescendantsOption(includeDescendants);
- return () -> networkCmProxyDataService.getResourceDataForCmHandle(datastoreName, cmHandleId, resourceIdentifier,
- fetchDescendantsOption);
+ return () -> networkCmProxyDataService.getResourceDataForCmHandle(cmResourceAddress, fetchDescendantsOption);
}
private Supplier<Object> getTaskSupplierForQueryRequest(final String cmHandleId,
diff --git a/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/handlers/NcmpDatastoreRequestHandler.java b/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/handlers/NcmpDatastoreRequestHandler.java
index 65410d3a3..1ae16820a 100644
--- a/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/handlers/NcmpDatastoreRequestHandler.java
+++ b/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/handlers/NcmpDatastoreRequestHandler.java
@@ -25,6 +25,7 @@ import java.util.UUID;
import java.util.function.Supplier;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
+import org.onap.cps.ncmp.api.models.CmResourceAddress;
import org.onap.cps.ncmp.rest.executor.CpsNcmpTaskExecutor;
import org.onap.cps.ncmp.rest.util.TopicValidator;
import org.springframework.beans.factory.annotation.Value;
@@ -50,18 +51,14 @@ public abstract class NcmpDatastoreRequestHandler {
/**
* Executes synchronous/asynchronous get request for given cm handle.
*
- * @param datastoreName the name of the datastore
- * @param cmHandleId the cm handle
- * @param resourceIdentifier the resource identifier
+ * @param cmResourceAddress the name of the datastore, cm handle and resource identifier
* @param optionsParamInQuery the options param in query
* @param topicParamInQuery the topic param in query
* @param includeDescendants whether include descendants
* @param authorization contents of Authorization header, or null if not present
* @return the response entity
*/
- public ResponseEntity<Object> executeRequest(final String datastoreName,
- final String cmHandleId,
- final String resourceIdentifier,
+ public ResponseEntity<Object> executeRequest(final CmResourceAddress cmResourceAddress,
final String optionsParamInQuery,
final String topicParamInQuery,
final boolean includeDescendants,
@@ -69,16 +66,16 @@ public abstract class NcmpDatastoreRequestHandler {
final boolean asyncResponseRequested = topicParamInQuery != null;
if (asyncResponseRequested && notificationFeatureEnabled) {
- return executeAsyncTaskAndGetResponseEntity(datastoreName, cmHandleId, resourceIdentifier,
- optionsParamInQuery, topicParamInQuery, includeDescendants, authorization);
+ return executeAsyncTaskAndGetResponseEntity(cmResourceAddress, optionsParamInQuery, topicParamInQuery,
+ includeDescendants, authorization);
}
if (asyncResponseRequested) {
log.warn("Asynchronous request is unavailable as notification feature is currently disabled, "
+ "will use synchronous operation.");
}
- final Supplier<Object> taskSupplier = getTaskSupplierForGetRequest(datastoreName, cmHandleId,
- resourceIdentifier, optionsParamInQuery, NO_TOPIC, NO_REQUEST_ID, includeDescendants, authorization);
+ final Supplier<Object> taskSupplier = getTaskSupplierForGetRequest(cmResourceAddress, optionsParamInQuery,
+ NO_TOPIC, NO_REQUEST_ID, includeDescendants, authorization);
return executeTaskSync(taskSupplier);
}
@@ -96,23 +93,18 @@ public abstract class NcmpDatastoreRequestHandler {
return ResponseEntity.ok(taskSupplier.get());
}
- private ResponseEntity<Object> executeAsyncTaskAndGetResponseEntity(final String datastoreName,
- final String cmHandleId,
- final String resourceIdentifier,
+ private ResponseEntity<Object> executeAsyncTaskAndGetResponseEntity(final CmResourceAddress cmResourceAddress,
final String optionsParamInQuery,
final String topicParamInQuery,
final boolean includeDescendants,
final String authorization) {
final String requestId = UUID.randomUUID().toString();
- final Supplier<Object> taskSupplier = getTaskSupplierForGetRequest(datastoreName, cmHandleId,
- resourceIdentifier, optionsParamInQuery, topicParamInQuery, requestId, includeDescendants,
- authorization);
+ final Supplier<Object> taskSupplier = getTaskSupplierForGetRequest(cmResourceAddress,
+ optionsParamInQuery, topicParamInQuery, requestId, includeDescendants, authorization);
return executeTaskAsync(topicParamInQuery, requestId, taskSupplier);
}
- protected abstract Supplier<Object> getTaskSupplierForGetRequest(final String datastoreName,
- final String cmHandleId,
- final String resourceIdentifier,
+ protected abstract Supplier<Object> getTaskSupplierForGetRequest(final CmResourceAddress cmResourceAddress,
final String optionsParamInQuery,
final String topicParamInQuery,
final String requestId,
diff --git a/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/handlers/NcmpPassthroughResourceRequestHandler.java b/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/handlers/NcmpPassthroughResourceRequestHandler.java
index 430b749ef..75112caf1 100644
--- a/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/handlers/NcmpPassthroughResourceRequestHandler.java
+++ b/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/handlers/NcmpPassthroughResourceRequestHandler.java
@@ -1,6 +1,6 @@
/*
* ============LICENSE_START=======================================================
- * Copyright (C) 2022-2023 Nordix Foundation
+ * Copyright (C) 2022-2024 Nordix Foundation
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -30,6 +30,7 @@ import org.onap.cps.ncmp.api.NetworkCmProxyDataService;
import org.onap.cps.ncmp.api.impl.exception.InvalidDatastoreException;
import org.onap.cps.ncmp.api.impl.operations.DatastoreType;
import org.onap.cps.ncmp.api.impl.operations.OperationType;
+import org.onap.cps.ncmp.api.models.CmResourceAddress;
import org.onap.cps.ncmp.api.models.DataOperationRequest;
import org.onap.cps.ncmp.rest.exceptions.OperationNotSupportedException;
import org.onap.cps.ncmp.rest.executor.CpsNcmpTaskExecutor;
@@ -77,18 +78,15 @@ public class NcmpPassthroughResourceRequestHandler extends NcmpDatastoreRequestH
}
@Override
- protected Supplier<Object> getTaskSupplierForGetRequest(final String datastoreName,
- final String cmHandleId,
- final String resourceIdentifier,
+ protected Supplier<Object> getTaskSupplierForGetRequest(final CmResourceAddress cmResourceAddress,
final String optionsParamInQuery,
final String topicParamInQuery,
final String requestId,
final boolean includeDescendants,
final String authorization) {
- return () -> networkCmProxyDataService.getResourceDataForCmHandle(
- datastoreName, cmHandleId, resourceIdentifier, optionsParamInQuery, topicParamInQuery, requestId,
- authorization);
+ return () -> networkCmProxyDataService.getResourceDataForCmHandle(cmResourceAddress, optionsParamInQuery,
+ topicParamInQuery, requestId, authorization);
}
private ResponseEntity<Object> getRequestIdAndSendDataOperationRequestToDmiService(
diff --git a/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/NetworkCmProxyControllerSpec.groovy b/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/NetworkCmProxyControllerSpec.groovy
index 616492d4e..a5b1f05ee 100644
--- a/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/NetworkCmProxyControllerSpec.groovy
+++ b/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/NetworkCmProxyControllerSpec.groovy
@@ -39,6 +39,7 @@ import org.onap.cps.ncmp.api.impl.inventory.DataStoreSyncState
import org.onap.cps.ncmp.api.impl.inventory.LockReasonCategory
import org.onap.cps.ncmp.api.impl.trustlevel.TrustLevel
import org.onap.cps.ncmp.api.models.NcmpServiceCmHandle
+import org.onap.cps.ncmp.api.models.CmResourceAddress
import org.onap.cps.ncmp.rest.controller.handlers.NcmpCachedResourceRequestHandler
import org.onap.cps.ncmp.rest.controller.handlers.NcmpPassthroughResourceRequestHandler
import org.onap.cps.ncmp.rest.executor.CpsNcmpTaskExecutor
@@ -136,15 +137,15 @@ class NetworkCmProxyControllerSpec extends Specification {
def NO_TOPIC = null
def NO_REQUEST_ID = null
def NO_AUTH_HEADER = null
- def TIMOUT_FOR_TEST = 1234
+ def TIMEOUT_FOR_TEST = 1234
def logger = Spy(ListAppender<ILoggingEvent>)
def setup() {
ncmpCachedResourceRequestHandler.notificationFeatureEnabled = true
- ncmpCachedResourceRequestHandler.timeOutInMilliSeconds = TIMOUT_FOR_TEST
+ ncmpCachedResourceRequestHandler.timeOutInMilliSeconds = TIMEOUT_FOR_TEST
ncmpPassthroughResourceRequestHandler.notificationFeatureEnabled = true
- ncmpPassthroughResourceRequestHandler.timeOutInMilliSeconds = TIMOUT_FOR_TEST
+ ncmpPassthroughResourceRequestHandler.timeOutInMilliSeconds = TIMEOUT_FOR_TEST
setupLogger()
}
@@ -154,31 +155,28 @@ class NetworkCmProxyControllerSpec extends Specification {
def 'Get Resource Data from pass-through operational.'() {
given: 'resource data url'
- def getUrl = "$ncmpBasePathV1/ch/testCmHandle/data/ds/ncmp-datastore:passthrough-operational" +
- "?resourceIdentifier=parent/child&options=(a=1,b=2)"
+ def getUrl = "$ncmpBasePathV1/ch/testCmHandle/data/ds/ncmp-datastore:passthrough-operational?resourceIdentifier=parent/child&options=(a=1,b=2)"
+ and: 'the expected cm resource address'
+ def expectedCmResourceAddress = new CmResourceAddress(PASSTHROUGH_OPERATIONAL.datastoreName, 'testCmHandle', 'parent/child')
when: 'get data resource request is performed'
- def response = mvc.perform(
- get(getUrl)
- .contentType(MediaType.APPLICATION_JSON)
- ).andReturn().response
- then: 'the NCMP data service is called with getResourceDataOperationalForCmHandle'
- 1 * mockNetworkCmProxyDataService.getResourceDataForCmHandle(PASSTHROUGH_OPERATIONAL.datastoreName, 'testCmHandle',
- 'parent/child','(a=1,b=2)', NO_TOPIC, NO_REQUEST_ID, NO_AUTH_HEADER)
+ def response = mvc.perform(get(getUrl).contentType(MediaType.APPLICATION_JSON)).andReturn().response
+ then: 'the NCMP data service is called with correct parameters'
+ 1 * mockNetworkCmProxyDataService.getResourceDataForCmHandle(expectedCmResourceAddress, '(a=1,b=2)', NO_TOPIC, NO_REQUEST_ID, NO_AUTH_HEADER)
and: 'response status is Ok'
- response.status == HttpStatus.OK.value()
+ assert response.status == HttpStatus.OK.value()
}
def 'Get Resource Data from ncmp-datastore:operational (cached) parameters handling with #scenario.'() {
given: 'resource data url'
- def getUrl = "$ncmpBasePathV1/ch/h123/data/ds/ncmp-datastore:operational" +
- "?resourceIdentifier=parent/child${additionalUrlParam}"
+ def getUrl = "$ncmpBasePathV1/ch/h123/data/ds/ncmp-datastore:operational?resourceIdentifier=parent/child${additionalUrlParam}"
+ and: 'the expected cm resource address'
+ def expectedCmResourceAddress = new CmResourceAddress('ncmp-datastore:operational', 'h123', 'parent/child')
when: 'get data resource request is performed'
- def response = mvc.perform(
- get(getUrl).contentType(MediaType.APPLICATION_JSON)).andReturn().response
- then: 'task executor is called appropriate number of times'
- 1 * mockNetworkCmProxyDataService.getResourceDataForCmHandle('ncmp-datastore:operational', 'h123', 'parent/child', expectedIncludeDescendants)
+ def response = mvc.perform(get(getUrl).contentType(MediaType.APPLICATION_JSON)).andReturn().response
+ then: 'the NCMP data service is called with correct parameters'
+ 1 * mockNetworkCmProxyDataService.getResourceDataForCmHandle(expectedCmResourceAddress, expectedIncludeDescendants)
and: 'response status is OK'
- response.status == HttpStatus.OK.value()
+ assert response.status == HttpStatus.OK.value()
where: 'the following parameters are used'
scenario | additionalUrlParam || expectedIncludeDescendants
'no additional param' | '' || OMIT_DESCENDANTS
@@ -192,15 +190,11 @@ class NetworkCmProxyControllerSpec extends Specification {
def 'Execute (async) data operation to read data from dmi service.'() {
given: 'data operation url'
def getUrl = "$ncmpBasePathV1/data?topic=my-topic-name"
- def dataOperationRequestJsonData = jsonObjectMapper.asJsonString(getDataOperationRequest("read", datastore.datastoreName))
+ def dataOperationRequestJsonData = jsonObjectMapper.asJsonString(getDataOperationRequest('read', datastore.datastoreName))
when: 'post data operation request is performed'
- def response = mvc.perform(
- post(getUrl)
- .contentType(MediaType.APPLICATION_JSON)
- .content(dataOperationRequestJsonData)
- ).andReturn().response
+ def response = mvc.perform(post(getUrl).contentType(MediaType.APPLICATION_JSON).content(dataOperationRequestJsonData)).andReturn().response
then: 'response status is Ok'
- response.status == HttpStatus.OK.value()
+ assert response.status == HttpStatus.OK.value()
and: 'async request id is generated'
assert response.contentAsString.contains('requestId')
then: 'the request is handled asynchronously'
@@ -212,80 +206,57 @@ class NetworkCmProxyControllerSpec extends Specification {
def 'Execute (async) data operation with some validation error.'() {
given: 'data operation url'
def getUrl = "$ncmpBasePathV1/data?topic=my-topic-name"
- def dataOperationRequestJsonData = jsonObjectMapper.asJsonString(
- getDataOperationRequest('read', 'invalid datastore'))
+ def dataOperationRequestJsonData = jsonObjectMapper.asJsonString(getDataOperationRequest('read', 'invalid datastore'))
when: 'post data resource request is performed'
- def response = mvc.perform(
- post(getUrl)
- .contentType(MediaType.APPLICATION_JSON)
- .content(dataOperationRequestJsonData)
- ).andReturn().response
+ def response = mvc.perform(post(getUrl).contentType(MediaType.APPLICATION_JSON).content(dataOperationRequestJsonData)).andReturn().response
then: 'response status is BAD_REQUEST'
- response.status == HttpStatus.BAD_REQUEST.value()
+ assert response.status == HttpStatus.BAD_REQUEST.value()
}
def 'Get data operation resource data when notification feature is disabled for datastore: #datastore.'() {
given: 'data operation url'
def getUrl = "$ncmpBasePathV1/data?topic=my-topic-name"
- def dataOperationRequestJsonData = jsonObjectMapper.asJsonString(
- getDataOperationRequest("read", PASSTHROUGH_RUNNING.datastoreName))
+ def dataOperationRequestJsonData = jsonObjectMapper.asJsonString(getDataOperationRequest("read", PASSTHROUGH_RUNNING.datastoreName))
ncmpPassthroughResourceRequestHandler.notificationFeatureEnabled = false
when: 'post data resource request is performed'
- def response = mvc.perform(
- post(getUrl)
- .contentType(MediaType.APPLICATION_JSON)
- .content(dataOperationRequestJsonData)
+ def response = mvc.perform(post(getUrl).contentType(MediaType.APPLICATION_JSON).content(dataOperationRequestJsonData)
).andReturn().response
then: 'response status is Ok'
- response.status == HttpStatus.OK.value()
+ assert response.status == HttpStatus.OK.value()
and: 'async request id is unavailable'
assert response.contentAsString == '{"status":"Asynchronous request is unavailable as notification feature is currently disabled."}'
}
def 'Query Resource Data from operational.'() {
given: 'the query resource data url'
- def getUrl = "$ncmpBasePathV1/ch/testCmHandle/data/ds/ncmp-datastore:operational/query" +
- "?cps-path=/cps/path"
+ def getUrl = "$ncmpBasePathV1/ch/testCmHandle/data/ds/ncmp-datastore:operational/query?cps-path=/cps/path"
when: 'the query data resource request is performed'
- def response = mvc.perform(
- get(getUrl)
- .contentType(MediaType.APPLICATION_JSON)
- ).andReturn().response
+ def response = mvc.perform(get(getUrl).contentType(MediaType.APPLICATION_JSON)).andReturn().response
then: 'the NCMP query service is called with queryResourceDataOperationalForCmHandle'
- 1 * mockNetworkCmProxyQueryService.queryResourceDataOperational('testCmHandle',
- '/cps/path',
- FetchDescendantsOption.OMIT_DESCENDANTS)
+ 1 * mockNetworkCmProxyQueryService.queryResourceDataOperational('testCmHandle','/cps/path',FetchDescendantsOption.OMIT_DESCENDANTS)
and: 'response status is Ok'
- response.status == HttpStatus.OK.value()
+ assert response.status == HttpStatus.OK.value()
}
def 'Query Resource Data with unsupported datastore'() {
given: 'the query resource data url'
- def getUrl = "$ncmpBasePathV1/ch/testCmHandle/data/ds/ncmp-datastore:passthrough-running/query" +
- "?cps-path=/cps/path"
+ def getUrl = "$ncmpBasePathV1/ch/testCmHandle/data/ds/ncmp-datastore:passthrough-running/query?cps-path=/cps/path"
when: 'the query data resource request is performed'
- def response = mvc.perform(
- get(getUrl)
- .contentType(MediaType.APPLICATION_JSON)
- ).andReturn().response
+ def response = mvc.perform(get(getUrl).contentType(MediaType.APPLICATION_JSON)).andReturn().response
then: 'a 400 BAD_REQUEST is returned for the unsupported datastore'
- response.status == 400
+ assert response.status == 400
and: 'the error message is that the datastore is not supported'
- response.contentAsString.contains("ncmp-datastore:passthrough-running is not supported")
+ assert response.contentAsString.contains("ncmp-datastore:passthrough-running is not supported")
}
def 'Get Resource Data from pass-through running with #scenario value in resource identifier param.'() {
given: 'resource data url'
- def getUrl = "$ncmpBasePathV1/ch/testCmHandle/data/ds/ncmp-datastore:passthrough-running" +
- "?resourceIdentifier=" + resourceIdentifier + "&options=(a=1,b=2)"
+ def getUrl = "$ncmpBasePathV1/ch/testCmHandle/data/ds/ncmp-datastore:passthrough-running?resourceIdentifier=$resourceIdentifier&options=(a=1,b=2)"
and: 'ncmp service returns json object'
- mockNetworkCmProxyDataService.getResourceDataForCmHandle(PASSTHROUGH_RUNNING.datastoreName, 'testCmHandle',
- resourceIdentifier,'(a=1,b=2)', NO_TOPIC, NO_REQUEST_ID, NO_AUTH_HEADER) >> '{valid-json}'
+ def expectedCmResourceAddress = new CmResourceAddress(PASSTHROUGH_RUNNING.datastoreName, 'testCmHandle', resourceIdentifier)
+ mockNetworkCmProxyDataService.getResourceDataForCmHandle(expectedCmResourceAddress,'(a=1,b=2)', NO_TOPIC, NO_REQUEST_ID, NO_AUTH_HEADER) >> '{valid-json}'
when: 'get data resource request is performed'
- def response = mvc.perform(
- get(getUrl)
- .contentType(MediaType.APPLICATION_JSON)
- ).andReturn().response
+ def response = mvc.perform(get(getUrl).contentType(MediaType.APPLICATION_JSON)).andReturn().response
then: 'response status is Ok'
response.status == HttpStatus.OK.value()
and: 'response contains valid object body'
@@ -302,34 +273,24 @@ class NetworkCmProxyControllerSpec extends Specification {
def 'Update resource data from pass-through running.'() {
given: 'update resource data url'
- def updateUrl = "$ncmpBasePathV1/ch/testCmHandle/data/ds/ncmp-datastore:passthrough-running" +
- "?resourceIdentifier=parent/child"
+ def updateUrl = "$ncmpBasePathV1/ch/testCmHandle/data/ds/ncmp-datastore:passthrough-running?resourceIdentifier=parent/child"
when: 'update data resource request is performed'
- def response = mvc.perform(
- put(updateUrl)
- .contentType(MediaType.APPLICATION_JSON_VALUE).content(requestBody)
- ).andReturn().response
+ def response = mvc.perform(put(updateUrl).contentType(MediaType.APPLICATION_JSON_VALUE).content(requestBody)).andReturn().response
then: 'ncmp service method to update resource is called'
- 1 * mockNetworkCmProxyDataService.writeResourceDataPassThroughRunningForCmHandle('testCmHandle',
- 'parent/child', UPDATE, requestBody, 'application/json;charset=UTF-8', NO_AUTH_HEADER)
+ 1 * mockNetworkCmProxyDataService.writeResourceDataPassThroughRunningForCmHandle('testCmHandle','parent/child', UPDATE, requestBody, 'application/json;charset=UTF-8', NO_AUTH_HEADER)
and: 'the response status is OK'
- response.status == HttpStatus.OK.value()
+ assert response.status == HttpStatus.OK.value()
}
def 'Create Resource Data from pass-through running with #scenario.'() {
given: 'resource data url'
- def url = "$ncmpBasePathV1/ch/testCmHandle/data/ds/ncmp-datastore:passthrough-running" +
- "?resourceIdentifier=parent/child"
+ def url = "$ncmpBasePathV1/ch/testCmHandle/data/ds/ncmp-datastore:passthrough-running?resourceIdentifier=parent/child"
when: 'create resource request is performed'
- def response = mvc.perform(
- post(url)
- .contentType(MediaType.APPLICATION_JSON_VALUE).content(requestBody)
- ).andReturn().response
+ def response = mvc.perform(post(url).contentType(MediaType.APPLICATION_JSON_VALUE).content(requestBody)).andReturn().response
then: 'ncmp service method to create resource called'
- 1 * mockNetworkCmProxyDataService.writeResourceDataPassThroughRunningForCmHandle('testCmHandle',
- 'parent/child', CREATE, requestBody, 'application/json;charset=UTF-8', NO_AUTH_HEADER)
+ 1 * mockNetworkCmProxyDataService.writeResourceDataPassThroughRunningForCmHandle('testCmHandle', 'parent/child', CREATE, requestBody, 'application/json;charset=UTF-8', NO_AUTH_HEADER)
and: 'resource is created'
- response.status == HttpStatus.CREATED.value()
+ assert response.status == HttpStatus.CREATED.value()
}
def 'Get module references for the given dataspace and cm handle.'() {
@@ -338,12 +299,11 @@ class NetworkCmProxyControllerSpec extends Specification {
when: 'get module resource request is performed'
def response = mvc.perform(get(getUrl)).andReturn().response
then: 'ncmp service method to get yang resource module references is called'
- mockNetworkCmProxyDataService.getYangResourcesModuleReferences('some-cmhandle')
- >> [new ModuleReference(moduleName: 'some-name1', revision: '2021-10-03')]
+ mockNetworkCmProxyDataService.getYangResourcesModuleReferences('some-cmhandle') >> [new ModuleReference(moduleName: 'some-name1', revision: '2021-10-03')]
and: 'response contains an array with the module name and revision'
response.getContentAsString() == '[{"moduleName":"some-name1","revision":"2021-10-03"}]'
and: 'response returns an OK http code'
- response.status == HttpStatus.OK.value()
+ assert response.status == HttpStatus.OK.value()
}
def 'Retrieve cm handles.'() {
@@ -364,13 +324,11 @@ class NetworkCmProxyControllerSpec extends Specification {
and: 'map for trust level per cmHandle has value for only one cm handle'
trustLevelPerCmHandle.put('ch-1', TrustLevel.NONE)
when: 'the searches api is invoked'
- def response = mvc.perform(post(searchesEndpoint)
- .contentType(MediaType.APPLICATION_JSON)
- .content(jsonString)).andReturn().response
+ def response = mvc.perform(post(searchesEndpoint).contentType(MediaType.APPLICATION_JSON).content(jsonString)).andReturn().response
then: 'response status returns OK'
- response.status == HttpStatus.OK.value()
+ assert response.status == HttpStatus.OK.value()
and: 'the expected response content is returned'
- response.contentAsString == '[{"cmHandle":"ch-1","publicCmHandleProperties":[{"color":"yellow"}],"state":null,"trustLevel":"NONE","moduleSetTag":null,"alternateId":null,"dataProducerIdentifier":null},{"cmHandle":"ch-2","publicCmHandleProperties":[{"color":"green"}],"state":null,"trustLevel":null,"moduleSetTag":"someModuleSetTag","alternateId":"someAlternateId","dataProducerIdentifier":"someDataProducerIdentifier"}]'
+ assert response.contentAsString == '[{"cmHandle":"ch-1","publicCmHandleProperties":[{"color":"yellow"}],"state":null,"trustLevel":"NONE","moduleSetTag":null,"alternateId":null,"dataProducerIdentifier":null},{"cmHandle":"ch-2","publicCmHandleProperties":[{"color":"green"}],"state":null,"trustLevel":null,"moduleSetTag":"someModuleSetTag","alternateId":"someAlternateId","dataProducerIdentifier":"someDataProducerIdentifier"}]'
}
def 'Get complete Cm Handle details by Cm Handle id.'() {
@@ -396,7 +354,7 @@ class NetworkCmProxyControllerSpec extends Specification {
and: 'the response contains the cm handle state'
assertContainsState(response)
and: 'the content does not contain dmi properties'
- !response.contentAsString.contains("some DMI property")
+ assert !response.contentAsString.contains("some DMI property")
}
def 'Get Cm Handle public properties by Cm Handle id.'() {
@@ -405,13 +363,11 @@ class NetworkCmProxyControllerSpec extends Specification {
and: 'some cm handle public properties'
def publicProperties = ['public prop': 'some public property']
and: 'the service method is invoked with the cm handle id returning the cm handle public properties'
- 1 * mockNetworkCmProxyDataService
- .getCmHandlePublicProperties('some-cm-handle') >> publicProperties
+ 1 * mockNetworkCmProxyDataService.getCmHandlePublicProperties('some-cm-handle') >> publicProperties
when: 'the cm handle properties api is invoked'
- def response = mvc.perform(
- get(cmHandlePropertiesEndpoint)).andReturn().response
+ def response = mvc.perform(get(cmHandlePropertiesEndpoint)).andReturn().response
then: 'the correct response is returned'
- response.status == HttpStatus.OK.value()
+ assert response.status == HttpStatus.OK.value()
and: 'the response contains the public properties'
assertContainsPublicProperties(response)
}
@@ -422,15 +378,13 @@ class NetworkCmProxyControllerSpec extends Specification {
and: 'some cm handle composite state'
def compositeState = compositeStateTestObject()
and: 'the service method is invoked with the cm handle id returning the cm handle composite state'
- 1 * mockNetworkCmProxyDataService
- .getCmHandleCompositeState('some-cm-handle') >> compositeState
+ 1 * mockNetworkCmProxyDataService.getCmHandleCompositeState('some-cm-handle') >> compositeState
when: 'the cm handle state api is invoked'
- def response = mvc.perform(
- get(cmHandlePropertiesEndpoint)).andReturn().response
+ def response = mvc.perform(get(cmHandlePropertiesEndpoint)).andReturn().response
then: 'the correct response is returned'
response.status == HttpStatus.OK.value()
and: 'the response contains the cm handle state'
- assertContainsState(response)
+ assert assertContainsState(response)
}
def 'Call execute cm handle searches with unrecognized condition name.'() {
@@ -449,12 +403,9 @@ class NetworkCmProxyControllerSpec extends Specification {
trustLevelPerCmHandle.put('ch-1', TrustLevel.COMPLETE)
trustLevelPerCmHandle.put('ch-2', TrustLevel.NONE)
when: 'the searches api is invoked'
- def response = mvc.perform(
- post(searchesEndpoint)
- .contentType(MediaType.APPLICATION_JSON)
- .content(jsonString)).andReturn().response
+ def response = mvc.perform(post(searchesEndpoint).contentType(MediaType.APPLICATION_JSON).content(jsonString)).andReturn().response
then: 'an empty cm handle identifier is returned'
- response.contentAsString == '[{"cmHandle":"ch-1","publicCmHandleProperties":[{"color":"yellow"}],"state":null,"trustLevel":"COMPLETE","moduleSetTag":null,"alternateId":null,"dataProducerIdentifier":null},{"cmHandle":"ch-2","publicCmHandleProperties":[{"color":"green"}],"state":null,"trustLevel":"NONE","moduleSetTag":null,"alternateId":null,"dataProducerIdentifier":null}]'
+ assert response.contentAsString == '[{"cmHandle":"ch-1","publicCmHandleProperties":[{"color":"yellow"}],"state":null,"trustLevel":"COMPLETE","moduleSetTag":null,"alternateId":null,"dataProducerIdentifier":null},{"cmHandle":"ch-2","publicCmHandleProperties":[{"color":"green"}],"state":null,"trustLevel":"NONE","moduleSetTag":null,"alternateId":null,"dataProducerIdentifier":null}]'
}
def 'Query for cm handles matching query parameters'() {
@@ -463,68 +414,47 @@ class NetworkCmProxyControllerSpec extends Specification {
and: 'the service method is invoked with module names and returns cm handle ids'
1 * mockNetworkCmProxyDataService.executeCmHandleIdSearch(_) >> ['ch-1', 'ch-2']
when: 'the searches api is invoked'
- def response = mvc.perform(
- post(searchesEndpoint)
- .contentType(MediaType.APPLICATION_JSON)
- .content('{}')).andReturn().response
+ def response = mvc.perform(post(searchesEndpoint).contentType(MediaType.APPLICATION_JSON).content('{}')).andReturn().response
then: 'cm handle ids are returned'
- response.contentAsString == '["ch-1","ch-2"]'
+ assert response.contentAsString == '["ch-1","ch-2"]'
}
def 'Query for cm handles with invalid request payload'() {
when: 'the searches api is invoked'
def searchesEndpoint = "$ncmpBasePathV1/ch/id-searches"
def invalidInputData = '{invalidJson}'
- def response = mvc.perform(
- post(searchesEndpoint)
- .contentType(MediaType.APPLICATION_JSON)
- .content(invalidInputData)).andReturn().response
+ def response = mvc.perform(post(searchesEndpoint).contentType(MediaType.APPLICATION_JSON).content(invalidInputData)).andReturn().response
then: 'BAD_REQUEST is returned'
- response.getStatus() == 400
+ assert response.getStatus() == 400
}
def 'Patch resource data in pass-through running datastore.'() {
given: 'patch resource data url'
- def url = "$ncmpBasePathV1/ch/testCmHandle/data/ds/ncmp-datastore:passthrough-running" +
- "?resourceIdentifier=parent/child"
+ def url = "$ncmpBasePathV1/ch/testCmHandle/data/ds/ncmp-datastore:passthrough-running?resourceIdentifier=parent/child"
when: 'patch data resource request is performed'
- def response = mvc.perform(
- patch(url)
- .contentType(MediaType.APPLICATION_JSON)
- .accept(MediaType.APPLICATION_JSON).content(requestBody)
- ).andReturn().response
+ def response = mvc.perform(patch(url).contentType(MediaType.APPLICATION_JSON).accept(MediaType.APPLICATION_JSON).content(requestBody)).andReturn().response
then: 'ncmp service method to update resource is called'
- 1 * mockNetworkCmProxyDataService.writeResourceDataPassThroughRunningForCmHandle('testCmHandle',
- 'parent/child', PATCH, requestBody, 'application/json;charset=UTF-8', NO_AUTH_HEADER)
+ 1 * mockNetworkCmProxyDataService.writeResourceDataPassThroughRunningForCmHandle('testCmHandle', 'parent/child', PATCH, requestBody, 'application/json;charset=UTF-8', NO_AUTH_HEADER)
and: 'the response status is OK'
- response.status == HttpStatus.OK.value()
+ assert response.status == HttpStatus.OK.value()
}
def 'Delete resource data in pass-through running datastore.'() {
given: 'delete resource data url'
- def url = "$ncmpBasePathV1/ch/testCmHandle/data/ds/ncmp-datastore:passthrough-running" +
- "?resourceIdentifier=parent/child"
+ def url = "$ncmpBasePathV1/ch/testCmHandle/data/ds/ncmp-datastore:passthrough-running?resourceIdentifier=parent/child"
when: 'delete data resource request is performed'
- def response = mvc.perform(
- delete(url)
- .contentType(MediaType.APPLICATION_JSON).accept(MediaType.APPLICATION_JSON)).andReturn().response
+ def response = mvc.perform(delete(url).contentType(MediaType.APPLICATION_JSON).accept(MediaType.APPLICATION_JSON)).andReturn().response
then: 'the ncmp service method to delete resource is called (with null as body)'
- 1 * mockNetworkCmProxyDataService.writeResourceDataPassThroughRunningForCmHandle('testCmHandle',
- 'parent/child', DELETE, null, 'application/json;charset=UTF-8', NO_AUTH_HEADER)
+ 1 * mockNetworkCmProxyDataService.writeResourceDataPassThroughRunningForCmHandle('testCmHandle', 'parent/child', DELETE, null, 'application/json;charset=UTF-8', NO_AUTH_HEADER)
and: 'the response is No Content'
- response.status == HttpStatus.NO_CONTENT.value()
+ assert response.status == HttpStatus.NO_CONTENT.value()
}
def 'Get resource data from DMI with valid topic i.e. async request for #scenario'() {
given: 'resource data url'
- def getUrl = "$ncmpBasePathV1/ch/testCmHandle/data/ds/ncmp-datastore:${datastoreInUrl}" +
- "?resourceIdentifier=parent/child&options=(a=1,b=2)&topic=my-topic-name"
+ def getUrl = "$ncmpBasePathV1/ch/testCmHandle/data/ds/ncmp-datastore:${datastoreInUrl}?resourceIdentifier=parent/child&options=(a=1,b=2)&topic=my-topic-name"
when: 'get data resource request is performed'
- def response = mvc.perform(
- get(getUrl)
- .contentType(MediaType.APPLICATION_JSON)
- .accept(MediaType.APPLICATION_JSON_VALUE)
- ).andReturn().response
+ def response = mvc.perform(get(getUrl).contentType(MediaType.APPLICATION_JSON).accept(MediaType.APPLICATION_JSON_VALUE)).andReturn().response
then: 'async request id is generated'
assert response.contentAsString.contains("requestId")
where: 'the following parameters are used'
@@ -535,17 +465,14 @@ class NetworkCmProxyControllerSpec extends Specification {
def 'Getting module definitions for a module'() {
when: 'get module definition request is performed with module name'
- def response = mvc.perform(
- get("$ncmpBasePathV1/ch/some-cmhandle/modules/definitions?module-name=sampleModuleName"))
- .andReturn().response
+ def response = mvc.perform(get("$ncmpBasePathV1/ch/some-cmhandle/modules/definitions?module-name=sampleModuleName")).andReturn().response
then: 'ncmp service method is invoked with correct parameters'
mockNetworkCmProxyDataService.getModuleDefinitionsByCmHandleAndModule('some-cmhandle', 'sampleModuleName', _)
- >> [new ModuleDefinition('sampleModuleName', '2021-10-03',
- 'module sampleModuleName{ sample module content }')]
+ >> [new ModuleDefinition('sampleModuleName', '2021-10-03','module sampleModuleName{ sample module content }')]
and: 'response contains an array with the module name, revision and content'
response.getContentAsString() == '[{"moduleName":"sampleModuleName","revision":"2021-10-03","content":"module sampleModuleName{ sample module content }"}]'
and: 'response returns an OK http code'
- response.status == HttpStatus.OK.value()
+ assert response.status == HttpStatus.OK.value()
}
def 'Getting module definitions filtering on #scenario'() {
@@ -590,17 +517,15 @@ class NetworkCmProxyControllerSpec extends Specification {
def 'Get Resource Data from operational with or without descendants'() {
given: 'resource data url with descendants #enabled'
- def getUrl = "$ncmpBasePathV1/ch/testCmHandle/data/ds/ncmp-datastore:operational" +
- "?resourceIdentifier=parent/child&include-descendants=${booleanValue}"
+ def getUrl = "$ncmpBasePathV1/ch/testCmHandle/data/ds/ncmp-datastore:operational?resourceIdentifier=parent/child&include-descendants=${booleanValue}"
+ and: 'the expected target'
+ def expectedCmResourceAddress = new CmResourceAddress(OPERATIONAL.datastoreName, 'testCmHandle', 'parent/child')
when: 'get data resource request is performed'
- def response = mvc.perform(
- get(getUrl)
- .contentType(MediaType.APPLICATION_JSON)
- ).andReturn().response
+ def response = mvc.perform(get(getUrl).contentType(MediaType.APPLICATION_JSON)).andReturn().response
then: 'the NCMP data service is called with getResourceDataOperational with #descendantsOption'
- 1 * mockNetworkCmProxyDataService.getResourceDataForCmHandle(OPERATIONAL.datastoreName, 'testCmHandle', 'parent/child', descendantsOption)
+ 1 * mockNetworkCmProxyDataService.getResourceDataForCmHandle(expectedCmResourceAddress, descendantsOption)
and: 'response status is Ok'
- response.status == HttpStatus.OK.value()
+ assert response.status == HttpStatus.OK.value()
where: 'the following parameters are used'
booleanValue | descendantsOption
false | OMIT_DESCENDANTS
diff --git a/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/handlers/NcmpDatastoreRequestHandlerSpec.groovy b/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/handlers/NcmpDatastoreRequestHandlerSpec.groovy
index ddeac519c..bdd0e716d 100644
--- a/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/handlers/NcmpDatastoreRequestHandlerSpec.groovy
+++ b/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/handlers/NcmpDatastoreRequestHandlerSpec.groovy
@@ -25,6 +25,7 @@ import org.onap.cps.ncmp.api.impl.exception.InvalidDatastoreException
import org.onap.cps.ncmp.api.impl.exception.InvalidOperationException
import org.onap.cps.ncmp.api.models.DataOperationDefinition
import org.onap.cps.ncmp.api.models.DataOperationRequest
+import org.onap.cps.ncmp.api.models.CmResourceAddress
import org.onap.cps.ncmp.rest.exceptions.OperationNotSupportedException
import org.onap.cps.ncmp.rest.executor.CpsNcmpTaskExecutor
import spock.lang.Specification
@@ -48,12 +49,13 @@ class NcmpDatastoreRequestHandlerSpec extends Specification {
objectUnderTest.notificationFeatureEnabled = notificationFeatureEnabled
and: 'a flag to track the network service call'
def networkServiceMethodCalled = false
+ and: 'a CM resource address'
+ def cmResourceAddress = new CmResourceAddress('ds', 'ch1', 'resource1')
and: 'the (mocked) service will use the flag to indicate if it is called'
- mockNetworkCmProxyDataService.getResourceDataForCmHandle('ds', 'ch1', 'resource1', 'options', _, _, NO_AUTH_HEADER) >> {
- networkServiceMethodCalled = true
- }
+ mockNetworkCmProxyDataService.getResourceDataForCmHandle(cmResourceAddress, 'options', _, _, NO_AUTH_HEADER) >>
+ { networkServiceMethodCalled = true }
when: 'get request is executed with topic = #topic'
- objectUnderTest.executeRequest('ds', 'ch1', 'resource1', 'options', topic, false, NO_AUTH_HEADER)
+ objectUnderTest.executeRequest(cmResourceAddress, 'options', topic, false, NO_AUTH_HEADER)
then: 'the task is executed in an async fashion or not'
expectedCalls * spiedCpsNcmpTaskExecutor.executeTask(*_)
and: 'the service request is invoked'
diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/NetworkCmProxyDataService.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/NetworkCmProxyDataService.java
index 4230140d2..20545d711 100644
--- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/NetworkCmProxyDataService.java
+++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/NetworkCmProxyDataService.java
@@ -29,6 +29,7 @@ import org.onap.cps.ncmp.api.impl.inventory.CompositeState;
import org.onap.cps.ncmp.api.impl.operations.OperationType;
import org.onap.cps.ncmp.api.models.CmHandleQueryApiParameters;
import org.onap.cps.ncmp.api.models.CmHandleQueryServiceParameters;
+import org.onap.cps.ncmp.api.models.CmResourceAddress;
import org.onap.cps.ncmp.api.models.DataOperationRequest;
import org.onap.cps.ncmp.api.models.DmiPluginRegistration;
import org.onap.cps.ncmp.api.models.DmiPluginRegistrationResponse;
@@ -53,18 +54,14 @@ public interface NetworkCmProxyDataService {
/**
* Get resource data for given data store using dmi.
*
- * @param datastoreName datastore name
- * @param cmHandleId cm handle identifier
- * @param resourceIdentifier resource identifier
+ * @param cmResourceAddress target datastore, cm handle and resource identifier
* @param optionsParamInQuery options query
* @param topicParamInQuery topic name for (triggering) async responses
* @param requestId unique requestId for async request
* @param authorization contents of Authorization header, or null if not present
* @return {@code Object} resource data
*/
- Object getResourceDataForCmHandle(String datastoreName,
- String cmHandleId,
- String resourceIdentifier,
+ Object getResourceDataForCmHandle(CmResourceAddress cmResourceAddress,
String optionsParamInQuery,
String topicParamInQuery,
String requestId,
@@ -73,15 +70,11 @@ public interface NetworkCmProxyDataService {
/**
* Get resource data for operational.
*
- * @param datastoreName datastore name
- * @param cmHandleId cm handle identifier
- * @param resourceIdentifier resource identifier
+ * @param cmResourceAddress target datastore, cm handle and resource identifier
* @Link FetchDescendantsOption fetch descendants option
* @return {@code Object} resource data
*/
- Object getResourceDataForCmHandle(String datastoreName,
- String cmHandleId,
- String resourceIdentifier,
+ Object getResourceDataForCmHandle(CmResourceAddress cmResourceAddress,
FetchDescendantsOption fetchDescendantsOption);
/**
@@ -110,11 +103,11 @@ public interface NetworkCmProxyDataService {
* @return {@code Object} return data
*/
Object writeResourceDataPassThroughRunningForCmHandle(String cmHandleId,
- String resourceIdentifier,
- OperationType operationType,
- String requestBody,
- String contentType,
- String authorization);
+ String resourceIdentifier,
+ OperationType operationType,
+ String requestBody,
+ String contentType,
+ String authorization);
/**
* Retrieve module references for the given cm handle.
diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImpl.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImpl.java
index 6ab6eab65..c15df9c86 100755
--- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImpl.java
+++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImpl.java
@@ -72,6 +72,7 @@ import org.onap.cps.ncmp.api.impl.yangmodels.YangModelCmHandle;
import org.onap.cps.ncmp.api.models.CmHandleQueryApiParameters;
import org.onap.cps.ncmp.api.models.CmHandleQueryServiceParameters;
import org.onap.cps.ncmp.api.models.CmHandleRegistrationResponse;
+import org.onap.cps.ncmp.api.models.CmResourceAddress;
import org.onap.cps.ncmp.api.models.DataOperationRequest;
import org.onap.cps.ncmp.api.models.DmiPluginRegistration;
import org.onap.cps.ncmp.api.models.DmiPluginRegistrationResponse;
@@ -127,15 +128,12 @@ public class NetworkCmProxyDataServiceImpl implements NetworkCmProxyDataService
}
@Override
- public Object getResourceDataForCmHandle(final String datastoreName,
- final String cmHandleId,
- final String resourceIdentifier,
+ public Object getResourceDataForCmHandle(final CmResourceAddress cmResourceAddress,
final String optionsParamInQuery,
final String topicParamInQuery,
final String requestId,
final String authorization) {
- final ResponseEntity<?> responseEntity = dmiDataOperations.getResourceDataFromDmi(datastoreName, cmHandleId,
- resourceIdentifier,
+ final ResponseEntity<?> responseEntity = dmiDataOperations.getResourceDataFromDmi(cmResourceAddress,
optionsParamInQuery,
topicParamInQuery,
requestId,
@@ -144,12 +142,12 @@ public class NetworkCmProxyDataServiceImpl implements NetworkCmProxyDataService
}
@Override
- public Object getResourceDataForCmHandle(final String datastoreName,
- final String cmHandleId,
- final String resourceIdentifier,
+ public Object getResourceDataForCmHandle(final CmResourceAddress cmResourceAddress,
final FetchDescendantsOption fetchDescendantsOption) {
- return cpsDataService.getDataNodes(datastoreName, cmHandleId, resourceIdentifier,
- fetchDescendantsOption).iterator().next();
+ return cpsDataService.getDataNodes(cmResourceAddress.datastoreName(),
+ cmResourceAddress.cmHandleId(),
+ cmResourceAddress.resourceIdentifier(),
+ fetchDescendantsOption).iterator().next();
}
@Override
diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/events/cmsubscription/service/CmNotificationSubscriptionPersistenceService.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/events/cmsubscription/service/CmNotificationSubscriptionPersistenceService.java
index 38f3db98d..6b02adb65 100644
--- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/events/cmsubscription/service/CmNotificationSubscriptionPersistenceService.java
+++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/events/cmsubscription/service/CmNotificationSubscriptionPersistenceService.java
@@ -57,4 +57,15 @@ public interface CmNotificationSubscriptionPersistenceService {
*/
Collection<String> getOngoingCmNotificationSubscriptionIds(final DatastoreType datastoreType,
final String cmHandleId, final String xpath);
+
+ /**
+ * Add or update cm notification subscription.
+ *
+ * @param datastoreType valid datastore type
+ * @param cmHandle cmhandle id
+ * @param xpath valid xpath
+ * @param newSubscriptionId subscription Id to be added
+ */
+ void addOrUpdateCmNotificationSubscription(final DatastoreType datastoreType, final String cmHandle,
+ final String xpath, final String newSubscriptionId);
}
diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/events/cmsubscription/service/CmNotificationSubscriptionPersistenceServiceImpl.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/events/cmsubscription/service/CmNotificationSubscriptionPersistenceServiceImpl.java
index 6e4997a4d..2efd321b8 100644
--- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/events/cmsubscription/service/CmNotificationSubscriptionPersistenceServiceImpl.java
+++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/events/cmsubscription/service/CmNotificationSubscriptionPersistenceServiceImpl.java
@@ -20,15 +20,25 @@
package org.onap.cps.ncmp.api.impl.events.cmsubscription.service;
+import static org.onap.cps.spi.FetchDescendantsOption.OMIT_DESCENDANTS;
+
+import java.io.Serializable;
+import java.time.OffsetDateTime;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
+import org.onap.cps.api.CpsDataService;
import org.onap.cps.api.CpsQueryService;
+import org.onap.cps.cpspath.parser.CpsPathUtil;
import org.onap.cps.ncmp.api.impl.operations.DatastoreType;
-import org.onap.cps.spi.FetchDescendantsOption;
import org.onap.cps.spi.model.DataNode;
+import org.onap.cps.utils.ContentType;
+import org.onap.cps.utils.JsonObjectMapper;
import org.springframework.stereotype.Service;
@Slf4j
@@ -37,14 +47,16 @@ import org.springframework.stereotype.Service;
public class CmNotificationSubscriptionPersistenceServiceImpl implements CmNotificationSubscriptionPersistenceService {
private static final String SUBSCRIPTION_ANCHOR_NAME = "cm-data-subscriptions";
- private static final String IS_ONGOING_CM_SUBSCRIPTION_CPS_PATH_QUERY = """
+ private static final String CM_SUBSCRIPTION_CPS_PATH_QUERY = """
/datastores/datastore[@name='%s']/cm-handles/cm-handle[@id='%s']/filters/filter[@xpath='%s']
""".trim();
private static final String SUBSCRIPTION_IDS_CPS_PATH_QUERY = """
//filter/subscriptionIds[text()='%s']
""".trim();
+ private final JsonObjectMapper jsonObjectMapper;
private final CpsQueryService cpsQueryService;
+ private final CpsDataService cpsDataService;
@Override
public boolean isOngoingCmNotificationSubscription(final DatastoreType datastoreType, final String cmHandleId,
@@ -56,7 +68,7 @@ public class CmNotificationSubscriptionPersistenceServiceImpl implements CmNotif
public boolean isUniqueSubscriptionId(final String subscriptionId) {
return cpsQueryService.queryDataNodes(NCMP_DATASPACE_NAME, SUBSCRIPTION_ANCHOR_NAME,
SUBSCRIPTION_IDS_CPS_PATH_QUERY.formatted(subscriptionId),
- FetchDescendantsOption.OMIT_DESCENDANTS).isEmpty();
+ OMIT_DESCENDANTS).isEmpty();
}
@Override
@@ -64,17 +76,59 @@ public class CmNotificationSubscriptionPersistenceServiceImpl implements CmNotif
final String cmHandleId, final String xpath) {
final String isOngoingCmSubscriptionCpsPathQuery =
- IS_ONGOING_CM_SUBSCRIPTION_CPS_PATH_QUERY.formatted(datastoreType.getDatastoreName(), cmHandleId,
+ CM_SUBSCRIPTION_CPS_PATH_QUERY.formatted(datastoreType.getDatastoreName(), cmHandleId,
escapeQuotesByDoublingThem(xpath));
final Collection<DataNode> existingNodes =
cpsQueryService.queryDataNodes(NCMP_DATASPACE_NAME, CM_SUBSCRIPTIONS_ANCHOR_NAME,
- isOngoingCmSubscriptionCpsPathQuery, FetchDescendantsOption.OMIT_DESCENDANTS);
+ isOngoingCmSubscriptionCpsPathQuery, OMIT_DESCENDANTS);
if (existingNodes.isEmpty()) {
return Collections.emptyList();
}
return (List<String>) existingNodes.iterator().next().getLeaves().get("subscriptionIds");
}
+ @Override
+ public void addOrUpdateCmNotificationSubscription(final DatastoreType datastoreType, final String cmHandleId,
+ final String xpath, final String newSubscriptionId) {
+ if (isOngoingCmNotificationSubscription(datastoreType, cmHandleId, xpath)) {
+ final DataNode existingFilterNode =
+ cpsQueryService.queryDataNodes(NCMP_DATASPACE_NAME, SUBSCRIPTION_ANCHOR_NAME,
+ CM_SUBSCRIPTION_CPS_PATH_QUERY.formatted(datastoreType.getDatastoreName(), cmHandleId,
+ escapeQuotesByDoublingThem(xpath)),
+ OMIT_DESCENDANTS).iterator().next();
+ final Collection<String> existingSubscriptionIds = getOngoingCmNotificationSubscriptionIds(datastoreType,
+ cmHandleId, xpath);
+ if (!existingSubscriptionIds.contains(newSubscriptionId)) {
+ updateListOfSubscribers(existingSubscriptionIds, newSubscriptionId, existingFilterNode);
+ }
+ } else {
+ addNewSubscriptionViaDatastore(datastoreType, cmHandleId, xpath, newSubscriptionId);
+ }
+ }
+
+ private void addNewSubscriptionViaDatastore(final DatastoreType datastoreType, final String cmHandleId,
+ final String xpath, final String newSubscriptionId) {
+ final String parentXpath = "/datastores/datastore[@name='%s']/cm-handles"
+ .formatted(datastoreType.getDatastoreName());
+ final String updatedJson = String.format("{\"cm-handle\":[{\"id\":\"%s\",\"filters\":{\"filter\":"
+ + "[{\"xpath\":\"%s\",\"subscriptionIds\":[\"%s\"]}]}}]}", cmHandleId, xpath, newSubscriptionId);
+ cpsDataService.saveData(NCMP_DATASPACE_NAME, SUBSCRIPTION_ANCHOR_NAME, parentXpath, updatedJson,
+ OffsetDateTime.now(), ContentType.JSON);
+ }
+
+ private void updateListOfSubscribers(final Collection<String> existingSubscriptionIds,
+ final String newSubscriptionId, final DataNode existingFilterNode) {
+ final String parentXpath = CpsPathUtil.getNormalizedParentXpath(existingFilterNode.getXpath());
+ final List<String> updatedSubscribers = new ArrayList<>(existingSubscriptionIds);
+ updatedSubscribers.add(newSubscriptionId);
+ final Map<String, Serializable> updatedLeaves = new HashMap<>();
+ updatedLeaves.put("xpath", existingFilterNode.getLeaves().get("xpath"));
+ updatedLeaves.put("subscriptionIds", (Serializable) updatedSubscribers);
+ final String updatedJson = "{\"filter\":[" + jsonObjectMapper.asJsonString(updatedLeaves) + "]}";
+ cpsDataService.updateNodeLeaves(NCMP_DATASPACE_NAME, SUBSCRIPTION_ANCHOR_NAME, parentXpath, updatedJson,
+ OffsetDateTime.now());
+ }
+
private static String escapeQuotesByDoublingThem(final String inputXpath) {
return inputXpath.replace("'", "''");
}
diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/operations/DmiDataOperations.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/operations/DmiDataOperations.java
index 2a4bceca2..a9ec1241b 100644
--- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/operations/DmiDataOperations.java
+++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/operations/DmiDataOperations.java
@@ -42,6 +42,7 @@ import org.onap.cps.ncmp.api.impl.inventory.InventoryPersistence;
import org.onap.cps.ncmp.api.impl.utils.DmiServiceUrlBuilder;
import org.onap.cps.ncmp.api.impl.utils.data.operation.ResourceDataOperationRequestUtils;
import org.onap.cps.ncmp.api.impl.yangmodels.YangModelCmHandle;
+import org.onap.cps.ncmp.api.models.CmResourceAddress;
import org.onap.cps.ncmp.api.models.DataOperationRequest;
import org.onap.cps.spi.exceptions.CpsException;
import org.onap.cps.utils.JsonObjectMapper;
@@ -70,9 +71,7 @@ public class DmiDataOperations extends DmiOperations {
* This method fetches the resource data from operational data store for given cm handle
* identifier on given resource using dmi client.
*
- * @param dataStoreName name of data store
- * @param cmHandleId network resource identifier
- * @param resourceId resource identifier
+ * @param cmResourceAddress target datastore, cm handle and resource identifier
* @param optionsParamInQuery options query
* @param topicParamInQuery topic name for (triggering) async responses
* @param requestId requestId for async responses
@@ -82,19 +81,17 @@ public class DmiDataOperations extends DmiOperations {
@Timed(value = "cps.ncmp.dmi.get",
description = "Time taken to fetch the resource data from operational data store for given cm handle "
+ "identifier on given resource using dmi client")
- public ResponseEntity<Object> getResourceDataFromDmi(final String dataStoreName,
- final String cmHandleId,
- final String resourceId,
+ public ResponseEntity<Object> getResourceDataFromDmi(final CmResourceAddress cmResourceAddress,
final String optionsParamInQuery,
final String topicParamInQuery,
final String requestId,
final String authorization) {
- final YangModelCmHandle yangModelCmHandle = getYangModelCmHandle(cmHandleId);
+ final YangModelCmHandle yangModelCmHandle = getYangModelCmHandle(cmResourceAddress.cmHandleId());
final CmHandleState cmHandleState = yangModelCmHandle.getCompositeState().getCmHandleState();
validateIfCmHandleStateReady(yangModelCmHandle, cmHandleState);
- final String jsonRequestBody = getDmiRequestBody(READ, requestId, null, null,
- yangModelCmHandle);
- final String dmiResourceDataUrl = getDmiRequestUrl(dataStoreName, cmHandleId, resourceId, optionsParamInQuery,
+ final String jsonRequestBody = getDmiRequestBody(READ, requestId, null, null, yangModelCmHandle);
+ final String dmiResourceDataUrl = getDmiRequestUrl(cmResourceAddress.datastoreName(),
+ cmResourceAddress.cmHandleId(), cmResourceAddress.resourceIdentifier(), optionsParamInQuery,
topicParamInQuery, yangModelCmHandle.resolveDmiServiceName(RequiredDmiService.DATA));
return dmiRestClient.postOperationWithJsonData(dmiResourceDataUrl, jsonRequestBody, READ, authorization);
}
diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/utils/AlternateIdChecker.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/utils/AlternateIdChecker.java
index f14439f69..60f39fcea 100644
--- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/utils/AlternateIdChecker.java
+++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/utils/AlternateIdChecker.java
@@ -115,23 +115,7 @@ public class AlternateIdChecker {
for (final NcmpServiceCmHandle ncmpServiceCmHandle : newNcmpServiceCmHandles) {
final String cmHandleId = ncmpServiceCmHandle.getCmHandleId();
final String proposedAlternateId = ncmpServiceCmHandle.getAlternateId();
- final boolean isAcceptable;
- if (StringUtils.isEmpty(proposedAlternateId)) {
- isAcceptable = true;
- } else {
- if (acceptedAlternateIds.contains(proposedAlternateId)) {
- isAcceptable = false;
- log.warn("Alternate id update ignored, cannot update cm handle {}, alternate id is already "
- + "assigned to a different cm handle (in this batch)", cmHandleId);
- } else {
- if (Operation.CREATE.equals(operation)) {
- isAcceptable = canApplyAlternateId(cmHandleId, NO_CURRENT_ALTERNATE_ID, proposedAlternateId);
- } else {
- isAcceptable = canApplyAlternateId(cmHandleId, proposedAlternateId);
- }
- }
- }
- if (isAcceptable) {
+ if (isProposedAlternateIdAcceptable(proposedAlternateId, operation, acceptedAlternateIds, cmHandleId)) {
acceptedAlternateIds.add(proposedAlternateId);
} else {
rejectedCmHandleIds.add(cmHandleId);
@@ -140,6 +124,22 @@ public class AlternateIdChecker {
return rejectedCmHandleIds;
}
+ private boolean isProposedAlternateIdAcceptable(final String proposedAlternateId, final Operation operation,
+ final Set<String> acceptedAlternateIds, final String cmHandleId) {
+ if (StringUtils.isEmpty(proposedAlternateId)) {
+ return true;
+ }
+ if (acceptedAlternateIds.contains(proposedAlternateId)) {
+ log.warn("Alternate id update ignored, cannot update cm handle {}, alternate id is already "
+ + "assigned to a different cm handle (in this batch)", cmHandleId);
+ return false;
+ }
+ if (Operation.CREATE.equals(operation)) {
+ return canApplyAlternateId(cmHandleId, NO_CURRENT_ALTERNATE_ID, proposedAlternateId);
+ }
+ return canApplyAlternateId(cmHandleId, proposedAlternateId);
+ }
+
private boolean alternateIdAlreadyInDb(final String alternateId) {
try {
inventoryPersistence.getCmHandleDataNodeByAlternateId(alternateId);
diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/models/CmResourceAddress.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/models/CmResourceAddress.java
new file mode 100644
index 000000000..21d82fcf5
--- /dev/null
+++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/models/CmResourceAddress.java
@@ -0,0 +1,25 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2024 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=========================================================
+ */
+
+package org.onap.cps.ncmp.api.models;
+
+public record CmResourceAddress(String datastoreName, String cmHandleId, String resourceIdentifier) {
+
+}
diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/init/AbstractModelLoader.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/init/AbstractModelLoader.java
index a3ebec3c5..4cc8cdaa6 100644
--- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/init/AbstractModelLoader.java
+++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/init/AbstractModelLoader.java
@@ -70,24 +70,6 @@ abstract class AbstractModelLoader implements ModelLoader {
}
}
- void waitUntilDataspaceIsAvailable(final String dataspaceName) {
- log.info("Model Loader start-up, waiting for database to be ready");
- int attemptCount = 0;
- while (cpsDataspaceService.getDataspace(dataspaceName) == null) {
- if (attemptCount < maximumAttemptCount) {
- try {
- Thread.sleep(attemptCount * retryTimeMs);
- log.info("Retrieving dataspace {} ... {} attempt(s) ", dataspaceName, ++attemptCount);
- } catch (final InterruptedException e) {
- Thread.currentThread().interrupt();
- }
- } else {
- throw new NcmpStartUpException("Retrieval of NCMP dataspace failed",
- dataspaceName + " not available (yet)");
- }
- }
- }
-
void createSchemaSet(final String dataspaceName, final String schemaSetName, final String... resourceNames) {
try {
final Map<String, String> yangResourcesContentMap = createYangResourcesToContentMap(resourceNames);
@@ -100,6 +82,17 @@ abstract class AbstractModelLoader implements ModelLoader {
}
}
+ void createDataspace(final String dataspaceName) {
+ try {
+ cpsDataspaceService.createDataspace(dataspaceName);
+ } catch (final AlreadyDefinedException alreadyDefinedException) {
+ log.debug("Dataspace already exists");
+ } catch (final Exception exception) {
+ log.error("Creating dataspace failed: {} ", exception.getMessage());
+ throw new NcmpStartUpException("Creating dataspace failed", exception.getMessage());
+ }
+ }
+
void deleteUnusedSchemaSets(final String dataspaceName, final String... schemaSetNames) {
for (final String schemaSetName : schemaSetNames) {
try {
diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/init/CmDataSubscriptionModelLoader.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/init/CmDataSubscriptionModelLoader.java
index 4c31719a2..a0b7bd582 100644
--- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/init/CmDataSubscriptionModelLoader.java
+++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/init/CmDataSubscriptionModelLoader.java
@@ -51,12 +51,12 @@ public class CmDataSubscriptionModelLoader extends AbstractModelLoader {
@Override
public void onboardOrUpgradeModel() {
- waitUntilDataspaceIsAvailable(NCMP_DATASPACE_NAME);
onboardSubscriptionModels();
log.info("Subscription Models onboarded successfully");
}
private void onboardSubscriptionModels() {
+ createDataspace(NCMP_DATASPACE_NAME);
createSchemaSet(NCMP_DATASPACE_NAME, SCHEMASET_NAME, MODEL_FILENAME);
createAnchor(NCMP_DATASPACE_NAME, SCHEMASET_NAME, ANCHOR_NAME);
createTopLevelDataNode(NCMP_DATASPACE_NAME, ANCHOR_NAME, REGISTRY_DATANODE_NAME);
diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/init/InventoryModelLoader.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/init/InventoryModelLoader.java
index d0d63ab8e..7c25953f0 100644
--- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/init/InventoryModelLoader.java
+++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/init/InventoryModelLoader.java
@@ -22,6 +22,7 @@ package org.onap.cps.ncmp.init;
import static org.onap.cps.ncmp.api.impl.ncmppersistence.NcmpPersistence.NCMP_DATASPACE_NAME;
import static org.onap.cps.ncmp.api.impl.ncmppersistence.NcmpPersistence.NCMP_DMI_REGISTRY_ANCHOR;
+import static org.onap.cps.ncmp.api.impl.ncmppersistence.NcmpPersistence.NFP_OPERATIONAL_DATASTORE_DATASPACE_NAME;
import lombok.extern.slf4j.Slf4j;
import org.onap.cps.api.CpsAnchorService;
@@ -33,9 +34,9 @@ import org.springframework.stereotype.Service;
@Slf4j
@Service
public class InventoryModelLoader extends AbstractModelLoader {
-
private static final String NEW_MODEL_FILE_NAME = "dmi-registry@2024-02-23.yang";
private static final String NEW_SCHEMA_SET_NAME = "dmi-registry-2024-02-23";
+ private static final String REGISTRY_DATANODE_NAME = "dmi-registry";
public InventoryModelLoader(final CpsDataspaceService cpsDataspaceService,
final CpsModuleService cpsModuleService,
@@ -46,20 +47,24 @@ public class InventoryModelLoader extends AbstractModelLoader {
@Override
public void onboardOrUpgradeModel() {
- waitUntilDataspaceIsAvailable(NCMP_DATASPACE_NAME);
updateInventoryModel();
log.info("Inventory Model updated successfully");
}
private void updateInventoryModel() {
+ createDataspace(NCMP_DATASPACE_NAME);
+ createDataspace(NFP_OPERATIONAL_DATASTORE_DATASPACE_NAME);
createSchemaSet(NCMP_DATASPACE_NAME, NEW_SCHEMA_SET_NAME, NEW_MODEL_FILE_NAME);
+ createAnchor(NCMP_DATASPACE_NAME, NEW_SCHEMA_SET_NAME, NCMP_DMI_REGISTRY_ANCHOR);
updateAnchorSchemaSet(NCMP_DATASPACE_NAME, NCMP_DMI_REGISTRY_ANCHOR, NEW_SCHEMA_SET_NAME);
+ createTopLevelDataNode(NCMP_DATASPACE_NAME, NCMP_DMI_REGISTRY_ANCHOR, REGISTRY_DATANODE_NAME);
deleteOldButNotThePreviousSchemaSets();
}
private void deleteOldButNotThePreviousSchemaSets() {
//No schema sets passed in yet, but wil be required for future updates
deleteUnusedSchemaSets(NCMP_DATASPACE_NAME);
+ deleteUnusedSchemaSets(NFP_OPERATIONAL_DATASTORE_DATASPACE_NAME);
}
}
diff --git a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImplSpec.groovy b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImplSpec.groovy
index 74016e4c0..d47be6cd5 100644
--- a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImplSpec.groovy
+++ b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImplSpec.groovy
@@ -24,6 +24,7 @@
package org.onap.cps.ncmp.api.impl
import org.onap.cps.ncmp.api.models.DmiPluginRegistrationResponse
+import org.onap.cps.ncmp.api.models.CmResourceAddress
import static org.onap.cps.ncmp.api.impl.ncmppersistence.NcmpPersistence.NFP_OPERATIONAL_DATASTORE_DATASPACE_NAME
import static org.onap.cps.ncmp.api.impl.ncmppersistence.NcmpPersistence.NCMP_DATASPACE_NAME
@@ -121,35 +122,27 @@ class NetworkCmProxyDataServiceImplSpec extends Specification {
>> { new ResponseEntity<>(HttpStatus.CREATED) }
}
- def 'Get resource data for pass-through operational from DMI.'() {
+ def 'Get resource data for from DMI.'() {
given: 'cpsDataService returns valid data node'
mockDataNode()
+ and: 'some cm resource address'
+ def cmResourceAddress = new CmResourceAddress('some datastore','some CM Handle', 'some resource Id')
and: 'get resource data from DMI is called'
- mockDmiDataOperations.getResourceDataFromDmi(PASSTHROUGH_OPERATIONAL.datastoreName,'testCmHandle', 'testResourceId', OPTIONS_PARAM, NO_TOPIC, NO_REQUEST_ID, NO_AUTH_HEADER) >>
+ mockDmiDataOperations.getResourceDataFromDmi(cmResourceAddress, OPTIONS_PARAM, NO_TOPIC, NO_REQUEST_ID, NO_AUTH_HEADER) >>
new ResponseEntity<>('dmi-response', HttpStatus.OK)
- when: 'get resource data operational for cm-handle is called'
- def response = objectUnderTest.getResourceDataForCmHandle(PASSTHROUGH_OPERATIONAL.datastoreName, 'testCmHandle', 'testResourceId', OPTIONS_PARAM, NO_TOPIC, NO_REQUEST_ID, NO_AUTH_HEADER)
+ when: 'get resource data operational for the given cm resource address is called'
+ def response = objectUnderTest.getResourceDataForCmHandle(cmResourceAddress, OPTIONS_PARAM, NO_TOPIC, NO_REQUEST_ID, NO_AUTH_HEADER)
then: 'DMI returns a json response'
assert response == 'dmi-response'
}
- def 'Get resource data for pass-through running from DMI.'() {
- given: 'cpsDataService returns valid data node'
- mockDataNode()
- and: 'DMI returns valid response and data'
- mockDmiDataOperations.getResourceDataFromDmi(PASSTHROUGH_RUNNING.datastoreName, 'testCmHandle', 'testResourceId', OPTIONS_PARAM, NO_TOPIC, NO_REQUEST_ID, NO_AUTH_HEADER) >>
- new ResponseEntity<>('{dmi-response}', HttpStatus.OK)
- when: 'get resource data is called'
- def response = objectUnderTest.getResourceDataForCmHandle(PASSTHROUGH_RUNNING.datastoreName, 'testCmHandle', 'testResourceId', OPTIONS_PARAM, NO_TOPIC, NO_REQUEST_ID, NO_AUTH_HEADER)
- then: 'get resource data returns expected response'
- assert response == '{dmi-response}'
- }
-
def 'Get resource data for operational (cached) data.'() {
given: 'CPS Data service returns some object(s)'
mockCpsDataService.getDataNodes(OPERATIONAL.datastoreName, 'testCmHandle', 'testResourceId', FetchDescendantsOption.OMIT_DESCENDANTS) >> ['First Object', 'other Object']
+ and: 'a cm resource address for the same datastore, cm handle and resource id'
+ def cmResourceAddress = new CmResourceAddress(OPERATIONAL.datastoreName, 'testCmHandle', 'testResourceId')
when: 'get resource data is called'
- def response = objectUnderTest.getResourceDataForCmHandle(OPERATIONAL.datastoreName, 'testCmHandle', 'testResourceId', FetchDescendantsOption.OMIT_DESCENDANTS)
+ def response = objectUnderTest.getResourceDataForCmHandle(cmResourceAddress, FetchDescendantsOption.OMIT_DESCENDANTS)
then: 'get resource data returns teh first object from the data service'
assert response == 'First Object'
}
diff --git a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/events/cmsubscription/service/CmNotificationSubscriptionPersistenceServiceImplSpec.groovy b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/events/cmsubscription/service/CmNotificationSubscriptionPersistenceServiceImplSpec.groovy
index eb0e1100e..19ebc3d71 100644
--- a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/events/cmsubscription/service/CmNotificationSubscriptionPersistenceServiceImplSpec.groovy
+++ b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/events/cmsubscription/service/CmNotificationSubscriptionPersistenceServiceImplSpec.groovy
@@ -20,18 +20,22 @@
package org.onap.cps.ncmp.api.impl.events.cmsubscription.service
-
+import org.onap.cps.api.CpsDataService
import org.onap.cps.api.CpsQueryService
import org.onap.cps.ncmp.api.impl.operations.DatastoreType
import org.onap.cps.spi.FetchDescendantsOption
import org.onap.cps.spi.model.DataNode
+import org.onap.cps.utils.JsonObjectMapper
+import com.fasterxml.jackson.databind.ObjectMapper
import spock.lang.Specification
class CmNotificationSubscriptionPersistenceServiceImplSpec extends Specification {
+ def jsonObjectMapper = new JsonObjectMapper(new ObjectMapper())
def mockCpsQueryService = Mock(CpsQueryService)
+ def mockCpsDataService = Mock(CpsDataService)
- def objectUnderTest = new CmNotificationSubscriptionPersistenceServiceImpl(mockCpsQueryService)
+ def objectUnderTest = new CmNotificationSubscriptionPersistenceServiceImpl(jsonObjectMapper, mockCpsQueryService, mockCpsDataService)
def 'Check ongoing cm subscription #scenario'() {
given: 'a valid cm subscription query'
@@ -64,4 +68,43 @@ class CmNotificationSubscriptionPersistenceServiceImplSpec extends Specification
'datanodes present' | [new DataNode()] || false
'no datanodes present' | [] || true
}
+
+ def 'Add new subscriber to an ongoing cm notification subscription'() {
+ given: 'a valid cm subscription path query'
+ def cpsPathQuery = objectUnderTest.CM_SUBSCRIPTION_CPS_PATH_QUERY.formatted('ncmp-datastore:passthrough-running', 'ch-1', '/x/y');
+ and: 'a dataNode exists for the given cps path query'
+ mockCpsQueryService.queryDataNodes('NCMP-Admin', 'cm-data-subscriptions',
+ cpsPathQuery, FetchDescendantsOption.OMIT_DESCENDANTS) >> [new DataNode(xpath: cpsPathQuery, leaves: ['xpath': '/x/y','subscriptionIds': ['sub-1']])]
+ when: 'the method to add/update cm notification subscription is called'
+ objectUnderTest.addOrUpdateCmNotificationSubscription(DatastoreType.PASSTHROUGH_RUNNING, 'ch-1','/x/y', 'newSubId')
+ then: 'data service method to update list of subscribers is called once'
+ 1 * mockCpsDataService.updateNodeLeaves(
+ 'NCMP-Admin',
+ 'cm-data-subscriptions',
+ '/datastores/datastore[@name=\'ncmp-datastore:passthrough-running\']/cm-handles/cm-handle[@id=\'ch-1\']/filters',
+ '{"filter":[{"xpath":"/x/y","subscriptionIds":["sub-1","newSubId"]}]}', _)
+ }
+
+ def 'Add new cm notification subscription for #datastoreType'() {
+ given: 'a valid cm subscription path query'
+ def cpsPathQuery = objectUnderTest.CM_SUBSCRIPTION_CPS_PATH_QUERY.formatted(datastoreName, 'ch-1', '/x/y')
+ and: 'a parent node xpath for given path above'
+ def parentNodeXpath = '/datastores/datastore[@name=\'%s\']/cm-handles'
+ and: 'a datanode does not exist for the given cps path query'
+ mockCpsQueryService.queryDataNodes('NCMP-Admin', 'cm-data-subscriptions',
+ cpsPathQuery.formatted(datastoreName),
+ FetchDescendantsOption.OMIT_DESCENDANTS) >> []
+ when: 'the method to add/update cm notification subscription is called'
+ objectUnderTest.addOrUpdateCmNotificationSubscription(datastoreType, 'ch-1','/x/y', 'newSubId')
+ then: 'data service method to update list of subscribers is called once with the correct parameters'
+ 1 * mockCpsDataService.saveData(
+ 'NCMP-Admin',
+ 'cm-data-subscriptions',
+ parentNodeXpath.formatted(datastoreName),
+ '{"cm-handle":[{"id":"ch-1","filters":{"filter":[{"xpath":"/x/y","subscriptionIds":["newSubId"]}]}}]}', _,_)
+ where:
+ scenario | datastoreType || datastoreName
+ 'passthrough_running' | DatastoreType.PASSTHROUGH_RUNNING || "ncmp-datastore:passthrough-running"
+ 'passthrough_operational' | DatastoreType.PASSTHROUGH_OPERATIONAL || "ncmp-datastore:passthrough-operational"
+ }
} \ No newline at end of file
diff --git a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/operations/DmiDataOperationsSpec.groovy b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/operations/DmiDataOperationsSpec.groovy
index e154588a1..eb6c7a0f4 100644
--- a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/operations/DmiDataOperationsSpec.groovy
+++ b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/operations/DmiDataOperationsSpec.groovy
@@ -28,6 +28,7 @@ import org.onap.cps.ncmp.api.impl.exception.HttpClientRequestException
import org.onap.cps.ncmp.api.impl.utils.DmiServiceUrlBuilder
import org.onap.cps.ncmp.api.impl.utils.context.CpsApplicationContext
import org.onap.cps.ncmp.api.models.DataOperationRequest
+import org.onap.cps.ncmp.api.models.CmResourceAddress
import org.onap.cps.ncmp.events.async1_0_0.DataOperationEvent
import org.onap.cps.ncmp.utils.TestUtils
import org.onap.cps.utils.JsonObjectMapper
@@ -81,8 +82,8 @@ class DmiDataOperationsSpec extends DmiOperationsBaseSpec {
mockDmiRestClient.postOperationWithJsonData(expectedUrl, expectedJson, READ, NO_AUTH_HEADER) >> responseFromDmi
dmiServiceUrlBuilder.getDmiDatastoreUrl(_, _) >> expectedUrl
when: 'get resource data is invoked'
- def result = objectUnderTest.getResourceDataFromDmi(dataStore.datastoreName, cmHandleId, resourceIdentifier,
- options, NO_TOPIC, NO_REQUEST_ID, NO_AUTH_HEADER)
+ def cmResourceAddress = new CmResourceAddress(dataStore.datastoreName, cmHandleId, resourceIdentifier)
+ def result = objectUnderTest.getResourceDataFromDmi(cmResourceAddress, options, NO_TOPIC, NO_REQUEST_ID, NO_AUTH_HEADER)
then: 'the result is the response from the DMI service'
assert result == responseFromDmi
where: 'the following parameters are used'
diff --git a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/utils/AlternateIdCheckerSpec.groovy b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/utils/AlternateIdCheckerSpec.groovy
index 0eabaa1d2..1e843676b 100644
--- a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/utils/AlternateIdCheckerSpec.groovy
+++ b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/utils/AlternateIdCheckerSpec.groovy
@@ -80,7 +80,8 @@ class AlternateIdCheckerSpec extends Specification {
assert result == expectedRejectedCmHandleIds
where: 'the following alternate ids are used'
scenario | alt1 | alt2 | altAlreadyInDb || expectedRejectedCmHandleIds
- 'no alternate ids' | '' | '' | ['dont matter'] || []
+ 'blank alternate ids' | '' | '' | ['dont matter'] || []
+ 'null alternate ids' | null | null | ['dont matter'] || []
'new alternate ids' | 'fdn1' | 'fdn2' | ['other fdn'] || []
'one already used alternate id' | 'fdn1' | 'fdn2' | ['fdn1'] || ['ch-1']
'duplicate alternate id in batch' | 'fdn1' | 'fdn1' | ['dont matter'] || ['ch-2']
diff --git a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/init/AbstractModelLoaderSpec.groovy b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/init/AbstractModelLoaderSpec.groovy
index f122b5763..b0be29d93 100644
--- a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/init/AbstractModelLoaderSpec.groovy
+++ b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/init/AbstractModelLoaderSpec.groovy
@@ -81,14 +81,6 @@ class AbstractModelLoaderSpec extends Specification {
assert logs.contains('test message')
}
- def 'Wait for non-existing dataspace'() {
- when: 'wait for the dataspace'
- objectUnderTest.waitUntilDataspaceIsAvailable('some dataspace')
- then: 'a startup exception is thrown'
- def thrown = thrown(NcmpStartUpException)
- assert thrown.message.contains('Retrieval of NCMP dataspace failed')
- }
-
def 'Create schema set.'() {
when: 'creating a schema set'
objectUnderTest.createSchemaSet('some dataspace','new name','cm-data-subscriptions@2024-02-12.yang')
diff --git a/cps-parent/pom.xml b/cps-parent/pom.xml
index 699bf3c9a..b6e12c008 100644
--- a/cps-parent/pom.xml
+++ b/cps-parent/pom.xml
@@ -159,7 +159,7 @@
<dependency>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs</artifactId>
- <version>4.2.0</version>
+ <version>4.2.3</version>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
diff --git a/cps-ri/src/main/resources/changelog/changelog-master.yaml b/cps-ri/src/main/resources/changelog/changelog-master.yaml
index e10ce633d..5909ef149 100644
--- a/cps-ri/src/main/resources/changelog/changelog-master.yaml
+++ b/cps-ri/src/main/resources/changelog/changelog-master.yaml
@@ -19,44 +19,4 @@ databaseChangeLog:
- include:
file: changelog/db/changes/01-createCPSTables.yaml
- include:
- file: changelog/db/changes/02-loadData-dataspace.yaml
- - include:
- file: changelog/db/changes/03-loadData-schema-set.yaml
- - include:
- file: changelog/db/changes/04-loadData-anchor.yaml
- - include:
- file: changelog/db/changes/05-loadData-fragment.yaml
- - include:
- file: changelog/db/changes/06-delete-not-required-fragment-index.yaml
- - include:
- file: changelog/db/changes/07-update-yang-resource-checksums.yaml
- - include:
- file: changelog/db/changes/08-update-yang-resources.yaml
- - include:
- file: changelog/db/changes/09-loadData-dmi-registry-schema-set.yaml
- - include:
- 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
- - include:
- file: changelog/db/changes/14-loadData-dmi-registry-2022-05-10-schema-set.yaml
- - include:
- file: changelog/db/changes/15-rename-column-yang-resource-table.yaml
- - include:
- file: changelog/db/changes/16-insert-cm-handle-state.yaml
- - include:
- file: changelog/db/changes/17-add-index-to-schema-set-yang-resources.yaml
- - include:
- file: changelog/db/changes/18-cascade-delete-fragment-children.yaml
- - include:
- file: changelog/db/changes/19-delete-not-required-dataspace-id-from-fragment.yaml
- - include:
- file: changelog/db/changes/20-change-foreign-key-id-types-to-integer.yaml
- - include:
- file: changelog/db/changes/21-escape-quotes-in-xpath.yaml
- - include:
file: changelog/db/changes/22-fragment-id-sequence.yaml
diff --git a/cps-ri/src/main/resources/changelog/db/changes/01-createCPSTables.yaml b/cps-ri/src/main/resources/changelog/db/changes/01-createCPSTables.yaml
index 07ffb9319..c9fbf8faa 100644
--- a/cps-ri/src/main/resources/changelog/db/changes/01-createCPSTables.yaml
+++ b/cps-ri/src/main/resources/changelog/db/changes/01-createCPSTables.yaml
@@ -14,6 +14,7 @@
# limitations under the License.
# ============LICENSE_END=========================================================
+# For legacy reasons, previous files for changeset Ids: 6, 11, 15, 17-21 have been condensed into this file.
databaseChangeLog:
- changeSet:
id: 1-1
@@ -573,4 +574,242 @@ databaseChangeLog:
referencedColumnNames: id
referencedTableName: schema_node
validate: true
+ - changeSet:
+ logicalFilePath: changelog/db/changes/06-delete-not-required-fragment-index.yaml
+ id: 6
+ author: cps
+ comment: Drop unique index for dataspace and xpath on fragment table
+ changes:
+ - dropIndex:
+ indexName: UQ_FRAGMENT_XPATH
+ tableName: fragment
+ rollback:
+ - createIndex:
+ columns:
+ - column:
+ name: xpath
+ - column:
+ name: dataspace_id
+ indexName: UQ_FRAGMENT_XPATH
+ tableName: fragment
+ unique: true
+ - changeSet:
+ logicalFilePath: changelog/db/changes/11-add-column-to-yang-resources-table.yaml
+ id: 11
+ label: add-module-name-and-revision-column
+ author: cps
+ changes:
+ - addColumn:
+ tableName: yang_resource
+ columns:
+ - column:
+ name: module_name
+ type: TEXT
+ - column:
+ name: revision
+ type: TEXT
+ - changeSet:
+ logicalFilePath: changelog/db/changes/11-add-column-to-yang-resources-table.yaml
+ id: 11.1
+ label: update-previous-data-module-name-and-revision
+ author: cps
+ changes:
+ - 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:
+ sql: update yang_resource set module_name = null, revision = null where module_name = 'dummy_module_name' and revision = '2021-08-04'
+ - changeSet:
+ logicalFilePath: changelog/db/changes/15-rename-column-yang-resource-table.yaml
+ author: cps
+ label: yang-resource-rename-column
+ id: 15
+ changes:
+ - renameColumn:
+ tableName: yang_resource
+ columnDataType: TEXT
+ oldColumnName: name
+ newColumnName: file_name
+ rollback:
+ - sql:
+ sql: alter table yang_resource rename column file_name to name
+ - changeSet:
+ logicalFilePath: changelog/db/changes/17-add-index-to-schema-set-yang-resources.yaml
+ author: cps
+ id: 17
+ changes:
+ - createIndex:
+ columns:
+ - column:
+ name: schema_set_id
+ indexName: FKI_SCHEMA_SET_YANG_RESOURCES_SCHEMA_SET_ID_FK
+ tableName: schema_set_yang_resources
+ rollback:
+ - dropIndex:
+ indexName: FKI_SCHEMA_SET_YANG_RESOURCES_SCHEMA_SET_ID_FK
+ tableName: schema_set_yang_resources
+ - changeSet:
+ logicalFilePath: changelog/db/changes/18-cascade-delete-fragment-children.yaml
+ author: cps
+ id: 18
+ changes:
+ - dropForeignKeyConstraint:
+ baseTableName: fragment
+ constraintName: fragment_parent_id_fkey
+ - addForeignKeyConstraint:
+ baseColumnNames: parent_id
+ baseTableName: fragment
+ constraintName: fragment_parent_id_fkey
+ deferrable: false
+ initiallyDeferred: false
+ onDelete: CASCADE
+ onUpdate: NO ACTION
+ referencedColumnNames: id
+ referencedTableName: fragment
+ validate: true
+ rollback:
+ - dropForeignKeyConstraint:
+ baseTableName: fragment
+ constraintName: fragment_parent_id_fkey
+ - addForeignKeyConstraint:
+ baseColumnNames: parent_id
+ baseTableName: fragment
+ constraintName: fragment_parent_id_fkey
+ deferrable: false
+ initiallyDeferred: false
+ onDelete: NO ACTION
+ onUpdate: NO ACTION
+ referencedColumnNames: id
+ referencedTableName: fragment
+ validate: true
+ - changeSet:
+ logicalFilePath: changelog/db/changes/19-delete-not-required-dataspace-id-from-fragment.yaml
+ id: 19-1
+ author: cps
+ changes:
+ - dropIndex:
+ indexName: FKI_FRAGMENT_DATASPACE_ID_FK
+ tableName: fragment
+ rollback:
+ - createIndex:
+ columns:
+ - column:
+ name: dataspace_id
+ indexName: FKI_FRAGMENT_DATASPACE_ID_FK
+ tableName: fragment
+ - changeSet:
+ logicalFilePath: changelog/db/changes/19-delete-not-required-dataspace-id-from-fragment.yaml
+ id: 19-2
+ author: cps
+ changes:
+ - dropUniqueConstraint:
+ constraintName: fragment_dataspace_id_anchor_id_xpath_key
+ tableName: fragment
+ - addUniqueConstraint:
+ columnNames: anchor_id, xpath
+ constraintName: fragment_anchor_id_xpath_key
+ tableName: fragment
+ rollback:
+ - dropUniqueConstraint:
+ constraintName: fragment_anchor_id_xpath_key
+ tableName: fragment
+ - addUniqueConstraint:
+ columnNames: dataspace_id, anchor_id, xpath
+ constraintName: fragment_dataspace_id_anchor_id_xpath_key
+ tableName: fragment
+ - changeSet:
+ logicalFilePath: changelog/db/changes/19-delete-not-required-dataspace-id-from-fragment.yaml
+ id: 19-3
+ author: cps
+ changes:
+ - dropForeignKeyConstraint:
+ baseTableName: fragment
+ constraintName: fragment_dataspace_id_fkey
+ rollback:
+ - addForeignKeyConstraint:
+ baseColumnNames: dataspace_id
+ baseTableName: fragment
+ constraintName: fragment_dataspace_id_fkey
+ deferrable: false
+ initiallyDeferred: false
+ onDelete: NO ACTION
+ onUpdate: NO ACTION
+ referencedColumnNames: id
+ referencedTableName: dataspace
+ validate: true
+ - changeSet:
+ logicalFilePath: changelog/db/changes/19-delete-not-required-dataspace-id-from-fragment.yaml
+ id: 19-4
+ author: cps
+ changes:
+ - dropColumn:
+ columnName: dataspace_id
+ tableName: fragment
+ rollback:
+ - addColumn:
+ tableName: fragment
+ columns:
+ - column:
+ name: dataspace_id
+ type: INTEGER
+ - sqlFile:
+ path: changelog/db/changes/19-repopulate-dataspace-id-for-rollback.sql
+ - addNotNullConstraint:
+ tableName: fragment
+ columnName: dataspace_id
+ columnDataType: INTEGER
+
+ - changeSet:
+ logicalFilePath: changelog/db/changes/19-delete-not-required-dataspace-id-from-fragment.yaml
+ id: 19-5
+ author: cps
+ changes:
+ - addNotNullConstraint:
+ tableName: fragment
+ columnName: anchor_id
+ columnDataType: BIGINT
+ rollback:
+ - dropNotNullConstraint:
+ tableName: fragment
+ columnName: anchor_id
+ columnDataType: BIGINT
+ - changeSet:
+ author: cps
+ logicalFilePath: changelog/db/changes/20-change-foreign-key-id-types-to-integer.yaml
+ id: 20
+ changes:
+ - modifyDataType:
+ columnName: dataspace_id
+ newDataType: INTEGER
+ tableName: schema_set
+ - modifyDataType:
+ columnName: schema_set_id
+ newDataType: INTEGER
+ tableName: schema_set_yang_resources
+ - modifyDataType:
+ columnName: yang_resource_id
+ newDataType: INTEGER
+ tableName: schema_set_yang_resources
+ rollback:
+ - modifyDataType:
+ columnName: dataspace_id
+ newDataType: BIGINT
+ tableName: schema_set
+ - modifyDataType:
+ columnName: schema_set_id
+ newDataType: BIGINT
+ tableName: schema_set_yang_resources
+ - modifyDataType:
+ columnName: yang_resource_id
+ newDataType: BIGINT
+ tableName: schema_set_yang_resources
+ - changeSet:
+ logicalFilePath: changelog/db/changes/21-escape-quotes-in-xpath.yaml
+ id: 21
+ author: cps
+ changes:
+ - sqlFile:
+ path: changelog/db/changes/21-escape-quotes-in-xpath-forward.sql
+ rollback:
+ - sqlFile:
+ path: changelog/db/changes/21-escape-quotes-in-xpath-rollback.sql \ No newline at end of file
diff --git a/cps-ri/src/main/resources/changelog/db/changes/02-loadData-dataspace.yaml b/cps-ri/src/main/resources/changelog/db/changes/02-loadData-dataspace.yaml
deleted file mode 100644
index b5ee25312..000000000
--- a/cps-ri/src/main/resources/changelog/db/changes/02-loadData-dataspace.yaml
+++ /dev/null
@@ -1,29 +0,0 @@
-# ============LICENSE_START=======================================================
-# Copyright (c) 2021 Bell Canada.
-# ================================================================================
-# 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.
-# ============LICENSE_END=========================================================
-
-databaseChangeLog:
- - changeSet:
- author: cps
- label: xnf-data-preload
- id: 2
- loadUpdateData:
- encoding: UTF-8
- file: 'changelog/db/changes/data/dataspace.csv'
- onlyUpdate: 'false'
- primaryKey: 'id'
- quotchar: '"'
- separator: '|'
- tableName: 'dataspace' \ No newline at end of file
diff --git a/cps-ri/src/main/resources/changelog/db/changes/03-loadData-schema-set.yaml b/cps-ri/src/main/resources/changelog/db/changes/03-loadData-schema-set.yaml
deleted file mode 100644
index 6ed28257b..000000000
--- a/cps-ri/src/main/resources/changelog/db/changes/03-loadData-schema-set.yaml
+++ /dev/null
@@ -1,69 +0,0 @@
-# ============LICENSE_START=======================================================
-# Copyright (c) 2021 Bell Canada.
-# ================================================================================
-# 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.
-# ============LICENSE_END=========================================================
-
-databaseChangeLog:
- - changeSet:
- author: cps
- label: xnf-data-preload
- id: 3.1
- loadUpdateData:
- encoding: UTF-8
- file: 'changelog/db/changes/data/schema_set.csv'
- onlyUpdate: 'false'
- primaryKey: 'id'
- quotchar: '"'
- separator: '|'
- tableName: 'schema_set'
-
- - changeSet:
- author: cps
- label: xnf-data-preload
- id: 3.2
- loadUpdateData:
- encoding: UTF-8
- file: 'changelog/db/changes/data/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: checkstyle
- name: checkstyle
- type: STRING
-
- - changeSet:
- author: cps
- label: xnf-data-preload
- id: 3.3
- loadUpdateData:
- encoding: UTF-8
- file: 'changelog/db/changes/data/schema_set_yang_resources.csv'
- quotchar: '"'
- primaryKey: 'schema_set_id,yang_resource_id'
- separator: '|'
- tableName: 'schema_set_yang_resources'
- usePreparedStatements: true
-
diff --git a/cps-ri/src/main/resources/changelog/db/changes/04-loadData-anchor.yaml b/cps-ri/src/main/resources/changelog/db/changes/04-loadData-anchor.yaml
deleted file mode 100644
index 04955cec6..000000000
--- a/cps-ri/src/main/resources/changelog/db/changes/04-loadData-anchor.yaml
+++ /dev/null
@@ -1,29 +0,0 @@
-# ============LICENSE_START=======================================================
-# Copyright (c) 2021 Bell Canada.
-# ================================================================================
-# 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.
-# ============LICENSE_END=========================================================
-
-databaseChangeLog:
- - changeSet:
- author: cps
- label: xnf-data-preload
- id: 4
- loadUpdateData:
- encoding: UTF-8
- file: 'changelog/db/changes/data/anchor.csv'
- onlyUpdate: 'false'
- primaryKey: 'id'
- quotchar: '"'
- separator: '|'
- tableName: 'anchor'
diff --git a/cps-ri/src/main/resources/changelog/db/changes/05-loadData-fragment.yaml b/cps-ri/src/main/resources/changelog/db/changes/05-loadData-fragment.yaml
deleted file mode 100644
index bd95a00e3..000000000
--- a/cps-ri/src/main/resources/changelog/db/changes/05-loadData-fragment.yaml
+++ /dev/null
@@ -1,84 +0,0 @@
-# ============LICENSE_START=======================================================
-# Copyright (C) 2021-2022 Nordix Foundation
-# Modifications Copyright (C) 2021 Pantheon.tech
-# ================================================================================
-# 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: xnf-data-preload
- id: 5
- loadUpdateData:
- encoding: UTF-8
- file: 'changelog/db/changes/data/fragment.csv'
- onlyUpdate: 'false'
- primaryKey: 'id'
- quotchar: '"'
- separator: '|'
- tableName: 'fragment'
- columns:
- - column:
- header: id
- name: id
- type: NUMERIC
- - column:
- header: xpath
- name: xpath
- type: STRING
- - column:
- header: attributes
- name: attributes
- type: CLOB
- - column:
- header: anchor_id
- name: anchor_id
- type: NUMERIC
- - column:
- header: parent_id
- name: parent_id
- type: NUMERIC
- - column:
- header: dataspace_id
- name: dataspace_id
- type: NUMERIC
- - column:
- header: schema_node_id
- name: schema_node_id
- type: NUMERIC
-
- - changeSet:
- author: cps
- label: xnf-data-preload
- id: 5.1
- changes:
- - sql:
- comment: Fixes the id sequence after data insert with predefined ids
- dbms: postgresql
- sql: ALTER SEQUENCE IF EXISTS fragment_id_seq RESTART WITH 200
-
- - changeSet:
- author: cps
- label: dmi-registry-schema-preload
- id: 5.2
- changes:
- - sql:
- comment: Sets sequence value to current max value of the ID from the fragment table
- dbms: postgresql
- sql: SELECT setval('fragment_id_seq', (SELECT MAX(ID) FROM fragment))
- rollback:
- sql: SELECT setval('fragment_id_seq', 200)
- comment: Rollback Sequence to restart with the sequence number in the last changeset \ No newline at end of file
diff --git a/cps-ri/src/main/resources/changelog/db/changes/06-delete-not-required-fragment-index.yaml b/cps-ri/src/main/resources/changelog/db/changes/06-delete-not-required-fragment-index.yaml
deleted file mode 100644
index bfb0cf411..000000000
--- a/cps-ri/src/main/resources/changelog/db/changes/06-delete-not-required-fragment-index.yaml
+++ /dev/null
@@ -1,35 +0,0 @@
-# ============LICENSE_START=======================================================
-# Copyright (c) 2021 Bell Canada.
-# ================================================================================
-# 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.
-# ============LICENSE_END=========================================================
-
-databaseChangeLog:
- - changeSet:
- id: 6
- author: cps
- comment: Drop unique index for dataspace and xpath on fragment table
- changes:
- - dropIndex:
- indexName: UQ_FRAGMENT_XPATH
- tableName: fragment
- rollback:
- - createIndex:
- columns:
- - column:
- name: xpath
- - column:
- name: dataspace_id
- indexName: UQ_FRAGMENT_XPATH
- tableName: fragment
- unique: true
diff --git a/cps-ri/src/main/resources/changelog/db/changes/07-update-yang-resource-checksums.yaml b/cps-ri/src/main/resources/changelog/db/changes/07-update-yang-resource-checksums.yaml
deleted file mode 100644
index 2ef1f1681..000000000
--- a/cps-ri/src/main/resources/changelog/db/changes/07-update-yang-resource-checksums.yaml
+++ /dev/null
@@ -1,45 +0,0 @@
-# ============LICENSE_START=======================================================
-# Copyright (C) 2021 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:
- id: 7
- author: cps
- comment: Change checsum on yang resource due to new hash algoritm
- changes:
- - update:
- columns:
- - column:
- name: checksum
- value: 417a7b14944f6236ad0e2b1ef956158c050cff9b74e3561ca80af32d11be240b
- tableName: yang_resource
- where: checksum='fd06e465f26f1e7d0253bbf77e7e55e1'
- - update:
- columns:
- - column:
- name: checksum
- value: 436fef591eba7f38d1a0c5e3cbd3c122f01ab41dfab37cc5a9cbca1ed53b29fb
- tableName: yang_resource
- where: checksum='0337045143fa2e592243243f82699b93'
- - update:
- columns:
- - column:
- name: checksum
- value: 25516798613f862ad20831e59ba02b75ecdc9c6f5547ed5d90bda76143bf0112
- tableName: yang_resource
- where: checksum='57d603ee9ab0c49355ad0695c0709c93'
diff --git a/cps-ri/src/main/resources/changelog/db/changes/08-update-yang-resources-cps-ran-model-forward.sql b/cps-ri/src/main/resources/changelog/db/changes/08-update-yang-resources-cps-ran-model-forward.sql
deleted file mode 100644
index 6bbcd96d3..000000000
--- a/cps-ri/src/main/resources/changelog/db/changes/08-update-yang-resources-cps-ran-model-forward.sql
+++ /dev/null
@@ -1,1306 +0,0 @@
-update yang_resource set
-name = 'cps-ran-schema-model@2021-01-28.yang',
-checksum = 'a825c571c4a1d585a7f09a3716dedbfab1146abc4725b75a16f9ac89440bf46b',
-content = 'module cps-ran-schema-model {
- yang-version 1.1;
- namespace "org:onap:ccsdk:features:sdnr:northbound:cps-ran-schema-model";
- prefix rn;
-
- import ietf-inet-types {
- prefix inet;
- }
- import ietf-yang-types {
- prefix yang;
- }
-
- organization
- "Open Network Automation Platform - ONAP
- <https://www.onap.org>";
- contact
- "Editors:
- Sandeep Shah
- <mailto:sandeep.shah@ibm.com>
-
- Swaminathan Seetharaman
- <mailto:swaminathan.seetharaman@wipro.com>";
- description
- "This module contains a collection of YANG definitions for capturing
- relationships among managed elements of the radio access Network
- to be stored in ONAP CPS platform.
-
- Copyright 2020-2021 IBM.
-
- 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.";
-
- revision 2021-01-28 {
- description
- "CPS RAN Network YANG Model for ONAP/O-RAN POC";
- reference
- "https://wiki.onap.org/display/DW/E2E+Network+Slicing+Use+Case+in+R7+Guilin";
- }
-
- typedef usageState {
- type enumeration {
- enum IDLE {
- description
- "TODO";
- }
- enum ACTIVE {
- description
- "TODO";
- }
- enum BUSY {
- description
- "TODO";
- }
- }
- description
- "It describes whether or not the resource is actively in
- use at a specific instant, and if so, whether or not it has spare
- capacity for additional users at that instant. The value is READ-ONLY.";
- reference
- "ITU T Recommendation X.731";
- }
-
- typedef Mcc {
- type string;
- description
- "The mobile country code consists of three decimal digits,
- The first digit of the mobile country code identifies the geographic
- region (the digits 1 and 8 are not used):";
- reference
- "3GPP TS 23.003 subclause 2.2 and 12.1";
- }
-
- typedef Mnc {
- type string;
- description
- "The mobile network code consists of two or three
- decimal digits (for example: MNC of 001 is not the same as MNC of 01)";
- reference
- "3GPP TS 23.003 subclause 2.2 and 12.1";
- }
-
- typedef Nci {
- type string;
- description
- "NR Cell Identity. The NCI shall be of fixed length of 36 bits
- and shall be coded using full hexadecimal representation.
- The exact coding of the NCI is the responsibility of each PLMN operator";
- reference
- "TS 23.003";
- }
-
- typedef OperationalState {
- type enumeration {
- enum DISABLED {
- value 0;
- description
- "The resource is totally inoperable.";
- }
- enum ENABLED {
- value 1;
- description
- "The resource is partially or fully operable.";
- }
- }
- description
- "TODO";
- reference
- "3GPP TS 28.625 and ITU-T X.731";
- }
-
- typedef AvailabilityStatus {
- type enumeration {
- enum IN_TEST {
- description
- "TODO";
- }
- enum FAILED {
- description
- "TODO";
- }
- enum POWER_OFF {
- description
- "TODO";
- }
- enum OFF_LINE {
- description
- "TODO";
- }
- enum OFF_DUTY {
- description
- "TODO";
- }
- enum DEPENDENCY {
- description
- "TODO";
- }
- enum DEGRADED {
- description
- "TODO";
- }
- enum NOT_INSTALLED {
- description
- "TODO";
- }
- enum LOG_FULL {
- description
- "TODO";
- }
- }
- description
- "TODO";
- reference
- "TODO";
- }
-
- typedef CellState {
- type enumeration {
- enum IDLE {
- description
- "TODO";
- }
- enum INACTIVE {
- description
- "TODO";
- }
- enum ACTIVE {
- description
- "TODO";
- }
- }
- description
- "TODO";
- reference
- "TODO";
- }
-
- typedef SNssai {
- type string;
- description
- "Single Network Slice Selection Assistance Information.";
- reference
- "TS 23.501 clause 5.15.2";
- }
-
- typedef Sst {
- type uint8;
- description
- "TODO";
- reference
- "TODO";
- }
-
- typedef Nrpci {
- type uint32;
- description
- "Physical Cell Identity (PCI) of the NR cell.";
- reference
- "TS 36.211 subclause 6.11";
- }
-
- typedef Tac {
- type int32 {
- range "0..16777215";
- }
- description
- "Tracking Area Code";
- reference
- "TS 23.003 clause 19.4.2.3";
- }
-
- typedef AmfRegionId {
- type string;
- description
- "";
- reference
- "clause 2.10.1 of 3GPP TS 23.003";
- }
-
- typedef AmfSetId {
- type string;
- description
- "";
- reference
- "clause 2.10.1 of 3GPP TS 23.003";
- }
-
- typedef AmfPointer {
- type string;
- description
- "";
- reference
- "clause 2.10.1 of 3GPP TS 23.003";
- }
-
- // type definitions especially for core NFs
-
- typedef NfType {
- type enumeration {
- enum NRF {
- description
- "TODO";
- }
- enum UDM {
- description
- "TODO";
- }
- enum AMF {
- description
- "TODO";
- }
- enum SMF {
- description
- "TODO";
- }
- enum AUSF {
- description
- "TODO";
- }
- enum NEF {
- description
- "TODO";
- }
- enum PCF {
- description
- "TODO";
- }
- enum SMSF {
- description
- "TODO";
- }
- enum NSSF {
- description
- "TODO";
- }
- enum UDR {
- description
- "TODO";
- }
- enum LMF {
- description
- "TODO";
- }
- enum GMLC {
- description
- "TODO";
- }
- enum 5G_EIR {
- description
- "TODO";
- }
- enum SEPP {
- description
- "TODO";
- }
- enum UPF {
- description
- "TODO";
- }
- enum N3IWF {
- description
- "TODO";
- }
- enum AF {
- description
- "TODO";
- }
- enum UDSF {
- description
- "TODO";
- }
- enum BSF {
- description
- "TODO";
- }
- enum CHF {
- description
- "TODO";
- }
- }
- description
- "TODO";
- }
-
- typedef NotificationType {
- type enumeration {
- enum N1_MESSAGES {
- description
- "TODO";
- }
- enum N2_INFORMATION {
- description
- "TODO";
- }
- enum LOCATION_NOTIFICATION {
- description
- "TODO";
- }
- }
- description
- "TODO";
- }
-
- typedef Load {
- type uint8 {
- range "0..100";
- }
- description
- "Latest known load information of the NF, percentage ";
- }
-
- typedef N1MessageClass {
- type enumeration {
- enum 5GMM {
- description
- "TODO";
- }
- enum SM {
- description
- "TODO";
- }
- enum LPP {
- description
- "TODO";
- }
- enum SMS {
- description
- "TODO";
- }
- }
- description
- "TODO";
- }
-
- typedef N2InformationClass {
- type enumeration {
- enum SM {
- description
- "TODO";
- }
- enum NRPPA {
- description
- "TODO";
- }
- enum PWS {
- description
- "TODO";
- }
- enum PWS_BCAL {
- description
- "TODO";
- }
- enum PWS_RF {
- description
- "TODO";
- }
- }
- description
- "TODO";
- reference
- "TODO";
- }
-
- typedef NsiId {
- type string;
- description
- "TODO";
- }
-
- typedef UeMobilityLevel {
- type enumeration {
- enum STATIONARY {
- description
- "TODO";
- }
- enum NOMADIC {
- description
- "TODO";
- }
- enum RESTRICTED_MOBILITY {
- description
- "TODO";
- }
- enum FULLY_MOBILITY {
- description
- "TODO";
- }
- }
- description
- "TODO";
- reference
- "TODO";
- }
-
- typedef ResourceSharingLevel {
- type enumeration {
- enum SHARED {
- description
- "TODO";
- }
- enum NOT_SHARED {
- description
- "TODO";
- }
- }
- description
- "TODO";
- reference
- "TODO";
- }
-
- typedef TxDirection {
- type enumeration {
- enum DL {
- description
- "TODO";
- }
- enum UL {
- description
- "TODO";
- }
- enum DL_AND_UL {
- description
- "TODO";
- }
- }
- description
- "TODO";
- reference
- "TODO";
- }
-
- typedef DistinguishedName { // TODO is this equivalent to TS 32.300 ?
- type string;
- description
- "Represents the international standard for the representation
- of Distinguished Name (RFC 4512).
- The format of the DistinguishedName REGEX is:
- {AttributeType = AttributeValue}
-
- AttributeType consists of alphanumeric and hyphen (OIDs not allowed).
- All other characters are restricted.
- The Attribute value cannot contain control characters or the
- following characters : > < ; \" + , (Comma) and White space
- The Attribute value can contain the following characters if they
- are excaped : > < ; \" + , (Comma) and White space
- The Attribute value can contain control characters if its an escaped
- double digit hex number.
- Examples could be
- UID=nobody@example.com,DC=example,DC=com
- CN=John Smith,OU=Sales,O=ACME Limited,L=Moab,ST=Utah,C=US";
- reference
- "RFC 4512 Lightweight Directory Access Protocol (LDAP):
- Directory Information Models";
- } // recheck regexp it doesn''t handle posix [:cntrl:]
-
- typedef QOffsetRange {
- type int8;
- units "dB";
- description
- "TODO";
- reference
- "TODO";
- }
-
- typedef QuotaType {
- type enumeration {
- enum STRICT {
- description
- "TODO";
- }
- enum FLOAT {
- description
- "TODO";
- }
- }
- description
- "TODO";
- }
-
- typedef CyclicPrefix {
- type enumeration {
- enum NORMAL {
- description
- "TODO";
- }
- enum EXTENDED {
- description
- "TODO";
- }
- }
- description
- "TODO";
- }
-
- grouping PLMNInfo {
- description
- "The PLMNInfo data type define a S-NSSAI member in a specific PLMNId, and it have
- two attributes PLMNId and S-NSSAI (PLMNId, S-NSSAI). The PLMNId represents a data type that
- is comprised of mcc (mobile country code) and mnc (mobile network code), (See TS 23.003
- subclause 2.2 and 12.1) and S-NSSAI represents an data type, that is comprised of an SST
- (Slice/Service type) and an optional SD (Slice Differentiator) field, (See TS 23.003 [13]).";
- uses PLMNId;
- list sNSSAIList {
- key "sNssai";
- uses sNSSAIConfig;
- description "List of sNSSAIs";
- }
- }
-
- grouping ManagedNFProfile {
- description
- "Defines profile for managed NF";
- reference
- "3GPP TS 23.501";
- leaf idx {
- type uint32;
- description
- "TODO";
- reference
- "3GPP TS 23.501";
- }
- leaf nfInstanceID {
- type yang:uuid;
- config false;
- mandatory false;
- description
- "This parameter defines profile for managed NF.
- The format of the NF Instance ID shall be a
- Universally Unique Identifier (UUID) version 4,
- as described in IETF RFC 4122 ";
- }
- leaf-list nfType {
- type NfType;
- config false;
- min-elements 1;
- description
- "Type of the Network Function";
- }
- leaf hostAddr {
- type inet:host;
- mandatory false;
- description
- "Host address of a NF";
- }
- leaf authzInfo {
- type string;
- description
- "This parameter defines NF Specific Service authorization
- information. It shall include the NF type (s) and NF realms/origins
- allowed to consume NF Service(s) of NF Service Producer.";
- reference
- "See TS 23.501";
- }
- leaf location {
- type string;
- description
- "Information about the location of the NF instance
- (e.g. geographic location, data center) defined by operator";
- reference
- "TS 29.510";
- }
- leaf capacity {
- type uint16;
- mandatory false;
- description
- "This parameter defines static capacity information
- in the range of 0-65535, expressed as a weight relative to other
- NF instances of the same type; if capacity is also present in the
- nfServiceList parameters, those will have precedence over this value.";
- reference
- "TS 29.510";
- }
- leaf nFSrvGroupId {
- type string;
- description
- "This parameter defines identity of the group that is
- served by the NF instance.
- May be config false or true depending on the ManagedFunction.
- Config=true for Udrinfo. Config=false for UdmInfo and AusfInfo.
- Shall be present if ../nfType = UDM or AUSF or UDR. ";
- reference
- "TS 29.510";
- }
- leaf-list supportedDataSetIds {
- type enumeration {
- enum SUBSCRIPTION {
- description
- "TODO";
- }
- enum POLICY {
- description
- "TODO";
- }
- enum EXPOSURE {
- description
- "TODO";
- }
- enum APPLICATION {
- description
- "TODO";
- }
- }
- description
- "List of supported data sets in the UDR instance.
- May be present if ../nfType = UDR";
- reference
- "TS 29.510";
- }
- leaf-list smfServingAreas {
- type string;
- description
- "Defines the SMF service area(s) the UPF can serve.
- Shall be present if ../nfType = UPF";
- reference
- "TS 29.510";
- }
- leaf priority {
- type uint16;
- description
- "This parameter defines Priority (relative to other NFs
- of the same type) in the range of 0-65535, to be used for NF selection;
- lower values indicate a higher priority. If priority is also present
- in the nfServiceList parameters, those will have precedence over
- this value. Shall be present if ../nfType = AMF ";
- reference
- "TS 29.510";
- }
- }
-
-
- grouping PLMNId {
- description
- "TODO";
- reference
- "TS 23.658";
- leaf mcc {
- type Mcc;
- mandatory true;
- description
- "TODO";
- }
- leaf mnc {
- type Mnc;
- mandatory true;
- description
- "TODO";
- }
- }
-
- grouping AmfIdentifier {
- description
- "The AMFI is constructed from an AMF Region ID,
- an AMF Set ID and an AMF Pointer.
- The AMF Region ID identifies the region,
- the AMF Set ID uniquely identifies the AMF Set within the AMF Region, and
- the AMF Pointer uniquely identifies the AMF within the AMF Set. ";
- leaf amfRegionId {
- type AmfRegionId;
- description
- "TODO";
- }
- leaf amfSetId {
- type AmfSetId;
- description
- "TODO";
- }
- leaf amfPointer {
- type AmfPointer;
- description
- "TODO";
- }
- }
-
- grouping DefaultNotificationSubscription {
- description
- "TODO";
- leaf notificationType {
- type NotificationType;
- description
- "TODO";
- }
- leaf callbackUri {
- type inet:uri;
- description
- "TODO";
- }
- leaf n1MessageClass {
- type N1MessageClass;
- description
- "TODO";
- }
- leaf n2InformationClass {
- type N2InformationClass;
- description
- "TODO";
- }
- }
-
- grouping Ipv4AddressRange {
- description
- "TODO";
- leaf start {
- type inet:ipv4-address;
- description
- "TODO";
- }
- leaf end {
- type inet:ipv4-address;
- description
- "TODO";
- }
- }
-
- grouping Ipv6PrefixRange {
- description
- "TODO";
- leaf start {
- type inet:ipv6-prefix;
- description
- "TODO";
- }
- leaf end {
- type inet:ipv6-prefix;
- description
- "TODO";
- }
- }
-
- grouping AddressWithVlan {
- description
- "TODO";
- leaf ipAddress {
- type inet:ip-address;
- description
- "TODO";
- }
- leaf vlanId {
- type uint16;
- description
- "TODO";
- }
- }
-
- grouping ManagedElementGroup {
- description
- "Abstract class representing telecommunications resources.";
- leaf dnPrefix {
- type DistinguishedName;
- description
- "Provides naming context and splits the DN into a DN Prefix and Local DN";
- }
- leaf userLabel {
- type string;
- description
- "A user-friendly name of this object.";
- }
- leaf locationName {
- type string;
- config false;
- description
- "The physical location (e.g. an address) of an entity";
- }
- leaf-list managedBy {
- type DistinguishedName;
- config false;
- description
- "Relates to the role played by ManagementSystem";
- }
- leaf-list managedElementTypeList {
- type string;
- config false;
- min-elements 1;
- description
- "The type of functionality provided by the ManagedElement.
- It may represent one ME functionality or a combination of
- Two examples of allowed values are:
- - NodeB;
- - HLR, VLR.";
- }
- } // Managed Element grouping
-
- grouping NearRTRICGroup {
- description
- "Abstract class representing Near RT RIC.";
- leaf dnPrefix {
- type DistinguishedName;
- description
- "Provides naming context and splits the DN into a DN Prefix and Local DN";
- }
- leaf userLabel {
- type string;
- description
- "A user-friendly name of this object.";
- }
- leaf locationName {
- type string;
- config false;
- description
- "The physical location (e.g. an address) of an entity";
- }
- leaf gNBId {
- type int64 { range "0..4294967295"; }
- config false;
- description "Identifies a gNB within a PLMN. The gNB Identifier (gNB ID)
- is part of the NR Cell Identifier (NCI) of the gNB cells.";
- reference "gNB ID in 3GPP TS 38.300, Global gNB ID in 3GPP TS 38.413";
- }
-
- list pLMNInfoList {
- uses PLMNInfo;
- key "mcc mnc";
- description "The PLMNInfoList is a list of PLMNInfo data type. It defines which PLMNs that can be served by the nearRTRIC.";
- }
- list RRMPolicyRatio {
- key id;
- leaf id {
- type string;
- description
- "Key leaf";
- }
- container attributes {
- uses RRMPolicyRatioGroup;
- }
- description " The RRMPolicyRatio IOC is one realization of a RRMPolicy_ IOC, see the
- inheritance in Figure 4.2.1.2-1. This RRM framework allows adding new policies, both
- standardized (like RRMPolicyRatio) or as vendor specific, by inheriting from the
- abstract RRMPolicy_ IOC. For details see subclause 4.3.36.";
- }
-
- } // Near RT RIC grouping
-
-
-
- grouping Configuration{
- leaf configParameter{
- type string;
- description "Type of the configuration parameter";
- }
- leaf configValue{
- type int64;
- description "Identifies the configuration to be done for the network elements under the NearRTRIC";
-
- }
- }
-
-
- grouping GNBDUFunctionGroup {
- description
- "Represents the GNBDUFunction IOC.";
- reference
- "3GPP TS 28.541";
-
- leaf gNBId {
- type int64 {
- range "0..4294967295";
- }
- config false;
- mandatory false;
- description
- "Identifies a gNB within a PLMN. The gNB Identifier (gNB ID)
- is part of the NR Cell Identifier (NCI) of the gNB cells.";
- reference
- "gNB ID in 3GPP TS 38.300, Global gNB ID in 3GPP TS 38.413";
- }
- leaf gNBIdLength {
- type int32 {
- range "22..32";
- }
- mandatory false;
- description
- "Indicates the number of bits for encoding the gNB ID.";
- reference
- "gNB ID in 3GPP TS 38.300, Global gNB ID in 3GPP TS 38.413";
- }
- leaf gNBDUId {
- type int64 {
- range "0..68719476735";
- }
- mandatory false;
- description
- "Uniquely identifies the DU at least within a gNB.";
- reference
- "3GPP TS 38.473";
- }
- leaf gNBDUName {
- type string {
- length "1..150";
- }
- description
- "Identifies the Distributed Unit of an NR node";
- reference
- "3GPP TS 38.473";
- }
- list RRMPolicyRatio {
- key id;
- leaf id {
- type string;
- description
- "Key leaf";
- }
- container attributes {
- uses RRMPolicyRatioGroup;
- }
- description " The RRMPolicyRatio IOC is one realization of a RRMPolicy_ IOC, see the
- inheritance in Figure 4.2.1.2-1. This RRM framework allows adding new policies, both
- standardized (like RRMPolicyRatio) or as vendor specific, by inheriting from the
- abstract RRMPolicy_ IOC. For details see subclause 4.3.36.";
- }
- }
-
- grouping NRCellDUGroup {
- description
- "Represents the NRCellDU IOC.";
- reference
- "3GPP TS 28.541";
- list RRMPolicyRatio {
- key id;
- leaf id {
- type string;
- description
- "Key leaf";
- }
- container attributes {
- uses RRMPolicyRatioGroup;
- }
- description " The RRMPolicyRatio IOC is one realization of a RRMPolicy_ IOC, see the
- inheritance in Figure 4.2.1.2-1. This RRM framework allows adding new policies, both
- standardized (like RRMPolicyRatio) or as vendor specific, by inheriting from the
- abstract RRMPolicy_ IOC. For details see subclause 4.3.36.";
- }
- leaf cellLocalId {
- type int32 {
- range "0..16383";
- }
- mandatory false;
- description
- "Identifies an NR cell of a gNB. Together with the
- corresponding gNB identifier in forms the NR Cell Identity (NCI).";
- reference
- "NCI in 3GPP TS 38.300";
- }
- list pLMNInfoList {
- key "mcc mnc";
- min-elements 1;
- description
- "The PLMNInfoList is a list of PLMNInfo data type. It defines which PLMNs that
- can be served by the NR cell, and which S-NSSAIs that can be supported by the NR cell for
- corresponding PLMN in case of network slicing feature is supported. The plMNId of the first
- entry of the list is the PLMNId used to construct the nCGI for the NR cell.";
- uses PLMNInfo;
- }
- leaf nRPCI {
- type int32 {
- range "0..1007";
- }
- mandatory false;
- description
- "The Physical Cell Identity (PCI) of the NR cell.";
- reference
- "3GPP TS 36.211";
- }
- leaf nRTAC {
- type Tac;
- description
- "The common 5GS Tracking Area Code for the PLMNs.";
- reference
- "3GPP TS 23.003, 3GPP TS 38.473";
- }
- } // grouping
-
- grouping rRMPolicyMemberGroup {
- description
- "TODO";
- uses PLMNId;
- leaf sNSSAI {
- type SNssai;
- description
- "This data type represents an RRM Policy member that will be part of a
- rRMPolicyMemberList. A RRMPolicyMember is defined by its pLMNId and sNSSAI (S-NSSAI).
- The members in a rRMPolicyMemberList are assigned a specific amount of RRM resources
- based on settings in RRMPolicy.";
- }
- }
-
- grouping RRMPolicyRatioGroup {
-
- uses RRMPolicy_Group; // Inherits RRMPolicy_
-
- leaf quotaType {
- type QuotaType;
- mandatory false;
- description "The type of the quota which allows to allocate resources as
- strictly usable for defined slice(s) (strict quota) or allows that
- resources to be used by other slice(s) when defined slice(s) do not
- need them (float quota).";
- }
-
- leaf rRMPolicyMaxRatio {
- type uint8;
- mandatory false;
- units percent;
- description "The RRM policy setting the maximum percentage of radio
- resources to be allocated to the corresponding S-NSSAI list. This
- quota can be strict or float quota. Strict quota means resources are
- not allowed for other sNSSAIs even when they are not used by the
- defined sNSSAIList. Float quota resources can be used by other sNSSAIs
- when the defined sNSSAIList do not need them. Value 0 indicates that
- there is no maximum limit.";
- }
-
- leaf rRMPolicyMinRatio {
- type uint8;
- mandatory false;
- units percent;
- description "The RRM policy setting the minimum percentage of radio
- resources to be allocated to the corresponding S-NSSAI list. This
- quota can be strict or float quota. Strict quota means resources are
- not allowed for other sNSSAIs even when they are not used by the
- defined sNSSAIList. Float quota resources can be used by other sNSSAIs
- when the defined sNSSAIList do not need them. Value 0 indicates that
- there is no minimum limit.";
- }
- leaf rRMPolicyDedicatedRatio {
- type uint8;
- units percent;
- description "Dedicated Ration.";
- }
- description "Represents the RRMPolicyRatio concrete IOC.";
- }
-
-
- grouping sNSSAIConfig{
- leaf sNssai {
- type string;
- description "s-NSSAI of a network slice.";
- reference "3GPP TS 23.003";
- }
- leaf status {
- type string;
- description "status of s-NSSAI";
- }
- list configData{
- uses Configuration;
- key "configParameter";
- description "List of configurations to be done at the network elements";
- }
- }
-
- grouping RRMPolicy_Group {
- description
- "This IOC represents the properties of an abstract RRMPolicy. The RRMPolicy_ IOC
- needs to be subclassed to be instantiated. It defines two attributes apart from those
- inherited from Top IOC, the resourceType attribute defines type of resource (PRB, RRC
- connected users, DRB usage etc.) and the rRMPolicyMemberList attribute defines the
- RRMPolicyMember(s)that are subject to this policy. An RRM resource (defined in resourceType
- attribute) is located in NRCellDU, NRCellCU, GNBDUFunction, GNBCUCPFunction or in
- GNBCUUPFunction. The RRMPolicyRatio IOC is one realization of a RRMPolicy_ IOC, see the
- inheritance in TS 28.541 Figure 4.2.1.2-1. This RRM framework allows adding new policies,
- both standardized (like RRMPolicyRatio) or as vendor specific, by inheriting from the
- abstract RRMPolicy_ IOC.";
- leaf resourceType {
- type string;
- mandatory false;
- description
- "The resourceType attribute defines type of resource (PRB, RRC connected users,
- DRB usage etc.) that is subject to policy. Valid values are ''PRB'', ''RRC'' or ''DRB''";
- }
- list rRMPolicyMemberList {
- key "idx";
- leaf idx {
- type uint32;
- description
- "TODO";
- }
- description
- "It represents the list of RRMPolicyMember (s) that the managed object
- is supporting. A RRMPolicyMember <<dataType>> include the PLMNId <<dataType>>
- and S-NSSAI <<dataType>>.";
- uses rRMPolicyMemberGroup;
- }
- } // grouping
-
- grouping GNBCUUPFunctionGroup {
- description
- "Represents the GNBCUUPFunction IOC.";
- reference
- "3GPP TS 28.541";
-
- list RRMPolicyRatio {
- key id;
- leaf id {
- type string;
- description
- "Key leaf";
- }
- container attributes {
- uses RRMPolicyRatioGroup;
- }
- description " The RRMPolicyRatio IOC is one realization of a RRMPolicy_ IOC, see the
- inheritance in Figure 4.2.1.2-1. This RRM framework allows adding new policies, both
- standardized (like RRMPolicyRatio) or as vendor specific, by inheriting from the
- abstract RRMPolicy_ IOC. For details see subclause 4.3.36.";
- }
- leaf gNBCUUPId {
- type uint64 {
- range "0..68719476735";
- }
- config false;
- mandatory false;
- description
- "Identifies the gNB-CU-UP at least within a gNB-CU-CP";
- reference
- "''gNB-CU-UP ID'' in subclause 9.3.1.15 of 3GPP TS 38.463";
- }
- leaf gNBId {
- type int64 {
- range "0..4294967295";
- }
- mandatory false;
- description
- "Indicates the number of bits for encoding the gNB Id.";
- reference
- "gNB Id in 3GPP TS 38.300, Global gNB ID in 3GPP TS 38.413";
- }
- list pLMNInfoList {
- key "mcc mnc";
- description
- "The PLMNInfoList is a list of PLMNInfo data type. It defines which PLMNs that
- can be served by the GNBCUUPFunction and which S-NSSAIs can be supported by the
- GNBCUUPFunction for corresponding PLMN in case of network slicing feature is supported";
- uses PLMNInfo;
- }
- } // grouping
-
- grouping GNBCUCPFunctionGroup {
- description
- "Represents the GNBCUCPFunction IOC.";
- reference
- "3GPP TS 28.541";
- list RRMPolicyRatio {
- key id;
- leaf id {
- type string;
- description
- "Key leaf";
- }
- container attributes {
- uses RRMPolicyRatioGroup;
- }
- description " The RRMPolicyRatio IOC is one realization of a RRMPolicy_ IOC, see the
- inheritance in Figure 4.2.1.2-1. This RRM framework allows adding new policies, both
- standardized (like RRMPolicyRatio) or as vendor specific, by inheriting from the
- abstract RRMPolicy_ IOC. For details see subclause 4.3.36.";
- }
- leaf gNBId {
- type int64 {
- range "0..4294967295";
- }
- mandatory false;
- description
- "Identifies a gNB within a PLMN. The gNB Identifier (gNB ID)
- is part of the NR Cell Identifier (NCI) of the gNB cells.";
- reference
- "gNB ID in 3GPP TS 38.300, Global gNB ID in 3GPP TS 38.413";
- }
- leaf gNBIdLength {
- type int32 {
- range "22..32";
- }
- mandatory false;
- description
- "Indicates the number of bits for encoding the gNB ID.";
- reference
- "gNB ID in 3GPP TS 38.300, Global gNB ID in 3GPP TS 38.413";
- }
- leaf gNBCUName {
- type string {
- length "1..150";
- }
- mandatory false;
- description
- "Identifies the Central Unit of an gNB.";
- reference
- "3GPP TS 38.473";
- }
- list pLMNId {
- key "mcc mnc";
- min-elements 1;
- max-elements 1;
- description
- "The PLMN identifier to be used as part of the global RAN
- node identity.";
- uses PLMNId;
- }
- } // grouping
-
- grouping NRCellCUGroup {
- description
- "Represents the NRCellCU IOC.";
- reference
- "3GPP TS 28.541";
- leaf cellLocalId {
- type int32 {
- range "0..16383";
- }
- mandatory false;
- description
- "Identifies an NR cell of a gNB. Together with corresponding
- gNB ID it forms the NR Cell Identifier (NCI).";
- }
- list pLMNInfoList {
- key "mcc mnc";
- min-elements 1;
- description
- "The PLMNInfoList is a list of PLMNInfo data type. It defines which PLMNs
- that can be served by the NR cell, and which S-NSSAIs that can be supported by the
- NR cell for corresponding PLMN in case of network slicing feature is supported.";
- uses PLMNInfo;
- // Note: Whether the attribute pLMNId in the pLMNInfo can be writable depends on the implementation.
- }
- list RRMPolicyRatio {
- key id;
- leaf id {
- type string;
- description
- "Key leaf";
- }
- container attributes {
- uses RRMPolicyRatioGroup;
- }
- description " The RRMPolicyRatio IOC is one realization of a RRMPolicy_ IOC, see the
- inheritance in Figure 4.2.1.2-1. This RRM framework allows adding new policies, both
- standardized (like RRMPolicyRatio) or as vendor specific, by inheriting from the
- abstract RRMPolicy_ IOC. For details see subclause 4.3.36.";
- }
- } // grouping NRCellCUGroup
-
- grouping NRCellRelationGroup {
- description
- "Represents the NRCellRelation IOC.";
- reference
- "3GPP TS 28.541";
- leaf nRTCI {
- type uint64;
- description
- "Target NR Cell Identifier. It consists of NR Cell
- Identifier (NCI) and Physical Cell Identifier of the target NR cell
- (nRPCI).";
- }
- }
-}
-'
-where name = 'cps-ran-schema-model2021-01-28.yang'
-and checksum = '436fef591eba7f38d1a0c5e3cbd3c122f01ab41dfab37cc5a9cbca1ed53b29fb';
diff --git a/cps-ri/src/main/resources/changelog/db/changes/08-update-yang-resources-cps-ran-model-rollback.sql b/cps-ri/src/main/resources/changelog/db/changes/08-update-yang-resources-cps-ran-model-rollback.sql
deleted file mode 100644
index d8cfed223..000000000
--- a/cps-ri/src/main/resources/changelog/db/changes/08-update-yang-resources-cps-ran-model-rollback.sql
+++ /dev/null
@@ -1,1303 +0,0 @@
-update yang_resource set
-name = 'cps-ran-schema-model2021-01-28.yang',
-checksum = '436fef591eba7f38d1a0c5e3cbd3c122f01ab41dfab37cc5a9cbca1ed53b29fb',
-content = 'module cps-ran-schema-model {
- yang-version 1.1;
- namespace "org:onap:ccsdk:features:sdnr:northbound:cps-ran-schema-model";
- prefix rn;
-
- import ietf-inet-types {
- prefix inet;
- }
- import ietf-yang-types {
- prefix yang;
- }
-
- organization
- "Open Network Automation Platform - ONAP
- <https://www.onap.org>";
- contact
- "Editors:
- Sandeep Shah
- <mailto:sandeep.shah@ibm.com>
-
- Swaminathan Seetharaman
- <mailto:swaminathan.seetharaman@wipro.com>";
- description
- "This module contains a collection of YANG definitions for capturing
- relationships among managed elements of the radio access Network
- to be stored in ONAP CPS platform.
-
- Copyright 2020-2021 IBM.
-
- 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.";
-
- revision 2021-01-28 {
- description
- "CPS RAN Network YANG Model for ONAP/O-RAN POC";
- reference
- "https://wiki.onap.org/display/DW/E2E+Network+Slicing+Use+Case+in+R7+Guilin";
- }
-
- typedef usageState {
- type enumeration {
- enum IDLE {
- description
- "TODO";
- }
- enum ACTIVE {
- description
- "TODO";
- }
- enum BUSY {
- description
- "TODO";
- }
- }
- description
- "It describes whether or not the resource is actively in
- use at a specific instant, and if so, whether or not it has spare
- capacity for additional users at that instant. The value is READ-ONLY.";
- reference
- "ITU T Recommendation X.731";
- }
-
- typedef Mcc {
- type string;
- description
- "The mobile country code consists of three decimal digits,
- The first digit of the mobile country code identifies the geographic
- region (the digits 1 and 8 are not used):";
- reference
- "3GPP TS 23.003 subclause 2.2 and 12.1";
- }
-
- typedef Mnc {
- type string;
- description
- "The mobile network code consists of two or three
- decimal digits (for example: MNC of 001 is not the same as MNC of 01)";
- reference
- "3GPP TS 23.003 subclause 2.2 and 12.1";
- }
-
- typedef Nci {
- type string;
- description
- "NR Cell Identity. The NCI shall be of fixed length of 36 bits
- and shall be coded using full hexadecimal representation.
- The exact coding of the NCI is the responsibility of each PLMN operator";
- reference
- "TS 23.003";
- }
-
- typedef OperationalState {
- type enumeration {
- enum DISABLED {
- value 0;
- description
- "The resource is totally inoperable.";
- }
- enum ENABLED {
- value 1;
- description
- "The resource is partially or fully operable.";
- }
- }
- description
- "TODO";
- reference
- "3GPP TS 28.625 and ITU-T X.731";
- }
-
- typedef AvailabilityStatus {
- type enumeration {
- enum IN_TEST {
- description
- "TODO";
- }
- enum FAILED {
- description
- "TODO";
- }
- enum POWER_OFF {
- description
- "TODO";
- }
- enum OFF_LINE {
- description
- "TODO";
- }
- enum OFF_DUTY {
- description
- "TODO";
- }
- enum DEPENDENCY {
- description
- "TODO";
- }
- enum DEGRADED {
- description
- "TODO";
- }
- enum NOT_INSTALLED {
- description
- "TODO";
- }
- enum LOG_FULL {
- description
- "TODO";
- }
- }
- description
- "TODO";
- reference
- "TODO";
- }
-
- typedef CellState {
- type enumeration {
- enum IDLE {
- description
- "TODO";
- }
- enum INACTIVE {
- description
- "TODO";
- }
- enum ACTIVE {
- description
- "TODO";
- }
- }
- description
- "TODO";
- reference
- "TODO";
- }
-
- typedef SNssai {
- type string;
- description
- "Single Network Slice Selection Assistance Information.";
- reference
- "TS 23.501 clause 5.15.2";
- }
-
- typedef Sst {
- type uint8;
- description
- "TODO";
- reference
- "TODO";
- }
-
- typedef Nrpci {
- type uint32;
- description
- "Physical Cell Identity (PCI) of the NR cell.";
- reference
- "TS 36.211 subclause 6.11";
- }
-
- typedef Tac {
- type int32 {
- range "0..16777215";
- }
- description
- "Tracking Area Code";
- reference
- "TS 23.003 clause 19.4.2.3";
- }
-
- typedef AmfRegionId {
- type string;
- description
- "";
- reference
- "clause 2.10.1 of 3GPP TS 23.003";
- }
-
- typedef AmfSetId {
- type string;
- description
- "";
- reference
- "clause 2.10.1 of 3GPP TS 23.003";
- }
-
- typedef AmfPointer {
- type string;
- description
- "";
- reference
- "clause 2.10.1 of 3GPP TS 23.003";
- }
-
- // type definitions especially for core NFs
-
- typedef NfType {
- type enumeration {
- enum NRF {
- description
- "TODO";
- }
- enum UDM {
- description
- "TODO";
- }
- enum AMF {
- description
- "TODO";
- }
- enum SMF {
- description
- "TODO";
- }
- enum AUSF {
- description
- "TODO";
- }
- enum NEF {
- description
- "TODO";
- }
- enum PCF {
- description
- "TODO";
- }
- enum SMSF {
- description
- "TODO";
- }
- enum NSSF {
- description
- "TODO";
- }
- enum UDR {
- description
- "TODO";
- }
- enum LMF {
- description
- "TODO";
- }
- enum GMLC {
- description
- "TODO";
- }
- enum 5G_EIR {
- description
- "TODO";
- }
- enum SEPP {
- description
- "TODO";
- }
- enum UPF {
- description
- "TODO";
- }
- enum N3IWF {
- description
- "TODO";
- }
- enum AF {
- description
- "TODO";
- }
- enum UDSF {
- description
- "TODO";
- }
- enum BSF {
- description
- "TODO";
- }
- enum CHF {
- description
- "TODO";
- }
- }
- description
- "TODO";
- }
-
- typedef NotificationType {
- type enumeration {
- enum N1_MESSAGES {
- description
- "TODO";
- }
- enum N2_INFORMATION {
- description
- "TODO";
- }
- enum LOCATION_NOTIFICATION {
- description
- "TODO";
- }
- }
- description
- "TODO";
- }
-
- typedef Load {
- type uint8 {
- range "0..100";
- }
- description
- "Latest known load information of the NF, percentage ";
- }
-
- typedef N1MessageClass {
- type enumeration {
- enum 5GMM {
- description
- "TODO";
- }
- enum SM {
- description
- "TODO";
- }
- enum LPP {
- description
- "TODO";
- }
- enum SMS {
- description
- "TODO";
- }
- }
- description
- "TODO";
- }
-
- typedef N2InformationClass {
- type enumeration {
- enum SM {
- description
- "TODO";
- }
- enum NRPPA {
- description
- "TODO";
- }
- enum PWS {
- description
- "TODO";
- }
- enum PWS_BCAL {
- description
- "TODO";
- }
- enum PWS_RF {
- description
- "TODO";
- }
- }
- description
- "TODO";
- reference
- "TODO";
- }
-
- typedef NsiId {
- type string;
- description
- "TODO";
- }
-
- typedef UeMobilityLevel {
- type enumeration {
- enum STATIONARY {
- description
- "TODO";
- }
- enum NOMADIC {
- description
- "TODO";
- }
- enum RESTRICTED_MOBILITY {
- description
- "TODO";
- }
- enum FULLY_MOBILITY {
- description
- "TODO";
- }
- }
- description
- "TODO";
- reference
- "TODO";
- }
-
- typedef ResourceSharingLevel {
- type enumeration {
- enum SHARED {
- description
- "TODO";
- }
- enum NOT_SHARED {
- description
- "TODO";
- }
- }
- description
- "TODO";
- reference
- "TODO";
- }
-
- typedef TxDirection {
- type enumeration {
- enum DL {
- description
- "TODO";
- }
- enum UL {
- description
- "TODO";
- }
- enum DL_AND_UL {
- description
- "TODO";
- }
- }
- description
- "TODO";
- reference
- "TODO";
- }
-
- typedef DistinguishedName { // TODO is this equivalent to TS 32.300 ?
- type string;
- description
- "Represents the international standard for the representation
- of Distinguished Name (RFC 4512).
- The format of the DistinguishedName REGEX is:
- {AttributeType = AttributeValue}
-
- AttributeType consists of alphanumeric and hyphen (OIDs not allowed).
- All other characters are restricted.
- The Attribute value cannot contain control characters or the
- following characters : > < ; " + , (Comma) and White space
- The Attribute value can contain the following characters if they
- are excaped : > < ; " + , (Comma) and White space
- The Attribute value can contain control characters if its an escaped
- double digit hex number.
- Examples could be
- UID=nobody@example.com,DC=example,DC=com
- CN=John Smith,OU=Sales,O=ACME Limited,L=Moab,ST=Utah,C=US";
- reference
- "RFC 4512 Lightweight Directory Access Protocol (LDAP):
- Directory Information Models";
- } // recheck regexp it doesn''''t handle posix [:cntrl:]
-
- typedef QOffsetRange {
- type int8;
- units "dB";
- description
- "TODO";
- reference
- "TODO";
- }
-
- typedef QuotaType {
- type enumeration {
- enum STRICT {
- description
- "TODO";
- }
- enum FLOAT {
- description
- "TODO";
- }
- }
- description
- "TODO";
- }
-
- typedef CyclicPrefix {
- type enumeration {
- enum NORMAL {
- description
- "TODO";
- }
- enum EXTENDED {
- description
- "TODO";
- }
- }
- description
- "TODO";
- }
-
- grouping PLMNInfo {
- description
- "The PLMNInfo data type define a S-NSSAI member in a specific PLMNId, and it have
- two attributes PLMNId and S-NSSAI (PLMNId, S-NSSAI). The PLMNId represents a data type that
- is comprised of mcc (mobile country code) and mnc (mobile network code), (See TS 23.003
- subclause 2.2 and 12.1) and S-NSSAI represents an data type, that is comprised of an SST
- (Slice/Service type) and an optional SD (Slice Differentiator) field, (See TS 23.003 [13]).";
- uses PLMNId;
- list sNSSAIList {
- key "sNssai";
- uses sNSSAIConfig;
- description "List of sNSSAIs";
- }
- }
-
- grouping ManagedNFProfile {
- description
- "Defines profile for managed NF";
- reference
- "3GPP TS 23.501";
- leaf idx {
- type uint32;
- description
- "TODO";
- reference
- "3GPP TS 23.501";
- }
- leaf nfInstanceID {
- type yang:uuid;
- config false;
- mandatory false;
- description
- "This parameter defines profile for managed NF.
- The format of the NF Instance ID shall be a
- Universally Unique Identifier (UUID) version 4,
- as described in IETF RFC 4122 ";
- }
- leaf-list nfType {
- type NfType;
- config false;
- min-elements 1;
- description
- "Type of the Network Function";
- }
- leaf hostAddr {
- type inet:host;
- mandatory false;
- description
- "Host address of a NF";
- }
- leaf authzInfo {
- type string;
- description
- "This parameter defines NF Specific Service authorization
- information. It shall include the NF type (s) and NF realms/origins
- allowed to consume NF Service(s) of NF Service Producer.";
- reference
- "See TS 23.501";
- }
- leaf location {
- type string;
- description
- "Information about the location of the NF instance
- (e.g. geographic location, data center) defined by operator";
- reference
- "TS 29.510";
- }
- leaf capacity {
- type uint16;
- mandatory false;
- description
- "This parameter defines static capacity information
- in the range of 0-65535, expressed as a weight relative to other
- NF instances of the same type; if capacity is also present in the
- nfServiceList parameters, those will have precedence over this value.";
- reference
- "TS 29.510";
- }
- leaf nFSrvGroupId {
- type string;
- description
- "This parameter defines identity of the group that is
- served by the NF instance.
- May be config false or true depending on the ManagedFunction.
- Config=true for Udrinfo. Config=false for UdmInfo and AusfInfo.
- Shall be present if ../nfType = UDM or AUSF or UDR. ";
- reference
- "TS 29.510";
- }
- leaf-list supportedDataSetIds {
- type enumeration {
- enum SUBSCRIPTION {
- description
- "TODO";
- }
- enum POLICY {
- description
- "TODO";
- }
- enum EXPOSURE {
- description
- "TODO";
- }
- enum APPLICATION {
- description
- "TODO";
- }
- }
- description
- "List of supported data sets in the UDR instance.
- May be present if ../nfType = UDR";
- reference
- "TS 29.510";
- }
- leaf-list smfServingAreas {
- type string;
- description
- "Defines the SMF service area(s) the UPF can serve.
- Shall be present if ../nfType = UPF";
- reference
- "TS 29.510";
- }
- leaf priority {
- type uint16;
- description
- "This parameter defines Priority (relative to other NFs
- of the same type) in the range of 0-65535, to be used for NF selection;
- lower values indicate a higher priority. If priority is also present
- in the nfServiceList parameters, those will have precedence over
- this value. Shall be present if ../nfType = AMF ";
- reference
- "TS 29.510";
- }
- }
-
-
- grouping PLMNId {
- description
- "TODO";
- reference
- "TS 23.658";
- leaf mcc {
- type Mcc;
- mandatory true;
- description
- "TODO";
- }
- leaf mnc {
- type Mnc;
- mandatory true;
- description
- "TODO";
- }
- }
-
- grouping AmfIdentifier {
- description
- "The AMFI is constructed from an AMF Region ID,
- an AMF Set ID and an AMF Pointer.
- The AMF Region ID identifies the region,
- the AMF Set ID uniquely identifies the AMF Set within the AMF Region, and
- the AMF Pointer uniquely identifies the AMF within the AMF Set. ";
- leaf amfRegionId {
- type AmfRegionId;
- description
- "TODO";
- }
- leaf amfSetId {
- type AmfSetId;
- description
- "TODO";
- }
- leaf amfPointer {
- type AmfPointer;
- description
- "TODO";
- }
- }
-
- grouping DefaultNotificationSubscription {
- description
- "TODO";
- leaf notificationType {
- type NotificationType;
- description
- "TODO";
- }
- leaf callbackUri {
- type inet:uri;
- description
- "TODO";
- }
- leaf n1MessageClass {
- type N1MessageClass;
- description
- "TODO";
- }
- leaf n2InformationClass {
- type N2InformationClass;
- description
- "TODO";
- }
- }
-
- grouping Ipv4AddressRange {
- description
- "TODO";
- leaf start {
- type inet:ipv4-address;
- description
- "TODO";
- }
- leaf end {
- type inet:ipv4-address;
- description
- "TODO";
- }
- }
-
- grouping Ipv6PrefixRange {
- description
- "TODO";
- leaf start {
- type inet:ipv6-prefix;
- description
- "TODO";
- }
- leaf end {
- type inet:ipv6-prefix;
- description
- "TODO";
- }
- }
-
- grouping AddressWithVlan {
- description
- "TODO";
- leaf ipAddress {
- type inet:ip-address;
- description
- "TODO";
- }
- leaf vlanId {
- type uint16;
- description
- "TODO";
- }
- }
-
- grouping ManagedElementGroup {
- description
- "Abstract class representing telecommunications resources.";
- leaf dnPrefix {
- type DistinguishedName;
- description
- "Provides naming context and splits the DN into a DN Prefix and Local DN";
- }
- leaf userLabel {
- type string;
- description
- "A user-friendly name of this object.";
- }
- leaf locationName {
- type string;
- config false;
- description
- "The physical location (e.g. an address) of an entity";
- }
- leaf-list managedBy {
- type DistinguishedName;
- config false;
- description
- "Relates to the role played by ManagementSystem";
- }
- leaf-list managedElementTypeList {
- type string;
- config false;
- min-elements 1;
- description
- "The type of functionality provided by the ManagedElement.
- It may represent one ME functionality or a combination of
- Two examples of allowed values are:
- - NodeB;
- - HLR, VLR.";
- }
- } // Managed Element grouping
-
- grouping NearRTRICGroup {
- description
- "Abstract class representing Near RT RIC.";
- leaf dnPrefix {
- type DistinguishedName;
- description
- "Provides naming context and splits the DN into a DN Prefix and Local DN";
- }
- leaf userLabel {
- type string;
- description
- "A user-friendly name of this object.";
- }
- leaf locationName {
- type string;
- config false;
- description
- "The physical location (e.g. an address) of an entity";
- }
- leaf gNBId {
- type int64 { range "0..4294967295"; }
- config false;
- description "Identifies a gNB within a PLMN. The gNB Identifier (gNB ID)
- is part of the NR Cell Identifier (NCI) of the gNB cells.";
- reference "gNB ID in 3GPP TS 38.300, Global gNB ID in 3GPP TS 38.413";
- }
-
- list pLMNInfoList {
- uses PLMNInfo;
- key "mcc mnc";
- description "The PLMNInfoList is a list of PLMNInfo data type. It defines which PLMNs that can be served by the nearRTRIC.";
- }
- list RRMPolicyRatio {
- key id;
- leaf id {
- type string;
- description
- "Key leaf";
- }
- container attributes {
- uses RRMPolicyRatioGroup;
- }
- description " The RRMPolicyRatio IOC is one realization of a RRMPolicy_ IOC, see the
- inheritance in Figure 4.2.1.2-1. This RRM framework allows adding new policies, both
- standardized (like RRMPolicyRatio) or as vendor specific, by inheriting from the
- abstract RRMPolicy_ IOC. For details see subclause 4.3.36.";
- }
-
- } // Near RT RIC grouping
-
-
-
- grouping Configuration{
- leaf configParameter{
- type string;
- description "Type of the configuration parameter";
- }
- leaf configValue{
- type int64;
- description "Identifies the configuration to be done for the network elements under the NearRTRIC";
-
- }
- }
-
-
- grouping GNBDUFunctionGroup {
- description
- "Represents the GNBDUFunction IOC.";
- reference
- "3GPP TS 28.541";
-
- leaf gNBId {
- type int64 {
- range "0..4294967295";
- }
- config false;
- mandatory false;
- description
- "Identifies a gNB within a PLMN. The gNB Identifier (gNB ID)
- is part of the NR Cell Identifier (NCI) of the gNB cells.";
- reference
- "gNB ID in 3GPP TS 38.300, Global gNB ID in 3GPP TS 38.413";
- }
- leaf gNBIdLength {
- type int32 {
- range "22..32";
- }
- mandatory false;
- description
- "Indicates the number of bits for encoding the gNB ID.";
- reference
- "gNB ID in 3GPP TS 38.300, Global gNB ID in 3GPP TS 38.413";
- }
- leaf gNBDUId {
- type int64 {
- range "0..68719476735";
- }
- mandatory false;
- description
- "Uniquely identifies the DU at least within a gNB.";
- reference
- "3GPP TS 38.473";
- }
- leaf gNBDUName {
- type string {
- length "1..150";
- }
- description
- "Identifies the Distributed Unit of an NR node";
- reference
- "3GPP TS 38.473";
- }
- list RRMPolicyRatio {
- key id;
- leaf id {
- type string;
- description
- "Key leaf";
- }
- container attributes {
- uses RRMPolicyRatioGroup;
- }
- description " The RRMPolicyRatio IOC is one realization of a RRMPolicy_ IOC, see the
- inheritance in Figure 4.2.1.2-1. This RRM framework allows adding new policies, both
- standardized (like RRMPolicyRatio) or as vendor specific, by inheriting from the
- abstract RRMPolicy_ IOC. For details see subclause 4.3.36.";
- }
- }
-
- grouping NRCellDUGroup {
- description
- "Represents the NRCellDU IOC.";
- reference
- "3GPP TS 28.541";
- list RRMPolicyRatio {
- key id;
- leaf id {
- type string;
- description
- "Key leaf";
- }
- container attributes {
- uses RRMPolicyRatioGroup;
- }
- description " The RRMPolicyRatio IOC is one realization of a RRMPolicy_ IOC, see the
- inheritance in Figure 4.2.1.2-1. This RRM framework allows adding new policies, both
- standardized (like RRMPolicyRatio) or as vendor specific, by inheriting from the
- abstract RRMPolicy_ IOC. For details see subclause 4.3.36.";
- }
- leaf cellLocalId {
- type int32 {
- range "0..16383";
- }
- mandatory false;
- description
- "Identifies an NR cell of a gNB. Together with the
- corresponding gNB identifier in forms the NR Cell Identity (NCI).";
- reference
- "NCI in 3GPP TS 38.300";
- }
- list pLMNInfoList {
- key "mcc mnc";
- min-elements 1;
- description
- "The PLMNInfoList is a list of PLMNInfo data type. It defines which PLMNs that
- can be served by the NR cell, and which S-NSSAIs that can be supported by the NR cell for
- corresponding PLMN in case of network slicing feature is supported. The plMNId of the first
- entry of the list is the PLMNId used to construct the nCGI for the NR cell.";
- uses PLMNInfo;
- }
- leaf nRPCI {
- type int32 {
- range "0..1007";
- }
- mandatory false;
- description
- "The Physical Cell Identity (PCI) of the NR cell.";
- reference
- "3GPP TS 36.211";
- }
- leaf nRTAC {
- type Tac;
- description
- "The common 5GS Tracking Area Code for the PLMNs.";
- reference
- "3GPP TS 23.003, 3GPP TS 38.473";
- }
- } // grouping
-
- grouping rRMPolicyMemberGroup {
- description
- "TODO";
- uses PLMNId;
- leaf sNSSAI {
- type SNssai;
- description
- "This data type represents an RRM Policy member that will be part of a
- rRMPolicyMemberList. A RRMPolicyMember is defined by its pLMNId and sNSSAI (S-NSSAI).
- The members in a rRMPolicyMemberList are assigned a specific amount of RRM resources
- based on settings in RRMPolicy.";
- }
- }
-
- grouping RRMPolicyRatioGroup {
-
- uses RRMPolicy_Group; // Inherits RRMPolicy_
-
- leaf quotaType {
- type QuotaType;
- mandatory false;
- description "The type of the quota which allows to allocate resources as
- strictly usable for defined slice(s) (strict quota) or allows that
- resources to be used by other slice(s) when defined slice(s) do not
- need them (float quota).";
- }
-
- leaf rRMPolicyMaxRatio {
- type uint8;
- mandatory false;
- units percent;
- description "The RRM policy setting the maximum percentage of radio
- resources to be allocated to the corresponding S-NSSAI list. This
- quota can be strict or float quota. Strict quota means resources are
- not allowed for other sNSSAIs even when they are not used by the
- defined sNSSAIList. Float quota resources can be used by other sNSSAIs
- when the defined sNSSAIList do not need them. Value 0 indicates that
- there is no maximum limit.";
- }
-
- leaf rRMPolicyMinRatio {
- type uint8;
- mandatory false;
- units percent;
- description "The RRM policy setting the minimum percentage of radio
- resources to be allocated to the corresponding S-NSSAI list. This
- quota can be strict or float quota. Strict quota means resources are
- not allowed for other sNSSAIs even when they are not used by the
- defined sNSSAIList. Float quota resources can be used by other sNSSAIs
- when the defined sNSSAIList do not need them. Value 0 indicates that
- there is no minimum limit.";
- }
- leaf rRMPolicyDedicatedRatio {
- type uint8;
- units percent;
- description "Dedicated Ration.";
- }
- description "Represents the RRMPolicyRatio concrete IOC.";
- }
-
-
- grouping sNSSAIConfig{
- leaf sNssai {
- type string;
- description "s-NSSAI of a network slice.";
- reference "3GPP TS 23.003";
- }
- leaf status {
- type string;
- description "status of s-NSSAI";
- }
- list configData{
- uses Configuration;
- key "configParameter";
- description "List of configurations to be done at the network elements";
- }
- }
-
- grouping RRMPolicy_Group {
- description
- "This IOC represents the properties of an abstract RRMPolicy. The RRMPolicy_ IOC
- needs to be subclassed to be instantiated. It defines two attributes apart from those
- inherited from Top IOC, the resourceType attribute defines type of resource (PRB, RRC
- connected users, DRB usage etc.) and the rRMPolicyMemberList attribute defines the
- RRMPolicyMember(s)that are subject to this policy. An RRM resource (defined in resourceType
- attribute) is located in NRCellDU, NRCellCU, GNBDUFunction, GNBCUCPFunction or in
- GNBCUUPFunction. The RRMPolicyRatio IOC is one realization of a RRMPolicy_ IOC, see the
- inheritance in TS 28.541 Figure 4.2.1.2-1. This RRM framework allows adding new policies,
- both standardized (like RRMPolicyRatio) or as vendor specific, by inheriting from the
- abstract RRMPolicy_ IOC.";
- leaf resourceType {
- type string;
- mandatory false;
- description
- "The resourceType attribute defines type of resource (PRB, RRC connected users,
- DRB usage etc.) that is subject to policy. Valid values are ''''PRB'''', ''''RRC'''' or ''''DRB''''";
- }
- list rRMPolicyMemberList {
- key "idx";
- leaf idx {
- type uint32;
- description
- "TODO";
- }
- description
- "It represents the list of RRMPolicyMember (s) that the managed object
- is supporting. A RRMPolicyMember <<dataType>> include the PLMNId <<dataType>>
- and S-NSSAI <<dataType>>.";
- uses rRMPolicyMemberGroup;
- }
- } // grouping
-
- grouping GNBCUUPFunctionGroup {
- description
- "Represents the GNBCUUPFunction IOC.";
- reference
- "3GPP TS 28.541";
-
- list RRMPolicyRatio {
- key id;
- leaf id {
- type string;
- description
- "Key leaf";
- }
- container attributes {
- uses RRMPolicyRatioGroup;
- }
- description " The RRMPolicyRatio IOC is one realization of a RRMPolicy_ IOC, see the
- inheritance in Figure 4.2.1.2-1. This RRM framework allows adding new policies, both
- standardized (like RRMPolicyRatio) or as vendor specific, by inheriting from the
- abstract RRMPolicy_ IOC. For details see subclause 4.3.36.";
- }
- leaf gNBCUUPId {
- type uint64 {
- range "0..68719476735";
- }
- config false;
- mandatory false;
- description
- "Identifies the gNB-CU-UP at least within a gNB-CU-CP";
- reference
- "''''gNB-CU-UP ID'''' in subclause 9.3.1.15 of 3GPP TS 38.463";
- }
- leaf gNBId {
- type int64 {
- range "0..4294967295";
- }
- mandatory false;
- description
- "Indicates the number of bits for encoding the gNB Id.";
- reference
- "gNB Id in 3GPP TS 38.300, Global gNB ID in 3GPP TS 38.413";
- }
- list pLMNInfoList {
- key "mcc mnc";
- description
- "The PLMNInfoList is a list of PLMNInfo data type. It defines which PLMNs that
- can be served by the GNBCUUPFunction and which S-NSSAIs can be supported by the
- GNBCUUPFunction for corresponding PLMN in case of network slicing feature is supported";
- uses PLMNInfo;
- }
- } // grouping
-
- grouping GNBCUCPFunctionGroup {
- description
- "Represents the GNBCUCPFunction IOC.";
- reference
- "3GPP TS 28.541";
- list RRMPolicyRatio {
- key id;
- leaf id {
- type string;
- description
- "Key leaf";
- }
- container attributes {
- uses RRMPolicyRatioGroup;
- }
- description " The RRMPolicyRatio IOC is one realization of a RRMPolicy_ IOC, see the
- inheritance in Figure 4.2.1.2-1. This RRM framework allows adding new policies, both
- standardized (like RRMPolicyRatio) or as vendor specific, by inheriting from the
- abstract RRMPolicy_ IOC. For details see subclause 4.3.36.";
- }
- leaf gNBId {
- type int64 {
- range "0..4294967295";
- }
- mandatory false;
- description
- "Identifies a gNB within a PLMN. The gNB Identifier (gNB ID)
- is part of the NR Cell Identifier (NCI) of the gNB cells.";
- reference
- "gNB ID in 3GPP TS 38.300, Global gNB ID in 3GPP TS 38.413";
- }
- leaf gNBIdLength {
- type int32 {
- range "22..32";
- }
- mandatory false;
- description
- "Indicates the number of bits for encoding the gNB ID.";
- reference
- "gNB ID in 3GPP TS 38.300, Global gNB ID in 3GPP TS 38.413";
- }
- leaf gNBCUName {
- type string {
- length "1..150";
- }
- mandatory false;
- description
- "Identifies the Central Unit of an gNB.";
- reference
- "3GPP TS 38.473";
- }
- list pLMNId {
- key "mcc mnc";
- min-elements 1;
- max-elements 1;
- description
- "The PLMN identifier to be used as part of the global RAN
- node identity.";
- uses PLMNId;
- }
- } // grouping
-
- grouping NRCellCUGroup {
- description
- "Represents the NRCellCU IOC.";
- reference
- "3GPP TS 28.541";
- leaf cellLocalId {
- type int32 {
- range "0..16383";
- }
- mandatory false;
- description
- "Identifies an NR cell of a gNB. Together with corresponding
- gNB ID it forms the NR Cell Identifier (NCI).";
- }
- list pLMNInfoList {
- key "mcc mnc";
- min-elements 1;
- description
- "The PLMNInfoList is a list of PLMNInfo data type. It defines which PLMNs
- that can be served by the NR cell, and which S-NSSAIs that can be supported by the
- NR cell for corresponding PLMN in case of network slicing feature is supported.";
- uses PLMNInfo;
- // Note: Whether the attribute pLMNId in the pLMNInfo can be writable depends on the implementation.
- }
- list RRMPolicyRatio {
- key id;
- leaf id {
- type string;
- description
- "Key leaf";
- }
- container attributes {
- uses RRMPolicyRatioGroup;
- }
- description " The RRMPolicyRatio IOC is one realization of a RRMPolicy_ IOC, see the
- inheritance in Figure 4.2.1.2-1. This RRM framework allows adding new policies, both
- standardized (like RRMPolicyRatio) or as vendor specific, by inheriting from the
- abstract RRMPolicy_ IOC. For details see subclause 4.3.36.";
- }
- } // grouping NRCellCUGroup
-
- grouping NRCellRelationGroup {
- description
- "Represents the NRCellRelation IOC.";
- reference
- "3GPP TS 28.541";
- leaf nRTCI {
- type uint64;
- description
- "Target NR Cell Identifier. It consists of NR Cell
- Identifier (NCI) and Physical Cell Identifier of the target NR cell
- (nRPCI).";
- '
-where name = 'cps-ran-schema-model@2021-01-28.yang'
-and checksum = 'a825c571c4a1d585a7f09a3716dedbfab1146abc4725b75a16f9ac89440bf46b';
diff --git a/cps-ri/src/main/resources/changelog/db/changes/08-update-yang-resources-ietf-inet-types-forward.sql b/cps-ri/src/main/resources/changelog/db/changes/08-update-yang-resources-ietf-inet-types-forward.sql
deleted file mode 100644
index dfab942a8..000000000
--- a/cps-ri/src/main/resources/changelog/db/changes/08-update-yang-resources-ietf-inet-types-forward.sql
+++ /dev/null
@@ -1,462 +0,0 @@
-update yang_resource set
-checksum = '64e7b04e6126acc3f598f68677aa487502c6e0682d2732c817669becdfb099ba',
-content = 'module ietf-inet-types {
-
- namespace "urn:ietf:params:xml:ns:yang:ietf-inet-types";
- prefix "inet";
-
- organization
- "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
-
- contact
- "WG Web: <http://tools.ietf.org/wg/netmod/>
- WG List: <mailto:netmod@ietf.org>
-
- WG Chair: David Kessens
- <mailto:david.kessens@nsn.com>
-
- WG Chair: Juergen Schoenwaelder
- <mailto:j.schoenwaelder@jacobs-university.de>
-
- Editor: Juergen Schoenwaelder
- <mailto:j.schoenwaelder@jacobs-university.de>";
-
- description
- "This module contains a collection of generally useful derived
- YANG data types for Internet addresses and related things.
-
- Copyright (c) 2013 IETF Trust and the persons identified as
- authors of the code. All rights reserved.
-
- Redistribution and use in source and binary forms, with or
- without modification, is permitted pursuant to, and subject
- to the license terms contained in, the Simplified BSD License
- set forth in Section 4.c of the IETF Trust''s Legal Provisions
- Relating to IETF Documents
- (http://trustee.ietf.org/license-info).
-
- This version of this YANG module is part of RFC 6991; see
- the RFC itself for full legal notices.";
-
- revision 2013-07-15 {
- description
- "This revision adds the following new data types:
- - ip-address-no-zone
- - ipv4-address-no-zone
- - ipv6-address-no-zone";
- reference
- "RFC 6991: Common YANG Data Types";
- }
-
- revision 2010-09-24 {
- description
- "Initial revision.";
- reference
- "RFC 6021: Common YANG Data Types";
- }
-
- /*** collection of types related to protocol fields ***/
-
- typedef ip-version {
- type enumeration {
- enum unknown {
- value "0";
- description
- "An unknown or unspecified version of the Internet
- protocol.";
- }
- enum ipv4 {
- value "1";
- description
- "The IPv4 protocol as defined in RFC 791.";
- }
- enum ipv6 {
- value "2";
- description
- "The IPv6 protocol as defined in RFC 2460.";
- }
- }
- description
- "This value represents the version of the IP protocol.
-
- In the value set and its semantics, this type is equivalent
- to the InetVersion textual convention of the SMIv2.";
- reference
- "RFC 791: Internet Protocol
- RFC 2460: Internet Protocol, Version 6 (IPv6) Specification
- RFC 4001: Textual Conventions for Internet Network Addresses";
- }
-
- typedef dscp {
- type uint8 {
- range "0..63";
- }
- description
- "The dscp type represents a Differentiated Services Code Point
- that may be used for marking packets in a traffic stream.
- In the value set and its semantics, this type is equivalent
- to the Dscp textual convention of the SMIv2.";
- reference
- "RFC 3289: Management Information Base for the Differentiated
- Services Architecture
- RFC 2474: Definition of the Differentiated Services Field
- (DS Field) in the IPv4 and IPv6 Headers
- RFC 2780: IANA Allocation Guidelines For Values In
- the Internet Protocol and Related Headers";
- }
-
- typedef ipv6-flow-label {
- type uint32 {
- range "0..1048575";
- }
- description
- "The ipv6-flow-label type represents the flow identifier or Flow
- Label in an IPv6 packet header that may be used to
- discriminate traffic flows.
-
- In the value set and its semantics, this type is equivalent
- to the IPv6FlowLabel textual convention of the SMIv2.";
- reference
- "RFC 3595: Textual Conventions for IPv6 Flow Label
- RFC 2460: Internet Protocol, Version 6 (IPv6) Specification";
- }
-
- typedef port-number {
- type uint16 {
- range "0..65535";
- }
- description
- "The port-number type represents a 16-bit port number of an
- Internet transport-layer protocol such as UDP, TCP, DCCP, or
- SCTP. Port numbers are assigned by IANA. A current list of
- all assignments is available from <http://www.iana.org/>.
-
- Note that the port number value zero is reserved by IANA. In
- situations where the value zero does not make sense, it can
- be excluded by subtyping the port-number type.
- In the value set and its semantics, this type is equivalent
- to the InetPortNumber textual convention of the SMIv2.";
- reference
- "RFC 768: User Datagram Protocol
- RFC 793: Transmission Control Protocol
- RFC 4960: Stream Control Transmission Protocol
- RFC 4340: Datagram Congestion Control Protocol (DCCP)
- RFC 4001: Textual Conventions for Internet Network Addresses";
- }
-
- /*** collection of types related to autonomous systems ***/
-
- typedef as-number {
- type uint32;
- description
- "The as-number type represents autonomous system numbers
- which identify an Autonomous System (AS). An AS is a set
- of routers under a single technical administration, using
- an interior gateway protocol and common metrics to route
- packets within the AS, and using an exterior gateway
- protocol to route packets to other ASes. IANA maintains
- the AS number space and has delegated large parts to the
- regional registries.
-
- Autonomous system numbers were originally limited to 16
- bits. BGP extensions have enlarged the autonomous system
- number space to 32 bits. This type therefore uses an uint32
- base type without a range restriction in order to support
- a larger autonomous system number space.
-
- In the value set and its semantics, this type is equivalent
- to the InetAutonomousSystemNumber textual convention of
- the SMIv2.";
- reference
- "RFC 1930: Guidelines for creation, selection, and registration
- of an Autonomous System (AS)
- RFC 4271: A Border Gateway Protocol 4 (BGP-4)
- RFC 4001: Textual Conventions for Internet Network Addresses
- RFC 6793: BGP Support for Four-Octet Autonomous System (AS)
- Number Space";
- }
-
- /*** collection of types related to IP addresses and hostnames ***/
-
- typedef ip-address {
- type union {
- type inet:ipv4-address;
- type inet:ipv6-address;
- }
- description
- "The ip-address type represents an IP address and is IP
- version neutral. The format of the textual representation
- implies the IP version. This type supports scoped addresses
- by allowing zone identifiers in the address format.";
- reference
- "RFC 4007: IPv6 Scoped Address Architecture";
- }
-
- typedef ipv4-address {
- type string {
- pattern
- ''(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]).){3}''
- + ''([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])''
- + ''(%[p{N}p{L}]+)?'';
- }
- description
- "The ipv4-address type represents an IPv4 address in
- dotted-quad notation. The IPv4 address may include a zone
- index, separated by a % sign.
-
- The zone index is used to disambiguate identical address
- values. For link-local addresses, the zone index will
- typically be the interface index number or the name of an
- interface. If the zone index is not present, the default
- zone of the device will be used.
-
- The canonical format for the zone index is the numerical
- format";
- }
-
- typedef ipv6-address {
- type string {
- pattern ''((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}''
- + ''((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|''
- + ''(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9]).){3}''
- + ''(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))''
- + ''(%[p{N}p{L}]+)?'';
- pattern ''(([^:]+:){6}(([^:]+:[^:]+)|(.*..*)))|''
- + ''((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)''
- + ''(%.+)?'';
- }
- description
- "The ipv6-address type represents an IPv6 address in full,
- mixed, shortened, and shortened-mixed notation. The IPv6
- address may include a zone index, separated by a % sign.
-
- The zone index is used to disambiguate identical address
- values. For link-local addresses, the zone index will
- typically be the interface index number or the name of an
- interface. If the zone index is not present, the default
- zone of the device will be used.
-
- The canonical format of IPv6 addresses uses the textual
- representation defined in Section 4 of RFC 5952. The
- canonical format for the zone index is the numerical
- format as described in Section 11.2 of RFC 4007.";
- reference
- "RFC 4291: IP Version 6 Addressing Architecture
- RFC 4007: IPv6 Scoped Address Architecture
- RFC 5952: A Recommendation for IPv6 Address Text
- Representation";
- }
-
- typedef ip-address-no-zone {
- type union {
- type inet:ipv4-address-no-zone;
- type inet:ipv6-address-no-zone;
- }
- description
- "The ip-address-no-zone type represents an IP address and is
- IP version neutral. The format of the textual representation
- implies the IP version. This type does not support scoped
- addresses since it does not allow zone identifiers in the
- address format.";
- reference
- "RFC 4007: IPv6 Scoped Address Architecture";
- }
-
- typedef ipv4-address-no-zone {
- type inet:ipv4-address {
- pattern ''[0-9.]*'';
- }
- description
- "An IPv4 address without a zone index. This type, derived from
- ipv4-address, may be used in situations where the zone is
- known from the context and hence no zone index is needed.";
- }
-
- typedef ipv6-address-no-zone {
- type inet:ipv6-address {
- pattern ''[0-9a-fA-F:.]*'';
- }
- description
- "An IPv6 address without a zone index. This type, derived from
- ipv6-address, may be used in situations where the zone is
- known from the context and hence no zone index is needed.";
- reference
- "RFC 4291: IP Version 6 Addressing Architecture
- RFC 4007: IPv6 Scoped Address Architecture
- RFC 5952: A Recommendation for IPv6 Address Text
- Representation";
- }
-
- typedef ip-prefix {
- type union {
- type inet:ipv4-prefix;
- type inet:ipv6-prefix;
- }
- description
- "The ip-prefix type represents an IP prefix and is IP
- version neutral. The format of the textual representations
- implies the IP version.";
- }
-
- typedef ipv4-prefix {
- type string {
- pattern
- ''(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]).){3}''
- + ''([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])''
- + ''/(([0-9])|([1-2][0-9])|(3[0-2]))'';
- }
- description
- "The ipv4-prefix type represents an IPv4 address prefix.
- The prefix length is given by the number following the
- slash character and must be less than or equal to 32.
-
- A prefix length value of n corresponds to an IP address
- mask that has n contiguous 1-bits from the most
- significant bit (MSB) and all other bits set to 0.
-
- The canonical format of an IPv4 prefix has all bits of
- the IPv4 address set to zero that are not part of the
- IPv4 prefix.";
- }
-
- typedef ipv6-prefix {
- type string {
- pattern ''((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}''
- + ''((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|''
- + ''(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9]).){3}''
- + ''(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))''
- + ''(/(([0-9])|([0-9]{2})|(1[0-1][0-9])|(12[0-8])))'';
- pattern ''(([^:]+:){6}(([^:]+:[^:]+)|(.*..*)))|''
- + ''((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)''
- + ''(/.+)'';
- }
- description
- "The ipv6-prefix type represents an IPv6 address prefix.
- The prefix length is given by the number following the
- slash character and must be less than or equal to 128.
-
- A prefix length value of n corresponds to an IP address
- mask that has n contiguous 1-bits from the most
- significant bit (MSB) and all other bits set to 0.
-
- The IPv6 address should have all bits that do not belong
- to the prefix set to zero.
-
- The canonical format of an IPv6 prefix has all bits of
- the IPv6 address set to zero that are not part of the
- IPv6 prefix. Furthermore, the IPv6 address is represented
- as defined in Section 4 of RFC 5952.";
- reference
- "RFC 5952: A Recommendation for IPv6 Address Text
- Representation";
- }
-
- /*** collection of domain name and URI types ***/
-
- typedef domain-name {
- type string {
- length "1..253";
- pattern
- ''((([a-zA-Z0-9_]([a-zA-Z0-9-_]){0,61})?[a-zA-Z0-9].)*''
- + ''([a-zA-Z0-9_]([a-zA-Z0-9-_]){0,61})?[a-zA-Z0-9].?)''
- + ''|.'';
- }
- description
- "The domain-name type represents a DNS domain name. The
- name SHOULD be fully qualified whenever possible.
-
- Internet domain names are only loosely specified. Section
- 3.5 of RFC 1034 recommends a syntax (modified in Section
- 2.1 of RFC 1123). The pattern above is intended to allow
- for current practice in domain name use, and some possible
- future expansion. It is designed to hold various types of
- domain names, including names used for A or AAAA records
- (host names) and other records, such as SRV records. Note
- that Internet host names have a stricter syntax (described
- in RFC 952) than the DNS recommendations in RFCs 1034 and
- 1123, and that systems that want to store host names in
- schema nodes using the domain-name type are recommended to
- adhere to this stricter standard to ensure interoperability.
-
- The encoding of DNS names in the DNS protocol is limited
- to 255 characters. Since the encoding consists of labels
- prefixed by a length bytes and there is a trailing NULL
- byte, only 253 characters can appear in the textual dotted
- notation.
-
- The description clause of schema nodes using the domain-name
- type MUST describe when and how these names are resolved to
- IP addresses. Note that the resolution of a domain-name value
- may require to query multiple DNS records (e.g., A for IPv4
- and AAAA for IPv6). The order of the resolution process and
- which DNS record takes precedence can either be defined
- explicitly or may depend on the configuration of the
- resolver.
-
- Domain-name values use the US-ASCII encoding. Their canonical
- format uses lowercase US-ASCII characters. Internationalized
- domain names MUST be A-labels as per RFC 5890.";
- reference
- "RFC 952: DoD Internet Host Table Specification
- RFC 1034: Domain Names - Concepts and Facilities
- RFC 1123: Requirements for Internet Hosts -- Application
- and Support
- RFC 2782: A DNS RR for specifying the location of services
- (DNS SRV)
- RFC 5890: Internationalized Domain Names in Applications
- (IDNA): Definitions and Document Framework";
- }
-
- typedef host {
- type union {
- type inet:ip-address;
- type inet:domain-name;
- }
- description
- "The host type represents either an IP address or a DNS
- domain name.";
- }
-
- typedef uri {
- type string;
- description
- "The uri type represents a Uniform Resource Identifier
- (URI) as defined by STD 66.
-
- Objects using the uri type MUST be in US-ASCII encoding,
- and MUST be normalized as described by RFC 3986 Sections
- 6.2.1, 6.2.2.1, and 6.2.2.2. All unnecessary
- percent-encoding is removed, and all case-insensitive
- characters are set to lowercase except for hexadecimal
- digits, which are normalized to uppercase as described in
- Section 6.2.2.1.
-
- The purpose of this normalization is to help provide
- unique URIs. Note that this normalization is not
- sufficient to provide uniqueness. Two URIs that are
- textually distinct after this normalization may still be
- equivalent.
-
- Objects using the uri type may restrict the schemes that
- they permit. For example, ''data:'' and ''urn:'' schemes
- might not be appropriate.
-
- A zero-length URI is not a valid URI. This can be used to
- express ''URI absent'' where required.
-
- In the value set and its semantics, this type is equivalent
- to the Uri SMIv2 textual convention defined in RFC 5017.";
- reference
- "RFC 3986: Uniform Resource Identifier (URI): Generic Syntax
- RFC 3305: Report from the Joint W3C/IETF URI Planning Interest
- Group: Uniform Resource Identifiers (URIs), URLs,
- and Uniform Resource Names (URNs): Clarifications
- and Recommendations
- RFC 5017: MIB Textual Conventions for Uniform Resource
- Identifiers (URIs)";
- }
-
-}
-'
-where name = 'ietf-inet-types.yang'
-and checksum = '417a7b14944f6236ad0e2b1ef956158c050cff9b74e3561ca80af32d11be240b';
diff --git a/cps-ri/src/main/resources/changelog/db/changes/08-update-yang-resources-ietf-inet-types-rollback.sql b/cps-ri/src/main/resources/changelog/db/changes/08-update-yang-resources-ietf-inet-types-rollback.sql
deleted file mode 100644
index d67610a8e..000000000
--- a/cps-ri/src/main/resources/changelog/db/changes/08-update-yang-resources-ietf-inet-types-rollback.sql
+++ /dev/null
@@ -1,461 +0,0 @@
-update yang_resource set
-checksum = '417a7b14944f6236ad0e2b1ef956158c050cff9b74e3561ca80af32d11be240b',
-content = 'module ietf-inet-types {
-
- namespace "urn:ietf:params:xml:ns:yang:ietf-inet-types";
- prefix "inet";
-
- organization
- "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
-
- contact
- "WG Web: <http://tools.ietf.org/wg/netmod/>
- WG List: <mailto:netmod@ietf.org>
-
- WG Chair: David Kessens
- <mailto:david.kessens@nsn.com>
-
- WG Chair: Juergen Schoenwaelder
- <mailto:j.schoenwaelder@jacobs-university.de>
-
- Editor: Juergen Schoenwaelder
- <mailto:j.schoenwaelder@jacobs-university.de>";
-
- description
- "This module contains a collection of generally useful derived
- YANG data types for Internet addresses and related things.
-
- Copyright (c) 2013 IETF Trust and the persons identified as
- authors of the code. All rights reserved.
-
- Redistribution and use in source and binary forms, with or
- without modification, is permitted pursuant to, and subject
- to the license terms contained in, the Simplified BSD License
- set forth in Section 4.c of the IETF Trust''''s Legal Provisions
- Relating to IETF Documents
- (http://trustee.ietf.org/license-info).
-
- This version of this YANG module is part of RFC 6991; see
- the RFC itself for full legal notices.";
-
- revision 2013-07-15 {
- description
- "This revision adds the following new data types:
- - ip-address-no-zone
- - ipv4-address-no-zone
- - ipv6-address-no-zone";
- reference
- "RFC 6991: Common YANG Data Types";
- }
-
- revision 2010-09-24 {
- description
- "Initial revision.";
- reference
- "RFC 6021: Common YANG Data Types";
- }
-
- /*** collection of types related to protocol fields ***/
-
- typedef ip-version {
- type enumeration {
- enum unknown {
- value "0";
- description
- "An unknown or unspecified version of the Internet
- protocol.";
- }
- enum ipv4 {
- value "1";
- description
- "The IPv4 protocol as defined in RFC 791.";
- }
- enum ipv6 {
- value "2";
- description
- "The IPv6 protocol as defined in RFC 2460.";
- }
- }
- description
- "This value represents the version of the IP protocol.
-
- In the value set and its semantics, this type is equivalent
- to the InetVersion textual convention of the SMIv2.";
- reference
- "RFC 791: Internet Protocol
- RFC 2460: Internet Protocol, Version 6 (IPv6) Specification
- RFC 4001: Textual Conventions for Internet Network Addresses";
- }
-
- typedef dscp {
- type uint8 {
- range "0..63";
- }
- description
- "The dscp type represents a Differentiated Services Code Point
- that may be used for marking packets in a traffic stream.
- In the value set and its semantics, this type is equivalent
- to the Dscp textual convention of the SMIv2.";
- reference
- "RFC 3289: Management Information Base for the Differentiated
- Services Architecture
- RFC 2474: Definition of the Differentiated Services Field
- (DS Field) in the IPv4 and IPv6 Headers
- RFC 2780: IANA Allocation Guidelines For Values In
- the Internet Protocol and Related Headers";
- }
-
- typedef ipv6-flow-label {
- type uint32 {
- range "0..1048575";
- }
- description
- "The ipv6-flow-label type represents the flow identifier or Flow
- Label in an IPv6 packet header that may be used to
- discriminate traffic flows.
-
- In the value set and its semantics, this type is equivalent
- to the IPv6FlowLabel textual convention of the SMIv2.";
- reference
- "RFC 3595: Textual Conventions for IPv6 Flow Label
- RFC 2460: Internet Protocol, Version 6 (IPv6) Specification";
- }
-
- typedef port-number {
- type uint16 {
- range "0..65535";
- }
- description
- "The port-number type represents a 16-bit port number of an
- Internet transport-layer protocol such as UDP, TCP, DCCP, or
- SCTP. Port numbers are assigned by IANA. A current list of
- all assignments is available from <http://www.iana.org/>.
-
- Note that the port number value zero is reserved by IANA. In
- situations where the value zero does not make sense, it can
- be excluded by subtyping the port-number type.
- In the value set and its semantics, this type is equivalent
- to the InetPortNumber textual convention of the SMIv2.";
- reference
- "RFC 768: User Datagram Protocol
- RFC 793: Transmission Control Protocol
- RFC 4960: Stream Control Transmission Protocol
- RFC 4340: Datagram Congestion Control Protocol (DCCP)
- RFC 4001: Textual Conventions for Internet Network Addresses";
- }
-
- /*** collection of types related to autonomous systems ***/
-
- typedef as-number {
- type uint32;
- description
- "The as-number type represents autonomous system numbers
- which identify an Autonomous System (AS). An AS is a set
- of routers under a single technical administration, using
- an interior gateway protocol and common metrics to route
- packets within the AS, and using an exterior gateway
- protocol to route packets to other ASes. IANA maintains
- the AS number space and has delegated large parts to the
- regional registries.
-
- Autonomous system numbers were originally limited to 16
- bits. BGP extensions have enlarged the autonomous system
- number space to 32 bits. This type therefore uses an uint32
- base type without a range restriction in order to support
- a larger autonomous system number space.
-
- In the value set and its semantics, this type is equivalent
- to the InetAutonomousSystemNumber textual convention of
- the SMIv2.";
- reference
- "RFC 1930: Guidelines for creation, selection, and registration
- of an Autonomous System (AS)
- RFC 4271: A Border Gateway Protocol 4 (BGP-4)
- RFC 4001: Textual Conventions for Internet Network Addresses
- RFC 6793: BGP Support for Four-Octet Autonomous System (AS)
- Number Space";
- }
-
- /*** collection of types related to IP addresses and hostnames ***/
-
- typedef ip-address {
- type union {
- type inet:ipv4-address;
- type inet:ipv6-address;
- }
- description
- "The ip-address type represents an IP address and is IP
- version neutral. The format of the textual representation
- implies the IP version. This type supports scoped addresses
- by allowing zone identifiers in the address format.";
- reference
- "RFC 4007: IPv6 Scoped Address Architecture";
- }
-
- typedef ipv4-address {
- type string {
- pattern
- ''''(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]).){3}''''
- + ''''([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])''''
- + ''''(%[p{N}p{L}]+)?'''';
- }
- description
- "The ipv4-address type represents an IPv4 address in
- dotted-quad notation. The IPv4 address may include a zone
- index, separated by a % sign.
-
- The zone index is used to disambiguate identical address
- values. For link-local addresses, the zone index will
- typically be the interface index number or the name of an
- interface. If the zone index is not present, the default
- zone of the device will be used.
-
- The canonical format for the zone index is the numerical
- format";
- }
-
- typedef ipv6-address {
- type string {
- pattern ''''((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}''''
- + ''''((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|''''
- + ''''(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9]).){3}''''
- + ''''(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))''''
- + ''''(%[p{N}p{L}]+)?'''';
- pattern ''''(([^:]+:){6}(([^:]+:[^:]+)|(.*..*)))|''''
- + ''''((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)''''
- + ''''(%.+)?'''';
- }
- description
- "The ipv6-address type represents an IPv6 address in full,
- mixed, shortened, and shortened-mixed notation. The IPv6
- address may include a zone index, separated by a % sign.
-
- The zone index is used to disambiguate identical address
- values. For link-local addresses, the zone index will
- typically be the interface index number or the name of an
- interface. If the zone index is not present, the default
- zone of the device will be used.
-
- The canonical format of IPv6 addresses uses the textual
- representation defined in Section 4 of RFC 5952. The
- canonical format for the zone index is the numerical
- format as described in Section 11.2 of RFC 4007.";
- reference
- "RFC 4291: IP Version 6 Addressing Architecture
- RFC 4007: IPv6 Scoped Address Architecture
- RFC 5952: A Recommendation for IPv6 Address Text
- Representation";
- }
-
- typedef ip-address-no-zone {
- type union {
- type inet:ipv4-address-no-zone;
- type inet:ipv6-address-no-zone;
- }
- description
- "The ip-address-no-zone type represents an IP address and is
- IP version neutral. The format of the textual representation
- implies the IP version. This type does not support scoped
- addresses since it does not allow zone identifiers in the
- address format.";
- reference
- "RFC 4007: IPv6 Scoped Address Architecture";
- }
-
- typedef ipv4-address-no-zone {
- type inet:ipv4-address {
- pattern ''''[0-9.]*'''';
- }
- description
- "An IPv4 address without a zone index. This type, derived from
- ipv4-address, may be used in situations where the zone is
- known from the context and hence no zone index is needed.";
- }
-
- typedef ipv6-address-no-zone {
- type inet:ipv6-address {
- pattern ''''[0-9a-fA-F:.]*'''';
- }
- description
- "An IPv6 address without a zone index. This type, derived from
- ipv6-address, may be used in situations where the zone is
- known from the context and hence no zone index is needed.";
- reference
- "RFC 4291: IP Version 6 Addressing Architecture
- RFC 4007: IPv6 Scoped Address Architecture
- RFC 5952: A Recommendation for IPv6 Address Text
- Representation";
- }
-
- typedef ip-prefix {
- type union {
- type inet:ipv4-prefix;
- type inet:ipv6-prefix;
- }
- description
- "The ip-prefix type represents an IP prefix and is IP
- version neutral. The format of the textual representations
- implies the IP version.";
- }
-
- typedef ipv4-prefix {
- type string {
- pattern
- ''''(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]).){3}''''
- + ''''([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])''''
- + ''''/(([0-9])|([1-2][0-9])|(3[0-2]))'''';
- }
- description
- "The ipv4-prefix type represents an IPv4 address prefix.
- The prefix length is given by the number following the
- slash character and must be less than or equal to 32.
-
- A prefix length value of n corresponds to an IP address
- mask that has n contiguous 1-bits from the most
- significant bit (MSB) and all other bits set to 0.
-
- The canonical format of an IPv4 prefix has all bits of
- the IPv4 address set to zero that are not part of the
- IPv4 prefix.";
- }
-
- typedef ipv6-prefix {
- type string {
- pattern ''''((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}''''
- + ''''((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|''''
- + ''''(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9]).){3}''''
- + ''''(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))''''
- + ''''(/(([0-9])|([0-9]{2})|(1[0-1][0-9])|(12[0-8])))'''';
- pattern ''''(([^:]+:){6}(([^:]+:[^:]+)|(.*..*)))|''''
- + ''''((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)''''
- + ''''(/.+)'''';
- }
- description
- "The ipv6-prefix type represents an IPv6 address prefix.
- The prefix length is given by the number following the
- slash character and must be less than or equal to 128.
-
- A prefix length value of n corresponds to an IP address
- mask that has n contiguous 1-bits from the most
- significant bit (MSB) and all other bits set to 0.
-
- The IPv6 address should have all bits that do not belong
- to the prefix set to zero.
-
- The canonical format of an IPv6 prefix has all bits of
- the IPv6 address set to zero that are not part of the
- IPv6 prefix. Furthermore, the IPv6 address is represented
- as defined in Section 4 of RFC 5952.";
- reference
- "RFC 5952: A Recommendation for IPv6 Address Text
- Representation";
- }
-
- /*** collection of domain name and URI types ***/
-
- typedef domain-name {
- type string {
- length "1..253";
- pattern
- ''''((([a-zA-Z0-9_]([a-zA-Z0-9-_]){0,61})?[a-zA-Z0-9].)*''''
- + ''''([a-zA-Z0-9_]([a-zA-Z0-9-_]){0,61})?[a-zA-Z0-9].?)''''
- + ''''|.'''';
- }
- description
- "The domain-name type represents a DNS domain name. The
- name SHOULD be fully qualified whenever possible.
-
- Internet domain names are only loosely specified. Section
- 3.5 of RFC 1034 recommends a syntax (modified in Section
- 2.1 of RFC 1123). The pattern above is intended to allow
- for current practice in domain name use, and some possible
- future expansion. It is designed to hold various types of
- domain names, including names used for A or AAAA records
- (host names) and other records, such as SRV records. Note
- that Internet host names have a stricter syntax (described
- in RFC 952) than the DNS recommendations in RFCs 1034 and
- 1123, and that systems that want to store host names in
- schema nodes using the domain-name type are recommended to
- adhere to this stricter standard to ensure interoperability.
-
- The encoding of DNS names in the DNS protocol is limited
- to 255 characters. Since the encoding consists of labels
- prefixed by a length bytes and there is a trailing NULL
- byte, only 253 characters can appear in the textual dotted
- notation.
-
- The description clause of schema nodes using the domain-name
- type MUST describe when and how these names are resolved to
- IP addresses. Note that the resolution of a domain-name value
- may require to query multiple DNS records (e.g., A for IPv4
- and AAAA for IPv6). The order of the resolution process and
- which DNS record takes precedence can either be defined
- explicitly or may depend on the configuration of the
- resolver.
-
- Domain-name values use the US-ASCII encoding. Their canonical
- format uses lowercase US-ASCII characters. Internationalized
- domain names MUST be A-labels as per RFC 5890.";
- reference
- "RFC 952: DoD Internet Host Table Specification
- RFC 1034: Domain Names - Concepts and Facilities
- RFC 1123: Requirements for Internet Hosts -- Application
- and Support
- RFC 2782: A DNS RR for specifying the location of services
- (DNS SRV)
- RFC 5890: Internationalized Domain Names in Applications
- (IDNA): Definitions and Document Framework";
- }
-
- typedef host {
- type union {
- type inet:ip-address;
- type inet:domain-name;
- }
- description
- "The host type represents either an IP address or a DNS
- domain name.";
- }
-
- typedef uri {
- type string;
- description
- "The uri type represents a Uniform Resource Identifier
- (URI) as defined by STD 66.
-
- Objects using the uri type MUST be in US-ASCII encoding,
- and MUST be normalized as described by RFC 3986 Sections
- 6.2.1, 6.2.2.1, and 6.2.2.2. All unnecessary
- percent-encoding is removed, and all case-insensitive
- characters are set to lowercase except for hexadecimal
- digits, which are normalized to uppercase as described in
- Section 6.2.2.1.
-
- The purpose of this normalization is to help provide
- unique URIs. Note that this normalization is not
- sufficient to provide uniqueness. Two URIs that are
- textually distinct after this normalization may still be
- equivalent.
-
- Objects using the uri type may restrict the schemes that
- they permit. For example, ''''data:'''' and ''''urn:'''' schemes
- might not be appropriate.
-
- A zero-length URI is not a valid URI. This can be used to
- express ''''URI absent'''' where required.
-
- In the value set and its semantics, this type is equivalent
- to the Uri SMIv2 textual convention defined in RFC 5017.";
- reference
- "RFC 3986: Uniform Resource Identifier (URI): Generic Syntax
- RFC 3305: Report from the Joint W3C/IETF URI Planning Interest
- Group: Uniform Resource Identifiers (URIs), URLs,
- and Uniform Resource Names (URNs): Clarifications
- and Recommendations
- RFC 5017: MIB Textual Conventions for Uniform Resource
- Identifiers (URIs)";
- }
-
-}'
-where name = 'ietf-inet-types.yang'
-and checksum = '64e7b04e6126acc3f598f68677aa487502c6e0682d2732c817669becdfb099ba';
diff --git a/cps-ri/src/main/resources/changelog/db/changes/08-update-yang-resources-ietf-yang-types-forward.sql b/cps-ri/src/main/resources/changelog/db/changes/08-update-yang-resources-ietf-yang-types-forward.sql
deleted file mode 100644
index 48282aad2..000000000
--- a/cps-ri/src/main/resources/changelog/db/changes/08-update-yang-resources-ietf-yang-types-forward.sql
+++ /dev/null
@@ -1,485 +0,0 @@
-update yang_resource set
-checksum = '0c68c544f846c01751c71317339d02a504519ab05e45f50653605562df64295f',
-content = 'module ietf-yang-types {
-
- namespace "urn:ietf:params:xml:ns:yang:ietf-yang-types";
- prefix "yang";
-
- organization
- "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
-
- contact
- "WG Web: <http://tools.ietf.org/wg/netmod/>
- WG List: <mailto:netmod@ietf.org>
-
- WG Chair: David Kessens
- <mailto:david.kessens@nsn.com>
-
- WG Chair: Juergen Schoenwaelder
- <mailto:j.schoenwaelder@jacobs-university.de>
-
- Editor: Juergen Schoenwaelder
- <mailto:j.schoenwaelder@jacobs-university.de>";
-
- description
- "This module contains a collection of generally useful derived
- YANG data types.
-
- Copyright (c) 2013 IETF Trust and the persons identified as
- authors of the code. All rights reserved.
-
- Redistribution and use in source and binary forms, with or
- without modification, is permitted pursuant to, and subject
- to the license terms contained in, the Simplified BSD License
- set forth in Section 4.c of the IETF Trust''s Legal Provisions
- Relating to IETF Documents
- (http://trustee.ietf.org/license-info).
-
- This version of this YANG module is part of RFC 6991; see
- the RFC itself for full legal notices.";
-
- revision 2013-07-15 {
- description
- "This revision adds the following new data types:
- - yang-identifier
- - hex-string
- - uuid
- - dotted-quad";
- reference
- "RFC 6991: Common YANG Data Types";
- }
-
- revision 2010-09-24 {
- description
- "Initial revision.";
- reference
- "RFC 6021: Common YANG Data Types";
- }
-
- /*** collection of counter and gauge types ***/
-
- typedef counter32 {
- type uint32;
- description
- "The counter32 type represents a non-negative integer
- that monotonically increases until it reaches a
- maximum value of 2^32-1 (4294967295 decimal), when it
- wraps around and starts increasing again from zero.
-
- Counters have no defined ''initial'' value, and thus, a
- single value of a counter has (in general) no information
- content. Discontinuities in the monotonically increasing
- value normally occur at re-initialization of the
- management system, and at other times as specified in the
- description of a schema node using this type. If such
- other times can occur, for example, the creation of
- a schema node of type counter32 at times other than
- re-initialization, then a corresponding schema node
- should be defined, with an appropriate type, to indicate
- the last discontinuity.
-
- The counter32 type should not be used for configuration
- schema nodes. A default statement SHOULD NOT be used in
- combination with the type counter32.
-
- In the value set and its semantics, this type is equivalent
- to the Counter32 type of the SMIv2.";
- reference
- "RFC 2578: Structure of Management Information Version 2
- (SMIv2)";
- }
-
- typedef zero-based-counter32 {
- type yang:counter32;
- default "0";
- description
- "The zero-based-counter32 type represents a counter32
- that has the defined ''initial'' value zero.
-
- A schema node of this type will be set to zero (0) on creation
- and will thereafter increase monotonically until it reaches
- a maximum value of 2^32-1 (4294967295 decimal), when it
- wraps around and starts increasing again from zero.
-
- Provided that an application discovers a new schema node
- of this type within the minimum time to wrap, it can use the
- ''initial'' value as a delta. It is important for a management
- station to be aware of this minimum time and the actual time
- between polls, and to discard data if the actual time is too
- long or there is no defined minimum time.
-
- In the value set and its semantics, this type is equivalent
- to the ZeroBasedCounter32 textual convention of the SMIv2.";
- reference
- "RFC 4502: Remote Network Monitoring Management Information
- Base Version 2";
- }
-
- typedef counter64 {
- type uint64;
- description
- "The counter64 type represents a non-negative integer
- that monotonically increases until it reaches a
- maximum value of 2^64-1 (18446744073709551615 decimal),
- when it wraps around and starts increasing again from zero.
-
- Counters have no defined ''initial'' value, and thus, a
- single value of a counter has (in general) no information
- content. Discontinuities in the monotonically increasing
- value normally occur at re-initialization of the
- management system, and at other times as specified in the
- description of a schema node using this type. If such
- other times can occur, for example, the creation of
- a schema node of type counter64 at times other than
- re-initialization, then a corresponding schema node
- should be defined, with an appropriate type, to indicate
- the last discontinuity.
-
- The counter64 type should not be used for configuration
- schema nodes. A default statement SHOULD NOT be used in
- combination with the type counter64.
-
- In the value set and its semantics, this type is equivalent
- to the Counter64 type of the SMIv2.";
- reference
- "RFC 2578: Structure of Management Information Version 2
- (SMIv2)";
- }
-
- typedef zero-based-counter64 {
- type yang:counter64;
- default "0";
- description
- "The zero-based-counter64 type represents a counter64 that
- has the defined ''initial'' value zero.
-
-
-
-
- A schema node of this type will be set to zero (0) on creation
- and will thereafter increase monotonically until it reaches
- a maximum value of 2^64-1 (18446744073709551615 decimal),
- when it wraps around and starts increasing again from zero.
-
- Provided that an application discovers a new schema node
- of this type within the minimum time to wrap, it can use the
- ''initial'' value as a delta. It is important for a management
- station to be aware of this minimum time and the actual time
- between polls, and to discard data if the actual time is too
- long or there is no defined minimum time.
-
- In the value set and its semantics, this type is equivalent
- to the ZeroBasedCounter64 textual convention of the SMIv2.";
- reference
- "RFC 2856: Textual Conventions for Additional High Capacity
- Data Types";
- }
-
- typedef gauge32 {
- type uint32;
- description
- "The gauge32 type represents a non-negative integer, which
- may increase or decrease, but shall never exceed a maximum
- value, nor fall below a minimum value. The maximum value
- cannot be greater than 2^32-1 (4294967295 decimal), and
- the minimum value cannot be smaller than 0. The value of
- a gauge32 has its maximum value whenever the information
- being modeled is greater than or equal to its maximum
- value, and has its minimum value whenever the information
- being modeled is smaller than or equal to its minimum value.
- If the information being modeled subsequently decreases
- below (increases above) the maximum (minimum) value, the
- gauge32 also decreases (increases).
-
- In the value set and its semantics, this type is equivalent
- to the Gauge32 type of the SMIv2.";
- reference
- "RFC 2578: Structure of Management Information Version 2
- (SMIv2)";
- }
-
- typedef gauge64 {
- type uint64;
- description
- "The gauge64 type represents a non-negative integer, which
- may increase or decrease, but shall never exceed a maximum
- value, nor fall below a minimum value. The maximum value
- cannot be greater than 2^64-1 (18446744073709551615), and
- the minimum value cannot be smaller than 0. The value of
- a gauge64 has its maximum value whenever the information
- being modeled is greater than or equal to its maximum
- value, and has its minimum value whenever the information
- being modeled is smaller than or equal to its minimum value.
- If the information being modeled subsequently decreases
- below (increases above) the maximum (minimum) value, the
- gauge64 also decreases (increases).
-
- In the value set and its semantics, this type is equivalent
- to the CounterBasedGauge64 SMIv2 textual convention defined
- in RFC 2856";
- reference
- "RFC 2856: Textual Conventions for Additional High Capacity
- Data Types";
- }
-
- /*** collection of identifier-related types ***/
-
- typedef object-identifier {
- type string {
- pattern ''(([0-1](.[1-3]?[0-9]))|(2.(0|([1-9]d*))))''
- + ''(.(0|([1-9]d*)))*'';
- }
- description
- "The object-identifier type represents administratively
- assigned names in a registration-hierarchical-name tree.
-
- Values of this type are denoted as a sequence of numerical
- non-negative sub-identifier values. Each sub-identifier
- value MUST NOT exceed 2^32-1 (4294967295). Sub-identifiers
- are separated by single dots and without any intermediate
- whitespace.
-
- The ASN.1 standard restricts the value space of the first
- sub-identifier to 0, 1, or 2. Furthermore, the value space
- of the second sub-identifier is restricted to the range
- 0 to 39 if the first sub-identifier is 0 or 1. Finally,
- the ASN.1 standard requires that an object identifier
- has always at least two sub-identifiers. The pattern
- captures these restrictions.
-
- Although the number of sub-identifiers is not limited,
- module designers should realize that there may be
- implementations that stick with the SMIv2 limit of 128
- sub-identifiers.
-
- This type is a superset of the SMIv2 OBJECT IDENTIFIER type
- since it is not restricted to 128 sub-identifiers. Hence,
- this type SHOULD NOT be used to represent the SMIv2 OBJECT
- IDENTIFIER type; the object-identifier-128 type SHOULD be
- used instead.";
- reference
- "ISO9834-1: Information technology -- Open Systems
- Interconnection -- Procedures for the operation of OSI
- Registration Authorities: General procedures and top
- arcs of the ASN.1 Object Identifier tree";
- }
-
- typedef object-identifier-128 {
- type object-identifier {
- pattern ''d*(.d*){1,127}'';
- }
- description
- "This type represents object-identifiers restricted to 128
- sub-identifiers.
-
- In the value set and its semantics, this type is equivalent
- to the OBJECT IDENTIFIER type of the SMIv2.";
- reference
- "RFC 2578: Structure of Management Information Version 2
- (SMIv2)";
- }
-
- typedef yang-identifier {
- type string {
- length "1..max";
- pattern ''[a-zA-Z_][a-zA-Z0-9-_.]*'';
- pattern ''.|..|[^xX].*|.[^mM].*|..[^lL].*'';
- }
- description
- "A YANG identifier string as defined by the ''identifier''
- rule in Section 12 of RFC 6020. An identifier must
- start with an alphabetic character or an underscore
- followed by an arbitrary sequence of alphabetic or
- numeric characters, underscores, hyphens, or dots.
-
- A YANG identifier MUST NOT start with any possible
- combination of the lowercase or uppercase character
- sequence ''xml''.";
- reference
- "RFC 6020: YANG - A Data Modeling Language for the Network
- Configuration Protocol (NETCONF)";
- }
-
- /*** collection of types related to date and time***/
-
- typedef date-and-time {
- type string {
- pattern ''d{4}-d{2}-d{2}Td{2}:d{2}:d{2}(.d+)?''
- + ''(Z|[+-]d{2}:d{2})'';
- }
- description
- "The date-and-time type is a profile of the ISO 8601
- standard for representation of dates and times using the
- Gregorian calendar. The profile is defined by the
- date-time production in Section 5.6 of RFC 3339.
-
- The date-and-time type is compatible with the dateTime XML
- schema type with the following notable exceptions:
-
- (a) The date-and-time type does not allow negative years.
-
- (b) The date-and-time time-offset -00:00 indicates an unknown
- time zone (see RFC 3339) while -00:00 and +00:00 and Z
- all represent the same time zone in dateTime.
-
- (c) The canonical format (see below) of data-and-time values
- differs from the canonical format used by the dateTime XML
- schema type, which requires all times to be in UTC using
- the time-offset ''Z''.
-
- This type is not equivalent to the DateAndTime textual
- convention of the SMIv2 since RFC 3339 uses a different
- separator between full-date and full-time and provides
- higher resolution of time-secfrac.
-
- The canonical format for date-and-time values with a known time
- zone uses a numeric time zone offset that is calculated using
- the device''s configured known offset to UTC time. A change of
- the device''s offset to UTC time will cause date-and-time values
- to change accordingly. Such changes might happen periodically
- in case a server follows automatically daylight saving time
- (DST) time zone offset changes. The canonical format for
- date-and-time values with an unknown time zone (usually
- referring to the notion of local time) uses the time-offset
- -00:00.";
- reference
- "RFC 3339: Date and Time on the Internet: Timestamps
- RFC 2579: Textual Conventions for SMIv2
- XSD-TYPES: XML Schema Part 2: Datatypes Second Edition";
- }
-
- typedef timeticks {
- type uint32;
- description
- "The timeticks type represents a non-negative integer that
- represents the time, modulo 2^32 (4294967296 decimal), in
- hundredths of a second between two epochs. When a schema
- node is defined that uses this type, the description of
- the schema node identifies both of the reference epochs.
-
- In the value set and its semantics, this type is equivalent
- to the TimeTicks type of the SMIv2.";
- reference
- "RFC 2578: Structure of Management Information Version 2
- (SMIv2)";
- }
-
- typedef timestamp {
- type yang:timeticks;
- description
- "The timestamp type represents the value of an associated
- timeticks schema node at which a specific occurrence
- happened. The specific occurrence must be defined in the
- description of any schema node defined using this type. When
- the specific occurrence occurred prior to the last time the
- associated timeticks attribute was zero, then the timestamp
- value is zero. Note that this requires all timestamp values
- to be reset to zero when the value of the associated timeticks
- attribute reaches 497+ days and wraps around to zero.
-
- The associated timeticks schema node must be specified
- in the description of any schema node using this type.
-
- In the value set and its semantics, this type is equivalent
- to the TimeStamp textual convention of the SMIv2.";
- reference
- "RFC 2579: Textual Conventions for SMIv2";
- }
-
- /*** collection of generic address types ***/
-
- typedef phys-address {
- type string {
- pattern ''([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'';
- }
-
-
-
-
- description
- "Represents media- or physical-level addresses represented
- as a sequence octets, each octet represented by two hexadecimal
- numbers. Octets are separated by colons. The canonical
- representation uses lowercase characters.
-
- In the value set and its semantics, this type is equivalent
- to the PhysAddress textual convention of the SMIv2.";
- reference
- "RFC 2579: Textual Conventions for SMIv2";
- }
-
- typedef mac-address {
- type string {
- pattern ''[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}'';
- }
- description
- "The mac-address type represents an IEEE 802 MAC address.
- The canonical representation uses lowercase characters.
-
- In the value set and its semantics, this type is equivalent
- to the MacAddress textual convention of the SMIv2.";
- reference
- "IEEE 802: IEEE Standard for Local and Metropolitan Area
- Networks: Overview and Architecture
- RFC 2579: Textual Conventions for SMIv2";
- }
-
- /*** collection of XML-specific types ***/
-
- typedef xpath1.0 {
- type string;
- description
- "This type represents an XPATH 1.0 expression.
-
- When a schema node is defined that uses this type, the
- description of the schema node MUST specify the XPath
- context in which the XPath expression is evaluated.";
- reference
- "XPATH: XML Path Language (XPath) Version 1.0";
- }
-
- /*** collection of string types ***/
-
- typedef hex-string {
- type string {
- pattern ''([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'';
- }
- description
- "A hexadecimal string with octets represented as hex digits
- separated by colons. The canonical representation uses
- lowercase characters.";
- }
-
- typedef uuid {
- type string {
- pattern ''[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-''
- + ''[0-9a-fA-F]{4}-[0-9a-fA-F]{12}'';
- }
- description
- "A Universally Unique IDentifier in the string representation
- defined in RFC 4122. The canonical representation uses
- lowercase characters.
-
- The following is an example of a UUID in string representation:
- f81d4fae-7dec-11d0-a765-00a0c91e6bf6
- ";
- reference
- "RFC 4122: A Universally Unique IDentifier (UUID) URN
- Namespace";
- }
-
- typedef dotted-quad {
- type string {
- pattern
- ''(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]).){3}''
- + ''([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'';
- }
- description
- "An unsigned 32-bit number expressed in the dotted-quad
- notation, i.e., four octets written as decimal numbers
- and separated with the ''.'' (full stop) character.";
- }
-}
-'
-where name = 'ietf-yang-types.yang'
-and checksum = '25516798613f862ad20831e59ba02b75ecdc9c6f5547ed5d90bda76143bf0112';
diff --git a/cps-ri/src/main/resources/changelog/db/changes/08-update-yang-resources-ietf-yang-types-rollback.sql b/cps-ri/src/main/resources/changelog/db/changes/08-update-yang-resources-ietf-yang-types-rollback.sql
deleted file mode 100644
index db79f0df5..000000000
--- a/cps-ri/src/main/resources/changelog/db/changes/08-update-yang-resources-ietf-yang-types-rollback.sql
+++ /dev/null
@@ -1,484 +0,0 @@
-update yang_resource set
-checksum = '25516798613f862ad20831e59ba02b75ecdc9c6f5547ed5d90bda76143bf0112',
-content = 'module ietf-yang-types {
-
- namespace "urn:ietf:params:xml:ns:yang:ietf-yang-types";
- prefix "yang";
-
- organization
- "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
-
- contact
- "WG Web: <http://tools.ietf.org/wg/netmod/>
- WG List: <mailto:netmod@ietf.org>
-
- WG Chair: David Kessens
- <mailto:david.kessens@nsn.com>
-
- WG Chair: Juergen Schoenwaelder
- <mailto:j.schoenwaelder@jacobs-university.de>
-
- Editor: Juergen Schoenwaelder
- <mailto:j.schoenwaelder@jacobs-university.de>";
-
- description
- "This module contains a collection of generally useful derived
- YANG data types.
-
- Copyright (c) 2013 IETF Trust and the persons identified as
- authors of the code. All rights reserved.
-
- Redistribution and use in source and binary forms, with or
- without modification, is permitted pursuant to, and subject
- to the license terms contained in, the Simplified BSD License
- set forth in Section 4.c of the IETF Trust''''s Legal Provisions
- Relating to IETF Documents
- (http://trustee.ietf.org/license-info).
-
- This version of this YANG module is part of RFC 6991; see
- the RFC itself for full legal notices.";
-
- revision 2013-07-15 {
- description
- "This revision adds the following new data types:
- - yang-identifier
- - hex-string
- - uuid
- - dotted-quad";
- reference
- "RFC 6991: Common YANG Data Types";
- }
-
- revision 2010-09-24 {
- description
- "Initial revision.";
- reference
- "RFC 6021: Common YANG Data Types";
- }
-
- /*** collection of counter and gauge types ***/
-
- typedef counter32 {
- type uint32;
- description
- "The counter32 type represents a non-negative integer
- that monotonically increases until it reaches a
- maximum value of 2^32-1 (4294967295 decimal), when it
- wraps around and starts increasing again from zero.
-
- Counters have no defined ''''initial'''' value, and thus, a
- single value of a counter has (in general) no information
- content. Discontinuities in the monotonically increasing
- value normally occur at re-initialization of the
- management system, and at other times as specified in the
- description of a schema node using this type. If such
- other times can occur, for example, the creation of
- a schema node of type counter32 at times other than
- re-initialization, then a corresponding schema node
- should be defined, with an appropriate type, to indicate
- the last discontinuity.
-
- The counter32 type should not be used for configuration
- schema nodes. A default statement SHOULD NOT be used in
- combination with the type counter32.
-
- In the value set and its semantics, this type is equivalent
- to the Counter32 type of the SMIv2.";
- reference
- "RFC 2578: Structure of Management Information Version 2
- (SMIv2)";
- }
-
- typedef zero-based-counter32 {
- type yang:counter32;
- default "0";
- description
- "The zero-based-counter32 type represents a counter32
- that has the defined ''''initial'''' value zero.
-
- A schema node of this type will be set to zero (0) on creation
- and will thereafter increase monotonically until it reaches
- a maximum value of 2^32-1 (4294967295 decimal), when it
- wraps around and starts increasing again from zero.
-
- Provided that an application discovers a new schema node
- of this type within the minimum time to wrap, it can use the
- ''''initial'''' value as a delta. It is important for a management
- station to be aware of this minimum time and the actual time
- between polls, and to discard data if the actual time is too
- long or there is no defined minimum time.
-
- In the value set and its semantics, this type is equivalent
- to the ZeroBasedCounter32 textual convention of the SMIv2.";
- reference
- "RFC 4502: Remote Network Monitoring Management Information
- Base Version 2";
- }
-
- typedef counter64 {
- type uint64;
- description
- "The counter64 type represents a non-negative integer
- that monotonically increases until it reaches a
- maximum value of 2^64-1 (18446744073709551615 decimal),
- when it wraps around and starts increasing again from zero.
-
- Counters have no defined ''''initial'''' value, and thus, a
- single value of a counter has (in general) no information
- content. Discontinuities in the monotonically increasing
- value normally occur at re-initialization of the
- management system, and at other times as specified in the
- description of a schema node using this type. If such
- other times can occur, for example, the creation of
- a schema node of type counter64 at times other than
- re-initialization, then a corresponding schema node
- should be defined, with an appropriate type, to indicate
- the last discontinuity.
-
- The counter64 type should not be used for configuration
- schema nodes. A default statement SHOULD NOT be used in
- combination with the type counter64.
-
- In the value set and its semantics, this type is equivalent
- to the Counter64 type of the SMIv2.";
- reference
- "RFC 2578: Structure of Management Information Version 2
- (SMIv2)";
- }
-
- typedef zero-based-counter64 {
- type yang:counter64;
- default "0";
- description
- "The zero-based-counter64 type represents a counter64 that
- has the defined ''''initial'''' value zero.
-
-
-
-
- A schema node of this type will be set to zero (0) on creation
- and will thereafter increase monotonically until it reaches
- a maximum value of 2^64-1 (18446744073709551615 decimal),
- when it wraps around and starts increasing again from zero.
-
- Provided that an application discovers a new schema node
- of this type within the minimum time to wrap, it can use the
- ''''initial'''' value as a delta. It is important for a management
- station to be aware of this minimum time and the actual time
- between polls, and to discard data if the actual time is too
- long or there is no defined minimum time.
-
- In the value set and its semantics, this type is equivalent
- to the ZeroBasedCounter64 textual convention of the SMIv2.";
- reference
- "RFC 2856: Textual Conventions for Additional High Capacity
- Data Types";
- }
-
- typedef gauge32 {
- type uint32;
- description
- "The gauge32 type represents a non-negative integer, which
- may increase or decrease, but shall never exceed a maximum
- value, nor fall below a minimum value. The maximum value
- cannot be greater than 2^32-1 (4294967295 decimal), and
- the minimum value cannot be smaller than 0. The value of
- a gauge32 has its maximum value whenever the information
- being modeled is greater than or equal to its maximum
- value, and has its minimum value whenever the information
- being modeled is smaller than or equal to its minimum value.
- If the information being modeled subsequently decreases
- below (increases above) the maximum (minimum) value, the
- gauge32 also decreases (increases).
-
- In the value set and its semantics, this type is equivalent
- to the Gauge32 type of the SMIv2.";
- reference
- "RFC 2578: Structure of Management Information Version 2
- (SMIv2)";
- }
-
- typedef gauge64 {
- type uint64;
- description
- "The gauge64 type represents a non-negative integer, which
- may increase or decrease, but shall never exceed a maximum
- value, nor fall below a minimum value. The maximum value
- cannot be greater than 2^64-1 (18446744073709551615), and
- the minimum value cannot be smaller than 0. The value of
- a gauge64 has its maximum value whenever the information
- being modeled is greater than or equal to its maximum
- value, and has its minimum value whenever the information
- being modeled is smaller than or equal to its minimum value.
- If the information being modeled subsequently decreases
- below (increases above) the maximum (minimum) value, the
- gauge64 also decreases (increases).
-
- In the value set and its semantics, this type is equivalent
- to the CounterBasedGauge64 SMIv2 textual convention defined
- in RFC 2856";
- reference
- "RFC 2856: Textual Conventions for Additional High Capacity
- Data Types";
- }
-
- /*** collection of identifier-related types ***/
-
- typedef object-identifier {
- type string {
- pattern ''''(([0-1](.[1-3]?[0-9]))|(2.(0|([1-9]d*))))''''
- + ''''(.(0|([1-9]d*)))*'''';
- }
- description
- "The object-identifier type represents administratively
- assigned names in a registration-hierarchical-name tree.
-
- Values of this type are denoted as a sequence of numerical
- non-negative sub-identifier values. Each sub-identifier
- value MUST NOT exceed 2^32-1 (4294967295). Sub-identifiers
- are separated by single dots and without any intermediate
- whitespace.
-
- The ASN.1 standard restricts the value space of the first
- sub-identifier to 0, 1, or 2. Furthermore, the value space
- of the second sub-identifier is restricted to the range
- 0 to 39 if the first sub-identifier is 0 or 1. Finally,
- the ASN.1 standard requires that an object identifier
- has always at least two sub-identifiers. The pattern
- captures these restrictions.
-
- Although the number of sub-identifiers is not limited,
- module designers should realize that there may be
- implementations that stick with the SMIv2 limit of 128
- sub-identifiers.
-
- This type is a superset of the SMIv2 OBJECT IDENTIFIER type
- since it is not restricted to 128 sub-identifiers. Hence,
- this type SHOULD NOT be used to represent the SMIv2 OBJECT
- IDENTIFIER type; the object-identifier-128 type SHOULD be
- used instead.";
- reference
- "ISO9834-1: Information technology -- Open Systems
- Interconnection -- Procedures for the operation of OSI
- Registration Authorities: General procedures and top
- arcs of the ASN.1 Object Identifier tree";
- }
-
- typedef object-identifier-128 {
- type object-identifier {
- pattern ''''d*(.d*){1,127}'''';
- }
- description
- "This type represents object-identifiers restricted to 128
- sub-identifiers.
-
- In the value set and its semantics, this type is equivalent
- to the OBJECT IDENTIFIER type of the SMIv2.";
- reference
- "RFC 2578: Structure of Management Information Version 2
- (SMIv2)";
- }
-
- typedef yang-identifier {
- type string {
- length "1..max";
- pattern ''''[a-zA-Z_][a-zA-Z0-9-_.]*'''';
- pattern ''''.|..|[^xX].*|.[^mM].*|..[^lL].*'''';
- }
- description
- "A YANG identifier string as defined by the ''''identifier''''
- rule in Section 12 of RFC 6020. An identifier must
- start with an alphabetic character or an underscore
- followed by an arbitrary sequence of alphabetic or
- numeric characters, underscores, hyphens, or dots.
-
- A YANG identifier MUST NOT start with any possible
- combination of the lowercase or uppercase character
- sequence ''''xml''''.";
- reference
- "RFC 6020: YANG - A Data Modeling Language for the Network
- Configuration Protocol (NETCONF)";
- }
-
- /*** collection of types related to date and time***/
-
- typedef date-and-time {
- type string {
- pattern ''''d{4}-d{2}-d{2}Td{2}:d{2}:d{2}(.d+)?''''
- + ''''(Z|[+-]d{2}:d{2})'''';
- }
- description
- "The date-and-time type is a profile of the ISO 8601
- standard for representation of dates and times using the
- Gregorian calendar. The profile is defined by the
- date-time production in Section 5.6 of RFC 3339.
-
- The date-and-time type is compatible with the dateTime XML
- schema type with the following notable exceptions:
-
- (a) The date-and-time type does not allow negative years.
-
- (b) The date-and-time time-offset -00:00 indicates an unknown
- time zone (see RFC 3339) while -00:00 and +00:00 and Z
- all represent the same time zone in dateTime.
-
- (c) The canonical format (see below) of data-and-time values
- differs from the canonical format used by the dateTime XML
- schema type, which requires all times to be in UTC using
- the time-offset ''''Z''''.
-
- This type is not equivalent to the DateAndTime textual
- convention of the SMIv2 since RFC 3339 uses a different
- separator between full-date and full-time and provides
- higher resolution of time-secfrac.
-
- The canonical format for date-and-time values with a known time
- zone uses a numeric time zone offset that is calculated using
- the device''''s configured known offset to UTC time. A change of
- the device''''s offset to UTC time will cause date-and-time values
- to change accordingly. Such changes might happen periodically
- in case a server follows automatically daylight saving time
- (DST) time zone offset changes. The canonical format for
- date-and-time values with an unknown time zone (usually
- referring to the notion of local time) uses the time-offset
- -00:00.";
- reference
- "RFC 3339: Date and Time on the Internet: Timestamps
- RFC 2579: Textual Conventions for SMIv2
- XSD-TYPES: XML Schema Part 2: Datatypes Second Edition";
- }
-
- typedef timeticks {
- type uint32;
- description
- "The timeticks type represents a non-negative integer that
- represents the time, modulo 2^32 (4294967296 decimal), in
- hundredths of a second between two epochs. When a schema
- node is defined that uses this type, the description of
- the schema node identifies both of the reference epochs.
-
- In the value set and its semantics, this type is equivalent
- to the TimeTicks type of the SMIv2.";
- reference
- "RFC 2578: Structure of Management Information Version 2
- (SMIv2)";
- }
-
- typedef timestamp {
- type yang:timeticks;
- description
- "The timestamp type represents the value of an associated
- timeticks schema node at which a specific occurrence
- happened. The specific occurrence must be defined in the
- description of any schema node defined using this type. When
- the specific occurrence occurred prior to the last time the
- associated timeticks attribute was zero, then the timestamp
- value is zero. Note that this requires all timestamp values
- to be reset to zero when the value of the associated timeticks
- attribute reaches 497+ days and wraps around to zero.
-
- The associated timeticks schema node must be specified
- in the description of any schema node using this type.
-
- In the value set and its semantics, this type is equivalent
- to the TimeStamp textual convention of the SMIv2.";
- reference
- "RFC 2579: Textual Conventions for SMIv2";
- }
-
- /*** collection of generic address types ***/
-
- typedef phys-address {
- type string {
- pattern ''''([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'''';
- }
-
-
-
-
- description
- "Represents media- or physical-level addresses represented
- as a sequence octets, each octet represented by two hexadecimal
- numbers. Octets are separated by colons. The canonical
- representation uses lowercase characters.
-
- In the value set and its semantics, this type is equivalent
- to the PhysAddress textual convention of the SMIv2.";
- reference
- "RFC 2579: Textual Conventions for SMIv2";
- }
-
- typedef mac-address {
- type string {
- pattern ''''[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}'''';
- }
- description
- "The mac-address type represents an IEEE 802 MAC address.
- The canonical representation uses lowercase characters.
-
- In the value set and its semantics, this type is equivalent
- to the MacAddress textual convention of the SMIv2.";
- reference
- "IEEE 802: IEEE Standard for Local and Metropolitan Area
- Networks: Overview and Architecture
- RFC 2579: Textual Conventions for SMIv2";
- }
-
- /*** collection of XML-specific types ***/
-
- typedef xpath1.0 {
- type string;
- description
- "This type represents an XPATH 1.0 expression.
-
- When a schema node is defined that uses this type, the
- description of the schema node MUST specify the XPath
- context in which the XPath expression is evaluated.";
- reference
- "XPATH: XML Path Language (XPath) Version 1.0";
- }
-
- /*** collection of string types ***/
-
- typedef hex-string {
- type string {
- pattern ''''([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'''';
- }
- description
- "A hexadecimal string with octets represented as hex digits
- separated by colons. The canonical representation uses
- lowercase characters.";
- }
-
- typedef uuid {
- type string {
- pattern ''''[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-''''
- + ''''[0-9a-fA-F]{4}-[0-9a-fA-F]{12}'''';
- }
- description
- "A Universally Unique IDentifier in the string representation
- defined in RFC 4122. The canonical representation uses
- lowercase characters.
-
- The following is an example of a UUID in string representation:
- f81d4fae-7dec-11d0-a765-00a0c91e6bf6
- ";
- reference
- "RFC 4122: A Universally Unique IDentifier (UUID) URN
- Namespace";
- }
-
- typedef dotted-quad {
- type string {
- pattern
- ''''(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]).){3}''''
- + ''''([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'''';
- }
- description
- "An unsigned 32-bit number expressed in the dotted-quad
- notation, i.e., four octets written as decimal numbers
- and separated with the ''''.'''' (full stop) character.";
- }
-}'
-where name = 'ietf-yang-types.yang'
-and checksum = '0c68c544f846c01751c71317339d02a504519ab05e45f50653605562df64295f';
diff --git a/cps-ri/src/main/resources/changelog/db/changes/08-update-yang-resources.yaml b/cps-ri/src/main/resources/changelog/db/changes/08-update-yang-resources.yaml
deleted file mode 100644
index a71b59a31..000000000
--- a/cps-ri/src/main/resources/changelog/db/changes/08-update-yang-resources.yaml
+++ /dev/null
@@ -1,36 +0,0 @@
-# ============LICENSE_START=======================================================
-# Copyright (c) 2021 Bell Canada.
-# ================================================================================
-# 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.
-# ============LICENSE_END=========================================================
-
-databaseChangeLog:
- - changeSet:
- id: 8
- author: cps
- label: xnf-data-preload
- comment: Fix Yang model for cps ran
- changes:
- - sqlFile:
- path: changelog/db/changes/08-update-yang-resources-cps-ran-model-forward.sql
- - sqlFile:
- path: changelog/db/changes/08-update-yang-resources-ietf-yang-types-forward.sql
- - sqlFile:
- path: changelog/db/changes/08-update-yang-resources-ietf-inet-types-forward.sql
- rollback:
- - sqlFile:
- path: changelog/db/changes/08-update-yang-resources-cps-ran-model-rollback.sql
- - sqlFile:
- path: changelog/db/changes/08-update-yang-resources-ietf-yang-types-rollback.sql
- - sqlFile:
- path: changelog/db/changes/08-update-yang-resources-ietf-inet-types-rollback.sql
diff --git a/cps-ri/src/main/resources/changelog/db/changes/09-loadData-dmi-registry-schema-set.yaml b/cps-ri/src/main/resources/changelog/db/changes/09-loadData-dmi-registry-schema-set.yaml
deleted file mode 100644
index 723c2b9ec..000000000
--- a/cps-ri/src/main/resources/changelog/db/changes/09-loadData-dmi-registry-schema-set.yaml
+++ /dev/null
@@ -1,210 +0,0 @@
-# ============LICENSE_START=======================================================
-# 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.
-# 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-preload
- id: 9
- loadUpdateData:
- encoding: UTF-8
- file: 'changelog/db/changes/data/dmi/dataspace.csv'
- onlyUpdate: 'false'
- primaryKey: 'id'
- quotchar: '"'
- separator: '|'
- tableName: 'dataspace'
- rollback:
- - sql:
- sql: delete from dataspace where name = 'NCMP-Admin'
-
- - changeSet:
- author: cps
- label: dmi-registry-schema-preload
- id: 9.1
- loadUpdateData:
- encoding: UTF-8
- file: 'changelog/db/changes/data/dmi/schema_set.csv'
- onlyUpdate: 'false'
- primaryKey: 'id'
- quotchar: '"'
- separator: '|'
- tableName: 'schema_set'
- rollback:
- - sql:
- sql: delete from schema_set where name = 'ncmp-dmi-registry-model'
-
- - changeSet:
- author: cps
- label: dmi-registry-schema-preload
- id: 9.2
- 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
- rollback:
- - sql:
- sql: delete from yang_resource where name = 'dmi-registry@2021-05-20.yang'
-
- - changeSet:
- author: cps
- label: dmi-registry-schema-preload
- id: 9.3
- 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
- rollback:
- - sql:
- 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')
-
- - changeSet:
- author: cps
- label: dmi-registry-schema-preload
- id: 9.4
- loadUpdateData:
- encoding: UTF-8
- file: 'changelog/db/changes/data/dmi/anchor.csv'
- onlyUpdate: 'false'
- primaryKey: 'id'
- quotchar: '"'
- separator: '|'
- tableName: 'anchor'
- rollback:
- - sql:
- sql: delete from anchor where name = 'ncmp-dmi-registry'
-
- - changeSet:
- author: cps
- label: dmi-registry-schema-preload
- id: 9.5
- 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
- rollback:
- - sql:
- sql: delete from yang_resource where name = 'dmi-registry@2021-10-20.yang'
-
- - changeSet:
- author: cps
- label: dmi-registry-schema-preload
- id: 9.6
- 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
- rollback:
- - sql:
- 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')
-
- - changeSet:
- author: cps
- label: dmi-registry-schema-preload
- id: 9.7
- 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
- rollback:
- - sql:
- sql: delete from yang_resource where name = 'dmi-registry@2021-12-13.yang'
-
- - changeSet:
- author: cps
- label: dmi-registry-schema-preload
- id: 9.8
- 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
- rollback:
- - sql:
- 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') \ No newline at end of file
diff --git a/cps-ri/src/main/resources/changelog/db/changes/10-loadData-dmi-registry-fragment.yaml b/cps-ri/src/main/resources/changelog/db/changes/10-loadData-dmi-registry-fragment.yaml
deleted file mode 100644
index b78c920ad..000000000
--- a/cps-ri/src/main/resources/changelog/db/changes/10-loadData-dmi-registry-fragment.yaml
+++ /dev/null
@@ -1,88 +0,0 @@
-# ============LICENSE_START=======================================================
-# 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.
-# 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-preload
- id: 10
- loadUpdateData:
- encoding: UTF-8
- file: 'changelog/db/changes/data/dmi/fragment.csv'
- onlyUpdate: 'false'
- primaryKey: 'id'
- quotchar: '"'
- separator: '|'
- tableName: 'fragment'
- columns:
- - column:
- header: id
- name: id
- type: NUMERIC
- - column:
- header: xpath
- name: xpath
- type: STRING
- - column:
- header: attributes
- name: attributes
- type: CLOB
- - column:
- header: anchor_id
- name: anchor_id
- type: NUMERIC
- - column:
- header: parent_id
- name: parent_id
- type: NUMERIC
- - column:
- header: dataspace_id
- name: dataspace_id
- type: NUMERIC
- - column:
- header: schema_node_id
- name: schema_node_id
- type: NUMERIC
- rollback:
- sql: DELETE FROM fragment WHERE xpath = '/dmi-registry' AND anchor_id = (select id from anchor where name='ncmp-dmi-registry') AND dataspace_id = (select id from dataspace where name='NCMP-Admin')
- comment: Removes the fragment added by fragment.csv file
-
- - changeSet:
- author: cps
- label: dmi-registry-schema-preload
- id: 10.1
- changes:
- - sql:
- comment: Fixes the id sequence after data insert with predefined ids
- dbms: postgresql
- sql: ALTER SEQUENCE IF EXISTS fragment_id_seq RESTART WITH 200
- rollback:
- comment: Rollback for 10.1 is not supported. Please rollback change set 10 to undo change set 10.1. Cannot revert sequence altering.
-
- - changeSet:
- author: cps
- label: dmi-registry-schema-preload
- id: 10.2
- changes:
- - sql:
- comment: Sets sequence value to current max value of the ID from the fragment table
- dbms: postgresql
- sql: SELECT setval('fragment_id_seq', (SELECT MAX(ID) FROM fragment))
- rollback:
- sql: SELECT setval('fragment_id_seq', 200)
- comment: Rollback Sequence to restart with the sequence number in the last changeset \ No newline at end of file
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
deleted file mode 100644
index 8643a0545..000000000
--- a/cps-ri/src/main/resources/changelog/db/changes/11-add-column-to-yang-resources-table.yaml
+++ /dev/null
@@ -1,43 +0,0 @@
-# ============LICENSE_START=======================================================
-# 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.
-# 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:
- id: 11
- label: add-module-name-and-revision-column
- author: cps
- changes:
- - addColumn:
- tableName: yang_resource
- columns:
- - column:
- name: module_name
- type: TEXT
- - column:
- name: revision
- type: TEXT
-
- - changeSet:
- id: 11.1
- label: update-previous-data-module-name-and-revision
- author: cps
- changes:
- - 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:
- 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
deleted file mode 100644
index 9eda029b9..000000000
--- a/cps-ri/src/main/resources/changelog/db/changes/12-delete-all-previous-dmi-registry-schema-set.yaml
+++ /dev/null
@@ -1,157 +0,0 @@
-# ============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
deleted file mode 100644
index 3351b5419..000000000
--- a/cps-ri/src/main/resources/changelog/db/changes/13-insert-dmi-registry-2022-02-10-schema-set.yaml
+++ /dev/null
@@ -1,66 +0,0 @@
-# ============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/14-loadData-dmi-registry-2022-05-10-schema-set.yaml b/cps-ri/src/main/resources/changelog/db/changes/14-loadData-dmi-registry-2022-05-10-schema-set.yaml
deleted file mode 100644
index da39d221c..000000000
--- a/cps-ri/src/main/resources/changelog/db/changes/14-loadData-dmi-registry-2022-05-10-schema-set.yaml
+++ /dev/null
@@ -1,113 +0,0 @@
-# ============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: 14
- 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')
- rollback:
- 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'));
-
- - changeSet:
- author: cps
- label: dmi-registry-schema-delete
- id: 14.1
- sql: DELETE FROM yang_resource where name = 'dmi-registry@2022-02-10.yang'
- rollback:
- 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
-
- - changeSet:
- author: cps
- label: dmi-registry-schema-load-revision-2022-05-10
- id: 14.2
- loadUpdateData:
- encoding: UTF-8
- file: 'changelog/db/changes/data/dmi/generated-csv/generated_yang_resource_dmi-registry@2022-05-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-05-10.yang'
-
- - changeSet:
- author: cps
- label: dmi-registry-schema-load-revision-2022-05-10
- id: 14.3
- 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-05-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-05-10.yang') \ No newline at end of file
diff --git a/cps-ri/src/main/resources/changelog/db/changes/15-rename-column-yang-resource-table.yaml b/cps-ri/src/main/resources/changelog/db/changes/15-rename-column-yang-resource-table.yaml
deleted file mode 100644
index 71f11a538..000000000
--- a/cps-ri/src/main/resources/changelog/db/changes/15-rename-column-yang-resource-table.yaml
+++ /dev/null
@@ -1,14 +0,0 @@
-databaseChangeLog:
- - changeSet:
- author: cps
- label: yang-resource-rename-column
- id: 15
- changes:
- - renameColumn:
- tableName: yang_resource
- columnDataType: TEXT
- oldColumnName: name
- newColumnName: file_name
- rollback:
- - sql:
- sql: alter table yang_resource rename column file_name to name \ No newline at end of file
diff --git a/cps-ri/src/main/resources/changelog/db/changes/16-insert-cm-handle-state-forward.sql b/cps-ri/src/main/resources/changelog/db/changes/16-insert-cm-handle-state-forward.sql
deleted file mode 100644
index 01d441f46..000000000
--- a/cps-ri/src/main/resources/changelog/db/changes/16-insert-cm-handle-state-forward.sql
+++ /dev/null
@@ -1,137 +0,0 @@
-INSERT INTO
- fragment(
- xpath,
- attributes,
- anchor_id,
- parent_id,
- dataspace_id,
- schema_node_id
- )
-SELECT
- concat(cmHandles.xpath, '/state') AS xpath,
- to_jsonb(
- concat(
- '{"cm-handle-state": "READY", "last-update-time": "',
- to_char(
- now(),
- 'YYYY-MM-DD"T"HH24:MI:SS.MSTZHTZM'
- ),
- '", "data-sync-enabled": false}'
- ) :: json
- ) AS attributes,
- cmHandles.anchor_id,
- cmHandles.id,
- cmHandles.dataspace_id,
- cmHandles.schema_node_id
-FROM
- (
- SELECT
- id,
- xpath,
- anchor_id,
- dataspace_id,
- schema_node_id
- FROM
- fragment
- WHERE
- xpath ~* '^/dmi-registry/cm-handles\[@id=''[\w\-]+''\]$'
- AND xpath NOT IN (
- SELECT
- SUBSTRING(
- xpath
- FROM
- '^/dmi-registry/cm-handles\[@id=''[\w\-]+''\]'
- )
- FROM
- fragment
- WHERE
- xpath ~* '^/dmi-registry/cm-handles\[@id=''[\w\-]+''\]/state$'
- )
- ) AS cmHandles;
-INSERT INTO
- fragment(
- xpath,
- attributes,
- anchor_id,
- parent_id,
- dataspace_id,
- schema_node_id
- )
-SELECT
- concat(cmHandlesStates.xpath, '/datastores'),
- to_jsonb('{}' :: json),
- cmHandlesStates.anchor_id,
- cmHandlesStates.id,
- cmHandlesStates.dataspace_id,
- cmHandlesStates.schema_node_id
-FROM
- (
- SELECT
- id,
- xpath,
- anchor_id,
- dataspace_id,
- schema_node_id
- FROM
- fragment
- WHERE
- xpath ~* '^/dmi-registry/cm-handles\[@id=''[\w\-]+''\]/state$'
- AND xpath NOT IN (
- SELECT
- SUBSTRING(
- xpath
- FROM
- '^/dmi-registry/cm-handles\[@id=''[\w\-]+''\]/state'
- )
- FROM
- fragment
- WHERE
- xpath ~* '^/dmi-registry/cm-handles\[@id=''[\w\-]+''\]/state/datastores$'
- )
- ) AS cmHandlesStates;
-INSERT INTO
- fragment(
- xpath,
- attributes,
- anchor_id,
- parent_id,
- dataspace_id,
- schema_node_id
- )
-SELECT
- concat(
- cmHandlesDatastores.xpath,
- '/operational'
- ),
- to_jsonb(
- concat('{"sync-state": "NONE_REQUESTED"}') :: json
- ),
- cmHandlesDatastores.anchor_id,
- cmHandlesDatastores.id,
- cmHandlesDatastores.dataspace_id,
- cmHandlesDatastores.schema_node_id
-FROM
- (
- SELECT
- id,
- xpath,
- anchor_id,
- dataspace_id,
- schema_node_id
- FROM
- fragment
- WHERE
- xpath ~* '^/dmi-registry/cm-handles\[@id=''[\w\-]+''\]/state/datastores$'
- AND xpath NOT IN (
- SELECT
- SUBSTRING(
- xpath
- FROM
- '^/dmi-registry/cm-handles\[@id=''[\w\-]+''\]/state/datastores'
- )
- FROM
- fragment
- WHERE
- xpath ~* '^/dmi-registry/cm-handles\[@id=''[\w\-]+''\]/state/datastores/operational$'
- )
- ) AS cmHandlesDatastores; \ No newline at end of file
diff --git a/cps-ri/src/main/resources/changelog/db/changes/16-insert-cm-handle-state-rollback.sql b/cps-ri/src/main/resources/changelog/db/changes/16-insert-cm-handle-state-rollback.sql
deleted file mode 100644
index 4b006ef0e..000000000
--- a/cps-ri/src/main/resources/changelog/db/changes/16-insert-cm-handle-state-rollback.sql
+++ /dev/null
@@ -1,4 +0,0 @@
-DELETE FROM fragment WHERE xpath ~* '^/dmi-registry/cm-handles\[@id=''[\w\-]+''\]/state/lock-reason$';
-DELETE FROM fragment WHERE xpath ~* '^/dmi-registry/cm-handles\[@id=''[\w\-]+''\]/state/datastores/operational$';
-DELETE FROM fragment WHERE xpath ~* '^/dmi-registry/cm-handles\[@id=''[\w\-]+''\]/state/datastores$';
-DELETE FROM fragment WHERE xpath ~* '^/dmi-registry/cm-handles\[@id=''[\w\-]+''\]/state$'; \ No newline at end of file
diff --git a/cps-ri/src/main/resources/changelog/db/changes/16-insert-cm-handle-state.yaml b/cps-ri/src/main/resources/changelog/db/changes/16-insert-cm-handle-state.yaml
deleted file mode 100644
index 0f8c429f4..000000000
--- a/cps-ri/src/main/resources/changelog/db/changes/16-insert-cm-handle-state.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-databaseChangeLog:
- - changeSet:
- author: cps
- label: insert-cm-handle-state
- id: 16
- changes:
- - sqlFile:
- path: changelog/db/changes/16-insert-cm-handle-state-forward.sql
- rollback:
- - sqlFile:
- path: changelog/db/changes/16-insert-cm-handle-state-rollback.sql \ No newline at end of file
diff --git a/cps-ri/src/main/resources/changelog/db/changes/17-add-index-to-schema-set-yang-resources.yaml b/cps-ri/src/main/resources/changelog/db/changes/17-add-index-to-schema-set-yang-resources.yaml
deleted file mode 100644
index bc1672510..000000000
--- a/cps-ri/src/main/resources/changelog/db/changes/17-add-index-to-schema-set-yang-resources.yaml
+++ /dev/null
@@ -1,15 +0,0 @@
-databaseChangeLog:
- - changeSet:
- author: cps
- id: 17
- changes:
- - createIndex:
- columns:
- - column:
- name: schema_set_id
- indexName: FKI_SCHEMA_SET_YANG_RESOURCES_SCHEMA_SET_ID_FK
- tableName: schema_set_yang_resources
- rollback:
- - dropIndex:
- indexName: FKI_SCHEMA_SET_YANG_RESOURCES_SCHEMA_SET_ID_FK
- tableName: schema_set_yang_resources
diff --git a/cps-ri/src/main/resources/changelog/db/changes/18-cascade-delete-fragment-children.yaml b/cps-ri/src/main/resources/changelog/db/changes/18-cascade-delete-fragment-children.yaml
deleted file mode 100644
index 62a9e2f63..000000000
--- a/cps-ri/src/main/resources/changelog/db/changes/18-cascade-delete-fragment-children.yaml
+++ /dev/null
@@ -1,34 +0,0 @@
-databaseChangeLog:
- - changeSet:
- author: cps
- id: 18
- changes:
- - dropForeignKeyConstraint:
- baseTableName: fragment
- constraintName: fragment_parent_id_fkey
- - addForeignKeyConstraint:
- baseColumnNames: parent_id
- baseTableName: fragment
- constraintName: fragment_parent_id_fkey
- deferrable: false
- initiallyDeferred: false
- onDelete: CASCADE
- onUpdate: NO ACTION
- referencedColumnNames: id
- referencedTableName: fragment
- validate: true
- rollback:
- - dropForeignKeyConstraint:
- baseTableName: fragment
- constraintName: fragment_parent_id_fkey
- - addForeignKeyConstraint:
- baseColumnNames: parent_id
- baseTableName: fragment
- constraintName: fragment_parent_id_fkey
- deferrable: false
- initiallyDeferred: false
- onDelete: NO ACTION
- onUpdate: NO ACTION
- referencedColumnNames: id
- referencedTableName: fragment
- validate: true
diff --git a/cps-ri/src/main/resources/changelog/db/changes/19-delete-not-required-dataspace-id-from-fragment.yaml b/cps-ri/src/main/resources/changelog/db/changes/19-delete-not-required-dataspace-id-from-fragment.yaml
deleted file mode 100644
index 7b91bd5b3..000000000
--- a/cps-ri/src/main/resources/changelog/db/changes/19-delete-not-required-dataspace-id-from-fragment.yaml
+++ /dev/null
@@ -1,109 +0,0 @@
-# ============LICENSE_START=======================================================
-# Copyright (C) 2023 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:
- id: 19-1
- author: cps
- changes:
- - dropIndex:
- indexName: FKI_FRAGMENT_DATASPACE_ID_FK
- tableName: fragment
- rollback:
- - createIndex:
- columns:
- - column:
- name: dataspace_id
- indexName: FKI_FRAGMENT_DATASPACE_ID_FK
- tableName: fragment
-
- - changeSet:
- id: 19-2
- author: cps
- changes:
- - dropUniqueConstraint:
- constraintName: fragment_dataspace_id_anchor_id_xpath_key
- tableName: fragment
- - addUniqueConstraint:
- columnNames: anchor_id, xpath
- constraintName: fragment_anchor_id_xpath_key
- tableName: fragment
- rollback:
- - dropUniqueConstraint:
- constraintName: fragment_anchor_id_xpath_key
- tableName: fragment
- - addUniqueConstraint:
- columnNames: dataspace_id, anchor_id, xpath
- constraintName: fragment_dataspace_id_anchor_id_xpath_key
- tableName: fragment
-
- - changeSet:
- id: 19-3
- author: cps
- changes:
- - dropForeignKeyConstraint:
- baseTableName: fragment
- constraintName: fragment_dataspace_id_fkey
- rollback:
- - addForeignKeyConstraint:
- baseColumnNames: dataspace_id
- baseTableName: fragment
- constraintName: fragment_dataspace_id_fkey
- deferrable: false
- initiallyDeferred: false
- onDelete: NO ACTION
- onUpdate: NO ACTION
- referencedColumnNames: id
- referencedTableName: dataspace
- validate: true
-
- - changeSet:
- id: 19-4
- author: cps
- changes:
- - dropColumn:
- columnName: dataspace_id
- tableName: fragment
- rollback:
- - addColumn:
- tableName: fragment
- columns:
- - column:
- name: dataspace_id
- type: INTEGER
- - sqlFile:
- path: changelog/db/changes/19-repopulate-dataspace-id-for-rollback.sql
- - addNotNullConstraint:
- tableName: fragment
- columnName: dataspace_id
- columnDataType: INTEGER
-
- - changeSet:
- id: 19-5
- author: cps
- changes:
- - addNotNullConstraint:
- tableName: fragment
- columnName: anchor_id
- columnDataType: BIGINT
- rollback:
- - dropNotNullConstraint:
- tableName: fragment
- columnName: anchor_id
- columnDataType: BIGINT
diff --git a/cps-ri/src/main/resources/changelog/db/changes/20-change-foreign-key-id-types-to-integer.yaml b/cps-ri/src/main/resources/changelog/db/changes/20-change-foreign-key-id-types-to-integer.yaml
deleted file mode 100644
index 4c0cd9f33..000000000
--- a/cps-ri/src/main/resources/changelog/db/changes/20-change-foreign-key-id-types-to-integer.yaml
+++ /dev/null
@@ -1,48 +0,0 @@
-# ============LICENSE_START=======================================================
-# Copyright (C) 2023 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
- id: 20
- changes:
- - modifyDataType:
- columnName: dataspace_id
- newDataType: INTEGER
- tableName: schema_set
- - modifyDataType:
- columnName: schema_set_id
- newDataType: INTEGER
- tableName: schema_set_yang_resources
- - modifyDataType:
- columnName: yang_resource_id
- newDataType: INTEGER
- tableName: schema_set_yang_resources
- rollback:
- - modifyDataType:
- columnName: dataspace_id
- newDataType: BIGINT
- tableName: schema_set
- - modifyDataType:
- columnName: schema_set_id
- newDataType: BIGINT
- tableName: schema_set_yang_resources
- - modifyDataType:
- columnName: yang_resource_id
- newDataType: BIGINT
- tableName: schema_set_yang_resources
diff --git a/cps-ri/src/main/resources/changelog/db/changes/21-escape-quotes-in-xpath.yaml b/cps-ri/src/main/resources/changelog/db/changes/21-escape-quotes-in-xpath.yaml
deleted file mode 100644
index 7b5b1dbd0..000000000
--- a/cps-ri/src/main/resources/changelog/db/changes/21-escape-quotes-in-xpath.yaml
+++ /dev/null
@@ -1,29 +0,0 @@
-# ============LICENSE_START=======================================================
-# Copyright (C) 2023 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:
- id: 21
- author: cps
- changes:
- - sqlFile:
- path: changelog/db/changes/21-escape-quotes-in-xpath-forward.sql
- rollback:
- - sqlFile:
- path: changelog/db/changes/21-escape-quotes-in-xpath-rollback.sql
diff --git a/cps-ri/src/main/resources/changelog/db/changes/data/anchor.csv b/cps-ri/src/main/resources/changelog/db/changes/data/anchor.csv
deleted file mode 100644
index 78dd91419..000000000
--- a/cps-ri/src/main/resources/changelog/db/changes/data/anchor.csv
+++ /dev/null
@@ -1,2 +0,0 @@
-name|schema_set_id|dataspace_id
-ran-network-simulation|(select id from schema_set where name='cps-ran-schema-model')|(select id from dataspace where name='NFP-Operational')
diff --git a/cps-ri/src/main/resources/changelog/db/changes/data/dataspace.csv b/cps-ri/src/main/resources/changelog/db/changes/data/dataspace.csv
deleted file mode 100644
index 70b4af681..000000000
--- a/cps-ri/src/main/resources/changelog/db/changes/data/dataspace.csv
+++ /dev/null
@@ -1,2 +0,0 @@
-name
-NFP-Operational
diff --git a/cps-ri/src/main/resources/changelog/db/changes/data/dmi/anchor.csv b/cps-ri/src/main/resources/changelog/db/changes/data/dmi/anchor.csv
deleted file mode 100644
index 7a0df2137..000000000
--- a/cps-ri/src/main/resources/changelog/db/changes/data/dmi/anchor.csv
+++ /dev/null
@@ -1,2 +0,0 @@
-name|schema_set_id|dataspace_id
-ncmp-dmi-registry|(select id from schema_set where name='ncmp-dmi-registry-model')|(select id from dataspace where name='NCMP-Admin')
diff --git a/cps-ri/src/main/resources/changelog/db/changes/data/dmi/dataspace.csv b/cps-ri/src/main/resources/changelog/db/changes/data/dmi/dataspace.csv
deleted file mode 100644
index 4fb2eec19..000000000
--- a/cps-ri/src/main/resources/changelog/db/changes/data/dmi/dataspace.csv
+++ /dev/null
@@ -1,2 +0,0 @@
-name
-NCMP-Admin
diff --git a/cps-ri/src/main/resources/changelog/db/changes/data/dmi/fragment.csv b/cps-ri/src/main/resources/changelog/db/changes/data/dmi/fragment.csv
deleted file mode 100644
index 52aef0e23..000000000
--- a/cps-ri/src/main/resources/changelog/db/changes/data/dmi/fragment.csv
+++ /dev/null
@@ -1,2 +0,0 @@
-id|xpath|attributes|anchor_id|parent_id|dataspace_id|schema_node_id
-144|/dmi-registry|{}|(select id from anchor where name='ncmp-dmi-registry')|null|(select id from dataspace where name='NCMP-Admin')|null \ No newline at end of file
diff --git a/cps-ri/src/main/resources/changelog/db/changes/data/dmi/schema_set.csv b/cps-ri/src/main/resources/changelog/db/changes/data/dmi/schema_set.csv
deleted file mode 100644
index 936239b37..000000000
--- a/cps-ri/src/main/resources/changelog/db/changes/data/dmi/schema_set.csv
+++ /dev/null
@@ -1,2 +0,0 @@
-name|dataspace_id
-ncmp-dmi-registry-model|(select id from dataspace where name='NCMP-Admin')
diff --git a/cps-ri/src/main/resources/changelog/db/changes/data/dmi/schema_set_yang_resources.csv b/cps-ri/src/main/resources/changelog/db/changes/data/dmi/schema_set_yang_resources.csv
deleted file mode 100644
index 9183d38ff..000000000
--- a/cps-ri/src/main/resources/changelog/db/changes/data/dmi/schema_set_yang_resources.csv
+++ /dev/null
@@ -1,3 +0,0 @@
-schema_set_id|yang_resource_id
-(select id from schema_set where name='ncmp-dmi-registry-model')|(select id from yang_resource where name='dmi-registry@2021-05-20.yang')
-
diff --git a/cps-ri/src/main/resources/changelog/db/changes/data/dmi/schema_set_yang_resources@2021-10-20.csv b/cps-ri/src/main/resources/changelog/db/changes/data/dmi/schema_set_yang_resources@2021-10-20.csv
deleted file mode 100644
index d419fc92b..000000000
--- a/cps-ri/src/main/resources/changelog/db/changes/data/dmi/schema_set_yang_resources@2021-10-20.csv
+++ /dev/null
@@ -1,3 +0,0 @@
-schema_set_id|yang_resource_id
-(select id from schema_set where name='ncmp-dmi-registry-model')|(select id from yang_resource where name='dmi-registry@2021-10-20.yang')
-
diff --git a/cps-ri/src/main/resources/changelog/db/changes/data/dmi/schema_set_yang_resources@2021-12-13.csv b/cps-ri/src/main/resources/changelog/db/changes/data/dmi/schema_set_yang_resources@2021-12-13.csv
deleted file mode 100644
index 3e8afdd4e..000000000
--- a/cps-ri/src/main/resources/changelog/db/changes/data/dmi/schema_set_yang_resources@2021-12-13.csv
+++ /dev/null
@@ -1,3 +0,0 @@
-schema_set_id|yang_resource_id
-(select id from schema_set where name='ncmp-dmi-registry-model')|(select id from yang_resource where name='dmi-registry@2021-12-13.yang')
-
diff --git a/cps-ri/src/main/resources/changelog/db/changes/data/dmi/yang_resource.csv b/cps-ri/src/main/resources/changelog/db/changes/data/dmi/yang_resource.csv
deleted file mode 100644
index 35e2bcdd8..000000000
--- a/cps-ri/src/main/resources/changelog/db/changes/data/dmi/yang_resource.csv
+++ /dev/null
@@ -1,48 +0,0 @@
-name|content|checksum
-dmi-registry@2021-05-20.yang|"module dmi-registry {
-
- yang-version 1.1;
-
- namespace \"org:onap:cps:ncmp\";
-
- prefix dmi-reg;
-
- organization \"Nordix Foundation\";
-
- contact \"rahul.tyagi@est.tech\";
-
- 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;
- }
-
- list additional-properties {
-
- key \"name\";
-
- leaf name {
- type string;
- }
-
- leaf value {
- type string;
- }
- }
- }
- }
-}
-"|257b264cd091436f74f9c92512b507459615391f7006fc40b74b6866dbe1b379 \ No newline at end of file
diff --git a/cps-ri/src/main/resources/changelog/db/changes/data/dmi/yang_resource@2021-10-20.csv b/cps-ri/src/main/resources/changelog/db/changes/data/dmi/yang_resource@2021-10-20.csv
deleted file mode 100644
index 80caea214..000000000
--- a/cps-ri/src/main/resources/changelog/db/changes/data/dmi/yang_resource@2021-10-20.csv
+++ /dev/null
@@ -1,53 +0,0 @@
-name|content|checksum
-dmi-registry@2021-10-20.yang|"module dmi-registry {
-
- yang-version 1.1;
-
- namespace \"org:onap:cps:ncmp\";
-
- prefix dmi-reg;
-
- organization \"Nordix Foundation\";
-
- contact \"rahul.tyagi@est.tech\";
-
- revision \"2021-10-20\" {
- description
- \"Added dmi-data-service-name & dmi-model-service-name to allow separate DMI instances for each responsibility\";
- }
-
- 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;
- }
- }
- }
- }
-}
-"|f9145662dfc97363297dc1c06b8bde3a8621c658abefd56946faaab240714181
diff --git a/cps-ri/src/main/resources/changelog/db/changes/data/fragment.csv b/cps-ri/src/main/resources/changelog/db/changes/data/fragment.csv
deleted file mode 100644
index 81c379d0d..000000000
--- a/cps-ri/src/main/resources/changelog/db/changes/data/fragment.csv
+++ /dev/null
@@ -1,144 +0,0 @@
-id|xpath|attributes|anchor_id|parent_id|dataspace_id|schema_node_id
-1|/cps-ran-schema|{}|(select id from anchor where name='ran-network-simulation')|null|(select id from dataspace where name='NFP-Operational')|null
-2|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]|"{"idNearRTRIC": "11"}"|(select id from anchor where name='ran-network-simulation')|1|(select id from dataspace where name='NFP-Operational')|null
-73|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]|"{"idNearRTRIC": "22"}"|(select id from anchor where name='ran-network-simulation')|1|(select id from dataspace where name='NFP-Operational')|null
-3|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver1"]|"{"idGNBCUCPFunction": "cucpserver1"}"|(select id from anchor where name='ran-network-simulation')|2|(select id from dataspace where name='NFP-Operational')|null
-35|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBDUFunction[@idGNBDUFunction="1"]|"{"idGNBDUFunction": "1"}"|(select id from anchor where name='ran-network-simulation')|2|(select id from dataspace where name='NFP-Operational')|null
-47|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBDUFunction[@idGNBDUFunction="2"]|"{"idGNBDUFunction": "2"}"|(select id from anchor where name='ran-network-simulation')|2|(select id from dataspace where name='NFP-Operational')|null
-59|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBDUFunction[@idGNBDUFunction="3"]|"{"idGNBDUFunction": "3"}"|(select id from anchor where name='ran-network-simulation')|2|(select id from dataspace where name='NFP-Operational')|null
-71|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBCUUPFunction[@idGNBCUUPFunction="1111"]|"{"idGNBCUUPFunction": "1111"}"|(select id from anchor where name='ran-network-simulation')|2|(select id from dataspace where name='NFP-Operational')|null
-4|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver1"]/attributes|"{"gNBId": 98763, "gNBCUName": "cucpserver1", "gNBIdLength": 32}"|(select id from anchor where name='ran-network-simulation')|3|(select id from dataspace where name='NFP-Operational')|null
-5|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver1"]/NRCellCU[@idNRCellCU="15290"]|"{"idNRCellCU": "15290"}"|(select id from anchor where name='ran-network-simulation')|3|(select id from dataspace where name='NFP-Operational')|null
-7|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver1"]/NRCellCU[@idNRCellCU="15175"]|"{"idNRCellCU": "15175"}"|(select id from anchor where name='ran-network-simulation')|3|(select id from dataspace where name='NFP-Operational')|null
-9|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver1"]/NRCellCU[@idNRCellCU="15296"]|"{"idNRCellCU": "15296"}"|(select id from anchor where name='ran-network-simulation')|3|(select id from dataspace where name='NFP-Operational')|null
-11|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver1"]/NRCellCU[@idNRCellCU="15176"]|"{"idNRCellCU": "15176"}"|(select id from anchor where name='ran-network-simulation')|3|(select id from dataspace where name='NFP-Operational')|null
-13|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver1"]/NRCellCU[@idNRCellCU="15174"]|"{"idNRCellCU": "15174"}"|(select id from anchor where name='ran-network-simulation')|3|(select id from dataspace where name='NFP-Operational')|null
-15|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver1"]/NRCellCU[@idNRCellCU="15289"]|"{"idNRCellCU": "15289"}"|(select id from anchor where name='ran-network-simulation')|3|(select id from dataspace where name='NFP-Operational')|null
-17|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver1"]/NRCellCU[@idNRCellCU="14000"]|"{"idNRCellCU": "14000"}"|(select id from anchor where name='ran-network-simulation')|3|(select id from dataspace where name='NFP-Operational')|null
-19|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver1"]/NRCellCU[@idNRCellCU="15155"]|"{"idNRCellCU": "15155"}"|(select id from anchor where name='ran-network-simulation')|3|(select id from dataspace where name='NFP-Operational')|null
-21|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver1"]/NRCellCU[@idNRCellCU="15425"]|"{"idNRCellCU": "15425"}"|(select id from anchor where name='ran-network-simulation')|3|(select id from dataspace where name='NFP-Operational')|null
-23|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver1"]/NRCellCU[@idNRCellCU="15689"]|"{"idNRCellCU": "15689"}"|(select id from anchor where name='ran-network-simulation')|3|(select id from dataspace where name='NFP-Operational')|null
-25|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver1"]/NRCellCU[@idNRCellCU="15426"]|"{"idNRCellCU": "15426"}"|(select id from anchor where name='ran-network-simulation')|3|(select id from dataspace where name='NFP-Operational')|null
-27|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver1"]/NRCellCU[@idNRCellCU="15687"]|"{"idNRCellCU": "15687"}"|(select id from anchor where name='ran-network-simulation')|3|(select id from dataspace where name='NFP-Operational')|null
-29|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver1"]/NRCellCU[@idNRCellCU="15825"]|"{"idNRCellCU": "15825"}"|(select id from anchor where name='ran-network-simulation')|3|(select id from dataspace where name='NFP-Operational')|null
-31|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver1"]/NRCellCU[@idNRCellCU="15826"]|"{"idNRCellCU": "15826"}"|(select id from anchor where name='ran-network-simulation')|3|(select id from dataspace where name='NFP-Operational')|null
-33|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver1"]/NRCellCU[@idNRCellCU="13999"]|"{"idNRCellCU": "13999"}"|(select id from anchor where name='ran-network-simulation')|3|(select id from dataspace where name='NFP-Operational')|null
-6|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver1"]/NRCellCU[@idNRCellCU="15290"]/attributes|"{"cellLocalId": 15290}"|(select id from anchor where name='ran-network-simulation')|5|(select id from dataspace where name='NFP-Operational')|null
-8|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver1"]/NRCellCU[@idNRCellCU="15175"]/attributes|"{"cellLocalId": 15175}"|(select id from anchor where name='ran-network-simulation')|7|(select id from dataspace where name='NFP-Operational')|null
-10|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver1"]/NRCellCU[@idNRCellCU="15296"]/attributes|"{"cellLocalId": 15296}"|(select id from anchor where name='ran-network-simulation')|9|(select id from dataspace where name='NFP-Operational')|null
-12|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver1"]/NRCellCU[@idNRCellCU="15176"]/attributes|"{"cellLocalId": 15176}"|(select id from anchor where name='ran-network-simulation')|11|(select id from dataspace where name='NFP-Operational')|null
-14|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver1"]/NRCellCU[@idNRCellCU="15174"]/attributes|"{"cellLocalId": 15174}"|(select id from anchor where name='ran-network-simulation')|13|(select id from dataspace where name='NFP-Operational')|null
-16|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver1"]/NRCellCU[@idNRCellCU="15289"]/attributes|"{"cellLocalId": 15289}"|(select id from anchor where name='ran-network-simulation')|15|(select id from dataspace where name='NFP-Operational')|null
-18|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver1"]/NRCellCU[@idNRCellCU="14000"]/attributes|"{"cellLocalId": 14000}"|(select id from anchor where name='ran-network-simulation')|17|(select id from dataspace where name='NFP-Operational')|null
-20|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver1"]/NRCellCU[@idNRCellCU="15155"]/attributes|"{"cellLocalId": 15155}"|(select id from anchor where name='ran-network-simulation')|19|(select id from dataspace where name='NFP-Operational')|null
-22|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver1"]/NRCellCU[@idNRCellCU="15425"]/attributes|"{"cellLocalId": 15425}"|(select id from anchor where name='ran-network-simulation')|21|(select id from dataspace where name='NFP-Operational')|null
-24|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver1"]/NRCellCU[@idNRCellCU="15689"]/attributes|"{"cellLocalId": 15689}"|(select id from anchor where name='ran-network-simulation')|23|(select id from dataspace where name='NFP-Operational')|null
-26|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver1"]/NRCellCU[@idNRCellCU="15426"]/attributes|"{"cellLocalId": 15426}"|(select id from anchor where name='ran-network-simulation')|25|(select id from dataspace where name='NFP-Operational')|null
-28|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver1"]/NRCellCU[@idNRCellCU="15687"]/attributes|"{"cellLocalId": 15687}"|(select id from anchor where name='ran-network-simulation')|27|(select id from dataspace where name='NFP-Operational')|null
-30|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver1"]/NRCellCU[@idNRCellCU="15825"]/attributes|"{"cellLocalId": 15825}"|(select id from anchor where name='ran-network-simulation')|29|(select id from dataspace where name='NFP-Operational')|null
-32|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver1"]/NRCellCU[@idNRCellCU="15826"]/attributes|"{"cellLocalId": 15826}"|(select id from anchor where name='ran-network-simulation')|31|(select id from dataspace where name='NFP-Operational')|null
-34|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver1"]/NRCellCU[@idNRCellCU="13999"]/attributes|"{"cellLocalId": 13999}"|(select id from anchor where name='ran-network-simulation')|33|(select id from dataspace where name='NFP-Operational')|null
-36|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBDUFunction[@idGNBDUFunction="1"]/attributes|"{"gNBDUId": 1, "gNBDUName": "gnduserver1", "gNBIdLength": 32}"|(select id from anchor where name='ran-network-simulation')|35|(select id from dataspace where name='NFP-Operational')|null
-37|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBDUFunction[@idGNBDUFunction="1"]/NRCellDU[@idNRCellDU="15289"]|"{"idNRCellDU": "15289"}"|(select id from anchor where name='ran-network-simulation')|35|(select id from dataspace where name='NFP-Operational')|null
-39|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBDUFunction[@idGNBDUFunction="1"]/NRCellDU[@idNRCellDU="15290"]|"{"idNRCellDU": "15290"}"|(select id from anchor where name='ran-network-simulation')|35|(select id from dataspace where name='NFP-Operational')|null
-41|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBDUFunction[@idGNBDUFunction="1"]/NRCellDU[@idNRCellDU="15296"]|"{"idNRCellDU": "15296"}"|(select id from anchor where name='ran-network-simulation')|35|(select id from dataspace where name='NFP-Operational')|null
-43|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBDUFunction[@idGNBDUFunction="1"]/NRCellDU[@idNRCellDU="15689"]|"{"idNRCellDU": "15689"}"|(select id from anchor where name='ran-network-simulation')|35|(select id from dataspace where name='NFP-Operational')|null
-45|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBDUFunction[@idGNBDUFunction="1"]/NRCellDU[@idNRCellDU="15687"]|"{"idNRCellDU": "15687"}"|(select id from anchor where name='ran-network-simulation')|35|(select id from dataspace where name='NFP-Operational')|null
-38|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBDUFunction[@idGNBDUFunction="1"]/NRCellDU[@idNRCellDU="15289"]/attributes|"{"nRPCI": 12, "nRTAC": 310, "cellLocalId": 15289}"|(select id from anchor where name='ran-network-simulation')|37|(select id from dataspace where name='NFP-Operational')|null
-40|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBDUFunction[@idGNBDUFunction="1"]/NRCellDU[@idNRCellDU="15290"]/attributes|"{"nRPCI": 12, "nRTAC": 310, "cellLocalId": 15290}"|(select id from anchor where name='ran-network-simulation')|39|(select id from dataspace where name='NFP-Operational')|null
-42|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBDUFunction[@idGNBDUFunction="1"]/NRCellDU[@idNRCellDU="15296"]/attributes|"{"nRPCI": 12, "nRTAC": 310, "cellLocalId": 15296}"|(select id from anchor where name='ran-network-simulation')|41|(select id from dataspace where name='NFP-Operational')|null
-44|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBDUFunction[@idGNBDUFunction="1"]/NRCellDU[@idNRCellDU="15689"]/attributes|"{"nRPCI": 12, "nRTAC": 310, "cellLocalId": 15689}"|(select id from anchor where name='ran-network-simulation')|43|(select id from dataspace where name='NFP-Operational')|null
-46|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBDUFunction[@idGNBDUFunction="1"]/NRCellDU[@idNRCellDU="15687"]/attributes|"{"nRPCI": 12, "nRTAC": 310, "cellLocalId": 15687}"|(select id from anchor where name='ran-network-simulation')|45|(select id from dataspace where name='NFP-Operational')|null
-48|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBDUFunction[@idGNBDUFunction="2"]/attributes|"{"gNBDUId": 2, "gNBDUName": "gnduserver2", "gNBIdLength": 32}"|(select id from anchor where name='ran-network-simulation')|47|(select id from dataspace where name='NFP-Operational')|null
-49|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBDUFunction[@idGNBDUFunction="2"]/NRCellDU[@idNRCellDU="15825"]|"{"idNRCellDU": "15825"}"|(select id from anchor where name='ran-network-simulation')|47|(select id from dataspace where name='NFP-Operational')|null
-51|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBDUFunction[@idGNBDUFunction="2"]/NRCellDU[@idNRCellDU="15155"]|"{"idNRCellDU": "15155"}"|(select id from anchor where name='ran-network-simulation')|47|(select id from dataspace where name='NFP-Operational')|null
-53|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBDUFunction[@idGNBDUFunction="2"]/NRCellDU[@idNRCellDU="15175"]|"{"idNRCellDU": "15175"}"|(select id from anchor where name='ran-network-simulation')|47|(select id from dataspace where name='NFP-Operational')|null
-55|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBDUFunction[@idGNBDUFunction="2"]/NRCellDU[@idNRCellDU="15176"]|"{"idNRCellDU": "15176"}"|(select id from anchor where name='ran-network-simulation')|47|(select id from dataspace where name='NFP-Operational')|null
-57|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBDUFunction[@idGNBDUFunction="2"]/NRCellDU[@idNRCellDU="15174"]|"{"idNRCellDU": "15174"}"|(select id from anchor where name='ran-network-simulation')|47|(select id from dataspace where name='NFP-Operational')|null
-50|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBDUFunction[@idGNBDUFunction="2"]/NRCellDU[@idNRCellDU="15825"]/attributes|"{"nRPCI": 12, "nRTAC": 310, "cellLocalId": 15825}"|(select id from anchor where name='ran-network-simulation')|49|(select id from dataspace where name='NFP-Operational')|null
-52|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBDUFunction[@idGNBDUFunction="2"]/NRCellDU[@idNRCellDU="15155"]/attributes|"{"nRPCI": 12, "nRTAC": 310, "cellLocalId": 15155}"|(select id from anchor where name='ran-network-simulation')|51|(select id from dataspace where name='NFP-Operational')|null
-54|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBDUFunction[@idGNBDUFunction="2"]/NRCellDU[@idNRCellDU="15175"]/attributes|"{"nRPCI": 12, "nRTAC": 310, "cellLocalId": 15175}"|(select id from anchor where name='ran-network-simulation')|53|(select id from dataspace where name='NFP-Operational')|null
-56|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBDUFunction[@idGNBDUFunction="2"]/NRCellDU[@idNRCellDU="15176"]/attributes|"{"nRPCI": 12, "nRTAC": 310, "cellLocalId": 15176}"|(select id from anchor where name='ran-network-simulation')|55|(select id from dataspace where name='NFP-Operational')|null
-58|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBDUFunction[@idGNBDUFunction="2"]/NRCellDU[@idNRCellDU="15174"]/attributes|"{"nRPCI": 12, "nRTAC": 310, "cellLocalId": 15174}"|(select id from anchor where name='ran-network-simulation')|57|(select id from dataspace where name='NFP-Operational')|null
-60|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBDUFunction[@idGNBDUFunction="3"]/attributes|"{"gNBDUId": 3, "gNBDUName": "gnduserver3", "gNBIdLength": 32}"|(select id from anchor where name='ran-network-simulation')|59|(select id from dataspace where name='NFP-Operational')|null
-61|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBDUFunction[@idGNBDUFunction="3"]/NRCellDU[@idNRCellDU="15826"]|"{"idNRCellDU": "15826"}"|(select id from anchor where name='ran-network-simulation')|59|(select id from dataspace where name='NFP-Operational')|null
-63|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBDUFunction[@idGNBDUFunction="3"]/NRCellDU[@idNRCellDU="14000"]|"{"idNRCellDU": "14000"}"|(select id from anchor where name='ran-network-simulation')|59|(select id from dataspace where name='NFP-Operational')|null
-65|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBDUFunction[@idGNBDUFunction="3"]/NRCellDU[@idNRCellDU="13999"]|"{"idNRCellDU": "13999"}"|(select id from anchor where name='ran-network-simulation')|59|(select id from dataspace where name='NFP-Operational')|null
-67|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBDUFunction[@idGNBDUFunction="3"]/NRCellDU[@idNRCellDU="15425"]|"{"idNRCellDU": "15425"}"|(select id from anchor where name='ran-network-simulation')|59|(select id from dataspace where name='NFP-Operational')|null
-69|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBDUFunction[@idGNBDUFunction="3"]/NRCellDU[@idNRCellDU="15426"]|"{"idNRCellDU": "15426"}"|(select id from anchor where name='ran-network-simulation')|59|(select id from dataspace where name='NFP-Operational')|null
-62|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBDUFunction[@idGNBDUFunction="3"]/NRCellDU[@idNRCellDU="15826"]/attributes|"{"nRPCI": 12, "nRTAC": 310, "cellLocalId": 15826}"|(select id from anchor where name='ran-network-simulation')|61|(select id from dataspace where name='NFP-Operational')|null
-64|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBDUFunction[@idGNBDUFunction="3"]/NRCellDU[@idNRCellDU="14000"]/attributes|"{"nRPCI": 12, "nRTAC": 310, "cellLocalId": 14000}"|(select id from anchor where name='ran-network-simulation')|63|(select id from dataspace where name='NFP-Operational')|null
-66|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBDUFunction[@idGNBDUFunction="3"]/NRCellDU[@idNRCellDU="13999"]/attributes|"{"nRPCI": 12, "nRTAC": 310, "cellLocalId": 13999}"|(select id from anchor where name='ran-network-simulation')|65|(select id from dataspace where name='NFP-Operational')|null
-68|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBDUFunction[@idGNBDUFunction="3"]/NRCellDU[@idNRCellDU="15425"]/attributes|"{"nRPCI": 12, "nRTAC": 310, "cellLocalId": 15425}"|(select id from anchor where name='ran-network-simulation')|67|(select id from dataspace where name='NFP-Operational')|null
-70|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBDUFunction[@idGNBDUFunction="3"]/NRCellDU[@idNRCellDU="15426"]/attributes|"{"nRPCI": 12, "nRTAC": 310, "cellLocalId": 15426}"|(select id from anchor where name='ran-network-simulation')|69|(select id from dataspace where name='NFP-Operational')|null
-72|/cps-ran-schema/NearRTRIC[@idNearRTRIC="11"]/GNBCUUPFunction[@idGNBCUUPFunction="1111"]/attributes|"{"gNBId": 98763}"|(select id from anchor where name='ran-network-simulation')|71|(select id from dataspace where name='NFP-Operational')|null
-74|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver2"]|"{"idGNBCUCPFunction": "cucpserver2"}"|(select id from anchor where name='ran-network-simulation')|73|(select id from dataspace where name='NFP-Operational')|null
-106|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBDUFunction[@idGNBDUFunction="4"]|"{"idGNBDUFunction": "4"}"|(select id from anchor where name='ran-network-simulation')|73|(select id from dataspace where name='NFP-Operational')|null
-118|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBDUFunction[@idGNBDUFunction="5"]|"{"idGNBDUFunction": "5"}"|(select id from anchor where name='ran-network-simulation')|73|(select id from dataspace where name='NFP-Operational')|null
-130|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBDUFunction[@idGNBDUFunction="6"]|"{"idGNBDUFunction": "6"}"|(select id from anchor where name='ran-network-simulation')|73|(select id from dataspace where name='NFP-Operational')|null
-142|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBCUUPFunction[@idGNBCUUPFunction="2222"]|"{"idGNBCUUPFunction": "2222"}"|(select id from anchor where name='ran-network-simulation')|73|(select id from dataspace where name='NFP-Operational')|null
-75|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver2"]/attributes|"{"gNBId": 98763, "gNBCUName": "cucpserver2", "gNBIdLength": 32}"|(select id from anchor where name='ran-network-simulation')|74|(select id from dataspace where name='NFP-Operational')|null
-76|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver2"]/NRCellCU[@idNRCellCU="15360"]|"{"idNRCellCU": "15360"}"|(select id from anchor where name='ran-network-simulation')|74|(select id from dataspace where name='NFP-Operational')|null
-78|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver2"]/NRCellCU[@idNRCellCU="15361"]|"{"idNRCellCU": "15361"}"|(select id from anchor where name='ran-network-simulation')|74|(select id from dataspace where name='NFP-Operational')|null
-80|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver2"]/NRCellCU[@idNRCellCU="11561"]|"{"idNRCellCU": "11561"}"|(select id from anchor where name='ran-network-simulation')|74|(select id from dataspace where name='NFP-Operational')|null
-82|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver2"]/NRCellCU[@idNRCellCU="11562"]|"{"idNRCellCU": "11562"}"|(select id from anchor where name='ran-network-simulation')|74|(select id from dataspace where name='NFP-Operational')|null
-84|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver2"]/NRCellCU[@idNRCellCU="14655"]|"{"idNRCellCU": "14655"}"|(select id from anchor where name='ran-network-simulation')|74|(select id from dataspace where name='NFP-Operational')|null
-86|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver2"]/NRCellCU[@idNRCellCU="14656"]|"{"idNRCellCU": "14656"}"|(select id from anchor where name='ran-network-simulation')|74|(select id from dataspace where name='NFP-Operational')|null
-88|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver2"]/NRCellCU[@idNRCellCU="13910"]|"{"idNRCellCU": "13910"}"|(select id from anchor where name='ran-network-simulation')|74|(select id from dataspace where name='NFP-Operational')|null
-90|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver2"]/NRCellCU[@idNRCellCU="10896"]|"{"idNRCellCU": "10896"}"|(select id from anchor where name='ran-network-simulation')|74|(select id from dataspace where name='NFP-Operational')|null
-92|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver2"]/NRCellCU[@idNRCellCU="10897"]|"{"idNRCellCU": "10897"}"|(select id from anchor where name='ran-network-simulation')|74|(select id from dataspace where name='NFP-Operational')|null
-94|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver2"]/NRCellCU[@idNRCellCU="11568"]|"{"idNRCellCU": "11568"}"|(select id from anchor where name='ran-network-simulation')|74|(select id from dataspace where name='NFP-Operational')|null
-96|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver2"]/NRCellCU[@idNRCellCU="15548"]|"{"idNRCellCU": "15548"}"|(select id from anchor where name='ran-network-simulation')|74|(select id from dataspace where name='NFP-Operational')|null
-98|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver2"]/NRCellCU[@idNRCellCU="11569"]|"{"idNRCellCU": "11569"}"|(select id from anchor where name='ran-network-simulation')|74|(select id from dataspace where name='NFP-Operational')|null
-100|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver2"]/NRCellCU[@idNRCellCU="14427"]|"{"idNRCellCU": "14427"}"|(select id from anchor where name='ran-network-simulation')|74|(select id from dataspace where name='NFP-Operational')|null
-102|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver2"]/NRCellCU[@idNRCellCU="15549"]|"{"idNRCellCU": "15549"}"|(select id from anchor where name='ran-network-simulation')|74|(select id from dataspace where name='NFP-Operational')|null
-104|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver2"]/NRCellCU[@idNRCellCU="13905"]|"{"idNRCellCU": "13905"}"|(select id from anchor where name='ran-network-simulation')|74|(select id from dataspace where name='NFP-Operational')|null
-77|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver2"]/NRCellCU[@idNRCellCU="15360"]/attributes|"{"cellLocalId": 15360}"|(select id from anchor where name='ran-network-simulation')|76|(select id from dataspace where name='NFP-Operational')|null
-79|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver2"]/NRCellCU[@idNRCellCU="15361"]/attributes|"{"cellLocalId": 15361}"|(select id from anchor where name='ran-network-simulation')|78|(select id from dataspace where name='NFP-Operational')|null
-81|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver2"]/NRCellCU[@idNRCellCU="11561"]/attributes|"{"cellLocalId": 11561}"|(select id from anchor where name='ran-network-simulation')|80|(select id from dataspace where name='NFP-Operational')|null
-83|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver2"]/NRCellCU[@idNRCellCU="11562"]/attributes|"{"cellLocalId": 11562}"|(select id from anchor where name='ran-network-simulation')|82|(select id from dataspace where name='NFP-Operational')|null
-85|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver2"]/NRCellCU[@idNRCellCU="14655"]/attributes|"{"cellLocalId": 14655}"|(select id from anchor where name='ran-network-simulation')|84|(select id from dataspace where name='NFP-Operational')|null
-87|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver2"]/NRCellCU[@idNRCellCU="14656"]/attributes|"{"cellLocalId": 14656}"|(select id from anchor where name='ran-network-simulation')|86|(select id from dataspace where name='NFP-Operational')|null
-89|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver2"]/NRCellCU[@idNRCellCU="13910"]/attributes|"{"cellLocalId": 13910}"|(select id from anchor where name='ran-network-simulation')|88|(select id from dataspace where name='NFP-Operational')|null
-91|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver2"]/NRCellCU[@idNRCellCU="10896"]/attributes|"{"cellLocalId": 10896}"|(select id from anchor where name='ran-network-simulation')|90|(select id from dataspace where name='NFP-Operational')|null
-93|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver2"]/NRCellCU[@idNRCellCU="10897"]/attributes|"{"cellLocalId": 10897}"|(select id from anchor where name='ran-network-simulation')|92|(select id from dataspace where name='NFP-Operational')|null
-95|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver2"]/NRCellCU[@idNRCellCU="11568"]/attributes|"{"cellLocalId": 11568}"|(select id from anchor where name='ran-network-simulation')|94|(select id from dataspace where name='NFP-Operational')|null
-97|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver2"]/NRCellCU[@idNRCellCU="15548"]/attributes|"{"cellLocalId": 15548}"|(select id from anchor where name='ran-network-simulation')|96|(select id from dataspace where name='NFP-Operational')|null
-99|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver2"]/NRCellCU[@idNRCellCU="11569"]/attributes|"{"cellLocalId": 11569}"|(select id from anchor where name='ran-network-simulation')|98|(select id from dataspace where name='NFP-Operational')|null
-101|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver2"]/NRCellCU[@idNRCellCU="14427"]/attributes|"{"cellLocalId": 14427}"|(select id from anchor where name='ran-network-simulation')|100|(select id from dataspace where name='NFP-Operational')|null
-103|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver2"]/NRCellCU[@idNRCellCU="15549"]/attributes|"{"cellLocalId": 15549}"|(select id from anchor where name='ran-network-simulation')|102|(select id from dataspace where name='NFP-Operational')|null
-105|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBCUCPFunction[@idGNBCUCPFunction="cucpserver2"]/NRCellCU[@idNRCellCU="13905"]/attributes|"{"cellLocalId": 13905}"|(select id from anchor where name='ran-network-simulation')|104|(select id from dataspace where name='NFP-Operational')|null
-107|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBDUFunction[@idGNBDUFunction="4"]/attributes|"{"gNBDUId": 4, "gNBDUName": "gnduserver4", "gNBIdLength": 32}"|(select id from anchor where name='ran-network-simulation')|106|(select id from dataspace where name='NFP-Operational')|null
-108|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBDUFunction[@idGNBDUFunction="4"]/NRCellDU[@idNRCellDU="10896"]|"{"idNRCellDU": "10896"}"|(select id from anchor where name='ran-network-simulation')|106|(select id from dataspace where name='NFP-Operational')|null
-110|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBDUFunction[@idGNBDUFunction="4"]/NRCellDU[@idNRCellDU="11568"]|"{"idNRCellDU": "11568"}"|(select id from anchor where name='ran-network-simulation')|106|(select id from dataspace where name='NFP-Operational')|null
-112|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBDUFunction[@idGNBDUFunction="4"]/NRCellDU[@idNRCellDU="11561"]|"{"idNRCellDU": "11561"}"|(select id from anchor where name='ran-network-simulation')|106|(select id from dataspace where name='NFP-Operational')|null
-114|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBDUFunction[@idGNBDUFunction="4"]/NRCellDU[@idNRCellDU="11569"]|"{"idNRCellDU": "11569"}"|(select id from anchor where name='ran-network-simulation')|106|(select id from dataspace where name='NFP-Operational')|null
-116|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBDUFunction[@idGNBDUFunction="4"]/NRCellDU[@idNRCellDU="11562"]|"{"idNRCellDU": "11562"}"|(select id from anchor where name='ran-network-simulation')|106|(select id from dataspace where name='NFP-Operational')|null
-109|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBDUFunction[@idGNBDUFunction="4"]/NRCellDU[@idNRCellDU="10896"]/attributes|"{"nRPCI": 12, "nRTAC": 310, "cellLocalId": 10896}"|(select id from anchor where name='ran-network-simulation')|108|(select id from dataspace where name='NFP-Operational')|null
-111|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBDUFunction[@idGNBDUFunction="4"]/NRCellDU[@idNRCellDU="11568"]/attributes|"{"nRPCI": 12, "nRTAC": 310, "cellLocalId": 11568}"|(select id from anchor where name='ran-network-simulation')|110|(select id from dataspace where name='NFP-Operational')|null
-113|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBDUFunction[@idGNBDUFunction="4"]/NRCellDU[@idNRCellDU="11561"]/attributes|"{"nRPCI": 12, "nRTAC": 310, "cellLocalId": 11561}"|(select id from anchor where name='ran-network-simulation')|112|(select id from dataspace where name='NFP-Operational')|null
-115|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBDUFunction[@idGNBDUFunction="4"]/NRCellDU[@idNRCellDU="11569"]/attributes|"{"nRPCI": 12, "nRTAC": 310, "cellLocalId": 11569}"|(select id from anchor where name='ran-network-simulation')|114|(select id from dataspace where name='NFP-Operational')|null
-117|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBDUFunction[@idGNBDUFunction="4"]/NRCellDU[@idNRCellDU="11562"]/attributes|"{"nRPCI": 12, "nRTAC": 310, "cellLocalId": 11562}"|(select id from anchor where name='ran-network-simulation')|116|(select id from dataspace where name='NFP-Operational')|null
-119|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBDUFunction[@idGNBDUFunction="5"]/attributes|"{"gNBDUId": 5, "gNBDUName": "gnduserver5", "gNBIdLength": 32}"|(select id from anchor where name='ran-network-simulation')|118|(select id from dataspace where name='NFP-Operational')|null
-120|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBDUFunction[@idGNBDUFunction="5"]/NRCellDU[@idNRCellDU="13910"]|"{"idNRCellDU": "13910"}"|(select id from anchor where name='ran-network-simulation')|118|(select id from dataspace where name='NFP-Operational')|null
-122|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBDUFunction[@idGNBDUFunction="5"]/NRCellDU[@idNRCellDU="10897"]|"{"idNRCellDU": "10897"}"|(select id from anchor where name='ran-network-simulation')|118|(select id from dataspace where name='NFP-Operational')|null
-124|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBDUFunction[@idGNBDUFunction="5"]/NRCellDU[@idNRCellDU="14655"]|"{"idNRCellDU": "14655"}"|(select id from anchor where name='ran-network-simulation')|118|(select id from dataspace where name='NFP-Operational')|null
-126|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBDUFunction[@idGNBDUFunction="5"]/NRCellDU[@idNRCellDU="14656"]|"{"idNRCellDU": "14656"}"|(select id from anchor where name='ran-network-simulation')|118|(select id from dataspace where name='NFP-Operational')|null
-128|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBDUFunction[@idGNBDUFunction="5"]/NRCellDU[@idNRCellDU="13905"]|"{"idNRCellDU": "13905"}"|(select id from anchor where name='ran-network-simulation')|118|(select id from dataspace where name='NFP-Operational')|null
-121|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBDUFunction[@idGNBDUFunction="5"]/NRCellDU[@idNRCellDU="13910"]/attributes|"{"nRPCI": 12, "nRTAC": 310, "cellLocalId": 13910}"|(select id from anchor where name='ran-network-simulation')|120|(select id from dataspace where name='NFP-Operational')|null
-123|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBDUFunction[@idGNBDUFunction="5"]/NRCellDU[@idNRCellDU="10897"]/attributes|"{"nRPCI": 12, "nRTAC": 310, "cellLocalId": 10897}"|(select id from anchor where name='ran-network-simulation')|122|(select id from dataspace where name='NFP-Operational')|null
-125|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBDUFunction[@idGNBDUFunction="5"]/NRCellDU[@idNRCellDU="14655"]/attributes|"{"nRPCI": 12, "nRTAC": 310, "cellLocalId": 14655}"|(select id from anchor where name='ran-network-simulation')|124|(select id from dataspace where name='NFP-Operational')|null
-127|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBDUFunction[@idGNBDUFunction="5"]/NRCellDU[@idNRCellDU="14656"]/attributes|"{"nRPCI": 12, "nRTAC": 310, "cellLocalId": 14656}"|(select id from anchor where name='ran-network-simulation')|126|(select id from dataspace where name='NFP-Operational')|null
-129|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBDUFunction[@idGNBDUFunction="5"]/NRCellDU[@idNRCellDU="13905"]/attributes|"{"nRPCI": 12, "nRTAC": 310, "cellLocalId": 13905}"|(select id from anchor where name='ran-network-simulation')|128|(select id from dataspace where name='NFP-Operational')|null
-131|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBDUFunction[@idGNBDUFunction="6"]/attributes|"{"gNBDUId": 6, "gNBDUName": "gnduserver6", "gNBIdLength": 32}"|(select id from anchor where name='ran-network-simulation')|130|(select id from dataspace where name='NFP-Operational')|null
-132|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBDUFunction[@idGNBDUFunction="6"]/NRCellDU[@idNRCellDU="15548"]|"{"idNRCellDU": "15548"}"|(select id from anchor where name='ran-network-simulation')|130|(select id from dataspace where name='NFP-Operational')|null
-134|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBDUFunction[@idGNBDUFunction="6"]/NRCellDU[@idNRCellDU="14427"]|"{"idNRCellDU": "14427"}"|(select id from anchor where name='ran-network-simulation')|130|(select id from dataspace where name='NFP-Operational')|null
-136|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBDUFunction[@idGNBDUFunction="6"]/NRCellDU[@idNRCellDU="15549"]|"{"idNRCellDU": "15549"}"|(select id from anchor where name='ran-network-simulation')|130|(select id from dataspace where name='NFP-Operational')|null
-138|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBDUFunction[@idGNBDUFunction="6"]/NRCellDU[@idNRCellDU="15360"]|"{"idNRCellDU": "15360"}"|(select id from anchor where name='ran-network-simulation')|130|(select id from dataspace where name='NFP-Operational')|null
-140|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBDUFunction[@idGNBDUFunction="6"]/NRCellDU[@idNRCellDU="15361"]|"{"idNRCellDU": "15361"}"|(select id from anchor where name='ran-network-simulation')|130|(select id from dataspace where name='NFP-Operational')|null
-133|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBDUFunction[@idGNBDUFunction="6"]/NRCellDU[@idNRCellDU="15548"]/attributes|"{"nRPCI": 12, "nRTAC": 310, "cellLocalId": 15548}"|(select id from anchor where name='ran-network-simulation')|132|(select id from dataspace where name='NFP-Operational')|null
-135|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBDUFunction[@idGNBDUFunction="6"]/NRCellDU[@idNRCellDU="14427"]/attributes|"{"nRPCI": 12, "nRTAC": 310, "cellLocalId": 14427}"|(select id from anchor where name='ran-network-simulation')|134|(select id from dataspace where name='NFP-Operational')|null
-137|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBDUFunction[@idGNBDUFunction="6"]/NRCellDU[@idNRCellDU="15549"]/attributes|"{"nRPCI": 12, "nRTAC": 310, "cellLocalId": 15549}"|(select id from anchor where name='ran-network-simulation')|136|(select id from dataspace where name='NFP-Operational')|null
-139|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBDUFunction[@idGNBDUFunction="6"]/NRCellDU[@idNRCellDU="15360"]/attributes|"{"nRPCI": 12, "nRTAC": 310, "cellLocalId": 15360}"|(select id from anchor where name='ran-network-simulation')|138|(select id from dataspace where name='NFP-Operational')|null
-141|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBDUFunction[@idGNBDUFunction="6"]/NRCellDU[@idNRCellDU="15361"]/attributes|"{"nRPCI": 12, "nRTAC": 310, "cellLocalId": 15361}"|(select id from anchor where name='ran-network-simulation')|140|(select id from dataspace where name='NFP-Operational')|null
-143|/cps-ran-schema/NearRTRIC[@idNearRTRIC="22"]/GNBCUUPFunction[@idGNBCUUPFunction="2222"]/attributes|"{"gNBId": 98763}"|(select id from anchor where name='ran-network-simulation')|142|(select id from dataspace where name='NFP-Operational')|null
diff --git a/cps-ri/src/main/resources/changelog/db/changes/data/schema_set.csv b/cps-ri/src/main/resources/changelog/db/changes/data/schema_set.csv
deleted file mode 100644
index 39de8a457..000000000
--- a/cps-ri/src/main/resources/changelog/db/changes/data/schema_set.csv
+++ /dev/null
@@ -1,2 +0,0 @@
-name|dataspace_id
-cps-ran-schema-model|(select id from dataspace where name='NFP-Operational')
diff --git a/cps-ri/src/main/resources/changelog/db/changes/data/schema_set_yang_resources.csv b/cps-ri/src/main/resources/changelog/db/changes/data/schema_set_yang_resources.csv
deleted file mode 100644
index 9a258c2ae..000000000
--- a/cps-ri/src/main/resources/changelog/db/changes/data/schema_set_yang_resources.csv
+++ /dev/null
@@ -1,4 +0,0 @@
-schema_set_id|yang_resource_id
-(select id from schema_set where name='cps-ran-schema-model')|"(select id from yang_resource where name='ietf-inet-types.yang')"
-(select id from schema_set where name='cps-ran-schema-model')|(select id from yang_resource where name='cps-ran-schema-model2021-01-28.yang')
-(select id from schema_set where name='cps-ran-schema-model')|(select id from yang_resource where name='ietf-yang-types.yang')
diff --git a/cps-ri/src/main/resources/changelog/db/changes/data/yang_resource.csv b/cps-ri/src/main/resources/changelog/db/changes/data/yang_resource.csv
deleted file mode 100644
index 4dd312745..000000000
--- a/cps-ri/src/main/resources/changelog/db/changes/data/yang_resource.csv
+++ /dev/null
@@ -1,2236 +0,0 @@
-name|content|checksum
-ietf-inet-types.yang|"module ietf-inet-types {
-
- namespace \"urn:ietf:params:xml:ns:yang:ietf-inet-types\";
- prefix \"inet\";
-
- organization
- \"IETF NETMOD (NETCONF Data Modeling Language) Working Group\";
-
- contact
- \"WG Web: <http://tools.ietf.org/wg/netmod/>
- WG List: <mailto:netmod@ietf.org>
-
- WG Chair: David Kessens
- <mailto:david.kessens@nsn.com>
-
- WG Chair: Juergen Schoenwaelder
- <mailto:j.schoenwaelder@jacobs-university.de>
-
- Editor: Juergen Schoenwaelder
- <mailto:j.schoenwaelder@jacobs-university.de>\";
-
- description
- \"This module contains a collection of generally useful derived
- YANG data types for Internet addresses and related things.
-
- Copyright (c) 2013 IETF Trust and the persons identified as
- authors of the code. All rights reserved.
-
- Redistribution and use in source and binary forms, with or
- without modification, is permitted pursuant to, and subject
- to the license terms contained in, the Simplified BSD License
- set forth in Section 4.c of the IETF Trust''s Legal Provisions
- Relating to IETF Documents
- (http://trustee.ietf.org/license-info).
-
- This version of this YANG module is part of RFC 6991; see
- the RFC itself for full legal notices.\";
-
- revision 2013-07-15 {
- description
- \"This revision adds the following new data types:
- - ip-address-no-zone
- - ipv4-address-no-zone
- - ipv6-address-no-zone\";
- reference
- \"RFC 6991: Common YANG Data Types\";
- }
-
- revision 2010-09-24 {
- description
- \"Initial revision.\";
- reference
- \"RFC 6021: Common YANG Data Types\";
- }
-
- /*** collection of types related to protocol fields ***/
-
- typedef ip-version {
- type enumeration {
- enum unknown {
- value \"0\";
- description
- \"An unknown or unspecified version of the Internet
- protocol.\";
- }
- enum ipv4 {
- value \"1\";
- description
- \"The IPv4 protocol as defined in RFC 791.\";
- }
- enum ipv6 {
- value \"2\";
- description
- \"The IPv6 protocol as defined in RFC 2460.\";
- }
- }
- description
- \"This value represents the version of the IP protocol.
-
- In the value set and its semantics, this type is equivalent
- to the InetVersion textual convention of the SMIv2.\";
- reference
- \"RFC 791: Internet Protocol
- RFC 2460: Internet Protocol, Version 6 (IPv6) Specification
- RFC 4001: Textual Conventions for Internet Network Addresses\";
- }
-
- typedef dscp {
- type uint8 {
- range \"0..63\";
- }
- description
- \"The dscp type represents a Differentiated Services Code Point
- that may be used for marking packets in a traffic stream.
- In the value set and its semantics, this type is equivalent
- to the Dscp textual convention of the SMIv2.\";
- reference
- \"RFC 3289: Management Information Base for the Differentiated
- Services Architecture
- RFC 2474: Definition of the Differentiated Services Field
- (DS Field) in the IPv4 and IPv6 Headers
- RFC 2780: IANA Allocation Guidelines For Values In
- the Internet Protocol and Related Headers\";
- }
-
- typedef ipv6-flow-label {
- type uint32 {
- range \"0..1048575\";
- }
- description
- \"The ipv6-flow-label type represents the flow identifier or Flow
- Label in an IPv6 packet header that may be used to
- discriminate traffic flows.
-
- In the value set and its semantics, this type is equivalent
- to the IPv6FlowLabel textual convention of the SMIv2.\";
- reference
- \"RFC 3595: Textual Conventions for IPv6 Flow Label
- RFC 2460: Internet Protocol, Version 6 (IPv6) Specification\";
- }
-
- typedef port-number {
- type uint16 {
- range \"0..65535\";
- }
- description
- \"The port-number type represents a 16-bit port number of an
- Internet transport-layer protocol such as UDP, TCP, DCCP, or
- SCTP. Port numbers are assigned by IANA. A current list of
- all assignments is available from <http://www.iana.org/>.
-
- Note that the port number value zero is reserved by IANA. In
- situations where the value zero does not make sense, it can
- be excluded by subtyping the port-number type.
- In the value set and its semantics, this type is equivalent
- to the InetPortNumber textual convention of the SMIv2.\";
- reference
- \"RFC 768: User Datagram Protocol
- RFC 793: Transmission Control Protocol
- RFC 4960: Stream Control Transmission Protocol
- RFC 4340: Datagram Congestion Control Protocol (DCCP)
- RFC 4001: Textual Conventions for Internet Network Addresses\";
- }
-
- /*** collection of types related to autonomous systems ***/
-
- typedef as-number {
- type uint32;
- description
- \"The as-number type represents autonomous system numbers
- which identify an Autonomous System (AS). An AS is a set
- of routers under a single technical administration, using
- an interior gateway protocol and common metrics to route
- packets within the AS, and using an exterior gateway
- protocol to route packets to other ASes. IANA maintains
- the AS number space and has delegated large parts to the
- regional registries.
-
- Autonomous system numbers were originally limited to 16
- bits. BGP extensions have enlarged the autonomous system
- number space to 32 bits. This type therefore uses an uint32
- base type without a range restriction in order to support
- a larger autonomous system number space.
-
- In the value set and its semantics, this type is equivalent
- to the InetAutonomousSystemNumber textual convention of
- the SMIv2.\";
- reference
- \"RFC 1930: Guidelines for creation, selection, and registration
- of an Autonomous System (AS)
- RFC 4271: A Border Gateway Protocol 4 (BGP-4)
- RFC 4001: Textual Conventions for Internet Network Addresses
- RFC 6793: BGP Support for Four-Octet Autonomous System (AS)
- Number Space\";
- }
-
- /*** collection of types related to IP addresses and hostnames ***/
-
- typedef ip-address {
- type union {
- type inet:ipv4-address;
- type inet:ipv6-address;
- }
- description
- \"The ip-address type represents an IP address and is IP
- version neutral. The format of the textual representation
- implies the IP version. This type supports scoped addresses
- by allowing zone identifiers in the address format.\";
- reference
- \"RFC 4007: IPv6 Scoped Address Architecture\";
- }
-
- typedef ipv4-address {
- type string {
- pattern
- ''(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]).){3}''
- + ''([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])''
- + ''(%[p{N}p{L}]+)?'';
- }
- description
- \"The ipv4-address type represents an IPv4 address in
- dotted-quad notation. The IPv4 address may include a zone
- index, separated by a % sign.
-
- The zone index is used to disambiguate identical address
- values. For link-local addresses, the zone index will
- typically be the interface index number or the name of an
- interface. If the zone index is not present, the default
- zone of the device will be used.
-
- The canonical format for the zone index is the numerical
- format\";
- }
-
- typedef ipv6-address {
- type string {
- pattern ''((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}''
- + ''((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|''
- + ''(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9]).){3}''
- + ''(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))''
- + ''(%[p{N}p{L}]+)?'';
- pattern ''(([^:]+:){6}(([^:]+:[^:]+)|(.*..*)))|''
- + ''((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)''
- + ''(%.+)?'';
- }
- description
- \"The ipv6-address type represents an IPv6 address in full,
- mixed, shortened, and shortened-mixed notation. The IPv6
- address may include a zone index, separated by a % sign.
-
- The zone index is used to disambiguate identical address
- values. For link-local addresses, the zone index will
- typically be the interface index number or the name of an
- interface. If the zone index is not present, the default
- zone of the device will be used.
-
- The canonical format of IPv6 addresses uses the textual
- representation defined in Section 4 of RFC 5952. The
- canonical format for the zone index is the numerical
- format as described in Section 11.2 of RFC 4007.\";
- reference
- \"RFC 4291: IP Version 6 Addressing Architecture
- RFC 4007: IPv6 Scoped Address Architecture
- RFC 5952: A Recommendation for IPv6 Address Text
- Representation\";
- }
-
- typedef ip-address-no-zone {
- type union {
- type inet:ipv4-address-no-zone;
- type inet:ipv6-address-no-zone;
- }
- description
- \"The ip-address-no-zone type represents an IP address and is
- IP version neutral. The format of the textual representation
- implies the IP version. This type does not support scoped
- addresses since it does not allow zone identifiers in the
- address format.\";
- reference
- \"RFC 4007: IPv6 Scoped Address Architecture\";
- }
-
- typedef ipv4-address-no-zone {
- type inet:ipv4-address {
- pattern ''[0-9.]*'';
- }
- description
- \"An IPv4 address without a zone index. This type, derived from
- ipv4-address, may be used in situations where the zone is
- known from the context and hence no zone index is needed.\";
- }
-
- typedef ipv6-address-no-zone {
- type inet:ipv6-address {
- pattern ''[0-9a-fA-F:.]*'';
- }
- description
- \"An IPv6 address without a zone index. This type, derived from
- ipv6-address, may be used in situations where the zone is
- known from the context and hence no zone index is needed.\";
- reference
- \"RFC 4291: IP Version 6 Addressing Architecture
- RFC 4007: IPv6 Scoped Address Architecture
- RFC 5952: A Recommendation for IPv6 Address Text
- Representation\";
- }
-
- typedef ip-prefix {
- type union {
- type inet:ipv4-prefix;
- type inet:ipv6-prefix;
- }
- description
- \"The ip-prefix type represents an IP prefix and is IP
- version neutral. The format of the textual representations
- implies the IP version.\";
- }
-
- typedef ipv4-prefix {
- type string {
- pattern
- ''(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]).){3}''
- + ''([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])''
- + ''/(([0-9])|([1-2][0-9])|(3[0-2]))'';
- }
- description
- \"The ipv4-prefix type represents an IPv4 address prefix.
- The prefix length is given by the number following the
- slash character and must be less than or equal to 32.
-
- A prefix length value of n corresponds to an IP address
- mask that has n contiguous 1-bits from the most
- significant bit (MSB) and all other bits set to 0.
-
- The canonical format of an IPv4 prefix has all bits of
- the IPv4 address set to zero that are not part of the
- IPv4 prefix.\";
- }
-
- typedef ipv6-prefix {
- type string {
- pattern ''((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}''
- + ''((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|''
- + ''(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9]).){3}''
- + ''(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))''
- + ''(/(([0-9])|([0-9]{2})|(1[0-1][0-9])|(12[0-8])))'';
- pattern ''(([^:]+:){6}(([^:]+:[^:]+)|(.*..*)))|''
- + ''((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)''
- + ''(/.+)'';
- }
- description
- \"The ipv6-prefix type represents an IPv6 address prefix.
- The prefix length is given by the number following the
- slash character and must be less than or equal to 128.
-
- A prefix length value of n corresponds to an IP address
- mask that has n contiguous 1-bits from the most
- significant bit (MSB) and all other bits set to 0.
-
- The IPv6 address should have all bits that do not belong
- to the prefix set to zero.
-
- The canonical format of an IPv6 prefix has all bits of
- the IPv6 address set to zero that are not part of the
- IPv6 prefix. Furthermore, the IPv6 address is represented
- as defined in Section 4 of RFC 5952.\";
- reference
- \"RFC 5952: A Recommendation for IPv6 Address Text
- Representation\";
- }
-
- /*** collection of domain name and URI types ***/
-
- typedef domain-name {
- type string {
- length \"1..253\";
- pattern
- ''((([a-zA-Z0-9_]([a-zA-Z0-9-_]){0,61})?[a-zA-Z0-9].)*''
- + ''([a-zA-Z0-9_]([a-zA-Z0-9-_]){0,61})?[a-zA-Z0-9].?)''
- + ''|.'';
- }
- description
- \"The domain-name type represents a DNS domain name. The
- name SHOULD be fully qualified whenever possible.
-
- Internet domain names are only loosely specified. Section
- 3.5 of RFC 1034 recommends a syntax (modified in Section
- 2.1 of RFC 1123). The pattern above is intended to allow
- for current practice in domain name use, and some possible
- future expansion. It is designed to hold various types of
- domain names, including names used for A or AAAA records
- (host names) and other records, such as SRV records. Note
- that Internet host names have a stricter syntax (described
- in RFC 952) than the DNS recommendations in RFCs 1034 and
- 1123, and that systems that want to store host names in
- schema nodes using the domain-name type are recommended to
- adhere to this stricter standard to ensure interoperability.
-
- The encoding of DNS names in the DNS protocol is limited
- to 255 characters. Since the encoding consists of labels
- prefixed by a length bytes and there is a trailing NULL
- byte, only 253 characters can appear in the textual dotted
- notation.
-
- The description clause of schema nodes using the domain-name
- type MUST describe when and how these names are resolved to
- IP addresses. Note that the resolution of a domain-name value
- may require to query multiple DNS records (e.g., A for IPv4
- and AAAA for IPv6). The order of the resolution process and
- which DNS record takes precedence can either be defined
- explicitly or may depend on the configuration of the
- resolver.
-
- Domain-name values use the US-ASCII encoding. Their canonical
- format uses lowercase US-ASCII characters. Internationalized
- domain names MUST be A-labels as per RFC 5890.\";
- reference
- \"RFC 952: DoD Internet Host Table Specification
- RFC 1034: Domain Names - Concepts and Facilities
- RFC 1123: Requirements for Internet Hosts -- Application
- and Support
- RFC 2782: A DNS RR for specifying the location of services
- (DNS SRV)
- RFC 5890: Internationalized Domain Names in Applications
- (IDNA): Definitions and Document Framework\";
- }
-
- typedef host {
- type union {
- type inet:ip-address;
- type inet:domain-name;
- }
- description
- \"The host type represents either an IP address or a DNS
- domain name.\";
- }
-
- typedef uri {
- type string;
- description
- \"The uri type represents a Uniform Resource Identifier
- (URI) as defined by STD 66.
-
- Objects using the uri type MUST be in US-ASCII encoding,
- and MUST be normalized as described by RFC 3986 Sections
- 6.2.1, 6.2.2.1, and 6.2.2.2. All unnecessary
- percent-encoding is removed, and all case-insensitive
- characters are set to lowercase except for hexadecimal
- digits, which are normalized to uppercase as described in
- Section 6.2.2.1.
-
- The purpose of this normalization is to help provide
- unique URIs. Note that this normalization is not
- sufficient to provide uniqueness. Two URIs that are
- textually distinct after this normalization may still be
- equivalent.
-
- Objects using the uri type may restrict the schemes that
- they permit. For example, ''data:'' and ''urn:'' schemes
- might not be appropriate.
-
- A zero-length URI is not a valid URI. This can be used to
- express ''URI absent'' where required.
-
- In the value set and its semantics, this type is equivalent
- to the Uri SMIv2 textual convention defined in RFC 5017.\";
- reference
- \"RFC 3986: Uniform Resource Identifier (URI): Generic Syntax
- RFC 3305: Report from the Joint W3C/IETF URI Planning Interest
- Group: Uniform Resource Identifiers (URIs), URLs,
- and Uniform Resource Names (URNs): Clarifications
- and Recommendations
- RFC 5017: MIB Textual Conventions for Uniform Resource
- Identifiers (URIs)\";
- }
-
-}"|fd06e465f26f1e7d0253bbf77e7e55e1
-cps-ran-schema-model2021-01-28.yang|"module cps-ran-schema-model {
- yang-version 1.1;
- namespace \"org:onap:ccsdk:features:sdnr:northbound:cps-ran-schema-model\";
- prefix rn;
-
- import ietf-inet-types {
- prefix inet;
- }
- import ietf-yang-types {
- prefix yang;
- }
-
- organization
- \"Open Network Automation Platform - ONAP
- <https://www.onap.org>\";
- contact
- \"Editors:
- Sandeep Shah
- <mailto:sandeep.shah@ibm.com>
-
- Swaminathan Seetharaman
- <mailto:swaminathan.seetharaman@wipro.com>\";
- description
- \"This module contains a collection of YANG definitions for capturing
- relationships among managed elements of the radio access Network
- to be stored in ONAP CPS platform.
-
- Copyright 2020-2021 IBM.
-
- 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.\";
-
- revision 2021-01-28 {
- description
- \"CPS RAN Network YANG Model for ONAP/O-RAN POC\";
- reference
- \"https://wiki.onap.org/display/DW/E2E+Network+Slicing+Use+Case+in+R7+Guilin\";
- }
-
- typedef usageState {
- type enumeration {
- enum IDLE {
- description
- \"TODO\";
- }
- enum ACTIVE {
- description
- \"TODO\";
- }
- enum BUSY {
- description
- \"TODO\";
- }
- }
- description
- \"It describes whether or not the resource is actively in
- use at a specific instant, and if so, whether or not it has spare
- capacity for additional users at that instant. The value is READ-ONLY.\";
- reference
- \"ITU T Recommendation X.731\";
- }
-
- typedef Mcc {
- type string;
- description
- \"The mobile country code consists of three decimal digits,
- The first digit of the mobile country code identifies the geographic
- region (the digits 1 and 8 are not used):\";
- reference
- \"3GPP TS 23.003 subclause 2.2 and 12.1\";
- }
-
- typedef Mnc {
- type string;
- description
- \"The mobile network code consists of two or three
- decimal digits (for example: MNC of 001 is not the same as MNC of 01)\";
- reference
- \"3GPP TS 23.003 subclause 2.2 and 12.1\";
- }
-
- typedef Nci {
- type string;
- description
- \"NR Cell Identity. The NCI shall be of fixed length of 36 bits
- and shall be coded using full hexadecimal representation.
- The exact coding of the NCI is the responsibility of each PLMN operator\";
- reference
- \"TS 23.003\";
- }
-
- typedef OperationalState {
- type enumeration {
- enum DISABLED {
- value 0;
- description
- \"The resource is totally inoperable.\";
- }
- enum ENABLED {
- value 1;
- description
- \"The resource is partially or fully operable.\";
- }
- }
- description
- \"TODO\";
- reference
- \"3GPP TS 28.625 and ITU-T X.731\";
- }
-
- typedef AvailabilityStatus {
- type enumeration {
- enum IN_TEST {
- description
- \"TODO\";
- }
- enum FAILED {
- description
- \"TODO\";
- }
- enum POWER_OFF {
- description
- \"TODO\";
- }
- enum OFF_LINE {
- description
- \"TODO\";
- }
- enum OFF_DUTY {
- description
- \"TODO\";
- }
- enum DEPENDENCY {
- description
- \"TODO\";
- }
- enum DEGRADED {
- description
- \"TODO\";
- }
- enum NOT_INSTALLED {
- description
- \"TODO\";
- }
- enum LOG_FULL {
- description
- \"TODO\";
- }
- }
- description
- \"TODO\";
- reference
- \"TODO\";
- }
-
- typedef CellState {
- type enumeration {
- enum IDLE {
- description
- \"TODO\";
- }
- enum INACTIVE {
- description
- \"TODO\";
- }
- enum ACTIVE {
- description
- \"TODO\";
- }
- }
- description
- \"TODO\";
- reference
- \"TODO\";
- }
-
- typedef SNssai {
- type string;
- description
- \"Single Network Slice Selection Assistance Information.\";
- reference
- \"TS 23.501 clause 5.15.2\";
- }
-
- typedef Sst {
- type uint8;
- description
- \"TODO\";
- reference
- \"TODO\";
- }
-
- typedef Nrpci {
- type uint32;
- description
- \"Physical Cell Identity (PCI) of the NR cell.\";
- reference
- \"TS 36.211 subclause 6.11\";
- }
-
- typedef Tac {
- type int32 {
- range \"0..16777215\";
- }
- description
- \"Tracking Area Code\";
- reference
- \"TS 23.003 clause 19.4.2.3\";
- }
-
- typedef AmfRegionId {
- type string;
- description
- \"\";
- reference
- \"clause 2.10.1 of 3GPP TS 23.003\";
- }
-
- typedef AmfSetId {
- type string;
- description
- \"\";
- reference
- \"clause 2.10.1 of 3GPP TS 23.003\";
- }
-
- typedef AmfPointer {
- type string;
- description
- \"\";
- reference
- \"clause 2.10.1 of 3GPP TS 23.003\";
- }
-
- // type definitions especially for core NFs
-
- typedef NfType {
- type enumeration {
- enum NRF {
- description
- \"TODO\";
- }
- enum UDM {
- description
- \"TODO\";
- }
- enum AMF {
- description
- \"TODO\";
- }
- enum SMF {
- description
- \"TODO\";
- }
- enum AUSF {
- description
- \"TODO\";
- }
- enum NEF {
- description
- \"TODO\";
- }
- enum PCF {
- description
- \"TODO\";
- }
- enum SMSF {
- description
- \"TODO\";
- }
- enum NSSF {
- description
- \"TODO\";
- }
- enum UDR {
- description
- \"TODO\";
- }
- enum LMF {
- description
- \"TODO\";
- }
- enum GMLC {
- description
- \"TODO\";
- }
- enum 5G_EIR {
- description
- \"TODO\";
- }
- enum SEPP {
- description
- \"TODO\";
- }
- enum UPF {
- description
- \"TODO\";
- }
- enum N3IWF {
- description
- \"TODO\";
- }
- enum AF {
- description
- \"TODO\";
- }
- enum UDSF {
- description
- \"TODO\";
- }
- enum BSF {
- description
- \"TODO\";
- }
- enum CHF {
- description
- \"TODO\";
- }
- }
- description
- \"TODO\";
- }
-
- typedef NotificationType {
- type enumeration {
- enum N1_MESSAGES {
- description
- \"TODO\";
- }
- enum N2_INFORMATION {
- description
- \"TODO\";
- }
- enum LOCATION_NOTIFICATION {
- description
- \"TODO\";
- }
- }
- description
- \"TODO\";
- }
-
- typedef Load {
- type uint8 {
- range \"0..100\";
- }
- description
- \"Latest known load information of the NF, percentage \";
- }
-
- typedef N1MessageClass {
- type enumeration {
- enum 5GMM {
- description
- \"TODO\";
- }
- enum SM {
- description
- \"TODO\";
- }
- enum LPP {
- description
- \"TODO\";
- }
- enum SMS {
- description
- \"TODO\";
- }
- }
- description
- \"TODO\";
- }
-
- typedef N2InformationClass {
- type enumeration {
- enum SM {
- description
- \"TODO\";
- }
- enum NRPPA {
- description
- \"TODO\";
- }
- enum PWS {
- description
- \"TODO\";
- }
- enum PWS_BCAL {
- description
- \"TODO\";
- }
- enum PWS_RF {
- description
- \"TODO\";
- }
- }
- description
- \"TODO\";
- reference
- \"TODO\";
- }
-
- typedef NsiId {
- type string;
- description
- \"TODO\";
- }
-
- typedef UeMobilityLevel {
- type enumeration {
- enum STATIONARY {
- description
- \"TODO\";
- }
- enum NOMADIC {
- description
- \"TODO\";
- }
- enum RESTRICTED_MOBILITY {
- description
- \"TODO\";
- }
- enum FULLY_MOBILITY {
- description
- \"TODO\";
- }
- }
- description
- \"TODO\";
- reference
- \"TODO\";
- }
-
- typedef ResourceSharingLevel {
- type enumeration {
- enum SHARED {
- description
- \"TODO\";
- }
- enum NOT_SHARED {
- description
- \"TODO\";
- }
- }
- description
- \"TODO\";
- reference
- \"TODO\";
- }
-
- typedef TxDirection {
- type enumeration {
- enum DL {
- description
- \"TODO\";
- }
- enum UL {
- description
- \"TODO\";
- }
- enum DL_AND_UL {
- description
- \"TODO\";
- }
- }
- description
- \"TODO\";
- reference
- \"TODO\";
- }
-
- typedef DistinguishedName { // TODO is this equivalent to TS 32.300 ?
- type string;
- description
- \"Represents the international standard for the representation
- of Distinguished Name (RFC 4512).
- The format of the DistinguishedName REGEX is:
- {AttributeType = AttributeValue}
-
- AttributeType consists of alphanumeric and hyphen (OIDs not allowed).
- All other characters are restricted.
- The Attribute value cannot contain control characters or the
- following characters : \ > < ; \" + , (Comma) and White space
- The Attribute value can contain the following characters if they
- are excaped : \ > < ; \" + , (Comma) and White space
- The Attribute value can contain control characters if its an escaped
- double digit hex number.
- Examples could be
- UID=nobody@example.com,DC=example,DC=com
- CN=John Smith,OU=Sales,O=ACME Limited,L=Moab,ST=Utah,C=US\";
- reference
- \"RFC 4512 Lightweight Directory Access Protocol (LDAP):
- Directory Information Models\";
- } // recheck regexp it doesn''t handle posix [:cntrl:]
-
- typedef QOffsetRange {
- type int8;
- units \"dB\";
- description
- \"TODO\";
- reference
- \"TODO\";
- }
-
- typedef QuotaType {
- type enumeration {
- enum STRICT {
- description
- \"TODO\";
- }
- enum FLOAT {
- description
- \"TODO\";
- }
- }
- description
- \"TODO\";
- }
-
- typedef CyclicPrefix {
- type enumeration {
- enum NORMAL {
- description
- \"TODO\";
- }
- enum EXTENDED {
- description
- \"TODO\";
- }
- }
- description
- \"TODO\";
- }
-
- grouping PLMNInfo {
- description
- \"The PLMNInfo data type define a S-NSSAI member in a specific PLMNId, and it have
- two attributes PLMNId and S-NSSAI (PLMNId, S-NSSAI). The PLMNId represents a data type that
- is comprised of mcc (mobile country code) and mnc (mobile network code), (See TS 23.003
- subclause 2.2 and 12.1) and S-NSSAI represents an data type, that is comprised of an SST
- (Slice/Service type) and an optional SD (Slice Differentiator) field, (See TS 23.003 [13]).\";
- uses PLMNId;
- list sNSSAIList {
- key \"sNssai\";
- uses sNSSAIConfig;
- description \"List of sNSSAIs\";
- }
- }
-
- grouping ManagedNFProfile {
- description
- \"Defines profile for managed NF\";
- reference
- \"3GPP TS 23.501\";
- leaf idx {
- type uint32;
- description
- \"TODO\";
- reference
- \"3GPP TS 23.501\";
- }
- leaf nfInstanceID {
- type yang:uuid;
- config false;
- mandatory false;
- description
- \"This parameter defines profile for managed NF.
- The format of the NF Instance ID shall be a
- Universally Unique Identifier (UUID) version 4,
- as described in IETF RFC 4122 \";
- }
- leaf-list nfType {
- type NfType;
- config false;
- min-elements 1;
- description
- \"Type of the Network Function\";
- }
- leaf hostAddr {
- type inet:host;
- mandatory false;
- description
- \"Host address of a NF\";
- }
- leaf authzInfo {
- type string;
- description
- \"This parameter defines NF Specific Service authorization
- information. It shall include the NF type (s) and NF realms/origins
- allowed to consume NF Service(s) of NF Service Producer.\";
- reference
- \"See TS 23.501\";
- }
- leaf location {
- type string;
- description
- \"Information about the location of the NF instance
- (e.g. geographic location, data center) defined by operator\";
- reference
- \"TS 29.510\";
- }
- leaf capacity {
- type uint16;
- mandatory false;
- description
- \"This parameter defines static capacity information
- in the range of 0-65535, expressed as a weight relative to other
- NF instances of the same type; if capacity is also present in the
- nfServiceList parameters, those will have precedence over this value.\";
- reference
- \"TS 29.510\";
- }
- leaf nFSrvGroupId {
- type string;
- description
- \"This parameter defines identity of the group that is
- served by the NF instance.
- May be config false or true depending on the ManagedFunction.
- Config=true for Udrinfo. Config=false for UdmInfo and AusfInfo.
- Shall be present if ../nfType = UDM or AUSF or UDR. \";
- reference
- \"TS 29.510\";
- }
- leaf-list supportedDataSetIds {
- type enumeration {
- enum SUBSCRIPTION {
- description
- \"TODO\";
- }
- enum POLICY {
- description
- \"TODO\";
- }
- enum EXPOSURE {
- description
- \"TODO\";
- }
- enum APPLICATION {
- description
- \"TODO\";
- }
- }
- description
- \"List of supported data sets in the UDR instance.
- May be present if ../nfType = UDR\";
- reference
- \"TS 29.510\";
- }
- leaf-list smfServingAreas {
- type string;
- description
- \"Defines the SMF service area(s) the UPF can serve.
- Shall be present if ../nfType = UPF\";
- reference
- \"TS 29.510\";
- }
- leaf priority {
- type uint16;
- description
- \"This parameter defines Priority (relative to other NFs
- of the same type) in the range of 0-65535, to be used for NF selection;
- lower values indicate a higher priority. If priority is also present
- in the nfServiceList parameters, those will have precedence over
- this value. Shall be present if ../nfType = AMF \";
- reference
- \"TS 29.510\";
- }
- }
-
-
- grouping PLMNId {
- description
- \"TODO\";
- reference
- \"TS 23.658\";
- leaf mcc {
- type Mcc;
- mandatory true;
- description
- \"TODO\";
- }
- leaf mnc {
- type Mnc;
- mandatory true;
- description
- \"TODO\";
- }
- }
-
- grouping AmfIdentifier {
- description
- \"The AMFI is constructed from an AMF Region ID,
- an AMF Set ID and an AMF Pointer.
- The AMF Region ID identifies the region,
- the AMF Set ID uniquely identifies the AMF Set within the AMF Region, and
- the AMF Pointer uniquely identifies the AMF within the AMF Set. \";
- leaf amfRegionId {
- type AmfRegionId;
- description
- \"TODO\";
- }
- leaf amfSetId {
- type AmfSetId;
- description
- \"TODO\";
- }
- leaf amfPointer {
- type AmfPointer;
- description
- \"TODO\";
- }
- }
-
- grouping DefaultNotificationSubscription {
- description
- \"TODO\";
- leaf notificationType {
- type NotificationType;
- description
- \"TODO\";
- }
- leaf callbackUri {
- type inet:uri;
- description
- \"TODO\";
- }
- leaf n1MessageClass {
- type N1MessageClass;
- description
- \"TODO\";
- }
- leaf n2InformationClass {
- type N2InformationClass;
- description
- \"TODO\";
- }
- }
-
- grouping Ipv4AddressRange {
- description
- \"TODO\";
- leaf start {
- type inet:ipv4-address;
- description
- \"TODO\";
- }
- leaf end {
- type inet:ipv4-address;
- description
- \"TODO\";
- }
- }
-
- grouping Ipv6PrefixRange {
- description
- \"TODO\";
- leaf start {
- type inet:ipv6-prefix;
- description
- \"TODO\";
- }
- leaf end {
- type inet:ipv6-prefix;
- description
- \"TODO\";
- }
- }
-
- grouping AddressWithVlan {
- description
- \"TODO\";
- leaf ipAddress {
- type inet:ip-address;
- description
- \"TODO\";
- }
- leaf vlanId {
- type uint16;
- description
- \"TODO\";
- }
- }
-
- grouping ManagedElementGroup {
- description
- \"Abstract class representing telecommunications resources.\";
- leaf dnPrefix {
- type DistinguishedName;
- description
- \"Provides naming context and splits the DN into a DN Prefix and Local DN\";
- }
- leaf userLabel {
- type string;
- description
- \"A user-friendly name of this object.\";
- }
- leaf locationName {
- type string;
- config false;
- description
- \"The physical location (e.g. an address) of an entity\";
- }
- leaf-list managedBy {
- type DistinguishedName;
- config false;
- description
- \"Relates to the role played by ManagementSystem\";
- }
- leaf-list managedElementTypeList {
- type string;
- config false;
- min-elements 1;
- description
- \"The type of functionality provided by the ManagedElement.
- It may represent one ME functionality or a combination of
- Two examples of allowed values are:
- - NodeB;
- - HLR, VLR.\";
- }
- } // Managed Element grouping
-
- grouping NearRTRICGroup {
- description
- \"Abstract class representing Near RT RIC.\";
- leaf dnPrefix {
- type DistinguishedName;
- description
- \"Provides naming context and splits the DN into a DN Prefix and Local DN\";
- }
- leaf userLabel {
- type string;
- description
- \"A user-friendly name of this object.\";
- }
- leaf locationName {
- type string;
- config false;
- description
- \"The physical location (e.g. an address) of an entity\";
- }
- leaf gNBId {
- type int64 { range \"0..4294967295\"; }
- config false;
- description \"Identifies a gNB within a PLMN. The gNB Identifier (gNB ID)
- is part of the NR Cell Identifier (NCI) of the gNB cells.\";
- reference \"gNB ID in 3GPP TS 38.300, Global gNB ID in 3GPP TS 38.413\";
- }
-
- list pLMNInfoList {
- uses PLMNInfo;
- key \"mcc mnc\";
- description \"The PLMNInfoList is a list of PLMNInfo data type. It defines which PLMNs that can be served by the nearRTRIC.\";
- }
- list RRMPolicyRatio {
- key id;
- leaf id {
- type string;
- description
- \"Key leaf\";
- }
- container attributes {
- uses RRMPolicyRatioGroup;
- }
- description \" The RRMPolicyRatio IOC is one realization of a RRMPolicy_ IOC, see the
- inheritance in Figure 4.2.1.2-1. This RRM framework allows adding new policies, both
- standardized (like RRMPolicyRatio) or as vendor specific, by inheriting from the
- abstract RRMPolicy_ IOC. For details see subclause 4.3.36.\";
- }
-
- } // Near RT RIC grouping
-
-
-
- grouping Configuration{
- leaf configParameter{
- type string;
- description \"Type of the configuration parameter\";
- }
- leaf configValue{
- type int64;
- description \"Identifies the configuration to be done for the network elements under the NearRTRIC\";
-
- }
- }
-
-
- grouping GNBDUFunctionGroup {
- description
- \"Represents the GNBDUFunction IOC.\";
- reference
- \"3GPP TS 28.541\";
-
- leaf gNBId {
- type int64 {
- range \"0..4294967295\";
- }
- config false;
- mandatory false;
- description
- \"Identifies a gNB within a PLMN. The gNB Identifier (gNB ID)
- is part of the NR Cell Identifier (NCI) of the gNB cells.\";
- reference
- \"gNB ID in 3GPP TS 38.300, Global gNB ID in 3GPP TS 38.413\";
- }
- leaf gNBIdLength {
- type int32 {
- range \"22..32\";
- }
- mandatory false;
- description
- \"Indicates the number of bits for encoding the gNB ID.\";
- reference
- \"gNB ID in 3GPP TS 38.300, Global gNB ID in 3GPP TS 38.413\";
- }
- leaf gNBDUId {
- type int64 {
- range \"0..68719476735\";
- }
- mandatory false;
- description
- \"Uniquely identifies the DU at least within a gNB.\";
- reference
- \"3GPP TS 38.473\";
- }
- leaf gNBDUName {
- type string {
- length \"1..150\";
- }
- description
- \"Identifies the Distributed Unit of an NR node\";
- reference
- \"3GPP TS 38.473\";
- }
- list RRMPolicyRatio {
- key id;
- leaf id {
- type string;
- description
- \"Key leaf\";
- }
- container attributes {
- uses RRMPolicyRatioGroup;
- }
- description \" The RRMPolicyRatio IOC is one realization of a RRMPolicy_ IOC, see the
- inheritance in Figure 4.2.1.2-1. This RRM framework allows adding new policies, both
- standardized (like RRMPolicyRatio) or as vendor specific, by inheriting from the
- abstract RRMPolicy_ IOC. For details see subclause 4.3.36.\";
- }
- }
-
- grouping NRCellDUGroup {
- description
- \"Represents the NRCellDU IOC.\";
- reference
- \"3GPP TS 28.541\";
- list RRMPolicyRatio {
- key id;
- leaf id {
- type string;
- description
- \"Key leaf\";
- }
- container attributes {
- uses RRMPolicyRatioGroup;
- }
- description \" The RRMPolicyRatio IOC is one realization of a RRMPolicy_ IOC, see the
- inheritance in Figure 4.2.1.2-1. This RRM framework allows adding new policies, both
- standardized (like RRMPolicyRatio) or as vendor specific, by inheriting from the
- abstract RRMPolicy_ IOC. For details see subclause 4.3.36.\";
- }
- leaf cellLocalId {
- type int32 {
- range \"0..16383\";
- }
- mandatory false;
- description
- \"Identifies an NR cell of a gNB. Together with the
- corresponding gNB identifier in forms the NR Cell Identity (NCI).\";
- reference
- \"NCI in 3GPP TS 38.300\";
- }
- list pLMNInfoList {
- key \"mcc mnc\";
- min-elements 1;
- description
- \"The PLMNInfoList is a list of PLMNInfo data type. It defines which PLMNs that
- can be served by the NR cell, and which S-NSSAIs that can be supported by the NR cell for
- corresponding PLMN in case of network slicing feature is supported. The plMNId of the first
- entry of the list is the PLMNId used to construct the nCGI for the NR cell.\";
- uses PLMNInfo;
- }
- leaf nRPCI {
- type int32 {
- range \"0..1007\";
- }
- mandatory false;
- description
- \"The Physical Cell Identity (PCI) of the NR cell.\";
- reference
- \"3GPP TS 36.211\";
- }
- leaf nRTAC {
- type Tac;
- description
- \"The common 5GS Tracking Area Code for the PLMNs.\";
- reference
- \"3GPP TS 23.003, 3GPP TS 38.473\";
- }
- } // grouping
-
- grouping rRMPolicyMemberGroup {
- description
- \"TODO\";
- uses PLMNId;
- leaf sNSSAI {
- type SNssai;
- description
- \"This data type represents an RRM Policy member that will be part of a
- rRMPolicyMemberList. A RRMPolicyMember is defined by its pLMNId and sNSSAI (S-NSSAI).
- The members in a rRMPolicyMemberList are assigned a specific amount of RRM resources
- based on settings in RRMPolicy.\";
- }
- }
-
- grouping RRMPolicyRatioGroup {
-
- uses RRMPolicy_Group; // Inherits RRMPolicy_
-
- leaf quotaType {
- type QuotaType;
- mandatory false;
- description \"The type of the quota which allows to allocate resources as
- strictly usable for defined slice(s) (strict quota) or allows that
- resources to be used by other slice(s) when defined slice(s) do not
- need them (float quota).\";
- }
-
- leaf rRMPolicyMaxRatio {
- type uint8;
- mandatory false;
- units percent;
- description \"The RRM policy setting the maximum percentage of radio
- resources to be allocated to the corresponding S-NSSAI list. This
- quota can be strict or float quota. Strict quota means resources are
- not allowed for other sNSSAIs even when they are not used by the
- defined sNSSAIList. Float quota resources can be used by other sNSSAIs
- when the defined sNSSAIList do not need them. Value 0 indicates that
- there is no maximum limit.\";
- }
-
- leaf rRMPolicyMinRatio {
- type uint8;
- mandatory false;
- units percent;
- description \"The RRM policy setting the minimum percentage of radio
- resources to be allocated to the corresponding S-NSSAI list. This
- quota can be strict or float quota. Strict quota means resources are
- not allowed for other sNSSAIs even when they are not used by the
- defined sNSSAIList. Float quota resources can be used by other sNSSAIs
- when the defined sNSSAIList do not need them. Value 0 indicates that
- there is no minimum limit.\";
- }
- leaf rRMPolicyDedicatedRatio {
- type uint8;
- units percent;
- description \"Dedicated Ration.\";
- }
- description \"Represents the RRMPolicyRatio concrete IOC.\";
- }
-
-
- grouping sNSSAIConfig{
- leaf sNssai {
- type string;
- description \"s-NSSAI of a network slice.\";
- reference \"3GPP TS 23.003\";
- }
- leaf status {
- type string;
- description \"status of s-NSSAI\";
- }
- list configData{
- uses Configuration;
- key \"configParameter\";
- description \"List of configurations to be done at the network elements\";
- }
- }
-
- grouping RRMPolicy_Group {
- description
- \"This IOC represents the properties of an abstract RRMPolicy. The RRMPolicy_ IOC
- needs to be subclassed to be instantiated. It defines two attributes apart from those
- inherited from Top IOC, the resourceType attribute defines type of resource (PRB, RRC
- connected users, DRB usage etc.) and the rRMPolicyMemberList attribute defines the
- RRMPolicyMember(s)that are subject to this policy. An RRM resource (defined in resourceType
- attribute) is located in NRCellDU, NRCellCU, GNBDUFunction, GNBCUCPFunction or in
- GNBCUUPFunction. The RRMPolicyRatio IOC is one realization of a RRMPolicy_ IOC, see the
- inheritance in TS 28.541 Figure 4.2.1.2-1. This RRM framework allows adding new policies,
- both standardized (like RRMPolicyRatio) or as vendor specific, by inheriting from the
- abstract RRMPolicy_ IOC.\";
- leaf resourceType {
- type string;
- mandatory false;
- description
- \"The resourceType attribute defines type of resource (PRB, RRC connected users,
- DRB usage etc.) that is subject to policy. Valid values are ''PRB'', ''RRC'' or ''DRB''\";
- }
- list rRMPolicyMemberList {
- key \"idx\";
- leaf idx {
- type uint32;
- description
- \"TODO\";
- }
- description
- \"It represents the list of RRMPolicyMember (s) that the managed object
- is supporting. A RRMPolicyMember <<dataType>> include the PLMNId <<dataType>>
- and S-NSSAI <<dataType>>.\";
- uses rRMPolicyMemberGroup;
- }
- } // grouping
-
- grouping GNBCUUPFunctionGroup {
- description
- \"Represents the GNBCUUPFunction IOC.\";
- reference
- \"3GPP TS 28.541\";
-
- list RRMPolicyRatio {
- key id;
- leaf id {
- type string;
- description
- \"Key leaf\";
- }
- container attributes {
- uses RRMPolicyRatioGroup;
- }
- description \" The RRMPolicyRatio IOC is one realization of a RRMPolicy_ IOC, see the
- inheritance in Figure 4.2.1.2-1. This RRM framework allows adding new policies, both
- standardized (like RRMPolicyRatio) or as vendor specific, by inheriting from the
- abstract RRMPolicy_ IOC. For details see subclause 4.3.36.\";
- }
- leaf gNBCUUPId {
- type uint64 {
- range \"0..68719476735\";
- }
- config false;
- mandatory false;
- description
- \"Identifies the gNB-CU-UP at least within a gNB-CU-CP\";
- reference
- \"''gNB-CU-UP ID'' in subclause 9.3.1.15 of 3GPP TS 38.463\";
- }
- leaf gNBId {
- type int64 {
- range \"0..4294967295\";
- }
- mandatory false;
- description
- \"Indicates the number of bits for encoding the gNB Id.\";
- reference
- \"gNB Id in 3GPP TS 38.300, Global gNB ID in 3GPP TS 38.413\";
- }
- list pLMNInfoList {
- key \"mcc mnc\";
- description
- \"The PLMNInfoList is a list of PLMNInfo data type. It defines which PLMNs that
- can be served by the GNBCUUPFunction and which S-NSSAIs can be supported by the
- GNBCUUPFunction for corresponding PLMN in case of network slicing feature is supported\";
- uses PLMNInfo;
- }
- } // grouping
-
- grouping GNBCUCPFunctionGroup {
- description
- \"Represents the GNBCUCPFunction IOC.\";
- reference
- \"3GPP TS 28.541\";
- list RRMPolicyRatio {
- key id;
- leaf id {
- type string;
- description
- \"Key leaf\";
- }
- container attributes {
- uses RRMPolicyRatioGroup;
- }
- description \" The RRMPolicyRatio IOC is one realization of a RRMPolicy_ IOC, see the
- inheritance in Figure 4.2.1.2-1. This RRM framework allows adding new policies, both
- standardized (like RRMPolicyRatio) or as vendor specific, by inheriting from the
- abstract RRMPolicy_ IOC. For details see subclause 4.3.36.\";
- }
- leaf gNBId {
- type int64 {
- range \"0..4294967295\";
- }
- mandatory false;
- description
- \"Identifies a gNB within a PLMN. The gNB Identifier (gNB ID)
- is part of the NR Cell Identifier (NCI) of the gNB cells.\";
- reference
- \"gNB ID in 3GPP TS 38.300, Global gNB ID in 3GPP TS 38.413\";
- }
- leaf gNBIdLength {
- type int32 {
- range \"22..32\";
- }
- mandatory false;
- description
- \"Indicates the number of bits for encoding the gNB ID.\";
- reference
- \"gNB ID in 3GPP TS 38.300, Global gNB ID in 3GPP TS 38.413\";
- }
- leaf gNBCUName {
- type string {
- length \"1..150\";
- }
- mandatory false;
- description
- \"Identifies the Central Unit of an gNB.\";
- reference
- \"3GPP TS 38.473\";
- }
- list pLMNId {
- key \"mcc mnc\";
- min-elements 1;
- max-elements 1;
- description
- \"The PLMN identifier to be used as part of the global RAN
- node identity.\";
- uses PLMNId;
- }
- } // grouping
-
- grouping NRCellCUGroup {
- description
- \"Represents the NRCellCU IOC.\";
- reference
- \"3GPP TS 28.541\";
- leaf cellLocalId {
- type int32 {
- range \"0..16383\";
- }
- mandatory false;
- description
- \"Identifies an NR cell of a gNB. Together with corresponding
- gNB ID it forms the NR Cell Identifier (NCI).\";
- }
- list pLMNInfoList {
- key \"mcc mnc\";
- min-elements 1;
- description
- \"The PLMNInfoList is a list of PLMNInfo data type. It defines which PLMNs
- that can be served by the NR cell, and which S-NSSAIs that can be supported by the
- NR cell for corresponding PLMN in case of network slicing feature is supported.\";
- uses PLMNInfo;
- // Note: Whether the attribute pLMNId in the pLMNInfo can be writable depends on the implementation.
- }
- list RRMPolicyRatio {
- key id;
- leaf id {
- type string;
- description
- \"Key leaf\";
- }
- container attributes {
- uses RRMPolicyRatioGroup;
- }
- description \" The RRMPolicyRatio IOC is one realization of a RRMPolicy_ IOC, see the
- inheritance in Figure 4.2.1.2-1. This RRM framework allows adding new policies, both
- standardized (like RRMPolicyRatio) or as vendor specific, by inheriting from the
- abstract RRMPolicy_ IOC. For details see subclause 4.3.36.\";
- }
- } // grouping NRCellCUGroup
-
- grouping NRCellRelationGroup {
- description
- \"Represents the NRCellRelation IOC.\";
- reference
- \"3GPP TS 28.541\";
- leaf nRTCI {
- type uint64;
- description
- \"Target NR Cell Identifier. It consists of NR Cell
- Identifier (NCI) and Physical Cell Identifier of the target NR cell
- (nRPCI).\";
- "|0337045143fa2e592243243f82699b93
-ietf-yang-types.yang|"module ietf-yang-types {
-
- namespace \"urn:ietf:params:xml:ns:yang:ietf-yang-types\";
- prefix \"yang\";
-
- organization
- \"IETF NETMOD (NETCONF Data Modeling Language) Working Group\";
-
- contact
- \"WG Web: <http://tools.ietf.org/wg/netmod/>
- WG List: <mailto:netmod@ietf.org>
-
- WG Chair: David Kessens
- <mailto:david.kessens@nsn.com>
-
- WG Chair: Juergen Schoenwaelder
- <mailto:j.schoenwaelder@jacobs-university.de>
-
- Editor: Juergen Schoenwaelder
- <mailto:j.schoenwaelder@jacobs-university.de>\";
-
- description
- \"This module contains a collection of generally useful derived
- YANG data types.
-
- Copyright (c) 2013 IETF Trust and the persons identified as
- authors of the code. All rights reserved.
-
- Redistribution and use in source and binary forms, with or
- without modification, is permitted pursuant to, and subject
- to the license terms contained in, the Simplified BSD License
- set forth in Section 4.c of the IETF Trust''s Legal Provisions
- Relating to IETF Documents
- (http://trustee.ietf.org/license-info).
-
- This version of this YANG module is part of RFC 6991; see
- the RFC itself for full legal notices.\";
-
- revision 2013-07-15 {
- description
- \"This revision adds the following new data types:
- - yang-identifier
- - hex-string
- - uuid
- - dotted-quad\";
- reference
- \"RFC 6991: Common YANG Data Types\";
- }
-
- revision 2010-09-24 {
- description
- \"Initial revision.\";
- reference
- \"RFC 6021: Common YANG Data Types\";
- }
-
- /*** collection of counter and gauge types ***/
-
- typedef counter32 {
- type uint32;
- description
- \"The counter32 type represents a non-negative integer
- that monotonically increases until it reaches a
- maximum value of 2^32-1 (4294967295 decimal), when it
- wraps around and starts increasing again from zero.
-
- Counters have no defined ''initial'' value, and thus, a
- single value of a counter has (in general) no information
- content. Discontinuities in the monotonically increasing
- value normally occur at re-initialization of the
- management system, and at other times as specified in the
- description of a schema node using this type. If such
- other times can occur, for example, the creation of
- a schema node of type counter32 at times other than
- re-initialization, then a corresponding schema node
- should be defined, with an appropriate type, to indicate
- the last discontinuity.
-
- The counter32 type should not be used for configuration
- schema nodes. A default statement SHOULD NOT be used in
- combination with the type counter32.
-
- In the value set and its semantics, this type is equivalent
- to the Counter32 type of the SMIv2.\";
- reference
- \"RFC 2578: Structure of Management Information Version 2
- (SMIv2)\";
- }
-
- typedef zero-based-counter32 {
- type yang:counter32;
- default \"0\";
- description
- \"The zero-based-counter32 type represents a counter32
- that has the defined ''initial'' value zero.
-
- A schema node of this type will be set to zero (0) on creation
- and will thereafter increase monotonically until it reaches
- a maximum value of 2^32-1 (4294967295 decimal), when it
- wraps around and starts increasing again from zero.
-
- Provided that an application discovers a new schema node
- of this type within the minimum time to wrap, it can use the
- ''initial'' value as a delta. It is important for a management
- station to be aware of this minimum time and the actual time
- between polls, and to discard data if the actual time is too
- long or there is no defined minimum time.
-
- In the value set and its semantics, this type is equivalent
- to the ZeroBasedCounter32 textual convention of the SMIv2.\";
- reference
- \"RFC 4502: Remote Network Monitoring Management Information
- Base Version 2\";
- }
-
- typedef counter64 {
- type uint64;
- description
- \"The counter64 type represents a non-negative integer
- that monotonically increases until it reaches a
- maximum value of 2^64-1 (18446744073709551615 decimal),
- when it wraps around and starts increasing again from zero.
-
- Counters have no defined ''initial'' value, and thus, a
- single value of a counter has (in general) no information
- content. Discontinuities in the monotonically increasing
- value normally occur at re-initialization of the
- management system, and at other times as specified in the
- description of a schema node using this type. If such
- other times can occur, for example, the creation of
- a schema node of type counter64 at times other than
- re-initialization, then a corresponding schema node
- should be defined, with an appropriate type, to indicate
- the last discontinuity.
-
- The counter64 type should not be used for configuration
- schema nodes. A default statement SHOULD NOT be used in
- combination with the type counter64.
-
- In the value set and its semantics, this type is equivalent
- to the Counter64 type of the SMIv2.\";
- reference
- \"RFC 2578: Structure of Management Information Version 2
- (SMIv2)\";
- }
-
- typedef zero-based-counter64 {
- type yang:counter64;
- default \"0\";
- description
- \"The zero-based-counter64 type represents a counter64 that
- has the defined ''initial'' value zero.
-
-
-
-
- A schema node of this type will be set to zero (0) on creation
- and will thereafter increase monotonically until it reaches
- a maximum value of 2^64-1 (18446744073709551615 decimal),
- when it wraps around and starts increasing again from zero.
-
- Provided that an application discovers a new schema node
- of this type within the minimum time to wrap, it can use the
- ''initial'' value as a delta. It is important for a management
- station to be aware of this minimum time and the actual time
- between polls, and to discard data if the actual time is too
- long or there is no defined minimum time.
-
- In the value set and its semantics, this type is equivalent
- to the ZeroBasedCounter64 textual convention of the SMIv2.\";
- reference
- \"RFC 2856: Textual Conventions for Additional High Capacity
- Data Types\";
- }
-
- typedef gauge32 {
- type uint32;
- description
- \"The gauge32 type represents a non-negative integer, which
- may increase or decrease, but shall never exceed a maximum
- value, nor fall below a minimum value. The maximum value
- cannot be greater than 2^32-1 (4294967295 decimal), and
- the minimum value cannot be smaller than 0. The value of
- a gauge32 has its maximum value whenever the information
- being modeled is greater than or equal to its maximum
- value, and has its minimum value whenever the information
- being modeled is smaller than or equal to its minimum value.
- If the information being modeled subsequently decreases
- below (increases above) the maximum (minimum) value, the
- gauge32 also decreases (increases).
-
- In the value set and its semantics, this type is equivalent
- to the Gauge32 type of the SMIv2.\";
- reference
- \"RFC 2578: Structure of Management Information Version 2
- (SMIv2)\";
- }
-
- typedef gauge64 {
- type uint64;
- description
- \"The gauge64 type represents a non-negative integer, which
- may increase or decrease, but shall never exceed a maximum
- value, nor fall below a minimum value. The maximum value
- cannot be greater than 2^64-1 (18446744073709551615), and
- the minimum value cannot be smaller than 0. The value of
- a gauge64 has its maximum value whenever the information
- being modeled is greater than or equal to its maximum
- value, and has its minimum value whenever the information
- being modeled is smaller than or equal to its minimum value.
- If the information being modeled subsequently decreases
- below (increases above) the maximum (minimum) value, the
- gauge64 also decreases (increases).
-
- In the value set and its semantics, this type is equivalent
- to the CounterBasedGauge64 SMIv2 textual convention defined
- in RFC 2856\";
- reference
- \"RFC 2856: Textual Conventions for Additional High Capacity
- Data Types\";
- }
-
- /*** collection of identifier-related types ***/
-
- typedef object-identifier {
- type string {
- pattern ''(([0-1](.[1-3]?[0-9]))|(2.(0|([1-9]d*))))''
- + ''(.(0|([1-9]d*)))*'';
- }
- description
- \"The object-identifier type represents administratively
- assigned names in a registration-hierarchical-name tree.
-
- Values of this type are denoted as a sequence of numerical
- non-negative sub-identifier values. Each sub-identifier
- value MUST NOT exceed 2^32-1 (4294967295). Sub-identifiers
- are separated by single dots and without any intermediate
- whitespace.
-
- The ASN.1 standard restricts the value space of the first
- sub-identifier to 0, 1, or 2. Furthermore, the value space
- of the second sub-identifier is restricted to the range
- 0 to 39 if the first sub-identifier is 0 or 1. Finally,
- the ASN.1 standard requires that an object identifier
- has always at least two sub-identifiers. The pattern
- captures these restrictions.
-
- Although the number of sub-identifiers is not limited,
- module designers should realize that there may be
- implementations that stick with the SMIv2 limit of 128
- sub-identifiers.
-
- This type is a superset of the SMIv2 OBJECT IDENTIFIER type
- since it is not restricted to 128 sub-identifiers. Hence,
- this type SHOULD NOT be used to represent the SMIv2 OBJECT
- IDENTIFIER type; the object-identifier-128 type SHOULD be
- used instead.\";
- reference
- \"ISO9834-1: Information technology -- Open Systems
- Interconnection -- Procedures for the operation of OSI
- Registration Authorities: General procedures and top
- arcs of the ASN.1 Object Identifier tree\";
- }
-
- typedef object-identifier-128 {
- type object-identifier {
- pattern ''d*(.d*){1,127}'';
- }
- description
- \"This type represents object-identifiers restricted to 128
- sub-identifiers.
-
- In the value set and its semantics, this type is equivalent
- to the OBJECT IDENTIFIER type of the SMIv2.\";
- reference
- \"RFC 2578: Structure of Management Information Version 2
- (SMIv2)\";
- }
-
- typedef yang-identifier {
- type string {
- length \"1..max\";
- pattern ''[a-zA-Z_][a-zA-Z0-9-_.]*'';
- pattern ''.|..|[^xX].*|.[^mM].*|..[^lL].*'';
- }
- description
- \"A YANG identifier string as defined by the ''identifier''
- rule in Section 12 of RFC 6020. An identifier must
- start with an alphabetic character or an underscore
- followed by an arbitrary sequence of alphabetic or
- numeric characters, underscores, hyphens, or dots.
-
- A YANG identifier MUST NOT start with any possible
- combination of the lowercase or uppercase character
- sequence ''xml''.\";
- reference
- \"RFC 6020: YANG - A Data Modeling Language for the Network
- Configuration Protocol (NETCONF)\";
- }
-
- /*** collection of types related to date and time***/
-
- typedef date-and-time {
- type string {
- pattern ''d{4}-d{2}-d{2}Td{2}:d{2}:d{2}(.d+)?''
- + ''(Z|[+-]d{2}:d{2})'';
- }
- description
- \"The date-and-time type is a profile of the ISO 8601
- standard for representation of dates and times using the
- Gregorian calendar. The profile is defined by the
- date-time production in Section 5.6 of RFC 3339.
-
- The date-and-time type is compatible with the dateTime XML
- schema type with the following notable exceptions:
-
- (a) The date-and-time type does not allow negative years.
-
- (b) The date-and-time time-offset -00:00 indicates an unknown
- time zone (see RFC 3339) while -00:00 and +00:00 and Z
- all represent the same time zone in dateTime.
-
- (c) The canonical format (see below) of data-and-time values
- differs from the canonical format used by the dateTime XML
- schema type, which requires all times to be in UTC using
- the time-offset ''Z''.
-
- This type is not equivalent to the DateAndTime textual
- convention of the SMIv2 since RFC 3339 uses a different
- separator between full-date and full-time and provides
- higher resolution of time-secfrac.
-
- The canonical format for date-and-time values with a known time
- zone uses a numeric time zone offset that is calculated using
- the device''s configured known offset to UTC time. A change of
- the device''s offset to UTC time will cause date-and-time values
- to change accordingly. Such changes might happen periodically
- in case a server follows automatically daylight saving time
- (DST) time zone offset changes. The canonical format for
- date-and-time values with an unknown time zone (usually
- referring to the notion of local time) uses the time-offset
- -00:00.\";
- reference
- \"RFC 3339: Date and Time on the Internet: Timestamps
- RFC 2579: Textual Conventions for SMIv2
- XSD-TYPES: XML Schema Part 2: Datatypes Second Edition\";
- }
-
- typedef timeticks {
- type uint32;
- description
- \"The timeticks type represents a non-negative integer that
- represents the time, modulo 2^32 (4294967296 decimal), in
- hundredths of a second between two epochs. When a schema
- node is defined that uses this type, the description of
- the schema node identifies both of the reference epochs.
-
- In the value set and its semantics, this type is equivalent
- to the TimeTicks type of the SMIv2.\";
- reference
- \"RFC 2578: Structure of Management Information Version 2
- (SMIv2)\";
- }
-
- typedef timestamp {
- type yang:timeticks;
- description
- \"The timestamp type represents the value of an associated
- timeticks schema node at which a specific occurrence
- happened. The specific occurrence must be defined in the
- description of any schema node defined using this type. When
- the specific occurrence occurred prior to the last time the
- associated timeticks attribute was zero, then the timestamp
- value is zero. Note that this requires all timestamp values
- to be reset to zero when the value of the associated timeticks
- attribute reaches 497+ days and wraps around to zero.
-
- The associated timeticks schema node must be specified
- in the description of any schema node using this type.
-
- In the value set and its semantics, this type is equivalent
- to the TimeStamp textual convention of the SMIv2.\";
- reference
- \"RFC 2579: Textual Conventions for SMIv2\";
- }
-
- /*** collection of generic address types ***/
-
- typedef phys-address {
- type string {
- pattern ''([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'';
- }
-
-
-
-
- description
- \"Represents media- or physical-level addresses represented
- as a sequence octets, each octet represented by two hexadecimal
- numbers. Octets are separated by colons. The canonical
- representation uses lowercase characters.
-
- In the value set and its semantics, this type is equivalent
- to the PhysAddress textual convention of the SMIv2.\";
- reference
- \"RFC 2579: Textual Conventions for SMIv2\";
- }
-
- typedef mac-address {
- type string {
- pattern ''[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}'';
- }
- description
- \"The mac-address type represents an IEEE 802 MAC address.
- The canonical representation uses lowercase characters.
-
- In the value set and its semantics, this type is equivalent
- to the MacAddress textual convention of the SMIv2.\";
- reference
- \"IEEE 802: IEEE Standard for Local and Metropolitan Area
- Networks: Overview and Architecture
- RFC 2579: Textual Conventions for SMIv2\";
- }
-
- /*** collection of XML-specific types ***/
-
- typedef xpath1.0 {
- type string;
- description
- \"This type represents an XPATH 1.0 expression.
-
- When a schema node is defined that uses this type, the
- description of the schema node MUST specify the XPath
- context in which the XPath expression is evaluated.\";
- reference
- \"XPATH: XML Path Language (XPath) Version 1.0\";
- }
-
- /*** collection of string types ***/
-
- typedef hex-string {
- type string {
- pattern ''([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'';
- }
- description
- \"A hexadecimal string with octets represented as hex digits
- separated by colons. The canonical representation uses
- lowercase characters.\";
- }
-
- typedef uuid {
- type string {
- pattern ''[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-''
- + ''[0-9a-fA-F]{4}-[0-9a-fA-F]{12}'';
- }
- description
- \"A Universally Unique IDentifier in the string representation
- defined in RFC 4122. The canonical representation uses
- lowercase characters.
-
- The following is an example of a UUID in string representation:
- f81d4fae-7dec-11d0-a765-00a0c91e6bf6
- \";
- reference
- \"RFC 4122: A Universally Unique IDentifier (UUID) URN
- Namespace\";
- }
-
- typedef dotted-quad {
- type string {
- pattern
- ''(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]).){3}''
- + ''([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'';
- }
- description
- \"An unsigned 32-bit number expressed in the dotted-quad
- notation, i.e., four octets written as decimal numbers
- and separated with the ''.'' (full stop) character.\";
- }
-}"|57d603ee9ab0c49355ad0695c0709c93
diff --git a/csit/tests/cps-admin/cps-admin.robot b/csit/tests/cps-admin/cps-admin.robot
index cf7a90c4a..0df67b624 100644
--- a/csit/tests/cps-admin/cps-admin.robot
+++ b/csit/tests/cps-admin/cps-admin.robot
@@ -33,7 +33,6 @@ ${dataspaceName} CSIT-Dataspace
${schemaSetName} CSIT-SchemaSet
${anchorName} CSIT-Anchor
${ranDataspaceName} NFP-Operational
-${ranSchemaSetName} cps-ran-schema-model
*** Test Cases ***
Create Dataspace
@@ -77,11 +76,3 @@ Create Anchor
${headers}= Create Dictionary Authorization=${auth}
${response}= POST On Session CPS_URL ${uri} params=${params} headers=${headers}
Should Be Equal As Strings ${response.status_code} 201
-
-Get CPS RAN Schema Set info
- ${uri}= Set Variable ${basePath}/v1/dataspaces/${ranDataspaceName}/schema-sets/${ranSchemaSetName}
- ${headers}= Create Dictionary Authorization=${auth}
- ${response}= Get On Session CPS_URL ${uri} headers=${headers} expected_status=200
- ${responseJson}= Set Variable ${response.json()}
- Should Be Equal As Strings ${responseJson['name']} ${ranSchemaSetName}
- Should Be Equal As Strings ${responseJson['dataspaceName']} ${ranDataspaceName}
diff --git a/docs/deployment.rst b/docs/deployment.rst
index de276ce28..ba8fcd934 100644
--- a/docs/deployment.rst
+++ b/docs/deployment.rst
@@ -12,6 +12,13 @@ CPS Deployment
.. contents::
:depth: 2
+Database configuration
+======================
+CPS uses PostgreSQL database. As per the `PostgreSQL documentation on resource consumption
+<https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-SHARED-BUFFERS>`_, the *shared_buffers*
+parameter should be set between 25% and 40% of total memory. It has a default value of 128 megabytes, so this should be
+set appropriately. For example, given a database with 2GB of memory, 512MB is a recommended value.
+
CPS OOM Charts
==============
The CPS kubernetes chart is located in the `OOM repository <https://github.com/onap/oom/tree/master/kubernetes/cps>`_.
diff --git a/docs/release-notes.rst b/docs/release-notes.rst
index 2202d1139..3bed58125 100644
--- a/docs/release-notes.rst
+++ b/docs/release-notes.rst
@@ -43,6 +43,8 @@ Bug Fixes
Features
--------
+3.4.7
+ - `CPS-2061 <https://jira.onap.org/browse/CPS-2061>`_ Liquibase Steps Condensing and Cleanup.
Version: 3.4.6
==============
diff --git a/integration-test/pom.xml b/integration-test/pom.xml
index b379e9ff1..ca2b26d1c 100644
--- a/integration-test/pom.xml
+++ b/integration-test/pom.xml
@@ -68,6 +68,11 @@
<scope>test</scope>
</dependency>
<dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-web</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
<groupId>org.spockframework</groupId>
<artifactId>spock-spring</artifactId>
<scope>test</scope>
@@ -78,6 +83,11 @@
<scope>test</scope>
</dependency>
<dependency>
+ <groupId>org.springframework.kafka</groupId>
+ <artifactId>spring-kafka-test</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
<groupId>org.testcontainers</groupId>
<artifactId>postgresql</artifactId>
<scope>test</scope>
@@ -88,8 +98,8 @@
<scope>test</scope>
</dependency>
<dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-web</artifactId>
+ <groupId>org.testcontainers</groupId>
+ <artifactId>kafka</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
diff --git a/integration-test/src/test/groovy/org/onap/cps/integration/base/CpsIntegrationSpecBase.groovy b/integration-test/src/test/groovy/org/onap/cps/integration/base/CpsIntegrationSpecBase.groovy
index 33945a6c2..2603c48ed 100644
--- a/integration-test/src/test/groovy/org/onap/cps/integration/base/CpsIntegrationSpecBase.groovy
+++ b/integration-test/src/test/groovy/org/onap/cps/integration/base/CpsIntegrationSpecBase.groovy
@@ -21,12 +21,14 @@
package org.onap.cps.integration.base
import java.time.OffsetDateTime
+import java.time.format.DateTimeFormatter
import org.onap.cps.api.CpsAnchorService
import org.onap.cps.api.CpsDataService
import org.onap.cps.api.CpsDataspaceService
import org.onap.cps.api.CpsModuleService
import org.onap.cps.api.CpsQueryService
import org.onap.cps.integration.DatabaseTestContainer
+import org.onap.cps.integration.KafkaTestContainer
import org.onap.cps.ncmp.api.NetworkCmProxyCmHandleQueryService
import org.onap.cps.ncmp.api.NetworkCmProxyDataService
import org.onap.cps.ncmp.api.NetworkCmProxyQueryService
@@ -38,6 +40,7 @@ import org.onap.cps.spi.exceptions.DataspaceNotFoundException
import org.onap.cps.spi.model.DataNode
import org.onap.cps.spi.repository.DataspaceRepository
import org.onap.cps.spi.utils.SessionManager
+import org.onap.cps.utils.JsonObjectMapper
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.autoconfigure.EnableAutoConfiguration
import org.springframework.boot.autoconfigure.domain.EntityScan
@@ -55,13 +58,11 @@ import spock.lang.Shared
import spock.lang.Specification
import spock.util.concurrent.PollingConditions
-import java.time.format.DateTimeFormatter
-
+import static org.onap.cps.ncmp.api.impl.ncmppersistence.NcmpPersistence.NCMP_DATASPACE_NAME
+import static org.onap.cps.ncmp.api.impl.ncmppersistence.NcmpPersistence.NCMP_DMI_REGISTRY_ANCHOR
+import static org.onap.cps.ncmp.api.impl.ncmppersistence.NcmpPersistence.NCMP_DMI_REGISTRY_PARENT
import static org.springframework.test.web.client.match.MockRestRequestMatchers.requestTo
import static org.springframework.test.web.client.response.MockRestResponseCreators.withStatus
-import static org.onap.cps.ncmp.api.impl.ncmppersistence.NcmpPersistence.NCMP_DATASPACE_NAME;
-import static org.onap.cps.ncmp.api.impl.ncmppersistence.NcmpPersistence.NCMP_DMI_REGISTRY_ANCHOR;
-import static org.onap.cps.ncmp.api.impl.ncmppersistence.NcmpPersistence.NCMP_DMI_REGISTRY_PARENT;
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.MOCK, classes = [CpsDataspaceService])
@Testcontainers
@@ -75,8 +76,11 @@ abstract class CpsIntegrationSpecBase extends Specification {
@Shared
DatabaseTestContainer databaseTestContainer = DatabaseTestContainer.getInstance()
+ @Shared
+ KafkaTestContainer kafkaTestContainer = KafkaTestContainer.getInstance()
+
@Autowired
- MockMvc mvc;
+ MockMvc mvc
@Autowired
CpsDataspaceService cpsDataspaceService
@@ -111,6 +115,9 @@ abstract class CpsIntegrationSpecBase extends Specification {
@Autowired
ModuleSyncWatchdog moduleSyncWatchdog
+ @Autowired
+ JsonObjectMapper jsonObjectMapper
+
MockRestServiceServer mockDmiServer = null
static final DMI_URL = 'http://mock-dmi-server'
diff --git a/integration-test/src/test/groovy/org/onap/cps/integration/functional/NcmpCmHandleCreateSpec.groovy b/integration-test/src/test/groovy/org/onap/cps/integration/functional/NcmpCmHandleCreateSpec.groovy
index 6b6f62edf..f03872d56 100644
--- a/integration-test/src/test/groovy/org/onap/cps/integration/functional/NcmpCmHandleCreateSpec.groovy
+++ b/integration-test/src/test/groovy/org/onap/cps/integration/functional/NcmpCmHandleCreateSpec.groovy
@@ -20,7 +20,11 @@
package org.onap.cps.integration.functional
+import java.time.Duration
import java.time.OffsetDateTime
+import org.apache.kafka.common.TopicPartition
+import org.apache.kafka.common.serialization.StringDeserializer
+import org.onap.cps.integration.KafkaTestContainer
import org.onap.cps.integration.base.CpsIntegrationSpecBase
import org.onap.cps.ncmp.api.NetworkCmProxyDataService
import org.onap.cps.ncmp.api.impl.inventory.CmHandleState
@@ -28,12 +32,15 @@ import org.onap.cps.ncmp.api.impl.inventory.LockReasonCategory
import org.onap.cps.ncmp.api.models.CmHandleRegistrationResponse
import org.onap.cps.ncmp.api.models.DmiPluginRegistration
import org.onap.cps.ncmp.api.models.NcmpServiceCmHandle
+import org.onap.cps.ncmp.events.lcm.v1.LcmEvent
import spock.util.concurrent.PollingConditions
class NcmpCmHandleCreateSpec extends CpsIntegrationSpecBase {
NetworkCmProxyDataService objectUnderTest
+ def kafkaConsumer = KafkaTestContainer.getConsumer('ncmp-group', StringDeserializer.class)
+
static final MODULE_REFERENCES_RESPONSE_A = readResourceDataFile('mock-dmi-responses/bookStoreAWithModules_M1_M2_Response.json')
static final MODULE_RESOURCES_RESPONSE_A = readResourceDataFile('mock-dmi-responses/bookStoreAWithModules_M1_M2_ResourcesResponse.json')
static final MODULE_REFERENCES_RESPONSE_B = readResourceDataFile('mock-dmi-responses/bookStoreBWithModules_M1_M3_Response.json')
@@ -47,6 +54,9 @@ class NcmpCmHandleCreateSpec extends CpsIntegrationSpecBase {
given: 'DMI will return modules when requested'
mockDmiResponsesForModuleSync(DMI_URL, 'ch-1', MODULE_REFERENCES_RESPONSE_A, MODULE_RESOURCES_RESPONSE_A)
+ and: 'consumer subscribed to topic'
+ kafkaConsumer.subscribe(['ncmp-events'])
+
when: 'a CM-handle is registered for creation'
def cmHandleToCreate = new NcmpServiceCmHandle(cmHandleId: 'ch-1')
def dmiPluginRegistration = new DmiPluginRegistration(dmiPlugin: DMI_URL, createdCmHandles: [cmHandleToCreate])
@@ -66,6 +76,14 @@ class NcmpCmHandleCreateSpec extends CpsIntegrationSpecBase {
assert CmHandleState.READY == objectUnderTest.getCmHandleCompositeState('ch-1').cmHandleState
})
+ and: 'the messages is polled'
+ def message = kafkaConsumer.poll(Duration.ofMillis(10000))
+ def records = message.records(new TopicPartition('ncmp-events', 0))
+
+ and: 'the newest lcm event notification is received with READY state'
+ def notificationMessage = jsonObjectMapper.convertJsonString(records.last().value().toString(), LcmEvent)
+ assert notificationMessage.event.newValues.cmHandleState.value() == 'READY'
+
and: 'the CM-handle has expected modules'
assert ['M1', 'M2'] == objectUnderTest.getYangResourcesModuleReferences('ch-1').moduleName.sort()
diff --git a/integration-test/src/test/groovy/org/onap/cps/integration/functional/NcmpCmNotificationSubscriptionSpec.groovy b/integration-test/src/test/groovy/org/onap/cps/integration/functional/NcmpCmNotificationSubscriptionSpec.groovy
new file mode 100644
index 000000000..df74a05b5
--- /dev/null
+++ b/integration-test/src/test/groovy/org/onap/cps/integration/functional/NcmpCmNotificationSubscriptionSpec.groovy
@@ -0,0 +1,46 @@
+package org.onap.cps.integration.functional
+
+import static org.onap.cps.ncmp.api.impl.operations.DatastoreType.PASSTHROUGH_RUNNING;
+import org.onap.cps.integration.base.CpsIntegrationSpecBase;
+import org.onap.cps.ncmp.api.impl.events.cmsubscription.service.CmNotificationSubscriptionPersistenceService;
+import org.springframework.beans.factory.annotation.Autowired;
+
+class NcmpCmNotificationSubscriptionSpec extends CpsIntegrationSpecBase {
+
+ @Autowired
+ CmNotificationSubscriptionPersistenceService cmNotificationSubscriptionPersistenceService;
+
+ def 'Adding a new cm notification subscription'() {
+ given: 'there is no ongoing cm subscription for the following'
+ def datastoreType = PASSTHROUGH_RUNNING
+ def cmHandleId = 'ch-1'
+ def xpath = '/x/y'
+ assert cmNotificationSubscriptionPersistenceService.
+ getOngoingCmNotificationSubscriptionIds(datastoreType,cmHandleId,xpath).size() == 0
+ when: 'we add a new cm notification subscription'
+ cmNotificationSubscriptionPersistenceService.addOrUpdateCmNotificationSubscription(datastoreType,cmHandleId,xpath,
+ 'subId-1')
+ then: 'there is an ongoing cm subscription for that CM handle and xpath'
+ assert cmNotificationSubscriptionPersistenceService.isOngoingCmNotificationSubscription(datastoreType,cmHandleId,xpath)
+ and: 'only one subscription id is related to now ongoing cm subscription'
+ assert cmNotificationSubscriptionPersistenceService.
+ getOngoingCmNotificationSubscriptionIds(datastoreType,cmHandleId,xpath).size() == 1
+ }
+
+ def 'Adding a cm notification subscription to an already existing'() {
+ given: 'an ongoing cm subscription'
+ def datastoreType = PASSTHROUGH_RUNNING
+ def cmHandleId = 'ch-1'
+ def xpath = '/x/y'
+ cmNotificationSubscriptionPersistenceService.addOrUpdateCmNotificationSubscription(datastoreType,cmHandleId,xpath,
+ 'subId-1')
+ when: 'a new cm notification subscription is made for the SAME CM handle and xpath'
+ cmNotificationSubscriptionPersistenceService.addOrUpdateCmNotificationSubscription(datastoreType,cmHandleId,xpath,
+ 'subId-2')
+ then: 'it is added to the ongoing list of subscription ids'
+ def subscriptionIds = cmNotificationSubscriptionPersistenceService.getOngoingCmNotificationSubscriptionIds(datastoreType,cmHandleId,xpath)
+ assert subscriptionIds.size() == 2
+ and: 'both subscription ids exists for the CM handle and xpath'
+ assert subscriptionIds.contains("subId-1") && subscriptionIds.contains("subId-2")
+ }
+}
diff --git a/integration-test/src/test/java/org/onap/cps/integration/KafkaTestContainer.java b/integration-test/src/test/java/org/onap/cps/integration/KafkaTestContainer.java
new file mode 100644
index 000000000..d41f75291
--- /dev/null
+++ b/integration-test/src/test/java/org/onap/cps/integration/KafkaTestContainer.java
@@ -0,0 +1,86 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2024 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=========================================================
+ */
+
+package org.onap.cps.integration;
+
+import java.util.HashMap;
+import java.util.Map;
+import org.apache.kafka.clients.consumer.ConsumerConfig;
+import org.apache.kafka.clients.consumer.KafkaConsumer;
+import org.apache.kafka.common.serialization.StringDeserializer;
+import org.testcontainers.containers.KafkaContainer;
+import org.testcontainers.utility.DockerImageName;
+
+/**
+ * The Apache Kafka test container wrapper.
+ * Allow to use specific image and version with Singleton design pattern.
+ * This ensures only one instance of Kafka container across the integration tests.
+ * Avoid unnecessary resource and time consumption.
+ */
+public class KafkaTestContainer extends KafkaContainer {
+
+ private static final String IMAGE_NAME_AND_VERSION = "registry.nordix.org/onaptest/confluentinc/cp-kafka:6.2.1";
+
+ private static KafkaTestContainer kafkaTestContainer;
+
+ private KafkaTestContainer() {
+ super(DockerImageName.parse(IMAGE_NAME_AND_VERSION).asCompatibleSubstituteFor("confluentinc/cp-kafka"));
+ }
+
+ /**
+ * Provides an instance of Kafka test container wrapper.
+ * This will allow to initialize Kafka messaging support before any integration test run.
+ *
+ * @return KafkaTestContainer the unique Kafka instance
+ */
+ public static KafkaTestContainer getInstance() {
+ if (kafkaTestContainer == null) {
+ kafkaTestContainer = new KafkaTestContainer();
+ Runtime.getRuntime().addShutdownHook(new Thread(kafkaTestContainer::close));
+ }
+ return kafkaTestContainer;
+ }
+
+ public static KafkaConsumer getConsumer(final String consumerGroupId, final Object valueDeserializer) {
+ return new KafkaConsumer<>(consumerProperties(consumerGroupId, valueDeserializer));
+ }
+
+ @Override
+ public void start() {
+ super.start();
+ System.setProperty("spring.kafka.properties.bootstrap.servers", kafkaTestContainer.getBootstrapServers());
+ }
+
+ @Override
+ public void stop() {
+ // Method intentionally left blank
+ }
+
+ private static Map<String, Object> consumerProperties(final String consumerGroupId,
+ final Object valueDeserializer) {
+ final Map<String, Object> configProps = new HashMap<>();
+ configProps.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, kafkaTestContainer.getBootstrapServers());
+ configProps.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
+ configProps.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, valueDeserializer);
+ configProps.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest");
+ configProps.put(ConsumerConfig.GROUP_ID_CONFIG, consumerGroupId);
+ return configProps;
+ }
+
+}