Starting point
Change-Id: I86dab2674688f6d818ce2fb0861ea893d6841df3
diff --git a/src/grpc_client/__init__.py b/src/grpc_client/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/grpc_client/__init__.py
diff --git a/src/grpc_client/main.py b/src/grpc_client/main.py
new file mode 100644
index 0000000..b5bfa4f
--- /dev/null
+++ b/src/grpc_client/main.py
@@ -0,0 +1,43 @@
+import functools
+from xosapi.xos_grpc_client import SecureClient, InsecureClient
+from twisted.internet import reactor, defer
+from tosca.resources import RESOURCES
+from xosconfig import Config
+
+LOCAL_CERT = '/Users/teone/Sites/opencord/orchestration/xos-tosca/local_certs.crt'
+
+class GRPC_Client:
+ def __init__(self):
+ self.client = None
+
+ self.grpc_secure_endpoint = Config.get('grpc.secure_endpoint')
+ self.grpc_insecure_endpoint = Config.get('grpc.insecure_endpoint')
+ self.username = Config.get('grpc.admin_username')
+ self.password = Config.get('grpc.admin_password')
+
+ def setup_resources(self, client):
+ print "[XOS-TOSCA] Loading resources"
+ for k in client.xos_orm.all_model_names:
+ RESOURCES[k] = getattr(client.xos_orm, k)
+
+ def start(self):
+ print "[XOS-TOSCA] Connecting to xos-core"
+
+ deferred = defer.Deferred()
+
+ if self.client:
+ self.client.stop()
+ self.client.session_change = True
+
+ if self.username and self.password:
+ # NOTE if we authenticate users given the parameters in the rest request, do we need this?
+ self.client = SecureClient(endpoint=self.grpc_secure_endpoint, username=self.username, password=self.password, cacert=LOCAL_CERT)
+ else:
+ self.client = InsecureClient(endpoint=self.grpc_insecure_endpoint)
+
+ self.client.set_reconnect_callback(functools.partial(self.setup_resources, self.client))
+ self.client.start()
+
+ # TODO can we call this once the client is setted up?
+ reactor.callLater(12, deferred.callback, self.client)
+ return deferred
\ No newline at end of file