Redefine the service model API 60/30060/1
authorKai GAO <gaok12@mails.tsinghua.edu.cn>
Mon, 23 Nov 2015 01:38:13 +0000 (09:38 +0800)
committerKai GAO <gaok12@mails.tsinghua.edu.cn>
Mon, 23 Nov 2015 08:08:25 +0000 (16:08 +0800)
Change-Id: I4d575a1bbdfc423d85e5f05e62e17a9225af2155
Signed-off-by: Kai GAO <gaok12@mails.tsinghua.edu.cn>
README.md
alto-core/standard-service-models/model-base/api/src/main/yang/service-model-base.yang
alto-core/standard-service-models/model-base/impl/src/main/java/org/opendaylight/alto/core/impl/AltoModelBaseProvider.java
alto-core/standard-service-models/model-endpointcost/api/src/main/yang/alto-model-endpointcost-rfc7285.yang
alto-core/standard-service-models/model-endpointcost/api/src/main/yang/alto-model-endpointcost.yang
alto-core/standard-service-models/model-endpointcost/impl/src/main/java/org/opendaylight/alto/core/impl/endpointcost/test/AltoEndpointCostProvider.java
alto-core/standard-service-models/model-networkmap/api/src/main/yang/alto-model-networkmap-rfc7285.yang [new file with mode: 0644]
alto-core/standard-service-models/model-networkmap/api/src/main/yang/alto-model-networkmap.yang
alto-core/standard-service-models/model-networkmap/impl/src/main/java/org/opendaylight/alto/core/impl/networkmap/test/AltoNetworkmapProvider.java

