)]}'
{"nova/api/openstack/compute/baremetal_nodes.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f85fa255c88b8b0fe41f655d3b7161628fefe2f1","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    \"\"\"return an Ironic client.\"\"\""},{"line_number":51,"context_line":"    # TODO(NobodyCam): Fix insecure setting"},{"line_number":52,"context_line":"    # NOTE(efried): This would all be replaced by ksa adapter options if we"},{"line_number":53,"context_line":"    # cared about the baremetal API anymore."},{"line_number":54,"context_line":"    kwargs \u003d {\u0027os_username\u0027: CONF.ironic.admin_username,"},{"line_number":55,"context_line":"              \u0027os_password\u0027: CONF.ironic.admin_password,"},{"line_number":56,"context_line":"              \u0027os_auth_url\u0027: CONF.ironic.admin_url,"}],"source_content_type":"text/x-python","patch_set":1,"id":"5fc1f717_63ce1864","line":53,"range":{"start_line":53,"start_character":0,"end_line":53,"end_character":44},"updated":"2019-03-15 12:39:39.000000000","message":"I don\u0027t think I understand this sentence..","commit_id":"832052601d915ab5f48fcdf6fb17a14b4bed1c15"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"28aa1149c17cdfbafefce95dc673723df8eb3379","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    \"\"\"return an Ironic client.\"\"\""},{"line_number":51,"context_line":"    # TODO(NobodyCam): Fix insecure setting"},{"line_number":52,"context_line":"    # NOTE(efried): This would all be replaced by ksa adapter options if we"},{"line_number":53,"context_line":"    # cared about the baremetal API anymore."},{"line_number":54,"context_line":"    kwargs \u003d {\u0027os_username\u0027: CONF.ironic.admin_username,"},{"line_number":55,"context_line":"              \u0027os_password\u0027: CONF.ironic.admin_password,"},{"line_number":56,"context_line":"              \u0027os_auth_url\u0027: CONF.ironic.admin_url,"}],"source_content_type":"text/x-python","patch_set":1,"id":"5fc1f717_e962e7ad","line":53,"range":{"start_line":53,"start_character":0,"end_line":53,"end_character":44},"in_reply_to":"5fc1f717_63ce1864","updated":"2019-03-15 13:50:41.000000000","message":"Sorry, that *would* sound bad to an ironicer :)\n\nI mean that the nova shim to the baremetal API is deprecated [1]. Will reword.\n\n[1] https://developer.openstack.org/api-ref/compute/#bare-metal-nodes-os-baremetal-nodes-deprecated","commit_id":"832052601d915ab5f48fcdf6fb17a14b4bed1c15"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"e11b781bef684f8b0dc8d58f32158a8dc75c9509","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    \"\"\"return an Ironic client.\"\"\""},{"line_number":51,"context_line":"    # TODO(NobodyCam): Fix insecure setting"},{"line_number":52,"context_line":"    # NOTE(efried): This would all be replaced by ksa adapter options if we"},{"line_number":53,"context_line":"    # cared about the baremetal API anymore."},{"line_number":54,"context_line":"    kwargs \u003d {\u0027os_username\u0027: CONF.ironic.admin_username,"},{"line_number":55,"context_line":"              \u0027os_password\u0027: CONF.ironic.admin_password,"},{"line_number":56,"context_line":"              \u0027os_auth_url\u0027: CONF.ironic.admin_url,"}],"source_content_type":"text/x-python","patch_set":1,"id":"5fc1f717_cc3cd9e2","line":53,"range":{"start_line":53,"start_character":0,"end_line":53,"end_character":44},"in_reply_to":"5fc1f717_e962e7ad","updated":"2019-04-26 17:04:45.000000000","message":"Done","commit_id":"832052601d915ab5f48fcdf6fb17a14b4bed1c15"}],"nova/tests/unit/virt/ironic/test_client_wrapper.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f85fa255c88b8b0fe41f655d3b7161628fefe2f1","unresolved":false,"context_lines":[{"line_number":144,"context_line":"        mock_session.return_value \u003d \u0027session\u0027"},{"line_number":145,"context_line":"        endpoint \u003d \u0027https://baremetal.example.com/endpoint\u0027"},{"line_number":146,"context_line":"        self.flags(api_endpoint\u003dendpoint, group\u003d\u0027ironic\u0027)"},{"line_number":147,"context_line":"        self.flags(valid_interfaces\u003d\u0027admin\u0027, group\u003d\u0027ironic\u0027)"},{"line_number":148,"context_line":"        ironicclient \u003d client_wrapper.IronicClientWrapper()"},{"line_number":149,"context_line":"        # dummy call to have _get_client() called"},{"line_number":150,"context_line":"        ironicclient.call(\"node.list\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"5fc1f717_43bf5ca9","side":"PARENT","line":147,"range":{"start_line":147,"start_character":0,"end_line":147,"end_character":60},"updated":"2019-03-15 12:39:39.000000000","message":"Do we have coverage for valid_interfaces somewhere else? Also I don\u0027t quite get this test, api_endpoint should make valid_interfaces redundant..","commit_id":"9b2a7f9e7c9c24ad5b698f78681a1de1593b4a53"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"e11b781bef684f8b0dc8d58f32158a8dc75c9509","unresolved":false,"context_lines":[{"line_number":144,"context_line":"        mock_session.return_value \u003d \u0027session\u0027"},{"line_number":145,"context_line":"        endpoint \u003d \u0027https://baremetal.example.com/endpoint\u0027"},{"line_number":146,"context_line":"        self.flags(api_endpoint\u003dendpoint, group\u003d\u0027ironic\u0027)"},{"line_number":147,"context_line":"        self.flags(valid_interfaces\u003d\u0027admin\u0027, group\u003d\u0027ironic\u0027)"},{"line_number":148,"context_line":"        ironicclient \u003d client_wrapper.IronicClientWrapper()"},{"line_number":149,"context_line":"        # dummy call to have _get_client() called"},{"line_number":150,"context_line":"        ironicclient.call(\"node.list\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"5fc1f717_2c2d5da7","side":"PARENT","line":147,"range":{"start_line":147,"start_character":0,"end_line":147,"end_character":60},"in_reply_to":"5fc1f717_29c8ef71","updated":"2019-04-26 17:04:45.000000000","message":"Done","commit_id":"9b2a7f9e7c9c24ad5b698f78681a1de1593b4a53"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"28aa1149c17cdfbafefce95dc673723df8eb3379","unresolved":false,"context_lines":[{"line_number":144,"context_line":"        mock_session.return_value \u003d \u0027session\u0027"},{"line_number":145,"context_line":"        endpoint \u003d \u0027https://baremetal.example.com/endpoint\u0027"},{"line_number":146,"context_line":"        self.flags(api_endpoint\u003dendpoint, group\u003d\u0027ironic\u0027)"},{"line_number":147,"context_line":"        self.flags(valid_interfaces\u003d\u0027admin\u0027, group\u003d\u0027ironic\u0027)"},{"line_number":148,"context_line":"        ironicclient \u003d client_wrapper.IronicClientWrapper()"},{"line_number":149,"context_line":"        # dummy call to have _get_client() called"},{"line_number":150,"context_line":"        ironicclient.call(\"node.list\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"5fc1f717_29c8ef71","side":"PARENT","line":147,"range":{"start_line":147,"start_character":0,"end_line":147,"end_character":60},"in_reply_to":"5fc1f717_43bf5ca9","updated":"2019-03-15 13:50:41.000000000","message":"\u003e Do we have coverage for valid_interfaces somewhere else?\n\nHum, sort of [1]. But looking at that makes me think we should keep this test with s/api_endpoint/endpoint_override/. Good catch.\n\n \u003e Also I\n \u003e don\u0027t quite get this test, api_endpoint should make\n \u003e valid_interfaces redundant..\n\nYeah, you would think so, wouldn\u0027t you? But see [1] and the associated bug. TLDR it turns out that there was an ironicclient change that started using endpoint_filter for version negotiation even if an explicit endpoint was passed in. (It was in fact the process of reviewing that and related changes that kicked me into starting down the path of removing ironicclient from nova [2].)\n\n[1] https://review.openstack.org/#/c/640879/\n[2] https://review.openstack.org/#/c/642899/ (which you\u0027ve already seen)","commit_id":"9b2a7f9e7c9c24ad5b698f78681a1de1593b4a53"}],"nova/virt/ironic/client_wrapper.py":[{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"1e2530c3627bc0726ddff36b3d2de80610ed4e6b","unresolved":false,"context_lines":[{"line_number":113,"context_line":"                ksa_auth\u003dauth_plugin, ksa_session\u003dsess,"},{"line_number":114,"context_line":"                min_version\u003dIRONIC_API_VERSION,"},{"line_number":115,"context_line":"                max_version\u003d(IRONIC_API_VERSION[0], ks_disc.LATEST))"},{"line_number":116,"context_line":"            ironic_url \u003d ksa_adap.get_endpoint()"},{"line_number":117,"context_line":"        except exception.ServiceNotFound:"},{"line_number":118,"context_line":"            # NOTE(efried): No reason to believe service catalog lookup"},{"line_number":119,"context_line":"            # won\u0027t also fail in ironic client init, but this way will"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fce034c_a9ef311c","line":116,"updated":"2019-04-19 04:26:29.000000000","message":"This currently always return None when a region_name is set.","commit_id":"bca885350b6aff943f885d53d257005cd6ac5669"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"e11b781bef684f8b0dc8d58f32158a8dc75c9509","unresolved":false,"context_lines":[{"line_number":113,"context_line":"                ksa_auth\u003dauth_plugin, ksa_session\u003dsess,"},{"line_number":114,"context_line":"                min_version\u003dIRONIC_API_VERSION,"},{"line_number":115,"context_line":"                max_version\u003d(IRONIC_API_VERSION[0], ks_disc.LATEST))"},{"line_number":116,"context_line":"            ironic_url \u003d ksa_adap.get_endpoint()"},{"line_number":117,"context_line":"        except exception.ServiceNotFound:"},{"line_number":118,"context_line":"            # NOTE(efried): No reason to believe service catalog lookup"},{"line_number":119,"context_line":"            # won\u0027t also fail in ironic client init, but this way will"}],"source_content_type":"text/x-python","patch_set":3,"id":"ffb9cba7_5c95483f","line":116,"in_reply_to":"3fce034c_a9ef311c","updated":"2019-04-26 17:04:45.000000000","message":"For posterity: This was bug 1825583, addressed by I34a3f8d4a496217eb01790e2d124111625bf5f85 and I31fa1c6fb0b224fbb02f9ebf68abc6a3728e9389","commit_id":"bca885350b6aff943f885d53d257005cd6ac5669"}]}
