X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=pce%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Ftransportpce%2Fpce%2Fnetworkanalyzer%2FPceOtnNodeTest.java;h=132522515f67ec00e60e3f5203149a6d4b2195a7;hb=c6b93e8d8dd5a5597ca891140212229d99431614;hp=32db757d1d7e61ea5170fae78186e3deff8213d5;hpb=9f04e99bf6c53ce3218835145085fb75dc5b4590;p=transportpce.git diff --git a/pce/src/test/java/org/opendaylight/transportpce/pce/networkanalyzer/PceOtnNodeTest.java b/pce/src/test/java/org/opendaylight/transportpce/pce/networkanalyzer/PceOtnNodeTest.java index 32db757d1..132522515 100644 --- a/pce/src/test/java/org/opendaylight/transportpce/pce/networkanalyzer/PceOtnNodeTest.java +++ b/pce/src/test/java/org/opendaylight/transportpce/pce/networkanalyzer/PceOtnNodeTest.java @@ -13,36 +13,39 @@ import java.util.Map; import org.junit.Assert; import org.junit.Before; import org.junit.Test; -import org.mockito.Mockito; import org.opendaylight.transportpce.common.NetworkUtils; +import org.opendaylight.transportpce.common.StringConstants; import org.opendaylight.transportpce.common.fixedflex.GridUtils; import org.opendaylight.transportpce.test.AbstractTest; -import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.TerminationPoint1Builder; -import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev200529.networks.network.node.DegreeAttributes; -import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev200529.networks.network.node.DegreeAttributesBuilder; -import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev200529.networks.network.node.SrgAttributes; -import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev200529.networks.network.node.SrgAttributesBuilder; -import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev200529.networks.network.node.termination.point.CpAttributesBuilder; -import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev200529.networks.network.node.termination.point.CtpAttributesBuilder; -import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev200529.networks.network.node.termination.point.PpAttributesBuilder; -import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev200529.networks.network.node.termination.point.RxTtpAttributesBuilder; -import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev200529.networks.network.node.termination.point.TxTtpAttributesBuilder; -import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev200529.networks.network.node.termination.point.XpdrClientAttributesBuilder; -import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev200529.networks.network.node.termination.point.XpdrNetworkAttributesBuilder; -import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev200529.networks.network.node.termination.point.XpdrPortAttributesBuilder; -import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev200529.OpenroadmNodeType; -import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev200529.OpenroadmTpType; -import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev200529.xpdr.tp.supported.interfaces.SupportedInterfaceCapability; -import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev200529.xpdr.tp.supported.interfaces.SupportedInterfaceCapabilityBuilder; -import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev200529.xpdr.tp.supported.interfaces.SupportedInterfaceCapabilityKey; -import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529.networks.network.node.termination.point.TpSupportedInterfaces; -import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529.networks.network.node.termination.point.TpSupportedInterfacesBuilder; -import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529.networks.network.node.termination.point.XpdrTpPortConnectionAttributesBuilder; -import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev200327.If100GEODU4; -import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev200327.If10GEODU2e; -import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev200327.If1GEODU0; -import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev200327.IfOCHOTU4ODU4; -import org.opendaylight.yang.gen.v1.http.org.openroadm.service.format.rev190531.ServiceFormat; +import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210.Node1; +import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210.TerminationPoint1Builder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.State; +import org.opendaylight.yang.gen.v1.http.org.openroadm.equipment.states.types.rev191129.AdminStates; +import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev211210.networks.network.node.DegreeAttributes; +import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev211210.networks.network.node.DegreeAttributesBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev211210.networks.network.node.SrgAttributes; +import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev211210.networks.network.node.SrgAttributesBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev211210.networks.network.node.termination.point.CpAttributesBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev211210.networks.network.node.termination.point.CtpAttributesBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev211210.networks.network.node.termination.point.PpAttributesBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev211210.networks.network.node.termination.point.RxTtpAttributesBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev211210.networks.network.node.termination.point.TxTtpAttributesBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev211210.networks.network.node.termination.point.XpdrClientAttributesBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev211210.networks.network.node.termination.point.XpdrNetworkAttributesBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev211210.networks.network.node.termination.point.XpdrPortAttributesBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev211210.OpenroadmNodeType; +import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev211210.OpenroadmTpType; +import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev211210.xpdr.tp.supported.interfaces.SupportedInterfaceCapability; +import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev211210.xpdr.tp.supported.interfaces.SupportedInterfaceCapabilityBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev211210.xpdr.tp.supported.interfaces.SupportedInterfaceCapabilityKey; +import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev211210.networks.network.node.termination.point.TpSupportedInterfaces; +import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev211210.networks.network.node.termination.point.TpSupportedInterfacesBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev211210.networks.network.node.termination.point.XpdrTpPortConnectionAttributesBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev201211.If100GEODU4; +import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev201211.If10GEODU2e; +import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev201211.If1GEODU0; +import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev201211.IfOCHOTU4ODU4; +import org.opendaylight.yang.gen.v1.http.org.openroadm.service.format.rev191129 .ServiceFormat; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NetworkId; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NodeId; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.Node; @@ -70,19 +73,18 @@ public class PceOtnNodeTest extends AbstractTest { @Test public void testInitXndrTpsODU4() { pceOtnNode = new PceOtnNode(node, OpenroadmNodeType.MUXPDR, - new NodeId("optical"), ServiceFormat.OMS.getName(), "ODU4"); + new NodeId("optical"), ServiceFormat.OMS.getName(), StringConstants.SERVICE_TYPE_ODU4, null); pceOtnNode.initXndrTps("AZ"); pceOtnNode.checkAvailableTribPort(); pceOtnNode.checkAvailableTribSlot(); Assert.assertTrue("valid otn service type " , pceOtnNode.isValid()); - Assert.assertFalse("checkWl returns by default false" , pceOtnNode.checkWL(5L)); Assert.assertNotNull("tpAvailableTribPort isn't null !" , pceOtnNode.getAvailableTribPorts()); } @Test public void testInitXndrTps10GE() { pceOtnNode = new PceOtnNode(node, OpenroadmNodeType.MUXPDR, - new NodeId("optical"), ServiceFormat.OMS.getName(), "10GE"); + new NodeId("optical"), ServiceFormat.OMS.getName(), StringConstants.SERVICE_TYPE_10GE, null); pceOtnNode.initXndrTps("mode"); pceOtnNode.checkAvailableTribPort(); pceOtnNode.checkAvailableTribSlot(); @@ -93,21 +95,20 @@ public class PceOtnNodeTest extends AbstractTest { public void testInitXndrTps10GXponderClient1() { node = getNodeBuilder(geSupportingNodes(), OpenroadmTpType.XPONDERCLIENT).build(); pceOtnNode = new PceOtnNode(node, OpenroadmNodeType.ROADM, - new NodeId("optical"), ServiceFormat.OMS.getName(), "10GE"); + new NodeId("optical"), ServiceFormat.OMS.getName(), StringConstants.SERVICE_TYPE_10GE, null); pceOtnNode.initXndrTps("mode"); pceOtnNode.checkAvailableTribPort(); pceOtnNode.checkAvailableTribSlot(); Assert.assertFalse("not valid otn service type", pceOtnNode.isValid()); Assert.assertTrue("this.nodeType isn'tOpenroadmNodeType.TPDR" , pceOtnNode.validateSwitchingPoolBandwidth(null,null,1L)); - } @Test public void testInitXndrTps1GXponderClient() { node = getNodeBuilder(geSupportingNodes(), OpenroadmTpType.XPONDERCLIENT).build(); pceOtnNode = new PceOtnNode(node, OpenroadmNodeType.MUXPDR, - new NodeId("optical"), ServiceFormat.OMS.getName(), "1GE"); + new NodeId("optical"), ServiceFormat.OMS.getName(), StringConstants.SERVICE_TYPE_1GE, null); pceOtnNode.initXndrTps("mode"); pceOtnNode.checkAvailableTribPort(); pceOtnNode.checkAvailableTribSlot(); @@ -117,7 +118,7 @@ public class PceOtnNodeTest extends AbstractTest { @Test public void testInitXndrTps10GXponderClient() { pceOtnNode = new PceOtnNode(node, OpenroadmNodeType.MUXPDR, - new NodeId("optical"), ServiceFormat.OMS.getName(), "10GE"); + new NodeId("optical"), ServiceFormat.OMS.getName(), StringConstants.SERVICE_TYPE_10GE, null); pceOtnNode.validateXponder("optical", "sl"); pceOtnNode.validateXponder("not optical", "sl"); pceOtnNode.initXndrTps("AZ"); @@ -125,68 +126,6 @@ public class PceOtnNodeTest extends AbstractTest { pceOtnNode.checkAvailableTribSlot(); Assert.assertFalse("not valid otn service type" , pceOtnNode.isValid()); Assert.assertFalse("checkTp returns false by default " , pceOtnNode.checkTP("tp")); - - } - - @Test - public void testIsPceOtnNodeValid() { - pceOtnNode = new PceOtnNode(node, OpenroadmNodeType.MUXPDR, - new NodeId("optical"), ServiceFormat.OMS.getName(), "10GE"); - pceOtnNode.initXndrTps("AZ"); - pceOtnNode.checkAvailableTribPort(); - pceOtnNode.checkAvailableTribSlot(); - Assert.assertFalse("not valid otn service Type" , pceOtnNode.isPceOtnNodeValid(pceOtnNode)); - } - - @Test - public void testIsPceOtnNodeValidNode() { - pceOtnNode = new PceOtnNode(node, OpenroadmNodeType.DEGREE, - new NodeId("optical"), ServiceFormat.OMS.getName(), "100GE"); - pceOtnNode.initXndrTps("AZ"); - pceOtnNode.checkAvailableTribPort(); - pceOtnNode.checkAvailableTribSlot(); - pceOtnNode = Mockito.spy(pceOtnNode); - Mockito.when(pceOtnNode.getNodeId()).thenReturn(null); - Assert.assertFalse("not valid node , nodeId is null" , pceOtnNode.isPceOtnNodeValid(pceOtnNode)); - - } - - @Test - public void testIsPceOtnNodeValidNodeTypeNull() { - pceOtnNode = new PceOtnNode(node, null, - new NodeId("optical"), ServiceFormat.OMS.getName(), "100GE"); - pceOtnNode.initXndrTps("AZ"); - pceOtnNode.checkAvailableTribPort(); - pceOtnNode.checkAvailableTribSlot(); - Assert.assertFalse("not valid type, nodeType is null " , pceOtnNode.isPceOtnNodeValid(pceOtnNode)); - } - - @Test - public void testIsPceOtnNodeValidNodeTypeDeg() { - pceOtnNode = new PceOtnNode(node, OpenroadmNodeType.DEGREE, - new NodeId("optical"), ServiceFormat.OMS.getName(), "100GE"); - pceOtnNode.initXndrTps("AZ"); - Assert.assertFalse("not valid node , its type isn't one of MUXPDR or SWITCH or TPDR" , - pceOtnNode.isPceOtnNodeValid(pceOtnNode)); - } - - @Test - public void testIsPceOtnNodeValidTrue() { - pceOtnNode = new PceOtnNode(node, OpenroadmNodeType.MUXPDR, - new NodeId("optical"), ServiceFormat.OMS.getName(), "ODU4"); - pceOtnNode.initXndrTps("AZ"); - pceOtnNode.checkAvailableTribPort(); - pceOtnNode.checkAvailableTribSlot(); - Assert.assertTrue("valid otn service type ", pceOtnNode.isPceOtnNodeValid(pceOtnNode)); - } - - @Test - public void testIsPceOtnNodeValidChecksw() { - node = getNodeBuilder(geSupportingNodes(), OpenroadmTpType.XPONDERCLIENT).build(); - pceOtnNode = new PceOtnNode(node, OpenroadmNodeType.MUXPDR, - new NodeId("optical"), ServiceFormat.OMS.getName(), "1GE"); - pceOtnNode.initXndrTps("mode"); - Assert.assertFalse("not valid otn service Type" , pceOtnNode.isPceOtnNodeValid(pceOtnNode)); } private Map geSupportingNodes() { @@ -217,7 +156,7 @@ public class PceOtnNodeTest extends AbstractTest { xpdrTpBldr.addAugmentation(createAnother2TerminationPoint(openroadmTpType).build()); xpdrTpBldr.addAugmentation(createAnotherTerminationPoint(openroadmTpType).build()); - org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev200529.Node1 node1 = getNode1(); + org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev211210.Node1 node1 = getNode1(); TerminationPoint xpdr = xpdrTpBldr.build(); org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1 node1Rev180226 = new Node1Builder() @@ -230,6 +169,8 @@ public class PceOtnNodeTest extends AbstractTest { .Node1Builder() .setTerminationPoint(Map.of(xpdr.key(),xpdr)) .build(); + Node1 node11 = new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210.Node1Builder() + .setOperationalState(State.InService).setAdministrativeState(AdminStates.InService).build(); return new NodeBuilder() .setNodeId(new NodeId("node_test")) @@ -237,49 +178,18 @@ public class PceOtnNodeTest extends AbstractTest { .addAugmentation(node1Rev180226) .addAugmentation(node1) .addAugmentation(nodeIetf) - .setSupportingNode(supportingNodes1); - } - - private NodeBuilder getNodeBuilderEmpty(Map supportingNodes1, - OpenroadmTpType openroadmTpType) { - - TerminationPoint1Builder tp1Bldr = getTerminationPoint1Builder(openroadmTpType); - TerminationPointBuilder xpdrTpBldr = getTerminationPointBuilder(openroadmTpType); - xpdrTpBldr.addAugmentation(tp1Bldr.build()); - xpdrTpBldr.addAugmentation(createAnotherTerminationPoint(openroadmTpType).build()); - - org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev200529.Node1 node1 = getNode1Empty(); - TerminationPoint xpdr = xpdrTpBldr.build(); - org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1 node1Rev180226 = - new Node1Builder() - .setTerminationPoint(Map.of(xpdr.key(),xpdr)) - .build(); - - - return new NodeBuilder() - .setNodeId(new NodeId("node_test")) - .withKey(new NodeKey(new NodeId("node 1"))) - .addAugmentation(node1Rev180226) - .addAugmentation(node1) + .addAugmentation(node11) .setSupportingNode(supportingNodes1); } private org.opendaylight - .yang.gen.v1.http.org.openroadm.network.topology.rev200529.Node1 getNode1() { - return new org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev200529.Node1Builder() + .yang.gen.v1.http.org.openroadm.network.topology.rev211210.Node1 getNode1() { + return new org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev211210.Node1Builder() .setSrgAttributes(getSrgAttributes()) .setDegreeAttributes(getDegAttributes()) .build(); } - private org.opendaylight - .yang.gen.v1.http.org.openroadm.network.topology.rev200529.Node1 getNode1Empty() { - return new org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev200529.Node1Builder() - .setSrgAttributes(getEmptySrgAttributes()) - .setDegreeAttributes(getEmptyDegAttributes()) - .build(); - } - private DegreeAttributes getDegAttributes() { return new DegreeAttributesBuilder() .setAvailFreqMaps(GridUtils.initFreqMaps4FixedGrid2Available()) @@ -290,16 +200,6 @@ public class PceOtnNodeTest extends AbstractTest { return new SrgAttributesBuilder().setAvailFreqMaps(GridUtils.initFreqMaps4FixedGrid2Available()).build(); } - private DegreeAttributes getEmptyDegAttributes() { - return (new DegreeAttributesBuilder()) - .setAvailFreqMaps(Map.of()) - .build(); - } - - private SrgAttributes getEmptySrgAttributes() { - return new SrgAttributesBuilder().setAvailFreqMaps(Map.of()).build(); - } - private TerminationPointBuilder getTerminationPointBuilder(OpenroadmTpType openroadmTpType) { return new TerminationPointBuilder() .setTpId(new TpId("2")) @@ -309,16 +209,17 @@ public class PceOtnNodeTest extends AbstractTest { private TerminationPoint1Builder getTerminationPoint1Builder(OpenroadmTpType openroadmTpType) { return new TerminationPoint1Builder() - .setTpType(openroadmTpType); + .setTpType(openroadmTpType).setAdministrativeState(AdminStates.InService) + .setOperationalState(State.InService); } private org.opendaylight.yang.gen - .v1.http.org.openroadm.network.topology.rev200529.TerminationPoint1Builder createAnotherTerminationPoint( + .v1.http.org.openroadm.network.topology.rev211210.TerminationPoint1Builder createAnotherTerminationPoint( OpenroadmTpType openroadmTpType ) { return new org.opendaylight - .yang.gen.v1.http.org.openroadm.network.topology.rev200529.TerminationPoint1Builder() + .yang.gen.v1.http.org.openroadm.network.topology.rev211210.TerminationPoint1Builder() .setCtpAttributes((new CtpAttributesBuilder()).build()) .setCpAttributes((new CpAttributesBuilder()).build()) .setTxTtpAttributes((new TxTtpAttributesBuilder()).setUsedWavelengths(Map.of()).build()) @@ -330,21 +231,21 @@ public class PceOtnNodeTest extends AbstractTest { .setTailEquipmentId("destNode" + "--" + "destTp").build()); } - private org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529 + private org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev211210 .TerminationPoint1Builder createOTNTerminationPoint(OpenroadmTpType openroadmTpType) { SupportedInterfaceCapability supIfCapa = new SupportedInterfaceCapabilityBuilder() - .setIfCapType(IfOCHOTU4ODU4.class) + .setIfCapType(IfOCHOTU4ODU4.VALUE) .build(); SupportedInterfaceCapability supIfCapa1 = new SupportedInterfaceCapabilityBuilder() - .setIfCapType(If100GEODU4.class) + .setIfCapType(If100GEODU4.VALUE) .build(); SupportedInterfaceCapability supIfCapa2 = new SupportedInterfaceCapabilityBuilder() - .setIfCapType(If10GEODU2e.class) + .setIfCapType(If10GEODU2e.VALUE) .build(); SupportedInterfaceCapability supIfCapa3 = new SupportedInterfaceCapabilityBuilder() - .setIfCapType(If1GEODU0.class) + .setIfCapType(If1GEODU0.VALUE) .build(); Map supIfCapaList = new HashMap<>(); @@ -359,17 +260,17 @@ public class PceOtnNodeTest extends AbstractTest { XpdrTpPortConnectionAttributesBuilder xtpcaBldr = new XpdrTpPortConnectionAttributesBuilder(); - return new org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529 + return new org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev211210 .TerminationPoint1Builder() .setTpSupportedInterfaces(tpSupIf) .setXpdrTpPortConnectionAttributes(xtpcaBldr.build()); } - private org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529 + private org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210 .TerminationPoint1Builder createAnother2TerminationPoint(OpenroadmTpType openroadmTpType) { - return new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529 + return new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210 .TerminationPoint1Builder() - .setTpType(openroadmTpType); + .setTpType(openroadmTpType).setOperationalState(State.InService) + .setAdministrativeState(AdminStates.InService); } - }