)]}'
{"releasenotes/notes/openstack-launcher-server-id-6f0d0fd690c33765.yaml":[{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"0db1b8bf6933ccd00b6e6841fc59920d757ca0ef","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    OpenStack nodes provided by zuul-launcher now include the server ID in"},{"line_number":5,"context_line":"    the ``zuul_node.node_properties.server_id`` Ansible inventory variable."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"8a3567df_05ac902b","line":2,"updated":"2026-05-13 14:09:14.000000000","message":"Probably better as \"features\".","commit_id":"74cfb953ff38856560f9b1aa936950389f77efad"},{"author":{"_account_id":34899,"name":"Joseph Kostreva","email":"joseph.kostreva@garmin.com","username":"kostreva"},"change_message_id":"d0da61b4104bb073b37bd5337749b51b176ce074","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    OpenStack nodes provided by zuul-launcher now include the server ID in"},{"line_number":5,"context_line":"    the ``zuul_node.node_properties.server_id`` Ansible inventory variable."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"13daf8ca_45e97ece","line":2,"in_reply_to":"8a3567df_05ac902b","updated":"2026-05-13 14:20:34.000000000","message":"Done","commit_id":"74cfb953ff38856560f9b1aa936950389f77efad"}],"tests/unit/test_openstack_driver.py":[{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"0db1b8bf6933ccd00b6e6841fc59920d757ca0ef","unresolved":true,"context_lines":[{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        self.assertEqual(\u0027server-id\u0027, node.openstack_server_id)"},{"line_number":124,"context_line":"        self.assertEqual(\u0027server-id\u0027,"},{"line_number":125,"context_line":"                         node.getNodeData()[\u0027node_properties\u0027][\u0027server_id\u0027])"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"class TestOpenstackDriver(BaseOpenstackDriverTest, BaseCloudDriverTest):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1242d22a_78b55288","line":125,"updated":"2026-05-13 14:09:14.000000000","message":"We generally prefer an end-to-end functional test.  Fortunately, the test below handles that and covers everything this test does, so you can just delete this test class.","commit_id":"74cfb953ff38856560f9b1aa936950389f77efad"},{"author":{"_account_id":34899,"name":"Joseph Kostreva","email":"joseph.kostreva@garmin.com","username":"kostreva"},"change_message_id":"d0da61b4104bb073b37bd5337749b51b176ce074","unresolved":false,"context_lines":[{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        self.assertEqual(\u0027server-id\u0027, node.openstack_server_id)"},{"line_number":124,"context_line":"        self.assertEqual(\u0027server-id\u0027,"},{"line_number":125,"context_line":"                         node.getNodeData()[\u0027node_properties\u0027][\u0027server_id\u0027])"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"class TestOpenstackDriver(BaseOpenstackDriverTest, BaseCloudDriverTest):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9b1fdfc1_67abdc04","line":125,"in_reply_to":"1242d22a_78b55288","updated":"2026-05-13 14:20:34.000000000","message":"Done","commit_id":"74cfb953ff38856560f9b1aa936950389f77efad"}]}
