VolumeCommands.rpc_client is a property, so when the oslo.config argparser
introspect the class VolumeCommands at module loading time, it launch the
method. But the method depends on a initialized oslo.config.cfg.CONF object,
but this one is not yet initialized.
So don't use python property, to initialize the rpc_client correctly.
No test because of bug: #
1398401
Change-Id: I2c2f0be6e7a9d0866f063d98e1f8213f62fb9f92
Closes-bug: #
1398319
def __init__(self):
self._client = None
- @property
def rpc_client(self):
- if not rpc.initialized():
- rpc.init(CONF)
- target = messaging.Target(topic=CONF.volume_topic)
- self._client = rpc.get_client(target)
-
+ if self._client is None:
+ if not rpc.initialized():
+ rpc.init(CONF)
+ target = messaging.Target(topic=CONF.volume_topic)
+ self._client = rpc.get_client(target)
return self._client
@args('volume_id',
print(_("Detach volume from instance and then try again."))
return
- cctxt = self.rpc_client.prepare(server=host)
+ cctxt = self.rpc_client().prepare(server=host)
cctxt.cast(ctxt, "delete_volume", volume_id=volume['id'])
@args('--currenthost', required=True, help='Existing volume host name')