2 * Copyright © 2018 Orange, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
9 package org.opendaylight.transportpce.olm.util;
11 import java.util.ArrayList;
12 import java.util.HashMap;
13 import java.util.List;
15 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.CalculateSpanlossBaseInput;
16 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.CalculateSpanlossBaseInputBuilder;
17 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.GetPmInput;
18 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.GetPmInputBuilder;
19 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.ServicePowerResetInput;
20 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.ServicePowerResetInputBuilder;
21 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.ServicePowerSetupInput;
22 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.ServicePowerSetupInputBuilder;
23 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.ServicePowerTurndownInput;
24 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.ServicePowerTurndownInputBuilder;
25 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.OpenroadmNodeVersion;
26 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.mapping.Mapping;
27 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.mapping.MappingBuilder;
28 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.mapping.MappingKey;
29 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.network.nodes.NodeInfoBuilder;
30 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.types.rev191129.NodeTypes;
31 import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.rev161014.CurrentPmlist;
32 import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.rev161014.CurrentPmlistBuilder;
33 import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.rev161014.current.pm.MeasurementsBuilder;
34 import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.rev161014.current.pm.ResourceBuilder;
35 import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.rev161014.current.pm.measurements.MeasurementBuilder;
36 import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.rev161014.currentpmlist.CurrentPm;
37 import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.rev161014.currentpmlist.CurrentPmBuilder;
38 import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.rev161014.currentpmlist.CurrentPmKey;
39 import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.types.rev161014.PmDataType;
40 import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.types.rev161014.PmNamesEnum;
41 import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.types.rev161014.pm.measurement.PmParameterNameBuilder;
42 import org.opendaylight.yang.gen.v1.http.org.openroadm.resource.rev161014.resource.ResourceTypeBuilder;
43 import org.opendaylight.yang.gen.v1.http.org.openroadm.resource.rev161014.resource.resource.resource.InterfaceBuilder;
44 import org.opendaylight.yang.gen.v1.http.org.openroadm.resource.types.rev161014.ResourceTypeEnum;
45 import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev220926.PmGranularity;
46 import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev220926.olm.get.pm.input.ResourceIdentifierBuilder;
47 import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev220926.optical.renderer.nodes.Nodes;
48 import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev220926.optical.renderer.nodes.NodesBuilder;
49 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.LinkId;
50 import org.opendaylight.yangtools.yang.common.Decimal64;
51 import org.opendaylight.yangtools.yang.common.Uint32;
53 public final class OlmPowerServiceRpcImplUtil {
55 private OlmPowerServiceRpcImplUtil() {
58 public static GetPmInput getGetPmInput() {
59 GetPmInput input = new GetPmInputBuilder()
61 .setGranularity(PmGranularity._15min)
62 .setResourceIdentifier(new ResourceIdentifierBuilder()
63 .setResourceName("ots-deg1").build())
64 .setResourceType(ResourceTypeEnum.Interface).build();
68 public static CurrentPmlist getCurrentPmList121() {
69 CurrentPm currentPm = new CurrentPmBuilder()
71 .setGranularity(org.opendaylight.yang.gen.v1.http.org.openroadm.pm.types.rev161014.PmGranularity._15min)
72 .setResource(new ResourceBuilder()
73 .setResourceType(new ResourceTypeBuilder()
74 .setType(ResourceTypeEnum.Interface)
76 .setResource(new org.opendaylight.yang.gen.v1.http.org.openroadm.resource.rev161014.resource
78 .setResource(new InterfaceBuilder()
79 .setInterfaceName("ots-deg1")
83 .setMeasurements(List.of(
84 new MeasurementsBuilder()
85 .setMeasurement(new MeasurementBuilder()
86 .setPmParameterName(new PmParameterNameBuilder()
87 .setType(PmNamesEnum.OpticalPowerInput)
89 .setPmParameterValue(new PmDataType(Decimal64.valueOf("3")))
93 Map<CurrentPmKey, CurrentPm> currentPmMap = new HashMap<>();
94 currentPmMap.put(currentPm.key(), currentPm);
95 return new CurrentPmlistBuilder()
96 .setCurrentPm(currentPmMap)
100 public static ServicePowerSetupInput getServicePowerSetupInputForTransponder() {
101 return new ServicePowerSetupInputBuilder()
103 new NodesBuilder().setNodeId("xpdr-A").setSrcTp("client-A").setDestTp("network-A").build(),
104 new NodesBuilder().setNodeId("roadm-A").setSrcTp("srg1-A").setDestTp("deg2-A").build()))
105 .setServiceName("service 1")
106 .setWaveNumber(Uint32.valueOf("1"))
107 .setLowerSpectralSlotNumber(Uint32.valueOf(761))
108 .setHigherSpectralSlotNumber(Uint32.valueOf(768))
112 public static ServicePowerSetupInput getServicePowerSetupInputForOneNode(String nodeId, String srcTp,
114 return new ServicePowerSetupInputBuilder()
116 new NodesBuilder().setNodeId(nodeId).setSrcTp(srcTp).setDestTp(destTp).build()))
117 .setServiceName("service 1")
118 .setWaveNumber(Uint32.valueOf("1"))
119 .setLowerSpectralSlotNumber(Uint32.valueOf(761))
120 .setHigherSpectralSlotNumber(Uint32.valueOf(768))
124 public static ServicePowerSetupInput getServicePowerSetupInputWthoutNode() {
125 return new ServicePowerSetupInputBuilder()
127 .setServiceName("service 1")
128 .setWaveNumber(Uint32.valueOf("1"))
129 .setLowerSpectralSlotNumber(Uint32.valueOf(761))
130 .setHigherSpectralSlotNumber(Uint32.valueOf(768))
134 public static org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.network
135 .Nodes getMappingNodeTpdr(String nodeId, OpenroadmNodeVersion nodeVersion, List<String> lcps) {
136 Map<MappingKey, Mapping> mappings = new HashMap();
137 for (String lcp:lcps) {
138 Mapping mapping = new MappingBuilder()
139 .setLogicalConnectionPoint(lcp)
140 .setSupportingCircuitPackName("circuit pack")
141 .setSupportingPort("port")
143 mappings.put(mapping.key(), mapping);
145 return new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.network
148 .setNodeInfo(new NodeInfoBuilder()
149 .setNodeType(NodeTypes.Xpdr)
150 .setOpenroadmVersion(nodeVersion)
152 .setMapping(mappings)
156 public static org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.network
157 .Nodes getMappingNodeRdm(String nodeId, OpenroadmNodeVersion nodeVersion, List<String> lcps) {
158 Map<MappingKey, Mapping> mappings = new HashMap();
159 for (String lcp:lcps) {
160 MappingBuilder mappingBldr = new MappingBuilder()
161 .setLogicalConnectionPoint(lcp)
162 .setSupportingCircuitPackName("circuit pack")
163 .setSupportingPort("port");
164 if (lcp.contains("deg")) {
165 mappingBldr.setSupportingOts("interface ots")
166 .setSupportingOms("interface oms");
168 mappings.put(mappingBldr.build().key(), mappingBldr.build());
170 return new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.network
173 .setNodeInfo(new NodeInfoBuilder()
174 .setNodeType(NodeTypes.Rdm)
175 .setOpenroadmVersion(nodeVersion)
177 .setMapping(mappings)
181 public static org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.network
182 .Nodes getMappingNodeIla() {
183 return new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.network
185 .setNodeId("ila node")
186 .setNodeInfo(new NodeInfoBuilder()
187 .setNodeType(NodeTypes.Ila)
188 .setOpenroadmVersion(OpenroadmNodeVersion._121)
193 public static ServicePowerSetupInput getServicePowerSetupInput() {
194 Nodes node1 = new NodesBuilder().setDestTp("dest").setSrcTp("src").setNodeId("node 1").build();
195 Nodes node2 = new NodesBuilder().setDestTp("dest").setSrcTp("src").setNodeId("node 2").build();
196 List<Nodes> nodes = new ArrayList<>();
199 ServicePowerSetupInput input = new ServicePowerSetupInputBuilder().setNodes(nodes)
200 .setServiceName("service 1")
201 .setWaveNumber(Uint32.valueOf("1"))
202 .setLowerSpectralSlotNumber(Uint32.valueOf(761))
203 .setHigherSpectralSlotNumber(Uint32.valueOf(768))
208 public static ServicePowerSetupInput getServicePowerSetupInput2() {
209 Nodes node1 = new NodesBuilder().setDestTp("network").setSrcTp("src").setNodeId("node 1").build();
210 Nodes node2 = new NodesBuilder().setDestTp("network").setSrcTp("src").setNodeId("node 2").build();
211 List<Nodes> nodes = new ArrayList<>();
214 ServicePowerSetupInput input = new ServicePowerSetupInputBuilder().setNodes(nodes)
215 .setServiceName("service 1")
216 .setWaveNumber(Uint32.valueOf("1"))
217 .setLowerSpectralSlotNumber(Uint32.valueOf(761))
218 .setHigherSpectralSlotNumber(Uint32.valueOf(768)).build();
222 public static ServicePowerSetupInput getServicePowerSetupInput3() {
223 Nodes node1 = new NodesBuilder().setDestTp("deg").setSrcTp("src").setNodeId("node 1").build();
224 Nodes node2 = new NodesBuilder().setDestTp("deg").setSrcTp("src").setNodeId("node 2").build();
225 List<Nodes> nodes = new ArrayList<>();
228 ServicePowerSetupInput input = new ServicePowerSetupInputBuilder().setNodes(nodes)
229 .setServiceName("service 1")
230 .setWaveNumber(Uint32.valueOf("1"))
231 .setLowerSpectralSlotNumber(Uint32.valueOf(761))
232 .setHigherSpectralSlotNumber(Uint32.valueOf(768)).build();
236 public static ServicePowerTurndownInput getServicePowerTurndownInput() {
237 return new ServicePowerTurndownInputBuilder()
239 new NodesBuilder().setNodeId("roadm-A").setSrcTp("srg1-A").setDestTp("deg2-A").build(),
240 new NodesBuilder().setNodeId("roadm-C").setSrcTp("deg1-C").setDestTp("srg1-C").build())
242 .setServiceName("service 1")
243 .setWaveNumber(Uint32.valueOf("1"))
244 .setLowerSpectralSlotNumber(Uint32.valueOf(761))
245 .setHigherSpectralSlotNumber(Uint32.valueOf(768))
249 public static CalculateSpanlossBaseInput getCalculateSpanlossBaseInputLink() {
250 CalculateSpanlossBaseInput input = new CalculateSpanlossBaseInputBuilder()
251 .setLinkId(new LinkId("ROADM-A1-to-ROADM-C1"))
252 .setSrcType(CalculateSpanlossBaseInput.SrcType.Link)
257 public static CalculateSpanlossBaseInput getCalculateSpanlossBaseInputAll() {
258 CalculateSpanlossBaseInput input = new CalculateSpanlossBaseInputBuilder()
259 .setSrcType(CalculateSpanlossBaseInput.SrcType.All)
264 public static ServicePowerResetInput getServicePowerResetInput() {
265 ServicePowerResetInput input = new ServicePowerResetInputBuilder()
266 .setServiceName("service 1").build();