Support cost map in simple-ird 28/30528/5
authorKai GAO <gaok12@mails.tsinghua.edu.cn>
Thu, 3 Dec 2015 08:22:16 +0000 (16:22 +0800)
committerKai GAO <gaok12@mails.tsinghua.edu.cn>
Thu, 3 Dec 2015 13:33:40 +0000 (21:33 +0800)
Patch set 2: fix missing dependency in alto-release-features

Change-Id: I60fadea94fd2b2a557f120f410055cd821b07977
Signed-off-by: Kai GAO <gaok12@mails.tsinghua.edu.cn>
14 files changed:
alto-basic/simple-ird/features/pom.xml
alto-basic/simple-ird/features/src/main/features/features.xml
alto-basic/simple-ird/impl/pom.xml
alto-basic/simple-ird/impl/src/main/java/org/opendaylight/alto/basic/impl/SimpleIrdEntryListener.java
alto-basic/simple-ird/impl/src/main/java/org/opendaylight/alto/basic/impl/rfc7285/SimpleIrdRfc7285CostTypeListener.java
alto-core/standard-service-models/model-costmap/api/pom.xml
alto-core/standard-service-models/model-costmap/api/src/main/java/org/opendaylight/alto/core/service/model/costmap/CostmapUtils.java
alto-core/standard-service-models/model-costmap/api/src/main/yang/alto-model-costmap.yang
alto-core/standard-service-models/model-costmap/features/pom.xml
alto-core/standard-service-models/model-costmap/features/src/main/features/features.xml
alto-core/standard-service-models/model-costmap/impl/pom.xml
alto-core/standard-service-models/model-costmap/impl/src/main/java/org/opendaylight/alto/core/impl/costmap/test/AltoCostmapProvider.java
alto-release-features/pom.xml
alto-release-features/src/main/features/features.xml

index d6db50894ca48267774546cc8f85307add9412a8..3ce129729f8ebbcc3ef4697bc8ffdef9430c6ff7 100644 (file)
@@ -113,6 +113,14 @@ and is available at http://www.eclipse.org/legal/epl-v10.html INTERNAL
       <type>xml</type>
       <scope>runtime</scope>
     </dependency>
+    <dependency>
+      <groupId>org.opendaylight.alto.core</groupId>
+      <artifactId>alto-service-model-costmap-features</artifactId>
+      <classifier>features</classifier>
+      <version>${project.version}</version>
+      <type>xml</type>
+      <scope>runtime</scope>
+    </dependency>
     <dependency>
       <groupId>org.opendaylight.alto.core</groupId>
       <artifactId>alto-service-model-endpointcost-features</artifactId>
index bfe49629efdd48190acab4769292fffdca1fd636..a1d20d5e5fc741728366abe6fc509cf4acb6788d 100644 (file)
@@ -19,6 +19,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
   <repository>mvn:org.opendaylight.alto.core/alto-northbound-features/${project.version}/xml/features</repository>
   <repository>mvn:org.opendaylight.alto.core/alto-service-model-networkmap-features/${project.version}/xml/features</repository>
   <repository>mvn:org.opendaylight.alto.core/alto-service-model-endpointcost-features/${project.version}/xml/features</repository>
+  <repository>mvn:org.opendaylight.alto.core/alto-service-model-costmap-features/${project.version}/xml/features</repository>
 
   <feature name='odl-alto-simple-ird-api' version='${project.version}' description='OpenDaylight :: alto-simple-ird :: api'>
     <feature version='${mdsal.model.version}'>odl-mdsal-models</feature>
@@ -34,6 +35,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
     <feature version='${project.version}'>odl-alto-resourcepool</feature>
     <feature version='${project.version}'>odl-alto-service-model-networkmap</feature>
     <feature version='${project.version}'>odl-alto-service-model-endpointcost</feature>
