From: Tony Tkacik Date: Fri, 30 Aug 2013 01:25:08 +0000 (-0700) Subject: Updated SAL Flow Models X-Git-Tag: releasepom-0.1.0~134 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=commitdiff_plain;h=de9793737fdb94f1f9136266778d7a9bfa17a320 Updated SAL Flow Models Change-Id: I2770e9b412b641aa93eb206e52b677f79d2038c7 Signed-off-by: Tony Tkacik --- diff --git a/opendaylight/sal/yang-prototype/sal/model/model-flow/pom.xml b/opendaylight/sal/yang-prototype/sal/model/model-flow-base/pom.xml similarity index 79% rename from opendaylight/sal/yang-prototype/sal/model/model-flow/pom.xml rename to opendaylight/sal/yang-prototype/sal/model/model-flow-base/pom.xml index 054ae4b7b7..6eaaebada5 100644 --- a/opendaylight/sal/yang-prototype/sal/model/model-flow/pom.xml +++ b/opendaylight/sal/yang-prototype/sal/model/model-flow-base/pom.xml @@ -13,7 +13,7 @@ 4.0.0 - model-flow + model-flow-base @@ -21,6 +21,11 @@ model-inventory ${project.version} + + org.opendaylight.yangtools.model + opendaylight-l2-types + 2013.08.27-SNAPSHOT + bundle diff --git a/opendaylight/sal/yang-prototype/sal/model/model-flow/src/main/yang/opendaylight-flow.yang b/opendaylight/sal/yang-prototype/sal/model/model-flow-base/src/main/yang/opendaylight-flow-base.yang similarity index 55% rename from opendaylight/sal/yang-prototype/sal/model/model-flow/src/main/yang/opendaylight-flow.yang rename to opendaylight/sal/yang-prototype/sal/model/model-flow-base/src/main/yang/opendaylight-flow-base.yang index 1f94ef98ee..443d82f2e4 100644 --- a/opendaylight/sal/yang-prototype/sal/model/model-flow/src/main/yang/opendaylight-flow.yang +++ b/opendaylight/sal/yang-prototype/sal/model/model-flow-base/src/main/yang/opendaylight-flow-base.yang @@ -1,46 +1,24 @@ -module opendaylight-flow { - namespace "urn:opendaylight:flow:service"; - prefix flow; +module opendaylight-flow-base { + namespace "urn:opendaylight:flow:base"; + prefix "flowbase"; import yang-ext {prefix ext;} import ietf-inet-types {prefix inet;} import ietf-yang-types {prefix yang;} import opendaylight-inventory {prefix inv;} + import opendaylight-l2-types {prefix l2t;} revision "2013-08-19" { description "Initial revision of flow service"; } - /** Base structure **/ - container flows { - list flow { - leaf node { - type inv:node-id; - } - container match { - // Match is empty - leaf input-node-connector { - type inv:node-connector-id; // - } - } - list action { - key id; - leaf id { - type string; - } - choice action { - - } - } - } - } - - /** Matches **/ - augment "/flows/flow/match" { - ext:augment-identifier "ethernet-match"; + /** Match Groupings **/ + grouping "ethernet-match-fields" { container ethernet-source { - description "Ethernet source address."; + //description "Ethernet source address."; + //presence "Match field is active and set"; leaf address { + mandatory true; type yang:mac-address; } leaf mask { @@ -49,14 +27,19 @@ module opendaylight-flow { } container ethernet-destination { description "Ethernet destination address."; + presence "Match field is active and set"; leaf address { + mandatory true; type yang:mac-address; } } container ethernet-type { description "Ethernet frame type."; + presence "Match field is active and set"; + leaf type { - type uint16; // Needs to define that as general model + mandatory true; + type l2t:ether-type; // Needs to define that as general model } leaf mask { type binary; @@ -64,13 +47,14 @@ module opendaylight-flow { } } - augment "/flows/flow/match" { - ext:augment-identifier "vlan-match"; - + grouping "vlan-match-fields" { container vlan-id { description "VLAN id."; + presence "Match field is active and set"; + leaf vlan-id { - type uint16; // TODO: Define proper vlan id type. + mandatory true; + type l2t:vlan-id; } leaf mask { type binary; @@ -78,15 +62,13 @@ module opendaylight-flow { } leaf vlan-pcp { description "VLAN priority."; - type uint8; // TODO: Define PCP type + type l2t:vlan-pcp; } } - augment "/flows/flow/match" { - ext:augment-identifier "ip-match"; - + grouping "ip-match-fields" { leaf ip-protocol { description "IP protocol."; type uint8; // TODO define IP protocol number @@ -102,8 +84,7 @@ module opendaylight-flow { } } - augment "/flows/flow/match" { - ext:augment-identifier "ipv4-match"; + grouping "ipv4-match-fields" { leaf ipv4-source { description "IPv4 source address."; type inet:ipv4-prefix; @@ -114,8 +95,7 @@ module opendaylight-flow { } } - augment "/flows/flow/match" { - ext:augment-identifier "ipv6-match"; + grouping "ipv6-match-fields" { leaf ipv6-source { description "IPv6 source address."; type inet:ipv6-prefix; @@ -127,9 +107,7 @@ module opendaylight-flow { } - augment "/flows/flow/match" { - ext:augment-identifier "udp-match"; - + grouping "udp-match-fields" { leaf udp-source-port { description "UDP source port."; type inet:port-number; @@ -140,8 +118,7 @@ module opendaylight-flow { } } - augment "/flows/flow/match" { - ext:augment-identifier "tcp-match"; + grouping "tcp-match-fields" { leaf tcp-source-port { description "TCP source port."; type inet:port-number; @@ -152,8 +129,7 @@ module opendaylight-flow { } } - augment "/flows/flow/match" { - ext:augment-identifier "sctp-match"; + grouping "sctp-match-fields" { leaf sctp-source-port { description "SCTP source port."; type inet:port-number; @@ -164,8 +140,7 @@ module opendaylight-flow { } } - augment "/flows/flow/match" { - ext:augment-identifier "icmpv4-match"; + grouping "icmpv4-match-fields" { leaf icmpv4-type { description "ICMP type."; type uint8; // Define ICMP Type @@ -176,9 +151,7 @@ module opendaylight-flow { } } - augment "/flows/flow/match" { - ext:augment-identifier "arp-match"; - + grouping "arp-match-fields" { leaf arp-source-transport-address { description "ARP source IPv4 address."; type inet:ipv4-prefix; @@ -190,7 +163,9 @@ module opendaylight-flow { } container arp-source-hardware-address { description "ARP source hardware address."; + presence "Match field is active and set"; leaf address { + mandatory true; type yang:mac-address; } leaf mask { @@ -199,7 +174,9 @@ module opendaylight-flow { } container arp-target-hardware-address { description "ARP target hardware address."; + presence "Match field is active and set"; leaf address { + mandatory true; type yang:mac-address; } leaf mask { @@ -208,59 +185,104 @@ module opendaylight-flow { } } - /** Actions **/ - augment "/flows/flow/action/action" { - case output-action { - leaf output-node-connector { - type string; + grouping action { + choice action { + case output-action { + leaf output-node-connector { + type string; + } } - } - case controller-action { - leaf max-length { - type uint16 { - range "0..65294"; + case controller-action { + leaf max-length { + type uint16 { + range "0..65294"; + } } } - } - case set-queue-action { - leaf queue { - type string; // TODO: define queues + case set-queue-action { + leaf queue { + type string; // TODO: define queues + } } - } - case pop-mpls-action { - container pop-mpls { - leaf ethernet-type { - type uint16; // TODO: define ethertype type + case pop-mpls-action { + container pop-mpls { + leaf ethernet-type { + type uint16; // TODO: define ethertype type + } } } - } - case set-mpls-ttl-action { - leaf mpls-ttl { - type uint8; + case set-mpls-ttl-action { + leaf mpls-ttl { + type uint8; + } } - } - case set-nw-ttl-action { - leaf nw-ttl { - type uint8; + case set-nw-ttl-action { + leaf nw-ttl { + type uint8; + } } - } - case push-pbb-action { + case push-pbb-action { - } + } - case push-mpls-action { + case push-mpls-action { - } + } - case push-vlan-action { + case push-vlan-action { + } } } + grouping flow { + leaf node { + type inv:node-id; + } + container match { + container "ethernet-match" { + uses "ethernet-match-fields"; + } + container "vlan-match" { + uses "vlan-match-fields"; + } + container "ip-match" { + uses "ip-match-fields"; + } + container "ipv4-match" { + uses "ipv4-match-fields"; + } + container "ipv6-match" { + uses "ipv6-match-fields"; + } + container "udp-match" { + uses "udp-match-fields"; + } + container "tcp-match" { + uses "tcp-match-fields"; + } + container "sctp-match" { + uses "sctp-match-fields"; + } + container "icmpv4-match" { + uses "icmpv4-match-fields"; + } + container "arp-match" { + uses "arp-match-fields"; + } + } + list action { + key "order"; + leaf order { + type int32; + } + uses action; + } + } } \ No newline at end of file diff --git a/opendaylight/sal/yang-prototype/sal/model/model-flow-service/pom.xml b/opendaylight/sal/yang-prototype/sal/model/model-flow-service/pom.xml new file mode 100644 index 0000000000..18b338b544 --- /dev/null +++ b/opendaylight/sal/yang-prototype/sal/model/model-flow-service/pom.xml @@ -0,0 +1,31 @@ + + + + model-parent + org.opendaylight.controller.model + 1.0-SNAPSHOT + + + 4.0.0 + model-flow-service + + + + ${project.groupId} + model-flow-base + ${project.version} + + + ${project.groupId} + model-inventory + ${project.version} + + + org.opendaylight.yangtools.model + opendaylight-l2-types + 2013.08.27-SNAPSHOT + + + bundle + \ No newline at end of file diff --git a/opendaylight/sal/yang-prototype/sal/model/model-flow-service/src/main/yang/opendaylight-flow-config.yang b/opendaylight/sal/yang-prototype/sal/model/model-flow-service/src/main/yang/opendaylight-flow-config.yang new file mode 100644 index 0000000000..a4ecf7311e --- /dev/null +++ b/opendaylight/sal/yang-prototype/sal/model/model-flow-service/src/main/yang/opendaylight-flow-config.yang @@ -0,0 +1,21 @@ +module opendaylight-flow-config { + namespace "urn:opendaylight:flow:config"; + prefix flow; + + import yang-ext {prefix ext;} + import opendaylight-inventory {prefix inv;} + import opendaylight-flow-base {prefix flowbase;} + + revision "2013-08-19" { + description "Initial revision of flow service"; + } + + /** Base configuration structure + container flows { + list flow { + uses flowbase:flow; + } + } + + **/ +} \ No newline at end of file diff --git a/opendaylight/sal/yang-prototype/sal/model/model-flow-service/src/main/yang/opendaylight-flow-service.yang b/opendaylight/sal/yang-prototype/sal/model/model-flow-service/src/main/yang/opendaylight-flow-service.yang new file mode 100644 index 0000000000..0f01de5dbc --- /dev/null +++ b/opendaylight/sal/yang-prototype/sal/model/model-flow-service/src/main/yang/opendaylight-flow-service.yang @@ -0,0 +1,56 @@ +module opendaylight-flow-service { + namespace "urn:opendaylight:flow:service"; + prefix flow; + + import yang-ext {prefix ext;} + import opendaylight-inventory {prefix inv;} + import opendaylight-flow-base {prefix flowbase;} + + revision "2013-08-19" { + description "Initial revision of flow service"; + } + + /** Base configuration structure **/ + + + grouping flow-update { + container original-flow { + uses flowbase:flow; + } + container updated-flow { + uses flowbase:flow; + } + } + + rpc add-flow { + input { + uses flowbase:flow; + } + } + + rpc remove-flow { + input { + uses flowbase:flow; + } + } + + rpc update-flow { + input { + uses flow-update; + } + } + + notification flow-added { + uses flowbase:flow; + } + + notification flow-updated { + input { + uses flow-update; + } + } + + notification flow-removed { + uses flowbase:flow; + } +} \ No newline at end of file diff --git a/opendaylight/sal/yang-prototype/sal/model/model-flow-statistics/pom.xml b/opendaylight/sal/yang-prototype/sal/model/model-flow-statistics/pom.xml index 10534fd524..aa335a807c 100644 --- a/opendaylight/sal/yang-prototype/sal/model/model-flow-statistics/pom.xml +++ b/opendaylight/sal/yang-prototype/sal/model/model-flow-statistics/pom.xml @@ -23,7 +23,7 @@ ${project.groupId} - model-flow + model-flow-service ${project.version} diff --git a/opendaylight/sal/yang-prototype/sal/model/model-flow-statistics/src/main/yang/opendaylight-flow-statistics.yang b/opendaylight/sal/yang-prototype/sal/model/model-flow-statistics/src/main/yang/opendaylight-flow-statistics.yang index 36d8bf2a99..3c1bb70e68 100644 --- a/opendaylight/sal/yang-prototype/sal/model/model-flow-statistics/src/main/yang/opendaylight-flow-statistics.yang +++ b/opendaylight/sal/yang-prototype/sal/model/model-flow-statistics/src/main/yang/opendaylight-flow-statistics.yang @@ -5,13 +5,14 @@ module opendaylight-flow-statistics { import yang-ext {prefix ext;} import ietf-inet-types {prefix inet;} import ietf-yang-types {prefix yang;} - import opendaylight-flow {prefix flow;} + import opendaylight-flow-base {prefix flow;} import opendaylight-inventory {prefix inv;} revision "2013-08-19" { description "Initial revision of flow service"; } + /* augment "/flow:flows/flow:flow" { ext:augment-identifier "flow-statistics"; @@ -32,6 +33,7 @@ module opendaylight-flow-statistics { } } } + */ augment "/inv:nodes/inv:node/inv:node-connector" { ext:augment-identifier "node-connector-statistics"; diff --git a/opendaylight/sal/yang-prototype/sal/model/model-inventory/src/main/yang/opendaylight-inventory.yang b/opendaylight/sal/yang-prototype/sal/model/model-inventory/src/main/yang/opendaylight-inventory.yang index 9f2590b181..fa9de4afa0 100644 --- a/opendaylight/sal/yang-prototype/sal/model/model-inventory/src/main/yang/opendaylight-inventory.yang +++ b/opendaylight/sal/yang-prototype/sal/model/model-inventory/src/main/yang/opendaylight-inventory.yang @@ -27,7 +27,10 @@ module opendaylight-inventory { type node-id; } list node-connector { - type node-connector-id; + key "id"; + leaf id { + type node-connector-id; + } } } } diff --git a/opendaylight/sal/yang-prototype/sal/model/pom.xml b/opendaylight/sal/yang-prototype/sal/model/pom.xml index 35279be81e..2874122ac1 100644 --- a/opendaylight/sal/yang-prototype/sal/model/pom.xml +++ b/opendaylight/sal/yang-prototype/sal/model/pom.xml @@ -26,7 +26,8 @@ model-inventory - model-flow + model-flow-base + model-flow-service model-flow-statistics