Refactored protobuf framework, added loader
Included changes:
* Initial adapter interface spec
* Adapter loader to auto-load adapters
* Initial adapter NBI
* Better import support in chameleon, allowing more flexible
protobuf structure (by organizing artifacts and service
into separate proto files.
* Refactored voltha.proto to split things into logical proto
modules.
* Some additional cleanup
Change-Id: I75f9883c6992148ea8df430bcdaebf85115fea4a
diff --git a/voltha/main.py b/voltha/main.py
index c4ed67b..f28cdbe 100755
--- a/voltha/main.py
+++ b/voltha/main.py
@@ -28,6 +28,7 @@
from common.utils.dockerhelpers import get_my_containers_name
from common.utils.nethelpers import get_my_primary_interface, \
get_my_primary_local_ipv4
+from voltha.adapters.loader import AdapterLoader
from voltha.coordinator import Coordinator
from voltha.northbound.grpc.grpc_server import VolthaGrpcServer
from voltha.northbound.kafka.kafka_proxy import KafkaProxy, get_kafka_proxy
@@ -217,6 +218,7 @@
self.coordinator = None
self.grpc_server = None
self.kafka_proxy = None
+ self.adapter_loader = None
if not args.no_banner:
print_banner(self.log)
@@ -230,9 +232,10 @@
def start(self):
self.start_reactor() # will not return except Keyboard interrupt
+ @inlineCallbacks
def startup_components(self):
self.log.info('starting-internal-components')
- self.coordinator = Coordinator(
+ self.coordinator = yield Coordinator(
internal_host_address=self.args.internal_host_address,
external_host_address=self.args.external_host_address,
rest_port=self.args.rest_port,
@@ -241,10 +244,14 @@
consul=self.args.consul).start()
init_rest_service(self.args.rest_port)
- self.grpc_server = VolthaGrpcServer(self.args.grpc_port).start()
+ self.grpc_server = yield VolthaGrpcServer(self.args.grpc_port).start()
# initialize kafka proxy singleton
- self.kafka_proxy = KafkaProxy(self.args.consul, self.args.kafka)
+ self.kafka_proxy = yield KafkaProxy(self.args.consul, self.args.kafka)
+
+ # adapter loader
+ self.adapter_loader = yield AdapterLoader(
+ config=self.config.get('adapter_loader', {})).start()
self.log.info('started-internal-services')
@@ -252,6 +259,8 @@
def shutdown_components(self):
"""Execute before the reactor is shut down"""
self.log.info('exiting-on-keyboard-interrupt')
+ if self.adapter_loader is not None:
+ yield self.adapter_loader.stop()
if self.coordinator is not None:
yield self.coordinator.stop()
if self.grpc_server is not None: