diff options
37 files changed, 913 insertions, 10392 deletions
diff --git a/checkstyle/pom.xml b/checkstyle/pom.xml index 71ff88cc87..59af7a43db 100644 --- a/checkstyle/pom.xml +++ b/checkstyle/pom.xml @@ -26,7 +26,7 @@ <modelVersion>4.0.0</modelVersion> <groupId>org.onap.cps</groupId> <artifactId>checkstyle</artifactId> - <version>3.2.7-SNAPSHOT</version> + <version>3.3.0-SNAPSHOT</version> <profiles> <profile> diff --git a/cps-application/pom.xml b/cps-application/pom.xml index cf5de3ccfb..4c46e462a1 100755 --- a/cps-application/pom.xml +++ b/cps-application/pom.xml @@ -28,7 +28,7 @@ <parent> <groupId>org.onap.cps</groupId> <artifactId>cps-parent</artifactId> - <version>3.2.7-SNAPSHOT</version> + <version>3.3.0-SNAPSHOT</version> <relativePath>../cps-parent/pom.xml</relativePath> </parent> diff --git a/cps-bom/pom.xml b/cps-bom/pom.xml index 88c78faee3..c9af839557 100644 --- a/cps-bom/pom.xml +++ b/cps-bom/pom.xml @@ -25,7 +25,7 @@ <modelVersion>4.0.0</modelVersion> <groupId>org.onap.cps</groupId> <artifactId>cps-bom</artifactId> - <version>3.2.7-SNAPSHOT</version> + <version>3.3.0-SNAPSHOT</version> <packaging>pom</packaging> <description>This artifact contains dependencyManagement declarations of all published CPS components.</description> diff --git a/cps-dependencies/pom.xml b/cps-dependencies/pom.xml index 506ed9f188..770a66ad5a 100755 --- a/cps-dependencies/pom.xml +++ b/cps-dependencies/pom.xml @@ -27,7 +27,7 @@ <modelVersion>4.0.0</modelVersion> <groupId>org.onap.cps</groupId> <artifactId>cps-dependencies</artifactId> - <version>3.2.7-SNAPSHOT</version> + <version>3.3.0-SNAPSHOT</version> <packaging>pom</packaging> <name>${project.groupId}:${project.artifactId}</name> diff --git a/cps-events/pom.xml b/cps-events/pom.xml index 8fa2380caa..be0f4a73ff 100644 --- a/cps-events/pom.xml +++ b/cps-events/pom.xml @@ -24,7 +24,7 @@ <parent> <groupId>org.onap.cps</groupId> <artifactId>cps-parent</artifactId> - <version>3.2.7-SNAPSHOT</version> + <version>3.3.0-SNAPSHOT</version> <relativePath>../cps-parent/pom.xml</relativePath> </parent> diff --git a/cps-ncmp-events/pom.xml b/cps-ncmp-events/pom.xml index 890fa0effb..494e12631e 100644 --- a/cps-ncmp-events/pom.xml +++ b/cps-ncmp-events/pom.xml @@ -23,7 +23,7 @@ <parent> <groupId>org.onap.cps</groupId> <artifactId>cps-parent</artifactId> - <version>3.2.7-SNAPSHOT</version> + <version>3.3.0-SNAPSHOT</version> <relativePath>../cps-parent/pom.xml</relativePath> </parent> diff --git a/cps-ncmp-rest-stub/pom.xml b/cps-ncmp-rest-stub/pom.xml index c6eb0d7a5e..af289cbaab 100644 --- a/cps-ncmp-rest-stub/pom.xml +++ b/cps-ncmp-rest-stub/pom.xml @@ -26,7 +26,7 @@ <parent> <groupId>org.onap.cps</groupId> <artifactId>cps-parent</artifactId> - <version>3.2.7-SNAPSHOT</version> + <version>3.3.0-SNAPSHOT</version> <relativePath>../cps-parent/pom.xml</relativePath> </parent> diff --git a/cps-ncmp-rest/pom.xml b/cps-ncmp-rest/pom.xml index bbf6b961a6..ecf66fc2cb 100644 --- a/cps-ncmp-rest/pom.xml +++ b/cps-ncmp-rest/pom.xml @@ -27,7 +27,7 @@ <parent> <groupId>org.onap.cps</groupId> <artifactId>cps-parent</artifactId> - <version>3.2.7-SNAPSHOT</version> + <version>3.3.0-SNAPSHOT</version> <relativePath>../cps-parent/pom.xml</relativePath> </parent> diff --git a/cps-ncmp-service/pom.xml b/cps-ncmp-service/pom.xml index 1d7ca3813b..07ce152a4e 100644 --- a/cps-ncmp-service/pom.xml +++ b/cps-ncmp-service/pom.xml @@ -27,7 +27,7 @@ <parent> <groupId>org.onap.cps</groupId> <artifactId>cps-parent</artifactId> - <version>3.2.7-SNAPSHOT</version> + <version>3.3.0-SNAPSHOT</version> <relativePath>../cps-parent/pom.xml</relativePath> </parent> diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/event/avc/SubscriptionEventConsumer.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/event/avc/SubscriptionEventConsumer.java index 1361d98ffc..2685ce4ca9 100644 --- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/event/avc/SubscriptionEventConsumer.java +++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/event/avc/SubscriptionEventConsumer.java @@ -44,6 +44,9 @@ public class SubscriptionEventConsumer { @Value("${notification.enabled:true}") private boolean notificationFeatureEnabled; + @Value("${ncmp.model-loader.subscription:false}") + private boolean subscriptionModelLoaderEnabled; + /** * Consume the specified event. * @@ -60,7 +63,9 @@ public class SubscriptionEventConsumer { } if ("CM".equals(event.getDataType().getDataCategory())) { log.debug("Consuming event {} ...", subscriptionEvent); - persistSubscriptionEvent(subscriptionEvent); + if (subscriptionModelLoaderEnabled) { + persistSubscriptionEvent(subscriptionEvent); + } if ("CREATE".equals(subscriptionEvent.getEventType().value())) { log.info("Subscription for ClientID {} with name {} ...", event.getSubscription().getClientID(), diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/event/lcm/LcmEventsCreatorHelper.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/event/lcm/LcmEventsCreatorHelper.java index 40f70b9c68..852323df7d 100644 --- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/event/lcm/LcmEventsCreatorHelper.java +++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/event/lcm/LcmEventsCreatorHelper.java @@ -1,6 +1,6 @@ /* * ============LICENSE_START======================================================= - * Copyright (C) 2022 Nordix Foundation + * Copyright (C) 2022-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. @@ -177,10 +177,8 @@ public class LcmEventsCreatorHelper { private static boolean hasDataSyncEnabledFlagChanged(final NcmpServiceCmHandle targetNcmpServiceCmHandle, final NcmpServiceCmHandle existingNcmpServiceCmHandle) { - final Boolean targetDataSyncFlag = targetNcmpServiceCmHandle.getCompositeState() == null - ? null : targetNcmpServiceCmHandle.getCompositeState().getDataSyncEnabled(); - final Boolean existingDataSyncFlag = existingNcmpServiceCmHandle.getCompositeState() == null - ? null : existingNcmpServiceCmHandle.getCompositeState().getDataSyncEnabled(); + final Boolean targetDataSyncFlag = targetNcmpServiceCmHandle.getCompositeState().getDataSyncEnabled(); + final Boolean existingDataSyncFlag = existingNcmpServiceCmHandle.getCompositeState().getDataSyncEnabled(); if (targetDataSyncFlag == null) { return existingDataSyncFlag != null; diff --git a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/event/avc/SubscriptionEventConsumerSpec.groovy b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/event/avc/SubscriptionEventConsumerSpec.groovy index 248eb8bbe2..d801e4ddf7 100644 --- a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/event/avc/SubscriptionEventConsumerSpec.groovy +++ b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/event/avc/SubscriptionEventConsumerSpec.groovy @@ -50,6 +50,8 @@ class SubscriptionEventConsumerSpec extends MessagingBaseSpec { def testEventSent = jsonObjectMapper.convertJsonString(jsonData, SubscriptionEvent.class) and: 'notifications are enabled' objectUnderTest.notificationFeatureEnabled = true + and: 'subscription model loader is enabled' + objectUnderTest.subscriptionModelLoaderEnabled = true when: 'the valid event is consumed' objectUnderTest.consumeSubscriptionEvent(testEventSent) then: 'the event is mapped to a yangModelSubscription' @@ -60,18 +62,20 @@ class SubscriptionEventConsumerSpec extends MessagingBaseSpec { 1 * mockSubscriptionEventForwarder.forwardCreateSubscriptionEvent(testEventSent) } - def 'Consume and persist valid CM create message where notifications are disabled'() { + def 'Consume valid CM create message where notifications and model loader are disabled'() { given: 'an event with data category CM' def jsonData = TestUtils.getResourceFileContent('avcSubscriptionCreationEvent.json') def testEventSent = jsonObjectMapper.convertJsonString(jsonData, SubscriptionEvent.class) and: 'notifications are disabled' objectUnderTest.notificationFeatureEnabled = false + and: 'subscription model loader is disabled' + objectUnderTest.subscriptionModelLoaderEnabled = false when: 'the valid event is consumed' objectUnderTest.consumeSubscriptionEvent(testEventSent) - then: 'the event is mapped to a yangModelSubscription' - 1 * mockSubscriptionEventMapper.toYangModelSubscriptionEvent(testEventSent) >> yangModelSubscriptionEvent - and: 'the event is persisted' - 1 * mockSubscriptionPersistence.saveSubscriptionEvent(yangModelSubscriptionEvent) + then: 'the event is not mapped to a yangModelSubscription' + 0 * mockSubscriptionEventMapper.toYangModelSubscriptionEvent(*_) >> yangModelSubscriptionEvent + and: 'the event is not persisted' + 0 * mockSubscriptionPersistence.saveSubscriptionEvent(*_) and: 'the event is not forwarded' 0 * mockSubscriptionEventForwarder.forwardCreateSubscriptionEvent(*_) } diff --git a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/event/lcm/LcmEventsCreatorSpec.groovy b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/event/lcm/LcmEventsCreatorSpec.groovy index 18041fa6a5..7b8b2b4538 100644 --- a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/event/lcm/LcmEventsCreatorSpec.groovy +++ b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/event/lcm/LcmEventsCreatorSpec.groovy @@ -1,6 +1,6 @@ /* * ============LICENSE_START======================================================= - * Copyright (C) 2022 Nordix Foundation + * Copyright (C) 2022-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. @@ -36,11 +36,11 @@ class LcmEventsCreatorSpec extends Specification { def cmHandleId = 'test-cm-handle' def 'Map the LcmEvent for #operation'() { - given: 'NCMP cm handle details with current and old details' + given: 'NCMP cm handle details with current and old properties' def existingNcmpServiceCmHandle = new NcmpServiceCmHandle(cmHandleId: cmHandleId, compositeState: new CompositeState(dataSyncEnabled: true, cmHandleState: existingCmHandleState), - publicProperties: ['publicProperty1': 'value1', 'publicProperty2': 'value2', 'publicProperty3': 'value3']) - def targetNcmpServiceCmHandle = new NcmpServiceCmHandle(cmHandleId: cmHandleId, compositeState: new CompositeState(dataSyncEnabled: false, cmHandleState: targetCmHandleState), - publicProperties: ['publicProperty1': 'value1', 'publicProperty2': 'value22']) + publicProperties: existingPublicProperties) + def targetNcmpServiceCmHandle = new NcmpServiceCmHandle(cmHandleId: cmHandleId, compositeState: new CompositeState(dataSyncEnabled: true, cmHandleState: targetCmHandleState), + publicProperties: targetPublicProperties) when: 'the event is populated' def result = objectUnderTest.populateLcmEvent(cmHandleId, targetNcmpServiceCmHandle, existingNcmpServiceCmHandle) then: 'event header is mapped correctly' @@ -49,21 +49,31 @@ class LcmEventsCreatorSpec extends Specification { assert result.eventType == LcmEventType.UPDATE.eventType and: 'event payload is mapped correctly with correct cmhandle id' assert result.event.cmHandleId == cmHandleId - and: 'it should have correct old values' + and: 'it should have correct old state and properties' assert result.event.oldValues.cmHandleState == expectedExistingCmHandleState - assert result.event.oldValues.dataSyncEnabled == true - and: 'the correct new values' + assert result.event.oldValues.cmHandleProperties == [expectedExistingPublicProperties] + and: 'the correct new state and properties' + assert result.event.newValues.cmHandleProperties == [expectedTargetPublicProperties] assert result.event.newValues.cmHandleState == expectedTargetCmHandleState - assert result.event.newValues.dataSyncEnabled == false - and: 'cmhandle properties are just the one which are differing' - assert result.event.oldValues.cmHandleProperties == [['publicProperty2': 'value2', 'publicProperty3': 'value3']] - assert result.event.newValues.cmHandleProperties == [['publicProperty2': 'value22']] where: 'following parameters are provided' - operation | existingCmHandleState | targetCmHandleState || expectedExistingCmHandleState | expectedTargetCmHandleState - 'UPDATE' | ADVISED | READY || Values.CmHandleState.ADVISED | Values.CmHandleState.READY - 'DELETING' | READY | DELETING || Values.CmHandleState.READY | Values.CmHandleState.DELETING - + operation | existingCmHandleState | targetCmHandleState | existingPublicProperties | targetPublicProperties || expectedExistingPublicProperties | expectedTargetPublicProperties | expectedExistingCmHandleState | expectedTargetCmHandleState + 'UPDATE' | ADVISED | READY | ['publicProperty1': 'value1', 'publicProperty2': 'value2'] | ['publicProperty1': 'value11'] || ['publicProperty1': 'value1', 'publicProperty2': 'value2'] | ['publicProperty1': 'value11'] | Values.CmHandleState.ADVISED | Values.CmHandleState.READY + 'DELETING' | READY | DELETING | ['publicProperty1': 'value3', 'publicProperty2': 'value4'] | ['publicProperty1': 'value33'] || ['publicProperty1': 'value3', 'publicProperty2': 'value4'] | ['publicProperty1': 'value33'] | Values.CmHandleState.READY | Values.CmHandleState.DELETING + 'CHANGE' | READY | READY | ['publicProperty1': 'value3', 'publicProperty2': 'value4'] | ['publicProperty1': 'value33'] || ['publicProperty1': 'value3', 'publicProperty2': 'value4'] | ['publicProperty1': 'value33'] | null | null + } + def 'Map the LcmEvent for all properties NO CHANGE'() { + given: 'NCMP cm handle details without any changes' + def publicProperties = ['publicProperty1': 'value3', 'publicProperty2': 'value4'] + def existingNcmpServiceCmHandle = new NcmpServiceCmHandle(cmHandleId: cmHandleId, compositeState: new CompositeState(dataSyncEnabled: true, cmHandleState: READY), + publicProperties: publicProperties) + def targetNcmpServiceCmHandle = new NcmpServiceCmHandle(cmHandleId: cmHandleId, compositeState: new CompositeState(dataSyncEnabled: true, cmHandleState: READY), + publicProperties: publicProperties) + when: 'the event is populated' + def result = objectUnderTest.populateLcmEvent(cmHandleId, targetNcmpServiceCmHandle, existingNcmpServiceCmHandle) + then: 'Properties are just the one which are same' + assert result.event.oldValues == null + assert result.event.newValues == null } def 'Map the LcmEvent for operation CREATE'() { diff --git a/cps-parent/pom.xml b/cps-parent/pom.xml index 193a04e7d2..829ab04b68 100755 --- a/cps-parent/pom.xml +++ b/cps-parent/pom.xml @@ -32,7 +32,7 @@ <groupId>org.onap.cps</groupId> <artifactId>cps-parent</artifactId> - <version>3.2.7-SNAPSHOT</version> + <version>3.3.0-SNAPSHOT</version> <packaging>pom</packaging> <properties> diff --git a/cps-path-parser/pom.xml b/cps-path-parser/pom.xml index 0784ccbbfb..5b861f76d6 100644 --- a/cps-path-parser/pom.xml +++ b/cps-path-parser/pom.xml @@ -23,7 +23,7 @@ <parent> <groupId>org.onap.cps</groupId> <artifactId>cps-parent</artifactId> - <version>3.2.7-SNAPSHOT</version> + <version>3.3.0-SNAPSHOT</version> <relativePath>../cps-parent/pom.xml</relativePath> </parent> diff --git a/cps-rest/pom.xml b/cps-rest/pom.xml index c27e515b77..9d4f6331be 100755 --- a/cps-rest/pom.xml +++ b/cps-rest/pom.xml @@ -28,7 +28,7 @@ <parent> <groupId>org.onap.cps</groupId> <artifactId>cps-parent</artifactId> - <version>3.2.7-SNAPSHOT</version> + <version>3.3.0-SNAPSHOT</version> <relativePath>../cps-parent/pom.xml</relativePath> </parent> diff --git a/cps-ri/pom.xml b/cps-ri/pom.xml index ba743f28b2..3cb41303e3 100644 --- a/cps-ri/pom.xml +++ b/cps-ri/pom.xml @@ -26,12 +26,16 @@ <parent>
<groupId>org.onap.cps</groupId>
<artifactId>cps-parent</artifactId>
- <version>3.2.7-SNAPSHOT</version>
+ <version>3.3.0-SNAPSHOT</version>
<relativePath>../cps-parent/pom.xml</relativePath>
</parent>
<artifactId>cps-ri</artifactId>
+ <properties>
+ <minimum-coverage>0.96</minimum-coverage>
+ </properties>
+
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
diff --git a/cps-ri/src/main/java/org/onap/cps/spi/impl/CpsDataPersistenceServiceImpl.java b/cps-ri/src/main/java/org/onap/cps/spi/impl/CpsDataPersistenceServiceImpl.java index aa631d1b1a..369e5289b1 100644 --- a/cps-ri/src/main/java/org/onap/cps/spi/impl/CpsDataPersistenceServiceImpl.java +++ b/cps-ri/src/main/java/org/onap/cps/spi/impl/CpsDataPersistenceServiceImpl.java @@ -458,6 +458,7 @@ public class CpsDataPersistenceServiceImpl implements CpsDataPersistenceService return new DataNodeBuilder() .withXpath(fragmentEntity.getXpath()) .withLeaves(leaves) + .withDataspace(fragmentEntity.getAnchor().getDataspace().getName()) .withAnchor(fragmentEntity.getAnchor().getName()) .withChildDataNodes(childDataNodes).build(); } diff --git a/cps-ri/src/test/groovy/org/onap/cps/spi/impl/CpsDataPersistenceQueryDataNodeSpec.groovy b/cps-ri/src/test/groovy/org/onap/cps/spi/impl/CpsDataPersistenceQueryDataNodeSpec.groovy index 60aaa81140..d5a6be4e80 100644 --- a/cps-ri/src/test/groovy/org/onap/cps/spi/impl/CpsDataPersistenceQueryDataNodeSpec.groovy +++ b/cps-ri/src/test/groovy/org/onap/cps/spi/impl/CpsDataPersistenceQueryDataNodeSpec.groovy @@ -1,6 +1,6 @@ /* * ============LICENSE_START======================================================= - * Copyright (C) 2021-2022 Nordix Foundation + * Copyright (C) 2021-2023 Nordix Foundation * Modifications Copyright (C) 2021 Pantheon.tech * Modifications Copyright (C) 2021 Bell Canada. * Modifications Copyright (C) 2023 TechMahindra Ltd. @@ -23,13 +23,10 @@ package org.onap.cps.spi.impl import org.onap.cps.spi.CpsDataPersistenceService -import org.onap.cps.spi.FetchDescendantsOption import org.onap.cps.spi.exceptions.CpsPathException import org.springframework.beans.factory.annotation.Autowired import org.springframework.test.context.jdbc.Sql -import java.util.stream.Collectors - import static org.onap.cps.spi.FetchDescendantsOption.INCLUDE_ALL_DESCENDANTS import static org.onap.cps.spi.FetchDescendantsOption.OMIT_DESCENDANTS @@ -41,96 +38,6 @@ class CpsDataPersistenceQueryDataNodeSpec extends CpsPersistenceSpecBase { static final String SET_DATA = '/data/cps-path-query.sql' @Sql([CLEAR_DATA, SET_DATA]) - def 'Cps Path query for leaf value(s) with : #scenario.'() { - when: 'a query is executed to get a data node by the given cps path' - def result = objectUnderTest.queryDataNodes(DATASPACE_NAME, ANCHOR_FOR_SHOP_EXAMPLE, cpsPath, fetchDescendantsOption) - then: 'the correct number of parent nodes are returned' - result.size() == expectedNumberOfParentNodes - then: 'the correct data is returned' - result.each { - assert it.getChildDataNodes().size() == expectedNumberOfChildNodes - } - where: 'the following data is used' - scenario | cpsPath | fetchDescendantsOption || expectedNumberOfParentNodes | expectedNumberOfChildNodes - 'String and no descendants' | '/shops/shop[@id=1]/categories[@code=1]/book[@title="Dune"]' | OMIT_DESCENDANTS || 1 | 0 - 'Integer and descendants' | '/shops/shop[@id=1]/categories[@code=1]/book[@price=5]' | INCLUDE_ALL_DESCENDANTS || 1 | 1 - 'No condition no descendants' | '/shops/shop[@id=1]/categories' | OMIT_DESCENDANTS || 3 | 0 - 'Integer and level 1 descendants' | '/shops' | new FetchDescendantsOption(1) || 1 | 5 - 'Integer and level 2 descendants' | '/shops/shop[@id=1]' | new FetchDescendantsOption(2) || 1 | 3 - } - - @Sql([CLEAR_DATA, SET_DATA]) - def 'Query for attribute by cps path with cps paths that return no data because of #scenario.'() { - when: 'a query is executed to get data nodes for the given cps path' - def result = objectUnderTest.queryDataNodes(DATASPACE_NAME, ANCHOR_FOR_SHOP_EXAMPLE, cpsPath, OMIT_DESCENDANTS) - then: 'no data is returned' - result.isEmpty() - where: 'following cps queries are performed' - scenario | cpsPath - 'cps path is incomplete' | '/shops[@title="Dune"]' - 'leaf value does not exist' | '/shops/shop[@id=1]/categories[@code=1]/book[@title=\'does not exist\']' - 'incomplete end of xpath prefix' | '/shops/shop[@id=1]/categories/book[@price=15]' - } - - @Sql([CLEAR_DATA, SET_DATA]) - def 'Cps Path query using descendant anywhere and #type (further) descendants.'() { - when: 'a query is executed to get a data node by the given cps path' - def cpsPath = '//categories[@code=1]' - def result = objectUnderTest.queryDataNodes(DATASPACE_NAME, ANCHOR_FOR_SHOP_EXAMPLE, cpsPath, includeDescendantsOption) - then: 'the data node has the correct number of children' - def dataNode = result.stream().findFirst().get() - dataNode.getChildDataNodes().size() == expectedNumberOfChildNodes - where: 'the following data is used' - type | includeDescendantsOption || expectedNumberOfChildNodes - 'omit' | OMIT_DESCENDANTS || 0 - 'include' | INCLUDE_ALL_DESCENDANTS || 1 - } - - @Sql([CLEAR_DATA, SET_DATA]) - def 'Cps Path query using descendant anywhere with #scenario '() { - when: 'a query is executed to get a data node by the given cps path' - def result = objectUnderTest.queryDataNodes(DATASPACE_NAME, ANCHOR_FOR_SHOP_EXAMPLE, cpsPath, OMIT_DESCENDANTS) - then: 'the correct number of data nodes are retrieved' - result.size() == expectedXPaths.size() - and: 'xpaths of the retrieved data nodes are as expected' - for (int i = 0; i < result.size(); i++) { - assert result[i].getXpath() == expectedXPaths[i] - } - where: 'the following data is used' - scenario | cpsPath || expectedXPaths - 'fully unique descendant name' | '//categories[@code=2]' || ["/shops/shop[@id='1']/categories[@code='2']", "/shops/shop[@id='2']/categories[@code='1']", "/shops/shop[@id='2']/categories[@code='2']"] - 'descendant name match end of other node' | '//book' || ["/shops/shop[@id='1']/categories[@code='1']/book", "/shops/shop[@id='1']/categories[@code='2']/book"] - 'descendant with text condition on leaf' | '//book/title[text()="Chapters"]' || ["/shops/shop[@id='1']/categories[@code='2']/book"] - 'descendant with text condition case mismatch' | '//book/title[text()="chapters"]' || [] - 'descendant with text condition on int leaf' | '//book/price[text()="5"]' || ["/shops/shop[@id='1']/categories[@code='1']/book"] - 'descendant with text condition on leaf-list' | '//book/labels[text()="special offer"]' || ["/shops/shop[@id='1']/categories[@code='1']/book"] - 'descendant with text condition partial match' | '//book/labels[text()="special"]' || [] - 'descendant with text condition (existing) empty string' | '//book/labels[text()=""]' || ["/shops/shop[@id='1']/categories[@code='1']/book"] - 'descendant with text condition on int leaf-list' | '//book/editions[text()="2000"]' || ["/shops/shop[@id='1']/categories[@code='2']/book"] - 'descendant name match of leaf containing /' | '//categories/type[text()="text/with/slash"]' || ["/shops/shop[@id='1']/categories[@code='string/with/slash/']"] - 'descendant with text condition on leaf containing /' | '//categories[@code=\'string/with/slash\']' || ["/shops/shop[@id='1']/categories[@code='string/with/slash/']"] - 'descendant with text condition on leaf containing [' | '//book/author[@Address="String[with]square[bracket]"]'|| [] - } - - @Sql([CLEAR_DATA, SET_DATA]) - def 'Cps Path query using descendant anywhere with #scenario condition(s) for a container element.'() { - when: 'a query is executed to get a data node by the given cps path' - def result = objectUnderTest.queryDataNodes(DATASPACE_NAME, ANCHOR_FOR_SHOP_EXAMPLE, cpsPath, OMIT_DESCENDANTS) - then: 'the correct number of data nodes are retrieved' - result.size() == expectedXPaths.size() - and: 'xpaths of the retrieved data nodes are as expected' - for (int i = 0; i < result.size(); i++) { - assert result[i].getXpath() == expectedXPaths[i] - } - where: 'the following data is used' - scenario | cpsPath || expectedXPaths - 'one leaf' | '//author[@FirstName="Joe"]' || ["/shops/shop[@id='1']/categories[@code='1']/book/author[@FirstName='Joe' and @Surname='Bloggs']", "/shops/shop[@id='1']/categories[@code='2']/book/author[@FirstName='Joe' and @Surname='Smith']"] - 'more than one leaf' | '//author[@FirstName="Joe" and @Surname="Bloggs"]' || ["/shops/shop[@id='1']/categories[@code='1']/book/author[@FirstName='Joe' and @Surname='Bloggs']"] - 'leaves reversed in order' | '//author[@Surname="Bloggs" and @FirstName="Joe"]' || ["/shops/shop[@id='1']/categories[@code='1']/book/author[@FirstName='Joe' and @Surname='Bloggs']"] - 'leaf and text condition' | '//author[@FirstName="Joe"]/Surname[text()="Bloggs"]' || ["/shops/shop[@id='1']/categories[@code='1']/book/author[@FirstName='Joe' and @Surname='Bloggs']"] - } - - @Sql([CLEAR_DATA, SET_DATA]) def 'Cps Path query using descendant anywhere with #scenario condition(s) for a list element.'() { when: 'a query is executed to get a data node by the given cps path' def result = objectUnderTest.queryDataNodes(DATASPACE_NAME, ANCHOR_FOR_SHOP_EXAMPLE, cpsPath, OMIT_DESCENDANTS) @@ -148,39 +55,6 @@ class CpsDataPersistenceQueryDataNodeSpec extends CpsPersistenceSpecBase { } @Sql([CLEAR_DATA, SET_DATA]) - def 'Query for attribute by cps path of type ancestor with #scenario.'() { - when: 'the given cps path is parsed' - def result = objectUnderTest.queryDataNodes(DATASPACE_NAME, ANCHOR_FOR_SHOP_EXAMPLE, cpsPath, INCLUDE_ALL_DESCENDANTS) - then: 'the xpaths of the retrieved data nodes are as expected' - result.size() == expectedXPaths.size() - if (result.size() > 0) { - def resultXpaths = result.stream().map(it -> it.xpath).collect(Collectors.toSet()) - resultXpaths.containsAll(expectedXPaths) - result.each { - assert it.childDataNodes.size() == expectedNumberOfChildren - } - } - where: 'the following data is used' - scenario | cpsPath || expectedXPaths || expectedNumberOfChildren - 'multiple list-ancestors' | '//book/ancestor::categories' || ["/shops/shop[@id='1']/categories[@code='2']", "/shops/shop[@id='1']/categories[@code='1']"] || 1 - 'one ancestor with list value' | '//book/ancestor::categories[@code=1]' || ["/shops/shop[@id='1']/categories[@code='1']"] || 1 - 'top ancestor' | '//shop[@id=1]/ancestor::shops' || ['/shops'] || 5 - 'list with index value in the xpath prefix' | '//categories[@code=1]/book/ancestor::shop[@id=1]' || ["/shops/shop[@id='1']"] || 3 - 'ancestor with parent list' | '//book/ancestor::shop[@id=1]/categories[@code=2]' || ["/shops/shop[@id='1']/categories[@code='2']"] || 1 - 'ancestor with parent' | '//phonenumbers[@type="mob"]/ancestor::info/contact' || ["/shops/shop[@id='3']/info/contact"] || 3 - 'ancestor combined with text condition' | '//book/title[text()="Dune"]/ancestor::shop' || ["/shops/shop[@id='1']"] || 3 - 'ancestor with parent that does not exist' | '//book/ancestor::parentDoesNoExist/categories' || [] || null - 'ancestor does not exist' | '//book/ancestor::ancestorDoesNotExist' || [] || null - } - - def 'Cps Path query with syntax error throws a CPS Path Exception.'() { - when: 'trying to execute a query with a syntax (parsing) error' - objectUnderTest.queryDataNodes(DATASPACE_NAME, ANCHOR_FOR_SHOP_EXAMPLE, 'cpsPath that cannot be parsed' , OMIT_DESCENDANTS) - then: 'a cps path exception is thrown' - thrown(CpsPathException) - } - - @Sql([CLEAR_DATA, SET_DATA]) def 'Cps Path query across anchors for leaf value(s) with : #scenario.'() { when: 'a query is executed to get a data node by the given cps path' def result = objectUnderTest.queryDataNodesAcrossAnchors(DATASPACE_NAME, cpsPath, includeDescendantsOption) diff --git a/cps-ri/src/test/groovy/org/onap/cps/spi/performance/CpsDataPersistenceServicePerfTest.groovy b/cps-ri/src/test/groovy/org/onap/cps/spi/performance/CpsDataPersistenceServicePerfTest.groovy index 7f1fb20f72..2628e9697f 100644 --- a/cps-ri/src/test/groovy/org/onap/cps/spi/performance/CpsDataPersistenceServicePerfTest.groovy +++ b/cps-ri/src/test/groovy/org/onap/cps/spi/performance/CpsDataPersistenceServicePerfTest.groovy @@ -47,7 +47,6 @@ class CpsDataPersistenceServicePerfTest extends CpsPersistencePerfSpecBase { static def NUMBER_OF_CHILDREN = 200 static def NUMBER_OF_GRAND_CHILDREN = 50 - static def TOTAL_NUMBER_OF_NODES = 1 + NUMBER_OF_CHILDREN + (NUMBER_OF_CHILDREN * NUMBER_OF_GRAND_CHILDREN) // Parent + Children + Grand-children @Sql([CLEAR_DATA, PERF_TEST_DATA]) def 'Create a node with many descendants (please note, subsequent tests depend on this running first).'() { @@ -60,63 +59,6 @@ class CpsDataPersistenceServicePerfTest extends CpsPersistencePerfSpecBase { recordAndAssertPerformance('Setup', 10000, setupDurationInMillis) } - def 'Get data node with many descendants by xpath #scenario'() { - when: 'get parent is executed with all descendants' - stopWatch.start() - def result = objectUnderTest.getDataNodes(PERF_DATASPACE, PERF_ANCHOR, xpath, INCLUDE_ALL_DESCENDANTS) - stopWatch.stop() - def readDurationInMillis = stopWatch.getTotalTimeMillis() - then: 'read duration is under #allowedDuration milliseconds' - recordAndAssertPerformance("Get ${scenario}", allowedDuration, readDurationInMillis) - and: 'data node is returned with all the descendants populated' - assert countDataNodes(result[0]) == TOTAL_NUMBER_OF_NODES - where: 'the following xPaths are used' - scenario | xpath || allowedDuration - 'parent' | PERF_TEST_PARENT || 500 - 'root' | '/' || 500 - } - - def 'Query parent data node with many descendants by cps-path'() { - when: 'query is executed with all descendants' - stopWatch.start() - def result = objectUnderTest.queryDataNodes(PERF_DATASPACE, PERF_ANCHOR, '//perf-parent-1' , INCLUDE_ALL_DESCENDANTS) - stopWatch.stop() - def readDurationInMillis = stopWatch.getTotalTimeMillis() - then: 'read duration is under 350 milliseconds' - recordAndAssertPerformance('Query with many descendants', 350, readDurationInMillis) - and: 'data node is returned with all the descendants populated' - assert countDataNodes(result) == TOTAL_NUMBER_OF_NODES - } - - def 'Performance of finding multiple xpaths'() { - when: 'we query for all grandchildren (except 1 for fun) with the new native method' - xpathsToAllGrandChildren.remove(0) - stopWatch.start() - def result = objectUnderTest.getDataNodesForMultipleXpaths(PERF_DATASPACE, PERF_ANCHOR, xpathsToAllGrandChildren, INCLUDE_ALL_DESCENDANTS) - stopWatch.stop() - def readDurationInMillis = stopWatch.getTotalTimeMillis() - then: 'the returned number of entities equal to the number of children * number of grandchildren' - assert result.size() == xpathsToAllGrandChildren.size() - and: 'it took less then 1000ms' - recordAndAssertPerformance('Find multiple xpaths', 1000, readDurationInMillis) - } - - def 'Query many descendants by cps-path with #scenario'() { - when: 'query is executed with all descendants' - stopWatch.start() - def result = objectUnderTest.queryDataNodes(PERF_DATASPACE, PERF_ANCHOR, '//perf-test-grand-child-1', descendantsOption) - stopWatch.stop() - def readDurationInMillis = stopWatch.getTotalTimeMillis() - then: 'read duration is under #allowedDuration milliseconds' - recordAndAssertPerformance("Query many descendants by cpspath (${scenario})", allowedDuration, readDurationInMillis) - and: 'data node is returned with all the descendants populated' - assert result.size() == NUMBER_OF_CHILDREN - where: 'the following options are used' - scenario | descendantsOption || allowedDuration - 'omit descendants ' | OMIT_DESCENDANTS || 150 - 'include descendants (although there are none)' | INCLUDE_ALL_DESCENDANTS || 150 - } - def 'Update data nodes with descendants'() { given: 'a list of xpaths to data nodes with descendants (xpath for each child)' def xpaths = (1..20).collect { diff --git a/cps-service/pom.xml b/cps-service/pom.xml index 86fef36439..47f5508ff1 100644 --- a/cps-service/pom.xml +++ b/cps-service/pom.xml @@ -29,7 +29,7 @@ <parent> <groupId>org.onap.cps</groupId> <artifactId>cps-parent</artifactId> - <version>3.2.7-SNAPSHOT</version> + <version>3.3.0-SNAPSHOT</version> <relativePath>../cps-parent/pom.xml</relativePath> </parent> diff --git a/cps-service/src/main/java/org/onap/cps/spi/model/DataNodeBuilder.java b/cps-service/src/main/java/org/onap/cps/spi/model/DataNodeBuilder.java index 6fc36ebb61..e212933388 100644 --- a/cps-service/src/main/java/org/onap/cps/spi/model/DataNodeBuilder.java +++ b/cps-service/src/main/java/org/onap/cps/spi/model/DataNodeBuilder.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * Copyright (C) 2021 Bell Canada. All rights reserved. * Modifications Copyright (C) 2021 Pantheon.tech - * Modifications Copyright (C) 2022 Nordix Foundation. + * Modifications Copyright (C) 2022-2023 Nordix Foundation. * Modifications Copyright (C) 2022-2023 TechMahindra Ltd. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); @@ -54,6 +54,7 @@ public class DataNodeBuilder { private String parentNodeXpath = ""; private Map<String, Serializable> leaves = Collections.emptyMap(); private Collection<DataNode> childDataNodes = Collections.emptySet(); + private String dataspaceName; private String anchorName; /** @@ -90,6 +91,17 @@ public class DataNodeBuilder { } /** + * To use dataspace name for creating {@link DataNode}. + * + * @param dataspaceName dataspace name for the data node + * @return DataNodeBuilder + */ + public DataNodeBuilder withDataspace(final String dataspaceName) { + this.dataspaceName = dataspaceName; + return this; + } + + /** * To use anchor name for creating {@link DataNode}. * * @param anchorName anchor name for the data node @@ -165,6 +177,7 @@ public class DataNodeBuilder { dataNode.setModuleNamePrefix(moduleNamePrefix); dataNode.setLeaves(leaves); dataNode.setChildDataNodes(childDataNodes); + dataNode.setDataspace(dataspaceName); dataNode.setAnchorName(anchorName); return dataNode; } diff --git a/integration-test/pom.xml b/integration-test/pom.xml index 1d37fc1b04..acba37b997 100644 --- a/integration-test/pom.xml +++ b/integration-test/pom.xml @@ -23,7 +23,7 @@ <parent> <groupId>org.onap.cps</groupId> <artifactId>cps-parent</artifactId> - <version>3.2.7-SNAPSHOT</version> + <version>3.3.0-SNAPSHOT</version> <relativePath>../cps-parent/pom.xml</relativePath> </parent> diff --git a/integration-test/src/test/groovy/org/onap/cps/integration/functional/CpsDataServiceIntegrationSpec.groovy b/integration-test/src/test/groovy/org/onap/cps/integration/functional/CpsDataServiceIntegrationSpec.groovy index c333911fcc..826035af57 100644 --- a/integration-test/src/test/groovy/org/onap/cps/integration/functional/CpsDataServiceIntegrationSpec.groovy +++ b/integration-test/src/test/groovy/org/onap/cps/integration/functional/CpsDataServiceIntegrationSpec.groovy @@ -21,12 +21,13 @@ package org.onap.cps.integration.functional +import org.onap.cps.api.CpsDataService import org.onap.cps.integration.base.FunctionalSpecBase import org.onap.cps.spi.FetchDescendantsOption class CpsDataServiceIntegrationSpec extends FunctionalSpecBase { - def objectUnderTest + CpsDataService objectUnderTest def setup() { objectUnderTest = cpsDataService } @@ -40,8 +41,18 @@ class CpsDataServiceIntegrationSpec extends FunctionalSpecBase { where: 'the following option is used' fetchDescendantsOption || expectNumberOfDataNodes FetchDescendantsOption.OMIT_DESCENDANTS || 1 - FetchDescendantsOption.DIRECT_CHILDREN_ONLY || 4 - FetchDescendantsOption.INCLUDE_ALL_DESCENDANTS || 8 - new FetchDescendantsOption(2) || 8 + FetchDescendantsOption.DIRECT_CHILDREN_ONLY || 5 + FetchDescendantsOption.INCLUDE_ALL_DESCENDANTS || 14 + new FetchDescendantsOption(2) || 14 } + + def 'Read bookstore top-level container(s) has correct dataspace and anchor.'() { + when: 'get data nodes for bookstore container' + def result = objectUnderTest.getDataNodes(FUNCTIONAL_TEST_DATASPACE, BOOKSTORE_ANCHOR, '/bookstore', FetchDescendantsOption.INCLUDE_ALL_DESCENDANTS) + then: 'the correct dataspace was queried' + assert result.dataspace.toSet() == [FUNCTIONAL_TEST_DATASPACE].toSet() + and: 'the correct anchor was queried' + assert result.anchorName.toSet() == [BOOKSTORE_ANCHOR].toSet() + } + } diff --git a/integration-test/src/test/groovy/org/onap/cps/integration/functional/CpsQueryServiceIntegrationSpec.groovy b/integration-test/src/test/groovy/org/onap/cps/integration/functional/CpsQueryServiceIntegrationSpec.groovy index 496b36db99..6197691c78 100644 --- a/integration-test/src/test/groovy/org/onap/cps/integration/functional/CpsQueryServiceIntegrationSpec.groovy +++ b/integration-test/src/test/groovy/org/onap/cps/integration/functional/CpsQueryServiceIntegrationSpec.groovy @@ -20,18 +20,24 @@ package org.onap.cps.integration.functional +import org.onap.cps.api.CpsQueryService import org.onap.cps.integration.base.FunctionalSpecBase import org.onap.cps.spi.FetchDescendantsOption +import org.onap.cps.spi.exceptions.CpsPathException + +import static org.onap.cps.spi.FetchDescendantsOption.DIRECT_CHILDREN_ONLY +import static org.onap.cps.spi.FetchDescendantsOption.INCLUDE_ALL_DESCENDANTS +import static org.onap.cps.spi.FetchDescendantsOption.OMIT_DESCENDANTS class CpsQueryServiceIntegrationSpec extends FunctionalSpecBase { - def objectUnderTest + CpsQueryService objectUnderTest def setup() { objectUnderTest = cpsQueryService } def 'Query bookstore using CPS path where #scenario.'() { when: 'query data nodes for bookstore container' - def result = objectUnderTest.queryDataNodes(FUNCTIONAL_TEST_DATASPACE, BOOKSTORE_ANCHOR, cpsPath, FetchDescendantsOption.INCLUDE_ALL_DESCENDANTS) + def result = objectUnderTest.queryDataNodes(FUNCTIONAL_TEST_DATASPACE, BOOKSTORE_ANCHOR, cpsPath, INCLUDE_ALL_DESCENDANTS) then: 'the result contains expected number of nodes' assert result.size() == expectedResultSize and: 'the result contains the expected leaf values' @@ -42,7 +48,129 @@ class CpsQueryServiceIntegrationSpec extends FunctionalSpecBase { }) where: scenario | cpsPath || expectedResultSize | expectedLeaves - 'the and condition is used' | '//books[@lang="English" and @price=15]' || 2 | [lang:"English", price:15] - 'the and is used where result does not exist' | '//books[@lang="English" and @price=1000]' || 0 | [] + 'the AND condition is used' | '//books[@lang="English" and @price=15]' || 2 | [lang:"English", price:15] + 'the AND is used where result does not exist' | '//books[@lang="English" and @price=1000]' || 0 | [] + } + + def 'Cps Path query for leaf value(s) with #scenario.'() { + when: 'a query is executed to get a data node by the given cps path' + def result = objectUnderTest.queryDataNodes(FUNCTIONAL_TEST_DATASPACE, BOOKSTORE_ANCHOR, cpsPath, fetchDescendantsOption) + then: 'the correct number of parent nodes are returned' + assert result.size() == expectedNumberOfParentNodes + and: 'the correct total number of data nodes are returned' + assert countDataNodesInTree(result) == expectedTotalNumberOfNodes + where: 'the following data is used' + scenario | cpsPath | fetchDescendantsOption || expectedNumberOfParentNodes | expectedTotalNumberOfNodes + 'string and no descendants' | '/bookstore/categories[@code="1"]/books[@title="Matilda"]' | OMIT_DESCENDANTS || 1 | 1 + 'integer and descendants' | '/bookstore/categories[@code="1"]/books[@price=15]' | INCLUDE_ALL_DESCENDANTS || 1 | 1 + 'no condition and no descendants' | '/bookstore/categories' | OMIT_DESCENDANTS || 4 | 4 + 'no condition and level 1 descendants' | '/bookstore' | new FetchDescendantsOption(1) || 1 | 5 + 'no condition and level 2 descendants' | '/bookstore' | new FetchDescendantsOption(2) || 1 | 14 + } + + def 'Query for attribute by cps path with cps paths that return no data because of #scenario.'() { + when: 'a query is executed to get data nodes for the given cps path' + def result = objectUnderTest.queryDataNodes(FUNCTIONAL_TEST_DATASPACE, BOOKSTORE_ANCHOR, cpsPath, OMIT_DESCENDANTS) + then: 'no data is returned' + assert result.isEmpty() + where: 'following cps queries are performed' + scenario | cpsPath + 'cps path is incomplete' | '/bookstore[@title="Matilda"]' + 'leaf value does not exist' | '/bookstore/categories[@code="1"]/books[@title=\'does not exist\']' + 'incomplete end of xpath prefix' | '/bookstore/categories/books[@price=15]' + } + + def 'Cps Path query using descendant anywhere and #type (further) descendants.'() { + when: 'a query is executed to get a data node by the given cps path' + def result = objectUnderTest.queryDataNodes(FUNCTIONAL_TEST_DATASPACE, BOOKSTORE_ANCHOR, '/bookstore/categories[@code="1"]', fetchDescendantsOption) + then: 'the data node has the correct number of children' + assert result[0].childDataNodes.xpath.sort() == expectedChildNodes.sort() + where: 'the following data is used' + type | fetchDescendantsOption || expectedChildNodes + 'omit' | OMIT_DESCENDANTS || [] + 'include' | INCLUDE_ALL_DESCENDANTS || ["/bookstore/categories[@code='1']/books[@title='Matilda']", + "/bookstore/categories[@code='1']/books[@title='The Gruffalo']"] + } + + def 'Cps Path query for all books.'() { + when: 'a query is executed to get all books' + def result = objectUnderTest.queryDataNodes(FUNCTIONAL_TEST_DATASPACE, BOOKSTORE_ANCHOR, '//books', OMIT_DESCENDANTS) + then: 'the expected number of books are returned' + assert result.size() == 9 + } + + def 'Cps Path query using descendant anywhere with #scenario.'() { + when: 'a query is executed to get a data node by the given cps path' + def result = objectUnderTest.queryDataNodes(FUNCTIONAL_TEST_DATASPACE, BOOKSTORE_ANCHOR, cpsPath, OMIT_DESCENDANTS) + then: 'xpaths of the retrieved data nodes are as expected' + def bookTitles = result.collect { it.getLeaves().get('title') } + assert bookTitles.sort() == expectedBookTitles.sort() + where: 'the following data is used' + scenario | cpsPath || expectedBookTitles + 'string leaf condition' | '//books[@title="Matilda"]' || ["Matilda"] + 'text condition on leaf' | '//books/title[text()="Matilda"]' || ["Matilda"] + 'text condition case mismatch' | '//books/title[text()="matilda"]' || [] + 'text condition on int leaf' | '//books/price[text()="10"]' || ["Matilda"] + 'text condition on leaf-list' | '//books/authors[text()="Terry Pratchett"]' || ["Good Omens", "The Colour of Magic", "The Light Fantastic"] + 'text condition partial match' | '//books/authors[text()="Terry"]' || [] + 'text condition (existing) empty string' | '//books/lang[text()=""]' || ["A Book with No Language"] + 'text condition on int leaf-list' | '//books/editions[text()="2000"]' || ["Matilda"] + 'match of leaf containing /' | '//books[@lang="N/A"]' || ["Logarithm tables"] + 'text condition on leaf containing /' | '//books/lang[text()="N/A"]' || ["Logarithm tables"] + 'match of key containing /' | '//books[@title="Debian GNU/Linux"]' || ["Debian GNU/Linux"] + 'text condition on key containing /' | '//books/title[text()="Debian GNU/Linux"]' || ["Debian GNU/Linux"] + } + + def 'Cps Path query using descendant anywhere with #scenario condition for a container element.'() { + when: 'a query is executed to get a data node by the given cps path' + def result = objectUnderTest.queryDataNodes(FUNCTIONAL_TEST_DATASPACE, BOOKSTORE_ANCHOR, cpsPath, OMIT_DESCENDANTS) + then: 'book titles from the retrieved data nodes are as expected' + def bookTitles = result.collect { it.getLeaves().get('title') } + assert bookTitles.sort() == expectedBookTitles.sort() + where: 'the following data is used' + scenario | cpsPath || expectedBookTitles + 'one leaf' | '//books[@price=14]' || ['The Light Fantastic'] + 'one text' | '//books/authors[text()="Terry Pratchett"]' || ['Good Omens', 'The Colour of Magic', 'The Light Fantastic'] + 'more than one leaf' | '//books[@price=12 and @lang="English"]' || ['The Colour of Magic'] + 'leaves reversed in order' | '//books[@lang="English" and @price=12]' || ['The Colour of Magic'] + 'leaf and text' | '//books[@price=14]/authors[text()="Terry Pratchett"]' || ['The Light Fantastic'] + } + + def 'Query for attribute by cps path of type ancestor with #scenario.'() { + when: 'the given cps path is parsed' + def result = objectUnderTest.queryDataNodes(FUNCTIONAL_TEST_DATASPACE, BOOKSTORE_ANCHOR, cpsPath, OMIT_DESCENDANTS) + then: 'the xpaths of the retrieved data nodes are as expected' + assert result.xpath.sort() == expectedXPaths.sort() + where: 'the following data is used' + scenario | cpsPath || expectedXPaths + 'multiple list-ancestors' | '//books/ancestor::categories' || ["/bookstore/categories[@code='1']", "/bookstore/categories[@code='2']", "/bookstore/categories[@code='3']", "/bookstore/categories[@code='4']"] + 'one ancestor with list value' | '//books/ancestor::categories[@code="1"]' || ["/bookstore/categories[@code='1']"] + 'top ancestor' | '//books/ancestor::bookstore' || ["/bookstore"] + 'list with index value in the xpath prefix' | '//categories[@code="1"]/books/ancestor::bookstore' || ["/bookstore"] + 'ancestor with parent list' | '//books/ancestor::bookstore/categories' || ["/bookstore/categories[@code='1']", "/bookstore/categories[@code='2']", "/bookstore/categories[@code='3']", "/bookstore/categories[@code='4']"] + 'ancestor with parent' | '//books/ancestor::bookstore/categories[@code="2"]' || ["/bookstore/categories[@code='2']"] + 'ancestor combined with text condition' | '//books/title[text()="Matilda"]/ancestor::bookstore' || ["/bookstore"] + 'ancestor with parent that does not exist' | '//books/ancestor::parentDoesNoExist/categories' || [] + 'ancestor does not exist' | '//books/ancestor::ancestorDoesNotExist' || [] } + + def 'Query for attribute by cps path of type ancestor with #scenario descendants.'() { + when: 'the given cps path is parsed' + def result = objectUnderTest.queryDataNodes(FUNCTIONAL_TEST_DATASPACE, BOOKSTORE_ANCHOR, '//books/ancestor::bookstore', fetchDescendantsOption) + then: 'the xpaths of the retrieved data nodes are as expected' + assert countDataNodesInTree(result) == expectedNumberOfNodes + where: 'the following data is used' + scenario | fetchDescendantsOption || expectedNumberOfNodes + 'no' | OMIT_DESCENDANTS || 1 + 'direct' | DIRECT_CHILDREN_ONLY || 5 + 'all' | INCLUDE_ALL_DESCENDANTS || 14 + } + + def 'Cps Path query with syntax error throws a CPS Path Exception.'() { + when: 'trying to execute a query with a syntax (parsing) error' + objectUnderTest.queryDataNodes(FUNCTIONAL_TEST_DATASPACE, BOOKSTORE_ANCHOR, 'cpsPath that cannot be parsed' , OMIT_DESCENDANTS) + then: 'a cps path exception is thrown' + thrown(CpsPathException) + } + } diff --git a/integration-test/src/test/groovy/org/onap/cps/integration/performance/base/CpsPerfTestBase.groovy b/integration-test/src/test/groovy/org/onap/cps/integration/performance/base/CpsPerfTestBase.groovy index e75f1dce36..3b5f69c6e0 100644 --- a/integration-test/src/test/groovy/org/onap/cps/integration/performance/base/CpsPerfTestBase.groovy +++ b/integration-test/src/test/groovy/org/onap/cps/integration/performance/base/CpsPerfTestBase.groovy @@ -58,7 +58,7 @@ class CpsPerfTestBase extends PerfTestBase { addAnchorsWithData(1, CpsIntegrationSpecBase.BOOKSTORE_SCHEMA_SET, 'warmup', data) stopWatch.stop() def durationInMillis = stopWatch.getTotalTimeMillis() - recordAndAssertPerformance('Creating warmup anchor with tiny data tree', 250, durationInMillis) + recordAndAssertPerformance('Creating warmup anchor with tiny data tree', 500, durationInMillis) } def createLargeBookstoresData() { @@ -79,7 +79,7 @@ class CpsPerfTestBase extends PerfTestBase { } def addOpenRoadData() { - def data = CpsIntegrationSpecBase.readResourceDataFile('openroadm/innerNode.json') + def data = generateOpenRoadData(50) stopWatch.start() addAnchorsWithData(5, PerfTestBase.LARGE_SCHEMA_SET, 'openroadm', data) stopWatch.stop() @@ -87,6 +87,13 @@ class CpsPerfTestBase extends PerfTestBase { recordAndAssertPerformance('Creating openroadm anchors with large data tree', 25_000, durationInMillis) } + def generateOpenRoadData(numberOfNodes) { + def innerNode = CpsIntegrationSpecBase.readResourceDataFile('openroadm/innerNode.json') + return '{ "openroadm-devices": { "openroadm-device": [' + + (1..numberOfNodes).collect { innerNode.replace('NODE_ID_HERE', it.toString()) }.join(',') + + ']}}' + } + def addAnchorsWithData(numberOfAnchors, schemaSetName, anchorNamePrefix, data) { (1..numberOfAnchors).each { cpsAdminService.createAnchor(CPS_PERFORMANCE_TEST_DATASPACE, schemaSetName, anchorNamePrefix + it) @@ -101,8 +108,8 @@ class CpsPerfTestBase extends PerfTestBase { assert countDataNodesInTree(result) == 1 stopWatch.stop() def durationInMillis = stopWatch.getTotalTimeMillis() - then: 'all data is read within 15 seconds (warm up not critical)' - recordAndAssertPerformance("Warming database", 15_000, durationInMillis) + then: 'all data is read within 25 seconds (warm up not critical)' + recordAndAssertPerformance("Warming database", 25_000, durationInMillis) } } diff --git a/integration-test/src/test/groovy/org/onap/cps/integration/performance/cps/GetPerfTest.groovy b/integration-test/src/test/groovy/org/onap/cps/integration/performance/cps/GetPerfTest.groovy index 30e8bf23d4..4edc1d72ad 100644 --- a/integration-test/src/test/groovy/org/onap/cps/integration/performance/cps/GetPerfTest.groovy +++ b/integration-test/src/test/groovy/org/onap/cps/integration/performance/cps/GetPerfTest.groovy @@ -21,7 +21,11 @@ package org.onap.cps.integration.performance.cps import org.onap.cps.integration.performance.base.CpsPerfTestBase -import org.onap.cps.spi.FetchDescendantsOption +import org.springframework.dao.DataAccessResourceFailureException + +import static org.onap.cps.spi.FetchDescendantsOption.DIRECT_CHILDREN_ONLY +import static org.onap.cps.spi.FetchDescendantsOption.INCLUDE_ALL_DESCENDANTS +import static org.onap.cps.spi.FetchDescendantsOption.OMIT_DESCENDANTS class GetPerfTest extends CpsPerfTestBase { @@ -29,11 +33,40 @@ class GetPerfTest extends CpsPerfTestBase { def setup() { objectUnderTest = cpsDataService } - def 'Read complete data trees from multiple anchors with #scenario.'() { + def 'Read top-level node with #scenario.'() { + when: 'get data nodes from 1 anchor' + stopWatch.start() + def result = objectUnderTest.getDataNodes(CPS_PERFORMANCE_TEST_DATASPACE, anchor, '/openroadm-devices', fetchDescendantsOption) + stopWatch.stop() + assert countDataNodesInTree(result) == expectedNumberOfDataNodes + def durationInMillis = stopWatch.getTotalTimeMillis() + then: 'all data is read within #durationLimit ms' + recordAndAssertPerformance("Read datatrees with ${scenario}", durationLimit, durationInMillis) + where: 'the following parameters are used' + scenario | fetchDescendantsOption | anchor || durationLimit | expectedNumberOfDataNodes + 'no descendants' | OMIT_DESCENDANTS | 'openroadm1' || 100 | 1 + 'direct descendants' | DIRECT_CHILDREN_ONLY | 'openroadm2' || 100 | 1 + 50 + 'all descendants' | INCLUDE_ALL_DESCENDANTS | 'openroadm3' || 350 | 1 + 50 * 86 + } + + def 'Read data trees for multiple xpaths'() { + given: 'a collection of xpaths to get' + def xpaths = (1..50).collect { "/openroadm-devices/openroadm-device[@device-id='C201-7-1A-" + it + "']" } + when: 'get data nodes from 1 anchor' + stopWatch.start() + def result = objectUnderTest.getDataNodesForMultipleXpaths(CPS_PERFORMANCE_TEST_DATASPACE, 'openroadm4', xpaths, INCLUDE_ALL_DESCENDANTS) + stopWatch.stop() + assert countDataNodesInTree(result) == 50 * 86 + def durationInMillis = stopWatch.getTotalTimeMillis() + then: 'all data is read within 350 ms' + recordAndAssertPerformance("Read datatrees for multiple xpaths", 350, durationInMillis) + } + + def 'Read complete data trees using #scenario.'() { when: 'get data nodes for 5 anchors' stopWatch.start() (1..5).each { - def result = objectUnderTest.getDataNodes(CPS_PERFORMANCE_TEST_DATASPACE, anchorPrefix + it, xpath, FetchDescendantsOption.INCLUDE_ALL_DESCENDANTS) + def result = objectUnderTest.getDataNodes(CPS_PERFORMANCE_TEST_DATASPACE, anchorPrefix + it, xpath, INCLUDE_ALL_DESCENDANTS) assert countDataNodesInTree(result) == expectedNumberOfDataNodes } stopWatch.stop() @@ -42,10 +75,19 @@ class GetPerfTest extends CpsPerfTestBase { recordAndAssertPerformance("Read datatrees using ${scenario}", durationLimit, durationInMillis) where: 'the following xpaths are used' scenario | anchorPrefix | xpath || durationLimit | expectedNumberOfDataNodes - 'bookstore root' | 'bookstore' | '/' || 130 | 78 - 'bookstore top element' | 'bookstore' | '/bookstore' || 130 | 78 - 'openroadm root' | 'openroadm' | '/' || 750 | 2151 - 'openroadm top element' | 'openroadm' | '/openroadm-devices' || 750 | 2151 + 'bookstore root' | 'bookstore' | '/' || 250 | 78 + 'bookstore top element' | 'bookstore' | '/bookstore' || 250 | 78 + 'openroadm root' | 'openroadm' | '/' || 1000 | 1 + 50 * 86 + 'openroadm top element' | 'openroadm' | '/openroadm-devices' || 1000 | 1 + 50 * 86 + } + + def 'Multiple get limit exceeded: 32,764 (~ 2^15) xpaths.'() { + given: 'more than 32,764 xpaths)' + def xpaths = (0..32_764).collect { "/size/of/this/path/does/not/matter/for/limit[@id='" + it + "']" } + when: 'single get is executed to get all the parent objects and their descendants' + cpsDataService.getDataNodesForMultipleXpaths(CPS_PERFORMANCE_TEST_DATASPACE, 'bookstore1', xpaths, INCLUDE_ALL_DESCENDANTS) + then: 'an exception is thrown' + thrown(DataAccessResourceFailureException.class) } } diff --git a/integration-test/src/test/groovy/org/onap/cps/integration/performance/cps/QueryPerfTest.groovy b/integration-test/src/test/groovy/org/onap/cps/integration/performance/cps/QueryPerfTest.groovy new file mode 100644 index 0000000000..496842096f --- /dev/null +++ b/integration-test/src/test/groovy/org/onap/cps/integration/performance/cps/QueryPerfTest.groovy @@ -0,0 +1,106 @@ +/* + * ============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========================================================= + */ + +package org.onap.cps.integration.performance.cps + +import org.onap.cps.integration.performance.base.CpsPerfTestBase + +import static org.onap.cps.spi.FetchDescendantsOption.DIRECT_CHILDREN_ONLY +import static org.onap.cps.spi.FetchDescendantsOption.INCLUDE_ALL_DESCENDANTS +import static org.onap.cps.spi.FetchDescendantsOption.OMIT_DESCENDANTS + +class QueryPerfTest extends CpsPerfTestBase { + + def objectUnderTest + + def setup() { objectUnderTest = cpsQueryService } + + def 'Query complete data trees with #scenario.'() { + when: 'query data nodes (using a fresh anchor with identical data for each test)' + stopWatch.start() + def result = objectUnderTest.queryDataNodes(CPS_PERFORMANCE_TEST_DATASPACE, anchor, cpsPath, INCLUDE_ALL_DESCENDANTS) + stopWatch.stop() + def durationInMillis = stopWatch.getTotalTimeMillis() + then: 'the expected number of nodes is returned' + assert countDataNodesInTree(result) == expectedNumberOfDataNodes + and: 'all data is read within #durationLimit ms' + recordAndAssertPerformance("Query 1 anchor ${scenario}", durationLimit, durationInMillis) + where: 'the following parameters are used' + scenario | anchor | cpsPath || durationLimit | expectedNumberOfDataNodes + 'top element' | 'openroadm1' | '/openroadm-devices' || 250 | 50 * 86 + 1 + 'leaf condition' | 'openroadm2' | '//openroadm-device[@ne-state="inservice"]' || 650 | 50 * 86 + 'ancestors' | 'openroadm3' | '//openroadm-device/ancestor::openroadm-devices' || 250 | 50 * 86 + 1 + 'leaf condition + ancestors' | 'openroadm4' | '//openroadm-device[@status="success"]/ancestor::openroadm-devices' || 500 | 50 * 86 + 1 + } + + def 'Query complete data trees across all anchors with #scenario.'() { + when: 'query data nodes across all anchors' + stopWatch.start() + def result = objectUnderTest.queryDataNodesAcrossAnchors('cpsPerformanceDataspace', cpspath, INCLUDE_ALL_DESCENDANTS) + stopWatch.stop() + def durationInMillis = stopWatch.getTotalTimeMillis() + then: 'the expected number of nodes is returned' + assert countDataNodesInTree(result) == expectedNumberOfDataNodes + and: 'all data is read within #durationLimit ms' + recordAndAssertPerformance("Query across anchors ${scenario}", durationLimit, durationInMillis) + where: 'the following parameters are used' + scenario | cpspath || durationLimit | expectedNumberOfDataNodes + // FIXME Current implementation of queryDataNodesAcrossAnchors throws NullPointerException for next case. Uncomment after CPS-1582 is done. + // 'top element' | '/openroadm-devices' || 1 | 5 * (50 * 86 + 1) + 'leaf condition' | '//openroadm-device[@ne-state="inservice"]' || 2500 | 5 * (50 * 86) + 'ancestors' | '//openroadm-device/ancestor::openroadm-devices' || 12000 | 5 * (50 * 86 + 1) + 'leaf condition + ancestors' | '//openroadm-device[@status="success"]/ancestor::openroadm-devices' || 1000 | 5 * (50 * 86 + 1) + } + + def 'Query with leaf condition and #scenario.'() { + when: 'query data nodes (using a fresh anchor with identical data for each test)' + stopWatch.start() + def result = objectUnderTest.queryDataNodes(CPS_PERFORMANCE_TEST_DATASPACE, anchor, '//openroadm-device[@status="success"]', fetchDescendantsOption) + stopWatch.stop() + def durationInMillis = stopWatch.getTotalTimeMillis() + then: 'the expected number of nodes is returned' + assert countDataNodesInTree(result) == expectedNumberOfDataNodes + and: 'all data is read within #durationLimit ms' + recordAndAssertPerformance("Query with ${scenario}", durationLimit, durationInMillis) + where: 'the following parameters are used' + scenario | fetchDescendantsOption | anchor || durationLimit | expectedNumberOfDataNodes + 'no descendants' | OMIT_DESCENDANTS | 'openroadm1' || 100 | 50 + 'direct descendants' | DIRECT_CHILDREN_ONLY | 'openroadm2' || 400 | 50 * 2 + 'all descendants' | INCLUDE_ALL_DESCENDANTS | 'openroadm3' || 500 | 50 * 86 + } + + def 'Query ancestors with #scenario.'() { + when: 'query data nodes (using a fresh anchor with identical data for each test)' + stopWatch.start() + def result = objectUnderTest.queryDataNodes(CPS_PERFORMANCE_TEST_DATASPACE, anchor, '//openroadm-device[@ne-state="inservice"]/ancestor::openroadm-devices', fetchDescendantsOption) + stopWatch.stop() + def durationInMillis = stopWatch.getTotalTimeMillis() + then: 'the expected number of nodes is returned' + assert countDataNodesInTree(result) == expectedNumberOfDataNodes + and: 'all data is read within #durationLimit ms' + recordAndAssertPerformance("Query ancestors with ${scenario}", durationLimit, durationInMillis) + where: 'the following parameters are used' + scenario | fetchDescendantsOption | anchor || durationLimit | expectedNumberOfDataNodes + 'no descendants' | OMIT_DESCENDANTS | 'openroadm1' || 100 | 1 + 'direct descendants' | DIRECT_CHILDREN_ONLY | 'openroadm2' || 250 | 1 + 50 + 'all descendants' | INCLUDE_ALL_DESCENDANTS | 'openroadm3' || 400 | 1 + 50 * 86 + } + +} diff --git a/integration-test/src/test/groovy/org/onap/cps/integration/performance/ncmp/CmHandleQueryPerfTest.groovy b/integration-test/src/test/groovy/org/onap/cps/integration/performance/ncmp/CmHandleQueryPerfTest.groovy index 87327030c7..443dd7efd7 100644 --- a/integration-test/src/test/groovy/org/onap/cps/integration/performance/ncmp/CmHandleQueryPerfTest.groovy +++ b/integration-test/src/test/groovy/org/onap/cps/integration/performance/ncmp/CmHandleQueryPerfTest.groovy @@ -22,7 +22,6 @@ package org.onap.cps.integration.performance.ncmp import java.util.stream.Collectors import org.onap.cps.integration.performance.base.NcmpRegistryPerfTestBase -import org.springframework.dao.DataAccessResourceFailureException import static org.onap.cps.spi.FetchDescendantsOption.OMIT_DESCENDANTS import static org.onap.cps.spi.FetchDescendantsOption.INCLUDE_ALL_DESCENDANTS @@ -43,21 +42,12 @@ class CmHandleQueryPerfTest extends NcmpRegistryPerfTestBase { def result = cpsDataService.getDataNodesForMultipleXpaths(NCMP_PERFORMANCE_TEST_DATASPACE, REGISTRY_ANCHOR, xpaths, INCLUDE_ALL_DESCENDANTS) stopWatch.stop() def durationInMillis = stopWatch.getTotalTimeMillis() - then: 'the required operations are performed within 3 seconds' - recordAndAssertPerformance("CpsPath Registry attributes Query", 3_000, durationInMillis) + then: 'the required operations are performed within 1200 ms' + recordAndAssertPerformance("CpsPath Registry attributes Query", 1200, durationInMillis) and: 'all but 1 (other node) are returned' result.size() == 999 and: 'the tree contains all the expected descendants too' assert countDataNodesInTree(result) == 5 * 999 } - def 'Multiple get limit exceeded: 32,764 (~ 2^15) xpaths.'() { - given: 'more than 32,764 xpaths)' - def xpaths = (0..32_764).collect(i -> "/size/of/this/path/does/not/matter/for/limit[@id='" + i + "']") - when: 'single get is executed to get all the parent objects and their descendants' - cpsDataService.getDataNodesForMultipleXpaths(NCMP_PERFORMANCE_TEST_DATASPACE, REGISTRY_ANCHOR, xpaths, INCLUDE_ALL_DESCENDANTS) - then: 'an exception is thrown' - thrown(DataAccessResourceFailureException.class) - } - } diff --git a/integration-test/src/test/resources/data/bookstore/bookstore.yang b/integration-test/src/test/resources/data/bookstore/bookstore.yang index 2179fb93d9..c3bfc50dc1 100644 --- a/integration-test/src/test/resources/data/bookstore/bookstore.yang +++ b/integration-test/src/test/resources/data/bookstore/bookstore.yang @@ -21,37 +21,37 @@ module stores { type string; } - list categories { + list categories { - key "code"; + key "code"; - leaf code { - type string; - } - - leaf name { - type string; - } - - list books { - key title; - - leaf title { + leaf code { type string; } - leaf lang { - type string; - } - leaf-list authors { + + leaf name { type string; } - leaf pub_year { - type year; - } - leaf price { - type uint64; + + list books { + key title; + + leaf title { + type string; + } + leaf lang { + type string; + } + leaf-list authors { + type string; + } + leaf-list editions { + type year; + } + leaf price { + type uint64; + } } } } - } } diff --git a/integration-test/src/test/resources/data/bookstore/bookstoreData.json b/integration-test/src/test/resources/data/bookstore/bookstoreData.json index 1c6cb88f98..48cf4e4e58 100644 --- a/integration-test/src/test/resources/data/bookstore/bookstoreData.json +++ b/integration-test/src/test/resources/data/bookstore/bookstoreData.json @@ -10,14 +10,14 @@ "title": "Matilda", "lang": "English", "authors": ["Roald Dahl"], - "pub_year": 1988, + "editions": [1988, 2000], "price": 10 }, { "title": "The Gruffalo", "lang": "English", "authors": ["Julia Donaldson"], - "pub_year": 1999, + "editions": [1999], "price": 15 } ] @@ -30,7 +30,7 @@ "title": "Annihilation", "lang": "English", "authors": ["Jeff VanderMeer"], - "pub_year": 2014, + "editions": [2014], "price": 15 } ] @@ -43,12 +43,52 @@ "title": "Good Omens", "lang": "English", "authors": ["Neil Gaiman", "Terry Pratchett"], - "pub_year": 2006, + "editions": [2006], "price": 13 + }, + { + "title": "The Colour of Magic", + "lang": "English", + "authors": ["Terry Pratchett"], + "editions": [1983], + "price": 12 + }, + { + "title": "The Light Fantastic", + "lang": "English", + "authors": ["Terry Pratchett"], + "editions": [1986], + "price": 14 + }, + { + "title": "A Book with No Language", + "lang": "", + "authors": ["Joe Bloggs"], + "editions": [2023], + "price": 20 + } + ] + }, + { + "code": 4, + "name": "Computing", + "books" : [ + { + "title": "Debian GNU/Linux", + "lang": "German", + "authors": ["Peter H. Ganten", "Wulf Alex"], + "editions": [2007, 2013, 2021], + "price": 39 + }, + { + "title": "Logarithm tables", + "lang": "N/A", + "authors": ["Joe Bloggs"], + "editions": [2009], + "price": 11 } ] } - ] } -}
\ No newline at end of file +} diff --git a/integration-test/src/test/resources/data/bookstore/largeModelData.json b/integration-test/src/test/resources/data/bookstore/largeModelData.json index bdc22a7172..4a92a1da74 100644 --- a/integration-test/src/test/resources/data/bookstore/largeModelData.json +++ b/integration-test/src/test/resources/data/bookstore/largeModelData.json @@ -10,14 +10,14 @@ "title": "Matilda", "lang": "English", "authors": ["Roald Dahl"], - "pub_year": 1988, + "editions": [1988, 2000], "price": 10 }, { "title": "The Gruffalo", "lang": "English", "authors": ["Julia Donaldson"], - "pub_year": 1999, + "editions": [1999], "price": 15 } ] @@ -30,7 +30,7 @@ "title": "Annihilation", "lang": "English", "authors": ["Jeff VanderMeer"], - "pub_year": 2014, + "editions": [2014], "price": 15 } ] @@ -43,7 +43,7 @@ "title": "Good Omens", "lang": "English", "authors": ["Neil Gaiman", "Terry Pratchett"], - "pub_year": 2006, + "editions": [2006], "price": 13 } ] @@ -56,14 +56,14 @@ "title": "Matilda", "lang": "English", "authors": ["Roald Dahl"], - "pub_year": 1988, + "editions": [1988, 2000], "price": 10 }, { "title": "The Gruffalo", "lang": "English", "authors": ["Julia Donaldson"], - "pub_year": 1999, + "editions": [1999], "price": 15 } ] @@ -76,7 +76,7 @@ "title": "Annihilation", "lang": "English", "authors": ["Jeff VanderMeer"], - "pub_year": 2014, + "editions": [2014], "price": 15 } ] @@ -89,7 +89,7 @@ "title": "Good Omens", "lang": "English", "authors": ["Neil Gaiman", "Terry Pratchett"], - "pub_year": 2006, + "editions": [2006], "price": 13 } ] @@ -102,14 +102,14 @@ "title": "Matilda", "lang": "English", "authors": ["Roald Dahl"], - "pub_year": 1988, + "editions": [1988, 2000], "price": 10 }, { "title": "The Gruffalo", "lang": "English", "authors": ["Julia Donaldson"], - "pub_year": 1999, + "editions": [1999], "price": 15 } ] @@ -122,7 +122,7 @@ "title": "Annihilation", "lang": "English", "authors": ["Jeff VanderMeer"], - "pub_year": 2014, + "editions": [2014], "price": 15 } ] @@ -135,7 +135,7 @@ "title": "Good Omens", "lang": "English", "authors": ["Neil Gaiman", "Terry Pratchett"], - "pub_year": 2006, + "editions": [2006], "price": 13 } ] @@ -148,14 +148,14 @@ "title": "Matilda", "lang": "English", "authors": ["Roald Dahl"], - "pub_year": 1988, + "editions": [1988, 2000], "price": 10 }, { "title": "The Gruffalo", "lang": "English", "authors": ["Julia Donaldson"], - "pub_year": 1999, + "editions": [1999], "price": 15 } ] @@ -168,7 +168,7 @@ "title": "Annihilation", "lang": "English", "authors": ["Jeff VanderMeer"], - "pub_year": 2014, + "editions": [2014], "price": 15 } ] @@ -181,7 +181,7 @@ "title": "Good Omens", "lang": "English", "authors": ["Neil Gaiman", "Terry Pratchett"], - "pub_year": 2006, + "editions": [2006], "price": 13 } ] @@ -194,14 +194,14 @@ "title": "Matilda", "lang": "English", "authors": ["Roald Dahl"], - "pub_year": 1988, + "editions": [1988, 2000], "price": 10 }, { "title": "The Gruffalo", "lang": "English", "authors": ["Julia Donaldson"], - "pub_year": 1999, + "editions": [1999], "price": 15 } ] @@ -214,7 +214,7 @@ "title": "Annihilation", "lang": "English", "authors": ["Jeff VanderMeer"], - "pub_year": 2014, + "editions": [2014], "price": 15 } ] @@ -227,7 +227,7 @@ "title": "Good Omens", "lang": "English", "authors": ["Neil Gaiman", "Terry Pratchett"], - "pub_year": 2006, + "editions": [2006], "price": 13 } ] @@ -240,14 +240,14 @@ "title": "Matilda", "lang": "English", "authors": ["Roald Dahl"], - "pub_year": 1988, + "editions": [1988, 2000], "price": 10 }, { "title": "The Gruffalo", "lang": "English", "authors": ["Julia Donaldson"], - "pub_year": 1999, + "editions": [1999], "price": 15 } ] @@ -260,7 +260,7 @@ "title": "Annihilation", "lang": "English", "authors": ["Jeff VanderMeer"], - "pub_year": 2014, + "editions": [2014], "price": 15 } ] @@ -273,7 +273,7 @@ "title": "Good Omens", "lang": "English", "authors": ["Neil Gaiman", "Terry Pratchett"], - "pub_year": 2006, + "editions": [2006], "price": 13 } ] @@ -286,14 +286,14 @@ "title": "Matilda", "lang": "English", "authors": ["Roald Dahl"], - "pub_year": 1988, + "editions": [1988, 2000], "price": 10 }, { "title": "The Gruffalo", "lang": "English", "authors": ["Julia Donaldson"], - "pub_year": 1999, + "editions": [1999], "price": 15 } ] @@ -306,7 +306,7 @@ "title": "Annihilation", "lang": "English", "authors": ["Jeff VanderMeer"], - "pub_year": 2014, + "editions": [2014], "price": 15 } ] @@ -319,7 +319,7 @@ "title": "Good Omens", "lang": "English", "authors": ["Neil Gaiman", "Terry Pratchett"], - "pub_year": 2006, + "editions": [2006], "price": 13 } ] @@ -332,14 +332,14 @@ "title": "Matilda", "lang": "English", "authors": ["Roald Dahl"], - "pub_year": 1988, + "editions": [1988, 2000], "price": 10 }, { "title": "The Gruffalo", "lang": "English", "authors": ["Julia Donaldson"], - "pub_year": 1999, + "editions": [1999], "price": 15 } ] @@ -352,7 +352,7 @@ "title": "Annihilation", "lang": "English", "authors": ["Jeff VanderMeer"], - "pub_year": 2014, + "editions": [2014], "price": 15 } ] @@ -365,7 +365,7 @@ "title": "Good Omens", "lang": "English", "authors": ["Neil Gaiman", "Terry Pratchett"], - "pub_year": 2006, + "editions": [2006], "price": 13 } ] @@ -378,14 +378,14 @@ "title": "Matilda", "lang": "English", "authors": ["Roald Dahl"], - "pub_year": 1988, + "editions": [1988, 2000], "price": 10 }, { "title": "The Gruffalo", "lang": "English", "authors": ["Julia Donaldson"], - "pub_year": 1999, + "editions": [1999], "price": 15 } ] @@ -398,7 +398,7 @@ "title": "Annihilation", "lang": "English", "authors": ["Jeff VanderMeer"], - "pub_year": 2014, + "editions": [2014], "price": 15 } ] @@ -411,7 +411,7 @@ "title": "Good Omens", "lang": "English", "authors": ["Neil Gaiman", "Terry Pratchett"], - "pub_year": 2006, + "editions": [2006], "price": 13 } ] @@ -424,14 +424,14 @@ "title": "Matilda", "lang": "English", "authors": ["Roald Dahl"], - "pub_year": 1988, + "editions": [1988, 2000], "price": 10 }, { "title": "The Gruffalo", "lang": "English", "authors": ["Julia Donaldson"], - "pub_year": 1999, + "editions": [1999], "price": 15 } ] @@ -444,7 +444,7 @@ "title": "Annihilation", "lang": "English", "authors": ["Jeff VanderMeer"], - "pub_year": 2014, + "editions": [2014], "price": 15 } ] @@ -457,7 +457,7 @@ "title": "Good Omens", "lang": "English", "authors": ["Neil Gaiman", "Terry Pratchett"], - "pub_year": 2006, + "editions": [2006], "price": 13 } ] @@ -470,14 +470,14 @@ "title": "Matilda", "lang": "English", "authors": ["Roald Dahl"], - "pub_year": 1988, + "editions": [1988, 2000], "price": 10 }, { "title": "The Gruffalo", "lang": "English", "authors": ["Julia Donaldson"], - "pub_year": 1999, + "editions": [1999], "price": 15 } ] @@ -490,7 +490,7 @@ "title": "Annihilation", "lang": "English", "authors": ["Jeff VanderMeer"], - "pub_year": 2014, + "editions": [2014], "price": 15 } ] @@ -503,7 +503,7 @@ "title": "Good Omens", "lang": "English", "authors": ["Neil Gaiman", "Terry Pratchett"], - "pub_year": 2006, + "editions": [2006], "price": 13 } ] diff --git a/integration-test/src/test/resources/data/openroadm/innerNode.json b/integration-test/src/test/resources/data/openroadm/innerNode.json index 403d732f55..90f8aa168c 100644 --- a/integration-test/src/test/resources/data/openroadm/innerNode.json +++ b/integration-test/src/test/resources/data/openroadm/innerNode.json @@ -1,10056 +1,402 @@ { - "openroadm-devices": { - "openroadm-device": [ - { - "device-id": "C201-7-1A-NODE_ID_HERE", - "ne-state": "inservice", - "commission-date-time": "2022-11-06T14:12:23.260487-06:00", - "org-openroadm-device": { - "degree": [ - { - "degree-number": 1, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 2, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 3, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 4, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 5, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 6, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 7, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 8, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 9, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 10, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 11, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 12, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 13, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 14, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 15, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 16, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 17, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 18, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 19, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 20, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 21, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 22, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 23, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 24, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 25, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 26, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 27, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 28, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - } - ] - }, - "status": "success" - }, - { - "device-id": "C201-7-2A-NODE_ID_HERE", - "ne-state": "inservice", - "commission-date-time": "2022-11-06T14:12:23.260487-06:00", - "org-openroadm-device": { - "degree": [ - { - "degree-number": 1, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 2, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 3, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 4, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 5, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 6, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 7, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 8, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 9, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 10, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 11, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 12, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 13, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 14, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 15, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 16, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 17, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 18, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 19, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 20, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 21, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 22, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 23, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 24, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 25, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 26, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 27, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 28, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - } - ] - }, - "status": "success" - }, - { - "device-id": "C201-7-3A-NODE_ID_HERE", - "ne-state": "inservice", - "commission-date-time": "2022-11-06T14:12:23.260487-06:00", - "org-openroadm-device": { - "degree": [ - { - "degree-number": 1, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 2, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 3, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 4, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 5, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 6, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 7, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 8, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 9, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 10, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 11, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 12, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 13, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 14, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 15, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 16, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 17, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 18, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 19, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 20, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 21, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 22, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 23, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 24, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 25, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 26, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 27, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 28, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - } - ] - }, - "status": "success" - }, - { - "device-id": "C201-7-4A-NODE_ID_HERE", - "ne-state": "inservice", - "commission-date-time": "2022-11-06T14:12:23.260487-06:00", - "org-openroadm-device": { - "degree": [ - { - "degree-number": 1, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 2, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 3, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 4, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 5, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 6, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 7, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 8, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 9, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 10, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 11, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 12, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 13, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 14, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 15, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 16, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 17, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 18, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 19, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 20, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 21, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 22, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 23, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 24, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 25, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 26, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 27, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 28, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - } - ] - }, - "status": "success" - }, - { - "device-id": "C201-7-5A-NODE_ID_HERE", - "ne-state": "inservice", - "commission-date-time": "2022-11-06T14:12:23.260487-06:00", - "org-openroadm-device": { - "degree": [ - { - "degree-number": 1, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 2, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 3, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 4, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 5, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 6, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 7, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 8, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 9, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 10, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 11, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 12, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 13, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 14, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 15, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 16, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 17, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 18, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 19, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 20, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 21, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 22, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 23, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 24, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 25, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 26, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 27, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 28, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - } - ] - }, - "status": "success" - }, - { - "device-id": "C201-7-6A-NODE_ID_HERE", - "ne-state": "inservice", - "commission-date-time": "2022-11-06T14:12:23.260487-06:00", - "org-openroadm-device": { - "degree": [ - { - "degree-number": 1, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 2, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 3, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 4, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 5, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 6, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 7, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 8, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 9, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 10, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 11, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 12, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 13, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 14, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 15, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 16, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 17, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 18, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 19, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 20, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 21, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 22, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 23, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 24, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 25, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 26, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 27, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 28, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - } - ] - }, - "status": "success" - }, - { - "device-id": "C201-7-7A-NODE_ID_HERE", - "ne-state": "inservice", - "commission-date-time": "2022-11-06T14:12:23.260487-06:00", - "org-openroadm-device": { - "degree": [ - { - "degree-number": 1, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 2, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 3, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 4, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 5, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 6, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 7, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 8, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 9, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 10, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 11, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 12, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 13, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 14, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 15, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 16, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 17, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 18, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 19, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 20, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 21, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 22, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 23, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 24, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 25, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 26, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 27, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 28, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - } - ] - }, - "status": "success" - }, - { - "device-id": "C201-7-8A-NODE_ID_HERE", - "ne-state": "inservice", - "commission-date-time": "2022-11-06T14:12:23.260487-06:00", - "org-openroadm-device": { - "degree": [ - { - "degree-number": 1, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 2, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 3, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 4, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 5, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 6, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 7, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 8, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 9, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 10, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 11, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 12, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 13, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 14, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 15, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 16, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 17, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 18, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 19, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 20, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 21, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 22, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 23, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 24, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 25, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 26, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 27, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 28, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - } - ] - }, - "status": "success" - }, - { - "device-id": "C201-7-9A-NODE_ID_HERE", - "ne-state": "inservice", - "commission-date-time": "2022-11-06T14:12:23.260487-06:00", - "org-openroadm-device": { - "degree": [ - { - "degree-number": 1, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 2, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 3, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 4, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 5, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 6, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 7, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 8, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 9, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 10, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 11, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 12, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 13, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 14, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 15, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 16, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 17, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 18, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 19, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 20, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 21, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 22, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 23, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 24, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 25, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 26, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 27, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 28, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - } - ] - }, - "status": "success" - }, - { - "device-id": "C201-7-10A-NODE_ID_HERE", - "ne-state": "inservice", - "commission-date-time": "2022-11-06T14:12:23.260487-06:00", - "org-openroadm-device": { - "degree": [ - { - "degree-number": 1, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 2, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 3, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 4, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 5, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 6, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 7, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 8, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 9, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 10, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 11, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 12, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 13, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 14, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 15, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 16, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 17, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 18, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 19, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 20, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 21, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 22, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 23, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 24, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 25, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 26, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 27, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 28, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - } - ] - }, - "status": "success" - }, - { - "device-id": "C201-7-11A-NODE_ID_HERE", - "ne-state": "inservice", - "commission-date-time": "2022-11-06T14:12:23.260487-06:00", - "org-openroadm-device": { - "degree": [ - { - "degree-number": 1, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 2, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 3, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 4, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 5, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 6, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 7, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 8, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 9, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 10, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 11, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 12, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 13, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 14, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 15, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 16, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 17, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 18, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 19, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 20, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 21, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 22, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 23, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 24, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 25, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 26, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 27, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 28, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - } - ] - }, - "status": "success" - }, - { - "device-id": "C201-7-12A-NODE_ID_HERE", - "ne-state": "inservice", - "commission-date-time": "2022-11-06T14:12:23.260487-06:00", - "org-openroadm-device": { - "degree": [ - { - "degree-number": 1, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 2, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 3, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 4, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 5, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 6, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 7, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 8, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 9, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 10, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 11, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 12, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 13, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 14, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 15, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 16, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 17, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 18, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 19, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 20, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 21, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 22, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 23, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 24, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 25, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 26, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 27, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 28, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - } - ] - }, - "status": "success" - }, - { - "device-id": "C201-7-13A-NODE_ID_HERE", - "ne-state": "inservice", - "commission-date-time": "2022-11-06T14:12:23.260487-06:00", - "org-openroadm-device": { - "degree": [ - { - "degree-number": 1, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 2, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 3, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 4, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 5, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 6, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 7, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 8, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 9, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 10, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 11, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 12, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 13, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 14, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 15, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 16, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 17, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 18, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 19, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 20, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 21, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 22, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 23, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 24, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 25, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 26, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 27, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 28, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - } - ] - }, - "status": "success" - }, - { - "device-id": "C201-7-14A-NODE_ID_HERE", - "ne-state": "inservice", - "commission-date-time": "2022-11-06T14:12:23.260487-06:00", - "org-openroadm-device": { - "degree": [ - { - "degree-number": 1, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 2, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 3, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 4, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 5, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 6, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 7, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 8, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 9, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 10, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 11, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 12, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 13, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 14, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 15, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 16, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 17, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 18, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 19, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 20, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 21, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 22, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 23, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 24, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 25, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 26, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 27, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 28, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - } - ] - }, - "status": "success" - }, - { - "device-id": "C201-7-15A-NODE_ID_HERE", - "ne-state": "inservice", - "commission-date-time": "2022-11-06T14:12:23.260487-06:00", - "org-openroadm-device": { - "degree": [ - { - "degree-number": 1, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 2, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 3, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 4, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 5, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 6, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 7, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 8, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 9, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 10, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 11, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 12, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 13, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 14, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 15, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 16, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 17, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 18, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 19, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 20, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 21, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 22, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 23, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 24, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 25, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 26, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 27, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 28, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - } - ] - }, - "status": "success" - }, - { - "device-id": "C201-7-16A-NODE_ID_HERE", - "ne-state": "inservice", - "commission-date-time": "2022-11-06T14:12:23.260487-06:00", - "org-openroadm-device": { - "degree": [ - { - "degree-number": 1, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 2, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 3, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 4, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 5, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 6, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 7, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 8, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 9, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 10, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 11, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 12, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 13, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 14, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 15, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 16, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 17, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 18, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 19, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 20, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 21, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 22, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 23, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 24, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 25, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 26, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 27, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 28, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - } - ] - }, - "status": "success" - }, - { - "device-id": "C201-7-17A-NODE_ID_HERE", - "ne-state": "inservice", - "commission-date-time": "2022-11-06T14:12:23.260487-06:00", - "org-openroadm-device": { - "degree": [ - { - "degree-number": 1, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 2, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 3, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 4, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 5, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 6, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 7, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 8, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 9, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 10, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 11, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 12, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 13, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 14, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 15, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 16, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 17, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 18, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 19, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 20, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 21, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 22, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 23, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 24, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 25, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 26, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 27, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 28, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - } - ] - }, - "status": "success" - }, - { - "device-id": "C201-7-18A-NODE_ID_HERE", - "ne-state": "inservice", - "commission-date-time": "2022-11-06T14:12:23.260487-06:00", - "org-openroadm-device": { - "degree": [ - { - "degree-number": 1, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 2, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 3, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 4, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 5, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 6, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 7, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 8, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 9, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 10, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 11, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 12, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 13, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 14, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 15, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 16, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 17, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 18, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 19, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 20, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 21, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 22, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 23, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 24, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 25, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 26, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 27, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 28, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - } - ] - }, - "status": "success" - }, - { - "device-id": "C201-7-19A-NODE_ID_HERE", - "ne-state": "inservice", - "commission-date-time": "2022-11-06T14:12:23.260487-06:00", - "org-openroadm-device": { - "degree": [ - { - "degree-number": 1, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 2, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 3, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 4, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 5, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 6, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 7, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 8, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 9, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 10, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 11, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 12, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 13, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 14, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 15, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 16, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 17, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 18, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 19, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 20, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 21, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 22, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 23, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 24, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 25, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 26, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 27, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 28, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - } - ] - }, - "status": "success" - }, - { - "device-id": "C201-7-20A-NODE_ID_HERE", - "ne-state": "inservice", - "commission-date-time": "2022-11-06T14:12:23.260487-06:00", - "org-openroadm-device": { - "degree": [ - { - "degree-number": 1, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 2, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 3, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 4, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 5, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 6, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 7, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 8, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 9, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 10, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 11, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 12, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 13, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 14, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 15, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 16, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 17, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 18, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 19, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 20, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 21, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 22, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 23, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 24, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 25, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 26, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 27, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 28, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - } - ] - }, - "status": "success" - }, - { - "device-id": "C201-7-21A-NODE_ID_HERE", - "ne-state": "inservice", - "commission-date-time": "2022-11-06T14:12:23.260487-06:00", - "org-openroadm-device": { - "degree": [ - { - "degree-number": 1, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 2, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 3, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 4, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 5, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 6, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 7, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 8, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 9, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 10, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 11, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 12, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 13, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 14, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 15, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 16, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 17, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 18, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 19, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 20, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 21, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 22, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 23, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 24, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 25, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 26, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 27, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 28, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - } - ] - }, - "status": "success" - }, - { - "device-id": "C201-7-22A-NODE_ID_HERE", - "ne-state": "inservice", - "commission-date-time": "2022-11-06T14:12:23.260487-06:00", - "org-openroadm-device": { - "degree": [ - { - "degree-number": 1, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 2, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 3, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 4, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 5, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 6, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 7, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 8, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 9, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 10, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 11, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 12, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 13, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 14, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 15, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 16, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 17, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 18, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 19, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 20, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 21, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 22, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 23, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 24, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 25, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 26, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 27, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 28, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - } - ] - }, - "status": "success" - }, - { - "device-id": "C201-7-23A-NODE_ID_HERE", - "ne-state": "inservice", - "commission-date-time": "2022-11-06T14:12:23.260487-06:00", - "org-openroadm-device": { - "degree": [ - { - "degree-number": 1, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 2, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 3, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 4, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 5, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 6, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 7, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 8, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 9, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 10, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 11, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 12, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 13, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 14, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 15, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 16, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 17, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 18, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 19, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 20, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 21, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 22, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 23, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 24, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 25, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 26, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 27, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 28, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - } - ] - }, - "status": "success" - }, - { - "device-id": "C201-7-24A-NODE_ID_HERE", - "ne-state": "inservice", - "commission-date-time": "2022-11-06T14:12:23.260487-06:00", - "org-openroadm-device": { - "degree": [ - { - "degree-number": 1, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 2, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 3, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 4, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 5, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 6, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 7, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 8, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 9, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 10, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 11, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 12, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 13, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 14, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 15, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 16, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 17, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 18, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 19, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 20, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 21, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 22, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 23, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 24, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 25, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 26, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 27, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 28, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - } - ] - }, - "status": "success" - }, - { - "device-id": "C201-7-25A-NODE_ID_HERE", - "ne-state": "inservice", - "commission-date-time": "2022-11-06T14:12:23.260487-06:00", - "org-openroadm-device": { - "degree": [ - { - "degree-number": 1, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 2, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 3, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 4, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 5, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 6, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 7, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 8, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 9, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 10, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 11, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 12, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 13, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 14, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 15, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 16, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 17, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 18, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 19, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 20, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 21, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 22, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 23, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 24, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 25, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 26, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 27, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - }, - { - "degree-number": 28, - "max-wavelengths": 128, - "circuit-packs": [ - { - "index": 1 - } - ], - "connection-ports": [ - { - "index": 1 - } - ] - } - ] - }, - "status": "success" - } - ] - } + "device-id": "C201-7-1A-NODE_ID_HERE", + "ne-state": "inservice", + "commission-date-time": "2022-11-06T14:12:23.260487-06:00", + "org-openroadm-device": { + "degree": [ + { + "degree-number": 1, + "max-wavelengths": 128, + "circuit-packs": [ + { + "index": 1 + } + ], + "connection-ports": [ + { + "index": 1 + } + ] + }, + { + "degree-number": 2, + "max-wavelengths": 128, + "circuit-packs": [ + { + "index": 1 + } + ], + "connection-ports": [ + { + "index": 1 + } + ] + }, + { + "degree-number": 3, + "max-wavelengths": 128, + "circuit-packs": [ + { + "index": 1 + } + ], + "connection-ports": [ + { + "index": 1 + } + ] + }, + { + "degree-number": 4, + "max-wavelengths": 128, + "circuit-packs": [ + { + "index": 1 + } + ], + "connection-ports": [ + { + "index": 1 + } + ] + }, + { + "degree-number": 5, + "max-wavelengths": 128, + "circuit-packs": [ + { + "index": 1 + } + ], + "connection-ports": [ + { + "index": 1 + } + ] + }, + { + "degree-number": 6, + "max-wavelengths": 128, + "circuit-packs": [ + { + "index": 1 + } + ], + "connection-ports": [ + { + "index": 1 + } + ] + }, + { + "degree-number": 7, + "max-wavelengths": 128, + "circuit-packs": [ + { + "index": 1 + } + ], + "connection-ports": [ + { + "index": 1 + } + ] + }, + { + "degree-number": 8, + "max-wavelengths": 128, + "circuit-packs": [ + { + "index": 1 + } + ], + "connection-ports": [ + { + "index": 1 + } + ] + }, + { + "degree-number": 9, + "max-wavelengths": 128, + "circuit-packs": [ + { + "index": 1 + } + ], + "connection-ports": [ + { + "index": 1 + } + ] + }, + { + "degree-number": 10, + "max-wavelengths": 128, + "circuit-packs": [ + { + "index": 1 + } + ], + "connection-ports": [ + { + "index": 1 + } + ] + }, + { + "degree-number": 11, + "max-wavelengths": 128, + "circuit-packs": [ + { + "index": 1 + } + ], + "connection-ports": [ + { + "index": 1 + } + ] + }, + { + "degree-number": 12, + "max-wavelengths": 128, + "circuit-packs": [ + { + "index": 1 + } + ], + "connection-ports": [ + { + "index": 1 + } + ] + }, + { + "degree-number": 13, + "max-wavelengths": 128, + "circuit-packs": [ + { + "index": 1 + } + ], + "connection-ports": [ + { + "index": 1 + } + ] + }, + { + "degree-number": 14, + "max-wavelengths": 128, + "circuit-packs": [ + { + "index": 1 + } + ], + "connection-ports": [ + { + "index": 1 + } + ] + }, + { + "degree-number": 15, + "max-wavelengths": 128, + "circuit-packs": [ + { + "index": 1 + } + ], + "connection-ports": [ + { + "index": 1 + } + ] + }, + { + "degree-number": 16, + "max-wavelengths": 128, + "circuit-packs": [ + { + "index": 1 + } + ], + "connection-ports": [ + { + "index": 1 + } + ] + }, + { + "degree-number": 17, + "max-wavelengths": 128, + "circuit-packs": [ + { + "index": 1 + } + ], + "connection-ports": [ + { + "index": 1 + } + ] + }, + { + "degree-number": 18, + "max-wavelengths": 128, + "circuit-packs": [ + { + "index": 1 + } + ], + "connection-ports": [ + { + "index": 1 + } + ] + }, + { + "degree-number": 19, + "max-wavelengths": 128, + "circuit-packs": [ + { + "index": 1 + } + ], + "connection-ports": [ + { + "index": 1 + } + ] + }, + { + "degree-number": 20, + "max-wavelengths": 128, + "circuit-packs": [ + { + "index": 1 + } + ], + "connection-ports": [ + { + "index": 1 + } + ] + }, + { + "degree-number": 21, + "max-wavelengths": 128, + "circuit-packs": [ + { + "index": 1 + } + ], + "connection-ports": [ + { + "index": 1 + } + ] + }, + { + "degree-number": 22, + "max-wavelengths": 128, + "circuit-packs": [ + { + "index": 1 + } + ], + "connection-ports": [ + { + "index": 1 + } + ] + }, + { + "degree-number": 23, + "max-wavelengths": 128, + "circuit-packs": [ + { + "index": 1 + } + ], + "connection-ports": [ + { + "index": 1 + } + ] + }, + { + "degree-number": 24, + "max-wavelengths": 128, + "circuit-packs": [ + { + "index": 1 + } + ], + "connection-ports": [ + { + "index": 1 + } + ] + }, + { + "degree-number": 25, + "max-wavelengths": 128, + "circuit-packs": [ + { + "index": 1 + } + ], + "connection-ports": [ + { + "index": 1 + } + ] + }, + { + "degree-number": 26, + "max-wavelengths": 128, + "circuit-packs": [ + { + "index": 1 + } + ], + "connection-ports": [ + { + "index": 1 + } + ] + }, + { + "degree-number": 27, + "max-wavelengths": 128, + "circuit-packs": [ + { + "index": 1 + } + ], + "connection-ports": [ + { + "index": 1 + } + ] + }, + { + "degree-number": 28, + "max-wavelengths": 128, + "circuit-packs": [ + { + "index": 1 + } + ], + "connection-ports": [ + { + "index": 1 + } + ] + } + ] + }, + "status": "success" } diff --git a/jacoco-report/pom.xml b/jacoco-report/pom.xml index ddaf14b153..8241ebc4b7 100644 --- a/jacoco-report/pom.xml +++ b/jacoco-report/pom.xml @@ -5,7 +5,7 @@ <parent> <groupId>org.onap.cps</groupId> <artifactId>cps-parent</artifactId> - <version>3.2.7-SNAPSHOT</version> + <version>3.3.0-SNAPSHOT</version> <relativePath>../cps-parent/pom.xml</relativePath> </parent> <modelVersion>4.0.0</modelVersion> @@ -32,7 +32,7 @@ <groupId>org.onap.cps</groupId>
<artifactId>cps-aggregator</artifactId>
- <version>3.2.7-SNAPSHOT</version>
+ <version>3.3.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>cps</name>
diff --git a/spotbugs/pom.xml b/spotbugs/pom.xml index e2d57747a8..7385805fb3 100644 --- a/spotbugs/pom.xml +++ b/spotbugs/pom.xml @@ -25,7 +25,7 @@ <modelVersion>4.0.0</modelVersion> <groupId>org.onap.cps</groupId> <artifactId>spotbugs</artifactId> - <version>3.2.7-SNAPSHOT</version> + <version>3.3.0-SNAPSHOT</version> <properties> <nexusproxy>https://nexus.onap.org</nexusproxy> diff --git a/version.properties b/version.properties index 169b253363..0777f6b538 100755 --- a/version.properties +++ b/version.properties @@ -21,8 +21,8 @@ # because they are used in Jenkins, whose plug-in doesn't support this major=3 -minor=2 -patch=7 +minor=3 +patch=0 base_version=${major}.${minor}.${patch} |