diff options
Diffstat (limited to 'integration-test/src/test')
15 files changed, 1100 insertions, 10183 deletions
diff --git a/integration-test/src/test/groovy/org/onap/cps/integration/base/CpsIntegrationSpecBase.groovy b/integration-test/src/test/groovy/org/onap/cps/integration/base/CpsIntegrationSpecBase.groovy index 866fef4f24..b942a43af2 100644 --- a/integration-test/src/test/groovy/org/onap/cps/integration/base/CpsIntegrationSpecBase.groovy +++ b/integration-test/src/test/groovy/org/onap/cps/integration/base/CpsIntegrationSpecBase.groovy @@ -40,6 +40,8 @@ import org.testcontainers.spock.Testcontainers import spock.lang.Shared import spock.lang.Specification +import java.time.OffsetDateTime + @SpringBootTest(classes = [TestConfig, CpsAdminServiceImpl, CpsValidatorImpl]) @Testcontainers @EnableAutoConfiguration @@ -68,9 +70,7 @@ class CpsIntegrationSpecBase extends Specification { CpsQueryService cpsQueryService def static GENERAL_TEST_DATASPACE = 'generalTestDataspace' - def static FUNCTIONAL_TEST_DATASPACE = 'functionalTestDataspace' def static BOOKSTORE_SCHEMA_SET = 'bookstoreSchemaSet' - def static BOOKSTORE_ANCHOR = 'bookstoreAnchor' def static initialized = false @@ -107,4 +107,11 @@ class CpsIntegrationSpecBase extends Specification { } return true } + + def addAnchorsWithData(numberOfAnchors, dataspaceName, schemaSetName, anchorNamePrefix, data) { + (1..numberOfAnchors).each { + cpsAdminService.createAnchor(dataspaceName, schemaSetName, anchorNamePrefix + it) + cpsDataService.saveData(dataspaceName, anchorNamePrefix + it, data, OffsetDateTime.now()) + } + } } diff --git a/integration-test/src/test/groovy/org/onap/cps/integration/base/FunctionalSpecBase.groovy b/integration-test/src/test/groovy/org/onap/cps/integration/base/FunctionalSpecBase.groovy index 5e5269114e..b7a6030d80 100644 --- a/integration-test/src/test/groovy/org/onap/cps/integration/base/FunctionalSpecBase.groovy +++ b/integration-test/src/test/groovy/org/onap/cps/integration/base/FunctionalSpecBase.groovy @@ -20,10 +20,14 @@ package org.onap.cps.integration.base -import java.time.OffsetDateTime - class FunctionalSpecBase extends CpsIntegrationSpecBase { + def static FUNCTIONAL_TEST_DATASPACE_1 = 'functionalTestDataspace1' + def static FUNCTIONAL_TEST_DATASPACE_2 = 'functionalTestDataspace2' + def static NUMBER_OF_ANCHORS_PER_DATASPACE_WITH_BOOKSTORE_DATA = 2 + def static BOOKSTORE_ANCHOR_1 = 'bookstoreAnchor1' + def static BOOKSTORE_ANCHOR_2 = 'bookstoreAnchor2' + def static initialized = false def setup() { @@ -35,15 +39,17 @@ class FunctionalSpecBase extends CpsIntegrationSpecBase { } def setupBookstoreInfraStructure() { - cpsAdminService.createDataspace(FUNCTIONAL_TEST_DATASPACE) + cpsAdminService.createDataspace(FUNCTIONAL_TEST_DATASPACE_1) + cpsAdminService.createDataspace(FUNCTIONAL_TEST_DATASPACE_2) def bookstoreYangModelAsString = readResourceDataFile('bookstore/bookstore.yang') - cpsModuleService.createSchemaSet(FUNCTIONAL_TEST_DATASPACE, BOOKSTORE_SCHEMA_SET, [bookstore: bookstoreYangModelAsString]) - cpsAdminService.createAnchor(FUNCTIONAL_TEST_DATASPACE, BOOKSTORE_SCHEMA_SET, BOOKSTORE_ANCHOR) + cpsModuleService.createSchemaSet(FUNCTIONAL_TEST_DATASPACE_1, BOOKSTORE_SCHEMA_SET, [bookstore: bookstoreYangModelAsString]) + cpsModuleService.createSchemaSet(FUNCTIONAL_TEST_DATASPACE_2, BOOKSTORE_SCHEMA_SET, [bookstore: bookstoreYangModelAsString]) } def addBookstoreData() { def bookstoreJsonData = readResourceDataFile('bookstore/bookstoreData.json') - cpsDataService.saveData(FUNCTIONAL_TEST_DATASPACE, BOOKSTORE_ANCHOR, bookstoreJsonData, OffsetDateTime.now()) + addAnchorsWithData(NUMBER_OF_ANCHORS_PER_DATASPACE_WITH_BOOKSTORE_DATA, FUNCTIONAL_TEST_DATASPACE_1, BOOKSTORE_SCHEMA_SET, 'bookstoreAnchor', bookstoreJsonData) + addAnchorsWithData(NUMBER_OF_ANCHORS_PER_DATASPACE_WITH_BOOKSTORE_DATA, FUNCTIONAL_TEST_DATASPACE_2, BOOKSTORE_SCHEMA_SET, 'bookstoreAnchor', bookstoreJsonData) } } 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..f609ba00e0 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,18 +21,19 @@ 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 } def 'Read bookstore top-level container(s) using #fetchDescendantsOption.'() { when: 'get data nodes for bookstore container' - def result = objectUnderTest.getDataNodes(FUNCTIONAL_TEST_DATASPACE, BOOKSTORE_ANCHOR, '/bookstore', fetchDescendantsOption) + def result = objectUnderTest.getDataNodes(FUNCTIONAL_TEST_DATASPACE_1, BOOKSTORE_ANCHOR_1, '/bookstore', fetchDescendantsOption) then: 'the tree consist ouf of #expectNumberOfDataNodes data nodes' assert countDataNodesInTree(result) == expectNumberOfDataNodes and: 'the top level data node has the expected attribute and value' @@ -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 || 6 + FetchDescendantsOption.INCLUDE_ALL_DESCENDANTS || 17 + new FetchDescendantsOption(2) || 17 } + + 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_1, BOOKSTORE_ANCHOR_1, '/bookstore', FetchDescendantsOption.INCLUDE_ALL_DESCENDANTS) + then: 'the correct dataspace was queried' + assert result.dataspace.toSet() == [FUNCTIONAL_TEST_DATASPACE_1].toSet() + and: 'the correct anchor was queried' + assert result.anchorName.toSet() == [BOOKSTORE_ANCHOR_1].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..bd39605de3 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 @@ -1,6 +1,7 @@ /* * ============LICENSE_START======================================================= * Copyright (C) 2023 Nordix Foundation + * Modifications Copyright (C) 2023 TechMahindra Ltd * ================================================================================ * Licensed under the Apache License, Version 2.0 (the 'License'); * you may not use this file except in compliance with the License. @@ -20,18 +21,25 @@ 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 spock.lang.Ignore + +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_1, BOOKSTORE_ANCHOR_1, 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 +50,233 @@ 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 using combinations of OR operator #scenario.'() { + when: 'a query is executed to get response by the given cps path' + def result = objectUnderTest.queryDataNodes(FUNCTIONAL_TEST_DATASPACE_1, BOOKSTORE_ANCHOR_1, cpspath, OMIT_DESCENDANTS) + then: 'the result contains expected number of nodes' + assert result.size() == expectedResultSize + and: 'the cps-path of queryDataNodes has the expectedLeaves' + assert result.leaves.sort() == expectedLeaves.sort() + println(expectedLeaves.toArray()) + where: 'the following data is used' + scenario | cpspath || expectedResultSize | expectedLeaves + 'the "OR" condition' | '//books[@lang="English" or @price=15]' || 6 | [[lang: "English", price: 15, title: "Annihilation", authors: ["Jeff VanderMeer"], editions: [2014]], + [lang: "English", price: 15, title: "The Gruffalo", authors: ["Julia Donaldson"], editions: [1999]], + [lang: "English", price: 14, title: "The Light Fantastic", authors: ["Terry Pratchett"], editions: [1986]], + [lang: "English", price: 13, title: "Good Omens", authors: ["Terry Pratchett", "Neil Gaiman"], editions: [2006]], + [lang: "English", price: 12, title: "The Colour of Magic", authors: ["Terry Pratchett"], editions: [1983]], + [lang: "English", price: 10, title: "Matilda", authors: ["Roald Dahl"], editions: [1988, 2000]]] + 'the "OR" condition with non-json data' | '//books[@title="xyz" or @price=15]' || 2 | [[lang: "English", price: 15, title: "Annihilation", authors: ["Jeff VanderMeer"], editions: [2014]], + [lang: "English", price: 15, title: "The Gruffalo", authors: ["Julia Donaldson"], editions: [1999]]] + 'combination of multiple AND' | '//books[@lang="English" and @price=15 and @edition=1983]' || 0 | [] + 'combination of multiple OR' | '//books[ @title="Matilda" or @price=15 or @edition=1983]' || 3 | [[lang: "English", price: 15, title: "Annihilation", authors: ["Jeff VanderMeer"], editions: [2014]], + [lang: "English", price: 10, title: "Matilda", authors: ["Roald Dahl"], editions: [1988, 2000]], + [lang: "English", price: 15, title: "The Gruffalo", authors: ["Julia Donaldson"], editions: [1999]]] + } + + 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_1, BOOKSTORE_ANCHOR_1, 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 | 6 + 'no condition and level 2 descendants' | '/bookstore' | new FetchDescendantsOption(2) || 1 | 17 + } + + 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_1, BOOKSTORE_ANCHOR_1, 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_1, BOOKSTORE_ANCHOR_1, '/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_1, BOOKSTORE_ANCHOR_1, '//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_1, BOOKSTORE_ANCHOR_1, 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_1, BOOKSTORE_ANCHOR_1, 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'] + 'more than one leaf has "OR" condition' | '//books[@lang="English" or @price=15]' || ['Annihilation', 'Good Omens', 'Matilda', 'The Colour of Magic', 'The Gruffalo', 'The Light Fantastic'] + 'more than one leaf has "OR" condition with non-json data' | '//books[@title="xyz" or @price=13]' || ['Good Omens'] + 'more than one leaf has multiple AND' | '//books[@lang="English" and @price=13 and @edition=1983]' || [] + 'more than one leaf has multiple OR' | '//books[ @title="Matilda" or @price=15 or @edition=2006]' || ['Annihilation', 'Matilda', 'The Gruffalo'] + '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 '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(FUNCTIONAL_TEST_DATASPACE_1, BOOKSTORE_ANCHOR_1, cpsPath, INCLUDE_ALL_DESCENDANTS) + then: 'xpaths of the retrieved data nodes are as expected' + result.xpath.toList() == ["/bookstore/premises/addresses[@house-number='2' and @street='Main Street']"] + where: 'the following data is used' + scenario | cpsPath + 'full composite key' | '//addresses[@house-number=2 and @street="Main Street"]' + 'one partial key leaf' | '//addresses[@house-number=2]' + 'one non key leaf' | '//addresses[@county="Kildare"]' + 'mix of partial key and non key leaf' | '//addresses[@street="Main Street" and @county="Kildare"]' + } + + 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_1, BOOKSTORE_ANCHOR_1, 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_1, BOOKSTORE_ANCHOR_1, '//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 || 6 + 'all' | INCLUDE_ALL_DESCENDANTS || 17 + } + + 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_1, BOOKSTORE_ANCHOR_1, 'cpsPath that cannot be parsed' , OMIT_DESCENDANTS) + then: 'a cps path exception is thrown' + thrown(CpsPathException) + } + + @Ignore + def 'Cps Path query across anchors with #scenario.'() { + when: 'a query is executed to get a data nodes across anchors by the given CpsPath' + def result = objectUnderTest.queryDataNodesAcrossAnchors(FUNCTIONAL_TEST_DATASPACE_1, cpsPath, OMIT_DESCENDANTS) + then: 'the correct dataspace is queried' + assert result.dataspace.toSet() == [FUNCTIONAL_TEST_DATASPACE_1].toSet() + and: 'correct anchors are queried' + assert result.anchorName.toSet() == [BOOKSTORE_ANCHOR_1, BOOKSTORE_ANCHOR_2].toSet() + and: 'the correct number of nodes is returned' + assert result.size() == expectedXpathsPerAnchor.size() * NUMBER_OF_ANCHORS_PER_DATASPACE_WITH_BOOKSTORE_DATA + and: 'the queried nodes have expected xpaths' + assert result.xpath.toSet() == expectedXpathsPerAnchor.toSet() + where: 'the following data is used' + scenario | cpsPath || expectedXpathsPerAnchor + 'container node' | '/bookstore' || ["/bookstore"] + 'list node' | '/bookstore/categories' || ["/bookstore/categories[@code='1']", "/bookstore/categories[@code='2']", "/bookstore/categories[@code='3']", "/bookstore/categories[@code='4']"] + 'string leaf-condition' | '/bookstore[@bookstore-name="Easons"]' || ["/bookstore"] + 'integer leaf-condition' | '/bookstore/categories[@code="1"]/books[@price=15]' || ["/bookstore/categories[@code='1']/books[@title='The Gruffalo']"] + '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']"] + '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 list element' | '//books/ancestor::bookstore/categories[@code="2"]' || ["/bookstore/categories[@code='2']"] + 'ancestor combined with text condition' | '//books/title[text()="Matilda"]/ancestor::bookstore' || ["/bookstore"] + } + + @Ignore + def 'Cps Path query across anchors with #scenario descendants.'() { + when: 'a query is executed to get a data node by the given cps path' + def result = objectUnderTest.queryDataNodesAcrossAnchors(FUNCTIONAL_TEST_DATASPACE_1, '/bookstore', fetchDescendantsOption) + then: 'the correct dataspace was queried' + assert result.dataspace.toSet() == [FUNCTIONAL_TEST_DATASPACE_1].toSet() + and: 'correct number of datanodes are returned' + assert countDataNodesInTree(result) == expectedNumberOfNodesPerAnchor * NUMBER_OF_ANCHORS_PER_DATASPACE_WITH_BOOKSTORE_DATA + where: 'the following data is used' + scenario | fetchDescendantsOption || expectedNumberOfNodesPerAnchor + 'no' | OMIT_DESCENDANTS || 1 + 'direct' | DIRECT_CHILDREN_ONLY || 6 + 'all' | INCLUDE_ALL_DESCENDANTS || 17 + } + + @Ignore + def 'Cps Path query across anchors with ancestors and #scenario descendants.'() { + when: 'a query is executed to get a data node by the given cps path' + def result = objectUnderTest.queryDataNodesAcrossAnchors(FUNCTIONAL_TEST_DATASPACE_1, '//books/ancestor::bookstore', fetchDescendantsOption) + then: 'the correct dataspace was queried' + assert result.dataspace.toSet() == [FUNCTIONAL_TEST_DATASPACE_1].toSet() + and: 'correct number of datanodes are returned' + assert countDataNodesInTree(result) == expectedNumberOfNodesPerAnchor * NUMBER_OF_ANCHORS_PER_DATASPACE_WITH_BOOKSTORE_DATA + where: 'the following data is used' + scenario | fetchDescendantsOption || expectedNumberOfNodesPerAnchor + 'no' | OMIT_DESCENDANTS || 1 + 'direct' | DIRECT_CHILDREN_ONLY || 6 + 'all' | INCLUDE_ALL_DESCENDANTS || 17 + } + + def 'Cps Path query across anchors with syntax error throws a CPS Path Exception.'() { + when: 'trying to execute a query with a syntax (parsing) error' + objectUnderTest.queryDataNodesAcrossAnchors(FUNCTIONAL_TEST_DATASPACE_1, '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..d339f6ddcf 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 @@ -20,11 +20,8 @@ package org.onap.cps.integration.performance.base -import org.onap.cps.spi.FetchDescendantsOption - -import java.time.OffsetDateTime -import org.onap.cps.integration.base.CpsIntegrationSpecBase import org.onap.cps.rest.utils.MultipartFileUtil +import org.onap.cps.spi.FetchDescendantsOption import org.springframework.web.multipart.MultipartFile class CpsPerfTestBase extends PerfTestBase { @@ -41,8 +38,8 @@ class CpsPerfTestBase extends PerfTestBase { def setupPerformanceInfraStructure() { cpsAdminService.createDataspace(CPS_PERFORMANCE_TEST_DATASPACE) - def modelAsString = CpsIntegrationSpecBase.readResourceDataFile('bookstore/bookstore.yang') - cpsModuleService.createSchemaSet(CPS_PERFORMANCE_TEST_DATASPACE, CpsIntegrationSpecBase.BOOKSTORE_SCHEMA_SET, [bookstore: modelAsString]) + def modelAsString = readResourceDataFile('bookstore/bookstore.yang') + cpsModuleService.createSchemaSet(CPS_PERFORMANCE_TEST_DATASPACE, BOOKSTORE_SCHEMA_SET, [bookstore: modelAsString]) } def createInitialData() { @@ -55,16 +52,16 @@ class CpsPerfTestBase extends PerfTestBase { def createWarmupData() { def data = "{\"bookstore\":{}}" stopWatch.start() - addAnchorsWithData(1, CpsIntegrationSpecBase.BOOKSTORE_SCHEMA_SET, 'warmup', data) + addAnchorsWithData(1, CPS_PERFORMANCE_TEST_DATASPACE, 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() { - def data = CpsIntegrationSpecBase.readResourceDataFile('bookstore/largeModelData.json') + def data = readResourceDataFile('bookstore/largeModelData.json') stopWatch.start() - addAnchorsWithData(5, CpsIntegrationSpecBase.BOOKSTORE_SCHEMA_SET, 'bookstore', data) + addAnchorsWithData(5, CPS_PERFORMANCE_TEST_DATASPACE, BOOKSTORE_SCHEMA_SET, 'bookstore', data) stopWatch.stop() def durationInMillis = stopWatch.getTotalTimeMillis() recordAndAssertPerformance('Creating bookstore anchors with large data tree', 3_000, durationInMillis) @@ -75,23 +72,23 @@ class CpsPerfTestBase extends PerfTestBase { def multipartFile = Mock(MultipartFile) multipartFile.getOriginalFilename() >> file.getName() multipartFile.getInputStream() >> new FileInputStream(file) - cpsModuleService.createSchemaSet(CPS_PERFORMANCE_TEST_DATASPACE, PerfTestBase.LARGE_SCHEMA_SET, MultipartFileUtil.extractYangResourcesMap(multipartFile)) + cpsModuleService.createSchemaSet(CPS_PERFORMANCE_TEST_DATASPACE, LARGE_SCHEMA_SET, MultipartFileUtil.extractYangResourcesMap(multipartFile)) } def addOpenRoadData() { - def data = CpsIntegrationSpecBase.readResourceDataFile('openroadm/innerNode.json') + def data = generateOpenRoadData(50) stopWatch.start() - addAnchorsWithData(5, PerfTestBase.LARGE_SCHEMA_SET, 'openroadm', data) + addAnchorsWithData(5, CPS_PERFORMANCE_TEST_DATASPACE, LARGE_SCHEMA_SET, 'openroadm', data) stopWatch.stop() def durationInMillis = stopWatch.getTotalTimeMillis() recordAndAssertPerformance('Creating openroadm anchors with large data tree', 25_000, durationInMillis) } - def addAnchorsWithData(numberOfAnchors, schemaSetName, anchorNamePrefix, data) { - (1..numberOfAnchors).each { - cpsAdminService.createAnchor(CPS_PERFORMANCE_TEST_DATASPACE, schemaSetName, anchorNamePrefix + it) - cpsDataService.saveData(CPS_PERFORMANCE_TEST_DATASPACE, anchorNamePrefix + it, data, OffsetDateTime.now()) - } + def generateOpenRoadData(numberOfNodes) { + def innerNode = readResourceDataFile('openroadm/innerNode.json') + return '{ "openroadm-devices": { "openroadm-device": [' + + (1..numberOfNodes).collect { innerNode.replace('NODE_ID_HERE', it.toString()) }.join(',') + + ']}}' } def 'Warm the database'() { @@ -101,8 +98,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/base/NcmpRegistryPerfTestBase.groovy b/integration-test/src/test/groovy/org/onap/cps/integration/performance/base/NcmpRegistryPerfTestBase.groovy index adece2ebf5..d169bd7571 100644 --- a/integration-test/src/test/groovy/org/onap/cps/integration/performance/base/NcmpRegistryPerfTestBase.groovy +++ b/integration-test/src/test/groovy/org/onap/cps/integration/performance/base/NcmpRegistryPerfTestBase.groovy @@ -40,12 +40,12 @@ class NcmpRegistryPerfTestBase extends PerfTestBase { def setupPerformanceInfraStructure() { cpsAdminService.createDataspace(NCMP_PERFORMANCE_TEST_DATASPACE) - def modelAsString = CpsIntegrationSpecBase.readResourceDataFile('ncmp-registry/dmi-registry@2022-05-10.yang') + def modelAsString = readResourceDataFile('ncmp-registry/dmi-registry@2022-05-10.yang') cpsModuleService.createSchemaSet(NCMP_PERFORMANCE_TEST_DATASPACE, REGISTRY_SCHEMA_SET, [registry: modelAsString]) } def createInitialData() { - def data = CpsIntegrationSpecBase.readResourceDataFile('ncmp-registry/1000-cmhandles.json') + def data = readResourceDataFile('ncmp-registry/1000-cmhandles.json') cpsAdminService.createAnchor(NCMP_PERFORMANCE_TEST_DATASPACE, REGISTRY_SCHEMA_SET, REGISTRY_ANCHOR) cpsDataService.saveData(NCMP_PERFORMANCE_TEST_DATASPACE, REGISTRY_ANCHOR, data, OffsetDateTime.now()) } diff --git a/integration-test/src/test/groovy/org/onap/cps/integration/performance/cps/CpsAdminServiceLimits.groovy b/integration-test/src/test/groovy/org/onap/cps/integration/performance/cps/CpsAdminServiceLimits.groovy new file mode 100644 index 0000000000..2c7c6ce35c --- /dev/null +++ b/integration-test/src/test/groovy/org/onap/cps/integration/performance/cps/CpsAdminServiceLimits.groovy @@ -0,0 +1,50 @@ +/* + * ============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 org.springframework.dao.DataAccessResourceFailureException + +class CpsAdminServiceLimits extends CpsPerfTestBase { + + def objectUnderTest + + def setup() { objectUnderTest = cpsAdminService } + + def 'Get anchors from multiple schema set names limit exceeded: 32,766 (~ 2^15) schema set names.'() { + given: 'more than 32,766 schema set names' + def schemaSetNames = (0..32_766).collect { "size-of-this-name-does-not-matter-for-limit-" + it } + when: 'single get is executed to get all the anchors' + objectUnderTest.getAnchors(CPS_PERFORMANCE_TEST_DATASPACE, schemaSetNames) + then: 'a database exception is thrown' + thrown(DataAccessResourceFailureException.class) + } + + def 'Querying anchor names limit exceeded: 32,766 (~ 2^15) modules.'() { + given: 'more than 32,766 module names' + def moduleNames = (0..32_766).collect { "size-of-this-name-does-not-matter-for-limit-" + it } + when: 'single query is executed to get all the anchors' + objectUnderTest.queryAnchorNames(CPS_PERFORMANCE_TEST_DATASPACE, moduleNames) + then: 'a database exception is thrown' + thrown(DataAccessResourceFailureException.class) + } + +} diff --git a/integration-test/src/test/groovy/org/onap/cps/integration/performance/cps/CpsDataServiceLimits.groovy b/integration-test/src/test/groovy/org/onap/cps/integration/performance/cps/CpsDataServiceLimits.groovy new file mode 100644 index 0000000000..1cb4ed800c --- /dev/null +++ b/integration-test/src/test/groovy/org/onap/cps/integration/performance/cps/CpsDataServiceLimits.groovy @@ -0,0 +1,63 @@ +/* + * ============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 java.time.OffsetDateTime +import org.onap.cps.integration.performance.base.CpsPerfTestBase +import org.springframework.dao.DataAccessResourceFailureException +import org.springframework.transaction.TransactionSystemException + +import static org.onap.cps.spi.FetchDescendantsOption.INCLUDE_ALL_DESCENDANTS + +class CpsDataServiceLimits extends CpsPerfTestBase { + + def objectUnderTest + + def setup() { objectUnderTest = cpsDataService } + + 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 operation is executed to get all datanodes with given xpaths' + objectUnderTest.getDataNodesForMultipleXpaths(CPS_PERFORMANCE_TEST_DATASPACE, 'bookstore1', xpaths, INCLUDE_ALL_DESCENDANTS) + then: 'a database exception is thrown' + thrown(DataAccessResourceFailureException.class) + } + + def 'Delete multiple datanodes limit exceeded: 32,767 (~ 2^15) xpaths.'() { + given: 'more than 32,767 xpaths' + def xpaths = (0..32_767).collect { "/size/of/this/path/does/not/matter/for/limit[@id='" + it + "']" } + when: 'single operation is executed to delete all datanodes with given xpaths' + objectUnderTest.deleteDataNodes(CPS_PERFORMANCE_TEST_DATASPACE, 'bookstore1', xpaths, OffsetDateTime.now()) + then: 'a database exception is thrown' + thrown(TransactionSystemException.class) + } + + def 'Delete datanodes from multiple anchors limit exceeded: 32,766 (~ 2^15) anchors.'() { + given: 'more than 32,766 anchor names' + def anchorNames = (0..32_766).collect { "size-of-this-name-does-not-matter-for-limit-" + it } + when: 'single operation is executed to delete all datanodes in given anchors' + objectUnderTest.deleteDataNodes(CPS_PERFORMANCE_TEST_DATASPACE, anchorNames, OffsetDateTime.now()) + then: 'a database exception is thrown' + thrown(DataAccessResourceFailureException.class) + } + +} 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..4676c908b9 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,10 @@ package org.onap.cps.integration.performance.cps import org.onap.cps.integration.performance.base.CpsPerfTestBase -import org.onap.cps.spi.FetchDescendantsOption + +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 +32,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 +74,10 @@ 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 } } 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..62ebc73201 100644 --- a/integration-test/src/test/resources/data/bookstore/bookstore.yang +++ b/integration-test/src/test/resources/data/bookstore/bookstore.yang @@ -21,37 +21,56 @@ module stores { type string; } - list categories { + container premises { + list addresses { + key "house-number street"; - key "code"; - - leaf code { - type string; + leaf house-number { + type uint16; + } + leaf street { + type string; + } + leaf town { + type string; + } + leaf county { + type string; + } + } } - leaf name { - type string; - } + list categories { - list books { - key title; + key "code"; - leaf title { - type string; - } - leaf lang { + leaf code { 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..12df20e55b 100644 --- a/integration-test/src/test/resources/data/bookstore/bookstoreData.json +++ b/integration-test/src/test/resources/data/bookstore/bookstoreData.json @@ -1,6 +1,22 @@ { "bookstore": { "bookstore-name": "Easons", + "premises": { + "addresses": [ + { + "house-number": 2, + "street": "Main Street", + "town": "Maynooth", + "county": "Kildare" + }, + { + "house-number": 24, + "street": "Grafton Street", + "town": "Dublin", + "county": "Dublin" + } + ] + }, "categories": [ { "code": 1, @@ -10,14 +26,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 +46,7 @@ "title": "Annihilation", "lang": "English", "authors": ["Jeff VanderMeer"], - "pub_year": 2014, + "editions": [2014], "price": 15 } ] @@ -43,12 +59,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" } |