+    <feature version='${project.version}'>odl-alto-service-model-costmap</feature>
     <bundle>mvn:org.opendaylight.alto.basic/alto-simple-ird-impl/${project.version}</bundle>
     <configfile finalname="${configfile.directory}/alto-simple-ird.xml">mvn:org.opendaylight.alto.basic/alto-simple-ird-impl/${project.version}/xml/config</configfile>
   </feature>
index dfbd0f0116c1fa3a73e773a2747c174f819c7bc2..9cf970eeb83395f16efb6e138b8ff018d5987ada 100644 (file)
@@ -46,6 +46,12 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
       <version>${project.version}</version>
     </dependency>
 
+    <dependency>
+      <groupId>org.opendaylight.alto.core</groupId>
+      <artifactId>alto-service-model-costmap-api</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+
     <dependency>
       <groupId>org.opendaylight.alto.core</groupId>
       <artifactId>alto-service-model-endpointcost-api</artifactId>
index 229f8ba7a6bedb3f8a44ee1ff41aa6bf401464bd..fea401cf6c49a02ca77a248ee9a114e73610b7ea 100644 (file)
@@ -47,6 +47,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.core.types.rev150921.R
 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.core.types.rev150921.Tag;
 
 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.ird.rev151021.ResourceTypeIrd;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.costmap.rev151021.ResourceTypeCostmap;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.costmap.rev151021.ResourceTypeFilteredCostmap;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rev151021.ResourceTypeEndpointcost;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.networkmap.rev151021.ResourceTypeFilteredNetworkmap;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.networkmap.rev151021.ResourceTypeNetworkmap;
@@ -333,6 +335,11 @@ public class SimpleIrdEntryListener implements AutoCloseable, DataChangeListener
             } else if (resource.getType().equals(ResourceTypeEndpointcost.class)) {
                 entryBuilder.setAccepts("application/alto-endpointcostparams+json");
                 entryBuilder.setMediaType("application/alto-endpointcost+json");
+            } else if (resource.getType().equals(ResourceTypeCostmap.class)) {
+                entryBuilder.setMediaType("application/alto-costmap+json");
+            } else if (resource.getType().equals(ResourceTypeFilteredCostmap.class)) {
+                entryBuilder.setAccepts("application/alto-costmapfilter+json");
+                entryBuilder.setMediaType("application/alto-costmap+json");
             } else {
                 LOG.warn("Haven't implemented yet, skipping");
                 continue;
index 43fccb782946ee878b15619748e809cb2fc9a048..4ac4e62bce98229dc9f1804811ac4be4b2df059f 100644 (file)
@@ -39,6 +39,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.core.resourcepool.rev1
 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.core.types.rev150921.CostTypeData;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.core.types.rev150921.ResourceId;
 
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.costmap.rev151021.ResourceTypeCostmap;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.costmap.rev151021.ResourceTypeFilteredCostmap;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rev151021.ResourceTypeEndpointcost;
 
 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rev151021.CapabilitiesCostType;
@@ -108,13 +110,15 @@ public final class SimpleIrdRfc7285CostTypeListener
             resourceIID = (InstanceIdentifier<Resource>)entry.getInstance();
 
             Resource resource = rwx.read(LogicalDatastoreType.OPERATIONAL, resourceIID).get().get();
-            if (resource.getType().equals(ResourceTypeEndpointcost.class)) {
+            if (resource.getType().equals(ResourceTypeEndpointcost.class)
+                    || resource.getType().equals(ResourceTypeCostmap.class)
+                    || resource.getType().equals(ResourceTypeFilteredCostmap.class)) {
                 CapabilitiesCostType capabilities;
                 capabilities = resource.getCapabilities()
-                                        .getAugmentation(CapabilitiesCostType.class);
+                    .getAugmentation(CapabilitiesCostType.class);
 
                 if ((capabilities == null) || (capabilities.getCostType() == null)
-                            || (capabilities.getCostType().isEmpty())) {
+                        || (capabilities.getCostType().isEmpty())) {
                     LOG.warn("Missing cost-type information in {}", resource.getResourceId());
                     continue;
                 }
@@ -142,9 +146,8 @@ public final class SimpleIrdRfc7285CostTypeListener
                     supportConstraint = capabilities.isConstraintSupport();
                 }
                 setCostTypeNames(m_instance, entry.getEntryId(),
-                                    costTypeNames, supportConstraint, rwx);
+                        costTypeNames, supportConstraint, rwx);
             } else {
-                //TODO :: handle cost map/filtered cost map
                 continue;
             }
         }
