)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"change_message_id":"15c4ec0d38395fd6aca5a9b50c388e463ec03983","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"357997c2_53551cde","updated":"2023-06-19 15:33:36.000000000","message":"recheck depends","commit_id":"266bc5ecbaccfa11d3ff26d5411b8fb2441859d3"},{"author":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"change_message_id":"547939b4b12da6cc569ba7ea221dd5c8afd5e726","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"f83a6d35_68452855","updated":"2023-06-26 07:28:14.000000000","message":"recheck dependency merged","commit_id":"67d8bb4da30a7fb7823814513783b0537cf5c4a6"},{"author":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"change_message_id":"9c442ce9e9791cd5048b82650907a5a1940be8b1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"3177eb7c_b0481526","updated":"2023-07-24 07:23:59.000000000","message":"recheck expired","commit_id":"238dbceaab8b03dd2f4d90fe8b75f4adf966f18a"},{"author":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"change_message_id":"88c227bace6ee09e443b657d151282b645485e2c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"d5e30748_8782cc7e","updated":"2023-06-26 18:22:31.000000000","message":"recheck timeout","commit_id":"238dbceaab8b03dd2f4d90fe8b75f4adf966f18a"},{"author":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"change_message_id":"bde547690ec05153e93d851bce44a9ef62dde366","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"c01584cf_8db24e1f","updated":"2023-06-27 08:12:37.000000000","message":"recheck unrelated","commit_id":"238dbceaab8b03dd2f4d90fe8b75f4adf966f18a"},{"author":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"change_message_id":"7921c39418a6af283a0544a53768cdbd736e403b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"86ff52d6_8869a62f","updated":"2023-06-29 13:51:34.000000000","message":"recheck unrelevant issues","commit_id":"238dbceaab8b03dd2f4d90fe8b75f4adf966f18a"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"0a8d650b000893eabd98cd1f490613c75397dbd3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"278d3202_f6852d51","updated":"2023-10-25 20:47:06.000000000","message":"One additional note: It would be good to add documentation on how to enable caching of tokens to both the openstacksdk and openstackclient documentation. Currently there are caching docs in openstacksdk but they don\u0027t really cover that if you install this library and add a config file it just magically works. They do say auth details can be cached to the keyring and that is about it.\n\nBut also having the docs in the client documentation is important for user discoverability. The only caching documentation I can find in the client is related to using the interactive session which works because the process is persisted.","commit_id":"f82d05c3cb2b607c5803b89708c3cbadf38943d8"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"0cefecf607255fbca63fcfc6c0b3a1a091a98a88","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"4bb4bb89_739a22f6","updated":"2023-10-25 20:32:34.000000000","message":"We need more results to say anything definitive but this does appear to save noticeable seconds of runtime.\n\nHere is a tempest-full-py3 run on the inmotion cloud that ran osc for 424 seconds: https://zuul.opendev.org/t/openstack/build/d2561b2704c745f3b4b7bf1a763b2bca/log/job-output.txt#23182\n\nHere is the tempest-full-py3 run from this change which ran osc for 298 seconds: https://zuul.opendev.org/t/openstack/build/2212578f571b4b039e3c63592a7011a7/log/job-output.txt#23040\n\nConsidering that caching tokens should be safe for a dev tool like this, and it is very unlikely to make things slower I think we should proceed with this change. I\u0027m holding off on a +2 because I think it is worth checking my inline comment first but otherwise I\u0027m ++ on this change.","commit_id":"f82d05c3cb2b607c5803b89708c3cbadf38943d8"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"46e3da7e9b8a953f57b9a8fb88ad371ae5891989","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"dbbba534_effcbf21","updated":"2023-10-30 17:56:55.000000000","message":"Looks like approximately 15k fewer keystone SELECT calls with this (down to 65k from 79k) as expected. I kinda want a +W from gmann or frickler since this is not new and definitely a change, although I suspect it should be an easy win.","commit_id":"67630d4c52aef5ddcb15cff4f3b6594d447e8992"},{"author":{"_account_id":13861,"name":"yatin","email":"ykarel@redhat.com","username":"yatinkarel"},"change_message_id":"b9aca08c7240f98fc4e649d1391181fe8d8f0e07","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"ccf980c2_6e094d8a","updated":"2023-11-07 12:50:36.000000000","message":"Seen a failure which seems related to this patch https://6c40da3fb44111d52eec-5a0483cb68bfeeccc28b5042e69d7a01.ssl.cf1.rackcdn.com/periodic/opendev.org/openstack/neutron/master/neutron-ovs-tempest-with-os-ken-master/c3aaeb6/job-output.txt , is this something known already?","commit_id":"67630d4c52aef5ddcb15cff4f3b6594d447e8992"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"310163ecec4b03cb11c174d9668b777a77a08073","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"1a62fb61_66efec5f","updated":"2023-10-30 18:41:21.000000000","message":"lgtm, this is good improvement. thanks","commit_id":"67630d4c52aef5ddcb15cff4f3b6594d447e8992"},{"author":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"change_message_id":"daba727da2b8e414ff608959b17a5cd667baac86","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"d26c847e_33856536","in_reply_to":"ccf980c2_6e094d8a","updated":"2023-11-07 12:58:40.000000000","message":"is it something constantly repeatable? \nActually it does not look like being related to that change (otherwise literally everything would be affected by now). OSC failed to create glance user while lot of other operations succeeded.","commit_id":"67630d4c52aef5ddcb15cff4f3b6594d447e8992"},{"author":{"_account_id":13861,"name":"yatin","email":"ykarel@redhat.com","username":"yatinkarel"},"change_message_id":"6c6c452077e97ccd0a4725a403d8943ec26cd25f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"57c03716_74fe60eb","in_reply_to":"d26c847e_33856536","updated":"2023-11-07 13:19:30.000000000","message":"Hi Artem, just reported https://bugs.launchpad.net/devstack/+bug/2042943 with more details, and all those points to this patch.","commit_id":"67630d4c52aef5ddcb15cff4f3b6594d447e8992"}],"tools/update_clouds_yaml.py":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"4c4b6ee846883dfd199e5cc1479a737615d459b6","unresolved":true,"context_lines":[{"line_number":71,"context_line":"        except IOError:"},{"line_number":72,"context_line":"            # The user doesn\u0027t have a clouds.yaml file."},{"line_number":73,"context_line":"            print(\"The user clouds.yaml file didn\u0027t exist.\")"},{"line_number":74,"context_line":"            self._config \u003d {\"cache\": {\"auth\": True}}"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    def _update_clouds(self):"},{"line_number":77,"context_line":"        self._config.setdefault(\u0027clouds\u0027, {})[self._cloud] \u003d self._cloud_data"}],"source_content_type":"text/x-python","patch_set":7,"id":"a11cd3dd_4cb6e01d","line":74,"updated":"2023-10-25 18:26:37.000000000","message":"Should we move this outside of the exception handler so that if there is a clouds.yaml already present but there is no caching set we\u0027ll add it? Something like:\n\n```\nexcept IOError:\n    # The user doesn\u0027t have a clouds.yaml file.\n    print(\"The user clouds.yaml file didn\u0027t exist.\")\nif cache not in self._config:\n    self._config[\"cache\"] \u003d {\"auth\": True}\n```\n\nThis is probably less important for CI testing but may be helpful for people that keep a devstack install around for a while and restack occasionaly.","commit_id":"f82d05c3cb2b607c5803b89708c3cbadf38943d8"},{"author":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"change_message_id":"deb079118d9fb587332d75daca301fcc736df517","unresolved":true,"context_lines":[{"line_number":71,"context_line":"        except IOError:"},{"line_number":72,"context_line":"            # The user doesn\u0027t have a clouds.yaml file."},{"line_number":73,"context_line":"            print(\"The user clouds.yaml file didn\u0027t exist.\")"},{"line_number":74,"context_line":"            self._config \u003d {\"cache\": {\"auth\": True}}"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    def _update_clouds(self):"},{"line_number":77,"context_line":"        self._config.setdefault(\u0027clouds\u0027, {})[self._cloud] \u003d self._cloud_data"}],"source_content_type":"text/x-python","patch_set":7,"id":"a8f817b9_027f7279","line":74,"in_reply_to":"473b5aa1_582fcfab","updated":"2023-10-26 07:07:44.000000000","message":"Added comments.\nNo, expiration is not required since SDK will reauth itself once the cached token does not work. There is anyway currently no mechanism of expiring stuff in keyring.\nHere we also only enable explicitly auth cache what has no influence on the API caching, so those are not affected. The only \"tricky\" thing about this cache is that token contain endpoints information. Once somebody modifies catalog new/modified endpoints will not be available unless cache is purged or token expires itself. But that is not a token cache issue, the same is applicable in any other mean of fetching the token and reusing it later.","commit_id":"f82d05c3cb2b607c5803b89708c3cbadf38943d8"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"0a8d650b000893eabd98cd1f490613c75397dbd3","unresolved":true,"context_lines":[{"line_number":71,"context_line":"        except IOError:"},{"line_number":72,"context_line":"            # The user doesn\u0027t have a clouds.yaml file."},{"line_number":73,"context_line":"            print(\"The user clouds.yaml file didn\u0027t exist.\")"},{"line_number":74,"context_line":"            self._config \u003d {\"cache\": {\"auth\": True}}"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    def _update_clouds(self):"},{"line_number":77,"context_line":"        self._config.setdefault(\u0027clouds\u0027, {})[self._cloud] \u003d self._cloud_data"}],"source_content_type":"text/x-python","patch_set":7,"id":"473b5aa1_582fcfab","line":74,"in_reply_to":"98018e4f_aa859b1c","updated":"2023-10-25 20:47:06.000000000","message":"Reading the openstacksdk documentation this should we also set expiration_time? Maybe to an 15 minutes? That should be plenty long for devstack jobs but short enough that users will refresh data often enough. Or is this unnecessary because the keyring expiry is different than the dogpile caching?\n\nAlso we aren\u0027t setting the cache class. The documentation says this defaults to `dogpile.cache.memory`. It appears that auth token caching is special and always uses the keyring. Should we separately enable on disk caching for other resources? I guess the risk there is we are creating all the flavors and images and networks and so on and we don\u0027t want to be caching stale data between osc runs. That might be worth a comment here to clarify why we only bother with on disk caching for auth tokens.","commit_id":"f82d05c3cb2b607c5803b89708c3cbadf38943d8"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"07272c3fadf18b20a984380971eec5cf43c74e72","unresolved":true,"context_lines":[{"line_number":71,"context_line":"        except IOError:"},{"line_number":72,"context_line":"            # The user doesn\u0027t have a clouds.yaml file."},{"line_number":73,"context_line":"            print(\"The user clouds.yaml file didn\u0027t exist.\")"},{"line_number":74,"context_line":"            self._config \u003d {\"cache\": {\"auth\": True}}"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    def _update_clouds(self):"},{"line_number":77,"context_line":"        self._config.setdefault(\u0027clouds\u0027, {})[self._cloud] \u003d self._cloud_data"}],"source_content_type":"text/x-python","patch_set":7,"id":"98018e4f_aa859b1c","line":74,"in_reply_to":"a11cd3dd_4cb6e01d","updated":"2023-10-25 18:28:14.000000000","message":"It should be:\n\n```\nif \"cache\" not in self._config:\n```","commit_id":"f82d05c3cb2b607c5803b89708c3cbadf38943d8"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"a58275b60c553bae575d694f15bd6f70135684b0","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        except IOError:"},{"line_number":72,"context_line":"            # The user doesn\u0027t have a clouds.yaml file."},{"line_number":73,"context_line":"            print(\"The user clouds.yaml file didn\u0027t exist.\")"},{"line_number":74,"context_line":"            self._config \u003d {\"cache\": {\"auth\": True}}"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    def _update_clouds(self):"},{"line_number":77,"context_line":"        self._config.setdefault(\u0027clouds\u0027, {})[self._cloud] \u003d self._cloud_data"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff197af2_bc92114d","line":74,"in_reply_to":"a8f817b9_027f7279","updated":"2023-10-26 13:28:15.000000000","message":"Ack","commit_id":"f82d05c3cb2b607c5803b89708c3cbadf38943d8"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"310163ecec4b03cb11c174d9668b777a77a08073","unresolved":true,"context_lines":[{"line_number":93,"context_line":"        os.makedirs(keyringrc_dir, exist_ok\u003dTrue)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        # Configure auth caching into the file on FS. We do not bother of any"},{"line_number":96,"context_line":"        # expiration since SDK is smart enough to reauth once the token becomes"},{"line_number":97,"context_line":"        # invalid."},{"line_number":98,"context_line":"        with open(self._keyringrc_path, \u0027w\u0027) as keyringrc_file:"},{"line_number":99,"context_line":"            keyringrc_file.write(\"[backend]\\n\")"},{"line_number":100,"context_line":"            keyringrc_file.write("}],"source_content_type":"text/x-python","patch_set":9,"id":"d490347a_3bdfd576","line":97,"range":{"start_line":96,"start_character":21,"end_line":97,"end_character":18},"updated":"2023-10-30 18:41:21.000000000","message":"++, this will make it easy and safe.","commit_id":"67630d4c52aef5ddcb15cff4f3b6594d447e8992"}]}
