opendevreview | Grzegorz Grasza proposed openstack/keystoneauth master: Remove six https://review.opendev.org/c/openstack/keystoneauth/+/816671 | 11:55 |
---|---|---|
eest | i am trying to create a server in openstack using block storage, i have gotten it to work by calling conn.compute.create_server() with a block_device_mapping_v2 list with the same content as is constructed in https://github.com/openstack/openstacksdk/blob/17fde652ada983d6a04dc98b90913f8066187dc3/openstack/cloud/_compute.py#L999-L1006 now to my issue: is there a way to point out what specific "volume | 12:50 |
eest | type" you want? if i run "openstack volume type list" i see there are more than one volume type and currently i get one of them, but i am not sure how i would pick a specific one | 12:50 |
eest | if i just try suppling an "volume_type" field i get a "Additional properties are not allowed (u'volume_type' was unexpected)" error | 12:52 |
frickler | eest: seems like support for this is still missing. stephenfin ^^ do you have a list of nova gaps? | 13:13 |
stephenfin | eest: '--volume' is a helper option that allows you to attach a volume using the most common configuration. If you want to configure additional things like volume type, you will need to use '--block-device'. See https://review.opendev.org/c/openstack/python-openstackclient/+/866325 for more context | 13:18 |
stephenfin | eest: You'll note there that we're currently unable to use '--block-device' for the boot volume though. There's a fix proposed but it hasn't been included in a release yet. If you need a boot volume, you'll have to use the legacy '--block-device-mapping' option | 13:19 |
eest | hmm, just to be clear i am not trying to create the server using the openstack CLI, i only used it to show how i proved there were multiple volume types to chose from | 13:21 |
stephenfin | oh, sorry, you're using SDK | 13:22 |
eest | i am right now calling the compute.create_server() function from code, and passing it block_device_mapping_v2 basically filled in the same way the code i linked on github does | 13:22 |
stephenfin | eest: https://docs.openstack.org/api-ref/compute/?expanded=create-server-detail#id11 | 13:23 |
stephenfin | Look for "block_device_mapping_v2 (Optional)" | 13:23 |
stephenfin | You'll see under that all the possible keys and values for each (JSON) object in the block_device_mapping_v2 (JSON) list field | 13:24 |
eest | found it, so it seems there is no way to pass in the "type" then? | 13:24 |
stephenfin | block_device_mapping_v2.volume_type (Optional) | 13:24 |
stephenfin | The device volume_type. This can be used to specify the type of volume which the compute service will create and attach to the server. If not specified, the block storage service will provide a default volume type. See the block storage volume types API for more details. | 13:25 |
frickler | stephenfin: but it seems the sdk rejects that option? | 13:25 |
frickler | eest: can you share the code you are invoking so we can doublecheck? use paste.opendev.org | 13:26 |
eest | yes, hold on | 13:26 |
stephenfin | I'd be surprised if it did. That seems to be mapped correctly in openstack/compute/v2/server.py | 13:27 |
eest | https://paste.opendev.org/show/bztGgATTQcwKdam5UwVl/ | 13:28 |
eest | results in "Additional properties are not allowed (u'volume_type' was unexpected)" | 13:29 |
eest | it is possible i should not supply it in the dict? | 13:30 |
stephenfin | that's a nova error, not openstacksdk. You're using the wrong microversion. You need 2.67 or greater | 13:31 |
eest | hmm, is that something supplied to create_server() or something else? | 13:31 |
stephenfin | yes, you should be able to pass microversion to create_server | 13:33 |
stephenfin | If you enable debugging you will see the X-Openstack-API-Version header you're sending nova as well as the error messages coming back | 13:34 |
stephenfin | openstack.enable_logging(debug=True) | 13:35 |
eest | i dont seem to be setting that header in the request | 13:41 |
frickler | eest: what version of openstacksdk are you using? | 13:41 |
frickler | also which version is your openstack cloud? | 13:42 |
eest | the RESP includes x-openstack-nova-api-version: 2.1 | 13:42 |
frickler | your example works just fine for me, with both 0.61.0 and 0.103.0 | 13:45 |
eest | openstacksdk 0.101.0 | 13:49 |
eest | hmm, ok... | 13:50 |
frickler | do you set up your cloud from clouds.yaml or by explicit auth parameters? | 13:52 |
eest | clouds.yaml | 13:52 |
eest | is there a way to request a specifc microversion in that? tried looking earlier and came up emtpy | 13:53 |
frickler | eest: set "compute_api_version: 2.90" | 13:58 |
eest | i am just doing: conn = openstack.connect(cloud="openstack") | 13:58 |
eest | so it is very opaque | 13:58 |
frickler | same here | 13:58 |
eest | will try to add your thing to the file | 13:59 |
frickler | if I set "compute_api_version: 2.1" I get the same error as you | 13:59 |
frickler | but without anything specified the sdk should use the latest available version | 13:59 |
eest | with your addition i see -H "X-OpenStack-Nova-API-Version: 2.9" in the debug request, so seems like it is being picked up, still the same error | 14:03 |
eest | the resp does echo x-openstack-nova-api-version: 2.9, not sure that means it was accepted server side or just echoing what i sent to it | 14:05 |
eest | (of course, interesting that it strips the trailing zero, i have verifed it is not missing in the config) | 14:09 |
eest | this is interesting, i tried changing it to 2.79 just since this seemed to work with openstack CLI earlier, and now a call to conn.compute.find_image(image_name) earlier in the code fails with a "The resource could not be found." | 14:14 |
frickler | eest: 2.9 is too old, I wrote 2.90 | 14:16 |
frickler | ah, wait, you may need to quota that, so it becomes a string | 14:17 |
eest | right, yes, quoting it is one step better, now it fails: "Version 2.90 is not supported by the API. Minimum is 2.1 and maximum is 2.79" | 14:18 |
eest | one step closer! | 14:18 |
frickler | o.k., then 2.79 is the correct value for you, that's train. pretty old but still should work | 14:19 |
frickler | but you should not use conn.compute.find_image, use conn.image.find_image() | 14:22 |
eest | that code is based on teh create_server example at https://docs.openstack.org/openstacksdk/latest/user/guides/compute.html | 14:24 |
eest | so i get image and flavor via the compute call | 14:24 |
eest | is the example outdated? | 14:24 |
frickler | eest: it seems so, yes | 14:28 |
eest | roger, ill change it and see what happens | 14:30 |
eest | oh shit, i just might have worked | 14:31 |
eest | yeah, trying to create it with a nonexistant type name also fails as expected now: "Volume type fastt could not be found." | 14:35 |
eest | so it seems to do what it is supposed to | 14:35 |
eest | im curious if it is a separate issue that my openstacksdk did not automatically go for the later available compute api version | 14:35 |
eest | but thanks a lot for helping me with this, not sure how long it would have taken to figure this out myself | 14:36 |
eest | stephenfin: also, thanks for your review on https://review.opendev.org/c/openstack/openstacksdk/+/865667 | 14:36 |
stephenfin | nw | 14:37 |
eest | frickler: is the automatic api version detection described anywhere? it seems it is not happening for me at least | 15:20 |
frickler | eest: I'm not sure, I'll have to dig a bit tomorrow | 15:40 |
eest | the only version related setting i had in my file was identity_api_version, i tried commenting out that in case it somehow influenced something but the result was the same | 15:43 |
stephenfin | eest: an automatic microversion is taken from the _max_microversion variable in a given resource. For 'create_server' that would 'Server' in openstack.compute.v2.server | 16:04 |
stephenfin | eest: However, that can be overridden by user-level configuration, by either providing a 'microversion' parameter to various methods or setting '{service}_api_version' in clouds.yaml | 16:06 |
stephenfin | OSC also supports configuration via command line options of environment variables but you'd need to do some wiring up to support that in pure SDK | 16:06 |
*** ministry is now known as __ministry | 16:07 | |
stephenfin | gtema: can you look at https://review.opendev.org/c/openstack/openstacksdk/+/864029 to unblock some OSC work I've been workingo n? | 16:09 |
stephenfin | *working on | 16:09 |
opendevreview | Stephen Finucane proposed openstack/openstacksdk master: image: Add missing image import options https://review.opendev.org/c/openstack/openstacksdk/+/864029 | 18:46 |
opendevreview | Stephen Finucane proposed openstack/openstacksdk master: image: Reformat proxy modules https://review.opendev.org/c/openstack/openstacksdk/+/867040 | 18:46 |
opendevreview | Stephen Finucane proposed openstack/openstacksdk master: image: Remove _base_proxy module https://review.opendev.org/c/openstack/openstacksdk/+/867041 | 18:46 |
opendevreview | Stephen Finucane proposed openstack/openstacksdk master: image: Remove unnecessary abstractions https://review.opendev.org/c/openstack/openstacksdk/+/867042 | 18:46 |
opendevreview | Stephen Finucane proposed openstack/openstacksdk master: image: Modify signatures of various image methods https://review.opendev.org/c/openstack/openstacksdk/+/867043 | 18:46 |
opendevreview | Stephen Finucane proposed openstack/openstacksdk master: image: Remove unsupported parameters from v1 proxy https://review.opendev.org/c/openstack/openstacksdk/+/867044 | 18:46 |
opendevreview | Stephen Finucane proposed openstack/openstacksdk master: image: Prevent passing conflicts args to stage_image https://review.opendev.org/c/openstack/openstacksdk/+/867045 | 18:46 |
Generated by irclog2html.py 2.17.3 by Marius Gedminas - find it at https://mg.pov.lt/irclog2html/!