index 37715b6f100f92623c624dc7933eafdb8b4ba40b..6872a69944d11813f780cb27e8932c346fa7e95e 100644 (file)
@@ -39,6 +39,12 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
       <version>${project.version}</version>
     </dependency>
 
+    <dependency>
+      <groupId>org.opendaylight.alto.core</groupId>
+      <artifactId>alto-service-model-endpointcost-api</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+
     <dependency>
       <groupId>org.opendaylight.mdsal.model</groupId>
       <artifactId>yang-ext</artifactId>
index 7c6ef6c23b470dddbc75f3a9ff5860193e8298fb..c57180afac35619901d5a40690c139d5324ac69c 100644 (file)
@@ -8,8 +8,8 @@
 package org.opendaylight.alto.core.service.model.costmap;
 
 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.core.types.rev150921.CostMetric;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.costmap.rev151021.context.resource.capabilities.CostType;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.costmap.rev151021.context.resource.capabilities.CostTypeBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rev151021.context.resource.capabilities.CostType;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rev151021.context.resource.capabilities.CostTypeBuilder;
 
 
 public class CostmapUtils {
index 096dcb97f241d9cee95d7f31217a3c7d6f5fdd65..33d110a198c2db2b1c9a668a7e64c956e4afbbb5 100644 (file)
@@ -41,6 +41,12 @@ module alto-model-costmap {
             "The resource type for cost map";
     }
 
+    identity "resource-type-filtered-costmap"{
+        base "alto-resourcepool:resource-type";
+        description
+            "The resource type for filtered cost map";
+    }
+
     grouping "cost-type-data" {
         container "cost-type" {
             leaf "cost-metric" {
@@ -121,24 +127,4 @@ module alto-model-costmap {
             uses "alto-response-costmap";
         }
     }
-
-    augment "/alto-resourcepool:context"
-            + "/alto-resourcepool:resource"
-            + "/alto-resourcepool:capabilities" {
-
-
-        yang-ext:augment-identifier "capabilities-cost-type";
-
-        list "cost-type" {
-            uses "alto-types:cost-type-data";
-
-            leaf "description" {
-                type string;
-            }
-        }
-
-        leaf "constraint-support" {
-            type boolean;
-        }
-    }
 }
index 2385ac6e7684d942830efca286d63593eb7c31eb..bdf9266b2d473f6ff431256c624bf4a98b871397 100644 (file)
@@ -119,5 +119,31 @@ and is available at http://www.eclipse.org/legal/epl-v10.html INTERNAL
       <artifactId>alto-service-model-base-api</artifactId>
       <version>${project.version}</version>
     </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>alto-service-model-endpointcost-features</artifactId>
+      <classifier>features</classifier>
+      <version>${project.version}</version>
+      <type>xml</type>
+      <scope>runtime</scope>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>alto-service-model-endpointcost-api</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>alto-service-model-networkmap-features</artifactId>
+      <classifier>features</classifier>
+      <version>${project.version}</version>
+      <type>xml</type>
+      <scope>runtime</scope>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>alto-service-model-networkmap-api</artifactId>
+      <version>${project.version}</version>
+    </dependency>
   </dependencies>
 </project>
index 068572544cda284736c6c0b0d738f26a9c12614d..c5548d4d9f7b297638fba454f6dfe7046f1eba58 100644 (file)
@@ -16,10 +16,14 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
   <repository>mvn:org.opendaylight.netconf/features-restconf/${restconf.version}/xml/features</repository>
   <repository>mvn:org.opendaylight.dlux/features-dlux/${dlux.version}/xml/features</repository>
   <repository>mvn:org.opendaylight.alto.core/alto-service-model-base-features/${project.version}/xml/features</repository>
+  <repository>mvn:org.opendaylight.alto.core/alto-service-model-networkmap-features/${project.version}/xml/features</repository>
+  <repository>mvn:org.opendaylight.alto.core/alto-service-model-endpointcost-features/${project.version}/xml/features</repository>
 
   <feature name='odl-alto-service-model-costmap-api' version='${project.version}' description='OpenDaylight :: alto-service-model-costmap :: api'>
     <feature version='${mdsal.model.version}'>odl-mdsal-models</feature>
     <feature version='${project.version}'>odl-alto-service-model-base</feature>
+    <feature version='${project.version}'>odl-alto-service-model-networkmap-api</feature>
+    <feature version='${project.version}'>odl-alto-service-model-endpointcost-api</feature>
     <bundle>mvn:org.opendaylight.alto.core/alto-service-model-costmap-api/${project.version}</bundle>
   </feature>
 
index 659f6709e83ca54f1c52fdea9ee06801319b9dfe..54839e06c2072d7def963941595c89f5b6848df7 100644 (file)
@@ -34,6 +34,12 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
       <version>${project.version}</version>
     </dependency>
 
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>alto-service-model-endpointcost-api</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>alto-service-model-costmap-api</artifactId>
index 56564fe8f8a601c66d2eab4fb816a155047af52b..fba5c153c2ac4510f7ee98a1c034bb57cb00cf71 100644 (file)
@@ -7,30 +7,39 @@
  */
 package org.opendaylight.alto.core.impl.costmap.test;
 
-
+import java.math.BigDecimal;
+import java.util.Arrays;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Future;
 
 import org.opendaylight.alto.core.resourcepool.ResourcepoolUtils;
 import org.opendaylight.alto.core.service.model.costmap.CostmapUtils;
+
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.DataChangeListener;
 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
+
 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
 import org.opendaylight.controller.sal.binding.api.BindingAwareProvider;
+
 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.core.resourcepool.rev150921.context.Resource;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.core.resourcepool.rev150921.context.resource.CapabilitiesBuilder;
+
 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.core.types.rev150921.CostMetric;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.core.types.rev150921.PidName;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.core.types.rev150921.ResourceId;
+
 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.costmap.rev151021.AltoModelCostmapService;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.costmap.rev151021.CapabilitiesCostType;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.costmap.rev151021.CapabilitiesCostTypeBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.costmap.rev151021.QueryInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.costmap.rev151021.QueryOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.costmap.rev151021.QueryOutputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.costmap.rev151021.ResourceTypeCostmap;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.costmap.rev151021.ResourceTypeFilteredCostmap;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.costmap.rev151021.alto.request.costmap.request.CostmapRequest;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.costmap.rev151021.alto.response.costmap.response.CostmapResponseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.costmap.rev151021.cost.type.data.CostType;
@@ -46,20 +55,18 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.costmap.
 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.costmap.rfc7285.rev151021.query.input.request.costmap.request.costmap.params.filter.CostmapFilterData;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.costmap.rfc7285.rev151021.query.output.response.costmap.response.costmap.response.data.costmap.source.costmap.destination.cost.NumericalBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.costmap.rfc7285.rev151021.query.output.response.costmap.response.costmap.response.data.costmap.source.costmap.destination.cost.OrdinalBuilder;
+
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rev151021.CapabilitiesCostType;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rev151021.CapabilitiesCostTypeBuilder;
+
 import org.opendaylight.yangtools.concepts.ListenerRegistration;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.math.BigDecimal;
-import java.util.Arrays;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.Future;
-
 public class AltoCostmapProvider implements BindingAwareProvider, AutoCloseable, AltoModelCostmapService {
 
     private static final Logger LOG = LoggerFactory.getLogger(AltoCostmapProvider.class);
@@ -70,6 +77,7 @@ public class AltoCostmapProvider implements BindingAwareProvider, AutoCloseable,
     private ListenerRegistration<DataChangeListener> m_listener=null;
 
     private static final String TEST_COSTMAP_NAME="test-model-costmap";
+    private static final String TEST_FILTERED_COSTMAP_NAME="test-model-filtered-costmap";
     private static final ResourceId TEST_COSTMAP_RID = new ResourceId(TEST_COSTMAP_NAME);
     private static final CostMetric COST_METRIC_ROUTINGCOST = new CostMetric("routingcost");
     private static final String COST_MODE_ORDINAL = "ordinal";
@@ -79,8 +87,6 @@ public class AltoCostmapProvider implements BindingAwareProvider, AutoCloseable,
             throws InterruptedException, ExecutionException, TransactionCommitFailedException  {
         WriteTransaction wx = m_dataBroker.newWriteOnlyTransaction();
 
-
-
         CapabilitiesCostTypeBuilder cctBuilder = new CapabilitiesCostTypeBuilder();
         cctBuilder.setCostType(Arrays.asList(
                 CostmapUtils.createCostTypeCapability(COST_METRIC_ROUTINGCOST,
@@ -97,6 +103,14 @@ public class AltoCostmapProvider implements BindingAwareProvider, AutoCloseable,
         ResourcepoolUtils.lazyUpdateResource(ResourcepoolUtils.DEFAULT_CONTEXT,
                 TEST_COSTMAP_NAME, wx);
 
+        ResourcepoolUtils.createResourceWithCapabilities(ResourcepoolUtils.DEFAULT_CONTEXT,
+                TEST_FILTERED_COSTMAP_NAME,
+                ResourceTypeFilteredCostmap.class,
+                builder.build(), wx);
+
+        ResourcepoolUtils.lazyUpdateResource(ResourcepoolUtils.DEFAULT_CONTEXT,
+                TEST_FILTERED_COSTMAP_NAME, wx);
+
         wx.submit().get();
     }
 
@@ -170,7 +184,8 @@ public class AltoCostmapProvider implements BindingAwareProvider, AutoCloseable,
 
     @Override
     public Future<RpcResult<QueryOutput>> query(QueryInput input) {
-        if (!input.getType().equals(ResourceTypeCostmap.class)) {
+        if (!input.getType().equals(ResourceTypeCostmap.class)
+                && !input.getType().equals(ResourceTypeFilteredCostmap.class)) {
             return RpcResultBuilder.<QueryOutput>failed().buildFuture();
         }
 
index 0cf86d7df54eb63b777164ee49accd9a5d6edf29..10daf93f60a1b506d54e89bcbb6203ed55791962 100644 (file)
@@ -185,6 +185,12 @@ and is available at http://www.eclipse.org/legal/epl-v10.html INTERNAL
       <version>${project.version}</version>
     </dependency>
 
+    <dependency>
+      <groupId>org.opendaylight.alto.core</groupId>
+      <artifactId>alto-service-model-costmap-api</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+
     <dependency>
       <groupId>org.opendaylight.alto.basic</groupId>
       <artifactId>alto-simple-ird-impl</artifactId>
index ac199f546a2543421f023a30b00b7156a443408f..875949ac1998296076abb8051e8411a13d138497 100644 (file)
@@ -93,6 +93,8 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
     <bundle>mvn:org.opendaylight.alto.core/alto-service-model-ird-api/${project.version}</bundle>
     <bundle>mvn:org.opendaylight.alto.core/alto-service-model-networkmap-api/${project.version}</bundle>
     <bundle>mvn:org.opendaylight.alto.core/alto-service-model-endpointcost-api/${project.version}</bundle>
+    <bundle>mvn:org.opendaylight.alto.core/alto-service-model-costmap-api/${project.version}</bundle>
+
     <!--
       TODO :: service models for cost map and endpoint property
     -->