Ask Your Question
1

Unable to attach cinder volumes created from volume image or snapshot

asked 2015-07-20 11:01:52 -0600

DylanH gravatar image

updated 2015-07-20 12:57:10 -0600

Problem: We are not able to mount any cinder volumes which are not created new with out sourcing an image or source volume. If We do source a volume or image we are unable to attach them to an instance The cinder API seems to throw the following error.

    2015-07-20 10:33:18.291 16325 ERROR oslo.messaging._drivers.common [req-42eb46b1-51f4-46d8-8fe0-52e1eb4b493e 54ec776d99044bd6be27ebbc53458107 63436ca0d2b24921b60a7ac984db555a - - -] Returning exception Bad or unexpected response from the storage volume backend API: Unable to fetch connection information from backend: md5() argument 1 must be string or buffer, not None to caller

2015-07-20 10:33:18.291 16325 ERROR oslo.messaging._drivers.common [req-42eb46b1-51f4-46d8-8fe0-52e1eb4b493e 54ec776d99044bd6be27ebbc53458107 63436ca0d2b24921b60a7ac984db555a - - -] ['Traceback (most recent call last):\n', '  File "/usr/lib/python2.7/site-packages/oslo/messaging/rpc/dispatcher.py", line 134, in _dispatch_and_reply\n    incoming.message))\n', '  File "/usr/lib/python2.7/site-packages/oslo/messaging/rpc/dispatcher.py", line 177, in _dispatch\n    return self._do_dispatch(endpoint, method, ctxt, args)\n', '  File "/usr/lib/python2.7/site-packages/oslo/messaging/rpc/dispatcher.py", line 123, in _do_dispatch\n    result = getattr(endpoint, method)(ctxt, **new_args)\n', '  File "/usr/lib/python2.7/site-packages/osprofiler/profiler.py", line 105, in wrapper\n    return f(*args, **kwargs)\n', '  File "/usr/lib/python2.7/site-packages/cinder/volume/manager.py", line 902, in initialize_connection\n    raise exception.VolumeBackendAPIException(data=err_msg)\n', 'VolumeBackendAPIException: Bad or unexpected response from the storage volume backend API: Unable to fetch connection information from backend: md5() argument 1 must be string or buffer, not None\n']

Currently running Juno on RDO with a glusterfs backend. Unsure how to resolve this. This was working on icehouse.

Also wondering if this is related to the following.

https://bugs.launchpad.net/cinder/+bug/1441050 (https://bugs.launchpad.net/cinder/+bu...)

I am unable to upgrade to liberty at this moment. Which looks like this bug refers to. Any help would be great

Provider location does not seem to be being set with the gluster drive after a fork of volume from a volume copy or image copy.

MariaDB [cinder]> SELECT provider_location FROM volumes WHERE provider_location IS NULL;
+-------------------+
| provider_location |
+-------------------+
| NULL              |
| NULL              |
| NULL              |
| NULL              |
| NULL              |
| NULL              |
| NULL              |
| NULL              |

After updating the provider_location it then works. MariaDB [cinder]> SELECT provider_location FROM volumes;

+---------------------+
| provider_location   |
+---------------------+
| gfs-primary:/cinder |
| gfs-primary:/cinder |
| gfs-primary:/cinder |
| gfs-primary:/cinder |
| gfs-primary:/cinder |
| gfs-primary:/cinder |
| gfs-primary:/cinder |
| gfs-primary:/cinder |
| gfs-primary:/cinder |
| gfs-primary:/cinder |
edit retag flag offensive close merge delete

2 answers

Sort by ยป oldest newest most voted
0

answered 2017-11-17 06:49:53 -0600

Deepa gravatar image
edit flag offensive delete link more
0

answered 2015-07-21 10:22:31 -0600

DylanH gravatar image

We resolved this internally. Had to update the gluster.py cinder driver for Juno. This was not returning the correct results to the cinder manager to update the provider_location.

Below is what needed to be changed in the gluster.py

@@ -170,7 +170,7 @@
    @utils.synchronized('glusterfs', external=False)
    def create_cloned_volume(self, volume, src_vref):
        """Creates a clone of the specified volume."""
-        self._create_cloned_volume(volume, src_vref)
+        return self._create_cloned_volume(volume, src_vref)

    @utils.synchronized('glusterfs', external=False)
    def create_volume(self, volume):
@@ -188,7 +188,7 @@

    @utils.synchronized('glusterfs', external=False)
    def create_volume_from_snapshot(self, volume, snapshot):
-        self._create_volume_from_snapshot(volume, snapshot)
+        return self._create_volume_from_snapshot(volume, snapshot)

    def _copy_volume_from_snapshot(self, snapshot, volume, volume_size):
        """Copy data from snapshot to destination volume.
edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Get to know Ask OpenStack

Resources for moderators

Question Tools

1 follower

Stats

Asked: 2015-07-20 11:01:52 -0600

Seen: 1,107 times

Last updated: Nov 17 '17