]> review.fuel-infra Code Review - openstack-build/cinder-build.git/commitdiff
Fix rpc initialization of cinder-manager volume
authorMehdi Abaakouk <sileht@sileht.net>
Tue, 2 Dec 2014 09:04:54 +0000 (10:04 +0100)
committerMehdi Abaakouk <sileht@sileht.net>
Tue, 2 Dec 2014 14:00:41 +0000 (15:00 +0100)
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

bin/cinder-manage

index 674bf40344f85ab1f4049fbb3cd24305cfe0f511..90d8070605c2e3474f36744d6198e17920b56dd1 100755 (executable)
@@ -252,13 +252,12 @@ class VolumeCommands(object):
     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',
@@ -282,7 +281,7 @@ class VolumeCommands(object):
             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')