<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>
<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>
<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>
<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>
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;
} 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;
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;
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;
}
supportConstraint = capabilities.isConstraintSupport();
}
setCostTypeNames(m_instance, entry.getEntryId(),
- costTypeNames, supportConstraint, rwx);
+ costTypeNames, supportConstraint, rwx);
} else {
- //TODO :: handle cost map/filtered cost map
continue;
}
}
<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>
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 {
"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" {
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;
- }
- }
}
<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>
<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>
<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>
*/
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;
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);
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";
throws InterruptedException, ExecutionException, TransactionCommitFailedException {
WriteTransaction wx = m_dataBroker.newWriteOnlyTransaction();
-
-
CapabilitiesCostTypeBuilder cctBuilder = new CapabilitiesCostTypeBuilder();
cctBuilder.setCostType(Arrays.asList(
CostmapUtils.createCostTypeCapability(COST_METRIC_ROUTINGCOST,
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();
}
@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();
}
<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>
<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
-->