d16aad47b35f2bcd1ba6a6743b6a83b4c2033fe1
[openflowplugin.git] / extension / openflowplugin-extension-api / src / main / yang / openflowplugin-extension-general.yang
1 module openflowplugin-extension-general {
2     yang-version 1;
3
4     namespace "urn:opendaylight:openflowplugin:extension:general";
5     prefix "openflowplugin-extension-general";
6     
7     import yang-ext {prefix ext; revision-date "2013-07-09";}
8     import flow-node-inventory {prefix fni; revision-date 2013-08-19; }
9     import opendaylight-inventory {prefix inv;revision-date "2013-08-19";}
10     import sal-flow {prefix sal-flow;revision-date "2013-08-19";}
11     import sal-group {prefix sal-group;revision-date "2013-09-18";}
12     import packet-processing {prefix sal-packet;revision-date "2013-07-09";}
13     import opendaylight-flow-statistics {prefix odl-flow-stats;revision-date "2013-08-19";}
14     import opendaylight-group-statistics {prefix odl-group-stats;revision-date "2013-11-11";}
15     import opendaylight-direct-statistics {prefix odl-direct-stats;revision-date "2016-05-11";}
16
17
18     description 
19         "Everything for a vendor who want to implement openflow extensions.";
20
21     revision "2014-07-14" {
22         description "Initial revision";
23     }
24
25     identity extension-key {
26         description "Base identity for all extension keys.";
27     }
28
29     grouping general-extension-grouping {
30         leaf extension-key {
31             type identityref {
32                 base extension-key;
33             }
34         }
35         container extension {
36             description "A vendor has to augment this container.";
37         }
38     }
39     
40     grouping general-extension-list-grouping {
41         list extension-list {
42             key extension-key;
43             uses general-extension-grouping;
44         }
45     }
46     
47
48     
49
50     // MATCH augmentations
51     // RPCS
52     augment "/sal-flow:add-flow/sal-flow:input/sal-flow:match" {
53         ext:augment-identifier "general-aug-match-rpc-add-flow";
54         uses general-extension-list-grouping;
55     }
56     augment "/sal-flow:remove-flow/sal-flow:input/sal-flow:match" {
57         ext:augment-identifier "general-aug-match-rpc-remove-flow";
58         uses general-extension-list-grouping;
59     }
60     augment "/sal-flow:update-flow/sal-flow:input/sal-flow:original-flow/sal-flow:match" {
61         ext:augment-identifier "general-aug-match-rpc-update-flow-original";
62         uses general-extension-list-grouping;
63     }
64     augment "/sal-flow:update-flow/sal-flow:input/sal-flow:updated-flow/sal-flow:match" {
65         ext:augment-identifier "general-aug-match-rpc-update-flow-updated";
66         uses general-extension-list-grouping;
67     }
68     
69     // DATA
70     augment "/inv:nodes/inv:node/fni:table/fni:flow/fni:match" {
71         ext:augment-identifier "general-aug-match-nodes-node-table-flow";
72         uses general-extension-list-grouping;
73     }
74     
75     // NOTIFICATIONS
76     augment "/sal-flow:switch-flow-removed/sal-flow:match" {
77         ext:augment-identifier "general-aug-match-notif-switch-flow-removed";
78         uses general-extension-list-grouping;
79     }
80     augment "/sal-packet:packet-received/sal-packet:match" {
81         ext:augment-identifier "general-aug-match-notif-packet-in";
82         uses general-extension-list-grouping;
83     }
84     augment "/odl-flow-stats:flows-statistics-update/odl-flow-stats:flow-and-statistics-map-list/odl-flow-stats:match" {
85         ext:augment-identifier "general-aug-match-notif-update-flow-stats";
86         uses general-extension-list-grouping;
87     }
88
89     augment "/odl-direct-stats:get-flow-statistics/odl-direct-stats:output/odl-direct-stats:flow-and-statistics-map-list/odl-direct-stats:match" {
90         ext:augment-identifier "general-aug-match-rpc-output-flow-stats";
91         uses general-extension-list-grouping;
92     }
93     
94     // VENDOR EXAMPLE -- testing purposes -> remove later!
95     augment "/inv:nodes/inv:node/fni:table/fni:flow/fni:match/extension-list/extension" {
96         ext:augment-identifier "vendor-xxx1";
97         uses vendor-xxx-grouping;
98     }
99     augment "/sal-flow:add-flow/sal-flow:input/sal-flow:match/extension-list/extension" {
100         ext:augment-identifier "vendor-xxx2";
101         uses vendor-xxx-grouping;
102     }
103     grouping vendor-xxx-grouping {
104         leaf dos-ekis {
105             type string;
106         }
107     }
108     // -----^^^^-----
109 }