kafka-integration app has been fixed and built using bazel

Change-Id: Ibbb57cac83983a030cf6e267906415fa1d002d23
diff --git a/incubator/protobuf/models/proto/BUILD b/incubator/protobuf/models/proto/BUILD
new file mode 100644
index 0000000..e0d5c37
--- /dev/null
+++ b/incubator/protobuf/models/proto/BUILD
@@ -0,0 +1,495 @@
+load("//tools/build/bazel:osgi_java_library.bzl", "osgi_proto_jar")
+
+PROTO_SOURCE_ROOT = "incubator/protobuf/models/proto"
+
+osgi_proto_jar(
+    proto_libs = [
+        ":ApplicationsEnums_proto",
+        ":ConfigPropertyEnums_proto",
+        ":ConfigProperty_proto",
+        ":NodeId_proto",
+        ":RoleInfo_proto",
+        ":ApplicationId_proto",
+        ":ApplicationProto_proto",
+        ":Version_proto",
+        ":DeviceDescription_proto",
+        ":DeviceEnums_proto",
+        ":DeviceEvent_proto",
+        ":PortDescription_proto",
+        ":PortEnums_proto",
+        ":PortStatistics_proto",
+        ":Criterion_proto",
+        ":Instruction_proto",
+        ":Instructions_proto",
+        ":FlowEntryEnums_proto",
+        ":FlowEntry_proto",
+        ":FlowRuleEnums_proto",
+        ":FlowRule_proto",
+        ":TraficSelector_proto",
+        ":TrafficTreatment_proto",
+        ":HostDescription_proto",
+        ":HostEnums_proto",
+        ":HostEvent_proto",
+        ":LinkDescription_proto",
+        ":LinkEnums_proto",
+        ":LinkEvent_proto",
+        ":BandEnums_proto",
+        ":Band_proto",
+        ":MeterEnums_proto",
+        ":MeterEvent_proto",
+        ":Meter_proto",
+        ":MeterRequest_proto",
+        ":OutboundPacket_proto",
+        ":PacketEnums_proto",
+        ":PacketEvent_proto",
+        ":PacketProcessorEntry_proto",
+        ":PacketProcessor_proto",
+        ":PacketRequest_proto",
+        ":RegionEnums_proto",
+        ":ConnectPoint_proto",
+        ":Device_proto",
+        ":DisjointPath_proto",
+        ":HostId_proto",
+        ":HostLocation_proto",
+        ":Host_proto",
+        ":Link_proto",
+        ":MastershipRole_proto",
+        ":Path_proto",
+        ":Port_proto",
+        ":ProviderId_proto",
+        ":Region_proto",
+        ":Permission_proto",
+    ],
+)
+
+### app ###
+proto_library(
+    name = "ApplicationsEnums_proto",
+    srcs = ["app/ApplicationEnumsProto.proto"],
+    proto_source_root = PROTO_SOURCE_ROOT,
+)
+
+### cfg ###
+proto_library(
+    name = "ConfigPropertyEnums_proto",
+    srcs = ["cfg/ConfigPropertyEnumsProto.proto"],
+    proto_source_root = PROTO_SOURCE_ROOT,
+)
+
+proto_library(
+    name = "ConfigProperty_proto",
+    srcs = ["cfg/ConfigPropertyProto.proto"],
+    proto_source_root = PROTO_SOURCE_ROOT,
+    deps = [":ConfigPropertyEnums_proto"],
+)
+
+### cluster ###
+proto_library(
+    name = "NodeId_proto",
+    srcs = ["cluster/NodeIdProto.proto"],
+    proto_source_root = PROTO_SOURCE_ROOT,
+)
+
+proto_library(
+    name = "RoleInfo_proto",
+    srcs = ["cluster/RoleInfoProto.proto"],
+    proto_source_root = PROTO_SOURCE_ROOT,
+    deps = [":NodeId_proto"],
+)
+
+### core ###
+
+proto_library(
+    name = "ApplicationId_proto",
+    srcs = ["core/ApplicationIdProto.proto"],
+    proto_source_root = PROTO_SOURCE_ROOT,
+)
+
+proto_library(
+    name = "ApplicationProto_proto",
+    srcs = ["core/ApplicationProto.proto"],
+    proto_source_root = PROTO_SOURCE_ROOT,
+    deps = [
+        ":ApplicationId_proto",
+        ":ApplicationsEnums_proto",
+        ":Permission_proto",
+        ":Version_proto",
+    ],
+)
+
+proto_library(
+    name = "Version_proto",
+    srcs = ["core/VersionProto.proto"],
+    proto_source_root = PROTO_SOURCE_ROOT,
+)
+
+### net ###
+
+### device ###
+proto_library(
+    name = "DeviceDescription_proto",
+    srcs = ["net/device/DeviceDescriptionProto.proto"],
+    proto_source_root = PROTO_SOURCE_ROOT,
+    deps = [":DeviceEnums_proto"],
+)
+
+proto_library(
+    name = "DeviceEnums_proto",
+    srcs = ["net/device/DeviceEnumsProto.proto"],
+    proto_source_root = PROTO_SOURCE_ROOT,
+)
+
+proto_library(
+    name = "DeviceEvent_proto",
+    srcs = ["net/device/DeviceEventProto.proto"],
+    proto_source_root = PROTO_SOURCE_ROOT,
+    deps = [
+        ":DeviceEnums_proto",
+        ":Device_proto",
+        ":Port_proto",
+    ],
+)
+
+proto_library(
+    name = "PortDescription_proto",
+    srcs = ["net/device/PortDescriptionProto.proto"],
+    proto_source_root = PROTO_SOURCE_ROOT,
+    deps = [":PortEnums_proto"],
+)
+
+proto_library(
+    name = "PortEnums_proto",
+    srcs = ["net/device/PortEnumsProto.proto"],
+    proto_source_root = PROTO_SOURCE_ROOT,
+)
+
+proto_library(
+    name = "PortStatistics_proto",
+    srcs = ["net/device/PortStatisticsProto.proto"],
+    proto_source_root = PROTO_SOURCE_ROOT,
+)
+
+### flow ###
+## criteria ##
+proto_library(
+    name = "Criterion_proto",
+    srcs = ["net/flow/criteria/CriterionProto.proto"],
+    proto_source_root = PROTO_SOURCE_ROOT,
+)
+
+## instrcutions ##
+proto_library(
+    name = "Instruction_proto",
+    srcs = ["net/flow/instructions/InstructionProto.proto"],
+    proto_source_root = PROTO_SOURCE_ROOT,
+)
+
+proto_library(
+    name = "Instructions_proto",
+    srcs = ["net/flow/instructions/InstructionsProto.proto"],
+    proto_source_root = PROTO_SOURCE_ROOT,
+)
+
+proto_library(
+    name = "FlowEntryEnums_proto",
+    srcs = ["net/flow/FlowEntryEnumsProto.proto"],
+    proto_source_root = PROTO_SOURCE_ROOT,
+)
+
+proto_library(
+    name = "FlowEntry_proto",
+    srcs = ["net/flow/FlowEntryProto.proto"],
+    proto_source_root = PROTO_SOURCE_ROOT,
+    deps = ["FlowEntryEnums_proto"],
+)
+
+proto_library(
+    name = "FlowRuleEnums_proto",
+    srcs = ["net/flow/FlowRuleEnumsProto.proto"],
+    proto_source_root = PROTO_SOURCE_ROOT,
+)
+
+proto_library(
+    name = "FlowRule_proto",
+    srcs = ["net/flow/FlowRuleProto.proto"],
+    proto_source_root = PROTO_SOURCE_ROOT,
+    deps = [
+        ":FlowRuleEnums_proto",
+        ":TrafficTreatment_proto",
+        ":TraficSelector_proto",
+    ],
+)
+
+proto_library(
+    name = "TraficSelector_proto",
+    srcs = ["net/flow/TrafficSelectorProto.proto"],
+    proto_source_root = PROTO_SOURCE_ROOT,
+    deps = [":Criterion_proto"],
+)
+
+proto_library(
+    name = "TrafficTreatment_proto",
+    srcs = ["net/flow/TrafficTreatmentProto.proto"],
+    proto_source_root = PROTO_SOURCE_ROOT,
+    deps = [
+        "Instruction_proto",
+        ":Instructions_proto",
+    ],
+)
+
+#### host ####
+
+proto_library(
+    name = "HostDescription_proto",
+    srcs = ["net/host/HostDescriptionProto.proto"],
+    proto_source_root = PROTO_SOURCE_ROOT,
+    deps = [":HostLocation_proto"],
+)
+
+proto_library(
+    name = "HostEnums_proto",
+    srcs = ["net/host/HostEnumsProto.proto"],
+    proto_source_root = PROTO_SOURCE_ROOT,
+)
+
+proto_library(
+    name = "HostEvent_proto",
+    srcs = ["net/host/HostEventProto.proto"],
+    proto_source_root = PROTO_SOURCE_ROOT,
+    deps = [
+        ":HostEnums_proto",
+        ":Host_proto",
+    ],
+)
+
+#### link ####
+
+proto_library(
+    name = "LinkDescription_proto",
+    srcs = ["net/link/LinkDescriptionProto.proto"],
+    proto_source_root = PROTO_SOURCE_ROOT,
+    deps = [
+        ":ConnectPoint_proto",
+        ":LinkEnums_proto",
+    ],
+)
+
+proto_library(
+    name = "LinkEnums_proto",
+    srcs = ["net/link/LinkEnumsProto.proto"],
+    proto_source_root = PROTO_SOURCE_ROOT,
+)
+
+proto_library(
+    name = "LinkEvent_proto",
+    srcs = ["net/link/LinkEventProto.proto"],
+    proto_source_root = PROTO_SOURCE_ROOT,
+    deps = [
+        ":LinkEnums_proto",
+        ":Link_proto",
+    ],
+)
+
+### meter ####
+
+proto_library(
+    name = "BandEnums_proto",
+    srcs = ["net/meter/BandEnumsProto.proto"],
+    proto_source_root = PROTO_SOURCE_ROOT,
+)
+
+proto_library(
+    name = "Band_proto",
+    srcs = ["net/meter/BandProto.proto"],
+    proto_source_root = PROTO_SOURCE_ROOT,
+    deps = [":BandEnums_proto"],
+)
+
+proto_library(
+    name = "MeterEnums_proto",
+    srcs = ["net/meter/MeterEnumsProto.proto"],
+    proto_source_root = PROTO_SOURCE_ROOT,
+)
+
+proto_library(
+    name = "MeterEvent_proto",
+    srcs = ["net/meter/MeterEventProto.proto"],
+    proto_source_root = PROTO_SOURCE_ROOT,
+    deps = [
+        ":MeterEnums_proto",
+        ":Meter_proto",
+    ],
+)
+
+proto_library(
+    name = "Meter_proto",
+    srcs = ["net/meter/MeterProto.proto"],
+    proto_source_root = PROTO_SOURCE_ROOT,
+    deps = [
+        "MeterEnums_proto",
+        ":ApplicationId_proto",
+        ":Band_proto",
+    ],
+)
+
+proto_library(
+    name = "MeterRequest_proto",
+    srcs = ["net/meter/MeterRequestProto.proto"],
+    proto_source_root = PROTO_SOURCE_ROOT,
+    deps = [
+        ":ApplicationId_proto",
+        ":Band_proto",
+        ":MeterEnums_proto",
+    ],
+)
+
+### packet ####
+
+proto_library(
+    name = "OutboundPacket_proto",
+    srcs = ["net/packet/OutboundPacketProto.proto"],
+    proto_source_root = PROTO_SOURCE_ROOT,
+    deps = [":TrafficTreatment_proto"],
+)
+
+proto_library(
+    name = "PacketEnums_proto",
+    srcs = ["net/packet/PacketEnumsProto.proto"],
+    proto_source_root = PROTO_SOURCE_ROOT,
+)
+
+proto_library(
+    name = "PacketEvent_proto",
+    srcs = ["net/packet/PacketEventProto.proto"],
+    proto_source_root = PROTO_SOURCE_ROOT,
+    deps = [
+        ":OutboundPacket_proto",
+        ":PacketEnums_proto",
+    ],
+)
+
+proto_library(
+    name = "PacketProcessorEntry_proto",
+    srcs = ["net/packet/PacketProcessorEntryProto.proto"],
+    proto_source_root = PROTO_SOURCE_ROOT,
+    deps = [":PacketProcessor_proto"],
+)
+
+proto_library(
+    name = "PacketProcessor_proto",
+    srcs = ["net/packet/PacketProcessorProto.proto"],
+    proto_source_root = PROTO_SOURCE_ROOT,
+)
+
+proto_library(
+    name = "PacketRequest_proto",
+    srcs = ["net/packet/PacketRequestProto.proto"],
+    proto_source_root = PROTO_SOURCE_ROOT,
+    deps = [
+        ":ApplicationId_proto",
+        ":NodeId_proto",
+        ":TraficSelector_proto",
+    ],
+)
+
+#### region ####
+
+proto_library(
+    name = "RegionEnums_proto",
+    srcs = ["net/region/RegionEnumsProto.proto"],
+    proto_source_root = PROTO_SOURCE_ROOT,
+)
+
+proto_library(
+    name = "ConnectPoint_proto",
+    srcs = ["net/ConnectPointProto.proto"],
+    proto_source_root = PROTO_SOURCE_ROOT,
+)
+
+proto_library(
+    name = "Device_proto",
+    srcs = ["net/DeviceProto.proto"],
+    proto_source_root = PROTO_SOURCE_ROOT,
+    deps = [":DeviceEnums_proto"],
+)
+
+proto_library(
+    name = "DisjointPath_proto",
+    srcs = ["net/DisjointPathProto.proto"],
+    proto_source_root = PROTO_SOURCE_ROOT,
+    deps = [":Path_proto"],
+)
+
+proto_library(
+    name = "HostId_proto",
+    srcs = ["net/HostIdProto.proto"],
+    proto_source_root = PROTO_SOURCE_ROOT,
+)
+
+proto_library(
+    name = "HostLocation_proto",
+    srcs = ["net/HostLocationProto.proto"],
+    proto_source_root = PROTO_SOURCE_ROOT,
+    deps = [":ConnectPoint_proto"],
+)
+
+proto_library(
+    name = "Host_proto",
+    srcs = ["net/HostProto.proto"],
+    proto_source_root = PROTO_SOURCE_ROOT,
+    deps = [
+        ":HostId_proto",
+        ":HostLocation_proto",
+        ":ProviderId_proto",
+    ],
+)
+
+proto_library(
+    name = "Link_proto",
+    srcs = ["net/LinkProto.proto"],
+    proto_source_root = PROTO_SOURCE_ROOT,
+    deps = [
+        ":ConnectPoint_proto",
+        ":LinkEnums_proto",
+        ":ProviderId_proto",
+    ],
+)
+
+proto_library(
+    name = "MastershipRole_proto",
+    srcs = ["net/MastershipRoleProto.proto"],
+    proto_source_root = PROTO_SOURCE_ROOT,
+)
+
+proto_library(
+    name = "Path_proto",
+    srcs = ["net/PathProto.proto"],
+    proto_source_root = PROTO_SOURCE_ROOT,
+    deps = [":Link_proto"],
+)
+
+proto_library(
+    name = "Port_proto",
+    srcs = ["net/PortProto.proto"],
+    proto_source_root = PROTO_SOURCE_ROOT,
+    deps = [":PortEnums_proto"],
+)
+
+proto_library(
+    name = "ProviderId_proto",
+    srcs = ["net/ProviderIdProto.proto"],
+    proto_source_root = PROTO_SOURCE_ROOT,
+)
+
+proto_library(
+    name = "Region_proto",
+    srcs = ["net/RegionProto.proto"],
+    proto_source_root = PROTO_SOURCE_ROOT,
+    deps = [":RegionEnums_proto"],
+)
+
+proto_library(
+    name = "Permission_proto",
+    srcs = ["security/PermissionProto.proto"],
+    proto_source_root = PROTO_SOURCE_ROOT,
+)
diff --git a/incubator/protobuf/models/proto/app/ApplicationEnumsProto.proto b/incubator/protobuf/models/proto/app/ApplicationEnumsProto.proto
new file mode 100644
index 0000000..2a1a912
--- /dev/null
+++ b/incubator/protobuf/models/proto/app/ApplicationEnumsProto.proto
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto3";
+option java_package = "org.onosproject.grpc.app.models";
+
+package app;
+
+enum ApplicationStateProto {
+    // Indicates that application has been installed, but is not running.
+    INSTALLED = 0;
+    // Indicates that application is active.
+    ACTIVE = 1;
+}
+
+enum ApplicationRoleProto {
+    // Indicates that an application has an ADMIN role.
+    ADMIN = 0;
+    // Indicates that an application has a USER role.
+    USER = 1;
+    // Indicates that an application role has not been specified.
+    UNSPECIFIED = 2;
+
+    // More useful roles may be defined...
+}
diff --git a/incubator/protobuf/models/proto/cfg/ConfigPropertyEnumsProto.proto b/incubator/protobuf/models/proto/cfg/ConfigPropertyEnumsProto.proto
new file mode 100644
index 0000000..00204e7
--- /dev/null
+++ b/incubator/protobuf/models/proto/cfg/ConfigPropertyEnumsProto.proto
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto3";
+option java_package = "org.onosproject.grpc.cfg.models";
+
+package cfg;
+
+enum ConfigPropertyTypeProto {
+    STRING = 0;
+    BYTE = 1;
+    INTEGER = 2;
+    LONG = 3;
+    FLOAT = 4;
+    DOUBLE = 5;
+    BOOLEAN = 6;
+}
\ No newline at end of file
diff --git a/incubator/protobuf/models/proto/cfg/ConfigPropertyProto.proto b/incubator/protobuf/models/proto/cfg/ConfigPropertyProto.proto
new file mode 100644
index 0000000..d3ae6ac
--- /dev/null
+++ b/incubator/protobuf/models/proto/cfg/ConfigPropertyProto.proto
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto3";
+option java_package = "org.onosproject.grpc.cfg.models";
+
+package cfg;
+
+import "cfg/ConfigPropertyEnumsProto.proto";
+
+// Corresponds to org.onosproject.cfg.ConfigProperty.
+message ConfigPropertyProto {
+    string name = 1;
+    cfg.ConfigPropertyTypeProto type = 2;
+    string value = 3;
+    string default_value = 4;
+    string description = 5;
+    bool is_set = 6;
+}
\ No newline at end of file
diff --git a/incubator/protobuf/models/proto/cluster/NodeIdProto.proto b/incubator/protobuf/models/proto/cluster/NodeIdProto.proto
new file mode 100644
index 0000000..48d4494
--- /dev/null
+++ b/incubator/protobuf/models/proto/cluster/NodeIdProto.proto
@@ -0,0 +1,23 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+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/proto/cluster/RoleInfoProto.proto b/incubator/protobuf/models/proto/cluster/RoleInfoProto.proto
new file mode 100644
index 0000000..1ede9ae
--- /dev/null
+++ b/incubator/protobuf/models/proto/cluster/RoleInfoProto.proto
@@ -0,0 +1,26 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto3";
+option java_package = "org.onosproject.grpc.cluster.models";
+
+import "cluster/NodeIdProto.proto";
+
+package cluster;
+
+message RoleInfoProto {
+    cluster.NodeIdProto master = 1;
+    repeated cluster.NodeIdProto backups = 2;
+}
\ No newline at end of file
diff --git a/incubator/protobuf/models/proto/core/ApplicationIdProto.proto b/incubator/protobuf/models/proto/core/ApplicationIdProto.proto
new file mode 100644
index 0000000..59dacc8
--- /dev/null
+++ b/incubator/protobuf/models/proto/core/ApplicationIdProto.proto
@@ -0,0 +1,25 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto3";
+option java_package = "org.onosproject.grpc.core.models";
+
+package core;
+
+// Corresponds to org.onosproject.core.ApplicationId.
+message ApplicationIdProto {
+    uint32 id = 1;
+    string name = 2;
+}
diff --git a/incubator/protobuf/models/proto/core/ApplicationProto.proto b/incubator/protobuf/models/proto/core/ApplicationProto.proto
new file mode 100644
index 0000000..4601e3b
--- /dev/null
+++ b/incubator/protobuf/models/proto/core/ApplicationProto.proto
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto3";
+option java_package = "org.onosproject.grpc.core.models";
+
+package core;
+
+import "core/ApplicationIdProto.proto";
+import "app/ApplicationEnumsProto.proto";
+import "security/PermissionProto.proto";
+import "core/VersionProto.proto";
+
+// Corresponds to org.onosproject.core.Application.
+message ApplicationProto {
+    core.ApplicationIdProto app_id = 1;
+    core.VersionProto version = 2;
+    string title = 3;
+    string description = 4;
+    string category = 5;
+    string url = 6;
+    string readme = 7;
+
+    // tag id 8 is reserved for app icon
+    reserved 8;
+
+    string origin = 9;
+    app.ApplicationRoleProto role = 10;
+    repeated security.PermissionProto permissions = 11;
+
+    // tag id 12 is reserved for features repo
+    // optional type will be added later
+    reserved 12;
+    repeated string features = 13;
+    repeated string required_apps = 14;
+}
\ No newline at end of file
diff --git a/incubator/protobuf/models/proto/core/VersionProto.proto b/incubator/protobuf/models/proto/core/VersionProto.proto
new file mode 100644
index 0000000..e1458a9
--- /dev/null
+++ b/incubator/protobuf/models/proto/core/VersionProto.proto
@@ -0,0 +1,27 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto3";
+option java_package = "org.onosproject.grpc.core.models";
+
+package core;
+
+// Corresponds to org.onosproject.core.
+message VersionProto {
+    int32 major = 1;
+    int32 minor = 2;
+    string patch = 3;
+    string build = 4;
+}
diff --git a/incubator/protobuf/models/proto/net/ConnectPointProto.proto b/incubator/protobuf/models/proto/net/ConnectPointProto.proto
new file mode 100644
index 0000000..9607b7e
--- /dev/null
+++ b/incubator/protobuf/models/proto/net/ConnectPointProto.proto
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto3";
+option java_package = "org.onosproject.grpc.net.models";
+
+package net;
+
+message ConnectPointProto {
+    oneof element_id {
+        // DeviceID as String DeviceId#toString
+        string device_id = 1;
+        string host_id = 3;
+        string ip_element_id = 4;
+    }
+    // PortNumber as String PortNumber#toString
+    string port_number = 2;
+}
\ No newline at end of file
diff --git a/incubator/protobuf/models/proto/net/DeviceProto.proto b/incubator/protobuf/models/proto/net/DeviceProto.proto
new file mode 100644
index 0000000..9726d84
--- /dev/null
+++ b/incubator/protobuf/models/proto/net/DeviceProto.proto
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto3";
+option java_package = "org.onosproject.grpc.net.models";
+
+package net;
+
+import "net/device/DeviceEnumsProto.proto";
+
+// Corresponds to org.onosproject.net.Device.
+message DeviceProto {
+    string device_id = 1;
+    net.device.DeviceTypeProto type = 2;
+    string manufacturer = 3;
+    string hw_version = 4;
+    string sw_version = 5;
+    string serial_number = 6;
+    string chassis_id = 7;
+    map<string, string> annotations = 8;
+}
diff --git a/incubator/protobuf/models/proto/net/DisjointPathProto.proto b/incubator/protobuf/models/proto/net/DisjointPathProto.proto
new file mode 100644
index 0000000..e80d4ec
--- /dev/null
+++ b/incubator/protobuf/models/proto/net/DisjointPathProto.proto
@@ -0,0 +1,28 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto3";
+option java_package = "org.onosproject.grpc.net.models";
+
+package net;
+
+import "net/PathProto.proto";
+
+// Corresponds to org.onosproject.net.DisjointPath.
+message DisjointPathProto {
+    net.PathProto primary = 1;
+    net.PathProto backup  = 2;
+    map<string, string> annotations = 3;
+}
\ No newline at end of file
diff --git a/incubator/protobuf/models/proto/net/HostIdProto.proto b/incubator/protobuf/models/proto/net/HostIdProto.proto
new file mode 100644
index 0000000..a0aae4c
--- /dev/null
+++ b/incubator/protobuf/models/proto/net/HostIdProto.proto
@@ -0,0 +1,25 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto3";
+option java_package = "org.onosproject.grpc.net.models";
+
+package net;
+
+// Corresponds to org.onosproject.net.HostId.
+message HostIdProto {
+    string mac = 1;
+    uint32 vlan_id = 2;
+}
\ No newline at end of file
diff --git a/incubator/protobuf/models/proto/net/HostLocationProto.proto b/incubator/protobuf/models/proto/net/HostLocationProto.proto
new file mode 100644
index 0000000..9e44eba
--- /dev/null
+++ b/incubator/protobuf/models/proto/net/HostLocationProto.proto
@@ -0,0 +1,27 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto3";
+option java_package = "org.onosproject.grpc.net.models";
+
+import "net/ConnectPointProto.proto";
+
+package net;
+
+// Corresponds to org.onosproject.net.HostLocation.
+message HostLocationProto {
+    net.ConnectPointProto connect_point = 1;
+    uint64 time = 2;
+}
\ No newline at end of file
diff --git a/incubator/protobuf/models/proto/net/HostProto.proto b/incubator/protobuf/models/proto/net/HostProto.proto
new file mode 100644
index 0000000..ba38fab
--- /dev/null
+++ b/incubator/protobuf/models/proto/net/HostProto.proto
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto3";
+option java_package = "org.onosproject.grpc.net.models";
+
+import "net/HostIdProto.proto";
+import "net/HostLocationProto.proto";
+import "net/ProviderIdProto.proto";
+
+package net;
+
+// Corresponds to org.onosproject.net.Host.
+message HostProto {
+    net.HostIdProto host_id = 1;
+    uint32 vlan = 2;
+    net.HostLocationProto location = 3;
+    repeated string ip_addresses = 4;
+    bool configured = 5;
+    net.ProviderIdProto provider_id = 6;
+    map<string, string> annotations = 7;
+}
\ No newline at end of file
diff --git a/incubator/protobuf/models/proto/net/LinkProto.proto b/incubator/protobuf/models/proto/net/LinkProto.proto
new file mode 100644
index 0000000..e5ce70a
--- /dev/null
+++ b/incubator/protobuf/models/proto/net/LinkProto.proto
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto3";
+option java_package = "org.onosproject.grpc.net.models";
+
+package net;
+
+import "net/link/LinkEnumsProto.proto";
+import "net/ConnectPointProto.proto";
+import "net/ProviderIdProto.proto";
+
+// Corresponds to org.onosproject.net.Link.
+message LinkProto {
+    net.link.LinkStateProto state = 1;
+    net.ConnectPointProto src = 2;
+    net.ConnectPointProto dst = 3;
+    net.link.LinkTypeProto type = 4;
+    map<string, string> annotations = 5;
+    net.ProviderIdProto provider_id = 6;
+    bool isExpected = 7;
+}
\ No newline at end of file
diff --git a/incubator/protobuf/models/proto/net/MastershipRoleProto.proto b/incubator/protobuf/models/proto/net/MastershipRoleProto.proto
new file mode 100644
index 0000000..24508d5
--- /dev/null
+++ b/incubator/protobuf/models/proto/net/MastershipRoleProto.proto
@@ -0,0 +1,25 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto3";
+option java_package = "org.onosproject.grpc.net.models";
+
+package net;
+
+enum MastershipRoleProto {
+    NONE = 0;
+    MASTER = 1;
+    STANDBY = 2;
+}
\ No newline at end of file
diff --git a/incubator/protobuf/models/proto/net/PathProto.proto b/incubator/protobuf/models/proto/net/PathProto.proto
new file mode 100644
index 0000000..02343ae
--- /dev/null
+++ b/incubator/protobuf/models/proto/net/PathProto.proto
@@ -0,0 +1,28 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto3";
+option java_package = "org.onosproject.grpc.net.models";
+
+package net;
+
+import "net/LinkProto.proto";
+
+// Corresponds to org.onosproject.net.Path.
+message PathProto {
+    repeated net.LinkProto links = 1;
+    double weight = 2;
+    map<string, string> annotations = 3;
+}
diff --git a/incubator/protobuf/models/proto/net/PortProto.proto b/incubator/protobuf/models/proto/net/PortProto.proto
new file mode 100644
index 0000000..09282e3
--- /dev/null
+++ b/incubator/protobuf/models/proto/net/PortProto.proto
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto3";
+option java_package = "org.onosproject.grpc.net.models";
+
+package net;
+
+import "net/device/PortEnumsProto.proto";
+
+// Corresponds to org.onosproject.net.Port.
+message PortProto {
+    string port_number = 1;
+    bool is_enabled = 2;
+    net.device.PortTypeProto type = 3;
+    int64 port_speed = 4;
+    map<string, string> annotations = 5;
+}
+
diff --git a/incubator/protobuf/models/proto/net/ProviderIdProto.proto b/incubator/protobuf/models/proto/net/ProviderIdProto.proto
new file mode 100644
index 0000000..9f4e4cf
--- /dev/null
+++ b/incubator/protobuf/models/proto/net/ProviderIdProto.proto
@@ -0,0 +1,26 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto3";
+option java_package = "org.onosproject.grpc.net.models";
+
+package net;
+
+// Corresponds to org.onosproject.net.provider.ProviderId
+message ProviderIdProto {
+    string scheme = 1;
+    string id = 2;
+    bool ancillary = 3;
+}
\ No newline at end of file
diff --git a/incubator/protobuf/models/proto/net/RegionProto.proto b/incubator/protobuf/models/proto/net/RegionProto.proto
new file mode 100644
index 0000000..b760b6e
--- /dev/null
+++ b/incubator/protobuf/models/proto/net/RegionProto.proto
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto3";
+option java_package = "org.onosproject.grpc.net.models";
+
+package net;
+
+import "net/region/RegionEnumsProto.proto";
+
+// Corresponds to org.onosproject.net.Region.
+
+message RegionProto {
+    string region_id = 1;
+    net.region.RegionTypeProto type = 2;
+    string name = 3;
+
+    // List<Set<NodeId>> masters();
+    // Since masters is a list of set of NodeIds,
+    // the following message is required.
+    message NodeIdSet {
+        repeated string node_id = 1;
+    }
+
+    repeated NodeIdSet masters = 4;
+    map<string, string> annotations = 5;
+}
\ No newline at end of file
diff --git a/incubator/protobuf/models/proto/net/device/DeviceDescriptionProto.proto b/incubator/protobuf/models/proto/net/device/DeviceDescriptionProto.proto
new file mode 100644
index 0000000..d2eb2c7
--- /dev/null
+++ b/incubator/protobuf/models/proto/net/device/DeviceDescriptionProto.proto
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto3";
+option java_package = "org.onosproject.grpc.net.device.models";
+
+package net.device;
+
+import "net/device/DeviceEnumsProto.proto";
+
+message DeviceDescriptionProto {
+    string device_uri = 1;
+    net.device.DeviceTypeProto type = 2;
+    string manufacturer = 3;
+    string hw_version = 4;
+    string sw_version = 5;
+    string serial_number = 6;
+    string chassis_id = 7;
+    map<string, string> annotations = 8;
+    bool is_default_available = 9;
+}
\ No newline at end of file
diff --git a/incubator/protobuf/models/proto/net/device/DeviceEnumsProto.proto b/incubator/protobuf/models/proto/net/device/DeviceEnumsProto.proto
new file mode 100644
index 0000000..e8713d3
--- /dev/null
+++ b/incubator/protobuf/models/proto/net/device/DeviceEnumsProto.proto
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto3";
+option java_package = "org.onosproject.grpc.net.device.models";
+
+package net.device;
+
+enum DeviceTypeProto {
+    OTHER = 0;
+    SWITCH = 1;
+    ROUTER = 2;
+    ROADM = 3;
+    OTN = 4;
+    ROADM_OTN = 5;
+    FIREWALL = 6;
+    BALANCER = 7;
+    IPS = 8;
+    IDS = 9;
+    CONTROLLER = 10;
+    VIRTUAL_DEVICE = 11;
+    FIBER_SWITCH = 12;
+    MICROWAVE = 13;
+}
+
+enum DeviceEventTypeProto {
+    DEVICE_ADDED = 0;
+    DEVICE_UPDATED = 1;
+    DEVICE_REMOVED = 2;
+    DEVICE_SUSPENDED = 3;
+    DEVICE_AVAILABILITY_CHANGED = 4;
+    PORT_ADDED = 5;
+    PORT_UPDATED = 6;
+    PORT_REMOVED = 7;
+    PORT_STATS_UPDATED = 8;
+}
\ No newline at end of file
diff --git a/incubator/protobuf/models/proto/net/device/DeviceEventProto.proto b/incubator/protobuf/models/proto/net/device/DeviceEventProto.proto
new file mode 100644
index 0000000..f973bcc
--- /dev/null
+++ b/incubator/protobuf/models/proto/net/device/DeviceEventProto.proto
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto3";
+option java_package = "org.onosproject.grpc.net.device.models";
+
+
+import "net/DeviceProto.proto";
+import "net/device/DeviceEnumsProto.proto";
+import "net/PortProto.proto";
+
+package net.device;
+
+// Corresponds to org.onosproject.net.device.DeviceEvent.
+message DeviceNotificationProto {
+    net.DeviceProto device = 1;
+    net.device.DeviceEventTypeProto device_event_type = 2;
+    net.PortProto port = 3;
+}
\ No newline at end of file
diff --git a/incubator/protobuf/models/proto/net/device/PortDescriptionProto.proto b/incubator/protobuf/models/proto/net/device/PortDescriptionProto.proto
new file mode 100644
index 0000000..52a6e23
--- /dev/null
+++ b/incubator/protobuf/models/proto/net/device/PortDescriptionProto.proto
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto3";
+option java_package = "org.onosproject.grpc.net.device.models";
+
+package net.device;
+
+import "net/device/PortEnumsProto.proto";
+
+message PortDescriptionProto {
+    // PortNumber as String PortNumber#toString
+    string port_number = 1;
+    bool is_enabled = 2;
+    net.device.PortTypeProto type = 3;
+    int64 port_speed = 4;
+    map<string, string> annotations = 8;
+}
\ No newline at end of file
diff --git a/incubator/protobuf/models/proto/net/device/PortEnumsProto.proto b/incubator/protobuf/models/proto/net/device/PortEnumsProto.proto
new file mode 100644
index 0000000..28757fc
--- /dev/null
+++ b/incubator/protobuf/models/proto/net/device/PortEnumsProto.proto
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto3";
+option java_package = "org.onosproject.grpc.net.device.models";
+
+package net.device;
+
+enum PortTypeProto {
+    // Signifies copper-based connectivity.
+    COPPER = 0;
+    // Signifies optical fiber-based connectivity.
+    FIBER = 1;
+    // Signifies optical fiber-based packet port.
+    PACKET = 2;
+    // Signifies optical fiber-based optical tributary port (called T-port).
+    //The signal from the client side will be formed into a ITU G.709 (OTN) frame.
+    ODUCLT = 3;
+    // Signifies optical fiber-based Line-side port (called L-port).
+    OCH = 4;
+    // Signifies optical fiber-based WDM port (called W-port).
+    //Optical Multiplexing Section (See ITU G.709).
+    OMS = 5;
+    // Signifies virtual port.
+    VIRTUAL_PORT = 6;
+}
\ No newline at end of file
diff --git a/incubator/protobuf/models/proto/net/device/PortStatisticsProto.proto b/incubator/protobuf/models/proto/net/device/PortStatisticsProto.proto
new file mode 100644
index 0000000..af0b039
--- /dev/null
+++ b/incubator/protobuf/models/proto/net/device/PortStatisticsProto.proto
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto3";
+option java_package = "org.onosproject.grpc.net.device.models";
+
+package net.device;
+
+message PortStatisticsProto {
+    int32 port = 1;
+    int64 packets_received = 2;
+    int64 packets_sent = 3;
+    int64 bytes_received = 4;
+    int64 bytes_sent = 5;
+    int64 packets_rx_dropped = 6;
+    int64 packets_tx_dropped = 7;
+    int64 packets_rx_errors = 8;
+    int64 packets_tx_errors = 9;
+    int64 duration_sec = 10;
+    int64 duration_nano = 11;
+    bool is_zero = 12;
+    // TODO add all other fields
+}
diff --git a/incubator/protobuf/models/proto/net/flow/FlowEntryEnumsProto.proto b/incubator/protobuf/models/proto/net/flow/FlowEntryEnumsProto.proto
new file mode 100644
index 0000000..2bb6768
--- /dev/null
+++ b/incubator/protobuf/models/proto/net/flow/FlowEntryEnumsProto.proto
@@ -0,0 +1,62 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto3";
+option java_package = "org.onosproject.grpc.net.flow.models";
+
+package net.flow;
+
+// Corresponds to org.onosproject.net.flow.FlowEntry.
+enum FlowEntryStateProto {
+
+    // Indicates that this rule has been submitted for addition.
+    // Not necessarily in the flow table.
+    PENDING_ADD = 0;
+
+    // Rule has been added which means it is in the flow table.
+    ADDED = 1;
+
+    // Flow has been marked for removal, might still be in flow table.
+    PENDING_REMOVE = 2;
+
+    // Flow has been removed from flow table and can be purged.
+    REMOVED = 3;
+
+    // Indicates that the installation of this flow has failed.
+    FAILED = 4;
+}
+
+enum FlowLiveTypeProto {
+
+    // Indicates that this rule has been submitted for addition immediately.
+    // Not necessarily collecting flow stats.
+    IMMEDIATE = 0;
+
+    // Indicates that this rule has been submitted for a short time.
+    // Collecting flow stats every SHORT interval, defined by the implementation.
+    SHORT = 1;
+
+    // Indicates that this rule has been submitted for a mid time.
+    // Collecting flow stats every MID interval, defined by the implementation.
+    MID = 2;
+
+    // Indicates that this rule has been submitted for a long time.
+    // Collecting flow stats every LONG interval, defined by the implementation.
+    LONG = 3;
+
+    // Indicates that this rule has been submitted for UNKNOWN or ERROR.
+    // Not necessarily collecting flow stats.
+    UNKNOWN = 4;
+}
\ No newline at end of file
diff --git a/incubator/protobuf/models/proto/net/flow/FlowEntryProto.proto b/incubator/protobuf/models/proto/net/flow/FlowEntryProto.proto
new file mode 100644
index 0000000..c28a624
--- /dev/null
+++ b/incubator/protobuf/models/proto/net/flow/FlowEntryProto.proto
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto3";
+option java_package = "org.onosproject.grpc.net.flow.models";
+
+package net.flow;
+
+import "net/flow/FlowEntryEnumsProto.proto";
+
+// Corresponds to org.onosproject.net.flow.DefaultFlowEntry.
+message FlowEntryProto {
+    int64 life = 1;
+    int64 packets = 2;
+    int64 bytes = 3;
+    int64 last_seen = 4;
+    int32 err_type = 5;
+    int32 err_code = 6;
+
+    net.flow.FlowEntryStateProto state = 7;
+    net.flow.FlowLiveTypeProto live_type = 8;
+}
\ No newline at end of file
diff --git a/incubator/protobuf/models/proto/net/flow/FlowRuleEnumsProto.proto b/incubator/protobuf/models/proto/net/flow/FlowRuleEnumsProto.proto
new file mode 100644
index 0000000..269f429
--- /dev/null
+++ b/incubator/protobuf/models/proto/net/flow/FlowRuleEnumsProto.proto
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto3";
+option java_package = "org.onosproject.grpc.net.flow.models";
+
+package net.flow;
+
+// Corresponds to org.onosproject.net.flow.FlowRule enums.
+enum FlowRemoveReasonProto {
+    IDLE_TIMEOUT = 0;
+    HARD_TIMEOUT = 1;
+    DELETE = 2;
+    GROUP_DELETE = 3;
+    METER_DELETE = 4;
+    EVICTION = 5;
+    NO_REASON = 6;
+}
\ No newline at end of file
diff --git a/incubator/protobuf/models/proto/net/flow/FlowRuleProto.proto b/incubator/protobuf/models/proto/net/flow/FlowRuleProto.proto
new file mode 100644
index 0000000..9bf615d
--- /dev/null
+++ b/incubator/protobuf/models/proto/net/flow/FlowRuleProto.proto
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto3";
+option java_package = "org.onosproject.grpc.net.flow.models";
+
+package net.flow;
+
+import "net/flow/TrafficSelectorProto.proto";
+import "net/flow/TrafficTreatmentProto.proto";
+import "net/flow/FlowRuleEnumsProto.proto";
+
+// Corresponds to org.onosproject.net.flow.DefaultFlowRule.
+message FlowRuleProto {
+    int32 priority = 1;
+    int32 app_id = 2;
+    string device_id = 3;
+    int64 flow_id = 4;
+    int32 timeout = 5;
+    bool permanent = 6;
+    int32 table_id = 7;
+    string table_name = 8;
+
+    net.flow.TrafficSelectorProto selector = 9;
+    net.flow.TrafficTreatmentProto treatment = 10;
+    net.flow.FlowRemoveReasonProto reason = 11;
+}
\ No newline at end of file
diff --git a/incubator/protobuf/models/proto/net/flow/TrafficSelectorProto.proto b/incubator/protobuf/models/proto/net/flow/TrafficSelectorProto.proto
new file mode 100644
index 0000000..74a5bce
--- /dev/null
+++ b/incubator/protobuf/models/proto/net/flow/TrafficSelectorProto.proto
@@ -0,0 +1,26 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto3";
+option java_package = "org.onosproject.grpc.net.flow.models";
+
+package net.flow;
+
+import "net/flow/criteria/CriterionProto.proto";
+
+// Corresponds to org.onosproject.net.flow.TrafficSelector.
+message TrafficSelectorProto {
+    repeated net.flow.criteria.CriterionProto criterion = 1;
+}
\ No newline at end of file
diff --git a/incubator/protobuf/models/proto/net/flow/TrafficTreatmentProto.proto b/incubator/protobuf/models/proto/net/flow/TrafficTreatmentProto.proto
new file mode 100644
index 0000000..428e218
--- /dev/null
+++ b/incubator/protobuf/models/proto/net/flow/TrafficTreatmentProto.proto
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto3";
+option java_package = "org.onosproject.grpc.net.flow.models";
+
+package net.flow;
+
+import "net/flow/instructions/InstructionsProto.proto";
+import "net/flow/instructions/InstructionProto.proto";
+
+// Corresponds to org.onosproject.net.flow.TrafficTreatment.
+message TrafficTreatmentProto {
+    repeated net.flow.instructions.InstructionProto deferred = 1;
+    repeated net.flow.instructions.InstructionProto immediate = 2;
+    repeated net.flow.instructions.InstructionProto all_instructions = 3;
+    net.flow.instructions.TableTypeTransitionProto table_transition = 4;
+    bool cleared_deferred = 5;
+    net.flow.instructions.MetadataInstructionProto write_metadata = 6;
+    net.flow.instructions.MetadataInstructionProto metered = 7;
+}
\ No newline at end of file
diff --git a/incubator/protobuf/models/proto/net/flow/criteria/CriterionProto.proto b/incubator/protobuf/models/proto/net/flow/criteria/CriterionProto.proto
new file mode 100644
index 0000000..cc26526
--- /dev/null
+++ b/incubator/protobuf/models/proto/net/flow/criteria/CriterionProto.proto
@@ -0,0 +1,88 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto3";
+option java_package = "org.onosproject.grpc.net.flow.criteria.models";
+
+package net.flow.criteria;
+
+enum TypeProto {
+    IN_PORT = 0;
+    ETH_DST = 1;
+    ETH_SRC = 2;
+    ETH_TYPE = 3;
+    IPV4_SRC = 4;
+    IPV4_DST = 5;
+    UDP_SRC = 6;
+    UDP_DST = 7;
+    TCP_SRC = 8;
+    TCP_DST = 9;
+    VLAN_VID = 10;
+    ARP_OP = 11;
+    ARP_SPA = 12;
+    ARP_TPA = 13;
+    ARP_SHA = 14;
+    ARP_THA = 15;
+    IP_PROTO = 16;
+    ETH_DST_MASKED = 17;
+    ETH_SRC_MASKED = 18;
+    VLAN_PCP = 19;
+    INNER_VLAN_VID = 20;
+    INNER_VLAN_PCP = 21;
+    IP_DSCP = 22;
+    IP_ECN = 23;
+    IN_PHY_PORT = 24;
+    METADATA = 25;
+    TCP_SRC_MASKED = 26;
+    TCP_DST_MASKED = 27;
+    UDP_SRC_MASKED = 28;
+    UDP_DST_MASKED = 29;
+    SCTP_SRC = 30;
+    SCTP_SRC_MASKED = 31;
+    SCTP_DST = 32;
+    SCTP_DST_MASKED = 33;
+    ICMPV4_TYPE = 34;
+    ICMPV4_CODE = 35;
+    IPV6_SRC = 36;
+    IPV6_DST = 37;
+    IPV6_FLABEL = 38;
+    ICMPV6_TYPE = 39;
+    ICMPV6_CODE = 40;
+    IPV6_ND_TARGET = 41;
+    IPV6_ND_SLL = 42;
+    IPV6_ND_TLL = 43;
+    MPLS_LABEL = 44;
+    MPLS_TC = 45;
+    MPLS_BOS = 46;
+    PBB_ISID = 47;
+    TUNNEL_ID = 48;
+    IPV6_EXTHDR =49;
+    UNASSIGNED_40 = 50;
+    PBB_UCA = 51;
+    TCP_FLAGS = 52;
+    ACTSET_OUTPUT = 53;
+    PACKET_TYPE = 54;
+    OCH_SIGID = 55;
+    OCH_SIGTYPE = 56;
+    ODU_SIGID = 57;
+    ODU_SIGTYPE = 58;
+    PROTOCOL_INDEPENDENT = 59;
+    EXTENSION = 60;
+    DUMMY = 61;
+}
+
+message CriterionProto {
+    TypeProto type = 1;
+}
\ No newline at end of file
diff --git a/incubator/protobuf/models/proto/net/flow/instructions/InstructionProto.proto b/incubator/protobuf/models/proto/net/flow/instructions/InstructionProto.proto
new file mode 100644
index 0000000..472899f
--- /dev/null
+++ b/incubator/protobuf/models/proto/net/flow/instructions/InstructionProto.proto
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto3";
+option java_package = "org.onosproject.grpc.net.flow.instructions.models";
+
+package net.flow.instructions;
+
+enum TypeProto {
+    NOACTION = 0;
+    OUTPUT = 1;
+    GROUP = 2;
+    QUEUE = 3;
+    METER = 4;
+    L0MODIFICATION = 5;
+    L1MODIFICATION = 6;
+    L2MODIFICATION = 7;
+    L3MODIFICATION = 8;
+    L4MODIFICATION = 9;
+    TABLE = 10;
+    METADATA = 11;
+    PROTOCOL_INDEPENDENT = 12;
+    EXTENSION = 13;
+}
+
+message InstructionProto {
+    TypeProto type = 1;
+}
\ No newline at end of file
diff --git a/incubator/protobuf/models/proto/net/flow/instructions/InstructionsProto.proto b/incubator/protobuf/models/proto/net/flow/instructions/InstructionsProto.proto
new file mode 100644
index 0000000..7491623
--- /dev/null
+++ b/incubator/protobuf/models/proto/net/flow/instructions/InstructionsProto.proto
@@ -0,0 +1,28 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto3";
+option java_package = "org.onosproject.grpc.net.flow.instructions.models";
+
+package net.flow.instructions;
+
+message TableTypeTransitionProto {
+    int32 table_id = 1;
+}
+
+message MetadataInstructionProto {
+    int64 meta_data = 1;
+    int64 meta_data_mask = 2;
+}
\ No newline at end of file
diff --git a/incubator/protobuf/models/proto/net/host/HostDescriptionProto.proto b/incubator/protobuf/models/proto/net/host/HostDescriptionProto.proto
new file mode 100644
index 0000000..733fd8c
--- /dev/null
+++ b/incubator/protobuf/models/proto/net/host/HostDescriptionProto.proto
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto3";
+option java_package = "org.onosproject.grpc.net.host.models";
+
+package net.host;
+
+import "net/HostLocationProto.proto";
+
+// Corresponds to org.onosproject.net.host.HostDescription.
+message HostDescription {
+    string hw_address = 1;
+    uint32 vlan = 2;
+    net.HostLocationProto location = 3;
+    repeated string ip_addresses = 4;
+    bool configured = 5;
+    map<string, string> annotations = 6;
+}
\ No newline at end of file
diff --git a/incubator/protobuf/models/proto/net/host/HostEnumsProto.proto b/incubator/protobuf/models/proto/net/host/HostEnumsProto.proto
new file mode 100644
index 0000000..7d45f29
--- /dev/null
+++ b/incubator/protobuf/models/proto/net/host/HostEnumsProto.proto
@@ -0,0 +1,26 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto3";
+option java_package = "org.onosproject.grpc.net.host.models";
+
+package net.host;
+
+enum HostEventTypeProto {
+    HOST_ADDED = 0;
+    HOST_REMOVED = 1;
+    HOST_UPDATED = 2;
+    HOST_MOVED = 3;
+}
\ No newline at end of file
diff --git a/incubator/protobuf/models/proto/net/host/HostEventProto.proto b/incubator/protobuf/models/proto/net/host/HostEventProto.proto
new file mode 100644
index 0000000..c88dc20
--- /dev/null
+++ b/incubator/protobuf/models/proto/net/host/HostEventProto.proto
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto3";
+option java_package = "org.onosproject.grpc.net.host.models";
+
+package net.host;
+
+import "net/HostProto.proto";
+import "net/host/HostEnumsProto.proto";
+
+
+// Corresponds to org.onosproject.net.device.HostEvent.
+message HostNotificationProto {
+    net.HostProto host = 1;
+    net.host.HostEventTypeProto hostEventType = 2;
+}
\ No newline at end of file
diff --git a/incubator/protobuf/models/proto/net/link/LinkDescriptionProto.proto b/incubator/protobuf/models/proto/net/link/LinkDescriptionProto.proto
new file mode 100644
index 0000000..9519f3c
--- /dev/null
+++ b/incubator/protobuf/models/proto/net/link/LinkDescriptionProto.proto
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto3";
+option java_package = "org.onosproject.grpc.net.link.models";
+
+package net.link;
+
+import "net/ConnectPointProto.proto";
+import "net/link/LinkEnumsProto.proto";
+
+message LinkDescriptionProto {
+    net.ConnectPointProto src = 1;
+    net.ConnectPointProto dst = 2;
+    net.link.LinkTypeProto type = 3;
+    map<string, string> annotations = 4;
+}
\ No newline at end of file
diff --git a/incubator/protobuf/models/proto/net/link/LinkEnumsProto.proto b/incubator/protobuf/models/proto/net/link/LinkEnumsProto.proto
new file mode 100644
index 0000000..ea76f9e
--- /dev/null
+++ b/incubator/protobuf/models/proto/net/link/LinkEnumsProto.proto
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto3";
+option java_package = "org.onosproject.grpc.net.link.models";
+
+package net.link;
+
+enum LinkTypeProto {
+    // Signifies that this is a direct single-segment link.
+    DIRECT = 0;
+
+    // Signifies that this link is potentially comprised from multiple
+    // underlying segments or hops, and as such should be used to tag
+    // links traversing optical paths, tunnels or intervening 'dark'
+    // switches.
+    INDIRECT = 1;
+
+    // Signifies that this link is an edge, i.e. host link.
+    EDGE = 2;
+
+    // Signifies that this link represents a logical link backed by
+    // some form of a tunnel, e.g., GRE, MPLS, ODUk, OCH.
+    TUNNEL = 3;
+
+    // Signifies that this link is realized by fiber (either single channel or WDM).
+    OPTICAL = 4;
+
+    // Signifies that this link is a virtual link or a pseudo-wire.
+    VIRTUAL = 5;
+}
+
+enum LinkStateProto {
+    ACTIVE = 0;
+    INACTIVE = 1;
+}
+
+// Link Event Types
+enum LinkEventTypeProto {
+    LINK_ADDED = 0;
+    LINK_UPDATED = 1;
+    LINK_REMOVED = 2;
+}
diff --git a/incubator/protobuf/models/proto/net/link/LinkEventProto.proto b/incubator/protobuf/models/proto/net/link/LinkEventProto.proto
new file mode 100644
index 0000000..3772109
--- /dev/null
+++ b/incubator/protobuf/models/proto/net/link/LinkEventProto.proto
@@ -0,0 +1,28 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto3";
+option java_package = "org.onosproject.grpc.net.link.models";
+
+package net.link;
+
+import "net/LinkProto.proto";
+import "net/link/LinkEnumsProto.proto";
+
+// Corresponds to org.onosproject.net.link.LinkEvent.
+message LinkNotificationProto {
+    net.link.LinkEventTypeProto link_event_type = 1;
+    net.LinkProto link = 2;
+}
\ No newline at end of file
diff --git a/incubator/protobuf/models/proto/net/meter/BandEnumsProto.proto b/incubator/protobuf/models/proto/net/meter/BandEnumsProto.proto
new file mode 100644
index 0000000..48dbe61
--- /dev/null
+++ b/incubator/protobuf/models/proto/net/meter/BandEnumsProto.proto
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+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/proto/net/meter/BandProto.proto b/incubator/protobuf/models/proto/net/meter/BandProto.proto
new file mode 100644
index 0000000..4757c46
--- /dev/null
+++ b/incubator/protobuf/models/proto/net/meter/BandProto.proto
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+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/proto/net/meter/MeterEnumsProto.proto b/incubator/protobuf/models/proto/net/meter/MeterEnumsProto.proto
new file mode 100644
index 0000000..1b0bbf5
--- /dev/null
+++ b/incubator/protobuf/models/proto/net/meter/MeterEnumsProto.proto
@@ -0,0 +1,81 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+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/proto/net/meter/MeterEventProto.proto b/incubator/protobuf/models/proto/net/meter/MeterEventProto.proto
new file mode 100644
index 0000000..898692a
--- /dev/null
+++ b/incubator/protobuf/models/proto/net/meter/MeterEventProto.proto
@@ -0,0 +1,28 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+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/proto/net/meter/MeterProto.proto b/incubator/protobuf/models/proto/net/meter/MeterProto.proto
new file mode 100644
index 0000000..9478394
--- /dev/null
+++ b/incubator/protobuf/models/proto/net/meter/MeterProto.proto
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+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/proto/net/meter/MeterRequestProto.proto b/incubator/protobuf/models/proto/net/meter/MeterRequestProto.proto
new file mode 100644
index 0000000..be60f11
--- /dev/null
+++ b/incubator/protobuf/models/proto/net/meter/MeterRequestProto.proto
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+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
diff --git a/incubator/protobuf/models/proto/net/packet/OutboundPacketProto.proto b/incubator/protobuf/models/proto/net/packet/OutboundPacketProto.proto
new file mode 100644
index 0000000..9d943e4
--- /dev/null
+++ b/incubator/protobuf/models/proto/net/packet/OutboundPacketProto.proto
@@ -0,0 +1,28 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto3";
+option java_package = "org.onosproject.grpc.net.packet.models";
+
+package net.packet;
+
+import "net/flow/TrafficTreatmentProto.proto";
+
+// Corresponds to org.onosproject.net.packet.OutboundPacket.
+message OutboundPacketProto {
+    string device_id = 1;
+    net.flow.TrafficTreatmentProto treatment = 2;
+    bytes data = 3;
+}
\ No newline at end of file
diff --git a/incubator/protobuf/models/proto/net/packet/PacketEnumsProto.proto b/incubator/protobuf/models/proto/net/packet/PacketEnumsProto.proto
new file mode 100644
index 0000000..db6e5ca
--- /dev/null
+++ b/incubator/protobuf/models/proto/net/packet/PacketEnumsProto.proto
@@ -0,0 +1,23 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto3";
+option java_package = "org.onosproject.grpc.net.packet.models";
+
+package net.packet;
+
+enum PacketEventTypeProto {
+    EMIT = 0;
+}
\ No newline at end of file
diff --git a/incubator/protobuf/models/proto/net/packet/PacketEventProto.proto b/incubator/protobuf/models/proto/net/packet/PacketEventProto.proto
new file mode 100644
index 0000000..07d9580
--- /dev/null
+++ b/incubator/protobuf/models/proto/net/packet/PacketEventProto.proto
@@ -0,0 +1,28 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto3";
+option java_package = "org.onosproject.grpc.net.packet.models";
+
+package net.packet;
+
+import "net/packet/OutboundPacketProto.proto";
+import "net/packet/PacketEnumsProto.proto";
+
+// Corresponds to org.onosproject.net.packet.PacketEvent.
+message PacketNotificationProto {
+    net.packet.OutboundPacketProto outbound_packet = 1;
+    net.packet.PacketEventTypeProto packet_event_type = 2;
+}
\ No newline at end of file
diff --git a/incubator/protobuf/models/proto/net/packet/PacketProcessorEntryProto.proto b/incubator/protobuf/models/proto/net/packet/PacketProcessorEntryProto.proto
new file mode 100644
index 0000000..b0b90b2
--- /dev/null
+++ b/incubator/protobuf/models/proto/net/packet/PacketProcessorEntryProto.proto
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto3";
+option java_package = "org.onosproject.grpc.net.packet.models";
+
+package net.packet;
+
+import "net/packet/PacketProcessorProto.proto";
+
+// Corresponds to org.onosproject.net.packet.PacketProcessorEntry.
+message PacketProcessorEntryProto {
+    net.packet.PacketProcessorProto packet_processor = 1;
+    int32 priority = 2;
+    int64 invocations = 3;
+    int64 total_nanos = 4;
+    int64 average_nanos = 5;
+}
\ No newline at end of file
diff --git a/incubator/protobuf/models/proto/net/packet/PacketProcessorProto.proto b/incubator/protobuf/models/proto/net/packet/PacketProcessorProto.proto
new file mode 100644
index 0000000..8a71674
--- /dev/null
+++ b/incubator/protobuf/models/proto/net/packet/PacketProcessorProto.proto
@@ -0,0 +1,24 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto3";
+option java_package = "org.onosproject.grpc.net.packet.models";
+
+package net.packet;
+
+// Corresponds to org.onosproject.net.packet.PacketProcessor.
+message PacketProcessorProto {
+    int32 priority = 1;
+}
\ No newline at end of file
diff --git a/incubator/protobuf/models/proto/net/packet/PacketRequestProto.proto b/incubator/protobuf/models/proto/net/packet/PacketRequestProto.proto
new file mode 100644
index 0000000..0b61a66
--- /dev/null
+++ b/incubator/protobuf/models/proto/net/packet/PacketRequestProto.proto
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto3";
+option java_package = "org.onosproject.grpc.net.packet.models";
+
+package net.packet;
+
+import "net/flow/TrafficSelectorProto.proto";
+import "cluster/NodeIdProto.proto";
+import "core/ApplicationIdProto.proto";
+
+// Corresponds to org.onosproject.net.packet.PacketRequest.
+message PacketRequestProto {
+    net.flow.TrafficSelectorProto traffic_selector = 1;
+    int32 priority = 2;
+    core.ApplicationIdProto application_id = 3;
+    cluster.NodeIdProto node_id = 4;
+    string device_id = 5;
+}
\ No newline at end of file
diff --git a/incubator/protobuf/models/proto/net/region/RegionEnumsProto.proto b/incubator/protobuf/models/proto/net/region/RegionEnumsProto.proto
new file mode 100644
index 0000000..67bf53f
--- /dev/null
+++ b/incubator/protobuf/models/proto/net/region/RegionEnumsProto.proto
@@ -0,0 +1,71 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto3";
+option java_package = "org.onosproject.grpc.net.region.models";
+
+package net.region;
+
+enum RegionTypeProto {
+    /**
+     * Region represents an entire continent.
+     */
+    CONTINENT = 0;
+
+    /**
+     * Region represents an entire country.
+     */
+    COUNTRY = 1;
+
+    /**
+     * Region represents a metropolitan area.
+     */
+    METRO = 2;
+
+    /**
+     * Region represents a campus.
+     */
+    CAMPUS = 3;
+
+    /**
+     * Region represents a building.
+     */
+    BUILDING = 4;
+
+    /**
+     * Region represents a data center.
+     */
+    DATA_CENTER = 5;
+
+    /**
+     * Region represents a building floor.
+     */
+    FLOOR = 6;
+
+    /**
+     * Region represents a room.
+     */
+    ROOM = 7;
+
+    /**
+     * Region represents a rack.
+     */
+    RACK = 8;
+
+    /**
+     * Region represents a logical grouping.
+     */
+    LOGICAL_GROUP = 9;
+}
\ No newline at end of file
diff --git a/incubator/protobuf/models/proto/security/PermissionProto.proto b/incubator/protobuf/models/proto/security/PermissionProto.proto
new file mode 100644
index 0000000..e14af96
--- /dev/null
+++ b/incubator/protobuf/models/proto/security/PermissionProto.proto
@@ -0,0 +1,26 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto3";
+option java_package = "org.onosproject.grpc.security.models";
+
+package security;
+
+// Corresponds to org.onosproject.security.Permission.
+message PermissionProto {
+    string classname = 1;
+    string name = 2;
+    string actions = 3;
+}