--- /dev/null
+package org.opendaylight.alto.commons.types.converter;
+import java.util.LinkedList;
+
+import org.opendaylight.alto.commons.helper.Converter;
+import org.opendaylight.alto.commons.types.model150404.ModelCostMap;
+import org.opendaylight.alto.commons.types.model150404.ModelCostMapData;
+import org.opendaylight.alto.commons.types.rfc7285.RFC7285CostMap;
+import org.opendaylight.alto.commons.types.rfc7285.RFC7285JSONMapper;
+
+public class RFC2ModelCostMapConverter
+ extends Converter<RFC7285CostMap, ModelCostMap>{
+
+ protected RFC2ModelCostMapMetaConverter metaConv = new RFC2ModelCostMapMetaConverter();
+ protected RFC2ModelCostMapDataConverter dataConv = new RFC2ModelCostMapDataConverter();
+
+ public RFC2ModelCostMapConverter() {
+ }
+
+ public RFC2ModelCostMapConverter(RFC7285CostMap _in) {
+ super(_in);
+ }
+
+ @Override
+ protected Object _convert() {
+ ModelCostMap out = new ModelCostMap();
+ out.rid = getCostMapResourceId(in());
+ out.tag = "";
+
+ out.meta = metaConv.convert(in().meta);
+ out.map = new LinkedList<ModelCostMapData>();
+ for (String src : in().map.keySet()) {
+ ModelCostMapData data = new ModelCostMapData();
+ data.src = src;
+ data.dstCosts = dataConv.convert(in().map.get(src));
+ out.map.add(data);
+ }
+ return out;
+ }
+
+ public static void main(String[] args) {
+ String rfcCostMap = "{\"meta\":{\"dependent-vtags\":[{\"resource-id\":\"my-default-network-map\",\"tag\":\"3ee2cb7e8d63d9fab71b9b34cbf764436315542e\"}],\"cost-type\":{\"cost-mode\":\"numerical\",\"cost-metric\":\"routingcost\"}},\"cost-map\":{\"PID1\":{\"PID1\":1,\"PID2\":5,\"PID3\":10},\"PID2\":{\"PID1\":5,\"PID2\":1,\"PID3\":15},\"PID3\":{\"PID1\":20,\"PID2\":15}}}";
+ try {
+ RFC7285JSONMapper mapper = new RFC7285JSONMapper();
+ RFC7285CostMap costMap = mapper.asCostMap(rfcCostMap);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ private String getCostMapResourceId(RFC7285CostMap costMap) {
+ String networkMapRID = costMap.meta.netmap_tags.get(0).rid;
+ String costMetric = costMap.meta.costType.metric;
+ String costMode = costMap.meta.costType.mode;
+ return networkMapRID + "-" + costMetric + "-" + costMode;
+ }
+}
--- /dev/null
+package org.opendaylight.alto.commons.types.converter;
+
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+import org.opendaylight.alto.commons.helper.Converter;
+import org.opendaylight.alto.commons.types.model150404.ModelDstCosts;
+
+public class RFC2ModelCostMapDataConverter
+ extends Converter<Map<String, Object>, List<ModelDstCosts>> {
+
+ public RFC2ModelCostMapDataConverter() {
+ }
+
+ public RFC2ModelCostMapDataConverter(Map<String, Object> _in) {
+ super(_in);
+ }
+
+ @Override
+ protected Object _convert() {
+ List<ModelDstCosts> dstCostsList = new LinkedList<ModelDstCosts>();
+ for (String dst : in().keySet()) {
+ ModelDstCosts dstCosts = new ModelDstCosts();
+ dstCosts.dst = dst;
+ dstCosts.cost = in().get(dst);
+ dstCostsList.add(dstCosts);
+ }
+ return dstCostsList;
+ }
+
+}
--- /dev/null
+package org.opendaylight.alto.commons.types.converter;
+
+import org.opendaylight.alto.commons.helper.Converter;
+import org.opendaylight.alto.commons.types.model150404.ModelCostMapMeta;
+import org.opendaylight.alto.commons.types.model150404.ModelDependentVtag;
+import org.opendaylight.alto.commons.types.rfc7285.RFC7285CostMap;
+
+public class RFC2ModelCostMapMetaConverter
+ extends Converter<RFC7285CostMap.Meta, ModelCostMapMeta>{
+
+ public RFC2ModelCostMapMetaConverter() {
+ }
+
+ public RFC2ModelCostMapMetaConverter(RFC7285CostMap.Meta _in) {
+ super(_in);
+ }
+
+ @Override
+ protected Object _convert() {
+ ModelCostMapMeta modelMeta = new ModelCostMapMeta();
+
+ ModelDependentVtag dvtag = new ModelDependentVtag();
+ dvtag.rid = in().netmap_tags.get(0).rid;
+ dvtag.vTag = in().netmap_tags.get(0).tag;
+ modelMeta.dependentVtags.add(dvtag);
+
+ modelMeta.costType.costMetric = in().costType.metric;
+ modelMeta.costType.costMode = in().costType.mode;
+ modelMeta.costType.description = in().costType.description;
+
+ return modelMeta;
+ }
+
+}
--- /dev/null
+package org.opendaylight.alto.commons.types.converter;
+
+import java.util.LinkedList;
+import java.util.Map;
+
+import org.opendaylight.alto.commons.helper.Converter;
+import org.opendaylight.alto.commons.types.model150404.ModelDependentVtag;
+import org.opendaylight.alto.commons.types.model150404.ModelEndpointProperties;
+import org.opendaylight.alto.commons.types.model150404.ModelEndpointPropertyMap;
+import org.opendaylight.alto.commons.types.model150404.ModelEndpointPropertyMeta;
+import org.opendaylight.alto.commons.types.model150404.ModelProperties;
+import org.opendaylight.alto.commons.types.rfc7285.RFC7285EndpointPropertyMap;
+
+public class RFC2ModelEndpointPropMapConverter
+ extends Converter<RFC7285EndpointPropertyMap, ModelEndpointPropertyMap> {
+
+ @Override
+ protected Object _convert() {
+ ModelEndpointPropertyMap out = new ModelEndpointPropertyMap();
+ out.endpointPropertyMeta = convertMeta(in().meta);
+
+ out.properties = new LinkedList<ModelEndpointProperties>();
+
+ for (String endpoint : in().map.keySet()) {
+ out.properties.add(convertEndpointProperty(endpoint, in().map.get(endpoint)));
+ }
+ return out;
+ }
+
+ private ModelEndpointPropertyMeta convertMeta(RFC7285EndpointPropertyMap.Meta meta) {
+ ModelEndpointPropertyMeta endpointPropertyMeta = new ModelEndpointPropertyMeta();
+
+ endpointPropertyMeta.dependentVtags = new LinkedList<ModelDependentVtag>();
+ ModelDependentVtag dependentVtag = new ModelDependentVtag();
+ dependentVtag.rid = meta.netmap_tags.get(0).rid;
+ dependentVtag.vTag = meta.netmap_tags.get(0).tag;
+
+ endpointPropertyMeta.dependentVtags.add(dependentVtag);
+ return endpointPropertyMeta;
+ }
+
+ private ModelEndpointProperties
+ convertEndpointProperty(String endpoint, Map<String, String> property) {
+ ModelEndpointProperties endpointProperty = new ModelEndpointProperties();
+ endpointProperty.endpoint = endpoint;
+ endpointProperty.properties = new LinkedList<ModelProperties>();
+ for (String propertyType : property.keySet()) {
+ endpointProperty.properties.add(convertProperty(propertyType, property.get(propertyType)));
+ }
+ return endpointProperty;
+ }
+
+ private ModelProperties convertProperty(String propertyType, String propertyValue) {
+ ModelProperties property = new ModelProperties();
+ property.propertyType = propertyType;
+ property.propertyValue = propertyValue;
+ return property;
+ }
+
+}
@Override
public Object _convert() {
ModelNetworkMap out = new ModelNetworkMap();
- out.setJSONResourceId(in().meta.vtag.rid);
- out.setJSONTag(in().meta.vtag.tag);
- out.setJSONMap(conv.convert(in().map));
+ out.rid = in().meta.vtag.rid;
+ out.tag = in().meta.vtag.tag;
+ out.map = conv.convert(in().map);
return out;
}
}
--- /dev/null
+package org.opendaylight.alto.commons.types.model150404;
+
+import java.util.LinkedList;
+import java.util.List;
+
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.CostMap;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.cost.map.Map;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.cost.map.Meta;
+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.TagString;
+import org.opendaylight.yangtools.yang.binding.DataContainer;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class ModelCostMap implements CostMap {
+
+ @JsonProperty("alto-service:resource-id")
+ public String rid = null;
+
+ @JsonProperty("alto-service:tag")
+ public String tag = null;
+
+ @JsonProperty("alto-service:meta")
+ public ModelCostMapMeta meta = null;
+
+ @JsonProperty("alto-service:map")
+ public List<ModelCostMapData> map = new LinkedList<ModelCostMapData>();
+
+ @JsonIgnore
+ @Override
+ public Class<? extends DataContainer> getImplementedInterface() {
+ return CostMap.class;
+ }
+
+ @JsonIgnore
+ @Override
+ public ResourceId getResourceId() {
+ return new ResourceId(rid);
+ }
+
+ @JsonIgnore
+ @Override
+ public TagString getTag() {
+ return new TagString(tag);
+ }
+
+ @JsonIgnore
+ @Override
+ public Meta getMeta() {
+ return meta;
+ }
+
+ @JsonIgnore
+ @Override
+ public List<Map> getMap() {
+ return new LinkedList<Map>(map);
+ }
+
+}
--- /dev/null
+package org.opendaylight.alto.commons.types.model150404;
+
+import java.util.LinkedList;
+import java.util.List;
+
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.cost.map.Map;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.cost.map.MapKey;
+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.PidName;
+import org.opendaylight.yangtools.yang.binding.Augmentation;
+import org.opendaylight.yangtools.yang.binding.DataContainer;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class ModelCostMapData implements Map {
+
+ @JsonProperty("alto-service:src")
+ public String src = null;
+
+ @JsonProperty("alto-service:dst-costs")
+ public List<ModelDstCosts> dstCosts = new LinkedList<ModelDstCosts>();
+
+ @JsonIgnore
+ @Override
+ public Class<? extends DataContainer> getImplementedInterface() {
+ return Map.class;
+ }
+
+ @JsonIgnore
+ @Override
+ public <E extends Augmentation<Map>> E getAugmentation(Class<E> arg0) {
+ return null;
+ }
+
+ @JsonIgnore
+ @Override
+ public PidName getSrc() {
+ return new PidName(src);
+ }
+
+ @JsonIgnore
+ @Override
+ public List<DstCosts> getDstCosts() {
+ return new LinkedList<DstCosts>(dstCosts);
+ }
+
+ @JsonIgnore
+ @Override
+ public MapKey getKey() {
+ return new MapKey(getSrc());
+ }
+
+}
--- /dev/null
+package org.opendaylight.alto.commons.types.model150404;
+
+import java.util.LinkedList;
+import java.util.List;
+
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.cost.map.Meta;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.cost.map.meta.CostType;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.dependent.vtags.DependentVtags;
+import org.opendaylight.yangtools.yang.binding.Augmentation;
+import org.opendaylight.yangtools.yang.binding.DataContainer;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class ModelCostMapMeta implements Meta {
+
+ @JsonProperty("alto-service:dependent-vtags")
+ public List<ModelDependentVtag> dependentVtags = new LinkedList<ModelDependentVtag>();
+
+ @JsonProperty("alto-service:cost-type")
+ public ModelCostType costType = null;
+
+ @JsonIgnore
+ @Override
+ public Class<? extends DataContainer> getImplementedInterface() {
+ return Meta.class;
+ }
+
+ @JsonIgnore
+ @Override
+ public List<DependentVtags> getDependentVtags() {
+ return new LinkedList<DependentVtags>(dependentVtags);
+ }
+
+ @JsonIgnore
+ @Override
+ public CostType getCostType() {
+ return costType;
+ }
+
+ @JsonIgnore
+ @Override
+ public <E extends Augmentation<Meta>> E getAugmentation(Class<E> arg0) {
+ return null;
+ }
+
+}
--- /dev/null
+package org.opendaylight.alto.commons.types.model150404;
+
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.CostMetric;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.CostMetricBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.CostMode;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.cost.map.meta.CostType;
+import org.opendaylight.yangtools.yang.binding.Augmentation;
+import org.opendaylight.yangtools.yang.binding.DataContainer;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class ModelCostType implements CostType {
+
+ public static final String NUMERICAL = "Numerical";
+ public static final String Ordinal = "Ordinal";
+
+ @JsonProperty("alto-service:cost-mode")
+ public String costMode = null;
+
+ @JsonProperty("alto-service:cost-metric")
+ public String costMetric = null;
+
+ @JsonProperty("alto-service:description")
+ public String description = null;
+
+ @Override
+ public Class<? extends DataContainer> getImplementedInterface() {
+ return CostType.class;
+ }
+
+ @JsonIgnore
+ @Override
+ public <E extends Augmentation<CostType>> E getAugmentation(Class<E> arg0) {
+ return null;
+ }
+
+ @JsonIgnore
+ @Override
+ public CostMode getCostMode() {
+ switch(costMode) {
+ case NUMERICAL:
+ return CostMode.Numerical;
+ case Ordinal:
+ return CostMode.Ordinal;
+ default:
+ throw new RuntimeException("Non-Supported cost mode.");
+ }
+ }
+
+ @JsonIgnore
+ @Override
+ public CostMetric getCostMetric() {
+ return CostMetricBuilder.getDefaultInstance(costMetric);
+ }
+
+ @JsonIgnore
+ @Override
+ public String getDescription() {
+ return description;
+ }
+
+}
--- /dev/null
+package org.opendaylight.alto.commons.types.model150404;
+
+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.TagString;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.dependent.vtags.DependentVtags;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.dependent.vtags.DependentVtagsKey;
+import org.opendaylight.yangtools.yang.binding.Augmentation;
+import org.opendaylight.yangtools.yang.binding.DataContainer;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class ModelDependentVtag implements DependentVtags {
+
+ @JsonProperty("alto-service:resource-id")
+ public String rid = null;
+
+ @JsonProperty("alto-service:tag")
+ public String vTag = null;
+
+ @JsonIgnore
+ @Override
+ public Class<? extends DataContainer> getImplementedInterface() {
+ return DependentVtags.class;
+ }
+
+ @JsonIgnore
+ @Override
+ public <E extends Augmentation<DependentVtags>> E getAugmentation(
+ Class<E> arg0) {
+ return null;
+ }
+
+ @JsonIgnore
+ @Override
+ public ResourceId getResourceId() {
+ return new ResourceId(rid);
+ }
+
+ @JsonIgnore
+ @Override
+ public TagString getTag() {
+ return new TagString(vTag);
+ }
+
+ @JsonIgnore
+ @Override
+ public DependentVtagsKey getKey() {
+ return new DependentVtagsKey(getResourceId());
+ }
+
+}
--- /dev/null
+package org.opendaylight.alto.commons.types.model150404;
+
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.cost.map.map.DstCosts;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.cost.map.map.DstCostsKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.PidName;
+import org.opendaylight.yangtools.yang.binding.Augmentation;
+import org.opendaylight.yangtools.yang.binding.DataContainer;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class ModelDstCosts implements DstCosts {
+
+ @JsonProperty("alto-service:dst")
+ public String dst = null;
+
+ @JsonProperty("alto-service:cost")
+ public Object cost = null;
+
+ @JsonIgnore
+ @Override
+ public Class<? extends DataContainer> getImplementedInterface() {
+ return DstCosts.class;
+ }
+
+ @JsonIgnore
+ @Override
+ public <E extends Augmentation<DstCosts>> E getAugmentation(Class<E> arg0) {
+ return null;
+ }
+
+ @JsonIgnore
+ @Override
+ public PidName getDst() {
+ return new PidName(dst);
+ }
+
+ @JsonIgnore
+ @Override
+ public DstCostsKey getKey() {
+ return new DstCostsKey(getDst());
+ }
+
+}
--- /dev/null
+package org.opendaylight.alto.commons.types.model150404;
+
+import java.util.LinkedList;
+import java.util.List;
+
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.TypedEndpointAddress;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.endpoint.property.map.data.EndpointProperties;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.endpoint.property.map.data.EndpointPropertiesKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.endpoint.property.map.data.endpoint.properties.Properties;
+import org.opendaylight.yangtools.yang.binding.Augmentation;
+import org.opendaylight.yangtools.yang.binding.DataContainer;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class ModelEndpointProperties implements EndpointProperties {
+
+ @JsonProperty("alto-service:endpoint")
+ public String endpoint = null;
+
+ @JsonProperty("alto-service:properties")
+ public List<ModelProperties> properties = new LinkedList<ModelProperties>();
+
+ @JsonIgnore
+ @Override
+ public Class<? extends DataContainer> getImplementedInterface() {
+ return EndpointProperties.class;
+ }
+
+ @JsonIgnore
+ @Override
+ public <E extends Augmentation<EndpointProperties>> E getAugmentation(
+ Class<E> arg0) {
+ return null;
+ }
+
+ @JsonIgnore
+ @Override
+ public TypedEndpointAddress getEndpoint() {
+ return new TypedEndpointAddress(endpoint.toCharArray());
+ }
+
+ @JsonIgnore
+ @Override
+ public List<Properties> getProperties() {
+ return new LinkedList<Properties>(properties);
+ }
+
+ @JsonIgnore
+ @Override
+ public EndpointPropertiesKey getKey() {
+ return new EndpointPropertiesKey(getEndpoint());
+ }
+
+}
--- /dev/null
+package org.opendaylight.alto.commons.types.model150404;
+
+import java.util.LinkedList;
+import java.util.List;
+
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.EndpointPropertyMap;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.endpoint.property.map.Meta;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.endpoint.property.map.data.EndpointProperties;
+import org.opendaylight.yangtools.yang.binding.DataContainer;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class ModelEndpointPropertyMap implements EndpointPropertyMap {
+
+ @JsonProperty("alto-service:meta")
+ public ModelEndpointPropertyMeta endpointPropertyMeta = null;
+
+ @JsonProperty("alto-service:endpoint-properties")
+ public List<ModelEndpointProperties> properties = new LinkedList<ModelEndpointProperties>();
+
+ @JsonIgnore
+ @Override
+ public Class<? extends DataContainer> getImplementedInterface() {
+ return EndpointPropertyMap.class;
+ }
+
+ @JsonIgnore
+ @Override
+ public List<EndpointProperties> getEndpointProperties() {
+ return new LinkedList<EndpointProperties>(properties);
+ }
+
+ @JsonIgnore
+ @Override
+ public Meta getMeta() {
+ return endpointPropertyMeta;
+ }
+
+}
--- /dev/null
+package org.opendaylight.alto.commons.types.model150404;
+
+import java.util.LinkedList;
+import java.util.List;
+
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.endpoint.property.map.Meta;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.dependent.vtags.DependentVtags;
+import org.opendaylight.yangtools.yang.binding.Augmentation;
+import org.opendaylight.yangtools.yang.binding.DataContainer;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class ModelEndpointPropertyMeta implements Meta {
+
+ @JsonProperty("alto-service:dependent-vtags")
+ public List<ModelDependentVtag> dependentVtags = new LinkedList<ModelDependentVtag>();
+
+ @Override
+ public Class<? extends DataContainer> getImplementedInterface() {
+ return Meta.class;
+ }
+
+ @Override
+ public List<DependentVtags> getDependentVtags() {
+ return new LinkedList<DependentVtags>(dependentVtags);
+ }
+
+ @Override
+ public <E extends Augmentation<Meta>> E getAugmentation(Class<E> arg0) {
+ return null;
+ }
+}
.disable(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES);
public ModelNetworkMap asNetworkMap(String json) throws Exception {
- return mapper.readValue(json, ModelNetworkMap.class);
+ return mapper.readValue(json, ModelNetworkMap.class);
+ }
+
+ public ModelCostMap asCostMap(String json) throws Exception {
+ return mapper.readValue(json, ModelCostMap.class);
+ }
+
+ public ModelEndpointPropertyMap asEndpointPropMap(String json) throws Exception {
+ return mapper.readValue(json, ModelEndpointPropertyMap.class);
}
public ModelEndpoint asModelEndpoint(String json) throws IOException {
public class ModelNetworkMap implements NetworkMap {
- @JsonIgnore
- protected ResourceId rid = null;
-
- @JsonIgnore
- protected TagString tag = null;
-
- @JsonIgnore
- protected List<Map> data = new LinkedList<Map>();
+
+ @JsonProperty("alto-service:resource-id")
+ public String rid = null;
- public ModelNetworkMap() {
- }
+ @JsonProperty("alto-service:tag")
+ public String tag = null;
- public ModelNetworkMap(NetworkMap map) {
- this.rid = map.getResourceId();
- this.tag = map.getTag();
- this.setMap(map.getMap());
- }
+ @JsonProperty("alto-service:map")
+ public List<ModelEndpoint> map = new LinkedList<ModelEndpoint>();
@JsonIgnore
@Override
@JsonIgnore
@Override
public ResourceId getResourceId() {
- return rid;
- }
-
- @JsonProperty("alto-service:resource-id")
- public String getJSONResourceId() {
- return rid.getValue();
- }
-
- @JsonProperty("alto-service:resource-id")
- public void setJSONResourceId(String rid) {
- this.rid = new ResourceId(rid);
+ return new ResourceId(rid);
}
@JsonIgnore
@Override
public TagString getTag() {
- return tag;
- }
-
- @JsonProperty("alto-service:tag")
- public String getJSONTag() {
- return tag.getValue();
- }
-
- @JsonProperty("alto-service:tag")
- public void setJSONTag(String tag) {
- this.tag = new TagString(tag);
+ return new TagString(tag);
}
@JsonIgnore
@Override
public List<Map> getMap() {
- return data;
- }
-
- @JsonIgnore
- public void setMap(List<Map> data) {
- this.data = new LinkedList<Map>(data);
- }
-
- @JsonProperty("alto-service:map")
- public List<Map> getJSONMap() {
- return data;
- }
-
- @JsonProperty("alto-service:map")
- public void setJSONMap(List<ModelEndpoint> data) {
- this.data = new LinkedList<Map>(data);
+ return new LinkedList<Map>(map);
}
}
--- /dev/null
+package org.opendaylight.alto.commons.types.model150404;
+
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.EndpointPropertyType;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.EndpointPropertyValue;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.endpoint.property.map.data.endpoint.properties.Properties;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.endpoint.property.map.data.endpoint.properties.PropertiesKey;
+import org.opendaylight.yangtools.yang.binding.Augmentation;
+import org.opendaylight.yangtools.yang.binding.DataContainer;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class ModelProperties implements Properties {
+
+ @JsonProperty("alto-service:property-type")
+ public String propertyType = null;
+
+ @JsonProperty("alto-service:property")
+ public String propertyValue = null;
+
+ @JsonIgnore
+ @Override
+ public Class<? extends DataContainer> getImplementedInterface() {
+ return Properties.class;
+ }
+
+ @JsonIgnore
+ @Override
+ public <E extends Augmentation<Properties>> E getAugmentation(Class<E> arg0) {
+ return null;
+ }
+
+ @JsonIgnore
+ @Override
+ public EndpointPropertyType getPropertyType() {
+ return new EndpointPropertyType(propertyType.toCharArray());
+ }
+
+ @JsonIgnore
+ @Override
+ public EndpointPropertyValue getProperty() {
+ return new EndpointPropertyValue(propertyValue);
+ }
+
+ @JsonIgnore
+ @Override
+ public PropertiesKey getKey() {
+ return new PropertiesKey(getPropertyType());
+ }
+
+}
--- /dev/null
+package org.opendaylight.alto.commons.types.rfc7285;
+
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class RFC7285EndpointPropertyMap {
+
+ public static class Meta extends Extensible {
+ @JsonProperty("dependent-vtags")
+ public List<RFC7285VersionTag> netmap_tags;
+ }
+
+ @JsonProperty("meta")
+ public Meta meta;
+
+ @JsonProperty("endpoint-properties")
+ public Map<String, Map<String, String>> map
+ = new LinkedHashMap<String, Map<String, String>>();
+}
public RFC7285VersionTag asVersionTag(String json) throws Exception {
return mapper.readValue(json, RFC7285VersionTag.class);
}
+
+ public RFC7285EndpointPropertyMap asEndpointPropMap(String json) throws Exception {
+ return mapper.readValue(json, RFC7285EndpointPropertyMap.class);
+ }
public String asJSON(Object obj) throws Exception {
return mapper.writeValueAsString(obj);
package org.opendaylight.alto.manager;
-import java.io.IOException;
-
import org.apache.felix.gogo.commands.Argument;
import org.apache.felix.gogo.commands.Command;
+import org.opendaylight.alto.commons.types.converter.RFC2ModelCostMapConverter;
+import org.opendaylight.alto.commons.types.converter.RFC2ModelEndpointPropMapConverter;
import org.opendaylight.alto.commons.types.converter.RFC2ModelNetworkMapConverter;
+import org.opendaylight.alto.commons.types.model150404.ModelCostMap;
+import org.opendaylight.alto.commons.types.model150404.ModelEndpointPropertyMap;
import org.opendaylight.alto.commons.types.model150404.ModelJSONMapper;
-import org.opendaylight.alto.commons.types.rfc7285.RFC7285CostMap;
+import org.opendaylight.alto.commons.types.model150404.ModelNetworkMap;
import org.opendaylight.alto.commons.types.rfc7285.RFC7285JSONMapper;
-import org.opendaylight.alto.commons.types.rfc7285.RFC7285NetworkMap;
+import org.opendaylight.alto.manager.AltoManagerConstants.MAP_FORMAT_TYPE;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private RFC7285JSONMapper rfcMapper = new RFC7285JSONMapper();
private ModelJSONMapper modelMapper = new ModelJSONMapper();
- private RFC2ModelNetworkMapConverter converter = new RFC2ModelNetworkMapConverter();
+ private RFC2ModelNetworkMapConverter networkMapConverter = new RFC2ModelNetworkMapConverter();
+ private RFC2ModelCostMapConverter costMapConverter = new RFC2ModelCostMapConverter();
+ private RFC2ModelEndpointPropMapConverter endpointPropConverter = new RFC2ModelEndpointPropMapConverter();
+
private String data;
+ private MAP_FORMAT_TYPE format = MAP_FORMAT_TYPE.YANG;
@Argument(index = 0, name = "resource-type", description = "Resource Type", required = true, multiValued = false)
String resourceType = null;
private void putNetworkMap() throws Exception {
log.info("Loading network map from " + this.resourceFile);
- RFC7285NetworkMap rfcNetworkMap = rfcMapper.asNetworkMap(readFromFile(resourceFile));
- data = createNetworkMapData(rfcNetworkMap);
- putMap(AltoManagerConstants.NETWORK_MAP_URL, rfcNetworkMap.meta.vtag.rid);
+ ModelNetworkMap networkMap = getYangNetworkMap(readFromFile(resourceFile));
+ data = modelMapper.asJSON(networkMap);
+ putMap(AltoManagerConstants.NETWORK_MAP_URL, networkMap.rid);
}
- private String createNetworkMapData(RFC7285NetworkMap rfcNetworkMap) throws Exception {
- String networkMapJson = modelMapper.asJSON(converter.convert(rfcNetworkMap));
- return "{\"alto-service:network-map\":[" + networkMapJson + "]}";
+ private ModelNetworkMap getYangNetworkMap(String data) throws Exception {
+ if (MAP_FORMAT_TYPE.RFC.equals(format)) {
+ return networkMapConverter.convert(rfcMapper.asNetworkMap(data));
+ }
+ return modelMapper.asNetworkMap(data);
}
private void putCostMap() throws Exception {
log.info("Loading cost map from " + this.resourceFile);
- RFC7285CostMap costMap = rfcMapper.asCostMap(readFromFile(resourceFile));
- String resourceId = getCostMapResourceId(costMap);
- //TODO: transform it to yang format json
- data = "";
- putMap(AltoManagerConstants.COST_MAP_URL, resourceId);
+ ModelCostMap costMap = getYangCostMap(data);
+ data = modelMapper.asJSON(costMap);
+ putMap(AltoManagerConstants.COST_MAP_URL, costMap.rid);
+ }
+
+ private ModelCostMap getYangCostMap(String data) throws Exception {
+ if (MAP_FORMAT_TYPE.RFC.equals(format)) {
+ return costMapConverter.convert(rfcMapper.asCostMap(data));
+ }
+ return modelMapper.asCostMap(data);
}
- private void putEndpointPropertyMap() throws IOException {
+ private void putEndpointPropertyMap() throws Exception {
log.info("Loading endpoint property map from " + this.resourceFile);
- //TODO: get RFC7285EndpointPropertyMap object and transform it to yang format json
- data = "";
- putMap(AltoManagerConstants.ENDPOINT_PROPERTY_MAP_URL, AltoManagerConstants.ENDPOINT_PROPERTY_MAP_NAME);
+ ModelEndpointPropertyMap endpointPropMap = getYangEndpointPropMap(readFromFile(resourceFile));
+ data = modelMapper.asJSON(endpointPropMap);
+ putMap(AltoManagerConstants.RESOURCES_URL, AltoManagerConstants.ENDPOINT_PROPERTY_MAP_NODE);
}
- private void putMap(String baseUrl, String resourceId) throws IOException {
+ private ModelEndpointPropertyMap getYangEndpointPropMap(String data) throws Exception {
+ if (MAP_FORMAT_TYPE.RFC.equals(format)) {
+ endpointPropConverter.convert(rfcMapper.asEndpointPropMap(data));
+ }
+ return modelMapper.asEndpointPropMap(data);
+ }
+
+ private void putMap(String baseUrl, String resourceId) throws Exception {
if (resourceId == null) {
log.info("Cannot parse resourceId. Aborting");
return;
}
- httpPut(baseUrl + resourceId, data);
+ httpPut(baseUrl + resourceId, wrapdata());
}
- private String getCostMapResourceId(RFC7285CostMap costMap) throws Exception {
- String networkMapRID = costMap.meta.netmap_tags.get(0).rid;
- String costMetric = costMap.meta.costType.metric;
- String costMode = costMap.meta.costType.mode;
- return networkMapRID + AltoManagerConstants.DELIMETER + costMetric
- + AltoManagerConstants.DELIMETER + costMode;
+ private String wrapdata() throws Exception {
+ if (endpointPropertyMapType().equals(resourceType)) {
+ return "{\"alto-service:resourceType\":" + data + "}";
+ } else {
+ return "{\"alto-service:resourceType\":[" + data + "]}";
+ }
}
}
private boolean deleteEndpointPropertyMap() throws IOException {
log.info("Deleting endpoint property map " + this.resourceId);
- return httpDelete(AltoManagerConstants.ENDPOINT_PROPERTY_MAP_URL + resourceId);
+ return httpDelete(AltoManagerConstants.RESOURCES_URL + AltoManagerConstants.ENDPOINT_PROPERTY_MAP_NODE);
}
private boolean deleteCostMap() throws IOException {
public static final String RESOURCES_URL = HOST + RESOURCES_NODE + "/";
public static final String NETWORK_MAP_URL = RESOURCES_URL + NETWORK_MAPS_NODE + "/" + NETWORK_MAP_NODE + "/";
public static final String COST_MAP_URL = RESOURCES_URL + COST_MAPS_NODE + "/" + COST_MAP_NODE + "/";
- public static final String ENDPOINT_PROPERTY_MAP_URL = RESOURCES_URL + ENDPOINT_PROPERTY_MAP_NODE + "/";
public static final String IRD_DEFAULT_NETWORK_MAP_URL = RESOURCES_URL + IRD_NODE + "/" + META_NODE + "/" + DEFAULT_NETWORK_MAP_NODE + "/";
- public static final String ENDPOINT_PROPERTY_MAP_NAME = "endpoint-property-map";
public static final String DEFAULT_NETWORK_MAP_PROPERTY = "default-network-map";
public static final String DELIMETER = "-";
public static enum SERVICE_TYPE{
NETWORK_MAP, COST_MAP, ENDPOINT_PROPERTY_MAP
}
+
+ public static enum MAP_FORMAT_TYPE {
+ YANG, RFC
+ }
}
\ No newline at end of file
public class EndpointPropertyTypeBuilder {
public static EndpointPropertyType getDefaultInstance(java.lang.String defaultValue) {
- throw new java.lang.UnsupportedOperationException("Not yet implemented");
+ if (defaultValue.contains(".")) {
+ return new EndpointPropertyType(new ResourceSpecificEndpointProperty(defaultValue));
+ } else {
+ return new EndpointPropertyType(new GlobalEndpointProperty(defaultValue.toCharArray()));
+ }
}
}
package org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.GlobalEndpointProperty.Enumeration;
+
/**
* The purpose of generated class in src/main/java for Union types is to create new instances of unions from a string representation.
public class GlobalEndpointPropertyBuilder {
public static GlobalEndpointProperty getDefaultInstance(java.lang.String defaultValue) {
- throw new java.lang.UnsupportedOperationException("Not yet implemented");
+ if ("Pid".equals(defaultValue)) {
+ return new GlobalEndpointProperty(Enumeration.Pid);
+ } else {
+ return new GlobalEndpointProperty(defaultValue);
+ }
}
}
public class TypedEndpointAddressBuilder {
public static TypedEndpointAddress getDefaultInstance(java.lang.String defaultValue) {
- throw new java.lang.UnsupportedOperationException("Not yet implemented");
+ if (defaultValue.startsWith("ipv4")) {
+ return new TypedEndpointAddress(new TypedIpv4Address(defaultValue));
+ } else if (defaultValue.startsWith("ipv6")) {
+ return new TypedEndpointAddress(new TypedIpv6Address(defaultValue));
+ }
+ throw new java.lang.UnsupportedOperationException("Wrong TypedEndpointAddress type");
}
}