[VOL-1460]

- Imported protobuf definitions from pyvoltha at
  https://gerrit.opencord.org/gitweb?p=pyvoltha.git, commit hash:
  944aee71301b8ddb211b6e51d685f56d5c4a911b

- Imported upstream Google API protos from
  https://github.com/googleapis/googleapis, commit hash:
  5a90fbea68ce4a6e87c20d2df10df5ecd88299ff

- Fixed `import` paths and directory heirarchy in protobuf definitions
  to be compatible with both python 2 and 3.

- Created Makefile scaffold to generate language-specific bindings for
  python and go

Change-Id: Idd6b6b985a5eae4c38d40dd07ae78744c09e37f5
diff --git a/protos/voltha_protos/omci_alarm_db.proto b/protos/voltha_protos/omci_alarm_db.proto
new file mode 100644
index 0000000..d1cdab6
--- /dev/null
+++ b/protos/voltha_protos/omci_alarm_db.proto
@@ -0,0 +1,80 @@
+//
+// Copyright 2018 - present the original author or authors.
+//
+// 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 go_package = "github.com/opencord/voltha-go/protos/omci";
+
+package alarm;
+
+import "voltha_protos/meta.proto";
+
+
+message AlarmAttributeData {
+    string name        = 1 [(voltha.access) = READ_ONLY];
+    string value       = 2;
+}
+
+message AlarmInstanceData {
+    uint32 instance_id      = 1 [(voltha.access) = READ_ONLY];
+    string created          = 2;
+    string modified         = 3;
+
+    repeated AlarmAttributeData attributes = 4
+    [(voltha.child_node) = {key: "name"}];
+}
+
+message AlarmClassData {
+    uint32 class_id         = 1 [(voltha.access) = READ_ONLY];
+
+    repeated AlarmInstanceData instances= 2
+    [(voltha.child_node) = {key: "instance_id"}];
+}
+
+message AlarmManagedEntity {
+    uint32 class_id  = 1 [(voltha.access) = READ_ONLY];
+    string name      = 2 [(voltha.access) = READ_ONLY];
+}
+
+message AlarmMessageType {
+    uint32 message_type = 1 [(voltha.access) = READ_ONLY];
+}
+
+message AlarmDeviceData {
+    string device_id             = 1 [(voltha.access) = READ_ONLY];
+    string created               = 2;
+    uint32 last_alarm_sequence   = 3;
+    string last_sync_time        = 4;
+    uint32 version               = 5;
+
+
+    repeated AlarmClassData classes = 6
+    [(voltha.child_node) = {key: "class_id"}];
+
+    repeated AlarmManagedEntity managed_entities = 7;
+    repeated AlarmMessageType message_types = 8;
+}
+
+message AlarmOpenOmciEventType {
+    enum OpenOmciEventType {
+        state_change = 0; // A state machine has transitioned to a new state
+    }
+}
+
+message AlarmOpenOmciEvent {
+    AlarmOpenOmciEventType.OpenOmciEventType type = 1;
+
+    string data = 2; // associated data, in json format
+}