ONOS-6717 Meter Protobuf model

Change-Id: I0cba2811957ce9cab370c229fbdfa61712635d69
diff --git a/incubator/protobuf/models/src/main/proto/cluster/NodeIdProto.proto b/incubator/protobuf/models/src/main/proto/cluster/NodeIdProto.proto
new file mode 100644
index 0000000..2d062fd
--- /dev/null
+++ b/incubator/protobuf/models/src/main/proto/cluster/NodeIdProto.proto
@@ -0,0 +1,8 @@
+syntax = "proto3";
+option java_package = "org.onosproject.grpc.net.cluster.models";
+
+package cluster;
+
+message NodeIdProto {
+    string node_id = 1;
+}
\ No newline at end of file
diff --git a/incubator/protobuf/models/src/main/proto/net/meter/BandEnumsProto.proto b/incubator/protobuf/models/src/main/proto/net/meter/BandEnumsProto.proto
new file mode 100644
index 0000000..10879a7
--- /dev/null
+++ b/incubator/protobuf/models/src/main/proto/net/meter/BandEnumsProto.proto
@@ -0,0 +1,28 @@
+syntax = "proto3";
+option java_package = "org.onosproject.grpc.net.meter.models";
+
+package net.meter;
+
+/**
+* Specifies the type of band.
+*/
+enum BandTypeProto {
+    /**
+    * Simple rate limiter which drops packets
+    * when the rate is exceeded.
+    */
+    DROP = 0;
+
+    /**
+    * defines a simple DiffServ policer that remark
+    * the drop precedence of the DSCP field in the
+    * IP header of the packets that exceed the band
+    * rate value.
+    */
+    REMARK = 1;
+
+    /**
+    * defines an experimental meter band.
+    */
+    EXPERIMENTAL = 2;
+}
diff --git a/incubator/protobuf/models/src/main/proto/net/meter/BandProto.proto b/incubator/protobuf/models/src/main/proto/net/meter/BandProto.proto
new file mode 100644
index 0000000..ca7f28b
--- /dev/null
+++ b/incubator/protobuf/models/src/main/proto/net/meter/BandProto.proto
@@ -0,0 +1,16 @@
+syntax = "proto3";
+option java_package = "org.onosproject.grpc.net.meter.models";
+
+package net.meter;
+
+import "net/meter/BandEnumsProto.proto";
+
+// Corresponds to  org.onosproject.net.meter.Band.
+message BandProto {
+    uint64 rate = 1;
+    uint64 burst = 2;
+    uint32 drop_precedence = 3;
+    BandTypeProto type = 4;
+    uint64 packets = 5;
+    uint64 bytes = 6;
+}
\ No newline at end of file
diff --git a/incubator/protobuf/models/src/main/proto/net/meter/MeterEnumsProto.proto b/incubator/protobuf/models/src/main/proto/net/meter/MeterEnumsProto.proto
new file mode 100644
index 0000000..3d1a67f
--- /dev/null
+++ b/incubator/protobuf/models/src/main/proto/net/meter/MeterEnumsProto.proto
@@ -0,0 +1,66 @@
+syntax = "proto3";
+option java_package = "org.onosproject.grpc.net.meter.models";
+
+package net.meter;
+
+enum MeterUnitProto {
+    /**
+    * Packets per second.
+    */
+    PKTS_PER_SEC = 0;
+
+    /**
+    * Kilo bits per second.
+    */
+    KB_PER_SEC = 1;
+}
+
+enum MeterStateProto {
+    /**
+    * The meter is in the process of being added.
+    */
+    PENDING_ADD = 0;
+
+    /**
+    * THe meter has been added.
+    */
+    ADDED = 1;
+
+    /**
+    * The meter is in the process of being removed.
+    */
+    PENDING_REMOVE = 2;
+
+    /**
+    * The meter has been removed.
+    */
+    REMOVED = 3;
+}
+
+enum MeterRequestTypeProto {
+    ADD = 0;
+    MODIFY = 1;
+    REMOVE = 2;
+}
+
+enum MeterEventTypeProto {
+     /**
+     * A meter addition was requested.
+     */
+     METER_ADD_REQ = 0;
+
+     /**
+     * A meter removal was requested.
+     */
+     METER_REM_REQ = 1;
+
+     /**
+     * A meter was finally added to device.
+     */
+     METER_ADDED = 2;
+
+     /**
+     * A meter was finally removed from device.
+     */
+      METER_REMOVED = 3;
+}
\ No newline at end of file
diff --git a/incubator/protobuf/models/src/main/proto/net/meter/MeterEventProto.proto b/incubator/protobuf/models/src/main/proto/net/meter/MeterEventProto.proto
new file mode 100644
index 0000000..54ad1cc
--- /dev/null
+++ b/incubator/protobuf/models/src/main/proto/net/meter/MeterEventProto.proto
@@ -0,0 +1,13 @@
+syntax = "proto3";
+option java_package = "org.onosproject.grpc.net.meter.models";
+
+package net.meter;
+
+import "net/meter/MeterEnumsProto.proto";
+import "net/meter/MeterProto.proto";
+
+// Corresponds to org.onosproject.net.meter.MeterEvent.
+message MeterNotificationProto {
+    MeterEventTypeProto type = 1;
+    MeterProto meter = 2;
+}
\ No newline at end of file
diff --git a/incubator/protobuf/models/src/main/proto/net/meter/MeterProto.proto b/incubator/protobuf/models/src/main/proto/net/meter/MeterProto.proto
new file mode 100644
index 0000000..02be225
--- /dev/null
+++ b/incubator/protobuf/models/src/main/proto/net/meter/MeterProto.proto
@@ -0,0 +1,22 @@
+syntax = "proto3";
+option java_package = "org.onosproject.grpc.net.meter.models";
+
+package net.meter;
+
+import "net/meter/BandProto.proto";
+import "net/meter/MeterEnumsProto.proto";
+import "core/ApplicationIdProto.proto";
+
+message MeterProto {
+    string device_id = 1;
+    uint64 meter_id = 2;
+    core.ApplicationIdProto application_id = 3;
+    MeterUnitProto unit = 4;
+    bool is_burst = 5;
+    repeated BandProto bands = 6;
+    MeterStateProto state = 7;
+    uint64 life = 8;
+    uint64 reference_count = 9;
+    uint64 packets_seen = 10;
+    uint64 bytes_seen = 11;
+}
\ No newline at end of file
diff --git a/incubator/protobuf/models/src/main/proto/net/meter/MeterRequestProto.proto b/incubator/protobuf/models/src/main/proto/net/meter/MeterRequestProto.proto
new file mode 100644
index 0000000..5fdebb6
--- /dev/null
+++ b/incubator/protobuf/models/src/main/proto/net/meter/MeterRequestProto.proto
@@ -0,0 +1,17 @@
+syntax = "proto3";
+option java_package = "org.onosproject.grpc.net.meter.models";
+
+package net.meter;
+
+import "net/meter/BandProto.proto";
+import "net/meter/MeterEnumsProto.proto";
+import "core/ApplicationIdProto.proto";
+
+message MeterRequestProto {
+    string device_id = 1;
+    core.ApplicationIdProto application_id = 2;
+    MeterUnitProto unit = 3;
+    bool is_burst = 4;
+    repeated BandProto bands = 5;
+    MeterRequestTypeProto type = 6;
+}
\ No newline at end of file