index 4ba0630e85e50f376261b1eb61c048f952afe596..566d61a9f85632457486fc917f61855190655858 100644 (file)
--- a/README.md
+++ b/README.md
@@ -36,7 +36,7 @@
     "input": {
         "service-reference":"/alto-resourcepool:resource-pool/alto-resourcepool:resource[alto-resourcepool:resource-id='test-model-endpointcost']",
         "type":"alto-model-endpointcost:resource-type-endpointcost",
-        "endpointcost-request": {
+        "endpointcost-params": {
             "cost-type": {
                 "cost-mode": "ordinal",
                 "cost-metric": "routingcost"
index f17fb451e1980941e19fafe3658d1f27afb4ca15..b5bca1a00264ca34aaec91808cfc330ab29a9dc7 100644 (file)
@@ -61,12 +61,18 @@ module alto-model-base {
     }
 
     grouping "alto-response-error" {
-        container "error" {
-            leaf "error-code" {
-                type "string";
+        uses "alto-response-base" {
+            augment "response" {
+                case "error-response" {
+                    container "error" {
+                        leaf "error-code" {
+                            type "string";
+                        }
+
+                        //TODO
+                    }
+                }
             }
-
-            //TODO
         }
     }
 
@@ -76,12 +82,6 @@ module alto-model-base {
         }
 
         output {
-            uses "alto-response-base";
-        }
-    }
-
-    augment "/alto-model-base:query/alto-model-base:output/alto-model-base:response" {
-        case "error-response" {
             uses "alto-response-error";
         }
     }
index d90e2a409d24e14b5d26679a3e3191f4b1dab361..f270301b60185b81e2924eb5b565ef31ec7c1ccb 100644 (file)
@@ -32,8 +32,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.rev15102
 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.rev151021.QueryInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.rev151021.QueryOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.rev151021.QueryOutputBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.rev151021.query.output.response.ErrorResponseBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.rev151021.alto.response.error.ErrorBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.rev151021.alto.response.error.response.ErrorResponseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.rev151021.alto.response.error.response.error.response.ErrorBuilder;
 
 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.core.resourcepool.rev150921.AltoResourcepoolService;
 
index e6bddfa0052e22626443c7dd113579a1eab775fa..12e4e19f10655037820c3857e6065e2d1b4fe3dc 100644 (file)
@@ -5,30 +5,18 @@ module alto-model-endpointcost-rfc7285 {
 
     prefix "alto-model-endpointcost-rfc7285";
 
-    import "alto-basic-types" {
-        prefix "alto-types";
-    }
-
-    import "alto-resourcepool" {
-        prefix "alto-resourcpool";
-    }
-
-    import "alto-model-base" {
-        prefix "base";
-    }
-
-    import "alto-model-networkmap" {
-        prefix "networkmap";
-    }
-
     import "alto-model-endpointcost" {
-        prefix "endpointcost";
+        prefix "alto-ecs";
     }
 
     import "ietf-inet-types" {
         prefix "ietf-inet";
     }
 
+    import yang-ext {
+        prefix ext;
+    }
+
     organization "Yale University";
 
     contact "alto-dev@lists.opendaylight.org";
@@ -54,37 +42,39 @@ module alto-model-endpointcost-rfc7285 {
         }
     }
 
-    identity "filter-type-endpointfilter" {
-        base "endpointcost:filter-type-base";
-    }
+    augment "/alto-ecs:query/alto-ecs:input/alto-ecs:request/alto-ecs:endpointcost-request/alto-ecs:endpointcost-params/alto-ecs:filter" {
+        ext:augment-identifier "rfc7285-endpoint-filter";
 
-    augment "/base:query/base:input/base:request/endpointcost:endpointcost-request-data/endpointcost:endpointcost-request/endpointcost:filter" {
         case "endpoint-filter-data" {
             uses "endpoint-filter-data";
         }
     }
 
     identity "endpointcost-response-type-endpointcostmap" {
-        base "endpointcost:endpointcost-response-type-base";
+        base "alto-ecs:endpointcost-response-type-base";
     }
 
     grouping "endpointcostmap-response-data" {
         container "endpoint-cost-map" {
-            list "endpoint-cost-list" {
-                uses "typed-address-data";
+            list "endpoint-cost" {
+                container "source" {
+                    uses "typed-address-data";
+                }
 
-                list "endpoint-destination-cost" {
+                container "destination" {
                     uses "typed-address-data";
+                }
 
-                    choice "cost" {
-                    }
+                choice "cost" {
                 }
             }
         }
     }
 
-    augment "/base:query/base:output/base:response/endpointcost:endpointcost-response-data/endpointcost:endpointcost-response/endpointcost:data/" {
-        case "endpoint-cost-map-data" {
+    augment "/alto-ecs:query/alto-ecs:output/alto-ecs:response/alto-ecs:endpointcost-response/alto-ecs:endpointcost-data" {
+        ext:augment-identifier "rfc7285-endpoint-cost-map";
+
+        case "endpoint-costmap-data" {
             uses "endpointcostmap-response-data";
         }
     }
@@ -101,7 +91,9 @@ module alto-model-endpointcost-rfc7285 {
         }
     }
 
-    augment "/base:query/base:input/base:request/endpointcost:endpointcost-request-data/endpointcost:endpointcost-request/endpointcost:filter/endpoint-filter-data/endpoint-filter/source/address" {
+    augment "/alto-ecs:query/alto-ecs:input/alto-ecs:request/alto-ecs:endpointcost-request/alto-ecs:endpointcost-params/alto-ecs:filter/endpoint-filter-data/endpoint-filter/source/address" {
+        ext:augment-identifier "rfc7285-endpoint-filter-source";
+
         case ipv4 {
             uses "ipv4-address-data";
         }
@@ -111,7 +103,8 @@ module alto-model-endpointcost-rfc7285 {
         }
     }
 
-    augment "/base:query/base:input/base:request/endpointcost:endpointcost-request-data/endpointcost:endpointcost-request/endpointcost:filter/endpoint-filter-data/endpoint-filter/destination/address" {
+    augment "/alto-ecs:query/alto-ecs:input/alto-ecs:request/alto-ecs:endpointcost-request/alto-ecs:endpointcost-params/alto-ecs:filter/endpoint-filter-data/endpoint-filter/destination/address" {
+        ext:augment-identifier "rfc7285-endpoint-filter-destination";
         case ipv4 {
             uses "ipv4-address-data";
         }
@@ -121,8 +114,9 @@ module alto-model-endpointcost-rfc7285 {
         }
     }
 
+    augment "/alto-ecs:query/alto-ecs:output/alto-ecs:response/alto-ecs:endpointcost-response/alto-ecs:endpointcost-data/endpoint-costmap-data/endpoint-cost-map/endpoint-cost/source/address" {
+        ext:augment-identifier "rfc7285-endpoint-costmap-source";
 
-    augment "/base:query/base:output/base:response/endpointcost:endpointcost-response-data/endpointcost:endpointcost-response/endpointcost:data/endpoint-cost-map-data/endpoint-cost-map/endpoint-cost-list/address" {
         case ipv4 {
             uses "ipv4-address-data";
         }
@@ -132,7 +126,10 @@ module alto-model-endpointcost-rfc7285 {
         }
     }
 
-    augment "/base:query/base:output/base:response/endpointcost:endpointcost-response-data/endpointcost:endpointcost-response/endpointcost:data/endpoint-cost-map-data/endpoint-cost-map/endpoint-cost-list/endpoint-destination-cost/address" {
+
+    augment "/alto-ecs:query/alto-ecs:output/alto-ecs:response/alto-ecs:endpointcost-response/alto-ecs:endpointcost-data/endpoint-costmap-data/endpoint-cost-map/endpoint-cost/destination/address" {
+        ext:augment-identifier "rfc7285-endpoint-costmap-destination";
+
         case ipv4 {
             uses "ipv4-address-data";
         }
@@ -142,7 +139,9 @@ module alto-model-endpointcost-rfc7285 {
         }
     }
 
-    augment "/base:query/base:output/base:response/endpointcost:endpointcost-response-data/endpointcost:endpointcost-response/endpointcost:data/endpoint-cost-map-data/endpoint-cost-map/endpoint-cost-list/endpoint-destination-cost/cost" {
+    augment "/alto-ecs:query/alto-ecs:output/alto-ecs:response/alto-ecs:endpointcost-response/alto-ecs:endpointcost-data/endpoint-costmap-data/endpoint-cost-map/endpoint-cost/cost" {
+        ext:augment-identifier "rfc7825-endpoint-costmap-cost";
+
         case numerical {
             leaf "cost" {
                 type decimal64 {
index 67e9ced06f7526ba4db14edaf2a15c714172558a..2171275d2f09507903fd11d874314d1d4e8dde16 100644 (file)
@@ -10,7 +10,7 @@ module alto-model-endpointcost {
     }
 
     import "alto-resourcepool" {
-        prefix "alto-resourcpool";
+        prefix "alto-resourcepool";
     }
 
     import "alto-model-base" {
@@ -52,13 +52,8 @@ module alto-model-endpointcost {
         }
     }
 
-    identity "filter-type-base" {
-        description
-            "Base type for endpoint cost filters";
-    }
-
     grouping "endpointcost-request-data" {
-        container "endpointcost-request" {
+        container "endpointcost-params" {
             uses "cost-type-data";
 
             leaf-list "constraints" {
@@ -76,23 +71,37 @@ module alto-model-endpointcost {
     }
 
     grouping "endpointcost-response-data" {
-        container "endpointcost-response" {
-            uses "cost-type-data";
+        choice "endpointcost-data" {
+        }
+    }
 
-            choice "data" {
+    grouping "alto-request-endpointcost" {
+        uses "base:alto-request-base" {
+            augment "request" {
+                case "endpointcost-request" {
+                    uses "endpointcost-request-data";
+                }
             }
         }
     }
 
-    augment "/base:query/base:input/base:request" {
-        case "endpointcost-request-data" {
-            uses "endpointcost-request-data";
+    grouping "alto-response-endpointcost" {
+        uses "base:alto-response-error" {
+            augment "response" {
+                case "endpointcost-response" {
+                    uses "endpointcost-response-data";
+                }
+            }
         }
     }
 
-    augment "/base:query/base:output/base:response" {
-        case "endpointcost-response-data" {
-            uses "endpointcost-response-data";
+    rpc query {
+        input {
+            uses "alto-request-endpointcost";
+        }
+
+        output {
+            uses "alto-response-endpointcost";
         }
     }
 
index 23e367a9be8f6d81661be559cfb35eccab141790..2fdc9d5263d7fce50f745b69b281e3af88b79a07 100644 (file)
@@ -31,32 +31,33 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.core.resourcepool.rev1
 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.core.types.rev150921.CostMetric;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.core.types.rev150921.ResourceId;
 
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rev151021.AltoModelEndpointcostService;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rev151021.QueryInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rev151021.QueryOutput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rev151021.QueryOutputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rev151021.ResourceTypeEndpointcost;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rev151021.alto.request.endpointcost.request.EndpointcostRequest;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rev151021.cost.type.data.CostType;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rev151021.cost.type.data.CostTypeBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rev151021.endpointcost.request.data.EndpointcostRequest;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rev151021.endpointcost.response.data.EndpointcostResponseBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rev151021.query.input.request.EndpointcostRequestData;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rev151021.query.output.response.EndpointcostResponseDataBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rev151021.endpointcost.request.data.EndpointcostParams;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rev151021.verify.resource.input.capability.spec.CostTypeSpecBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rfc7285.rev151021.Ipv4AddressData;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rfc7285.rev151021.Ipv6AddressData;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rfc7285.rev151021.TypedAddressData;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rfc7285.rev151021.endpoint.filter.data.EndpointFilter;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rfc7285.rev151021.endpointcostmap.response.data.EndpointCostMapBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rfc7285.rev151021.endpointcostmap.response.data.endpoint.cost.map.EndpointCostList;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rfc7285.rev151021.endpointcostmap.response.data.endpoint.cost.map.EndpointCostListBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rfc7285.rev151021.endpointcostmap.response.data.endpoint.cost.map.endpoint.cost.list.EndpointDestinationCost;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rfc7285.rev151021.endpointcostmap.response.data.endpoint.cost.map.endpoint.cost.list.EndpointDestinationCostBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rfc7285.rev151021.endpointcostmap.response.data.endpoint.cost.map.endpoint.cost.list.endpoint.destination.cost.Cost;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rfc7285.rev151021.query.input.request.endpointcost.request.data.endpointcost.request.filter.EndpointFilterData;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rfc7285.rev151021.query.output.response.endpointcost.response.data.endpointcost.response.data.EndpointCostMapDataBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rfc7285.rev151021.endpointcostmap.response.data.endpoint.cost.map.EndpointCost;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rfc7285.rev151021.endpointcostmap.response.data.endpoint.cost.map.EndpointCostBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rfc7285.rev151021.endpointcostmap.response.data.endpoint.cost.map.endpoint.cost.Cost;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rfc7285.rev151021.endpointcostmap.response.data.endpoint.cost.map.endpoint.cost.DestinationBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rfc7285.rev151021.endpointcostmap.response.data.endpoint.cost.map.endpoint.cost.SourceBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rfc7285.rev151021.query.input.request.endpointcost.request.endpointcost.params.filter.EndpointFilterData;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rfc7285.rev151021.query.output.response.endpointcost.response.endpointcost.data.endpoint.costmap.data.endpoint.cost.map.endpoint.cost.cost.NumericalBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rfc7285.rev151021.query.output.response.endpointcost.response.endpointcost.data.endpoint.costmap.data.endpoint.cost.map.endpoint.cost.cost.OrdinalBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rfc7285.rev151021.query.output.response.endpointcost.response.endpointcost.data.EndpointCostmapDataBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rfc7285.rev151021.typed.address.data.Address;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rev151021.alto.response.endpointcost.response.EndpointcostResponseBuilder;
 
-import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.rev151021.AltoModelBaseService;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.rev151021.QueryInput;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.rev151021.QueryOutput;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.rev151021.QueryOutputBuilder;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 
 import org.opendaylight.yangtools.yang.common.RpcResult;
@@ -65,12 +66,12 @@ import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class AltoEndpointCostProvider implements BindingAwareProvider, AutoCloseable, AltoModelBaseService {
+public class AltoEndpointCostProvider implements BindingAwareProvider, AutoCloseable, AltoModelEndpointcostService {
 
     private static final Logger LOG = LoggerFactory.getLogger(AltoEndpointCostProvider.class);
 
     private DataBroker m_dataBrokerService = null;
-    private RoutedRpcRegistration<AltoModelBaseService> m_serviceReg = null;
+    private RoutedRpcRegistration<AltoModelEndpointcostService> m_serviceReg = null;
     private AltoResourcepoolService m_resourcepoolService = null;
 
     private static final ResourceId TEST_ENDPOINTCOST_RID = new ResourceId("test-model-endpointcost");
@@ -87,7 +88,7 @@ public class AltoEndpointCostProvider implements BindingAwareProvider, AutoClose
         LOG.info("AltoModelEndpointCostProvider Session Initiated");
 
         m_dataBrokerService = session.getSALService(DataBroker.class);
-        m_serviceReg = session.addRoutedRpcImplementation(AltoModelBaseService.class, this);
+        m_serviceReg = session.addRoutedRpcImplementation(AltoModelEndpointcostService.class, this);
 
         CostTypeBuilder ctBuilder = new CostTypeBuilder();
         ctBuilder.setCostMetric(COST_METRIC_ROUTINGCOST);
@@ -130,16 +131,16 @@ public class AltoEndpointCostProvider implements BindingAwareProvider, AutoClose
     }
 
     protected Cost createNumericalCost(double cost) {
-        org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rfc7285.rev151021.query.output.response.endpointcost.response.data.endpointcost.response.data.endpoint.cost.map.data.endpoint.cost.map.endpoint.cost.list.endpoint.destination.cost.cost.NumericalBuilder builder;
-        builder = new org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rfc7285.rev151021.query.output.response.endpointcost.response.data.endpointcost.response.data.endpoint.cost.map.data.endpoint.cost.map.endpoint.cost.list.endpoint.destination.cost.cost.NumericalBuilder();
+        NumericalBuilder builder;
+        builder = new NumericalBuilder();
 
         builder.setCost(new BigDecimal(cost));
         return builder.build();
     }
 
     protected Cost createOrdinalCost(int order) {
-        org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rfc7285.rev151021.query.output.response.endpointcost.response.data.endpointcost.response.data.endpoint.cost.map.data.endpoint.cost.map.endpoint.cost.list.endpoint.destination.cost.cost.OrdinalBuilder builder;
-        builder = new org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rfc7285.rev151021.query.output.response.endpointcost.response.data.endpointcost.response.data.endpoint.cost.map.data.endpoint.cost.map.endpoint.cost.list.endpoint.destination.cost.cost.OrdinalBuilder();
+        OrdinalBuilder builder;
+        builder = new OrdinalBuilder();
 
         builder.setCost(order);
         return builder.build();
@@ -147,14 +148,14 @@ public class AltoEndpointCostProvider implements BindingAwareProvider, AutoClose
 
     protected Address createSourceAddress(Address from) {
         if (from instanceof Ipv4AddressData) {
-            org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rfc7285.rev151021.query.output.response.endpointcost.response.data.endpointcost.response.data.endpoint.cost.map.data.endpoint.cost.map.endpoint.cost.list.address.Ipv4Builder builder;
-            builder = new org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rfc7285.rev151021.query.output.response.endpointcost.response.data.endpointcost.response.data.endpoint.cost.map.data.endpoint.cost.map.endpoint.cost.list.address.Ipv4Builder();
+            org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rfc7285.rev151021.query.output.response.endpointcost.response.endpointcost.data.endpoint.costmap.data.endpoint.cost.map.endpoint.cost.source.address.Ipv4Builder builder;
+            builder = new org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rfc7285.rev151021.query.output.response.endpointcost.response.endpointcost.data.endpoint.costmap.data.endpoint.cost.map.endpoint.cost.source.address.Ipv4Builder();
 
             builder.fieldsFrom((Ipv4AddressData)from);
             return builder.build();
         } else if (from instanceof Ipv6AddressData) {
-            org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rfc7285.rev151021.query.output.response.endpointcost.response.data.endpointcost.response.data.endpoint.cost.map.data.endpoint.cost.map.endpoint.cost.list.address.Ipv6Builder builder;
-            builder = new org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rfc7285.rev151021.query.output.response.endpointcost.response.data.endpointcost.response.data.endpoint.cost.map.data.endpoint.cost.map.endpoint.cost.list.address.Ipv6Builder();
+            org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rfc7285.rev151021.query.output.response.endpointcost.response.endpointcost.data.endpoint.costmap.data.endpoint.cost.map.endpoint.cost.source.address.Ipv6Builder builder;
+            builder = new org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rfc7285.rev151021.query.output.response.endpointcost.response.endpointcost.data.endpoint.costmap.data.endpoint.cost.map.endpoint.cost.source.address.Ipv6Builder();
 
             builder.fieldsFrom((Ipv6AddressData)from);
             return builder.build();
@@ -164,18 +165,18 @@ public class AltoEndpointCostProvider implements BindingAwareProvider, AutoClose
 
     protected Address createDestinationAddress(Address from) {
         if (from instanceof Ipv4AddressData) {
-            org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rfc7285.rev151021.query.output.response.endpointcost.response.data.endpointcost.response.data.endpoint.cost.map.data.endpoint.cost.map.endpoint.cost.list.endpoint.destination.cost.address.Ipv4Builder builder;
-            builder = new org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rfc7285.rev151021.query.output.response.endpointcost.response.data.endpointcost.response.data.endpoint.cost.map.data.endpoint.cost.map.endpoint.cost.list.endpoint.destination.cost.address.Ipv4Builder();
+            org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rfc7285.rev151021.query.output.response.endpointcost.response.endpointcost.data.endpoint.costmap.data.endpoint.cost.map.endpoint.cost.destination.address.Ipv4Builder builder;
+            builder = new org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rfc7285.rev151021.query.output.response.endpointcost.response.endpointcost.data.endpoint.costmap.data.endpoint.cost.map.endpoint.cost.destination.address.Ipv4Builder();
 
             builder.fieldsFrom((Ipv4AddressData)from);
             return builder.build();
         } else if (from instanceof Ipv6AddressData) {
-            org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rfc7285.rev151021.query.output.response.endpointcost.response.data.endpointcost.response.data.endpoint.cost.map.data.endpoint.cost.map.endpoint.cost.list.endpoint.destination.cost.address.Ipv6Builder builder;
-            builder = new org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rfc7285.rev151021.query.output.response.endpointcost.response.data.endpointcost.response.data.endpoint.cost.map.data.endpoint.cost.map.endpoint.cost.list.endpoint.destination.cost.address.Ipv6Builder();
+            org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rfc7285.rev151021.query.output.response.endpointcost.response.endpointcost.data.endpoint.costmap.data.endpoint.cost.map.endpoint.cost.destination.address.Ipv6Builder builder;
+            builder = new org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.endpointcost.rfc7285.rev151021.query.output.response.endpointcost.response.endpointcost.data.endpoint.costmap.data.endpoint.cost.map.endpoint.cost.destination.address.Ipv6Builder();
 
             builder.fieldsFrom((Ipv6AddressData)from);
             return builder.build();
-        }
+}
         return null;
     }
 
@@ -184,13 +185,10 @@ public class AltoEndpointCostProvider implements BindingAwareProvider, AutoClose
         if (!input.getType().equals(ResourceTypeEndpointcost.class)) {
             return RpcResultBuilder.<QueryOutput>failed().buildFuture();
         }
-        EndpointcostRequestData requestData = (EndpointcostRequestData)input.getRequest();
-        EndpointcostRequest request = requestData.getEndpointcostRequest();
-        CostType costType = request.getCostType();
+        EndpointcostRequest request = (EndpointcostRequest)input.getRequest();
+        EndpointcostParams params = request.getEndpointcostParams();
 
-        if (!(request.getFilter() instanceof EndpointFilterData)) {
-            return RpcResultBuilder.<QueryOutput>failed().buildFuture();
-        }
+        CostType costType = params.getCostType();
         if (!costType.getCostMode().equals("ordinal")) {
             LOG.warn(costType.getCostMode().toString());
             return RpcResultBuilder.<QueryOutput>failed().buildFuture();
@@ -200,45 +198,45 @@ public class AltoEndpointCostProvider implements BindingAwareProvider, AutoClose
             return RpcResultBuilder.<QueryOutput>failed().buildFuture();
         }
 
-        EndpointFilter filter = ((EndpointFilterData)request.getFilter()).getEndpointFilter();
+        if (!(params.getFilter() instanceof EndpointFilterData)) {
+            return RpcResultBuilder.<QueryOutput>failed().buildFuture();
+        }
+
+        EndpointFilter filter = ((EndpointFilterData)params.getFilter()).getEndpointFilter();
         List<? extends TypedAddressData> source = filter.getSource();
         List<? extends TypedAddressData> destination = filter.getDestination();
 
         int order = 0;
-        LinkedList<EndpointCostList> eclList = new LinkedList<EndpointCostList>();
+        LinkedList<EndpointCost> ecList = new LinkedList<EndpointCost>();
         for (TypedAddressData src: source) {
-            LinkedList<EndpointDestinationCost> edcList = new LinkedList<EndpointDestinationCost>();
             for (TypedAddressData dst: destination) {
-                EndpointDestinationCostBuilder edcBuilder = new EndpointDestinationCostBuilder();
+                SourceBuilder srcBuilder = new SourceBuilder();
+                srcBuilder.setAddress(createSourceAddress(src.getAddress()));
 
-                edcBuilder.setAddress(createDestinationAddress(dst.getAddress()));
-                edcBuilder.setCost(createOrdinalCost(++order));
+                DestinationBuilder dstBuilder = new DestinationBuilder();
+                dstBuilder.setAddress(createDestinationAddress(dst.getAddress()));
 
-                edcList.add(edcBuilder.build());
-            }
 
-            EndpointCostListBuilder eclBuilder = new EndpointCostListBuilder();
-            eclBuilder.setAddress(createSourceAddress(src.getAddress()));
-            eclBuilder.setEndpointDestinationCost(edcList);
+                EndpointCostBuilder ecBuilder = new EndpointCostBuilder();
+                ecBuilder.setSource(srcBuilder.build());
+                ecBuilder.setDestination(dstBuilder.build());
+                ecBuilder.setCost(createOrdinalCost(++order));
 
-            eclList.add(eclBuilder.build());
+                ecList.add(ecBuilder.build());
+            }
         }
 
         EndpointCostMapBuilder ecmBuilder = new EndpointCostMapBuilder();
-        ecmBuilder.setEndpointCostList(eclList);
+        ecmBuilder.setEndpointCost(ecList);
 
-        EndpointCostMapDataBuilder ecmdBuilder = new EndpointCostMapDataBuilder();
+        EndpointCostmapDataBuilder ecmdBuilder = new EndpointCostmapDataBuilder();
         ecmdBuilder.setEndpointCostMap(ecmBuilder.build());
 
-        EndpointcostResponseBuilder ecsBuilder = new EndpointcostResponseBuilder();
-        ecsBuilder.setCostType(costType);
-        ecsBuilder.setData(ecmdBuilder.build());
-
-        EndpointcostResponseDataBuilder ecrdBuilder = new EndpointcostResponseDataBuilder();
-        ecrdBuilder.setEndpointcostResponse(ecsBuilder.build());
+        EndpointcostResponseBuilder ecrBuilder = new EndpointcostResponseBuilder();
+        ecrBuilder.setEndpointcostData(ecmdBuilder.build());
 
         QueryOutputBuilder builder = new QueryOutputBuilder();
-        builder.setType(ResourceTypeEndpointcost.class).setResponse(ecrdBuilder.build());
+        builder.setType(ResourceTypeEndpointcost.class).setResponse(ecrBuilder.build());
         return RpcResultBuilder.<QueryOutput>success(builder.build()).buildFuture();
     }
 
diff --git a/alto-core/standard-service-models/model-networkmap/api/src/main/yang/alto-model-networkmap-rfc7285.yang b/alto-core/standard-service-models/model-networkmap/api/src/main/yang/alto-model-networkmap-rfc7285.yang
new file mode 100644 (file)
index 0000000..3e700aa
--- /dev/null
@@ -0,0 +1,46 @@
+module alto-model-networkmap-rfc7285 {
+
+    yang-version 1;
+
+    namespace "urn:opendaylight:alto:service:model:networkmap:rfc7285";
+
+    prefix "alto-model-networkmap-rfc7285";
+
+    import "alto-model-networkmap" {
+        prefix "alto-nm";
+    }
+
+    import "ietf-inet-types" {
+        prefix "ietf-inet";
+    }
+
+    import yang-ext {
+        prefix ext;
+    }
+
+    organization "Yale University";
+
+    contact "alto-dev@lists.opendaylight.org";
+
+    revision "2015-10-21" {
+        description "Initial revision of alto networkmap";
+    }
+
+
+    augment "/alto-nm:query/alto-nm:output/alto-nm:response/alto-nm:networkmap-response/alto-nm:network-map/alto-nm:partition" {
+        ext:augment-identifier "ipv4-prefix-list";
+
+        leaf-list "ipv4" {
+            type ietf-inet:ipv4-prefix;
+        }
+    }
+
+    augment "/alto-nm:query/alto-nm:output/alto-nm:response/alto-nm:networkmap-response/alto-nm:network-map/alto-nm:partition" {
+        ext:augment-identifier "ipv6-prefix-list";
+
+        leaf-list "ipv6" {
+            type ietf-inet:ipv6-prefix;
+        }
+    }
+
+}
index 8edfacef560d49d5f684e4559cb454a5d1dfe047..964a4ca62144aa0a7a89f5ae81745b2c3cabc9c7 100644 (file)
@@ -1,4 +1,5 @@
 module alto-model-networkmap {
+
     yang-version 1;
 
     namespace "urn:opendaylight:alto:service:model:networkmap";
@@ -17,14 +18,6 @@ module alto-model-networkmap {
         prefix "base";
     }
 
-    import "ietf-inet-types" {
-        prefix "ietf-inet";
-    }
-
-    import yang-ext {
-        prefix ext;
-    }
-
     organization "Yale University";
 
     contact "alto-dev@lists.opendaylight.org";
@@ -72,35 +65,37 @@ module alto-model-networkmap {
                 leaf "pid" {
                     type "alto-types:pid-name";
                 }
+            }
+        }
+    }
 
-                list "property" {
-                    key "property-type";
-
-                    leaf "property-type" {
-                        type identityref {
-                            base "property-type-base";
-                        }
-                    }
-
-                    choice "data" {
-                    }
+    grouping "alto-request-networkmap" {
+        uses "base:alto-request-base" {
+            augment "request" {
+                case "networkmap-request" {
+                    uses "networkmap-request-data";
                 }
             }
         }
     }
 
-    augment "/base:query/base:input/base:request" {
-        ext:augment-identifier "alto-networkmap-request";
-
-        case "alto-networkmap-request" {
-            uses "networkmap-request-data";
+    grouping "alto-response-networkmap" {
+        uses "base:alto-response-error" {
+            augment "response" {
+                case "networkmap-response" {
+                    uses "networkmap-response-data";
+                }
+            }
         }
     }
 
-    augment "/base:query/base:output/base:response" {
-        ext:augment-identifier "alto-networkmap-response";
-        case "alto-networkmap-response" {
-            uses "networkmap-response-data";
+    rpc query {
+        input {
+            uses "alto-request-networkmap";
+        }
+
+        output {
+            uses "alto-response-networkmap";
         }
     }
 
@@ -116,19 +111,4 @@ module alto-model-networkmap {
             "Address type for IPv6";
     }
 
-    augment "/base:query/base:output/base:response/alto-networkmap-response/network-map/partition/property/data" {
-        ext:augment-identifier "rfc7285-networkmap-property-data";
-
-        case ipv4 {
-            leaf-list "ipv4" {
-                type ietf-inet:ipv4-prefix;
-            }
-        }
-
-        case ipv6 {
-            leaf-list "ipv6" {
-                type ietf-inet:ipv6-prefix;
-            }
-        }
-    }
 }
index 8c706b278a201aec00921d0b821e21e65ee622a4..442f17f5108931d75379a24ef57af016eb22c6d6 100644 (file)
@@ -34,22 +34,21 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.core.types.rev150921.R
 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.networkmap.rev151021.AddressTypeBase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.networkmap.rev151021.AddressTypeIpv4;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.networkmap.rev151021.AddressTypeIpv6;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.networkmap.rev151021.AltoModelNetworkmapService;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.networkmap.rev151021.QueryInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.networkmap.rev151021.QueryOutput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.networkmap.rev151021.QueryOutputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.networkmap.rev151021.ResourceTypeNetworkmap;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.networkmap.rev151021.alto.request.networkmap.request.NetworkmapRequest;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.networkmap.rev151021.alto.response.networkmap.response.NetworkmapResponseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.networkmap.rev151021.networkmap.request.data.NetworkmapFilter;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.networkmap.rev151021.networkmap.response.data.NetworkMapBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.networkmap.rev151021.networkmap.response.data.network.map.Partition;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.networkmap.rev151021.networkmap.response.data.network.map.PartitionBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.networkmap.rev151021.networkmap.response.data.network.map.partition.Property;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.networkmap.rev151021.networkmap.response.data.network.map.partition.PropertyBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.networkmap.rev151021.query.input.request.AltoNetworkmapRequest;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.networkmap.rev151021.query.output.response.AltoNetworkmapResponseBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.networkmap.rev151021.query.output.response.alto.networkmap.response.network.map.partition.property.data.Ipv4Builder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.networkmap.rev151021.query.output.response.alto.networkmap.response.network.map.partition.property.data.Ipv6Builder;
-
-import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.rev151021.AltoModelBaseService;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.rev151021.QueryInput;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.rev151021.QueryOutput;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.rev151021.QueryOutputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.networkmap.rfc7285.rev151021.Ipv4PrefixList;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.networkmap.rfc7285.rev151021.Ipv4PrefixListBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.networkmap.rfc7285.rev151021.Ipv6PrefixList;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.networkmap.rfc7285.rev151021.Ipv6PrefixListBuilder;
 
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 
@@ -59,12 +58,12 @@ import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class AltoNetworkmapProvider implements BindingAwareProvider, AutoCloseable, AltoModelBaseService {
+public class AltoNetworkmapProvider implements BindingAwareProvider, AutoCloseable, AltoModelNetworkmapService {
 
     private static final Logger LOG = LoggerFactory.getLogger(AltoNetworkmapProvider.class);
 
     private DataBroker m_dataBrokerService = null;
-    private RoutedRpcRegistration<AltoModelBaseService> m_serviceReg = null;
+    private RoutedRpcRegistration<AltoModelNetworkmapService> m_serviceReg = null;
     private AltoResourcepoolService m_resourcepoolService = null;
 
     private static final ResourceId TEST_NETWORKMAP_RID = new ResourceId("test-model-networkmap");
@@ -80,7 +79,7 @@ public class AltoNetworkmapProvider implements BindingAwareProvider, AutoCloseab
         LOG.info("AltoModelNetworkProvider Session Initiated");
 
         m_dataBrokerService = session.getSALService(DataBroker.class);
-        m_serviceReg = session.addRoutedRpcImplementation(AltoModelBaseService.class, this);
+        m_serviceReg = session.addRoutedRpcImplementation(AltoModelNetworkmapService.class, this);
 
         ResourceBuilder builder = new ResourceBuilder();
         builder.setResourceId(TEST_NETWORKMAP_RID).setType(ResourceTypeNetworkmap.class);
@@ -113,51 +112,46 @@ public class AltoNetworkmapProvider implements BindingAwareProvider, AutoCloseab
         if (!input.getType().equals(ResourceTypeNetworkmap.class)) {
             return RpcResultBuilder.<QueryOutput>failed().buildFuture();
         }
-        AltoNetworkmapRequest request = (AltoNetworkmapRequest)input.getRequest();
+        NetworkmapRequest request = (NetworkmapRequest)input.getRequest();
         NetworkmapFilter filter = request.getNetworkmapFilter();
 
         List<PidName> pids = filter.getPid();
         List<Class<? extends AddressTypeBase>> types = filter.getAddressType();
 
+        List<Partition> partitionList = new LinkedList<>();
         int index = 0;
-        LinkedList<Partition> partitionList = new LinkedList<Partition>();
         for (PidName pid: pids) {
             ++index;
 
-            LinkedList<Property> propertyList = new LinkedList<Property>();
+            PartitionBuilder partitionBuilder = new PartitionBuilder();
+            partitionBuilder.setPid(pid);
+
             if (types.contains(AddressTypeIpv4.class)) {
                 LinkedList<Ipv4Prefix> ipv4List = new LinkedList<Ipv4Prefix>();
                 ipv4List.add(new Ipv4Prefix("192.168." + index + ".0/24"));
 
-                Ipv4Builder v4Builder = new Ipv4Builder();
+                Ipv4PrefixListBuilder v4Builder = new Ipv4PrefixListBuilder();
                 v4Builder.setIpv4(ipv4List);
 
-                PropertyBuilder v4PropertyBuilder = new PropertyBuilder();
-                v4PropertyBuilder.setPropertyType(AddressTypeIpv4.class).setData(v4Builder.build());
-                propertyList.add(v4PropertyBuilder.build());
+                partitionBuilder.addAugmentation(Ipv4PrefixList.class, v4Builder.build());
             }
             if (types.contains(AddressTypeIpv6.class)) {
                 LinkedList<Ipv6Prefix> ipv6List = new LinkedList<Ipv6Prefix>();
                 ipv6List.add(new Ipv6Prefix("2001:b8:ca2:" + index + "::0/64"));
 
-                Ipv6Builder v6Builder = new Ipv6Builder();
+                Ipv6PrefixListBuilder v6Builder = new Ipv6PrefixListBuilder();
                 v6Builder.setIpv6(ipv6List);
 
-                PropertyBuilder v6PropertyBuilder = new PropertyBuilder();
-                v6PropertyBuilder.setPropertyType(AddressTypeIpv6.class).setData(v6Builder.build());
-                propertyList.add(v6PropertyBuilder.build());
+                partitionBuilder.addAugmentation(Ipv6PrefixList.class, v6Builder.build());
             }
 
-            PartitionBuilder partitionBuilder = new PartitionBuilder();
-            partitionBuilder.setProperty(propertyList).setPid(pid);
-
             partitionList.add(partitionBuilder.build());
         }
 
         NetworkMapBuilder nmBuilder = new NetworkMapBuilder();
         nmBuilder.setPartition(partitionList);
 
-        AltoNetworkmapResponseBuilder nmrBuilder = new AltoNetworkmapResponseBuilder();
+        NetworkmapResponseBuilder nmrBuilder = new NetworkmapResponseBuilder();
         nmrBuilder.setNetworkMap(nmBuilder.build());
 
         QueryOutputBuilder builder = new QueryOutputBuilder();