summaryrefslogtreecommitdiffstats
path: root/cyborg_enhancement/mitaka_version/cyborg/cyborg/conductor/rpcapi.py
diff options
context:
space:
mode:
Diffstat (limited to 'cyborg_enhancement/mitaka_version/cyborg/cyborg/conductor/rpcapi.py')
-rw-r--r--cyborg_enhancement/mitaka_version/cyborg/cyborg/conductor/rpcapi.py192
1 files changed, 192 insertions, 0 deletions
diff --git a/cyborg_enhancement/mitaka_version/cyborg/cyborg/conductor/rpcapi.py b/cyborg_enhancement/mitaka_version/cyborg/cyborg/conductor/rpcapi.py
new file mode 100644
index 0000000..451846d
--- /dev/null
+++ b/cyborg_enhancement/mitaka_version/cyborg/cyborg/conductor/rpcapi.py
@@ -0,0 +1,192 @@
+# Copyright 2017 Huawei Technologies Co.,LTD.
+# All Rights Reserved.
+#
+# 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.
+
+"""Client side of the conductor RPC API."""
+
+from oslo_config import cfg
+import oslo_messaging as messaging
+
+from cyborg.common import constants
+from cyborg.common import rpc
+from cyborg.objects import base as objects_base
+
+
+CONF = cfg.CONF
+
+
+class ConductorAPI(object):
+ """Client side of the conductor RPC API.
+
+ API version history:
+
+ | 1.0 - Initial version.
+
+ """
+
+ RPC_API_VERSION = '1.0'
+
+ def __init__(self, topic=None):
+ super(ConductorAPI, self).__init__()
+ self.topic = topic or constants.CONDUCTOR_TOPIC
+ target = messaging.Target(topic=self.topic,
+ version='1.0')
+ serializer = objects_base.CyborgObjectSerializer()
+ self.client = rpc.get_client(target,
+ version_cap=self.RPC_API_VERSION,
+ serializer=serializer)
+
+ def accelerator_create(self, context, obj_acc):
+ """Signal to conductor service to create an accelerator.
+
+ :param context: request context.
+ :param obj_acc: a created (but not saved) accelerator object.
+ :returns: created accelerator object.
+ """
+ cctxt = self.client.prepare(topic=self.topic, server=CONF.host)
+ return cctxt.call(context, 'accelerator_create', obj_acc=obj_acc)
+
+ def accelerator_update(self, context, acc_obj):
+ """Signal to conductor service to update an accelerator.
+
+ :param context: request context.
+ :param acc_obj: an accelerator object to update.
+ :returns: updated accelerator object.
+ """
+ cctxt = self.client.prepare(topic=self.topic, server=CONF.host)
+ return cctxt.call(context, 'accelerator_update', acc_obj=acc_obj)
+
+ def accelerator_delete(self, context, acc_obj):
+ """Signal to conductor service to delete an accelerator.
+
+ :param context: request context.
+ :param acc_obj: an accelerator to delete.
+ """
+ cctxt = self.client.prepare(topic=self.topic, server=CONF.host)
+ cctxt.call(context, 'accelerator_delete', acc_obj=acc_obj)
+
+ def accelerator_list_one(self, context, obj_acc):
+ """Signal to conductor service to list an accelerator.
+
+ :param context: request context.
+ :param obj_acc: an accelerator object to list.
+ :returns: accelerator object.
+ """
+
+ cctxt = self.client.prepare(topic=self.topic, server=CONF.host)
+ cctxt.call(context, 'get_one', obj_acc=obj_acc)
+
+ def accelerator_list_all(self, context, obj_acc):
+ """Signal to conductor service to list all accelerators.
+
+ :param context: request context.
+ :param obj_acc: accelerator objects to list.
+ :returns: accelerator objects.
+
+ """
+
+ cctxt = self.client.prepare(topic=self.topic)
+ return cctxt.call(context, 'get_all', obj_acc=obj_acc)
+
+ def port_create(self, context, port_obj):
+ """Signal to conductor service to create a port.
+
+ :param context: request context.
+ :param port_obj: a created (but not saved) port object.
+ :returns: created port object.
+ """
+ cctxt = self.client.prepare(topic=self.topic)
+ return cctxt.call(context, 'port_create', port_obj=port_obj)
+
+ def port_bulk_create(self, context, port_list):
+ """Signal to conductor service to create a port.
+
+ :param context: request context.
+ :param port_list: port list need to be create and save.
+ :returns: request result.
+ """
+ cctxt = self.client.prepare(topic=self.topic)
+ return cctxt.call(context, 'port_bulk_create', port_list=port_list)
+
+ def port_update(self, context, port_obj):
+ """Signal to conductor service to update a port.
+
+ :param context: request context.
+ :param port_obj: a port object to update.
+ :returns: updated port object.
+ """
+ cctxt = self.client.prepare(topic=self.topic)
+ return cctxt.call(context, 'port_update', port_obj=port_obj)
+
+ def port_delete(self, context, port_obj):
+ """Signal to conductor service to delete a port.
+
+ :param context: request context.
+ :param port_obj: a port to delete.
+ """
+ cctxt = self.client.prepare(topic=self.topic)
+ cctxt.call(context, 'port_delete', port_obj=port_obj)
+
+ #deployable object
+ def deployable_create(self, context, obj_dep):
+ """Signal to conductor service to create a deployable.
+ :param context: request context.
+ :param obj_dep: a created (but not saved) deployable object.
+ :returns: created deployable object.
+ """
+ cctxt = self.client.prepare(topic=self.topic)
+ return cctxt.call(context, 'deployable_create', obj_dep=obj_dep)
+
+ def deployable_update(self, context, obj_dep):
+ """Signal to conductor service to update a deployable.
+ :param context: request context.
+ :param obj_dep: a deployable object to update.
+ :returns: updated deployable object.
+ """
+ cctxt = self.client.prepare(topic=self.topic)
+ return cctxt.call(context, 'deployable_update', obj_dep=obj_dep)
+
+ def deployable_delete(self, context, obj_dep):
+ """Signal to conductor service to delete a deployable.
+ :param context: request context.
+ :param obj_dep: a deployable object to delete.
+ """
+ cctxt = self.client.prepare(topic=self.topic)
+ cctxt.call(context, 'deployable_delete', obj_dep=obj_dep)
+
+ def deployable_get(self, context, uuid):
+ """Signal to conductor service to get a deployable.
+ :param context: request context.
+ :param uuid: UUID of a deployable.
+ :returns: requested deployable object.
+ """
+ cctxt = self.client.prepare(topic=self.topic)
+ return cctxt.call(context, 'deployable_get', uuid=uuid)
+
+ def deployable_get_by_host(self, context, host):
+ """Signal to conductor service to get a deployable by host.
+ :param context: request context.
+ :param host: host on which the deployable is located.
+ :returns: requested deployable object.
+ """
+ cctxt = self.client.prepare(topic=self.topic)
+ return cctxt.call(context, 'deployable_get_by_host', host=host)
+
+ def deployable_list(self, context):
+ """Signal to conductor service to get a list of deployables.
+ :param context: request context.
+ :returns: a list of deployable objects.
+ """
+ cctxt = self.client.prepare(topic=self.topic)
+ return cctxt.call(context, 'deployable_list')