It looks like "openstack volume type set" is failing. Here is a dump of what's going on using Queens and puppet-openstack under Debian Stretch. Note that Debian is fully Python 3 as you can see in the dump here.
# openstack --debug volume type set --property volume_backend_name=BACKEND_1 BACKEND_1
[...]
REQ: curl -g -i -X GET http://127.0.0.1:8776/v2/d175cfa3c2ea4c14927723bcd9ab9f7f/types/BACKEND_1 -H "Accept: application/json" -H "User-Agent: python-cinderclient" -H "X-Auth-Token: {SHA1}b78363b46dcaf9a9d5c4f5746090d88035ad4b59"
Starting new HTTP connection (1): 127.0.0.1
http://127.0.0.1:8776 "GET /v2/d175cfa3c2ea4c14927723bcd9ab9f7f/types/BACKEND_1 HTTP/1.1" 404 87
RESP: [404] Content-Length: 87 Content-Type: application/json x-compute-request-id: req-bdf2493c-155c-4689-b0af-b3e1de8081a7 x-openstack-request-id: req-bdf2493c-155c-4689-b0af-b3e1de8081a7
RESP BODY: {"itemNotFound": {"message": "Volume type BACKEND_1 could not be found.", "code": 404}}
GET call to volumev2 for http://127.0.0.1:8776/v2/d175cfa3c2ea4c14927723bcd9ab9f7f/types/BACKEND_1 used request id req-bdf2493c-155c-4689-b0af-b3e1de8081a7
REQ: curl -g -i -X GET http://127.0.0.1:8776/v2/d175cfa3c2ea4c14927723bcd9ab9f7f/types?is_public=None -H "Accept: application/json" -H "User-Agent: python-cinderclient" -H "X-Auth-Token: {SHA1}b78363b46dcaf9a9d5c4f5746090d88035ad4b59"
REQ: curl -g -i -X GET http://127.0.0.1:8776/v2/d175cfa3c2ea4c14927723bcd9ab9f7f/types?is_public=None -H "Accept: application/json" -H "User-Agent: python-cinderclient" -H "X-Auth-Token: {SHA1}b78363b46dcaf9a9d5c4f5746090d88035ad4b59"
Starting new HTTP connection (2): 127.0.0.1
http://127.0.0.1:8776 "GET /v2/d175cfa3c2ea4c14927723bcd9ab9f7f/types?is_public=None HTTP/1.1" 200 209
RESP: [200] Content-Type: application/json x-compute-request-id: req-a337a547-19ed-480c-99a1-dc08f30e423a Content-Length: 209 x-openstack-request-id: req-a337a547-19ed-480c-99a1-dc08f30e423a
RESP BODY: {"volume_types": [{"description": null, "is_public": true, "name": "BACKEND_1", "extra_specs": {}, "qos_specs_id": null, "id": "1d8667bc-d0cd-461f-aa66-8448d1747e1a", "os-volume-type-access:is_public": true}]}
GET call to volumev2 for http://127.0.0.1:8776/v2/d175cfa3c2ea4c14927723bcd9ab9f7f/types?is_public=None used request id req-a337a547-19ed-480c-99a1-dc08f30e423a
get() takes 1 positional argument but 2 were given
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/cliff/app.py", line 400, in run_subcommand
result = cmd.run(parsed_args)
File "/usr/lib/python3/dist-packages/osc_lib/command/command.py", line 41, in run
return super(Command, self).run(parsed_args)
File "/usr/lib/python3/dist-packages/cliff/command.py", line 184, in run
return_code = self.take_action(parsed_args) or 0
File "/usr/lib/python3/dist-packages/openstackclient/volume/v2/volume_type.py", line 414, in take_action
volume_client.volume_types, parsed_args.volume_type)
File "/usr/lib/python3/dist-packages/osc_lib/utils/__init__.py", line 273, in find_resource
if (resource.get('id') == name_or_id or
TypeError: get() takes 1 positional argument but 2 were given
clean_up SetVolumeType: get() takes 1 positional argument but 2 were given
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/osc_lib/shell.py", line 134, in run
ret_val = super(OpenStackShell, self).run(argv)
File "/usr/lib/python3/dist-packages/cliff/app.py", line 279, in run
result = self.run_subcommand(remainder)
File "/usr/lib/python3/dist-packages/osc_lib/shell.py", line 169, in run_subcommand
ret_value = super(OpenStackShell, self).run_subcommand(argv)
File "/usr/lib/python3/dist-packages/cliff/app.py", line 400, in run_subcommand
result = cmd.run(parsed_args)
File "/usr/lib/python3/dist-packages/osc_lib/command/command.py", line 41, in run
return super(Command, self).run(parsed_args)
File "/usr/lib/python3/dist-packages/cliff/command.py", line 184, in run
return_code = self.take_action(parsed_args) or 0
File "/usr/lib/python3/dist-packages/openstackclient/volume/v2/volume_type.py", line 414, in take_action
volume_client.volume_types, parsed_args.volume_type)
File "/usr/lib/python3/dist-packages/osc_lib/utils/__init__.py", line 273, in find_resource
if (resource.get('id') == name_or_id or
TypeError: get() takes 1 positional argument but 2 were given
END return value: 1
It is to be noted that this doesn't happen if I use cinder-api (ie: eventlet), it only happens if I am using uwsgi. So, likely, the client is behaving differently.