happy holiday and everything is in progress 31/17831/1
authordongshu <dongshu@factual.com>
Tue, 7 Apr 2015 11:05:26 +0000 (07:05 -0400)
committerdongshu <dongshu@factual.com>
Tue, 7 Apr 2015 11:05:26 +0000 (07:05 -0400)
Change-Id: If2c54d7321994d339a0a8b955d14fa8c8c164376
Signed-off-by: dongshu <dongshu@factual.com>
33 files changed:
alto-commons/pom.xml
alto-commons/src/main/java/org/opendaylight/alto/commons/types/mapper/AltoYangMapper.java [new file with mode: 0644]
alto-commons/src/main/java/org/opendaylight/alto/commons/types/mapper/JSONMapper.java [moved from alto-commons/src/main/java/org/opendaylight/alto/commons/types/rfc7285/JSONMapper.java with 77% similarity]
alto-commons/src/main/java/org/opendaylight/alto/commons/types/rfc7285/AltoNetworkMap.java [new file with mode: 0644]
alto-commons/src/main/java/org/opendaylight/alto/commons/types/rfc7285/Endpoint.java
alto-commons/src/main/java/org/opendaylight/alto/commons/types/rfc7285/NetworkMap.java [deleted file]
alto-model/src/main/yang/alto-service-types.yang [changed mode: 0644->0755]
alto-model/src/main/yang/alto-service.yang [changed mode: 0644->0755]
alto-northbound/pom.xml
alto-northbound/src/main/java/org/opendaylight/alto/northbound/AltoNorthbound.java
alto-northbound/src/main/java/org/opendaylight/alto/northbound/FakeAltoService.java [deleted file]
alto-provider/pom.xml
alto-provider/src/main/config/default-config.xml [deleted file]
alto-provider/src/main/config/maven-metadata-local.xml [deleted file]
alto-provider/src/main/java/org/opendaylight/alto/AltoProvider.java [deleted file]
alto-provider/src/main/java/org/opendaylight/controller/alto/provider/AltoProvider.java [new file with mode: 0644]
alto-provider/src/main/java/org/opendaylight/controller/alto/provider/FileSystemNetworkMapGenerator.java [moved from alto-services/ext/fs-map/src/main/java/org/opendaylight/alto/services/ext/fsmap/FileSystemNetworkMapGenerator.java with 86% similarity]
alto-provider/src/main/java/org/opendaylight/controller/config/yang/config/alto_provider/impl/AltoProviderModule.java
alto-provider/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/alto/provider/impl/rev141119/OpendaylightAlto.java [deleted file]
alto-provider/src/main/resources/default.networkmap [new file with mode: 0644]
alto-provider/src/main/yang-gen-sal/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/controller/config/alto/provider/impl/rev141119/AltoProviderImplService.java [deleted file]
alto-provider/src/main/yang-gen-sal/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/controller/config/alto/provider/impl/rev141119/ClearToastsMadeInput.java [deleted file]
alto-provider/src/main/yang-gen-sal/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/controller/config/alto/provider/impl/rev141119/ClearToastsMadeInputBuilder.java [deleted file]
alto-provider/src/main/yang-gen-sal/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/controller/config/alto/provider/impl/rev141119/ClearToastsMadeRpc.java [deleted file]
alto-provider/src/main/yang/alto-provider-impl.yang
alto-services/api/pom.xml [deleted file]
alto-services/api/src/main/java/org/opendaylight/alto/services/api/IRDService.java [deleted file]
alto-services/ext/pom.xml [deleted file]
alto-services/pom.xml [moved from alto-services/ext/fs-map/pom.xml with 73% similarity]
alto-services/src/main/java/org/opendaylight/alto/services/AltoService.java [new file with mode: 0644]
features/pom.xml
features/src/main/resources/features.xml
pom.xml

index 5656c0ddeb7ed186d4f81c08de5b5f8937409837..af864c480ee7885fd8812cbd50eb39c83c24fad7 100644 (file)
     <relativePath>..</relativePath>
   </parent>
 
+  <properties>
+    <checkstyle.skip>true</checkstyle.skip>
+  </properties>
+
   <groupId>org.opendaylight.alto</groupId>
-  <artifactId>commons</artifactId>
+  <artifactId>alto-commons</artifactId>
   <packaging>bundle</packaging>
 
   <build>
