Initial OR-TAPI mapping: Services
[transportpce.git] / tapi / src / main / java / org / opendaylight / transportpce / tapi / utils / TapiInitialORMapping.java
index 337c4eba9bd09c0c1103e660e5230721eb7e3f93..5465d6cc34f040b941fc0d8b00340e3dca3ff453 100644 (file)
@@ -9,10 +9,17 @@ package org.opendaylight.transportpce.tapi.utils;
 
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Optional;
+import org.opendaylight.transportpce.servicehandler.service.ServiceDataStoreOperations;
+import org.opendaylight.transportpce.tapi.connectivity.ConnectivityUtils;
 import org.opendaylight.transportpce.tapi.topology.TapiTopologyException;
 import org.opendaylight.transportpce.tapi.topology.TopologyUtils;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.Service;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.ServiceList;
 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.tapi.context.ServiceInterfacePoint;
 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.tapi.context.ServiceInterfacePointKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectivityService;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectivityServiceKey;
 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.Topology;
 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.TopologyKey;
 import org.slf4j.Logger;
@@ -23,10 +30,15 @@ public class TapiInitialORMapping {
     private static final Logger LOG = LoggerFactory.getLogger(TapiInitialORMapping.class);
     private final TapiContext tapiContext;
     private final TopologyUtils topologyUtils;
+    private final ConnectivityUtils connectivityUtils;
+    private final ServiceDataStoreOperations serviceDataStoreOperations;
 
-    public TapiInitialORMapping(TopologyUtils topologyUtils, TapiContext tapiContext) {
+    public TapiInitialORMapping(TopologyUtils topologyUtils, ConnectivityUtils connectivityUtils,
+                                TapiContext tapiContext, ServiceDataStoreOperations serviceDataStoreOperations) {
         this.topologyUtils = topologyUtils;
         this.tapiContext = tapiContext;
+        this.connectivityUtils = connectivityUtils;
+        this.serviceDataStoreOperations = serviceDataStoreOperations;
     }
 
     public void performTopoInitialMapping() {
@@ -39,8 +51,31 @@ public class TapiInitialORMapping {
             this.tapiContext.updateTopologyContext(topologyMap);
             Map<ServiceInterfacePointKey, ServiceInterfacePoint> sipMap = this.topologyUtils.getSipMap();
             this.tapiContext.updateSIPContext(sipMap);
+            this.connectivityUtils.setSipMap(sipMap);
         } catch (TapiTopologyException e) {
             LOG.error("error building TAPI topology", e);
         }
     }
+
+    public void performServInitialMapping() {
+        Optional<ServiceList> optOrServices = this.serviceDataStoreOperations.getServices();
+        if (!optOrServices.isPresent()) {
+            LOG.error("Couldnt obtain OR services from datastore");
+            return;
+        }
+        ServiceList orServices = optOrServices.get();
+        if (orServices.getServices() == null) {
+            LOG.info("No services in datastore. No mapping needed");
+            return;
+        }
+        Map<ConnectivityServiceKey, ConnectivityService> connServMap = new HashMap<>();
+        for (Service service:orServices.getServices().values()) {
+            // map services
+            // connections needed to be created --> looking at path description
+            ConnectivityService connServ = this.connectivityUtils.mapORServiceToTapiConnectivity(service);
+            connServMap.put(connServ.key(), connServ);
+        }
+        // Put in datastore connectivity services and connections
+        this.tapiContext.updateConnectivityContext(connServMap, this.connectivityUtils.getConnectionFullMap());
+    }
 }