From 8d785e650476b80189b86f6ad44c5a24d5ccbf6d Mon Sep 17 00:00:00 2001 From: Michal Polkorab Date: Mon, 2 Dec 2013 13:05:26 +0100 Subject: [PATCH] Yang model fixed Signed-off-by: Michal Polkorab Change-Id: I420b7df2237d1b87b1eb1cde1b98a3bf65c941fc --- .../src/main/yang/openflow-action.yang | 1 + .../src/main/yang/openflow-augments.yang | 1 + .../main/yang/openflow-extensible-match.yang | 1 + .../src/main/yang/openflow-instruction.yang | 1 + .../src/main/yang/openflow-protocol.yang | 807 ++++++++++-------- .../src/main/yang/openflow-types.yang | 58 +- .../core/PublishingChannelInitializer.java | 3 +- .../MultipartReplyMessageFactory.java | 238 ++++-- .../OF10StatsReplyMessageFactory.java | 93 +- .../MeterModInputMessageFactory.java | 27 +- .../MultipartRequestInputFactory.java | 110 ++- .../OF10StatsRequestInputFactory.java | 67 +- .../MultipartReplyMessageFactoryTest.java | 198 ++--- .../MeterModInputMessageFactoryTest.java | 33 +- .../MultipartRequestInputFactoryTest.java | 190 +++-- 15 files changed, 1013 insertions(+), 815 deletions(-) diff --git a/openflow-protocol-api/src/main/yang/openflow-action.yang b/openflow-protocol-api/src/main/yang/openflow-action.yang index 4bdf10b1..f8c9a468 100644 --- a/openflow-protocol-api/src/main/yang/openflow-action.yang +++ b/openflow-protocol-api/src/main/yang/openflow-action.yang @@ -83,6 +83,7 @@ module openflow-action { grouping actions { list actions-list { + key "action"; container action { leaf type { type identityref { diff --git a/openflow-protocol-api/src/main/yang/openflow-augments.yang b/openflow-protocol-api/src/main/yang/openflow-augments.yang index 866acfe2..71718bc7 100644 --- a/openflow-protocol-api/src/main/yang/openflow-augments.yang +++ b/openflow-protocol-api/src/main/yang/openflow-augments.yang @@ -295,6 +295,7 @@ module openflow-augments { augment "/ofproto:table-features-properties-container/ofproto:table-feature-properties" { ext:augment-identifier "next-table-related-table-feature-property"; list next-table-ids { + key "table-id"; leaf table-id { type uint8; } diff --git a/openflow-protocol-api/src/main/yang/openflow-extensible-match.yang b/openflow-protocol-api/src/main/yang/openflow-extensible-match.yang index a0761a70..349f3770 100644 --- a/openflow-protocol-api/src/main/yang/openflow-extensible-match.yang +++ b/openflow-protocol-api/src/main/yang/openflow-extensible-match.yang @@ -213,6 +213,7 @@ module openflow-extensible-match { grouping oxm-fields { list match-entries { + key "oxm-class oxm-match-field has-mask"; leaf oxm-class { type identityref { base clazz; diff --git a/openflow-protocol-api/src/main/yang/openflow-instruction.yang b/openflow-protocol-api/src/main/yang/openflow-instruction.yang index 1f014c76..bbd61a9e 100644 --- a/openflow-protocol-api/src/main/yang/openflow-instruction.yang +++ b/openflow-protocol-api/src/main/yang/openflow-instruction.yang @@ -43,6 +43,7 @@ module openflow-instruction { grouping instructions { list instructions { + key "type"; leaf type { type identityref { base oft:instruction; diff --git a/openflow-protocol-api/src/main/yang/openflow-protocol.yang b/openflow-protocol-api/src/main/yang/openflow-protocol.yang index ec5f76bd..7a71c1ce 100644 --- a/openflow-protocol-api/src/main/yang/openflow-protocol.yang +++ b/openflow-protocol-api/src/main/yang/openflow-protocol.yang @@ -2,7 +2,6 @@ module openflow-protocol { namespace "urn:opendaylight:openflow:protocol"; prefix "ofproto"; - import ietf-inet-types {prefix inet;} import ietf-yang-types {prefix yang;} import openflow-types {prefix oft;} @@ -138,6 +137,7 @@ module openflow-protocol { grouping table-features-properties { list table-feature-properties { + key "type"; leaf type { type oft:table-features-prop-type; } @@ -545,471 +545,531 @@ module openflow-protocol { type oft:multipart-request-flags; } choice multipart-request-body { - case multipart-request-desc { - leaf empty { - type empty; - } - } - case multipart-request-flow { - leaf table-id { - type uint8; - } - leaf out-port { - type uint32; - } - leaf out-group { - type uint32; - } - leaf cookie { - type uint64; - } - leaf cookie-mask { - type uint64; - } - uses match-grouping; - - // OF1.0 structures - uses oxm:match-v10-grouping; - } - case multipart-request-aggregate { - leaf table-id { - type uint8; - } - leaf out-port { - type uint32; - } - leaf out-group { - type uint32; - } - leaf cookie { - type uint64; - } - leaf cookie-mask { - type uint64; - } - uses match-grouping; - - // OF1.0 structures - uses oxm:match-v10-grouping; - } - case multipart-request-table { - leaf empty { - type empty; - } - } - case multipart-request-port-stats { - leaf port-no { - type uint32; - } - } - case multipart-request-queue { - leaf port-no { - type uint32; - } - leaf queue-id { - type uint32; - } - } - case multipart-request-group { - leaf group-id { - type oft:group-id; - } - } - case multipart-request-group-desc { - leaf empty { - type empty; - } - } - case multipart-request-group-features { - leaf empty { - type empty; - } - } - case multipart-request-meter { - leaf meter-id { - type oft:meter-id; - } - } - case multipart-request-meter-config { - leaf meter-id { - type oft:meter-id; - } - } - case multipart-request-meter-features { - leaf empty { - type empty; - } - } - case multipart-request-table-features { - list table-features { - leaf table-id { - type uint8; - } - leaf name { - type string; - } - leaf metadata-match { - type uint64; - } - leaf metadata-write { - type uint64; - } - leaf config { - type oft:table-config; + case multipart-request-desc-case { + container multipart-request-desc { + leaf empty { + type empty; } - leaf max-entries { - type uint32; - } - uses table-features-properties; - } - } - case multipart-request-port-desc { - leaf empty { - type empty; } } - case multipart-request-experimenter { - leaf experimenter { - type uint32; - } - leaf exp-type { - type uint32; - } - leaf data { - type binary; - } - } - } - } - grouping multipart-reply { - // reference "OFPT_MULTIPART_REPLY message in Openflow Switch 1.3 Spec" - /* Controller/switch message */ - - uses ofHeader; - - leaf type { - type oft:multipart-type; - } - leaf flags { - type oft:multipart-request-flags; - } - choice multipart-reply-body { - case multipart-reply-desc { - leaf mfr_desc { - type string; - } - leaf hw_desc { - type string; - } - leaf sw_desc { - type string; - } - leaf serial_num { - type string; - } - leaf dp_desc { - type string; - } - } - case multipart-reply-flow { - list flow-stats { + case multipart-request-flow-case { + container multipart-request-flow { leaf table-id { type uint8; } - leaf duration-sec { + leaf out-port { type uint32; } - leaf duration-nsec { + leaf out-group { type uint32; } - leaf priority { - type uint16; - } - leaf idle-timeout { - type uint16; - } - leaf hard-timeout { - type uint16; - } - leaf flags { - type oft:flow-mod-flags; - } leaf cookie { type uint64; } - leaf packet-count { - type uint64; - } - leaf byte-count { + leaf cookie-mask { type uint64; } uses match-grouping; - uses ofinstruction:instructions; - // OF1.0 structures uses oxm:match-v10-grouping; - uses ofaction:actions; - } - } - case multipart-reply-aggregate { - leaf packet-count { - type uint64; - } - leaf byte-count { - type uint64; - } - leaf flow-count { - type uint32; } } - case multipart-reply-table { - list table-stats { + case multipart-request-aggregate-case { + container multipart-request-aggregate { leaf table-id { type uint8; } - leaf active-count { + leaf out-port { + type uint32; + } + leaf out-group { type uint32; } - leaf lookup-count { + leaf cookie { type uint64; } - leaf matched-count { + leaf cookie-mask { type uint64; } + uses match-grouping; // OF1.0 structures - leaf name { - type string; + uses oxm:match-v10-grouping; + } + } + case multipart-request-table-case { + container multipart-request-table { + leaf empty { + type empty; } } } - case multipart-reply-port-stats { - list port-stats { + case multipart-request-port-stats-case { + container multipart-request-port-stats { leaf port-no { type uint32; } - leaf rx-packets { - type uint64; - } - leaf tx-packets { - type uint64; - } - leaf rx-bytes { - type uint64; - } - leaf tx-bytes { - type uint64; - } - leaf rx-dropped { - type uint64; + } + } + case multipart-request-queue-case { + container multipart-request-queue { + leaf port-no { + type uint32; } - leaf tx-dropped { - type uint64; + leaf queue-id { + type uint32; } - leaf rx-errors { - type uint64; + } + } + case multipart-request-group-case { + container multipart-request-group { + leaf group-id { + type oft:group-id; } - leaf tx-errors { - type uint64; + } + } + case multipart-request-group-desc-case { + container multipart-request-group-desc { + leaf empty { + type empty; } - leaf rx-frame-err { - type uint64; + } + } + case multipart-request-group-features-case { + container multipart-request-group-features { + leaf empty { + type empty; } - leaf rx-over-err { - type uint64; + } + } + case multipart-request-meter-case { + container multipart-request-meter { + leaf meter-id { + type oft:meter-id; } - leaf rx-crc-err { - type uint64; + } + } + case multipart-request-meter-config-case { + container multipart-request-meter-config { + leaf meter-id { + type oft:meter-id; } - leaf collisions { - type uint64; + } + } + case multipart-request-meter-features-case { + container multipart-request-meter-features { + leaf empty { + type empty; } - leaf duration-sec { - type uint32; + } + } + case multipart-request-table-features-case { + container multipart-request-table-features { + list table-features { + leaf table-id { + type uint8; + } + leaf name { + type string; + } + leaf metadata-match { + type uint64; + } + leaf metadata-write { + type uint64; + } + leaf config { + type oft:table-config; + } + leaf max-entries { + type uint32; + } + uses table-features-properties; } - leaf duration-nsec { - type uint32; + } + } + case multipart-request-port-desc-case { + container multipart-request-port-desc { + leaf empty { + type empty; } } } - case multipart-reply-queue { - list queue-stats { - leaf port-no { + case multipart-request-experimenter-case { + container multipart-request-experimenter { + leaf experimenter { type uint32; } - leaf queue-id { + leaf exp-type { type uint32; } - leaf tx-bytes { - type uint64; + leaf data { + type binary; } - leaf tx-packets { - type uint64; + } + } + } + } + grouping multipart-reply { + // reference "OFPT_MULTIPART_REPLY message in Openflow Switch 1.3 Spec" + /* Controller/switch message */ + + uses ofHeader; + + leaf type { + type oft:multipart-type; + } + leaf flags { + type oft:multipart-request-flags; + } + choice multipart-reply-body { + case multipart-reply-desc-case { + container multipart-reply-desc { + leaf mfr_desc { + type string; } - leaf tx-errors { - type uint64; + leaf hw_desc { + type string; } - leaf duration-sec { - type uint32; + leaf sw_desc { + type string; } - leaf duration-nsec { - type uint32; + leaf serial_num { + type string; + } + leaf dp_desc { + type string; } } } - case multipart-reply-group { - list group-stats { - leaf group-id { - type oft:group-id; - } - leaf ref-count { - type uint32; + case multipart-reply-flow-case { + container multipart-reply-flow { + list flow-stats { + leaf table-id { + type uint8; + } + leaf duration-sec { + type uint32; + } + leaf duration-nsec { + type uint32; + } + leaf priority { + type uint16; + } + leaf idle-timeout { + type uint16; + } + leaf hard-timeout { + type uint16; + } + leaf flags { + type oft:flow-mod-flags; + } + leaf cookie { + type uint64; + } + leaf packet-count { + type uint64; + } + leaf byte-count { + type uint64; + } + uses match-grouping; + + uses ofinstruction:instructions; + + // OF1.0 structures + uses oxm:match-v10-grouping; + uses ofaction:actions; } + } + } + case multipart-reply-aggregate-case { + container multipart-reply-aggregate { leaf packet-count { type uint64; } leaf byte-count { type uint64; } - leaf duration-sec { - type uint32; - } - leaf duration-nsec { + leaf flow-count { type uint32; } - list bucket-stats { - leaf packet-count { + } + } + case multipart-reply-table-case { + container multipart-reply-table { + list table-stats { + leaf table-id { + type uint8; + } + leaf active-count { + type uint32; + } + leaf lookup-count { type uint64; } - leaf byte-count { + leaf matched-count { type uint64; } + + // OF1.0 structures + leaf name { + type string; + } } } } - case multipart-reply-group-desc { - list group-desc { - leaf type { - type oft:group-type; - } - leaf group-id { - type oft:group-id; + case multipart-reply-port-stats-case { + container multipart-reply-port-stats { + list port-stats { + leaf port-no { + type uint32; + } + leaf rx-packets { + type uint64; + } + leaf tx-packets { + type uint64; + } + leaf rx-bytes { + type uint64; + } + leaf tx-bytes { + type uint64; + } + leaf rx-dropped { + type uint64; + } + leaf tx-dropped { + type uint64; + } + leaf rx-errors { + type uint64; + } + leaf tx-errors { + type uint64; + } + leaf rx-frame-err { + type uint64; + } + leaf rx-over-err { + type uint64; + } + leaf rx-crc-err { + type uint64; + } + leaf collisions { + type uint64; + } + leaf duration-sec { + type uint32; + } + leaf duration-nsec { + type uint32; + } } - uses buckets; } } - case multipart-reply-group-features { - leaf types { - type oft:group-types; - } - leaf capabilities { - type oft:group-capabilities; - } - leaf-list max_groups { - type uint32; - } - leaf-list actions-bitmap { - type oft:action-type; + case multipart-reply-queue-case { + container multipart-reply-queue { + list queue-stats { + leaf port-no { + type uint32; + } + leaf queue-id { + type uint32; + } + leaf tx-bytes { + type uint64; + } + leaf tx-packets { + type uint64; + } + leaf tx-errors { + type uint64; + } + leaf duration-sec { + type uint32; + } + leaf duration-nsec { + type uint32; + } + } } } - case multipart-reply-meter { - list meter-stats { - leaf meter-id { - type oft:meter-id; + case multipart-reply-group-case { + container multipart-reply-group { + list group-stats { + leaf group-id { + type oft:group-id; + } + leaf ref-count { + type uint32; + } + leaf packet-count { + type uint64; + } + leaf byte-count { + type uint64; + } + leaf duration-sec { + type uint32; + } + leaf duration-nsec { + type uint32; + } + list bucket-stats { + leaf packet-count { + type uint64; + } + leaf byte-count { + type uint64; + } + } } - leaf flow-count { - type uint32; + } + } + case multipart-reply-group-desc-case { + container multipart-reply-group-desc { + list group-desc { + leaf type { + type oft:group-type; + } + leaf group-id { + type oft:group-id; + } + uses buckets; } - leaf packet-in-count { - type uint64; + } + } + case multipart-reply-group-features-case { + container multipart-reply-group-features { + leaf types { + type oft:group-types; } - leaf byte-in-count { - type uint64; + leaf capabilities { + type oft:group-capabilities; } - leaf duration-sec { + leaf-list max_groups { type uint32; } - leaf duration-nsec { - type uint32; + leaf-list actions-bitmap { + type oft:action-type; } - list meter-band-stats { - leaf packet-band-count { + } + } + case multipart-reply-meter-case { + container multipart-reply-meter { + list meter-stats { + leaf meter-id { + type oft:meter-id; + } + leaf flow-count { + type uint32; + } + leaf packet-in-count { type uint64; } - leaf byte-band-count { + leaf byte-in-count { type uint64; } + leaf duration-sec { + type uint32; + } + leaf duration-nsec { + type uint32; + } + list meter-band-stats { + leaf packet-band-count { + type uint64; + } + leaf byte-band-count { + type uint64; + } + } } } } - case multipart-reply-meter-config { - list meter-config { - leaf flags { - type oft:meter-flags; - } - leaf meter-id { - type oft:meter-id; - } - list bands { - uses meter-band-header; + case multipart-reply-meter-config-case { + container multipart-reply-meter-config { + list meter-config { + leaf flags { + type oft:meter-flags; + } + leaf meter-id { + type oft:meter-id; + } + list bands { + uses meter-band-header; + } } } } - case multipart-reply-meter-features { - leaf max-meter { - type uint32; - } - leaf band-types { - type oft:meter-band-type-bitmap; - } - leaf capabilities { - type oft:meter-flags; - } - leaf max-bands { - type uint8; - } - leaf max-color { - type uint8; - } - } - case multipart-reply-table-features { - list table-features { - leaf table-id { - type uint8; + case multipart-reply-meter-features-case { + container multipart-reply-meter-features { + leaf max-meter { + type uint32; } - leaf name { - type string; + leaf band-types { + type oft:meter-band-type-bitmap; } - leaf metadata-match { - type binary; + leaf capabilities { + type oft:meter-flags; } - leaf metadata-write { - type binary; + leaf max-bands { + type uint8; } - leaf config { - type oft:table-config; - } - leaf max-entries { - type uint32; + leaf max-color { + type uint8; } - uses table-features-properties; } } - case multipart-reply-port-desc { - list ports { - uses port; + case multipart-reply-table-features-case { + container multipart-reply-table-features { + list table-features { + leaf table-id { + type uint8; + } + leaf name { + type string; + } + leaf metadata-match { + type binary; + } + leaf metadata-write { + type binary; + } + leaf config { + type oft:table-config; + } + leaf max-entries { + type uint32; + } + uses table-features-properties; + } } } - case multipart-reply-experimenter { - leaf experimenter { - type uint32; - } - leaf exp-type { - type uint32; + case multipart-reply-port-desc-case { + container multipart-reply-port-desc { + list ports { + uses port; + } } - leaf data { - type binary; + } + case multipart-reply-experimenter-case { + container multipart-reply-experimenter { + leaf experimenter { + type uint32; + } + leaf exp-type { + type uint32; + } + leaf data { + type binary; + } } } } @@ -1063,6 +1123,7 @@ module openflow-protocol { } grouping queue-property-header { list queue-property { + key "property"; leaf property { type oft:queue-properties; } @@ -1146,30 +1207,36 @@ module openflow-protocol { } leaf flags { type oft:meter-flags; - } + } leaf meter-id { type oft:meter-id; - } + } list bands { uses meter-band-header; } - } + } grouping meter-band-header { choice meter-band { - case meter-band-drop { - uses meter-band-commons; + case meter-band-drop-case { + container meter-band-drop { + uses meter-band-commons; + } } - case meter-band-dscp-remark { - uses meter-band-commons; - leaf prec-level { - type uint8; + case meter-band-dscp-remark-case { + container meter-band-dscp-remark { + uses meter-band-commons; + leaf prec-level { + type uint8; + } } } - case meter-band-experimenter { - uses meter-band-commons; - leaf experimenter { - type uint32; + case meter-band-experimenter-case { + container meter-band-experimenter { + uses meter-band-commons; + leaf experimenter { + type uint32; + } } } } diff --git a/openflow-protocol-api/src/main/yang/openflow-types.yang b/openflow-protocol-api/src/main/yang/openflow-types.yang index 2c8e8ae6..7750229c 100644 --- a/openflow-protocol-api/src/main/yang/openflow-types.yang +++ b/openflow-protocol-api/src/main/yang/openflow-types.yang @@ -46,43 +46,43 @@ module openflow-types { ////description "Features of ports available in datapath."; //reference "ofp_port_features"; type bits { - bit 10mb_hd { + bit _10mb_hd { position 0; //description "10 Mb half-duplex rate support."; } - bit 10mb-fd { + bit _10mb-fd { position 1; //description "10 Mb full-duplex rate support."; } - bit 100mb-hd { + bit _100mb-hd { position 2; //description "100 Mb half-duplex rate support."; } - bit 100mb-fd { + bit _100mb-fd { position 3; //description "100 Mb full-duplex rate support."; } - bit 1gb-hd { + bit _1gb-hd { position 4; //description "1 Gb half-duplex rate support."; } - bit 1gb-fd { + bit _1gb-fd { position 5; //description "1 Gb full-duplex rate support."; } - bit 10gb-fd { + bit _10gb-fd { position 6; //description "10 Gb full-duplex rate support."; } - bit 40gb-fd { + bit _40gb-fd { position 7; //description "40 Gb full-duplex rate support."; } - bit 100gb-fd { + bit _100gb-fd { position 8; //description "100 Gb full-duplex rate support."; } - bit 1tb-fd { + bit _1tb-fd { position 9; //description "1 Tb full-duplex rate support."; } @@ -167,16 +167,9 @@ module openflow-types { } identity standard-match-type { - deprecated true; base oft:match-type-base; } - typedef oxm-match-type { - type identityref { - base oft:match-type-base; - } - } - identity instruction { } @@ -1540,7 +1533,7 @@ module openflow-types { enum LOCAL { value 65534; // 0xfffe } - enum ANY { + enum NONE { value 65535; // 0xffff } } @@ -1601,24 +1594,19 @@ module openflow-types { position 2; } bit stp_listen { - //description "Live for Fast Failover Group."; - position 8; + //description "Not learning or relaying frames."; } bit stp_learn { - //description "Live for Fast Failover Group."; - position 8; + //description "Learning but not relaying frames."; } bit stp_forward { - //description "Live for Fast Failover Group."; - position 8; + //description "Learning and relaying frames."; } bit stp_block { - //description "Live for Fast Failover Group."; - position 8; + //description "Not part of spanning tree."; } bit stp_mask { - //description "Live for Fast Failover Group."; - position 8; + //description "Bit mask for OFPPS_STP_* values."; } } } @@ -1627,31 +1615,31 @@ module openflow-types { ////description "Features of ports available in datapath."; //reference "ofp_port_features"; type bits { - bit 10mb-hd { + bit _10mb-hd { position 0; //description "10 Mb half-duplex rate support."; } - bit 10mb-fd { + bit _10mb-fd { position 1; //description "10 Mb full-duplex rate support."; } - bit 100mb-hd { + bit _100mb-hd { position 2; //description "100 Mb half-duplex rate support."; } - bit 100mb-fd { + bit _100mb-fd { position 3; //description "100 Mb full-duplex rate support."; } - bit 1gb-hd { + bit _1gb-hd { position 4; //description "1 Gb half-duplex rate support."; } - bit 1gb-fd { + bit _1gb-fd { position 5; //description "1 Gb full-duplex rate support."; } - bit 10gb-fd { + bit _10gb-fd { position 6; //description "10 Gb full-duplex rate support."; } diff --git a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/PublishingChannelInitializer.java b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/PublishingChannelInitializer.java index 1fd9cb9c..b38856ad 100644 --- a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/PublishingChannelInitializer.java +++ b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/PublishingChannelInitializer.java @@ -47,7 +47,8 @@ public class PublishingChannelInitializer extends ChannelInitializer flowStatsList = new ArrayList<>(); while (input.readableBytes() > 0) { @@ -276,7 +297,8 @@ public class MultipartReplyMessageFactory implements OFDeserializer tableStatsList = new ArrayList<>(); while (input.readableBytes() > 0) { @@ -318,10 +343,12 @@ public class MultipartReplyMessageFactory implements OFDeserializer features = new ArrayList<>(); while (input.readableBytes() > 0) { @@ -343,7 +370,8 @@ public class MultipartReplyMessageFactory implements OFDeserializer portStatsList = new ArrayList<>(); while (input.readableBytes() > 0) { @@ -457,10 +486,12 @@ public class MultipartReplyMessageFactory implements OFDeserializer queueStatsList = new ArrayList<>(); while (input.readableBytes() > 0) { @@ -481,10 +512,12 @@ public class MultipartReplyMessageFactory implements OFDeserializer groupStatsList = new ArrayList<>(); while (input.readableBytes() > 0) { @@ -519,10 +552,12 @@ public class MultipartReplyMessageFactory implements OFDeserializer meterStatsList = new ArrayList<>(); while (input.readableBytes() > 0) { @@ -581,10 +618,12 @@ public class MultipartReplyMessageFactory implements OFDeserializer meterConfigList = new ArrayList<>(); while (input.readableBytes() > 0) { @@ -599,15 +638,18 @@ public class MultipartReplyMessageFactory implements OFDeserializer portsList = new ArrayList<>(); while (input.readableBytes() > 0) { @@ -674,7 +723,8 @@ public class MultipartReplyMessageFactory implements OFDeserializer groupDescsList = new ArrayList<>(); while (input.readableBytes() > 0) { @@ -798,7 +851,8 @@ public class MultipartReplyMessageFactory implements OFDeserializer flowStatsList = new ArrayList<>(); while (input.readableBytes() > 0) { @@ -159,10 +169,12 @@ public class OF10StatsReplyMessageFactory implements OFDeserializer tableStatsList = new ArrayList<>(); while (input.readableBytes() > 0) { @@ -193,10 +207,12 @@ public class OF10StatsReplyMessageFactory implements OFDeserializer portStatsList = new ArrayList<>(); while (input.readableBytes() > 0) { @@ -241,10 +257,12 @@ public class OF10StatsReplyMessageFactory implements OFDeserializer queueStatsList = new ArrayList<>(); while (input.readableBytes() > 0) { @@ -264,15 +282,18 @@ public class OF10StatsReplyMessageFactory implements OFDeserializer if (bands != null) { for (Bands currentBand : bands) { MeterBand meterBand = currentBand.getMeterBand(); - writeBandCommonFields((MeterBandCommons) meterBand, outBuffer); - if (meterBand instanceof MeterBandDrop) { + if (meterBand instanceof MeterBandDropCase) { + MeterBandDropCase dropBandCase = (MeterBandDropCase) meterBand; + MeterBandDrop dropBand = dropBandCase.getMeterBandDrop(); + writeBandCommonFields(dropBand, outBuffer); ByteBufUtils.padBuffer(PADDING_IN_METER_BAND_DROP, outBuffer); - } else if (meterBand instanceof MeterBandDscpRemark) { - MeterBandDscpRemark dscpRemarkBand = (MeterBandDscpRemark) meterBand; + } else if (meterBand instanceof MeterBandDscpRemarkCase) { + MeterBandDscpRemarkCase dscpRemarkBandCase = (MeterBandDscpRemarkCase) meterBand; + MeterBandDscpRemark dscpRemarkBand = dscpRemarkBandCase.getMeterBandDscpRemark(); + writeBandCommonFields(dscpRemarkBand, outBuffer); outBuffer.writeByte(dscpRemarkBand.getPrecLevel()); ByteBufUtils.padBuffer(PADDING_IN_METER_BAND_DSCP_REMARK, outBuffer); - } else if (meterBand instanceof MeterBandExperimenter) { - MeterBandExperimenter experimenterBand = (MeterBandExperimenter) meterBand; + } else if (meterBand instanceof MeterBandExperimenterCase) { + MeterBandExperimenterCase experimenterBandCase = (MeterBandExperimenterCase) meterBand; + MeterBandExperimenter experimenterBand = experimenterBandCase.getMeterBandExperimenter(); + writeBandCommonFields(experimenterBand, outBuffer); outBuffer.writeInt(experimenterBand.getExperimenter().intValue()); } } diff --git a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/MultipartRequestInputFactory.java b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/MultipartRequestInputFactory.java index d982f3f4..4f2cbe3b 100644 --- a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/MultipartRequestInputFactory.java +++ b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/MultipartRequestInputFactory.java @@ -35,22 +35,31 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev13 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.oxm.fields.MatchEntries; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartRequestInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.MultipartRequestBody; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestAggregate; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestDesc; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestExperimenter; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestFlow; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestGroup; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestGroupDesc; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestGroupFeatures; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestMeter; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestMeterConfig; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestMeterFeatures; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestPortDesc; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestPortStats; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestQueue; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestTable; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestTableFeatures; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.table.features.TableFeatures; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestAggregateCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestDescCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestExperimenterCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestFlowCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestGroupCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestGroupDescCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestGroupFeaturesCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestMeterCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestMeterConfigCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestMeterFeaturesCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestPortDescCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestPortStatsCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestQueueCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestTableCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestTableFeaturesCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.aggregate._case.MultipartRequestAggregate; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.experimenter._case.MultipartRequestExperimenter; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.flow._case.MultipartRequestFlow; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.group._case.MultipartRequestGroup; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.meter._case.MultipartRequestMeter; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.meter.config._case.MultipartRequestMeterConfig; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.port.stats._case.MultipartRequestPortStats; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.queue._case.MultipartRequestQueue; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.table.features._case.MultipartRequestTableFeatures; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.table.features._case.multipart.request.table.features.TableFeatures; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.table.features.properties.TableFeatureProperties; /** @@ -124,35 +133,35 @@ public class MultipartRequestInputFactory implements OFSerializer createBandsList(){ List bandsList = new ArrayList<>(); BandsBuilder bandsBuilder = new BandsBuilder(); + MeterBandDropCaseBuilder dropCaseBuilder = new MeterBandDropCaseBuilder(); MeterBandDropBuilder dropBand = new MeterBandDropBuilder(); dropBand.setType(MeterBandType.OFPMBTDROP); dropBand.setRate(1L); dropBand.setBurstSize(2L); - bandsList.add(bandsBuilder.setMeterBand(dropBand.build()).build()); + dropCaseBuilder.setMeterBandDrop(dropBand.build()); + bandsList.add(bandsBuilder.setMeterBand(dropCaseBuilder.build()).build()); + MeterBandDscpRemarkCaseBuilder dscpCaseBuilder = new MeterBandDscpRemarkCaseBuilder(); MeterBandDscpRemarkBuilder dscpRemarkBand = new MeterBandDscpRemarkBuilder(); dscpRemarkBand.setType(MeterBandType.OFPMBTDSCPREMARK); dscpRemarkBand.setRate(1L); dscpRemarkBand.setBurstSize(2L); dscpRemarkBand.setPrecLevel((short) 3); - bandsList.add(bandsBuilder.setMeterBand(dscpRemarkBand.build()).build()); + dscpCaseBuilder.setMeterBandDscpRemark(dscpRemarkBand.build()); + bandsList.add(bandsBuilder.setMeterBand(dscpCaseBuilder.build()).build()); + MeterBandExperimenterCaseBuilder expCaseBuilder = new MeterBandExperimenterCaseBuilder(); MeterBandExperimenterBuilder experimenterBand = new MeterBandExperimenterBuilder(); experimenterBand.setType(MeterBandType.OFPMBTEXPERIMENTER); experimenterBand.setRate(1L); experimenterBand.setBurstSize(2L); experimenterBand.setExperimenter(4L); - bandsList.add(bandsBuilder.setMeterBand(experimenterBand.build()).build()); + expCaseBuilder.setMeterBandExperimenter(experimenterBand.build()); + bandsList.add(bandsBuilder.setMeterBand(expCaseBuilder.build()).build()); return bandsList; } private static List decodeBandsList(ByteBuf input){ List bandsList = new ArrayList<>(); BandsBuilder bandsBuilder = new BandsBuilder(); + MeterBandDropCaseBuilder dropCaseBuilder = new MeterBandDropCaseBuilder(); MeterBandDropBuilder dropBand = new MeterBandDropBuilder(); dropBand.setType(MeterBandType.forValue(input.readUnsignedShort())); input.skipBytes(Short.SIZE/Byte.SIZE); dropBand.setRate(input.readUnsignedInt()); dropBand.setBurstSize(input.readUnsignedInt()); input.skipBytes(4); - bandsList.add(bandsBuilder.setMeterBand(dropBand.build()).build()); + dropCaseBuilder.setMeterBandDrop(dropBand.build()); + bandsList.add(bandsBuilder.setMeterBand(dropCaseBuilder.build()).build()); + MeterBandDscpRemarkCaseBuilder dscpCaseBuilder = new MeterBandDscpRemarkCaseBuilder(); MeterBandDscpRemarkBuilder dscpRemarkBand = new MeterBandDscpRemarkBuilder(); dscpRemarkBand.setType(MeterBandType.forValue(input.readUnsignedShort())); input.skipBytes(Short.SIZE/Byte.SIZE); @@ -111,14 +123,17 @@ public class MeterModInputMessageFactoryTest { dscpRemarkBand.setBurstSize(input.readUnsignedInt()); dscpRemarkBand.setPrecLevel(input.readUnsignedByte()); input.skipBytes(3); - bandsList.add(bandsBuilder.setMeterBand(dscpRemarkBand.build()).build()); + dscpCaseBuilder.setMeterBandDscpRemark(dscpRemarkBand.build()); + bandsList.add(bandsBuilder.setMeterBand(dscpCaseBuilder.build()).build()); + MeterBandExperimenterCaseBuilder expCaseBuilder = new MeterBandExperimenterCaseBuilder(); MeterBandExperimenterBuilder experimenterBand = new MeterBandExperimenterBuilder(); experimenterBand.setType(MeterBandType.forValue(input.readUnsignedShort())); input.skipBytes(Short.SIZE/Byte.SIZE); experimenterBand.setRate(input.readUnsignedInt()); experimenterBand.setBurstSize(input.readUnsignedInt()); experimenterBand.setExperimenter(input.readUnsignedInt()); - bandsList.add(bandsBuilder.setMeterBand(experimenterBand.build()).build()); + expCaseBuilder.setMeterBandExperimenter(experimenterBand.build()); + bandsList.add(bandsBuilder.setMeterBand(expCaseBuilder.build()).build()); return bandsList; } diff --git a/openflow-protocol-impl/src/test/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/MultipartRequestInputFactoryTest.java b/openflow-protocol-impl/src/test/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/MultipartRequestInputFactoryTest.java index 3b949bc3..8bab2fdb 100644 --- a/openflow-protocol-impl/src/test/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/MultipartRequestInputFactoryTest.java +++ b/openflow-protocol-impl/src/test/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/MultipartRequestInputFactoryTest.java @@ -29,27 +29,38 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev13 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartRequestInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartRequestInputBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.MultipartRequestBody; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestAggregate; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestAggregateBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestDescBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestExperimenter; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestExperimenterBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestFlow; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestFlowBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestGroup; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestGroupBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestMeter; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestMeterBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestMeterConfig; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestMeterConfigBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestPortStats; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestPortStatsBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestQueue; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestQueueBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestTableFeatures; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestTableFeaturesBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.table.features.TableFeatures; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.table.features.TableFeaturesBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestAggregateCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestAggregateCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestDescCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestExperimenterCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestExperimenterCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestFlowCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestFlowCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestGroupCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestGroupCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestMeterCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestMeterCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestMeterConfigCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestMeterConfigCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestPortStatsCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestPortStatsCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestQueueCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestQueueCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestTableFeaturesCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestTableFeaturesCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.aggregate._case.MultipartRequestAggregateBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.desc._case.MultipartRequestDescBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.experimenter._case.MultipartRequestExperimenterBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.flow._case.MultipartRequestFlowBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.group._case.MultipartRequestGroupBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.meter._case.MultipartRequestMeterBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.meter.config._case.MultipartRequestMeterConfigBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.port.stats._case.MultipartRequestPortStatsBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.queue._case.MultipartRequestQueueBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.table.features._case.MultipartRequestTableFeatures; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.table.features._case.MultipartRequestTableFeaturesBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.table.features._case.multipart.request.table.features.TableFeatures; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.table.features._case.multipart.request.table.features.TableFeaturesBuilder; /** * @author timotej.kubas @@ -82,7 +93,8 @@ public class MultipartRequestInputFactoryTest { Assert.assertEquals("Wrong flow", message.getMultipartRequestBody(), decodeRequestFlow(out)); } - private static MultipartRequestFlow createRequestFlow() { + private static MultipartRequestFlowCase createRequestFlow() { + MultipartRequestFlowCaseBuilder caseBuilder = new MultipartRequestFlowCaseBuilder(); MultipartRequestFlowBuilder builder = new MultipartRequestFlowBuilder(); builder.setTableId((short) 8); builder.setOutPort(85L); @@ -91,14 +103,15 @@ public class MultipartRequestInputFactoryTest { builder.setCookie(new BigInteger(cookie)); byte[] cookieMask = new byte[]{0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}; builder.setCookieMask(new BigInteger(cookieMask)); - MultipartRequestFlow flow = builder.build(); + caseBuilder.setMultipartRequestFlow(builder.build()); //TODO match field - return flow; + return caseBuilder.build(); } - private static MultipartRequestFlow decodeRequestFlow(ByteBuf output) { + private static MultipartRequestFlowCase decodeRequestFlow(ByteBuf output) { final byte PADDING_IN_MULTIPART_REQUEST_FLOW_BODY_01 = 3; final byte PADDING_IN_MULTIPART_REQUEST_FLOW_BODY_02 = 4; + MultipartRequestFlowCaseBuilder caseBuilder = new MultipartRequestFlowCaseBuilder(); MultipartRequestFlowBuilder builder = new MultipartRequestFlowBuilder(); builder.setTableId(output.readUnsignedByte()); output.skipBytes(PADDING_IN_MULTIPART_REQUEST_FLOW_BODY_01); @@ -111,8 +124,8 @@ public class MultipartRequestInputFactoryTest { byte[] cookieMask = new byte[Long.SIZE/Byte.SIZE]; output.readBytes(cookieMask); builder.setCookieMask(new BigInteger(cookieMask)); - MultipartRequestFlow flow = builder.build(); - return flow; + caseBuilder.setMultipartRequestFlow(builder.build()); + return caseBuilder.build(); } /** @@ -145,7 +158,8 @@ public class MultipartRequestInputFactoryTest { } - private static MultipartRequestAggregate createRequestAggregate() { + private static MultipartRequestAggregateCase createRequestAggregate() { + MultipartRequestAggregateCaseBuilder caseBuilder = new MultipartRequestAggregateCaseBuilder(); MultipartRequestAggregateBuilder builder = new MultipartRequestAggregateBuilder(); builder.setTableId((short) 8); builder.setOutPort(85L); @@ -154,14 +168,15 @@ public class MultipartRequestInputFactoryTest { builder.setCookie(new BigInteger(cookie)); byte[] cookieMask = new byte[]{0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}; builder.setCookieMask(new BigInteger(cookieMask)); - MultipartRequestAggregate aggregate = builder.build(); + caseBuilder.setMultipartRequestAggregate(builder.build()); //TODO match field - return aggregate; + return caseBuilder.build(); } - private static MultipartRequestAggregate decodeRequestAggregate(ByteBuf output) { + private static MultipartRequestAggregateCase decodeRequestAggregate(ByteBuf output) { final byte PADDING_IN_MULTIPART_REQUEST_AGGREGATE_BODY_01 = 3; final byte PADDING_IN_MULTIPART_REQUEST_AGGREGATE_BODY_02 = 4; + MultipartRequestAggregateCaseBuilder caseBuilder = new MultipartRequestAggregateCaseBuilder(); MultipartRequestAggregateBuilder builder = new MultipartRequestAggregateBuilder(); builder.setTableId(output.readUnsignedByte()); output.skipBytes(PADDING_IN_MULTIPART_REQUEST_AGGREGATE_BODY_01); @@ -174,8 +189,8 @@ public class MultipartRequestInputFactoryTest { byte[] cookieMask = new byte[Long.SIZE/Byte.SIZE]; output.readBytes(cookieMask); builder.setCookieMask(new BigInteger(cookieMask)); - MultipartRequestAggregate flow = builder.build(); - return flow; + caseBuilder.setMultipartRequestAggregate(builder.build()); + return caseBuilder.build(); } /** @@ -225,20 +240,22 @@ public class MultipartRequestInputFactoryTest { Assert.assertEquals("Wrong portStatsBody", message.getMultipartRequestBody(), decodeRequestPortStats(out)); } - private static MultipartRequestPortStats createRequestPortStats() { + private static MultipartRequestPortStatsCase createRequestPortStats() { + MultipartRequestPortStatsCaseBuilder caseBuilder = new MultipartRequestPortStatsCaseBuilder(); MultipartRequestPortStatsBuilder builder = new MultipartRequestPortStatsBuilder(); builder.setPortNo(2251L); - MultipartRequestPortStats portStats = builder.build(); - return portStats; + caseBuilder.setMultipartRequestPortStats(builder.build()); + return caseBuilder.build(); } - private static MultipartRequestPortStats decodeRequestPortStats(ByteBuf output) { + private static MultipartRequestPortStatsCase decodeRequestPortStats(ByteBuf output) { final byte PADDING_IN_MULTIPART_REQUEST_PORTSTATS_BODY = 4; + MultipartRequestPortStatsCaseBuilder caseBuilder = new MultipartRequestPortStatsCaseBuilder(); MultipartRequestPortStatsBuilder builder = new MultipartRequestPortStatsBuilder(); builder.setPortNo(output.readUnsignedInt()); output.skipBytes(PADDING_IN_MULTIPART_REQUEST_PORTSTATS_BODY); - MultipartRequestPortStats portRequest = builder.build(); - return portRequest; + caseBuilder.setMultipartRequestPortStats(builder.build()); + return caseBuilder.build(); } /** @@ -265,20 +282,22 @@ public class MultipartRequestInputFactoryTest { Assert.assertEquals("Wrong queueBody", message.getMultipartRequestBody(), decodeRequestQueue(out)); } - private static MultipartRequestQueue createRequestQueue() { + private static MultipartRequestQueueCase createRequestQueue() { + MultipartRequestQueueCaseBuilder caseBuilder = new MultipartRequestQueueCaseBuilder(); MultipartRequestQueueBuilder builder = new MultipartRequestQueueBuilder(); builder.setPortNo(2256L); builder.setQueueId(2211L); - MultipartRequestQueue queue = builder.build(); - return queue; + caseBuilder.setMultipartRequestQueue(builder.build()); + return caseBuilder.build(); } - private static MultipartRequestQueue decodeRequestQueue(ByteBuf output) { + private static MultipartRequestQueueCase decodeRequestQueue(ByteBuf output) { + MultipartRequestQueueCaseBuilder caseBuilder = new MultipartRequestQueueCaseBuilder(); MultipartRequestQueueBuilder builder = new MultipartRequestQueueBuilder(); builder.setPortNo(output.readUnsignedInt()); builder.setQueueId(output.readUnsignedInt()); - MultipartRequestQueue queue = builder.build(); - return queue; + caseBuilder.setMultipartRequestQueue(builder.build()); + return caseBuilder.build(); } /** @@ -305,20 +324,22 @@ public class MultipartRequestInputFactoryTest { Assert.assertEquals("Wrong groupBody", message.getMultipartRequestBody(), decodeRequestGroup(out)); } - private static MultipartRequestGroup createRequestGroup() { + private static MultipartRequestGroupCase createRequestGroup() { + MultipartRequestGroupCaseBuilder caseBuilder = new MultipartRequestGroupCaseBuilder(); MultipartRequestGroupBuilder builder = new MultipartRequestGroupBuilder(); builder.setGroupId(new GroupId(2258L)); - MultipartRequestGroup group = builder.build(); - return group; + caseBuilder.setMultipartRequestGroup(builder.build()); + return caseBuilder.build(); } - private static MultipartRequestGroup decodeRequestGroup(ByteBuf output) { + private static MultipartRequestGroupCase decodeRequestGroup(ByteBuf output) { final byte PADDING_IN_MULTIPART_REQUEST_GROUP_BODY = 4; + MultipartRequestGroupCaseBuilder caseBuilder = new MultipartRequestGroupCaseBuilder(); MultipartRequestGroupBuilder builder = new MultipartRequestGroupBuilder(); builder.setGroupId(new GroupId(output.readUnsignedInt())); output.skipBytes(PADDING_IN_MULTIPART_REQUEST_GROUP_BODY); - MultipartRequestGroup group = builder.build(); - return group; + caseBuilder.setMultipartRequestGroup(builder.build()); + return caseBuilder.build(); } /** @@ -345,20 +366,22 @@ public class MultipartRequestInputFactoryTest { Assert.assertEquals("Wrong meterBody", message.getMultipartRequestBody(), decodeRequestMeter(out)); } - private static MultipartRequestMeter createRequestMeter() { + private static MultipartRequestMeterCase createRequestMeter() { + MultipartRequestMeterCaseBuilder caseBuilder = new MultipartRequestMeterCaseBuilder(); MultipartRequestMeterBuilder builder = new MultipartRequestMeterBuilder(); builder.setMeterId(new MeterId(1121L)); - MultipartRequestMeter meter = builder.build(); - return meter; + caseBuilder.setMultipartRequestMeter(builder.build()); + return caseBuilder.build(); } - private static MultipartRequestMeter decodeRequestMeter(ByteBuf output) { + private static MultipartRequestMeterCase decodeRequestMeter(ByteBuf output) { final byte PADDING_IN_MULTIPART_REQUEST_METER_BODY = 4; + MultipartRequestMeterCaseBuilder caseBuilder = new MultipartRequestMeterCaseBuilder(); MultipartRequestMeterBuilder builder = new MultipartRequestMeterBuilder(); builder.setMeterId(new MeterId(output.readUnsignedInt())); output.skipBytes(PADDING_IN_MULTIPART_REQUEST_METER_BODY); - MultipartRequestMeter meter = builder.build(); - return meter; + caseBuilder.setMultipartRequestMeter(builder.build()); + return caseBuilder.build(); } /** @@ -385,20 +408,22 @@ public class MultipartRequestInputFactoryTest { Assert.assertEquals("Wrong meterConfigBody", message.getMultipartRequestBody(), decodeRequestMeterConfig(out)); } - private static MultipartRequestMeterConfig createRequestMeterConfig() { + private static MultipartRequestMeterConfigCase createRequestMeterConfig() { + MultipartRequestMeterConfigCaseBuilder caseBuilder = new MultipartRequestMeterConfigCaseBuilder(); MultipartRequestMeterConfigBuilder builder = new MultipartRequestMeterConfigBuilder(); builder.setMeterId(new MeterId(1133L)); - MultipartRequestMeterConfig meterConfig = builder.build(); - return meterConfig; + caseBuilder.setMultipartRequestMeterConfig(builder.build()); + return caseBuilder.build(); } - private static MultipartRequestMeterConfig decodeRequestMeterConfig(ByteBuf output) { + private static MultipartRequestMeterConfigCase decodeRequestMeterConfig(ByteBuf output) { final byte PADDING_IN_MULTIPART_REQUEST_METER_CONFIG_BODY = 4; + MultipartRequestMeterConfigCaseBuilder caseBuilder = new MultipartRequestMeterConfigCaseBuilder(); MultipartRequestMeterConfigBuilder builder = new MultipartRequestMeterConfigBuilder(); builder.setMeterId(new MeterId(output.readUnsignedInt())); output.skipBytes(PADDING_IN_MULTIPART_REQUEST_METER_CONFIG_BODY); - MultipartRequestMeterConfig meterConfig = builder.build(); - return meterConfig; + caseBuilder.setMultipartRequestMeterConfig(builder.build()); + return caseBuilder.build(); } /** @@ -425,20 +450,22 @@ public class MultipartRequestInputFactoryTest { Assert.assertEquals("Wrong experimenterBody", message.getMultipartRequestBody(), decodeRequestExperimenter(out)); } - private static MultipartRequestExperimenter createRequestExperimenter() { + private static MultipartRequestExperimenterCase createRequestExperimenter() { + MultipartRequestExperimenterCaseBuilder caseBuilder = new MultipartRequestExperimenterCaseBuilder(); MultipartRequestExperimenterBuilder builder = new MultipartRequestExperimenterBuilder(); builder.setExperimenter(1133L); builder.setExpType(1135L); - MultipartRequestExperimenter experimenter = builder.build(); - return experimenter; + caseBuilder.setMultipartRequestExperimenter(builder.build()); + return caseBuilder.build(); } - private static MultipartRequestExperimenter decodeRequestExperimenter(ByteBuf output) { + private static MultipartRequestExperimenterCase decodeRequestExperimenter(ByteBuf output) { + MultipartRequestExperimenterCaseBuilder caseBuilder = new MultipartRequestExperimenterCaseBuilder(); MultipartRequestExperimenterBuilder builder = new MultipartRequestExperimenterBuilder(); builder.setExperimenter(output.readUnsignedInt()); builder.setExpType(output.readUnsignedInt()); - MultipartRequestExperimenter experimenter = builder.build(); - return experimenter; + caseBuilder.setMultipartRequestExperimenter(builder.build()); + return caseBuilder.build(); } /** @@ -464,8 +491,10 @@ public class MultipartRequestInputFactoryTest { } private static MultipartRequestBody createRequestDesc() { + MultipartRequestDescCaseBuilder caseBuilder = new MultipartRequestDescCaseBuilder(); MultipartRequestDescBuilder builder = new MultipartRequestDescBuilder(); - return builder.build(); + caseBuilder.setMultipartRequestDesc(builder.build()); + return caseBuilder.build(); } /** @@ -489,12 +518,14 @@ public class MultipartRequestInputFactoryTest { Assert.assertEquals("Wrong type", message.getType().getIntValue(), out.readUnsignedShort()); Assert.assertEquals("Wrong flags", message.getFlags(), decodeMultipartRequestFlags(out.readShort())); out.skipBytes(PADDING_IN_MULTIPART_REQUEST_MESSAGE); - - MultipartRequestTableFeatures messageTableFeatures = (MultipartRequestTableFeatures) message.getMultipartRequestBody(); - Assert.assertEquals("Wrong tableFeaturesBody", messageTableFeatures.getTableFeatures(), decodeRequestTableFeatures(out).getTableFeatures()); + MultipartRequestTableFeaturesCase messageTableFeaturesCase = (MultipartRequestTableFeaturesCase) message.getMultipartRequestBody(); + MultipartRequestTableFeatures messageTableFeatures = messageTableFeaturesCase.getMultipartRequestTableFeatures(); + Assert.assertEquals("Wrong tableFeaturesBody", messageTableFeatures.getTableFeatures(), decodeRequestTableFeatures(out). + getMultipartRequestTableFeatures().getTableFeatures()); } - private static MultipartRequestTableFeatures createRequestTableFeatures() { + private static MultipartRequestTableFeaturesCase createRequestTableFeatures() { + MultipartRequestTableFeaturesCaseBuilder caseBuilder = new MultipartRequestTableFeaturesCaseBuilder(); MultipartRequestTableFeaturesBuilder builder = new MultipartRequestTableFeaturesBuilder(); List tableFeaturesList = new ArrayList<>(); TableFeaturesBuilder tableFeaturesBuilder = new TableFeaturesBuilder(); @@ -507,13 +538,14 @@ public class MultipartRequestInputFactoryTest { TableFeatures tableFeature = tableFeaturesBuilder.build(); tableFeaturesList.add(tableFeature); builder.setTableFeatures(tableFeaturesList); - MultipartRequestTableFeatures tableFeaturesRequest = builder.build(); - return tableFeaturesRequest; + caseBuilder.setMultipartRequestTableFeatures(builder.build()); + return caseBuilder.build(); } - private static MultipartRequestTableFeatures decodeRequestTableFeatures(ByteBuf output) { + private static MultipartRequestTableFeaturesCase decodeRequestTableFeatures(ByteBuf output) { final byte PADDING_IN_MULTIPART_REQUEST_TABLE_FEATURES_BODY = 5; final byte OFP_MAX_TABLE_NAME_LEN = 32; + MultipartRequestTableFeaturesCaseBuilder caseBuilder = new MultipartRequestTableFeaturesCaseBuilder(); MultipartRequestTableFeaturesBuilder builder = new MultipartRequestTableFeaturesBuilder(); List tableFeaturesList = new ArrayList<>(); TableFeaturesBuilder tableFeaturesBuilder = new TableFeaturesBuilder(); @@ -534,8 +566,8 @@ public class MultipartRequestInputFactoryTest { TableFeatures tableFeature = tableFeaturesBuilder.build(); tableFeaturesList.add(tableFeature); builder.setTableFeatures(tableFeaturesList); - MultipartRequestTableFeatures tableFeaturesRequest = builder.build(); - return tableFeaturesRequest; + caseBuilder.setMultipartRequestTableFeatures(builder.build()); + return caseBuilder.build(); } private static TableConfig decodeTableConfig(int input) { -- 2.36.6