)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":14394,"name":"Dale Smith","email":"dale@catalystcloud.nz","username":"dalees"},"change_message_id":"fc72707602b9a97cea88a63c3da9ab6799035fd7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"236f5dd4_e40be965","updated":"2025-06-09 04:58:39.000000000","message":"Needs test case and launchpad bug linked.","commit_id":"40e075122140caafe1a44569fc1694219f960914"},{"author":{"_account_id":35264,"name":"Alex Welsh","email":"alex@stackhpc.com","username":"alex-welsh"},"change_message_id":"14df7878db5baed1c4fcf38f3fb2abf640c51eaa","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"922d6cdf_151afb2d","updated":"2025-08-15 09:37:32.000000000","message":"This has started affecting some of our systems, I\u0027m happy to work on this to get it over the line as the patch appears to be stuck for a while","commit_id":"3b29de02ddd45df95b3c780e94a04adb1c2c2f13"},{"author":{"_account_id":35264,"name":"Alex Welsh","email":"alex@stackhpc.com","username":"alex-welsh"},"change_message_id":"4aaddc06700d4a2058b3f8c85e710a38320a7f3c","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"5eeb1457_d8ec5297","in_reply_to":"451ab802_d92fd17b","updated":"2025-08-22 14:54:06.000000000","message":"Cheers Dale, I\u0027ve pushed a new patchset with a link to a bug report I made. I found an existing test which looked like it was designed to catch this sort of thing but obviously missed the issue so tweaked it a bit.","commit_id":"3b29de02ddd45df95b3c780e94a04adb1c2c2f13"},{"author":{"_account_id":35264,"name":"Alex Welsh","email":"alex@stackhpc.com","username":"alex-welsh"},"change_message_id":"1dcc151b9be462e6f313e298885ceed65ab25d97","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"9513495d_238f8d47","in_reply_to":"5eeb1457_d8ec5297","updated":"2025-08-22 14:57:04.000000000","message":"Done","commit_id":"3b29de02ddd45df95b3c780e94a04adb1c2c2f13"},{"author":{"_account_id":14394,"name":"Dale Smith","email":"dale@catalystcloud.nz","username":"dalees"},"change_message_id":"6aab91b9dd2362c081b0877f58e6a8f0462d115e","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"451ab802_d92fd17b","in_reply_to":"922d6cdf_151afb2d","updated":"2025-08-17 22:23:03.000000000","message":"Thanks Alex, I\u0027ve not had time to get back to this but the change here does improve things. If you\u0027d like to progress this with test case(s) and a launchpad bug that would be great!\n\nFeel free to update this patchset, or create a new one.","commit_id":"3b29de02ddd45df95b3c780e94a04adb1c2c2f13"},{"author":{"_account_id":14394,"name":"Dale Smith","email":"dale@catalystcloud.nz","username":"dalees"},"change_message_id":"aa6bdb151dff2a795a6f23220dd7cb7fd52dbc0e","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":5,"id":"8d087396_02793bb7","updated":"2025-09-19 05:06:55.000000000","message":"I\u0027ve added a few other draft patchsets to start a bit of discussion around alternative ways to solve this same issue. I think this patchset is reasonable, it just brought up a bit of ambiguity into what Magnum allows and should allow in the cluster template id field.\n\nI don\u0027t think it\u0027s obvious long term if Magnum API should accept both uuid and name, but it is a regression in the client and we should fix that now.\n\n* Client performing CT uuid lookup: https://review.opendev.org/c/openstack/python-magnumclient/+/961768\n* Magnum API decorator to convert to uuid early: https://review.opendev.org/c/openstack/magnum/+/961769\n* Alternative to using `get_driver_for_cluster` function: https://review.opendev.org/c/openstack/magnum/+/961770","commit_id":"ba612cd6c0fa88fa2eafbdee372427332e0f6ca5"}],"magnum/drivers/common/driver.py":[{"author":{"_account_id":8064,"name":"Jake Yip","email":"jake.yip@ardc.edu.au","username":"jake"},"change_message_id":"b8df0405b6499a8e0afb4fc623accbfba0a193fc","unresolved":true,"context_lines":[{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    @classmethod"},{"line_number":161,"context_line":"    def get_driver_for_cluster(cls, context, cluster):"},{"line_number":162,"context_line":"        ct \u003d cluster_template.ClusterTemplate.get("},{"line_number":163,"context_line":"            context, cluster.cluster_template_id)"},{"line_number":164,"context_line":"        return cls.get_driver(ct.server_type, ct.cluster_distro, ct.coe,"},{"line_number":165,"context_line":"                              ct.driver)"}],"source_content_type":"text/x-python","patch_set":3,"id":"c49478c0_afefe035","line":162,"range":{"start_line":162,"start_character":0,"end_line":162,"end_character":2},"updated":"2025-09-02 06:31:23.000000000","message":"This line was last touched in 2016. I am concerned if this is the right place to patch it.\n\nIs there a change that introduced the bug? Why do you choose to patch it here? More info will be helpful, thanks!","commit_id":"3793b014c7f7a79fb54ed59eb33912dafa6e3b5f"},{"author":{"_account_id":35264,"name":"Alex Welsh","email":"alex@stackhpc.com","username":"alex-welsh"},"change_message_id":"92b47464af1b477e48da5f92379b26fe2fd1e6de","unresolved":false,"context_lines":[{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    @classmethod"},{"line_number":161,"context_line":"    def get_driver_for_cluster(cls, context, cluster):"},{"line_number":162,"context_line":"        ct \u003d cluster_template.ClusterTemplate.get("},{"line_number":163,"context_line":"            context, cluster.cluster_template_id)"},{"line_number":164,"context_line":"        return cls.get_driver(ct.server_type, ct.cluster_distro, ct.coe,"},{"line_number":165,"context_line":"                              ct.driver)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bd42c43f_7cc27634","line":162,"range":{"start_line":162,"start_character":0,"end_line":162,"end_character":2},"in_reply_to":"027f0ede_9a32c322","updated":"2025-09-10 09:00:01.000000000","message":"Done","commit_id":"3793b014c7f7a79fb54ed59eb33912dafa6e3b5f"},{"author":{"_account_id":14394,"name":"Dale Smith","email":"dale@catalystcloud.nz","username":"dalees"},"change_message_id":"368955463176a43b5150e6527cde030497ddae24","unresolved":false,"context_lines":[{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    @classmethod"},{"line_number":161,"context_line":"    def get_driver_for_cluster(cls, context, cluster):"},{"line_number":162,"context_line":"        ct \u003d cluster_template.ClusterTemplate.get("},{"line_number":163,"context_line":"            context, cluster.cluster_template_id)"},{"line_number":164,"context_line":"        return cls.get_driver(ct.server_type, ct.cluster_distro, ct.coe,"},{"line_number":165,"context_line":"                              ct.driver)"}],"source_content_type":"text/x-python","patch_set":3,"id":"76063c83_f94307b7","line":162,"range":{"start_line":162,"start_character":0,"end_line":162,"end_character":2},"in_reply_to":"027f0ede_9a32c322","updated":"2025-09-11 03:27:26.000000000","message":"Ouch, that\u0027s not a great change by me.\n\nThanks for the follow up, Alex.","commit_id":"3793b014c7f7a79fb54ed59eb33912dafa6e3b5f"},{"author":{"_account_id":35264,"name":"Alex Welsh","email":"alex@stackhpc.com","username":"alex-welsh"},"change_message_id":"6ea0498ea1df88ffae28d9f9aaadedae72c77203","unresolved":true,"context_lines":[{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    @classmethod"},{"line_number":161,"context_line":"    def get_driver_for_cluster(cls, context, cluster):"},{"line_number":162,"context_line":"        ct \u003d cluster_template.ClusterTemplate.get("},{"line_number":163,"context_line":"            context, cluster.cluster_template_id)"},{"line_number":164,"context_line":"        return cls.get_driver(ct.server_type, ct.cluster_distro, ct.coe,"},{"line_number":165,"context_line":"                              ct.driver)"}],"source_content_type":"text/x-python","patch_set":3,"id":"027f0ede_9a32c322","line":162,"range":{"start_line":162,"start_character":0,"end_line":162,"end_character":2},"in_reply_to":"c49478c0_afefe035","updated":"2025-09-05 15:59:47.000000000","message":"I\u0027ve done a bit of git archaeology\n\nIt was introduced in patchset 5 of Iafb2e1e5c983e09ee58a3a0180051ed096268ed1\n\nThis decorator was added: https://github.com/openstack/magnum/blob/c85b9554d3d3570cc6baa2d69fd1b058682df104/magnum/api/controllers/v1/cluster.py#L479\n\nThe decorator calls enforce_cluster_master_size_supported, which in turn calls get_driver_for_cluster. Before that change, the function just wasn\u0027t called.\n\nInterestingly in the same change, the test_create_cluster_with_cluster_template_name test was edited so it wouldn\u0027t fail.","commit_id":"3793b014c7f7a79fb54ed59eb33912dafa6e3b5f"}],"magnum/tests/unit/api/controllers/v1/test_cluster.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"a40c750779bd6bccfeb258633915e34b76b35fbf","unresolved":true,"context_lines":[{"line_number":720,"context_line":"        response \u003d self.post_json(\u0027/clusters\u0027, bdict)"},{"line_number":721,"context_line":"        self.assertEqual(\u0027application/json\u0027, response.content_type)"},{"line_number":722,"context_line":"        self.assertEqual(202, response.status_int)"},{"line_number":723,"context_line":"        self.assertTrue(uuidutils.is_uuid_like(response.json[\u0027uuid\u0027]))"},{"line_number":724,"context_line":""},{"line_number":725,"context_line":"    def test_create_cluster_with_zero_node_count_fail(self):"},{"line_number":726,"context_line":"        bdict \u003d apiutils.cluster_post_data()"}],"source_content_type":"text/x-python","patch_set":3,"id":"b2094940_db373f6d","line":723,"updated":"2025-08-22 14:47:13.000000000","message":"I think that is the cluster uuid? should we not check the cluster template template uuid?","commit_id":"3793b014c7f7a79fb54ed59eb33912dafa6e3b5f"},{"author":{"_account_id":35264,"name":"Alex Welsh","email":"alex@stackhpc.com","username":"alex-welsh"},"change_message_id":"8d74f4e8edabe4989c2d867b0d3b97be93a37656","unresolved":false,"context_lines":[{"line_number":720,"context_line":"        response \u003d self.post_json(\u0027/clusters\u0027, bdict)"},{"line_number":721,"context_line":"        self.assertEqual(\u0027application/json\u0027, response.content_type)"},{"line_number":722,"context_line":"        self.assertEqual(202, response.status_int)"},{"line_number":723,"context_line":"        self.assertTrue(uuidutils.is_uuid_like(response.json[\u0027uuid\u0027]))"},{"line_number":724,"context_line":""},{"line_number":725,"context_line":"    def test_create_cluster_with_zero_node_count_fail(self):"},{"line_number":726,"context_line":"        bdict \u003d apiutils.cluster_post_data()"}],"source_content_type":"text/x-python","patch_set":3,"id":"6a859c17_ff84c293","line":723,"in_reply_to":"6f1674da_dabf8245","updated":"2025-09-10 08:46:41.000000000","message":"Decided it was more confusing than helpful, so removed","commit_id":"3793b014c7f7a79fb54ed59eb33912dafa6e3b5f"},{"author":{"_account_id":35264,"name":"Alex Welsh","email":"alex@stackhpc.com","username":"alex-welsh"},"change_message_id":"4aaddc06700d4a2058b3f8c85e710a38320a7f3c","unresolved":true,"context_lines":[{"line_number":720,"context_line":"        response \u003d self.post_json(\u0027/clusters\u0027, bdict)"},{"line_number":721,"context_line":"        self.assertEqual(\u0027application/json\u0027, response.content_type)"},{"line_number":722,"context_line":"        self.assertEqual(202, response.status_int)"},{"line_number":723,"context_line":"        self.assertTrue(uuidutils.is_uuid_like(response.json[\u0027uuid\u0027]))"},{"line_number":724,"context_line":""},{"line_number":725,"context_line":"    def test_create_cluster_with_zero_node_count_fail(self):"},{"line_number":726,"context_line":"        bdict \u003d apiutils.cluster_post_data()"}],"source_content_type":"text/x-python","patch_set":3,"id":"6f1674da_dabf8245","line":723,"in_reply_to":"b2094940_db373f6d","updated":"2025-08-22 14:54:06.000000000","message":"You\u0027re totally right. I looked into checking the template uuid, but the response is pretty sparse. It only contains some metadata (e.g. response code, api versions, etc) and the cluster uuid.\n\nI couldn\u0027t see any way of getting the cluster details using that uuid so I just slapped in the uuid format check. It\u0027s not really relevant, so I can remove it if you want","commit_id":"3793b014c7f7a79fb54ed59eb33912dafa6e3b5f"},{"author":{"_account_id":14394,"name":"Dale Smith","email":"dale@catalystcloud.nz","username":"dalees"},"change_message_id":"368955463176a43b5150e6527cde030497ddae24","unresolved":true,"context_lines":[{"line_number":714,"context_line":"        self.assertEqual(400, response.status_int)"},{"line_number":715,"context_line":"        self.assertTrue(response.json[\u0027errors\u0027])"},{"line_number":716,"context_line":""},{"line_number":717,"context_line":"    def test_create_cluster_with_cluster_template_name(self):"},{"line_number":718,"context_line":"        modelname \u003d self.cluster_template.name"},{"line_number":719,"context_line":"        bdict \u003d apiutils.cluster_post_data(name\u003dmodelname)"},{"line_number":720,"context_line":"        response \u003d self.post_json(\u0027/clusters\u0027, bdict, expect_errors\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":4,"id":"78d9c4e8_48f48123","side":"PARENT","line":717,"updated":"2025-09-11 03:27:26.000000000","message":"Could this test use a clearer name? It posts using a name value as the `cluster_template_id`. It might be intentional but it read like a mistake to me and I didn\u0027t look closely enough at this.\n\nPerhaps `test_create_cluster_with_cluster_template_name_as_id`?","commit_id":"cbeb6a89aa4cc06548fe15b36a041200fd49821c"},{"author":{"_account_id":35264,"name":"Alex Welsh","email":"alex@stackhpc.com","username":"alex-welsh"},"change_message_id":"340454cca45f1001e195c1b140bdeacbe5fc16dd","unresolved":false,"context_lines":[{"line_number":714,"context_line":"        self.assertEqual(400, response.status_int)"},{"line_number":715,"context_line":"        self.assertTrue(response.json[\u0027errors\u0027])"},{"line_number":716,"context_line":""},{"line_number":717,"context_line":"    def test_create_cluster_with_cluster_template_name(self):"},{"line_number":718,"context_line":"        modelname \u003d self.cluster_template.name"},{"line_number":719,"context_line":"        bdict \u003d apiutils.cluster_post_data(name\u003dmodelname)"},{"line_number":720,"context_line":"        response \u003d self.post_json(\u0027/clusters\u0027, bdict, expect_errors\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa055859_340945db","side":"PARENT","line":717,"in_reply_to":"78d9c4e8_48f48123","updated":"2025-09-11 09:06:32.000000000","message":"Sounds like the ambiguous name was what caused this in the first place, so clarifying it is a good move","commit_id":"cbeb6a89aa4cc06548fe15b36a041200fd49821c"}]}
