X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=rwlaunchpad%2Fplugins%2Frwlaunchpadtasklet%2Frift%2Ftasklets%2Frwlaunchpad%2Fdatacenters.py;fp=rwlaunchpad%2Fplugins%2Frwlaunchpadtasklet%2Frift%2Ftasklets%2Frwlaunchpad%2Fdatacenters.py;h=0000000000000000000000000000000000000000;hb=4870d0ee29789b859931e4e2c73e13dcb29537d5;hp=05731a6153227a3863a1e6ebebe4bc27f3fe1547;hpb=6f1a3fe149e4a6b9803382cb299c902f4cf58ec9;p=osm%2FSO.git diff --git a/rwlaunchpad/plugins/rwlaunchpadtasklet/rift/tasklets/rwlaunchpad/datacenters.py b/rwlaunchpad/plugins/rwlaunchpadtasklet/rift/tasklets/rwlaunchpad/datacenters.py deleted file mode 100644 index 05731a61..00000000 --- a/rwlaunchpad/plugins/rwlaunchpadtasklet/rift/tasklets/rwlaunchpad/datacenters.py +++ /dev/null @@ -1,125 +0,0 @@ - -# -# Copyright 2016 RIFT.IO 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. -# - -import asyncio - -from gi.repository import ( - RwDts, - RwLaunchpadYang, -) - -import rift.mano.dts as mano_dts -import rift.openmano.openmano_client as openmano_client -import rift.tasklets - - -class DataCenterPublisher(mano_dts.DtsHandler): - """ - This class is reponsible for exposing the data centers associated with an - openmano cloud account. - """ - - XPATH = "D,/rw-launchpad:datacenters" - - def __init__(self, log, dts, loop): - """Creates an instance of a DataCenterPublisher - - Arguments: - tasklet - the tasklet that this publisher is registered for - - """ - super().__init__(log, dts, loop) - - self._ro_sub = mano_dts.ROAccountConfigSubscriber( - self.log, - self.dts, - self.loop, - callback=self.on_ro_account_change - ) - self.ro_accounts = {} - - def on_ro_account_change(self, ro_account, action): - if action in [ RwDts.QueryAction.CREATE, RwDts.QueryAction.UPDATE ]: - self.ro_accounts[ro_account.name] = ro_account - elif action == RwDts.QueryAction.DELETE and ro_account.name in self.ro_accounts: - del self.ro_accounts[ro_account.name] - - @asyncio.coroutine - def register(self): - """Registers the publisher with DTS""" - yield from self._ro_sub.register() - - @asyncio.coroutine - def on_prepare(xact_info, action, ks_path, msg): - try: - # Create a datacenters instance to hold all of the cloud - # account data. - datacenters = RwLaunchpadYang.DataCenters() - - # Iterate over the known openmano accounts and populate cloud - # account instances with the corresponding data center info - for _, account in self.ro_accounts.items(): - if account.account_type != "openmano": - continue - - try: - ro_account = RwLaunchpadYang.ROAccount() - ro_account.name = account.name - - # Create a client for this cloud account to query for - # the associated data centers - client = openmano_client.OpenmanoCliAPI( - self.log, - account.openmano.host, - account.openmano.port, - account.openmano.tenant_id, - ) - - # Populate the cloud account with the data center info - for uuid, name in client.datacenter_list(): - ro_account.datacenters.append( - RwLaunchpadYang.DataCenter( - uuid=uuid, - name=name, - ) - ) - - datacenters.ro_accounts.append(ro_account) - - except Exception as e: - self.log.exception(e) - - xact_info.respond_xpath( - RwDts.XactRspCode.MORE, - 'D,/rw-launchpad:datacenters', - datacenters, - ) - - xact_info.respond_xpath(RwDts.XactRspCode.ACK) - - except Exception as e: - self.log.exception(e) - raise - - handler = rift.tasklets.DTS.RegistrationHandler(on_prepare=on_prepare) - - with self.dts.group_create() as group: - self.reg = group.register( - xpath=DataCenterPublisher.XPATH, - handler=handler, - flags=RwDts.Flag.PUBLISHER, - )