enum flow-mod-failed;
enum group-mod-failed;
enum port-mod-failed;
- enum table-mod-failed;
+ enum table-mod-failed;
enum queue-op-failed;
enum switch-config-failed;
enum role-request-failed;
}
leaf code {
- type uint16;
+ type uint16;
}
leaf data {
}
leaf exp-type {
- type uint16;
+ type uint16;
}
leaf experimenter-id {
- type uint32;
+ type uint32;
}
leaf data {
type string;
}
- }
+ }
}
\ No newline at end of file
rpc add-flow {
input {
uses node-flow;
- uses tr:transaction-aware;
+ uses tr:transaction-aware;
}
output {
uses tr:transaction-aware;
rpc remove-flow {
input {
uses node-flow;
- uses tr:transaction-aware;
+ uses tr:transaction-aware;
}
output {
uses tr:transaction-aware;
rpc update-flow {
input {
uses flow-update;
- uses tr:transaction-aware;
+ uses tr:transaction-aware;
}
output {
uses tr:transaction-aware;
rpc add-group {
input {
uses node-group;
- uses tr:transaction-aware;
+ uses tr:transaction-aware;
}
output {
uses tr:transaction-aware;
rpc remove-group {
input {
uses node-group;
- uses tr:transaction-aware;
+ uses tr:transaction-aware;
}
output {
uses tr:transaction-aware;
rpc update-group {
input {
uses group-update;
- uses tr:transaction-aware;
+ uses tr:transaction-aware;
}
output {
uses tr:transaction-aware;
import flow-capable-transaction {prefix tr;}
contact
- "Anilkumar Vishnoi
- Email: avishnoi@in.ibm.com";
-
+ "Anilkumar Vishnoi
+ Email: avishnoi@in.ibm.com";
+
revision "2013-11-11" {
description "Initial revision of group statistics service";
}
augment "/inv:nodes/inv:node" {
ext:augment-identifier "node-group-statistics";
container group-statistics {
- //config "false";
- uses group-types:group-statistics-reply;
+ //config "false";
+ uses group-types:group-statistics-reply;
}
}
- augment "/inv:nodes/inv:node" {
+ augment "/inv:nodes/inv:node" {
ext:augment-identifier "node-group-desc-stats";
container group-desc {
- //config "false";
- uses group-types:group-desc-stats-reply;
+ //config "false";
+ uses group-types:group-desc-stats-reply;
}
}
-
- augment "/inv:nodes/inv:node" {
+
+ augment "/inv:nodes/inv:node" {
ext:augment-identifier "node-group-features";
container group-features {
- //config "false";
- uses group-types:group-features-reply;
+ //config "false";
+ uses group-types:group-features-reply;
}
}
- // RPC calls
- rpc get-all-group-statistics {
- input {
- uses inv:node;
+ // RPC calls
+ rpc get-all-group-statistics {
+ input {
+ uses inv:node-context-ref;
}
output {
- uses group-types:group-statistics-reply;
+ uses group-types:group-statistics-reply;
uses tr:transaction-aware;
}
-
- }
-
- rpc get-group-statistics {
- input {
- uses inv:node;
+
+ }
+
+ rpc get-group-statistics {
+ input {
+ uses inv:node-context-ref;
leaf group-id{
- type group-types:group-id;
+ type group-types:group-id;
}
}
uses group-types:group-statistics-reply;
uses tr:transaction-aware;
}
-
- }
-
- rpc get-group-description {
- input {
- uses inv:node;
+
+ }
+
+ rpc get-group-description {
+ input {
+ uses inv:node-context-ref;
}
output {
uses group-types:group-desc-stats-reply;
uses tr:transaction-aware;
}
- }
-
- rpc get-group-features {
- input {
- uses inv:node;
+ }
+
+ rpc get-group-features {
+ input {
+ uses inv:node-context-ref;
}
output {
uses group-types:group-features-reply;
uses tr:transaction-aware;
}
- }
-
+ }
+
- //Notification calls
-
- notification group-statistics-updated {
- leaf moreReplies {
- type boolean;
- }
- uses inv:node;
- uses group-types:group-statistics-reply;
+ //Notification calls
+
+ notification group-statistics-updated {
+ leaf moreReplies {
+ type boolean;
+ }
+ uses inv:node;
+ uses group-types:group-statistics-reply;
uses tr:transaction-aware;
- }
-
- notification group-desc-stats-updated {
- leaf moreReplies {
- type boolean;
- }
- uses inv:node;
- uses group-types:group-desc-stats-reply;
+ }
+
+ notification group-desc-stats-updated {
+ leaf moreReplies {
+ type boolean;
+ }
+ uses inv:node;
+ uses group-types:group-desc-stats-reply;
uses tr:transaction-aware;
- }
+ }
- notification group-features-updated {
- leaf moreReplies {
- type boolean;
- }
- uses inv:node;
- uses group-types:group-features-reply;
+ notification group-features-updated {
+ leaf moreReplies {
+ type boolean;
+ }
+ uses inv:node;
+ uses group-types:group-features-reply;
uses tr:transaction-aware;
- }
+ }
}
import flow-capable-transaction {prefix tr;}
contact
- "Anilkumar Vishnoi
- Email: avishnoi@in.ibm.com";
+ "Anilkumar Vishnoi
+ Email: avishnoi@in.ibm.com";
revision "2013-11-11" {
description "Initial revision of meter statistics service";
augment "/inv:nodes/inv:node" {
ext:augment-identifier "node-meter-statistics";
container meter-statistics {
- //config "false";
- uses meter-types:meter-statistics-reply;
+ //config "false";
+ uses meter-types:meter-statistics-reply;
}
}
- augment "/inv:nodes/inv:node" {
+ augment "/inv:nodes/inv:node" {
ext:augment-identifier "node-meter-config-stats";
container meter-config-stats {
- //config "false";
- uses meter-types:meter-config-stats-reply;
+ //config "false";
+ uses meter-types:meter-config-stats-reply;
}
}
-
- augment "/inv:nodes/inv:node" {
+
+ augment "/inv:nodes/inv:node" {
ext:augment-identifier "node-meter-features";
container meter-features {
- //config "false";
- uses meter-types:meter-features-reply;
+ //config "false";
+ uses meter-types:meter-features-reply;
}
}
- // RPC calls
- rpc get-all-meter-statistics {
- input {
- uses inv:node;
+ // RPC calls
+ rpc get-all-meter-statistics {
+ input {
+ uses inv:node-context-ref;
}
output {
- uses meter-types:meter-statistics-reply;
- uses tr:transaction-aware;
+ uses meter-types:meter-statistics-reply;
+ uses tr:transaction-aware;
}
-
- }
-
- rpc get-meter-statistics {
- input {
- uses inv:node;
+
+ }
+
+ rpc get-meter-statistics {
+ input {
+ uses inv:node-context-ref;
leaf meter-id{
- type meter-types:meter-id;
+ type meter-types:meter-id;
}
}
output {
uses meter-types:meter-statistics-reply;
uses tr:transaction-aware;
}
-
- }
-
- rpc get-all-meter-config-statistics {
- input {
- uses inv:node;
+
+ }
+
+ rpc get-all-meter-config-statistics {
+ input {
+ uses inv:node-context-ref;
}
output {
- uses meter-types:meter-config-stats-reply;
+ uses meter-types:meter-config-stats-reply;
uses tr:transaction-aware;
}
- }
-
- rpc get-meter-features {
- input {
- uses inv:node;
+ }
+
+ rpc get-meter-features {
+ input {
+ uses inv:node-context-ref;
}
output {
- uses meter-types:meter-features-reply;
+ uses meter-types:meter-features-reply;
uses tr:transaction-aware;
}
- }
-
+ }
+
- //Notification calls
-
- notification meter-statistics-updated {
- leaf moreReplies {
- type boolean;
- }
-
- uses inv:node;
+ //Notification calls
+
+ notification meter-statistics-updated {
+ leaf moreReplies {
+ type boolean;
+ }
+
+ uses inv:node;
uses meter-types:meter-statistics-reply;
uses tr:transaction-aware;
- }
-
- notification meter-config-stats-updated {
- leaf moreReplies {
- type boolean;
- }
-
+ }
+
+ notification meter-config-stats-updated {
+ leaf moreReplies {
+ type boolean;
+ }
+
uses inv:node;
- uses meter-types:meter-config-stats-reply;
- uses tr:transaction-aware;
- }
+ uses meter-types:meter-config-stats-reply;
+ uses tr:transaction-aware;
+ }
- notification meter-features-updated {
- leaf moreReplies {
- type boolean;
- }
-
- uses inv:node;
+ notification meter-features-updated {
+ leaf moreReplies {
+ type boolean;
+ }
+
+ uses inv:node;
uses meter-types:meter-features-reply;
uses tr:transaction-aware;
- }
+ }
}
val targetCls = createClass(iface.directProxyName, supertype) [
field(DELEGATE_FIELD, iface);
implementMethodsFrom(supertype) [
- body = '''return ($r) «DELEGATE_FIELD».«it.name»($$);'''
+ body = '''
+ {
+ if(«DELEGATE_FIELD» == null) {
+ throw new java.lang.IllegalStateException("No provider is processing supplied message");
+ }
+ return ($r) «DELEGATE_FIELD».«it.name»($$);
+ }
+ '''
]
]
return targetCls.toClass(iface.classLoader).newInstance as T
import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GetGroupFeaturesOutput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.OpendaylightGroupStatisticsService;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.GetAllMeterConfigStatisticsInputBuilder;
//We need to add check, so see if groups/meters are supported
//by the target node. Below check doesn't look good.
if(targetNode.getId().getValue().contains("openflow:")){
- sendAllGroupStatisticsRequest(targetNode);
+ InstanceIdentifier<Node> targetInstanceId = InstanceIdentifier.builder(Nodes.class).child(Node.class,targetNode.getKey()).toInstance();
+ NodeRef targetNodeRef = new NodeRef(targetInstanceId);
- sendAllMeterStatisticsRequest(targetNode);
+ sendAllGroupStatisticsRequest(targetNodeRef);
- sendGroupDescriptionRequest(targetNode);
+ sendAllMeterStatisticsRequest(targetNodeRef);
- sendGroupFeaturesRequest(targetNode);
+ sendGroupDescriptionRequest(targetNodeRef);
- sendMeterConfigStatisticsRequest(targetNode);
+ sendGroupFeaturesRequest(targetNodeRef);
- sendMeterFeaturesRequest(targetNode);
+ sendMeterConfigStatisticsRequest(targetNodeRef);
+
+ sendMeterFeaturesRequest(targetNodeRef);
}
}
}
- private void sendAllGroupStatisticsRequest(Node targetNode){
+ private void sendAllGroupStatisticsRequest(NodeRef targetNode){
final GetAllGroupStatisticsInputBuilder input = new GetAllGroupStatisticsInputBuilder();
- input.setId(targetNode.getId());
+ input.setNode(targetNode);
+ input.setNode(targetNode);
+ @SuppressWarnings("unused")
Future<RpcResult<GetAllGroupStatisticsOutput>> response =
groupStatsService.getAllGroupStatistics(input.build());
}
- private void sendGroupDescriptionRequest(Node targetNode){
+ private void sendGroupDescriptionRequest(NodeRef targetNode){
final GetGroupDescriptionInputBuilder input = new GetGroupDescriptionInputBuilder();
- input.setId(targetNode.getId());
-
+ input.setNode(targetNode);
+
+ @SuppressWarnings("unused")
Future<RpcResult<GetGroupDescriptionOutput>> response =
groupStatsService.getGroupDescription(input.build());
}
- private void sendGroupFeaturesRequest(Node targetNode){
+ private void sendGroupFeaturesRequest(NodeRef targetNode){
GetGroupFeaturesInputBuilder input = new GetGroupFeaturesInputBuilder();
- input.setId(targetNode.getId());
-
+ input.setNode(targetNode);
+
+ @SuppressWarnings("unused")
Future<RpcResult<GetGroupFeaturesOutput>> response =
groupStatsService.getGroupFeatures(input.build());
}
- private void sendAllMeterStatisticsRequest(Node targetNode){
+ private void sendAllMeterStatisticsRequest(NodeRef targetNode){
GetAllMeterStatisticsInputBuilder input = new GetAllMeterStatisticsInputBuilder();
- input.setId(targetNode.getId());
-
+ input.setNode(targetNode);
+
+ @SuppressWarnings("unused")
Future<RpcResult<GetAllMeterStatisticsOutput>> response =
meterStatsService.getAllMeterStatistics(input.build());
}
- private void sendMeterConfigStatisticsRequest(Node targetNode){
+ private void sendMeterConfigStatisticsRequest(NodeRef targetNode){
GetAllMeterConfigStatisticsInputBuilder input = new GetAllMeterConfigStatisticsInputBuilder();
- input.setId(targetNode.getId());
-
+ input.setNode(targetNode);
+
+ @SuppressWarnings("unused")
Future<RpcResult<GetAllMeterConfigStatisticsOutput>> response =
meterStatsService.getAllMeterConfigStatistics(input.build());
}
- private void sendMeterFeaturesRequest(Node targetNode){
+ private void sendMeterFeaturesRequest(NodeRef targetNode){
GetMeterFeaturesInputBuilder input = new GetMeterFeaturesInputBuilder();
- input.setId(targetNode.getId());
-
+ input.setNode(targetNode);
+
+ @SuppressWarnings("unused")
Future<RpcResult<GetMeterFeaturesOutput>> response =
meterStatsService.getMeterFeatures(input.build());
}
} catch (Throwable e) {
throw Exceptions.sneakyThrow(e);
}
-
}
}