diff --git a/alto-commons/src/main/java/org/opendaylight/alto/commons/types/mapper/AltoYangMapper.java b/alto-commons/src/main/java/org/opendaylight/alto/commons/types/mapper/AltoYangMapper.java
new file mode 100644 (file)
index 0000000..12c8a2c
--- /dev/null
@@ -0,0 +1,91 @@
+package org.opendaylight.alto.commons.types.mapper;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.opendaylight.alto.commons.types.rfc7285.AltoNetworkMap;
+import org.opendaylight.alto.commons.types.rfc7285.Endpoint;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefix;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefixBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.network.map.Map;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.network.map.MapBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.network.map.MapKey;
+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.NetworkMapBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.resources.network.maps.NetworkMapKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.EndpointAddressType;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.PidName;
+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.endpoint.address.group.EndpointAddressGroup;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.endpoint.address.group.EndpointAddressGroupBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.endpoint.address.group.EndpointAddressGroupKey;
+
+public class AltoYangMapper {
+  public static final String IPV4 = "ipv4";
+  public static final String IPV6 = "ipv6";
+  
+  public AltoYangMapper() {};
+  
+  public NetworkMap asNetworkMap(AltoNetworkMap base) {
+    ResourceId rid = new ResourceId(base.meta.vtag.rid);
+    
+    NetworkMapBuilder networkMapBuilder =  new NetworkMapBuilder();
+    networkMapBuilder.setTag(new TagString(base.meta.vtag.tag));
+    networkMapBuilder.setResourceId(rid);
+    networkMapBuilder.setKey(new NetworkMapKey(rid));
+    networkMapBuilder.setMap(asNetworkMapDataList(base.map));
+    
+    return networkMapBuilder.build();
+  }
+
+  public List<Map> asNetworkMapDataList(java.util.Map<String, Endpoint.AddressGroup> mapData) {
+    List<Map> resultMapData = new ArrayList<Map>();
+    for (String key : mapData.keySet()) {
+      resultMapData.add(asNetworkMapData(key, mapData.get(key)));
+    }
+    return resultMapData;
+  }
+  
+  public Map asNetworkMapData(String key, Endpoint.AddressGroup data) {
+    PidName pid = new PidName(key);
+    return new MapBuilder()
+        .setPid(pid)
+        .setKey(new MapKey(pid))
+        .setEndpointAddressGroup(asEndpointAddressGroupList(data))
+        .build();
+  }
+
+  public List<EndpointAddressGroup> asEndpointAddressGroupList(Endpoint.AddressGroup addressGroup) {
+    List<EndpointAddressGroup> endpointAddressGroup = new ArrayList<EndpointAddressGroup>();
+    java.util.Map<String, Object> addressGroupMap = addressGroup.any();
+    for (String key : addressGroupMap.keySet()) {
+      endpointAddressGroup.add(constructEndpointAddressGroupElement(key, addressGroupMap));
+    }
+    return endpointAddressGroup; 
+  }
+
+  @SuppressWarnings("unchecked")
+  private EndpointAddressGroup constructEndpointAddressGroupElement(String key, java.util.Map<String, Object> addressGroupMap){  
+    EndpointAddressGroupBuilder addressGroupBuilder = new EndpointAddressGroupBuilder();
+    EndpointAddressType type = null;
+    if (IPV4.equals(key)) {
+      type = new EndpointAddressType(EndpointAddressType.Enumeration.Ipv4);
+    } else if (IPV6.equals(key)) {
+      type = new EndpointAddressType(EndpointAddressType.Enumeration.Ipv6);
+    }
+    
+    addressGroupBuilder.setAddressType(type);
+    addressGroupBuilder.setKey(new EndpointAddressGroupKey(type));
+    addressGroupBuilder.setEndpointPrefix(constructIpPrefixList((List<String>)addressGroupMap.get(key)));
+    return addressGroupBuilder.build();
+  }
+
+  private List<IpPrefix> constructIpPrefixList(List<String> ipList) {
+    List<IpPrefix> ipPrefixList = new ArrayList<IpPrefix>();
+    for (String ip : ipList) {
+      ipPrefixList.add(IpPrefixBuilder.getDefaultInstance(ip));
+    }
+    return ipPrefixList;
+  }
+}
similarity index 77%
rename from alto-commons/src/main/java/org/opendaylight/alto/commons/types/rfc7285/JSONMapper.java
rename to alto-commons/src/main/java/org/opendaylight/alto/commons/types/mapper/JSONMapper.java
index 03658e286785916ec476e44b4546cf173d02447d..246a8923257eb00cc86d3a4a412ca4e5077294a9 100644 (file)
@@ -1,8 +1,16 @@
-package org.opendaylight.alto.commons.types.rfc7285;
+package org.opendaylight.alto.commons.types.mapper;
+
+import org.opendaylight.alto.commons.types.rfc7285.AltoNetworkMap;
+import org.opendaylight.alto.commons.types.rfc7285.CostMap;
+import org.opendaylight.alto.commons.types.rfc7285.CostType;
+import org.opendaylight.alto.commons.types.rfc7285.Endpoint;
+import org.opendaylight.alto.commons.types.rfc7285.Extensible;
+import org.opendaylight.alto.commons.types.rfc7285.IRD;
+import org.opendaylight.alto.commons.types.rfc7285.VersionTag;
 
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.DeserializationFeature;
 import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.ObjectMapper;
 
 public class JSONMapper {
 
@@ -50,8 +58,8 @@ public class JSONMapper {
         return mapper.readValue(json, IRD.class);
     }
 
-    public NetworkMap asNetworkMap(String json) throws Exception {
-        return mapper.readValue(json, NetworkMap.class);
+    public AltoNetworkMap asNetworkMap(String json) throws Exception {
+        return mapper.readValue(json, AltoNetworkMap.class);
     }
 
     public VersionTag asVersionTag(String json) throws Exception {
diff --git a/alto-commons/src/main/java/org/opendaylight/alto/commons/types/rfc7285/AltoNetworkMap.java b/alto-commons/src/main/java/org/opendaylight/alto/commons/types/rfc7285/AltoNetworkMap.java
new file mode 100644 (file)
index 0000000..2b4fc56
--- /dev/null
@@ -0,0 +1,97 @@
+package org.opendaylight.alto.commons.types.rfc7285;
+
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.network.map.MapBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.network.map.MapKey;
+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.NetworkMapBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.resources.network.maps.NetworkMapKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.PidName;
+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 com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Network Map: defined in RFC 7285 section 11.2.1
+ * */
+public class AltoNetworkMap {
+
+    public AltoNetworkMap() {}
+
+    public AltoNetworkMap(NetworkMap base) {
+      this.meta = new AltoNetworkMap.Meta(
+          new VersionTag(base.getResourceId().getValue(), base.getTag().getValue()));
+      
+      this.map = new LinkedHashMap<String, Endpoint.AddressGroup>();
+      List<org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.network.map.Map> baseMaps = base.getMap();
+      for (org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.network.map.Map map : baseMaps) {
+        String key = map.getKey().getPid().getValue();
+        this.map.put(key, new Endpoint.AddressGroup(map.getEndpointAddressGroup()));
+      }
+    }
+
+    public static class Meta extends Extensible {
+        public Meta() {}
+        
+        public Meta(VersionTag vtag) {
+          this.vtag = vtag;
+        }
+
+        @JsonProperty("vtag")
+        public VersionTag vtag;
+
+    }
+
+    /**
+     * used for filtered-network-map, RFC7285 secion 11.3.1
+     * */
+    public static class Filter {
+
+        @JsonProperty("pids")
+        public List<String> pids;
+
+    }
+
+    @JsonProperty("meta")
+    public Meta meta;
+
+    @JsonProperty("network-map")
+    public Map<String, Endpoint.AddressGroup> map
+                    = new LinkedHashMap<String, Endpoint.AddressGroup>();
+    
+    public NetworkMap asYangNetworkMap() {
+      ResourceId rid = new ResourceId(this.meta.vtag.rid);
+      return new NetworkMapBuilder()
+          .setTag(new TagString(this.meta.vtag.tag))
+          .setResourceId(rid)
+          .setKey(new NetworkMapKey(rid))
+          .setMap(asNetworkMapDataList(this.map))
+          .build();
+    }
+    
+    private List<org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.network.map.Map> asNetworkMapDataList(
+        java.util.Map<String, Endpoint.AddressGroup> mapData) {
+      List<org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.network.map.Map> resultMapData = 
+          new ArrayList<org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.network.map.Map>();
+      for (String key : mapData.keySet()) {
+        resultMapData.add(asNetworkMapData(key, mapData.get(key)));
+      }
+      return resultMapData;
+    }
+    
+    private org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.network.map.Map asNetworkMapData(
+        String key, Endpoint.AddressGroup data) {
+      PidName pid = new PidName(key);
+      return new MapBuilder()
+          .setPid(pid)
+          .setKey(new MapKey(pid))
+          .setEndpointAddressGroup(data.asYangEndpointAddressGroupList())
+          .build();
+    }
+
+}
index 3bbc182e2a335017039a186f88efba1c37b8fd9a..3a99912832dcd2fa0eeea03241b42f0a55432475 100644 (file)
@@ -1,5 +1,6 @@
 package org.opendaylight.alto.commons.types.rfc7285;
 
+import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
 
 import java.util.List;
@@ -7,67 +8,145 @@ import java.util.ArrayList;
 import java.util.Map;
 import java.util.LinkedHashMap;
 
-public class Endpoint {
-
-    public static class AddressGroup extends Extensible {
-
-        @JsonProperty("ipv4")
-        public List<String> ipv4 = new ArrayList<String>();
-
-        @JsonProperty("ipv6")
-        public List<String> ipv6 = new ArrayList<String>();
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefix;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefixBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.EndpointAddressType;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.endpoint.address.group.EndpointAddressGroup;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.endpoint.address.group.EndpointAddressGroupBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.endpoint.address.group.EndpointAddressGroupKey;
 
+public class Endpoint {
+  
+  
+  public static class AddressGroup extends Extensible {
+
+    @JsonIgnore
+    public static final String IPV4_LABEL = "ipv4";
+    
+    @JsonIgnore
+    public static final String IPV6_LABEL = "ipv6";
+    
+    @JsonProperty(IPV4_LABEL)
+    public List<String> ipv4 = new ArrayList<String>();
+
+    @JsonProperty(IPV6_LABEL)
+    public List<String> ipv6 = new ArrayList<String>();
+
+    public AddressGroup() {}
+
+    public AddressGroup(List<EndpointAddressGroup> base) {
+      for (EndpointAddressGroup group : base) {
+        switch (group.getAddressType().getEnumeration()) {
+        case Ipv4:
+          this.ipv4 = asStringIpPrefixList(EndpointAddressType.Enumeration.Ipv4, group.getEndpointPrefix());
+          break;
+        case Ipv6:
+          this.ipv6 = asStringIpPrefixList(EndpointAddressType.Enumeration.Ipv6, group.getEndpointPrefix());
+          break;
+        default:
+          break;
+        }
+      }
     }
 
-    public static class PropertyRequest {
+    private List<String> asStringIpPrefixList(EndpointAddressType.Enumeration type, List<IpPrefix> base) {
+      List<String> addressPrefixes = new ArrayList<String>();
+      for (IpPrefix prefix : base) {
+        switch (type) {
+        case Ipv4:
+          addressPrefixes.add(prefix.getIpv4Prefix().getValue());
+          break;
+        case Ipv6:
+          addressPrefixes.add(prefix.getIpv6Prefix().getValue());
+          break;
+        default:
+          break;
+        }
+      }
+      return addressPrefixes;
+    }
+    
+    public List<EndpointAddressGroup> asYangEndpointAddressGroupList() {
+      List<EndpointAddressGroup> endpointAddressGroup = new ArrayList<EndpointAddressGroup>();
+      if (this.ipv4.size() > 0) {
+        endpointAddressGroup.add(asYangEndpointAddressGroup(IPV4_LABEL, this.ipv4));
+      }
+      if (this.ipv6.size() > 0) {
+        endpointAddressGroup.add(asYangEndpointAddressGroup(IPV6_LABEL, this.ipv6));
+      }
+      return endpointAddressGroup; 
+    }
 
-        @JsonProperty("properties")
-        public List<String> properties;
+    private EndpointAddressGroup asYangEndpointAddressGroup(String key, List<String> ipList){  
+      EndpointAddressType type = null;
+      if (IPV4_LABEL.equals(key)) {
+        type = new EndpointAddressType(EndpointAddressType.Enumeration.Ipv4);
+      } else if (IPV6_LABEL.equals(key)) {
+        type = new EndpointAddressType(EndpointAddressType.Enumeration.Ipv6);
+      }
+      
+      return new EndpointAddressGroupBuilder().setAddressType(type)
+          .setKey(new EndpointAddressGroupKey(type))
+          .setEndpointPrefix(asYangIpPrefix(ipList))
+          .build();
+    }
 
-        @JsonProperty("endpoints")
-        public List<String> endpoints;
+    private List<IpPrefix> asYangIpPrefix(List<String> ipList) {
+      List<IpPrefix> ipPrefixList = new ArrayList<IpPrefix>();
+      for (String ip : ipList) {
+        ipPrefixList.add(IpPrefixBuilder.getDefaultInstance(ip));
+      }
+      return ipPrefixList;
     }
+  }
 
-    public static class PropertyRespond {
+  public static class PropertyRequest {
 
-        public static class Meta extends Extensible {
+    @JsonProperty("properties")
+    public List<String> properties;
 
-            @JsonProperty("dependent-vtags")
-            public List<VersionTag> netmap_tags;
+    @JsonProperty("endpoints")
+    public List<String> endpoints;
+  }
 
-        }
+  public static class PropertyRespond {
+
+    public static class Meta extends Extensible {
 
-        @JsonProperty("meta")
-        public Meta meta;
+      @JsonProperty("dependent-vtags")
+      public List<VersionTag> netmap_tags;
 
-        @JsonProperty("endpoint-properties")
-        public Map<String, Map<String, Object>> answer
-                            = new LinkedHashMap<String, Map<String, Object>>();
     }
 
-    public static class CostRequest {
+    @JsonProperty("meta")
+    public Meta meta;
 
-        @JsonProperty("cost-type")
-        public CostType costType;
+    @JsonProperty("endpoint-properties")
+    public Map<String, Map<String, Object>> answer = new LinkedHashMap<String, Map<String, Object>>();
+  }
 
-        @JsonProperty("endpoints")
-        public QueryPairs endpoints;
-    }
+  public static class CostRequest {
 
-    public static class CostRespond {
+    @JsonProperty("cost-type")
+    public CostType costType;
 
-        public static class Meta extends Extensible {
+    @JsonProperty("endpoints")
+    public QueryPairs endpoints;
+  }
 
-            @JsonProperty("cost-type")
-            public CostType costType;
+  public static class CostRespond {
 
-        }
+    public static class Meta extends Extensible {
 
-        @JsonProperty("meta")
-        public Meta meta;
+      @JsonProperty("cost-type")
+      public CostType costType;
 
-        @JsonProperty("endpoint-cost-map")
-        public Map<String, Map<String, Object>> answer
-                            = new LinkedHashMap<String, Map<String, Object>>();
     }
+
+    @JsonProperty("meta")
+    public Meta meta;
+
+    @JsonProperty("endpoint-cost-map")
+    public Map<String, Map<String, Object>> answer = new LinkedHashMap<String, Map<String, Object>>();
+  }
 }
diff --git a/alto-commons/src/main/java/org/opendaylight/alto/commons/types/rfc7285/NetworkMap.java b/alto-commons/src/main/java/org/opendaylight/alto/commons/types/rfc7285/NetworkMap.java
deleted file mode 100644 (file)
index 0c0076f..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-package org.opendaylight.alto.commons.types.rfc7285;
-
-import java.util.List;
-import java.util.Map;
-import java.util.LinkedHashMap;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-/**
- * Network Map: defined in RFC 7285 section 11.2.1
- * */
-public class NetworkMap {
-
-    public static class Meta extends Extensible {
-
-        @JsonProperty("vtag")
-        public VersionTag vtag;
-
-    }
-
-    /**
-     * used for filtered-network-map, RFC7285 secion 11.3.1
-     * */
-    public static class Filter {
-
-        @JsonProperty("pids")
-        public List<String> pids;
-
-    }
-
-    @JsonProperty("meta")
-    public Meta meta;
-
-    @JsonProperty("network-map")
-    public Map<String, Endpoint.AddressGroup> map
-                    = new LinkedHashMap<String, Endpoint.AddressGroup>();
-
-}
old mode 100644 (file)
new mode 100755 (executable)
index ed3843be3db851d39a45990f4c604cfe9c69ca3e..e901510a780d76278740714de6f5f46de101b56c 100644 (file)
@@ -37,7 +37,8 @@
           <instructions>
             <Import-Package>
               org.opendaylight.yang.gen.v1.urn.opendaylight.alto.*,
-              org.opendaylight.alto.services.api,
+              org.opendaylight.alto.services,
+              org.opendaylight.alto.commons.*,
               org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924,
               org.apache.commons.logging,
               com.sun.jersey.spi.container.servlet,
 
     <dependency>
       <groupId>${project.groupId}</groupId>
-      <artifactId>commons</artifactId>
+      <artifactId>alto-commons</artifactId>
       <version>${project.version}</version>
     </dependency>
 
     <dependency>
       <groupId>${project.groupId}</groupId>
-      <artifactId>services.api</artifactId>
+      <artifactId>alto-services</artifactId>
       <version>${project.version}</version>
     </dependency>
 
index 2534c8afbb177321ca28fceefdc23e6901686d62..77ca10e309b07ae5d47fd1bdaa6382a12b87ec15 100644 (file)
@@ -7,40 +7,45 @@
  */
 package org.opendaylight.alto.northbound;
 
-import org.opendaylight.alto.commons.types.rfc7285.MediaType;
-import org.opendaylight.alto.services.api.IRDService;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.IRD;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
 import javax.ws.rs.GET;
 import javax.ws.rs.Path;
 import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
 import javax.ws.rs.core.Response;
 
+import org.opendaylight.alto.commons.types.mapper.JSONMapper;
+import org.opendaylight.alto.commons.types.rfc7285.MediaType;
+import org.opendaylight.alto.services.AltoService;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.resources.network.maps.NetworkMap;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.IRD;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.ResourceId;
+
 @Path("/")
 public class AltoNorthbound {
-
-    private static final Logger mLogger = LoggerFactory.getLogger(AltoNorthbound.class);
-
-    @GET
-    @Produces({MediaType.ALTO_DIRECTORY, MediaType.ALTO_ERROR})
-    public Response retrieveIRD() {
-        IRDService fas = new FakeAltoService();
-        try {
-            IRD ird = fas.getIRD();
-            return Response.ok(ird, MediaType.ALTO_DIRECTORY).build();
-        } catch (Exception e) {
-        }
-        return Response.ok("", MediaType.ALTO_ERROR).build();
+  private AltoService altoService = new AltoService();
+  private JSONMapper mapper = new JSONMapper();
+  
+  @GET
+  @Produces({ MediaType.ALTO_DIRECTORY, MediaType.ALTO_ERROR })
+  public Response retrieveIRD() {
+    try {
+      IRD ird = altoService.getIRD();
+      return Response.ok(ird, MediaType.ALTO_DIRECTORY).build();
+    } catch (Exception e) {
     }
+    return Response.ok("", MediaType.ALTO_ERROR).build();
+  }
 
-    @Path("/networkmap/{networkmap_id}")
-    @GET
-    @Produces({MediaType.ALTO_NETWORKMAP, MediaType.ALTO_ERROR})
-    public Response retrieveNetworkMap(@PathParam(value = "networkmap_id") String nmap_id) {
-        /* TODO */
-        return Response.ok("", MediaType.ALTO_ERROR).build();
+  @Path("/networkmap/{networkmap_id}")
+  @GET
+  @Produces({ MediaType.ALTO_NETWORKMAP, MediaType.ALTO_ERROR })
+  public Response retrieveNetworkMap(
+      @PathParam(value = "networkmap_id") String nmap_id) {
+    NetworkMap networkMap = altoService.getNetworkMap(new ResourceId(nmap_id));
+    try {
+      return Response.ok("", MediaType.ALTO_NETWORKMAP).build();
+    } catch (Exception e) { 
+      return Response.ok("", MediaType.ALTO_ERROR).build();
     }
+  }
 }
diff --git a/alto-northbound/src/main/java/org/opendaylight/alto/northbound/FakeAltoService.java b/alto-northbound/src/main/java/org/opendaylight/alto/northbound/FakeAltoService.java
deleted file mode 100644 (file)
index e699fe8..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-package org.opendaylight.alto.northbound;
-
-import org.opendaylight.alto.services.api.IRDService;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Uri;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.resources.IRD;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.resources.IRDBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.CostTypeName;
-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.CostMode;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.MediaType;
-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.cost.types.CostTypes;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.cost.types.CostTypesBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.cost.types.CostTypesKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.ird.MetaBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.ird.data.Resources;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.ird.data.ResourcesBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.ird.data.ResourcesKey;
-
-import java.util.ArrayList;
-import java.util.List;
-
-class FakeAltoService implements IRDService {
-    @Override
-    public IRD getIRD() {
-        IRDBuilder irdb = new IRDBuilder();
-        MetaBuilder mb = new MetaBuilder();
-
-        List<CostTypes> cost_types = new ArrayList<CostTypes>();
-        CostTypesBuilder cb = new CostTypesBuilder();
-        CostTypeName name = new CostTypeName("num-routing");
-        CostMetric metric = new CostMetric(CostMetric.Enumeration.Routingcost);
-        CostMode mode = CostMode.Numerical;
-        CostTypesKey ckey = new CostTypesKey(name);
-
-        cost_types.add(cb.setCostTypeName(name).setCostMetric(metric).setCostMode(mode).setKey(ckey).build());
-        irdb.setMeta(mb.setCostTypes(cost_types).build());
-
-        List<Resources> resources = new ArrayList<Resources>();
-        ResourcesBuilder rb = new ResourcesBuilder();
-
-        MediaType mt = new MediaType(MediaType.Enumeration.AltoNetworkmap);
-        Uri uri = new Uri("http://localhost:8080/controller/nb/v2/networkmap/default");
-        ResourcesKey rkey = new ResourcesKey(new ResourceId("my-default-networkmap"));
-
-        resources.add(rb.setMediaType(mt).setUri(uri).setKey(rkey).build());
-        irdb.setResources(resources);
-
-        return irdb.build();
-    }
-
-    @Override
-    public boolean register(ResourceId id, Resources resource) {
-        return true;
-    }
-
-    @Override
-    public void unregister(ResourceId id) {
-    }
-}
index 3ce667b0ea23e0985d0773ff24ebb18aeb701f90..d4c81e4f6563f8502692105e69c59b253e12ab27 100644 (file)
@@ -16,8 +16,8 @@
   <packaging>bundle</packaging>
 
   <properties>
-    <checkstyle.skip>true</checkstyle.skip>
     <sal-binding-api.version>1.2.0-SNAPSHOT</sal-binding-api.version>
+    <configfile>default.networkmap</configfile>
   </properties>
 
   <dependencies>
       <artifactId>alto-model</artifactId>
       <version>${project.version}</version>
     </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>alto-commons</artifactId>
+      <version>${project.version}</version>
+    </dependency>
     <dependency>
       <groupId>org.opendaylight.controller</groupId>
       <artifactId>config-api</artifactId>
           </execution>
         </executions>
       </plugin>
+
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>build-helper-maven-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>attach-artifacts</id>
+            <goals>
+              <goal>attach-artifact</goal>
+            </goals>
+            <phase>package</phase>
+            <configuration>
+              <artifacts>
+                <artifact>
+                  <file>${project.build.directory}/classes/${configfile}</file>
+                  <type>xml</type>
+                  <classifier>config</classifier>
+                </artifact>
+              </artifacts>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
     </plugins>
   </build>
   <scm>
diff --git a/alto-provider/src/main/config/default-config.xml b/alto-provider/src/main/config/default-config.xml
deleted file mode 100644 (file)
index b7cb334..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- vi: set et smarttab sw=4 tabstop=4: -->
-<!--
-Copyright (c) 2015 Yale University and others.  All rights reserved.
-
-This program and the accompanying materials are made available under the
-terms of the Eclipse Public License v1.0 which accompanies this distribution,
-and is available at http://www.eclipse.org/legal/epl-v10.html
--->
-<snapshot>
-  <required-capabilities>
-  </required-capabilities>
-  <configuration>
-
-    <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
-      <modules xmlns="urn:opendaylight:params:xml:ns:yang:controller:config">
-        <module>
-          <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:alto:impl">prefix:alto-impl</type>
-          <name>alto-default</name>
-          <broker>
-            <type xmlns:binding="urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding">binding:binding-broker-osgi-registry</type>
-            <name>binding-osgi-broker</name>
-          </broker>
-        </module>
-      </modules>
-    </data>
-  </configuration>
-</snapshot>
diff --git a/alto-provider/src/main/config/maven-metadata-local.xml b/alto-provider/src/main/config/maven-metadata-local.xml
deleted file mode 100644 (file)
index e6147ee..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<metadata modelVersion="1.1.0">
-  <groupId>org.opendaylight.alto</groupId>
-  <artifactId>alto-impl</artifactId>
-  <version>1.0.0-SNAPSHOT</version>
-  <versioning>
-    <snapshot>
-      <localCopy>true</localCopy>
-    </snapshot>
-    <lastUpdated>20150330113731</lastUpdated>
-    <snapshotVersions>
-      <snapshotVersion>
-        <classifier>config</classifier>
-        <extension>xml</extension>
-        <value>1.0.0-SNAPSHOT</value>
-        <updated>20150330113731</updated>
-      </snapshotVersion>
-    </snapshotVersions>
-  </versioning>
-</metadata>
diff --git a/alto-provider/src/main/java/org/opendaylight/alto/AltoProvider.java b/alto-provider/src/main/java/org/opendaylight/alto/AltoProvider.java
deleted file mode 100644 (file)
index 5267450..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (c) 2015 Yale University and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.alto;
-
-import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
-import org.opendaylight.controller.sal.binding.api.BindingAwareProvider;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class AltoProvider implements BindingAwareProvider, AutoCloseable {
-
-    private static final Logger LOG = LoggerFactory.getLogger(AltoProvider.class);
-
-    @Override
-    public void onSessionInitiated(ProviderContext session) {
-        LOG.info("AltoProvider Session Initiated");
-    }
-
-    @Override
-    public void close() throws Exception {
-        LOG.info("AltoProvider Closed");
-    }
-
-}
diff --git a/alto-provider/src/main/java/org/opendaylight/controller/alto/provider/AltoProvider.java b/alto-provider/src/main/java/org/opendaylight/controller/alto/provider/AltoProvider.java
new file mode 100644 (file)
index 0000000..eb4834d
--- /dev/null
@@ -0,0 +1,178 @@
+package org.opendaylight.controller.alto.provider;
+
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
+
+import org.opendaylight.alto.commons.types.mapper.JSONMapper;
+import org.opendaylight.controller.config.yang.config.alto_provider.impl.AltoProviderRuntimeMXBean;
+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.DataChangeScope;
+import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.AltoServiceService;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.EndpointCostServiceInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.EndpointCostServiceOutput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.FilteredCostMapServiceInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.FilteredCostMapServiceOutput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.FilteredNetworkMapServiceInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.FilteredNetworkMapServiceOutput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.Resources;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.ResourcesBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.resources.NetworkMaps;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.resources.NetworkMapsBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.resources.network.maps.NetworkMap;
+import org.opendaylight.yangtools.yang.binding.DataObject;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.opendaylight.yangtools.yang.common.RpcResult;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.common.base.Function;
+import com.google.common.util.concurrent.FutureCallback;
+import com.google.common.util.concurrent.Futures;
+
+public class AltoProvider implements AltoServiceService, DataChangeListener,
+  AltoProviderRuntimeMXBean, AutoCloseable {
+
+  private static final Logger LOG = LoggerFactory.getLogger(AltoProvider.class);
+
+  public static final InstanceIdentifier<Resources> ALTO_IID = InstanceIdentifier
+      .builder(Resources.class).build();
+  
+  private static final Path configFilePath = Paths.get("configuration/default.networkmap");
+  private JSONMapper jsonMapper = new JSONMapper();
+  
+  private DataBroker dataProvider;
+  private final ExecutorService executor;
+  
+  public AltoProvider() {
+    this.executor = Executors.newFixedThreadPool(1);    
+  }
+
+  public void setDataProvider(final DataBroker salDataProvider) {
+    this.dataProvider = salDataProvider;
+    this.dataProvider.registerDataChangeListener(LogicalDatastoreType.OPERATIONAL, ALTO_IID, this, DataChangeScope.SUBTREE);
+    setResourcesStatusUp(null);
+  }
+
+  private Resources buildResources() {
+    try {
+      return new ResourcesBuilder()
+          .setNetworkMaps(loadNetworkMaps())
+          .build();
+    } catch (Exception e) {
+      e.printStackTrace();
+    }
+
+    return null;
+  }
+
+  private NetworkMaps loadNetworkMaps() throws Exception {
+    return new NetworkMapsBuilder()
+        .setNetworkMap(loadNetworkMapList())
+        .build();
+  }
+  
+  private List<NetworkMap> loadNetworkMapList() {
+    List<NetworkMap> networkMapList = new ArrayList<NetworkMap>();
+    try {
+      String content = new String(Files.readAllBytes(configFilePath), StandardCharsets.UTF_8);
+      networkMapList.add(jsonMapper.asNetworkMap(content).asYangNetworkMap());
+    } catch (Exception e) {
+      e.printStackTrace();
+    }
+    
+    return networkMapList;
+  }
+
+  @Override
+  public void onDataChanged(
+      final AsyncDataChangeEvent<InstanceIdentifier<?>, DataObject> change) {
+    DataObject dataObject = change.getUpdatedSubtree();
+    if (dataObject instanceof Resources) {
+      Resources altoResources = (Resources) dataObject;
+      LOG.info("onDataChanged - new ALTO config: {}", altoResources);
+    }
+  }
+
+  private void setResourcesStatusUp(final Function<Boolean, Void> resultCallback) {
+    WriteTransaction tx = dataProvider.newWriteOnlyTransaction();
+    tx.put(LogicalDatastoreType.OPERATIONAL, ALTO_IID, buildResources());
+
+    Futures.addCallback(tx.submit(), new FutureCallback<Void>() {
+      @Override
+      public void onSuccess(final Void result) {
+        notifyCallback(true);
+      }
+
+      @Override
+      public void onFailure(final Throwable t) {
+        LOG.error("Failed to initiate resources", t);
+        notifyCallback(false);
+      }
+
+      void notifyCallback(final boolean result) {
+        if (resultCallback != null) {
+          resultCallback.apply(result);
+        }
+      }
+    });
+  }
+
+  @Override
+  public Future<RpcResult<EndpointCostServiceOutput>> endpointCostService(
+      EndpointCostServiceInput input) {
+    // TODO Auto-generated method stub
+    return null;
+  }
+
+  @Override
+  public Future<RpcResult<FilteredCostMapServiceOutput>> filteredCostMapService(
+      FilteredCostMapServiceInput input) {
+    // TODO Auto-generated method stub
+    return null;
+  }
+
+  @Override
+  public Future<RpcResult<FilteredNetworkMapServiceOutput>> filteredNetworkMapService(
+      final FilteredNetworkMapServiceInput input) {
+    // TODO Auto-generated method stub
+    return null;
+  }
+
+  @Override
+  public Long getToastsMade() {
+    // TODO Auto-generated method stub
+    return null;
+  }
+  
+  @Override
+  public void close() throws ExecutionException, InterruptedException {
+    executor.shutdown();
+    if (dataProvider != null) {
+      WriteTransaction tx = dataProvider.newWriteOnlyTransaction();
+      tx.delete(LogicalDatastoreType.OPERATIONAL, ALTO_IID);
+      Futures.addCallback(tx.submit(), new FutureCallback<Void>() {
+        @Override
+        public void onSuccess(final Void result) {
+          LOG.debug("Delete ALTO commit result: " + result);
+        }
+
+        @Override
+        public void onFailure(final Throwable t) {
+          LOG.error("Delete of ALTO failed", t);
+        }
+      });
+    }
+  }
+}
similarity index 86%
rename from alto-services/ext/fs-map/src/main/java/org/opendaylight/alto/services/ext/fsmap/FileSystemNetworkMapGenerator.java
rename to alto-provider/src/main/java/org/opendaylight/controller/alto/provider/FileSystemNetworkMapGenerator.java
index 3a75492b2de6c6e52dbd645294c8ccce281396de..20b8b8f5f8d8e9b89ab381409aebbd75863825b8 100644 (file)
@@ -1,31 +1,31 @@
-package org.opendaylight.alto.services.ext.fsmap;
+package org.opendaylight.controller.alto.provider;
 
+import java.io.IOException;
 import java.net.URI;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.ClosedWatchServiceException;
 import java.nio.file.FileSystem;
-import java.nio.file.SimpleFileVisitor;
 import java.nio.file.FileVisitResult;
-import java.nio.file.PathMatcher;
-import java.nio.file.WatchService;
-import java.nio.file.WatchKey;
-import java.nio.file.WatchEvent;
 import java.nio.file.Files;
 import java.nio.file.Path;
+import java.nio.file.PathMatcher;
 import java.nio.file.Paths;
+import java.nio.file.SimpleFileVisitor;
 import java.nio.file.StandardWatchEventKinds;
-import java.nio.charset.StandardCharsets;
-import java.nio.file.ClosedWatchServiceException;
+import java.nio.file.WatchEvent;
+import java.nio.file.WatchKey;
+import java.nio.file.WatchService;
 import java.nio.file.attribute.BasicFileAttributes;
-
-import java.io.IOException;
-
-import java.util.concurrent.locks.ReentrantLock;
-import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.List;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.locks.ReentrantLock;
 
-import org.opendaylight.alto.commons.types.rfc7285.JSONMapper;
-import org.opendaylight.alto.commons.types.rfc7285.NetworkMap;
+import org.opendaylight.alto.commons.types.mapper.JSONMapper;
+import org.opendaylight.alto.commons.types.rfc7285.AltoNetworkMap;
 import org.opendaylight.alto.commons.types.rfc7285.VersionTag;
-
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.resources.network.maps.NetworkMap;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -41,12 +41,12 @@ public class FileSystemNetworkMapGenerator implements Runnable, AutoCloseable {
     private MapFileLoader loader = null;
     private AtomicBoolean cancelled = new AtomicBoolean(false);
     private HashMap<Path, VersionTag> path_to_id = new HashMap<Path, VersionTag>();
-    private HashMap<VersionTag, NetworkMap> id_to_map = new HashMap<VersionTag, NetworkMap>();
-    private JSONMapper mapper = new JSONMapper();
+    private HashMap<VersionTag, AltoNetworkMap> id_to_map = new HashMap<VersionTag, AltoNetworkMap>();
+    private JSONMapper jsonMapper = new JSONMapper();
 
     public FileSystemNetworkMapGenerator(URI uri) throws Exception {
         source = Paths.get(uri);
-
+        
         FileSystem fs = source.getFileSystem();
         watcher = fs.newWatchService();
         if (watcher == null) {
@@ -54,7 +54,6 @@ public class FileSystemNetworkMapGenerator implements Runnable, AutoCloseable {
         }
 
         onCreateDir(source);
-
         loader = new MapFileLoader(fs);
         Files.walkFileTree(source, loader);
     }
@@ -144,7 +143,7 @@ public class FileSystemNetworkMapGenerator implements Runnable, AutoCloseable {
         cleanup();
     }
 
-    public void cleanup() {
+    private void cleanup() {
         lock.lock();
         for (WatchKey key: keys.values()) {
             try {
@@ -164,9 +163,6 @@ public class FileSystemNetworkMapGenerator implements Runnable, AutoCloseable {
         } catch (Exception e) {
         }
 
-        for (VersionTag vtag: path_to_id.values()) {
-            // TODO remove network map
-        }
         path_to_id.clear();
         id_to_map.clear();
         lock.unlock();
@@ -177,12 +173,10 @@ public class FileSystemNetworkMapGenerator implements Runnable, AutoCloseable {
         cleanup();
     }
 
-    public void onCreate(Path file) {
-        //TODO
+    private void onCreate(Path file) {
         try {
             String content = new String(Files.readAllBytes(file), StandardCharsets.US_ASCII);
-            NetworkMap map = mapper.asNetworkMap(content);
-
+            AltoNetworkMap map = jsonMapper.asNetworkMap(content);
             VersionTag vtag = map.meta.vtag;
             logger.info("vtag: <" + vtag.rid + ", " + vtag.tag + ">");
             if (id_to_map.get(map.meta.vtag) != null) {
@@ -200,7 +194,7 @@ public class FileSystemNetworkMapGenerator implements Runnable, AutoCloseable {
         }
     }
 
-    public void onCreateDir(Path dir) {
+    private void onCreateDir(Path dir) {
         try {
             WatchKey key = dir.register(watcher,
                                     StandardWatchEventKinds.ENTRY_CREATE,
@@ -214,7 +208,7 @@ public class FileSystemNetworkMapGenerator implements Runnable, AutoCloseable {
         }
     }
 
-    public void onDelete(Path file) {
+    private void onDelete(Path file) {
         //TODO
         try {
             VersionTag vtag = path_to_id.get(file);
@@ -229,7 +223,7 @@ public class FileSystemNetworkMapGenerator implements Runnable, AutoCloseable {
         }
     }
 
-    public void onDeleteDir(Path dir) {
+    private void onDeleteDir(Path dir) {
         // TODO
         try {
             WatchKey key = keys.get(dir);
@@ -245,11 +239,10 @@ public class FileSystemNetworkMapGenerator implements Runnable, AutoCloseable {
         }
     }
 
-    public void onModify(Path file) {
-        //TODO
-        try {
+    private void onModify(Path file) {
+      try {
             String content = new String(Files.readAllBytes(file), StandardCharsets.US_ASCII);
-            NetworkMap map = mapper.asNetworkMap(content);
+            AltoNetworkMap map = jsonMapper.asNetworkMap(content);
             VersionTag vtag = map.meta.vtag;
             VersionTag old = path_to_id.get(file);
 
@@ -268,9 +261,17 @@ public class FileSystemNetworkMapGenerator implements Runnable, AutoCloseable {
         }
     }
 
-    public void onModifyDir(Path dir) {
-        //TODO
+    private void onModifyDir(Path dir) {
         onDeleteDir(dir);
         onModifyDir(dir);
     }
+
+    public List<NetworkMap> getYangNetworkMaps() {
+        List<AltoNetworkMap> networkMapList = new ArrayList<AltoNetworkMap>(id_to_map.values());
+        List<NetworkMap> list = new ArrayList<NetworkMap>();
+        for (AltoNetworkMap map : networkMapList) {
+          list.add(map.asYangNetworkMap());
+        }
+        return list;
+    }
 }
index f03ec86d5721ad962634104360595cdb570777b0..f7d08e005d0f81ab0b521af25cb7ae19db5e6851 100644 (file)
@@ -1,11 +1,11 @@
 package org.opendaylight.controller.config.yang.config.alto_provider.impl;
 
+import org.opendaylight.controller.alto.provider.AltoProvider;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.provider.impl.rev141119.OpendaylightAlto;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.AltoServiceService;
 
-public class AltoProviderModule extends org.opendaylight.controller.config.yang.config.alto_provider.impl.AbstractAltoProviderModule {
+public class AltoProviderModule extends AbstractAltoProviderModule {
     public AltoProviderModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
         super(identifier, dependencyResolver);
     }
@@ -21,24 +21,21 @@ public class AltoProviderModule extends org.opendaylight.controller.config.yang.
 
     @Override
     public java.lang.AutoCloseable createInstance() {
-               final OpendaylightAlto opendaylightAlto = new OpendaylightAlto();
+               final AltoProvider altoProvider = new AltoProvider();
 
                DataBroker dataBrokerService = getDataBrokerDependency();
-               opendaylightAlto.setDataProvider(dataBrokerService);
-
+               altoProvider.setDataProvider(dataBrokerService);
+               
                final BindingAwareBroker.RpcRegistration<AltoServiceService> rpcRegistration = getRpcRegistryDependency()
-            .addRpcImplementation(AltoServiceService.class, opendaylightAlto);
+            .addRpcImplementation(AltoServiceService.class, altoProvider);
+               final AltoProviderRuntimeRegistration runtimeReg = getRootRuntimeBeanRegistratorWrapper().register(altoProvider);
                
-               // Wrap toaster as AutoCloseable and close registrations to md-sal at
-               // close(). The close method is where you would generally clean up
-               // thread pools
-               // etc.
                final class AutoCloseableAlto implements AutoCloseable {
-
                        @Override
                        public void close() throws Exception {
                            rpcRegistration.close();
-                           opendaylightAlto.close();
+                           runtimeReg.close();
+                           altoProvider.close();
                        }
                }
 
diff --git a/alto-provider/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/alto/provider/impl/rev141119/OpendaylightAlto.java b/alto-provider/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/alto/provider/impl/rev141119/OpendaylightAlto.java
deleted file mode 100644 (file)
index 7d606dd..0000000
+++ /dev/null
@@ -1,330 +0,0 @@
-package org.opendaylight.yang.gen.v1.urn.opendaylight.alto.provider.impl.rev141119;
-
-import com.google.common.base.Function;
-import com.google.common.base.Optional;
-import com.google.common.util.concurrent.AsyncFunction;
-import com.google.common.util.concurrent.FutureCallback;
-import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.ListenableFuture;
-import org.opendaylight.controller.config.yang.config.alto_provider.impl.AltoProviderRuntimeMXBean;
-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;
-import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
-import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.controller.sal.binding.api.NotificationProviderService;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefix;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Prefix;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv6Prefix;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.*;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.filtered.network.map.service.output.FilteredNetworkMapService;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.filtered.network.map.service.output.FilteredNetworkMapServiceBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.resources.NetworkMaps;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.resources.NetworkMapsBuilder;
-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.NetworkMapBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.resources.network.maps.NetworkMapKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.network.map.Map;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.network.map.MapBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.EndpointAddressType;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.PidName;
-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.endpoint.address.group.EndpointAddressGroup;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.endpoint.address.group.EndpointAddressGroupBuilder;
-import org.opendaylight.yangtools.yang.binding.DataObject;
-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.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.Future;
-import java.util.concurrent.atomic.AtomicLong;
-
-public class OpendaylightAlto implements AltoServiceService,
-    AltoProviderRuntimeMXBean, DataChangeListener, AutoCloseable {
-
-    private static final Logger LOG = LoggerFactory
-        .getLogger(OpendaylightAlto.class);
-
-    public static final InstanceIdentifier<Resources> ALTO_IID = InstanceIdentifier
-        .builder(Resources.class).build();
-
-    // Currently we don't have any notifications.
-    private NotificationProviderService notificationProvider;
-    private DataBroker dataProvider;
-
-    private final ExecutorService executor;
-
-    // dummy state data example
-    private final AtomicLong toastsMade = new AtomicLong(0);
-
-    public OpendaylightAlto() {
-        executor = Executors.newFixedThreadPool(1);
-    }
-
-    public void setNotificationProvider(
-        final NotificationProviderService salService) {
-        this.notificationProvider = salService;
-    }
-
-    public void setDataProvider(final DataBroker salDataProvider) {
-        this.dataProvider = salDataProvider;
-        setResourcesStatusUp(null);
-    }
-
-    /**
-     * Implemented from the AutoCloseable interface. Delete all resources.
-     */
-    @Override
-    public void close() throws ExecutionException, InterruptedException {
-        // When we close this service we need to shutdown our executor!
-        executor.shutdown();
-
-        if (dataProvider != null) {
-            WriteTransaction tx = dataProvider.newWriteOnlyTransaction();
-            tx.delete(LogicalDatastoreType.OPERATIONAL, ALTO_IID);
-            Futures.addCallback(tx.submit(), new FutureCallback<Void>() {
-                @Override
-                public void onSuccess(final Void result) {
-                    LOG.debug("Delete ALTO commit result: " + result);
-                }
-
-                @Override
-                public void onFailure(final Throwable t) {
-                    LOG.error("Delete of ALTO failed", t);
-                }
-            });
-        }
-    }
-
-    private Resources buildResources() {
-        return new ResourcesBuilder().setNetworkMaps(buildDummyNetworkMaps())
-            .setNetworkMaps(buildDummyNetworkMaps()).build();
-    }
-
-    /*
-     * builds a dummy container networkmaps
-     */
-    private NetworkMaps buildDummyNetworkMaps() {
-        ResourceId dummyResourceId = new ResourceId("my-dummy-net-map-1");
-
-        PidName pid1 = new PidName("PID1");
-        PidName pid2 = new PidName("PID2");
-        PidName pid3 = new PidName("PID3");
-
-        EndpointAddressType ipv4Type = new EndpointAddressType(
-            EndpointAddressType.Enumeration.Ipv4);
-        EndpointAddressType ipv6Type = new EndpointAddressType(
-            EndpointAddressType.Enumeration.Ipv6);
-
-        /* for PID1 */
-        List<IpPrefix> pid1list = new ArrayList<>();
-        pid1list.add(new IpPrefix(new Ipv4Prefix("192.0.2.0/24")));
-        pid1list.add(new IpPrefix(new Ipv4Prefix("198.51.100.0/25")));
-
-        EndpointAddressGroup eag1 = new EndpointAddressGroupBuilder()
-            .setAddressType(ipv4Type).setEndpointPrefix(pid1list).build();
-
-        List<EndpointAddressGroup> eagList1 = new ArrayList<>();
-        eagList1.add(eag1);
-
-        Map dummyMap1 = new MapBuilder().setPid(pid1)
-            .setEndpointAddressGroup(eagList1).build();
-
-        /* for PID2 */
-        List<IpPrefix> pid2list = new ArrayList<>();
-        pid2list.add(new IpPrefix(new Ipv4Prefix("198.51.100.128/25")));
-
-        EndpointAddressGroup eag2 = new EndpointAddressGroupBuilder()
-            .setAddressType(ipv4Type).setEndpointPrefix(pid2list).build();
-
-        List<EndpointAddressGroup> eagList2 = new ArrayList<>();
-        eagList2.add(eag2);
-        Map dummyMap2 = new MapBuilder().setPid(pid2)
-            .setEndpointAddressGroup(eagList2).build();
-
-        /* for PID3 */
-        List<IpPrefix> pid3ipv4List = new ArrayList<>();
-        pid3ipv4List.add(new IpPrefix(new Ipv4Prefix("0.0.0.0/0")));
-        EndpointAddressGroup eag3ipv4 = new EndpointAddressGroupBuilder()
-            .setAddressType(ipv4Type).setEndpointPrefix(pid3ipv4List).build();
-
-        List<IpPrefix> pid3ipv6List = new ArrayList<>();
-        pid3ipv6List.add(new IpPrefix(new Ipv6Prefix("::/0")));
-        EndpointAddressGroup eag3ipv6 = new EndpointAddressGroupBuilder()
-            .setAddressType(ipv6Type).setEndpointPrefix(pid3ipv6List).build();
-
-        List<EndpointAddressGroup> eagList3 = new ArrayList<>();
-        eagList3.add(eag3ipv4);
-        eagList3.add(eag3ipv6);
-        Map dummyMap3 = new MapBuilder().setPid(pid3)
-            .setEndpointAddressGroup(eagList3).build();
-
-        /* put together default dummy net map */
-        List<Map> dummyListMap = new ArrayList<>();
-        dummyListMap.add(dummyMap1);
-        dummyListMap.add(dummyMap2);
-        dummyListMap.add(dummyMap3);
-
-        NetworkMapBuilder dummyNetworkMapBuilder = new NetworkMapBuilder();
-        dummyNetworkMapBuilder.setResourceId(dummyResourceId)
-            .setTag(new TagString("dummyv01")).setMap(dummyListMap);
-
-        List<NetworkMap> dummyListNetworkMap = new ArrayList<>();
-        dummyListNetworkMap.add(dummyNetworkMapBuilder.build());
-
-        /* wrap with network-maps container */
-        return new NetworkMapsBuilder().setNetworkMap(dummyListNetworkMap)
-            .build();
-    }
-
-    /**
-     * Implemented from the DataChangeListener interface.
-     */
-    @Override
-    public void onDataChanged(
-        final AsyncDataChangeEvent<InstanceIdentifier<?>, DataObject> change) {
-        DataObject dataObject = change.getUpdatedSubtree();
-        if (dataObject instanceof Resources) {
-            Resources altoResources = (Resources) dataObject;
-            LOG.info("onDataChanged - new ALTO config: {}", altoResources);
-        }
-    }
-
-    /* dummy example state data TODO */
-
-    /**
-     * JMX RPC call implemented from the AltoProviderRuntimeMXBean interface.
-     */
-    @Override
-    public void clearToastsMade() {
-        LOG.info("clearToastsMade");
-        toastsMade.set(0);
-    }
-
-    /**
-     * Accesssor method implemented from the ToasterProviderRuntimeMXBean
-     * interface.
-     */
-    @Override
-    public Long getToastsMade() {
-        return toastsMade.get();
-    }
-
-    private void setResourcesStatusUp(
-        final Function<Boolean, Void> resultCallback) {
-
-        WriteTransaction tx = dataProvider.newWriteOnlyTransaction();
-        tx.put(LogicalDatastoreType.OPERATIONAL, ALTO_IID, buildResources());
-
-        Futures.addCallback(tx.submit(), new FutureCallback<Void>() {
-            @Override
-            public void onSuccess(final Void result) {
-                notifyCallback(true);
-            }
-
-            @Override
-            public void onFailure(final Throwable t) {
-                // We shouldn't get an OptimisticLockFailedException (or any ex)
-                // as no
-                // other component should be updating the operational state.
-                LOG.error("Failed to update toaster status", t);
-
-                notifyCallback(false);
-            }
-
-            void notifyCallback(final boolean result) {
-                if (resultCallback != null) {
-                    resultCallback.apply(result);
-                }
-            }
-        });
-    }
-
-    @Override
-    public Future<RpcResult<EndpointCostServiceOutput>> endpointCostService(
-        EndpointCostServiceInput input) {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public Future<RpcResult<FilteredCostMapServiceOutput>> filteredCostMapService(
-        FilteredCostMapServiceInput input) {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public Future<RpcResult<FilteredNetworkMapServiceOutput>> filteredNetworkMapService(
-        final FilteredNetworkMapServiceInput input) {
-
-        ResourceId rid = input.getResourceId();
-        NetworkMapKey networkMapKey = new NetworkMapKey(rid);
-
-        final ReadOnlyTransaction tx = dataProvider.newReadOnlyTransaction();
-        ListenableFuture<Optional<NetworkMap>> readFuture = tx.read(
-            LogicalDatastoreType.OPERATIONAL, ALTO_IID.child(NetworkMaps.class)
-                .child(NetworkMap.class, networkMapKey));
-
-        final ListenableFuture<RpcResult<FilteredNetworkMapServiceOutput>> futureResult = Futures
-            .transform(
-                readFuture,
-                new AsyncFunction<Optional<NetworkMap>, RpcResult<FilteredNetworkMapServiceOutput>>() {
-
-                    @Override
-                    public ListenableFuture<RpcResult<FilteredNetworkMapServiceOutput>> apply(
-                        Optional<NetworkMap> networkMapData) throws Exception {
-
-                        ResourceId networkMapId = new ResourceId(
-                            "ResourceID Not Available");
-                        TagString networkMapTag = new TagString(
-                            "Tag Not Available");
-
-                        if (networkMapData.isPresent()) {
-                            networkMapId = ((NetworkMap) networkMapData.get())
-                                .getResourceId();
-                            networkMapTag = ((NetworkMap) networkMapData.get())
-                                .getTag();
-                        }
-
-                        LOG.info("Read network map rid: {}", networkMapId);
-                        LOG.info("Read network map tag: {}", networkMapTag);
-
-                        List<PidName> pidList = input.getPids();
-
-                        List<Map> networkMapMap = networkMapData.get().getMap();
-                        List<Map> filteredMap = new ArrayList<>();
-
-                        for (Map m : networkMapMap) {
-                            PidName pid = m.getPid();
-                            if (pidList.contains(pid)) {
-                                filteredMap.add(m);
-                            }
-                        }
-
-                        FilteredNetworkMapService serviceResult = new FilteredNetworkMapServiceBuilder()
-                            .setResourceId(networkMapId).setTag(networkMapTag)
-                            .setMap(filteredMap).build();
-
-                        FilteredNetworkMapServiceOutput serviceOutput = new FilteredNetworkMapServiceOutputBuilder()
-                            .setFilteredNetworkMapService(serviceResult)
-                            .build();
-
-                        return Futures.immediateFuture(RpcResultBuilder
-                            .<FilteredNetworkMapServiceOutput> success()
-                            .withResult(serviceOutput).build());
-                    }
-                });
-
-        return futureResult;
-    }
-}
diff --git a/alto-provider/src/main/resources/default.networkmap b/alto-provider/src/main/resources/default.networkmap
new file mode 100644 (file)
index 0000000..ea14898
--- /dev/null
@@ -0,0 +1 @@
+{"meta":{"vtag":{"resource-id":"my-default-network-map","tag":"da65eca2eb7a10ce8b059740b0b2e3f8eb1d4785"}},"network-map":{"PID1":{"ipv4": ["192.0.2.0/24","198.51.100.0/25"]},"PID2":{"ipv4": ["198.51.100.128/25"]},"PID3":{"ipv4": ["0.0.0.0/0"],"ipv6": ["::/0"]}}}
diff --git a/alto-provider/src/main/yang-gen-sal/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/controller/config/alto/provider/impl/rev141119/AltoProviderImplService.java b/alto-provider/src/main/yang-gen-sal/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/controller/config/alto/provider/impl/rev141119/AltoProviderImplService.java
deleted file mode 100644 (file)
index f559bed..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-package org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.alto.provider.impl.rev141119;
-import java.util.concurrent.Future;
-import org.opendaylight.yangtools.yang.binding.RpcService;
-import org.opendaylight.yangtools.yang.common.RpcResult;
-
-
-/**
- * Interface for implementing the following YANG RPCs defined in module &lt;b&gt;alto-provider-impl&lt;/b&gt;
- * &lt;br&gt;(Source path: &lt;i&gt;META-INF/yang/alto-provider-impl.yang&lt;/i&gt;):
- * &lt;pre&gt;
- * rpc clear-toasts-made {
- *     "JMX call to clear the toasts-made counter.";
- *     input {
- *         leaf context-instance {
- *             type instance-identifier;
- *         }
- *     }
- *     
- *     status CURRENT;
- * }
- * &lt;/pre&gt;
- *
- */
-public interface AltoProviderImplService
-    extends
-    RpcService
-{
-
-
-
-
-    /**
-     * JMX call to clear the toasts-made counter.
-     *
-     */
-    Future<RpcResult<java.lang.Void>> clearToastsMade(ClearToastsMadeInput input);
-
-}
-
diff --git a/alto-provider/src/main/yang-gen-sal/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/controller/config/alto/provider/impl/rev141119/ClearToastsMadeInput.java b/alto-provider/src/main/yang-gen-sal/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/controller/config/alto/provider/impl/rev141119/ClearToastsMadeInput.java
deleted file mode 100644 (file)
index f001d50..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-package org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.alto.provider.impl.rev141119;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.rpc.context.rev130617.RpcContextRef;
-import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.binding.DataObject;
-import org.opendaylight.yangtools.yang.binding.Augmentable;
-
-
-/**
- * &lt;p&gt;This class represents the following YANG schema fragment defined in module &lt;b&gt;alto-provider-impl&lt;/b&gt;
- * &lt;br&gt;(Source path: &lt;i&gt;META-INF/yang/alto-provider-impl.yang&lt;/i&gt;):
- * &lt;pre&gt;
- * container input {
- *     leaf context-instance {
- *         type instance-identifier;
- *     }
- *     uses rpc-context-ref {
- *         refine (urn:opendaylight:params:xml:ns:yang:controller:config:alto-provider:impl?revision=2014-11-19)context-instance {
- *             leaf context-instance {
- *                 type instance-identifier;
- *             }
- *         }
- *     }
- * }
- * &lt;/pre&gt;
- * The schema path to identify an instance is
- * &lt;i&gt;alto-provider-impl/clear-toasts-made/input&lt;/i&gt;
- *
- * &lt;p&gt;To create instances of this class use {@link org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.alto.provider.impl.rev141119.ClearToastsMadeInputBuilder}.
- * @see org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.alto.provider.impl.rev141119.ClearToastsMadeInputBuilder
- *
- */
-public interface ClearToastsMadeInput
-    extends
-    RpcContextRef,
-    DataObject,
-    Augmentable<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.alto.provider.impl.rev141119.ClearToastsMadeInput>
-{
-
-
-
-    public static final QName QNAME = org.opendaylight.yangtools.yang.common.QName.cachedReference(org.opendaylight.yangtools.yang.common.QName.create("urn:opendaylight:params:xml:ns:yang:controller:config:alto-provider:impl","2014-11-19","input"));
-
-
-}
-
diff --git a/alto-provider/src/main/yang-gen-sal/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/controller/config/alto/provider/impl/rev141119/ClearToastsMadeInputBuilder.java b/alto-provider/src/main/yang-gen-sal/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/controller/config/alto/provider/impl/rev141119/ClearToastsMadeInputBuilder.java
deleted file mode 100644 (file)
index 3c0f2cb..0000000
+++ /dev/null
@@ -1,211 +0,0 @@
-package org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.alto.provider.impl.rev141119;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import java.util.Collections;
-import java.util.Map;
-import org.opendaylight.yangtools.yang.binding.DataObject;
-import java.util.HashMap;
-import org.opendaylight.yangtools.concepts.Builder;
-import org.opendaylight.yangtools.yang.binding.Augmentation;
-
-
-/**
- * Class that builds {@link org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.alto.provider.impl.rev141119.ClearToastsMadeInput} instances.
- *
- * @see org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.alto.provider.impl.rev141119.ClearToastsMadeInput
- *
- */
-public class ClearToastsMadeInputBuilder implements Builder <org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.alto.provider.impl.rev141119.ClearToastsMadeInput> {
-
-    private InstanceIdentifier<?> _contextInstance;
-
-    Map<java.lang.Class<? extends Augmentation<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.alto.provider.impl.rev141119.ClearToastsMadeInput>>, Augmentation<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.alto.provider.impl.rev141119.ClearToastsMadeInput>> augmentation = new HashMap<>();
-
-    public ClearToastsMadeInputBuilder() {
-    }
-    public ClearToastsMadeInputBuilder(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.rpc.context.rev130617.RpcContextRef arg) {
-        this._contextInstance = arg.getContextInstance();
-    }
-
-    public ClearToastsMadeInputBuilder(ClearToastsMadeInput base) {
-        this._contextInstance = base.getContextInstance();
-        if (base instanceof ClearToastsMadeInputImpl) {
-            ClearToastsMadeInputImpl _impl = (ClearToastsMadeInputImpl) base;
-            this.augmentation = new HashMap<>(_impl.augmentation);
-        }
-    }
-
-    /**
-     *Set fields from given grouping argument. Valid argument is instance of one of following types:
-     * <ul>
-     * <li>org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.rpc.context.rev130617.RpcContextRef</li>
-     * </ul>
-     *
-     * @param arg grouping object
-     * @throws IllegalArgumentException if given argument is none of valid types
-    */
-    public void fieldsFrom(DataObject arg) {
-        boolean isValidArg = false;
-        if (arg instanceof org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.rpc.context.rev130617.RpcContextRef) {
-            this._contextInstance = ((org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.rpc.context.rev130617.RpcContextRef)arg).getContextInstance();
-            isValidArg = true;
-        }
-        if (!isValidArg) {
-            throw new IllegalArgumentException(
-              "expected one of: [org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.rpc.context.rev130617.RpcContextRef] \n" +
-              "but was: " + arg
-            );
-        }
-    }
-
-    public InstanceIdentifier<?> getContextInstance() {
-        return _contextInstance;
-    }
-    
-    @SuppressWarnings("unchecked")
-    public <E extends Augmentation<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.alto.provider.impl.rev141119.ClearToastsMadeInput>> E getAugmentation(java.lang.Class<E> augmentationType) {
-        if (augmentationType == null) {
-            throw new IllegalArgumentException("Augmentation Type reference cannot be NULL!");
-        }
-        return (E) augmentation.get(augmentationType);
-    }
-
-    public ClearToastsMadeInputBuilder setContextInstance(InstanceIdentifier<?> value) {
-        this._contextInstance = value;
-        return this;
-    }
-    
-    public ClearToastsMadeInputBuilder addAugmentation(java.lang.Class<? extends Augmentation<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.alto.provider.impl.rev141119.ClearToastsMadeInput>> augmentationType, Augmentation<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.alto.provider.impl.rev141119.ClearToastsMadeInput> augmentation) {
-        if (augmentation == null) {
-            return removeAugmentation(augmentationType);
-        }
-        this.augmentation.put(augmentationType, augmentation);
-        return this;
-    }
-    
-    public ClearToastsMadeInputBuilder removeAugmentation(java.lang.Class<? extends Augmentation<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.alto.provider.impl.rev141119.ClearToastsMadeInput>> augmentationType) {
-        this.augmentation.remove(augmentationType);
-        return this;
-    }
-
-    public ClearToastsMadeInput build() {
-        return new ClearToastsMadeInputImpl(this);
-    }
-
-    private static final class ClearToastsMadeInputImpl implements ClearToastsMadeInput {
-
-        public java.lang.Class<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.alto.provider.impl.rev141119.ClearToastsMadeInput> getImplementedInterface() {
-            return org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.alto.provider.impl.rev141119.ClearToastsMadeInput.class;
-        }
-
-        private final InstanceIdentifier<?> _contextInstance;
-
-        private Map<java.lang.Class<? extends Augmentation<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.alto.provider.impl.rev141119.ClearToastsMadeInput>>, Augmentation<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.alto.provider.impl.rev141119.ClearToastsMadeInput>> augmentation = new HashMap<>();
-
-        private ClearToastsMadeInputImpl(ClearToastsMadeInputBuilder base) {
-            this._contextInstance = base.getContextInstance();
-                switch (base.augmentation.size()) {
-                case 0:
-                    this.augmentation = Collections.emptyMap();
-                    break;
-                    case 1:
-                        final Map.Entry<java.lang.Class<? extends Augmentation<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.alto.provider.impl.rev141119.ClearToastsMadeInput>>, Augmentation<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.alto.provider.impl.rev141119.ClearToastsMadeInput>> e = base.augmentation.entrySet().iterator().next();
-                        this.augmentation = Collections.<java.lang.Class<? extends Augmentation<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.alto.provider.impl.rev141119.ClearToastsMadeInput>>, Augmentation<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.alto.provider.impl.rev141119.ClearToastsMadeInput>>singletonMap(e.getKey(), e.getValue());
-                    break;
-                default :
-                    this.augmentation = new HashMap<>(base.augmentation);
-                }
-        }
-
-        @Override
-        public InstanceIdentifier<?> getContextInstance() {
-            return _contextInstance;
-        }
-        
-        @SuppressWarnings("unchecked")
-        @Override
-        public <E extends Augmentation<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.alto.provider.impl.rev141119.ClearToastsMadeInput>> E getAugmentation(java.lang.Class<E> augmentationType) {
-            if (augmentationType == null) {
-                throw new IllegalArgumentException("Augmentation Type reference cannot be NULL!");
-            }
-            return (E) augmentation.get(augmentationType);
-        }
-
-        @Override
-        public int hashCode() {
-            final int prime = 31;
-            int result = 1;
-            result = prime * result + ((_contextInstance == null) ? 0 : _contextInstance.hashCode());
-            result = prime * result + ((augmentation == null) ? 0 : augmentation.hashCode());
-            return result;
-        }
-
-        @Override
-        public boolean equals(java.lang.Object obj) {
-            if (this == obj) {
-                return true;
-            }
-            if (!(obj instanceof DataObject)) {
-                return false;
-            }
-            if (!org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.alto.provider.impl.rev141119.ClearToastsMadeInput.class.equals(((DataObject)obj).getImplementedInterface())) {
-                return false;
-            }
-            org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.alto.provider.impl.rev141119.ClearToastsMadeInput other = (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.alto.provider.impl.rev141119.ClearToastsMadeInput)obj;
-            if (_contextInstance == null) {
-                if (other.getContextInstance() != null) {
-                    return false;
-                }
-            } else if(!_contextInstance.equals(other.getContextInstance())) {
-                return false;
-            }
-            if (getClass() == obj.getClass()) {
-                // Simple case: we are comparing against self
-                ClearToastsMadeInputImpl otherImpl = (ClearToastsMadeInputImpl) obj;
-                if (augmentation == null) {
-                    if (otherImpl.augmentation != null) {
-                        return false;
-                    }
-                } else if(!augmentation.equals(otherImpl.augmentation)) {
-                    return false;
-                }
-            } else {
-                // Hard case: compare our augments with presence there...
-                for (Map.Entry<java.lang.Class<? extends Augmentation<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.alto.provider.impl.rev141119.ClearToastsMadeInput>>, Augmentation<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.alto.provider.impl.rev141119.ClearToastsMadeInput>> e : augmentation.entrySet()) {
-                    if (!e.getValue().equals(other.getAugmentation(e.getKey()))) {
-                        return false;
-                    }
-                }
-                // .. and give the other one the chance to do the same
-                if (!obj.equals(this)) {
-                    return false;
-                }
-            }
-            return true;
-        }
-
-        @Override
-        public java.lang.String toString() {
-            java.lang.StringBuilder builder = new java.lang.StringBuilder ("ClearToastsMadeInput [");
-            boolean first = true;
-        
-            if (_contextInstance != null) {
-                if (first) {
-                    first = false;
-                } else {
-                    builder.append(", ");
-                }
-                builder.append("_contextInstance=");
-                builder.append(_contextInstance);
-             }
-            if (first) {
-                first = false;
-            } else {
-                builder.append(", ");
-            }
-            builder.append("augmentation=");
-            builder.append(augmentation.values());
-            return builder.append(']').toString();
-        }
-    }
-
-}
diff --git a/alto-provider/src/main/yang-gen-sal/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/controller/config/alto/provider/impl/rev141119/ClearToastsMadeRpc.java b/alto-provider/src/main/yang-gen-sal/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/controller/config/alto/provider/impl/rev141119/ClearToastsMadeRpc.java
deleted file mode 100644 (file)
index df22214..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-package org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.alto.provider.impl.rev141119;
-import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.binding.BaseIdentity;
-
-
-/**
- * &lt;p&gt;This class represents the following YANG schema fragment defined in module &lt;b&gt;alto-provider-impl&lt;/b&gt;
- * &lt;br&gt;(Source path: &lt;i&gt;META-INF/yang/alto-provider-impl.yang&lt;/i&gt;):
- * &lt;pre&gt;
- * identity clear-toasts-made-rpc {
- *     status CURRENT;
- * }
- * &lt;/pre&gt;
- * The schema path to identify an instance is
- * &lt;i&gt;alto-provider-impl/clear-toasts-made-rpc&lt;/i&gt;
- *
- */
-public abstract class ClearToastsMadeRpc extends BaseIdentity
- {
-    public static final QName QNAME = org.opendaylight.yangtools.yang.common.QName.cachedReference(org.opendaylight.yangtools.yang.common.QName.create("urn:opendaylight:params:xml:ns:yang:controller:config:alto-provider:impl","2014-11-19","clear-toasts-made-rpc"));
-
-    public ClearToastsMadeRpc() {
-    
-    
-    }
-    
-
-
-
-
-
-
-
-
-
-}
-
index 78aade8e8dfc7814698faf56502eff74af9ff828..048e9c14993497662f2fd552d2ce7344aaac1d4f 100644 (file)
@@ -1,7 +1,7 @@
 module alto-provider-impl {
 
   yang-version 1;
-  
+
   namespace "urn:opendaylight:params:xml:ns:yang:controller:config:alto-provider:impl";
   // TODO: replace with IANA namespace when assigned
 
@@ -11,7 +11,7 @@ module alto-provider-impl {
     prefix config;
     revision-date 2013-04-05;
   }
-  
+
   import opendaylight-md-sal-binding {
     prefix mdsal;
     revision-date 2013-10-28;
@@ -22,15 +22,13 @@ module alto-provider-impl {
   organization "ALTO WG";
   contact "alto@ietf.org";
 
-  description 
+  description
     "This module defines the implementation model for the ALTO services
      using restconf. Note this is not interop with RFC7285.";
 
   revision 2014-11-19 {
     description "Initial version for ODL.";
   }
-  
-
 
   // This is the definition of the service implementation as a module identity
   identity alto-provider-impl {
@@ -40,7 +38,7 @@ module alto-provider-impl {
     config:java-name-prefix AltoProvider;
   }
 
-  // Augments the 'configuration' choice node under modules/module.  
+  // Augments the 'configuration' choice node under modules/module.
   augment "/config:modules/config:module/config:configuration" {
     case alto-provider-impl {
       when "/config:modules/config:module/config:type = 'alto-provider-impl'";
@@ -54,7 +52,7 @@ module alto-provider-impl {
         }
       }
 
-      //wires in the data-broker service 
+      //wires in the data-broker service
       container data-broker {
         uses config:service-ref {
           refine type {
@@ -62,7 +60,7 @@ module alto-provider-impl {
             config:required-identity mdsal:binding-async-data-broker;
           }
         }
-      }      
+      }
     }
   }
 
@@ -70,28 +68,12 @@ module alto-provider-impl {
     augment "/config:modules/config:module/config:state" {
         case alto-provider-impl {
             when "/config:modules/config:module/config:type = 'alto-provider-impl'";
-            
+
             leaf toasts-made {
                 type uint32;
             }
-            
-            rpcx:rpc-context-instance "clear-toasts-made-rpc";
-        }
-    }
 
-    identity clear-toasts-made-rpc;
-
-    rpc clear-toasts-made  {
-        description
-          "JMX call to clear the toasts-made counter.";
-          
-        input {
-            uses rpcx:rpc-context-ref {
-                refine context-instance {
-                    rpcx:rpc-context-instance clear-toasts-made-rpc;
-                }
-            }
+            rpcx:rpc-context-instance "clear-toasts-made-rpc";
         }
     }
-
 }
diff --git a/alto-services/api/pom.xml b/alto-services/api/pom.xml
deleted file mode 100644 (file)
index 80a9121..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-
-  <parent>
-    <groupId>org.opendaylight.alto</groupId>
-    <artifactId>alto-parent</artifactId>
-    <version>1.0.0-SNAPSHOT</version>
-    <relativePath>../..</relativePath>
-  </parent>
-
-  <groupId>org.opendaylight.alto</groupId>
-  <artifactId>services.api</artifactId>
-  <packaging>bundle</packaging>
-
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-checkstyle-plugin</artifactId>
-        <version>${checkstyle.version}</version>
-
-        <executions>
-          <execution>
-            <phase>process-sources</phase>
-            <goals>
-              <goal>check</goal>
-            </goals>
-          </execution>
-        </executions>
-
-        <configuration>
-          <failsOnError>true</failsOnError>
-          <configLocation>controller/checkstyle.xml</configLocation>
-          <consoleOutput>true</consoleOutput>
-          <includeTestSourceDirectory>true</includeTestSourceDirectory>
-          <sourceDirectory>${project.basedir}</sourceDirectory>
-          <excludes>**\/target\/,**\/bin\/,**\/third-party,**\/yang-gen-sal</excludes>
-        </configuration>
-
-        <dependencies>
-          <dependency>
-            <groupId>org.opendaylight.controller</groupId>
-            <artifactId>checkstyle</artifactId>
-            <version>${controller.checkstyle.version}</version>
-          </dependency>
-        </dependencies>
-      </plugin>
-
-      <plugin>
-        <groupId>org.apache.felix</groupId>
-        <artifactId>maven-bundle-plugin</artifactId>
-        <version>${bundle.plugin.version}</version>
-        <extensions>true</extensions>
-        <configuration>
-          <instructions>
-            <Import-Package>
-              org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924,
-            </Import-Package>
-            <Export-Package>
-              org.opendaylight.alto.services.api.*;
-            </Export-Package>
-            <Bundle-Name>${project.groupId}.${project.artifactId}</Bundle-Name>
-          </instructions>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
-
-  <dependencies>
-
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>alto-model</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-
-  </dependencies>
-</project>
-
diff --git a/alto-services/api/src/main/java/org/opendaylight/alto/services/api/IRDService.java b/alto-services/api/src/main/java/org/opendaylight/alto/services/api/IRDService.java
deleted file mode 100644 (file)
index 2911757..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-
-package org.opendaylight.alto.services.api;
-
-import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.IRD;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.ird.data.Resources;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.ResourceId;
-
-public interface IRDService {
-
-    public IRD getIRD();
-
-    public boolean register(ResourceId id, Resources resource);
-
-    public void unregister(ResourceId id);
-
-}
diff --git a/alto-services/ext/pom.xml b/alto-services/ext/pom.xml
deleted file mode 100644 (file)
index dd8f114..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-
-  <parent>
-    <groupId>org.opendaylight.alto</groupId>
-    <artifactId>alto-parent</artifactId>
-    <version>1.0.0-SNAPSHOT</version>
-    <relativePath>../..</relativePath>
-  </parent>
-
-  <groupId>org.opendaylight.alto</groupId>
-  <artifactId>services.ext</artifactId>
-  <packaging>pom</packaging>
-
-  <modules>
-    <module>fs-map</module>
-  </modules>
-
-</project>
-
similarity index 73%
rename from alto-services/ext/fs-map/pom.xml
rename to alto-services/pom.xml
index 09cdd49c99734f6c38a8f5c196e51584194651a5..fe597cbd26131d9d27a7f08acb869b07c232fd44 100644 (file)
@@ -6,18 +6,17 @@
 
   <parent>
     <groupId>org.opendaylight.alto</groupId>
-    <artifactId>services.ext</artifactId>
+    <artifactId>alto-parent</artifactId>
     <version>1.0.0-SNAPSHOT</version>
-    <relativePath>..</relativePath>
+    <relativePath>../</relativePath>
   </parent>
 
   <groupId>org.opendaylight.alto</groupId>
-  <artifactId>services.ext.fs-map</artifactId>
+  <artifactId>alto-services</artifactId>
   <packaging>bundle</packaging>
 
   <build>
     <plugins>
-
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-checkstyle-plugin</artifactId>
         <configuration>
           <instructions>
             <Import-Package>
-              org.opendaylight.alto.commons.types.rfc7285,
-              org.opendaylight.alto.services.api,
+              org.opendaylight.yang.gen.v1.urn.opendaylight.alto.*,
               org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924,
-              org.slf4j,
+              org.opendaylight.yangtools.yang.common,
+              org.opendaylight.yangtools.yang.binding,
+              org.opendaylight.controller.md.sal.binding.api,
+              org.opendaylight.controller.sal.binding.api,
+              org.osgi.framework
             </Import-Package>
             <Export-Package>
-              org.opendaylight.alto.services.ext.fsmap;
+              org.opendaylight.alto.services;
             </Export-Package>
-            <Bundle-Name>${project.groupId}.${project.artifactId}</Bundle-Name>
+            <Bundle-Activator>org.opendaylight.alto.services.AltoService</Bundle-Activator>
           </instructions>
         </configuration>
       </plugin>
   </build>
 
   <dependencies>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>alto-model</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>services.api</artifactId>
-      <version>${project.version}</version>
+      <groupId>org.opendaylight.controller</groupId>
+      <artifactId>sal-binding-api</artifactId>
+      <version>${mdsal.version}</version>
     </dependency>
-
     <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>commons</artifactId>
-      <version>${project.version}</version>
+      <groupId>org.osgi</groupId>
+      <artifactId>org.osgi.core</artifactId>
+      <version>${osgi.core.version}</version>
     </dependency>
-
   </dependencies>
 </project>
 
diff --git a/alto-services/src/main/java/org/opendaylight/alto/services/AltoService.java b/alto-services/src/main/java/org/opendaylight/alto/services/AltoService.java
new file mode 100644 (file)
index 0000000..066b27a
--- /dev/null
@@ -0,0 +1,93 @@
+package org.opendaylight.alto.services;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.ExecutionException;
+
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.controller.md.sal.binding.api.ReadTransaction;
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
+import org.opendaylight.controller.sal.binding.api.AbstractBrokerAwareActivator;
+import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
+import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ConsumerContext;
+import org.opendaylight.controller.sal.binding.api.BindingAwareConsumer;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Uri;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.resources.IRDBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.resources.NetworkMaps;
+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.service.types.rev150404.CostMetric;
+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.CostTypeName;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.IRD;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.MediaType;
+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.cost.types.CostTypes;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.cost.types.CostTypesBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.cost.types.CostTypesKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.ird.MetaBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.ird.data.Resources;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.ird.data.ResourcesBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.types.rev150404.ird.data.ResourcesKey;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.osgi.framework.BundleContext;
+
+import com.google.common.base.Optional;
+
+public class AltoService extends AbstractBrokerAwareActivator implements BindingAwareConsumer {
+  private DataBroker dataBroker;
+  
+  @Override
+  public void onSessionInitialized(ConsumerContext session) {
+    this.dataBroker = session.getSALService(DataBroker.class);
+  }
+  
+  public NetworkMap getNetworkMap(ResourceId resourceId) {
+    ReadTransaction tx = dataBroker.newReadOnlyTransaction();
+    Optional<NetworkMap> networkMap = null;
+    try {
+      InstanceIdentifier<NetworkMap> npIID = InstanceIdentifier
+          .builder(org.opendaylight.yang.gen.v1.urn.opendaylight.alto.rev150404.Resources.class)
+          .child(NetworkMaps.class)
+          .child(NetworkMap.class, new NetworkMapKey(new ResourceId(resourceId)))
+          .build();
+      networkMap = tx.read(LogicalDatastoreType.OPERATIONAL, npIID).get();
+    } catch (InterruptedException | ExecutionException e) {
+      e.printStackTrace();
+    }
+    
+    return networkMap.get();
+  }
+
+  public IRD getIRD() {
+    IRDBuilder irdb = new IRDBuilder();
+    MetaBuilder mb = new MetaBuilder();
+
+    List<CostTypes> cost_types = new ArrayList<CostTypes>();
+    CostTypesBuilder cb = new CostTypesBuilder();
+    CostTypeName name = new CostTypeName("num-routing");
+    CostMetric metric = new CostMetric(CostMetric.Enumeration.Routingcost);
+    CostMode mode = CostMode.Numerical;
+    CostTypesKey ckey = new CostTypesKey(name);
+
+    cost_types.add(cb.setCostTypeName(name).setCostMetric(metric).setCostMode(mode).setKey(ckey).build());
+    irdb.setMeta(mb.setCostTypes(cost_types).build());
+
+    List<Resources> resources = new ArrayList<Resources>();
+    ResourcesBuilder rb = new ResourcesBuilder();
+
+    MediaType mt = new MediaType(MediaType.Enumeration.AltoNetworkmap);
+    Uri uri = new Uri("http://localhost:8080/controller/nb/v2/networkmap/default");
+    ResourcesKey rkey = new ResourcesKey(new ResourceId("my-default-networkmap"));
+
+    resources.add(rb.setMediaType(mt).setUri(uri).setKey(rkey).build());
+    irdb.setResources(resources);
+
+    return irdb.build();
+  }
+
+  @Override
+  protected void onBrokerAvailable(BindingAwareBroker broker, BundleContext context) {
+    broker.registerConsumer(this);
+  }
+}
index 3114060382e9c81f59774856111cf7fdbdbd8216..bf51a0ca5de051b229b60a68822b1f10212a5c3e 100644 (file)
@@ -79,13 +79,19 @@ and is available at http://www.eclipse.org/legal/epl-v10.html INTERNAL
 
     <dependency>
       <groupId>${project.groupId}</groupId>
-      <artifactId>commons</artifactId>
+      <artifactId>alto-commons</artifactId>
       <version>${project.version}</version>
     </dependency>
 
     <dependency>
       <groupId>${project.groupId}</groupId>
-      <artifactId>services.api</artifactId>
+      <artifactId>alto-services</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>alto-provider</artifactId>
       <version>${project.version}</version>
     </dependency>
 
index d7399a97e693cbc76c28dadadbe58740aa10838b..24107cefc21c101bc56e9620f95ef73bd8ed23e5 100644 (file)
@@ -13,34 +13,42 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
   <repository>mvn:org.opendaylight.controller/features-mdsal/${mdsal.version}/xml/features</repository>
   <repository>mvn:org.opendaylight.controller/features-restconf/${mdsal.version}/xml/features</repository>
 
+  <feature name='odl-alto-all' version='${project.version}' description='OpenDaylight :: alto :: all '>
+    <feature version='${project.version}'>odl-alto-provider</feature>
+    <feature version='${project.version}'>odl-alto-northbound</feature>
+  </feature>
+
   <feature name='odl-alto-model' version='${project.version}' description='OpenDaylight :: alto :: model '>
     <feature version='${yangtools.version}'>odl-yangtools-models</feature>
     <bundle>mvn:org.opendaylight.alto/alto-model/${project.version}</bundle>
   </feature>
 
-  <feature name='odl-alto-jackson-dependency' version='${project.version}' description='Opendaylight :: alto :: jackson_dependency'>
-    <bundle>mvn:com.fasterxml.jackson.core/jackson-annotations/${jackson.version}</bundle> 
-    <bundle>mvn:com.fasterxml.jackson.core/jackson-core/${jackson.version}</bundle> 
-    <bundle>mvn:com.fasterxml.jackson.core/jackson-databind/${jackson.version}</bundle> 
-  </feature>
-
-  <feature name='odl-alto-utils' version='${project.version}' description='OpenDaylight :: alto :: utils'>
+  <feature name='odl-alto-commons' version='${project.version}' description='OpenDaylight :: alto :: commons'>
     <feature version='${project.version}'>odl-alto-model</feature>
     <feature version='${jackson.version}'>odl-base-jackson</feature>
-    <bundle>mvn:org.opendaylight.alto/commons/${project.version}</bundle>
-    <bundle>mvn:org.opendaylight.alto/services.api/${project.version}</bundle>
+    <bundle>mvn:org.opendaylight.alto/alto-commons/${project.version}</bundle>
+  </feature>
+
+  <feature name='odl-alto-provider' version='${project.version}' description='OpenDaylight :: alto :: provider'>
+    <feature version='${project.version}'>odl-alto-commons</feature>
+    <feature version='${mdsal.version}'>odl-mdsal-common</feature>
+    <feature version='${mdsal.version}'>odl-mdsal-broker</feature>
+    <feature version='${config.version}'>odl-config-api</feature>
+    <configfile finalname="configuration/default.networkmap">mvn:org.opendaylight.alto/alto-provider/${project.version}/xml/config</configfile>
+    <bundle>mvn:org.opendaylight.alto/alto-provider/${project.version}</bundle>
   </feature>
 
-  <feature name='odl-alto-extension' version='${project.version}' description='Opendaylight :: alto :: extension'>
-    <feature version='${project.version}'>odl-alto-utils</feature>
-    <bundle>mvn:org.opendaylight.alto/services.ext.fs-map/${project.version}</bundle>
+  <feature name='odl-alto-services' version='${project.version}' description='OpenDaylight :: alto :: services'>
+    <feature version='${project.version}'>odl-alto-commons</feature>
+    <feature version='${mdsal.version}'>odl-mdsal-common</feature>
+    <feature version='${mdsal.version}'>odl-mdsal-broker</feature>
+    <bundle>mvn:org.opendaylight.alto/alto-services/${project.version}</bundle>
   </feature>
 
   <feature name='odl-alto-northbound' version='${project.version}' description='Opendaylight :: alto :: northbound'>
-    <feature version='${project.version}'>odl-alto-model</feature>
-    <feature version='${project.version}'>odl-alto-utils</feature>
+    <feature version='${project.version}'>odl-alto-services</feature>
     <feature version='${jersey.version}'>odl-base-jersey</feature>
-    <feature>war</feature>
+    <feature version='${war.version}'>war</feature>
     <feature version='${controller.commons.northbound.version}'>odl-adsal-northbound</feature>
     <bundle>mvn:org.opendaylight.alto/alto-northbound/${project.version}</bundle>
   </feature>
diff --git a/pom.xml b/pom.xml
index 6d17c1a7c34869d43340e97ad6120543825228f0..5104c4db4720afd219e77b2a97f8f9eff3c172ca 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -10,7 +10,6 @@
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent</artifactId>
         <version>1.5.0-SNAPSHOT</version>
-        <relativePath></relativePath>
     </parent>
 
     <groupId>org.opendaylight.alto</groupId>
     <name>alto</name> <!-- Used by Sonar to set project name -->
     <packaging>pom</packaging>
 
-    <!--
-    <scm>
-      <connection>scm:git:ssh://git.opendaylight.org:29418/sfc.git</connection>
-      <developerConnection>scm:git:ssh://git.opendaylight.org:29418/sfc.git</developerConnection>
-      <url>https://wiki.opendaylight.org/view/Service_Function_Chaining:Main</url>
-      <tag>HEAD</tag>
-    </scm>
-    -->
-
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 
+        <checkstyle.skip>true</checkstyle.skip>
+
         <!-- Java Versions -->
         <maven.compiler.source>1.7</maven.compiler.source>
         <maven.compiler.target>1.7</maven.compiler.target>
@@ -48,6 +40,7 @@
         <yang.ext.version>2013.09.07.7-SNAPSHOT</yang.ext.version>
         <config.version>0.3.0-SNAPSHOT</config.version>
         <sal.version>0.7.1-SNAPSHOT</sal.version>
+        <war.version>3.0.1</war.version>
         <mdsal.version>1.2.0-SNAPSHOT</mdsal.version>
         <controller.model.version>1.2.0-SNAPSHOT</controller.model.version>
         <build.helper.version>1.8</build.helper.version>
         <powermock.version>1.5.6</powermock.version>
     </properties>
 
+    <repositories>
+      <repository>
+        <releases>
+          <enabled>true</enabled>
+          <updatePolicy>never</updatePolicy>
+        </releases>
+        <snapshots>
+          <enabled>false</enabled>
+        </snapshots>
+        <id>opendaylight-mirror</id>
+        <name>opendaylight-mirror</name>
+        <url>http://nexus.opendaylight.org/content/groups/public/</url>
+      </repository>
+      <repository>
+        <releases>
+          <enabled>false</enabled>
+        </releases>
+        <snapshots>
+          <enabled>true</enabled>
+        </snapshots>
+        <id>opendaylight-snapshot</id>
+        <name>opendaylight-snapshot</name>
+        <url>http://nexus.opendaylight.org/content/repositories/opendaylight.snapshot/</url>
+      </repository>
+    </repositories>
+
     <distributionManagement>
-        <!-- OpenDayLight Released artifact -->
         <repository>
             <id>opendaylight-release</id>
             <url>http://nexus.opendaylight.org/content/repositories/opendaylight.release</url>
         </repository>
-        <!-- OpenDayLight Snapshot artifact -->
         <snapshotRepository>
             <id>opendaylight-snapshot</id>
             <url>http://nexus.opendaylight.org/content/repositories/opendaylight.snapshot</url>
         </snapshotRepository>
-        <!-- Site deployment -->
-        <!-- site>
-             <id>website</id>
-             <url>${sitedeploy}</url>
-             </site -->
     </distributionManagement>
 
     <modules>
         <module>alto-artifacts</module>
         <module>features</module>
         <module>alto-commons</module>
-        <module>alto-services/api</module>
-        <module>alto-services/ext</module>
+        <module>alto-services</module>
         <!--
         <module>alto-karaf</module>
         -->