import org.opendaylight.alto.commons.types.rfc7285.RFC7285Endpoint;
import org.opendaylight.alto.commons.types.rfc7285.RFC7285CostType;
+import java.util.Iterator;
import java.util.Map;
import java.util.LinkedHashMap;
super(_in);
}
- protected YANGJSON2RFCAddressGroupConverter group_converter
- = new YANGJSON2RFCAddressGroupConverter();
-
@Override
protected Object _convert() {
JsonNode node = this.in();
for (JsonNode dst: cost_map.get("dstCosts")) {
String dst_pid = dst.get("dst").get("value").asText();
- //TODO Don't know how to get data...
- data.put(dst_pid, new Integer(1));
+ JsonNode cost_node = dst.get("cost");
+ if ((cost_node != null) && (!cost_node.isNull())) {
+ data.put(dst_pid, cost_node.asText());
+ }
}
cm.map.put(src_pid, data);
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.CheckedFuture;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150416.DstCosts1;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150416.DstCosts1Builder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.hosttracker.rev150416.DstCosts1;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.hosttracker.rev150416.DstCosts1Builder;
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.ReadOnlyTransaction;
-package org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150416;
+package org.opendaylight.yang.gen.v1.urn.opendaylight.alto.hosttracker.rev150416;
public final class $YangModelBindingProvider implements org.opendaylight.yangtools.yang.binding.YangModelBindingProvider {
-package org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150416 ;
+package org.opendaylight.yang.gen.v1.urn.opendaylight.alto.hosttracker.rev150416 ;
import org.opendaylight.yangtools.yang.binding.YangModuleInfo;
import java.util.Set;
import java.util.HashSet;
private static final YangModuleInfo INSTANCE = new $YangModuleInfoImpl();
private final String name = "alto-hosttracker-cost-service";
- private final String namespace = "urn:opendaylight:alto";
+ private final String namespace = "urn:opendaylight:alto:hosttracker";
private final String revision = "2015-04-16";
private final String resourcePath = "/META-INF/yang/alto-hosttracker-cost-service.yang";
-package org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150416;
+package org.opendaylight.yang.gen.v1.urn.opendaylight.alto.hosttracker.rev150416;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.binding.DataObject;
* cost set in hosttracker
*
* <p>This class represents the following YANG schema fragment defined in module <b>alto-hosttracker-cost-service</b>
- * <br>(Source path: <i>META-INF/yang/alto-hosttracker-cost-service .yang</i>):
+ * <br>(Source path: <i>META-INF/yang/alto-hosttracker-cost-service.yang</i>):
* <pre>
* grouping cost {
* leaf cost-value {
- public static final QName QNAME = org.opendaylight.yangtools.yang.common.QName.cachedReference(org.opendaylight.yangtools.yang.common.QName.create("urn:opendaylight:alto","2015-04-16","cost"));
+ public static final QName QNAME = org.opendaylight.yangtools.yang.common.QName.cachedReference(org.opendaylight.yangtools.yang.common.QName.create("urn:opendaylight:alto:hosttracker","2015-04-16","cost"));
java.lang.Integer getCostValue();
-package org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150416;
+package org.opendaylight.yang.gen.v1.urn.opendaylight.alto.hosttracker.rev150416;
import org.opendaylight.yangtools.yang.binding.DataObject;
import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.cost.map.map.DstCosts;
import org.opendaylight.yangtools.yang.binding.Augmentation;
-package org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150416;
+package org.opendaylight.yang.gen.v1.urn.opendaylight.alto.hosttracker.rev150416;
import org.opendaylight.yangtools.yang.binding.DataObject;
import org.opendaylight.yangtools.concepts.Builder;
/**
- * Class that builds {@link org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150416.DstCosts1} instances.
+ * Class that builds {@link org.opendaylight.yang.gen.v1.urn.opendaylight.alto.hosttracker.rev150416.DstCosts1} instances.
*
- * @see org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150416.DstCosts1
+ * @see org.opendaylight.yang.gen.v1.urn.opendaylight.alto.hosttracker.rev150416.DstCosts1
*
*/
-public class DstCosts1Builder implements Builder <org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150416.DstCosts1> {
+public class DstCosts1Builder implements Builder <org.opendaylight.yang.gen.v1.urn.opendaylight.alto.hosttracker.rev150416.DstCosts1> {
private java.lang.Integer _costInHosttracker;
private static final class DstCosts1Impl implements DstCosts1 {
- public java.lang.Class<org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150416.DstCosts1> getImplementedInterface() {
- return org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150416.DstCosts1.class;
+ public java.lang.Class<org.opendaylight.yang.gen.v1.urn.opendaylight.alto.hosttracker.rev150416.DstCosts1> getImplementedInterface() {
+ return org.opendaylight.yang.gen.v1.urn.opendaylight.alto.hosttracker.rev150416.DstCosts1.class;
}
private final java.lang.Integer _costInHosttracker;
if (!(obj instanceof DataObject)) {
return false;
}
- if (!org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150416.DstCosts1.class.equals(((DataObject)obj).getImplementedInterface())) {
+ if (!org.opendaylight.yang.gen.v1.urn.opendaylight.alto.hosttracker.rev150416.DstCosts1.class.equals(((DataObject)obj).getImplementedInterface())) {
return false;
}
- org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150416.DstCosts1 other = (org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150416.DstCosts1)obj;
+ org.opendaylight.yang.gen.v1.urn.opendaylight.alto.hosttracker.rev150416.DstCosts1 other = (org.opendaylight.yang.gen.v1.urn.opendaylight.alto.hosttracker.rev150416.DstCosts1)obj;
if (_costInHosttracker == null) {
if (other.getCostInHosttracker() != null) {
return false;
module alto-hosttracker-cost-service {
- namespace "urn:opendaylight:alto";
+ namespace "urn:opendaylight:alto:hosttracker";
prefix alto-host-track-cost;
import ietf-yang-types {prefix yang;}
import org.opendaylight.alto.commons.types.converter.YANGJSON2RFCCostMapConverter;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.opendaylight.yangtools.yang.binding.Augmentable;
+import org.opendaylight.yangtools.yang.binding.Augmentation;
+import org.opendaylight.yangtools.yang.binding.util.BindingReflections;
import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.Resources;
import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.resources.IRD;
import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.resources.NetworkMaps;
import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.resources.cost.maps.CostMapKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.resources.network.maps.NetworkMap;
import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.resources.network.maps.NetworkMapKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.cost.map.map.DstCosts;
import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.ResourceId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.ird.meta.DefaultAltoNetworkMap;
import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.ird.Meta;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
+import java.util.Iterator;
import java.util.Map;
import java.util.LinkedHashMap;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.fasterxml.jackson.databind.JsonSerializer;
+import com.fasterxml.jackson.databind.SerializerProvider;
+import com.fasterxml.jackson.databind.module.SimpleModule;
public class SimpleAltoService implements NetworkMapService, CostMapService, AutoCloseable {
private YANGJSON2RFCNetworkMapConverter m_nmconverter = null;
private YANGJSON2RFCCostMapConverter m_cmconverter = null;
+ protected class DstCostSerializer extends JsonSerializer<DstCosts> {
+ @Override
+ public void serialize(DstCosts value, JsonGenerator jgen, SerializerProvider provider) {
+ try {
+ jgen.writeStartObject();
+
+ jgen.writeObjectFieldStart("dst");
+ jgen.writeStringField("value", value.getDst().getValue());
+ jgen.writeEndObject();
+
+ Map<Class<? extends Augmentation<?>>, Augmentation<?>> augmentations
+ = BindingReflections.getAugmentations(value);
+ String cost = null;
+ for (Augmentation<?> aug: augmentations.values()) {
+ try {
+ ObjectNode node = m_mapper.valueToTree(aug);
+ for (Iterator<String> itr = node.fieldNames(); itr.hasNext(); ) {
+ String field = itr.next();
+ if (field.toLowerCase().indexOf("cost") >= 0) {
+ cost = node.get(field).asText();
+ break;
+ }
+ }
+ } catch (Exception e) {
+ m_logger.warn("Failed to write data from {}", cost);
+ }
+ }
+ if (cost != null) {
+ jgen.writeStringField("cost", cost);
+ }
+
+ jgen.writeEndObject();
+ } catch (Exception e) {
+ m_logger.info("Failed to parse DstCosts");
+ }
+ }
+ }
+
public SimpleAltoService(DataBroker db) {
this.m_db = db;
this.m_nmconverter = new YANGJSON2RFCNetworkMapConverter();
this.register(NetworkMapService.class);
this.register(CostMapService.class);
+
+ try {
+ SimpleModule module = new SimpleModule();
+ module.addSerializer(DstCosts.class, new DstCostSerializer());
+ m_mapper.registerModule(module);
+ } catch (Exception e) {
+ m_logger.info("failed to load customized serializer");
+ }
}
protected <E> void register(Class<E> clazz) {
<repository>mvn:org.opendaylight.l2switch/features-l2switch/${l2switch.version}/xml/features</repository>
<feature name='odl-alto-all' version='${project.version}' description='OpenDaylight :: alto :: All '>
+ <feature>odl-restconf-all</feature>
<feature version='${project.version}'>odl-alto-provider</feature>
<feature version='${project.version}'>odl-alto-manager</feature>
+ <feature version='${project.version}'>odl-alto-hosttracker</feature>
<feature version='${project.version}'>odl-alto-northbound</feature>
</feature>
<feature version='${mdsal.version}'>odl-mdsal-common</feature>
<feature version='${mdsal.version}'>odl-mdsal-broker</feature>
<feature version='${sal.version}'>odl-adsal-core</feature>
+ <bundle>mvn:org.opendaylight.alto/service-api-rfc7285/${project.version}</bundle>
<configfile finalname='${configfile.directory}/alto-simple.xml'>mvn:org.opendaylight.alto/simple-impl/${project.version}/xml/config</configfile>
<bundle>mvn:org.opendaylight.alto/simple-impl/${project.version}</bundle>
</feature>
<feature>war</feature>
<feature version='${project.version}'>odl-alto-commons</feature>
<feature version='${project.version}'>odl-alto-simple</feature>
- <bundle>mvn:org.opendaylight.alto/service-api-rfc7285/${project.version}</bundle>
<bundle>mvn:org.opendaylight.alto/alto-northbound/${project.version}</bundle>
</feature>
<feature name='odl-alto-integration-test' version='${project.version}' description='Opendaylight :: alto :: IntegrationTest'>
- <feature>odl-restconf-all</feature>
- <feature version='${project.version}'>odl-alto-hosttracker</feature>
- <feature version='${project.version}'>odl-alto-northbound</feature>
- <feature version='${project.version}'>odl-alto-manager</feature>
+ <feature version='${project.version}'>odl-alto-all</feature>
</feature>
</features>