+ public String createOpenRoadmOtu4OtucnInterface(String nodeId, String logicalConnPoint,
+ String supportingInterface, AEndApiInfo apiInfoA, ZEndApiInfo apiInfoZ)
+ throws OpenRoadmInterfaceException {
+ Mapping portMap = portMapping.getMapping(nodeId, logicalConnPoint);
+ if (portMap == null) {
+ throw new OpenRoadmInterfaceException(
+ String.format(MAPPING_ERROR_EXCEPTION_MESSAGE, nodeId, logicalConnPoint));
+ }
+ // Depending on OCH-OTU4-ODU4 interface or OTSi-OTSi-group, supporting interface should
+ // reflect that
+ String interfaceOtu4Otucn = null;
+ if (portMap.getSupportedInterfaceCapability().contains(IfOCHOTU4ODU4.class)) {
+ // create OTU4 interface
+ interfaceOtu4Otucn = createOpenRoadmOtu4Interface(nodeId, logicalConnPoint, supportingInterface,
+ apiInfoA, apiInfoZ);
+ } else if (portMap.getSupportedInterfaceCapability().contains(IfOtsiOtsigroup.class)) {
+ // Create OTUCn
+ interfaceOtu4Otucn = createOpenRoadmOtucnInterface(nodeId, logicalConnPoint, supportingInterface,
+ apiInfoA, apiInfoZ);
+ }
+
+ return interfaceOtu4Otucn;
+ }
+
+ public String createOpenRoadmOdu4Interface(String nodeId, String logicalConnPoint,
+ AEndApiInfo apiInfoA, ZEndApiInfo apiInfoZ) throws OpenRoadmInterfaceException {
+
+ Mapping mapping = portMapping.getMapping(nodeId, logicalConnPoint);
+ if (mapping == null) {
+ throw new OpenRoadmInterfaceException(
+ String.format(MAPPING_ERROR_EXCEPTION_MESSAGE, nodeId, logicalConnPoint));
+ }
+ InterfaceBuilder oduInterfaceBldr = createGenericInterfaceBuilder(mapping, OtnOdu.class,
+ logicalConnPoint + "-ODU4");
+ List<String> listSupportingOtu4Interface = new ArrayList<>();
+ if (mapping.getSupportingOtu4() != null) {
+ listSupportingOtu4Interface.add(mapping.getSupportingOtu4());
+ oduInterfaceBldr.setSupportingInterfaceList(listSupportingOtu4Interface);
+ }
+
+ // OPU payload
+ OpuBuilder opuBuilder = new OpuBuilder()
+ .setExpPayloadType(PayloadTypeDef.getDefaultInstance("07"))
+ .setPayloadType(PayloadTypeDef.getDefaultInstance("07"));
+
+ // Create an ODU4 object
+ OduBuilder oduBuilder = new OduBuilder()
+ .setRate(ODU4.class)
+ .setOduFunction(ODUTTP.class)
+ .setMonitoringMode(MonitoringMode.Terminated)
+ .setOpu(opuBuilder.build());
+
+ if (apiInfoA != null) {
+ oduBuilder.setTxSapi(apiInfoA.getSapi())
+ .setTxDapi(apiInfoA.getDapi())
+ .setExpectedSapi(apiInfoA.getExpectedSapi())
+ .setExpectedDapi(apiInfoA.getExpectedDapi());
+ }
+ if (apiInfoZ != null) {
+ oduBuilder.setTxSapi(apiInfoZ.getSapi())
+ .setTxDapi(apiInfoZ.getDapi())
+ .setExpectedSapi(apiInfoZ.getExpectedSapi())
+ .setExpectedDapi(apiInfoZ.getExpectedDapi());
+ }
+ org.opendaylight.yang.gen.v1.http.org.openroadm.otn.odu.interfaces.rev200529.Interface1Builder oduIf1Builder =
+ new org.opendaylight.yang.gen.v1.http.org.openroadm.otn.odu.interfaces.rev200529.Interface1Builder();
+
+ oduInterfaceBldr.addAugmentation(oduIf1Builder.setOdu(oduBuilder.build()).build());
+
+ // Post interface on the device
+ openRoadmInterfaces.postInterface(nodeId, oduInterfaceBldr);
+ // Since this is not a CTP, we can update the port-mapping
+ LOG.info("{}-{} updating mapping with interface {}", nodeId, logicalConnPoint, oduInterfaceBldr.getName());
+ this.portMapping.updateMapping(nodeId, mapping);
+
+ return oduInterfaceBldr.getName();
+ }
+
+