+ /**
+ * Build a rather configurable hard-constraint.
+ * @param customerCode set the list of customer-code provided
+ * @param operationalMode set list of operational-mode
+ * @param diversityServiceList set diversity constraints from serviceListId
+ * provided
+ * @param exclude set exclude constraints
+ * @param include set include constraints
+ * @param maxLatency set a maxLatency value, null otherwise
+ * @param hopCount set a max-wdm-hop-count value
+ * @param teMetric set a max-wdm-TE-metric
+ * @param maxDistance set a max-distance value, null otherwise
+ * @param coRoutingServiceId set co-routing constraints
+ * @return the hard-constraints
+ */
+ public static HardConstraints buildHardConstraint(Set<String> customerCode, boolean operationalMode,
+ Set<String> diversityServiceList, String exclude, String include,
+ Double maxLatency, boolean hopCount, boolean teMetric,
+ String maxDistance, String coRoutingServiceId) {
+
+ Map<ServiceIdentifierListKey,
+ org.opendaylight.yang.gen.v1.http.org.openroadm.routing.constraints.rev221209.diversity.existing.service
+ .constraints.ServiceIdentifierList>
+ serviceIdList = new HashMap<>();
+ if (diversityServiceList != null) {
+ for (String serviceId : diversityServiceList) {
+ org.opendaylight.yang.gen.v1.http.org.openroadm.routing.constraints.rev221209.diversity.existing.service
+ .constraints.ServiceIdentifierList sil = createServiceIdentifierListForDiversity(serviceId);
+ serviceIdList.put(sil.key(), sil);
+ }
+ }
+
+ Map<String, Exclude> excludeMap = initialiseExcludeMap();
+ Map<String, Include> includeMap = initialiseIncludeMap();
+ Map<String, CoRouting> coRoutingMap = initialiseCoRoutingMap();
+
+ return new HardConstraintsBuilder()
+ .setCustomerCode(customerCode)
+ .setOperationalMode(
+ operationalMode
+ ? Set.of("operational-mode 1", "operational-mode 2")
+ : null)
+ .setDiversity(
+ serviceIdList.isEmpty()
+ ? null
+ : new DiversityBuilder()
+ .setDiversityType(DiversityType.Serial)
+ .setServiceIdentifierList(serviceIdList)
+ .build())
+ .setExclude(
+ exclude == null || !excludeMap.containsKey(exclude)
+ ? null
+ : excludeMap.get(exclude))
+ .setInclude(
+ include == null || !includeMap.containsKey(include)
+ ? null
+ : includeMap.get(include))
+ .setLatency(
+ maxLatency == null
+ ? null
+ : new LatencyBuilder().setMaxLatency(Decimal64.valueOf(String.valueOf(maxLatency))).build())
+ .setHopCount(
+ hopCount
+ ? new HopCountBuilder()
+ .setMaxWdmHopCount(Uint8.valueOf(3))
+ .setMaxOtnHopCount(Uint8.valueOf(5))
+ .build()
+ : null)
+ .setTEMetric(
+ teMetric
+ ? new TEMetricBuilder()
+ .setMaxWdmTEMetric(Uint32.valueOf(8))
+ .setMaxOtnTEMetric(Uint32.valueOf(11))
+ .build()
+ : null)
+ .setDistance(
+ maxDistance == null
+ ? null
+ : new DistanceBuilder().setMaxDistance(Decimal64.valueOf(String.valueOf(maxDistance))).build())
+ .setCoRouting(
+ coRoutingServiceId == null || !coRoutingMap.containsKey(coRoutingServiceId)
+ ? null
+ : coRoutingMap.get(coRoutingServiceId))
+ .build();