VOL-1460
I need to test out a method sharing protos.
In particular, it is the protos under the go/folder
Plus some updates to the build process.
Change-Id: I5878354fd1ef136d4f0a019b22de96afdb0205e1
diff --git a/go/common/common.proto b/go/common/common.proto
new file mode 100644
index 0000000..24c3c46
--- /dev/null
+++ b/go/common/common.proto
@@ -0,0 +1,122 @@
+syntax = "proto3";
+
+option go_package = "github.com/opencord/voltha-protos/go/common";
+
+package voltha;
+
+import "voltha_protos/yang_options.proto";
+
+// Convey a resource identifier
+message ID {
+ string id = 1;
+}
+
+// Represents a list of IDs
+message IDs {
+ repeated ID items = 1;
+}
+
+enum TestModeKeys {
+ api_test=0;
+}
+
+message LogLevel {
+ option (yang_child_rule) = MOVE_TO_PARENT_LEVEL;
+
+ // Logging verbosity level
+ enum LogLevel {
+ DEBUG = 0;
+ INFO = 1;
+ WARNING = 2;
+ ERROR = 3;
+ CRITICAL = 4;
+ FATAL = 5;
+ }
+}
+
+message AdminState {
+ option (yang_child_rule) = MOVE_TO_PARENT_LEVEL;
+
+ // Administrative State
+ enum AdminState {
+
+ // The administrative state of the device is unknown
+ UNKNOWN = 0;
+
+ // The device is pre-provisioned into Voltha, but not contacted by it
+ PREPROVISIONED = 1;
+
+ // The device is enabled for activation and operation
+ ENABLED = 2;
+
+ // The device is disabled and shall not perform its intended forwarding
+ // functions other than being available for re-activation.
+ DISABLED = 3;
+
+ // The device is in the state of image download
+ DOWNLOADING_IMAGE = 4;
+
+ // The device is marked to be deleted
+ DELETED = 5;
+ }
+}
+
+message OperStatus {
+ option (yang_child_rule) = MOVE_TO_PARENT_LEVEL;
+
+ // Operational Status
+ enum OperStatus {
+
+ // The status of the device is unknown at this point
+ UNKNOWN = 0;
+
+ // The device has been discovered, but not yet activated
+ DISCOVERED = 1;
+
+ // The device is being activated (booted, rebooted, upgraded, etc.)
+ ACTIVATING = 2;
+
+ // Service impacting tests are being conducted
+ TESTING = 3;
+
+ // The device is up and active
+ ACTIVE = 4;
+
+ // The device has failed and cannot fulfill its intended role
+ FAILED = 5;
+ }
+}
+
+message ConnectStatus {
+ option (yang_child_rule) = MOVE_TO_PARENT_LEVEL;
+
+ // Connectivity Status
+ enum ConnectStatus {
+
+ // The device connectivity status is unknown
+ UNKNOWN = 0;
+
+ // The device cannot be reached by Voltha
+ UNREACHABLE = 1;
+
+ // There is live communication between device and Voltha
+ REACHABLE = 2;
+ }
+}
+
+message OperationResp {
+ option (yang_child_rule) = MOVE_TO_PARENT_LEVEL;
+
+ enum OperationReturnCode {
+ OPERATION_SUCCESS = 0;
+ OPERATION_FAILURE = 1;
+ OPERATION_UNSUPPORTED = 2;
+ }
+ // Return code
+ OperationReturnCode code = 1;
+
+ // Additional Info
+ string additional_info = 2;
+}
+
+
diff --git a/go/common/meta.proto b/go/common/meta.proto
new file mode 100644
index 0000000..a308ffa
--- /dev/null
+++ b/go/common/meta.proto
@@ -0,0 +1,57 @@
+// Copyright (c) 2015, Google Inc.
+//
+// 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.
+
+// This file contains annotation definitions that can be used to describe
+// a configuration tree.
+
+syntax = "proto3";
+
+option go_package = "github.com/opencord/voltha-protos/go/common";
+
+package voltha;
+
+import "google/protobuf/descriptor.proto";
+
+message ChildNode {
+ string key = 1;
+}
+
+enum Access {
+
+ // read-write, stored attribute
+ CONFIG = 0;
+
+ // read-only field, stored with the model, covered by its hash
+ READ_ONLY = 1;
+
+ // A read-only attribute that is not stored in the model, not covered
+ // by its hash, its value is filled real-time upon each request.
+ REAL_TIME = 2;
+
+}
+
+extend google.protobuf.FieldOptions {
+
+ // If present, it indicates that this field is stored as external child node
+ // or children nodes in Voltha's internal configuration tree.
+ // If the field is a container field and if the option specifies a key
+ // the child objects will be addressible by that key.
+ ChildNode child_node = 7761772;
+
+ // This annotation can be used to indicate that a field is read-only,
+ // from the perspective of NBI access. Backend plugins and system
+ // internals can update the field but the update requests through the
+ // NBI will ignore for instance a field that is marked as read-only (RO).
+ Access access = 7761773;
+}
diff --git a/go/common/yang_options.proto b/go/common/yang_options.proto
new file mode 100644
index 0000000..25e6fa7
--- /dev/null
+++ b/go/common/yang_options.proto
@@ -0,0 +1,74 @@
+// Copyright (c) 2015, Google Inc.
+//
+// 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.
+
+// This file contains annotation definitions that can be used to describe
+// a configuration tree.
+
+syntax = "proto3";
+
+option go_package = "github.com/opencord/voltha-protos/go/common";
+
+package voltha;
+
+import "google/protobuf/descriptor.proto";
+
+enum MessageParserOption {
+ // Move any enclosing child enum/message definition to the same level
+ // as the parent (this message) in the yang generated file
+ MOVE_TO_PARENT_LEVEL= 0;
+
+ // Create both a grouping and a container for this message. The container
+ // name will be the message name. The grouping name will be the message
+ // name prefixed with "grouping_"
+ CREATE_BOTH_GROUPING_AND_CONTAINER = 1;
+}
+
+message InlineNode {
+ string id = 1;
+ string type = 2;
+}
+
+message RpcReturnDef {
+ // The gRPC methods return message types. NETCONF expects an actual
+ // attribute as defined in the YANG schema. The xnl_tag will be used
+ // as the top most tag when translating a gRPC response into an xml
+ // response
+ string xml_tag = 1;
+
+ // When the gRPC response is a list of items, we need to differentiate
+ // between a YANG schema attribute whose name is "items" and when "items"
+ // is used only to indicate a list of items is being returned. The default
+ // behavior assumes a list is returned when "items" is present in
+ // the response. This option will therefore be used when the attribute
+ // name in the YANG schema is 'items'
+ string list_items_name = 2;
+}
+
+extend google.protobuf.MessageOptions {
+ // This annotation is used to indicate how a message is parsed when
+ // converting from proto to yang format.
+ MessageParserOption yang_child_rule = 7761774;
+
+ MessageParserOption yang_message_rule = 7761775;
+}
+
+extend google.protobuf.FieldOptions {
+ // If present, the field (a message reference) should be replaced by the
+ // message itself. For now, this applies only to non-repeated fields.
+ InlineNode yang_inline_node = 7761776;
+}
+
+extend google.protobuf.MethodOptions {
+ RpcReturnDef yang_xml_tag = 7761777;
+}