| Posted | Nick | Remark | |
|---|---|---|---|
| #openstack-sdks - 2022-12-08 | |||
| 13:18:22 | 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:19:45 | 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:21:28 | 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:22:12 | stephenfin | oh, sorry, you're using SDK | |
| 13:22:35 | 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:23:07 | stephenfin | eest: https://docs.openstack.org/api-ref/compute/?expanded=create-server-detail#id11 | |
| 13:23:19 | stephenfin | Look for "block_device_mapping_v2 (Optional)" | |
| 13:24:22 | 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:40 | eest | found it, so it seems there is no way to pass in the "type" then? | |
| 13:24:53 | stephenfin | block_device_mapping_v2.volume_type (Optional) | |
| 13:25:05 | 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:28 | frickler | stephenfin: but it seems the sdk rejects that option? | |
| 13:26:42 | frickler | eest: can you share the code you are invoking so we can doublecheck? use paste.opendev.org | |
| 13:26:50 | eest | yes, hold on | |
| 13:27:06 | stephenfin | I'd be surprised if it did. That seems to be mapped correctly in openstack/compute/v2/server.py | |
| 13:28:51 | eest | https://paste.opendev.org/show/bztGgATTQcwKdam5UwVl/ | |
| 13:29:44 | eest | results in "Additional properties are not allowed (u'volume_type' was unexpected)" | |
| 13:30:07 | eest | it is possible i should not supply it in the dict? | |
| 13:31:25 | stephenfin | that's a nova error, not openstacksdk. You're using the wrong microversion. You need 2.67 or greater | |
| 13:31:50 | eest | hmm, is that something supplied to create_server() or something else? | |
| 13:33:55 | stephenfin | yes, you should be able to pass microversion to create_server | |
| 13:34:40 | 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:35:08 | stephenfin | openstack.enable_logging(debug=True) | |
| 13:41:11 | eest | i dont seem to be setting that header in the request | |
| 13:41:54 | frickler | eest: what version of openstacksdk are you using? | |
| 13:42:16 | frickler | also which version is your openstack cloud? | |
| 13:42:45 | eest | the RESP includes x-openstack-nova-api-version: 2.1 | |
| 13:45:58 | frickler | your example works just fine for me, with both 0.61.0 and 0.103.0 | |
| 13:49:50 | eest | openstacksdk 0.101.0 | |
| 13:50:05 | eest | hmm, ok... | |
| 13:52:12 | frickler | do you set up your cloud from clouds.yaml or by explicit auth parameters? | |
| 13:52:55 | eest | clouds.yaml | |
| 13:53:53 | eest | is there a way to request a specifc microversion in that? tried looking earlier and came up emtpy | |
| 13:58:21 | frickler | eest: set "compute_api_version: 2.90" | |
| 13:58:28 | eest | i am just doing: conn = openstack.connect(cloud="openstack") | |
| 13:58:33 | eest | so it is very opaque | |
| 13:58:37 | frickler | same here | |
| 13:59:00 | eest | will try to add your thing to the file | |
| 13:59:03 | frickler | if I set "compute_api_version: 2.1" I get the same error as you | |
| 13:59:24 | frickler | but without anything specified the sdk should use the latest available version | |
| 14:03:45 | 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:05:35 | 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:09:32 | eest | (of course, interesting that it strips the trailing zero, i have verifed it is not missing in the config) | |
| 14:14:37 | 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:16:41 | frickler | eest: 2.9 is too old, I wrote 2.90 | |
| 14:17:10 | frickler | ah, wait, you may need to quota that, so it becomes a string | |
| 14:18:27 | 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:31 | eest | one step closer! | |
| 14:19:51 | frickler | o.k., then 2.79 is the correct value for you, that's train. pretty old but still should work | |
| 14:22:04 | frickler | but you should not use conn.compute.find_image, use conn.image.find_image() | |
| 14:24:07 | eest | that code is based on teh create_server example at https://docs.openstack.org/openstacksdk/latest/user/guides/compute.html | |
| 14:24:23 | eest | so i get image and flavor via the compute call | |
| 14:24:48 | eest | is the example outdated? | |
| 14:28:56 | frickler | eest: it seems so, yes | |
| 14:30:48 | eest | roger, ill change it and see what happens | |
| 14:31:36 | eest | oh shit, i just might have worked | |
| 14:35:01 | 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:13 | eest | so it seems to do what it is supposed to | |
| 14:35:55 | eest | im curious if it is a separate issue that my openstacksdk did not automatically go for the later available compute api version | |
| 14:36:23 | 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:56 | eest | stephenfin: also, thanks for your review on https://review.opendev.org/c/openstack/openstacksdk/+/865667 | |
| 14:37:53 | stephenfin | nw | |
| 15:20:33 | eest | frickler: is the automatic api version detection described anywhere? it seems it is not happening for me at least | |
| 15:40:17 | frickler | eest: I'm not sure, I'll have to dig a bit tomorrow | |
| 15:43:50 | 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 | |
| 16:04:34 | 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:06:08 | 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:49 | 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:09:46 | 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:49 | stephenfin | *working on | |
| 18:46:21 | opendevreview | Stephen Finucane proposed openstack/openstacksdk master: image: Add missing image import options https://review.opendev.org/c/openstack/openstacksdk/+/864029 | |
| 18:46:22 | opendevreview | Stephen Finucane proposed openstack/openstacksdk master: image: Remove _base_proxy module https://review.opendev.org/c/openstack/openstacksdk/+/867041 | |
| 18:46:22 | opendevreview | Stephen Finucane proposed openstack/openstacksdk master: image: Reformat proxy modules https://review.opendev.org/c/openstack/openstacksdk/+/867040 | |
| 18:46:23 | opendevreview | Stephen Finucane proposed openstack/openstacksdk master: image: Modify signatures of various image methods https://review.opendev.org/c/openstack/openstacksdk/+/867043 | |
| 18:46:23 | opendevreview | Stephen Finucane proposed openstack/openstacksdk master: image: Remove unnecessary abstractions https://review.opendev.org/c/openstack/openstacksdk/+/867042 | |
| 18:46:24 | 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:24 | opendevreview | Stephen Finucane proposed openstack/openstacksdk master: image: Remove unsupported parameters from v1 proxy https://review.opendev.org/c/openstack/openstacksdk/+/867044 | |
| #openstack-sdks - 2022-12-09 | |||
| 08:03:08 | eest | stephenfin: my compute/v2/server.py states _max_microversion = '2.73', and if i set that version in clouds.yaml i see '-H "OpenStack-API-Version: compute 2.73"' in the debug out put, but if i comment it out there is no such header being sent and the request fails, not sure i am doing something wrong | |
| 08:06:49 | eest | i guess it is also interesting that even if that max version is present in the code i can also make it do -H "OpenStack-API-Version: compute 2.79" requests by setting that higher version in the config, so it does not seem to cap it either | |
| 08:15:04 | eest | i did note that calling conn.config.get_api_version("compute") returns None unless i set a value in clouds.yaml | |
| 08:19:05 | eest | frickler: would be intersting to hear what your code returns regarding the config when you are not setting the value | |
| 08:29:17 | frickler | the get_api_version returns None for me too when I don't have the override in clouds.yaml. and the debug log for the server create does also show the 2.73 being requested | |
| 08:30:32 | eest | interesting | |
| 08:30:52 | frickler | but I omitted some of the parameters you use, no user_data, key_name and scheduler_hints. maybe the issue is hiding somewhere in those | |
| 08:31:12 | eest | right, yes it is a lot of stuff im sending | |
| 08:31:40 | eest | ill try commenting them out | |
| 08:32:43 | opendevreview | Jakob Meng proposed openstack/ansible-collections-openstack master: Moved Octavia image upload and CirrOS image identification to Ansible https://review.opendev.org/c/openstack/ansible-collections-openstack/+/866795 | |
| 08:35:34 | eest | same error with https://paste.opendev.org/show/bGVtHfX0SdE3UECFa68R/ | |
| 08:39:40 | eest | other things i have in my config is auth_url, application_credential_id, application_credential_secret, region_name, interface, identity_api_version and auth_type | |
| 08:54:23 | opendevreview | Jakob Meng proposed openstack/ansible-collections-openstack master: [DNM] Refactored coe_cluster{,_template} modules https://review.opendev.org/c/openstack/ansible-collections-openstack/+/866796 | |
| 10:44:50 | stephenfin | eest: That's very strange. It works as intended for me https://paste.opendev.org/show/b6wyrVyFUB4Xs4PL09La/ | |
| 10:45:11 | stephenfin | eest: Can you create a venv, install openstacksdk from master, and try again? | |
| 10:45:28 | stephenfin | Also, are you certain there's no compute_api_version defined in clouds.yaml? | |
| 10:46:08 | stephenfin | I also changed '_max_microversion' in openstack/compute/v2/server.py to 2.76 and SDK started using that version once I restarted the interpreter | |
| 11:48:54 | opendevreview | PB proposed openstack/ansible-collections-openstack master: Bulk creation of OpenStack SG rules https://review.opendev.org/c/openstack/ansible-collections-openstack/+/863208 | |
| 12:24:10 | opendevreview | Jakob Meng proposed openstack/ansible-collections-openstack master: Allow all external commands in tox https://review.opendev.org/c/openstack/ansible-collections-openstack/+/867096 | |
| 12:25:54 | opendevreview | Jakob Meng proposed openstack/ansible-collections-openstack master: Added tests for router interface creation in a shared network https://review.opendev.org/c/openstack/ansible-collections-openstack/+/840661 | |
| 12:26:17 | opendevreview | Jakob Meng proposed openstack/ansible-collections-openstack master: Dropped obsolete module templates https://review.opendev.org/c/openstack/ansible-collections-openstack/+/866683 | |
| 12:26:39 | opendevreview | Jakob Meng proposed openstack/ansible-collections-openstack master: Moved Octavia image upload and CirrOS image identification to Ansible https://review.opendev.org/c/openstack/ansible-collections-openstack/+/866795 | |
| 12:27:05 | opendevreview | Jakob Meng proposed openstack/ansible-collections-openstack master: [DNM] Refactored coe_cluster{,_template} modules https://review.opendev.org/c/openstack/ansible-collections-openstack/+/866796 | |