)]}'
{"nova/api/openstack/common.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"77c9347bbc5bb1aced84068a9015e18bbbfabca5","unresolved":false,"context_lines":[{"line_number":543,"context_line":""},{"line_number":544,"context_line":"    NOTE: At the moment there is no such microversion that supports port"},{"line_number":545,"context_line":"    resource request. This function is added as a preparation for that"},{"line_number":546,"context_line":"    microversion."},{"line_number":547,"context_line":""},{"line_number":548,"context_line":"    :param req: The incoming API request"},{"line_number":549,"context_line":"    :returns: True if the requested API microversion is high enough for"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_908b6e1d","line":546,"updated":"2019-01-29 14:05:20.000000000","message":"✔","commit_id":"735c2181dc450195454cf4dc62a814ff1679abda"}],"nova/compute/api.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a3990b8c2f59fa64019fad2ef3f2fcc0507ea5c2","unresolved":false,"context_lines":[{"line_number":814,"context_line":"            context, requested_networks, pci_request_info)"},{"line_number":815,"context_line":"        network_metadata, port_resource_requests \u003d result"},{"line_number":816,"context_line":""},{"line_number":817,"context_line":"        if port_resource_requests and not supports_port_resource_request:"},{"line_number":818,"context_line":"            raise exception.ServerCreateWithQoSPortNotSupported()"},{"line_number":819,"context_line":""},{"line_number":820,"context_line":"        base_options \u003d {"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_7aa91b22","line":817,"updated":"2019-01-28 16:15:12.000000000","message":"nit: I feel like we should have a comment here, but maybe it\u0027s already obvious. Maybe something like, \"Creating servers with ports that have resource requests, like QoS minimum bandwidth policies, is only supported in a requested minimum microversion.\"","commit_id":"735c2181dc450195454cf4dc62a814ff1679abda"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d4060c231b5aa014e6433b7568a2f6fbabd56c62","unresolved":false,"context_lines":[{"line_number":814,"context_line":"            context, requested_networks, pci_request_info)"},{"line_number":815,"context_line":"        network_metadata, port_resource_requests \u003d result"},{"line_number":816,"context_line":""},{"line_number":817,"context_line":"        if port_resource_requests and not supports_port_resource_request:"},{"line_number":818,"context_line":"            raise exception.ServerCreateWithQoSPortNotSupported()"},{"line_number":819,"context_line":""},{"line_number":820,"context_line":"        base_options \u003d {"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_819c8ac0","line":817,"in_reply_to":"9fdfeff1_7aa91b22","updated":"2019-01-29 16:20:53.000000000","message":"Done in a fup","commit_id":"735c2181dc450195454cf4dc62a814ff1679abda"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"77c9347bbc5bb1aced84068a9015e18bbbfabca5","unresolved":false,"context_lines":[{"line_number":814,"context_line":"            context, requested_networks, pci_request_info)"},{"line_number":815,"context_line":"        network_metadata, port_resource_requests \u003d result"},{"line_number":816,"context_line":""},{"line_number":817,"context_line":"        if port_resource_requests and not supports_port_resource_request:"},{"line_number":818,"context_line":"            raise exception.ServerCreateWithQoSPortNotSupported()"},{"line_number":819,"context_line":""},{"line_number":820,"context_line":"        base_options \u003d {"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_30a16295","line":817,"in_reply_to":"9fdfeff1_7aa91b22","updated":"2019-01-29 14:05:20.000000000","message":"my personal opinion is that such a comment isn\u0027t needed here. the code is pretty obvious I think.","commit_id":"735c2181dc450195454cf4dc62a814ff1679abda"}],"nova/exception.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a3990b8c2f59fa64019fad2ef3f2fcc0507ea5c2","unresolved":false,"context_lines":[{"line_number":2153,"context_line":"                \"instance %(instance_uuid)s. (Network ID is %(network_id)s)\")"},{"line_number":2154,"context_line":""},{"line_number":2155,"context_line":""},{"line_number":2156,"context_line":"class ServerCreateWithQoSPortNotSupported(Invalid):"},{"line_number":2157,"context_line":"    msg_fmt \u003d _(\"Creating server with port having QoS policy is not \""},{"line_number":2158,"context_line":"                \"supported.\")"},{"line_number":2159,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_a53d28c5","line":2156,"range":{"start_line":2156,"start_character":6,"end_line":2156,"end_character":41},"updated":"2019-01-28 16:15:12.000000000","message":"Once you have a microversion nailed down, you might want to re-word this to be more like MultiattachNotSupportedOldMicroversion so it\u0027s more clear that creating a server with a port with resource requests is not supported because the microversion used is not high enough instead of some other \"not supported\" situation, like nova-computes not being upgraded yet, or policy checks failing, something like that.","commit_id":"735c2181dc450195454cf4dc62a814ff1679abda"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"77c9347bbc5bb1aced84068a9015e18bbbfabca5","unresolved":false,"context_lines":[{"line_number":2153,"context_line":"                \"instance %(instance_uuid)s. (Network ID is %(network_id)s)\")"},{"line_number":2154,"context_line":""},{"line_number":2155,"context_line":""},{"line_number":2156,"context_line":"class ServerCreateWithQoSPortNotSupported(Invalid):"},{"line_number":2157,"context_line":"    msg_fmt \u003d _(\"Creating server with port having QoS policy is not \""},{"line_number":2158,"context_line":"                \"supported.\")"},{"line_number":2159,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_d0c25634","line":2156,"range":{"start_line":2156,"start_character":6,"end_line":2156,"end_character":41},"in_reply_to":"9fdfeff1_a53d28c5","updated":"2019-01-29 14:05:20.000000000","message":"++","commit_id":"735c2181dc450195454cf4dc62a814ff1679abda"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d4060c231b5aa014e6433b7568a2f6fbabd56c62","unresolved":false,"context_lines":[{"line_number":2153,"context_line":"                \"instance %(instance_uuid)s. (Network ID is %(network_id)s)\")"},{"line_number":2154,"context_line":""},{"line_number":2155,"context_line":""},{"line_number":2156,"context_line":"class ServerCreateWithQoSPortNotSupported(Invalid):"},{"line_number":2157,"context_line":"    msg_fmt \u003d _(\"Creating server with port having QoS policy is not \""},{"line_number":2158,"context_line":"                \"supported.\")"},{"line_number":2159,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_81ea4a0c","line":2156,"range":{"start_line":2156,"start_character":6,"end_line":2156,"end_character":41},"in_reply_to":"9fdfeff1_a53d28c5","updated":"2019-01-29 16:20:53.000000000","message":"Done in a fup","commit_id":"735c2181dc450195454cf4dc62a814ff1679abda"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a3990b8c2f59fa64019fad2ef3f2fcc0507ea5c2","unresolved":false,"context_lines":[{"line_number":2154,"context_line":""},{"line_number":2155,"context_line":""},{"line_number":2156,"context_line":"class ServerCreateWithQoSPortNotSupported(Invalid):"},{"line_number":2157,"context_line":"    msg_fmt \u003d _(\"Creating server with port having QoS policy is not \""},{"line_number":2158,"context_line":"                \"supported.\")"},{"line_number":2159,"context_line":""},{"line_number":2160,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_858ca47f","line":2157,"range":{"start_line":2157,"start_character":50,"end_line":2157,"end_character":53},"updated":"2019-01-28 16:15:12.000000000","message":"nit: QoS is the only type of port that can have resource requests today, but I imagine there will be future use cases for ports have resource requests for things besides QoS, so this might be a bit too specific. You could maybe make it generic and yet still useful by re-wording as: \"Creating servers with ports having resource requests, like a port with a QoS minimum bandwidth policy, is not supported with this microversion.\"\n\nAnd then could leave a TODO to mention the specific minimum microversion in the error when you add that microversion.","commit_id":"735c2181dc450195454cf4dc62a814ff1679abda"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d4060c231b5aa014e6433b7568a2f6fbabd56c62","unresolved":false,"context_lines":[{"line_number":2154,"context_line":""},{"line_number":2155,"context_line":""},{"line_number":2156,"context_line":"class ServerCreateWithQoSPortNotSupported(Invalid):"},{"line_number":2157,"context_line":"    msg_fmt \u003d _(\"Creating server with port having QoS policy is not \""},{"line_number":2158,"context_line":"                \"supported.\")"},{"line_number":2159,"context_line":""},{"line_number":2160,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_a1ef4e1c","line":2157,"range":{"start_line":2157,"start_character":50,"end_line":2157,"end_character":53},"in_reply_to":"9fdfeff1_858ca47f","updated":"2019-01-29 16:20:53.000000000","message":"Done in a fup","commit_id":"735c2181dc450195454cf4dc62a814ff1679abda"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"77c9347bbc5bb1aced84068a9015e18bbbfabca5","unresolved":false,"context_lines":[{"line_number":2154,"context_line":""},{"line_number":2155,"context_line":""},{"line_number":2156,"context_line":"class ServerCreateWithQoSPortNotSupported(Invalid):"},{"line_number":2157,"context_line":"    msg_fmt \u003d _(\"Creating server with port having QoS policy is not \""},{"line_number":2158,"context_line":"                \"supported.\")"},{"line_number":2159,"context_line":""},{"line_number":2160,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_30cf2257","line":2157,"range":{"start_line":2157,"start_character":50,"end_line":2157,"end_character":53},"in_reply_to":"9fdfeff1_858ca47f","updated":"2019-01-29 14:05:20.000000000","message":"Good suggestion here.","commit_id":"735c2181dc450195454cf4dc62a814ff1679abda"}],"nova/tests/functional/test_servers.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a3990b8c2f59fa64019fad2ef3f2fcc0507ea5c2","unresolved":false,"context_lines":[{"line_number":5444,"context_line":"                      server[\u0027fault\u0027][\u0027message\u0027])"},{"line_number":5445,"context_line":""},{"line_number":5446,"context_line":"    def test_create_server_with_port_resource_request_old_microversion(self):"},{"line_number":5447,"context_line":"        server_req \u003d self._build_minimal_create_server_request("},{"line_number":5448,"context_line":"            self.api, \u0027bandwidth-aware-server\u0027,"},{"line_number":5449,"context_line":"            image_uuid\u003d\u002776fa36fc-c930-4bf3-8c8a-ea2a2420deb6\u0027,"},{"line_number":5450,"context_line":"            flavor_id\u003dself.flavor[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_e5549000","line":5447,"range":{"start_line":5447,"start_character":26,"end_line":5447,"end_character":62},"updated":"2019-01-28 16:15:12.000000000","message":"Why not use _create_server?","commit_id":"735c2181dc450195454cf4dc62a814ff1679abda"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d4060c231b5aa014e6433b7568a2f6fbabd56c62","unresolved":false,"context_lines":[{"line_number":5444,"context_line":"                      server[\u0027fault\u0027][\u0027message\u0027])"},{"line_number":5445,"context_line":""},{"line_number":5446,"context_line":"    def test_create_server_with_port_resource_request_old_microversion(self):"},{"line_number":5447,"context_line":"        server_req \u003d self._build_minimal_create_server_request("},{"line_number":5448,"context_line":"            self.api, \u0027bandwidth-aware-server\u0027,"},{"line_number":5449,"context_line":"            image_uuid\u003d\u002776fa36fc-c930-4bf3-8c8a-ea2a2420deb6\u0027,"},{"line_number":5450,"context_line":"            flavor_id\u003dself.flavor[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_55a8988a","line":5447,"range":{"start_line":5447,"start_character":26,"end_line":5447,"end_character":62},"in_reply_to":"9fdfeff1_e5549000","updated":"2019-01-29 16:20:53.000000000","message":"Done in a fup","commit_id":"735c2181dc450195454cf4dc62a814ff1679abda"}],"nova/tests/unit/compute/test_compute_api.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a3990b8c2f59fa64019fad2ef3f2fcc0507ea5c2","unresolved":false,"context_lines":[{"line_number":6427,"context_line":""},{"line_number":6428,"context_line":"    @mock.patch(\u0027nova.network.neutronv2.api.API.validate_networks\u0027)"},{"line_number":6429,"context_line":"    @mock.patch(\u0027nova.network.neutronv2.api.API.create_resource_requests\u0027)"},{"line_number":6430,"context_line":"    def test_validate_and_build_base_options_checks_resource_request("},{"line_number":6431,"context_line":"            self, mock_neutron_create_resource_requests,"},{"line_number":6432,"context_line":"            mock_validate_network):"},{"line_number":6433,"context_line":"        \"\"\"Checks that validate_and_build_base_options raises if the request"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_a56be8b4","line":6430,"updated":"2019-01-28 16:15:12.000000000","message":"I\u0027m not sure we really need the unit test when we have the functional test, or vice-versa.","commit_id":"735c2181dc450195454cf4dc62a814ff1679abda"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d4060c231b5aa014e6433b7568a2f6fbabd56c62","unresolved":false,"context_lines":[{"line_number":6427,"context_line":""},{"line_number":6428,"context_line":"    @mock.patch(\u0027nova.network.neutronv2.api.API.validate_networks\u0027)"},{"line_number":6429,"context_line":"    @mock.patch(\u0027nova.network.neutronv2.api.API.create_resource_requests\u0027)"},{"line_number":6430,"context_line":"    def test_validate_and_build_base_options_checks_resource_request("},{"line_number":6431,"context_line":"            self, mock_neutron_create_resource_requests,"},{"line_number":6432,"context_line":"            mock_validate_network):"},{"line_number":6433,"context_line":"        \"\"\"Checks that validate_and_build_base_options raises if the request"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_bab9ac15","line":6430,"in_reply_to":"9fdfeff1_902cce02","updated":"2019-01-29 16:20:53.000000000","message":"I think such functional test(s) will be good to show the difference between the old and new api microversions.","commit_id":"735c2181dc450195454cf4dc62a814ff1679abda"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"77c9347bbc5bb1aced84068a9015e18bbbfabca5","unresolved":false,"context_lines":[{"line_number":6427,"context_line":""},{"line_number":6428,"context_line":"    @mock.patch(\u0027nova.network.neutronv2.api.API.validate_networks\u0027)"},{"line_number":6429,"context_line":"    @mock.patch(\u0027nova.network.neutronv2.api.API.create_resource_requests\u0027)"},{"line_number":6430,"context_line":"    def test_validate_and_build_base_options_checks_resource_request("},{"line_number":6431,"context_line":"            self, mock_neutron_create_resource_requests,"},{"line_number":6432,"context_line":"            mock_validate_network):"},{"line_number":6433,"context_line":"        \"\"\"Checks that validate_and_build_base_options raises if the request"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_902cce02","line":6430,"in_reply_to":"9fdfeff1_a56be8b4","updated":"2019-01-29 14:05:20.000000000","message":"Agreed. The unit test should be sufficient IMHO. Functional tests for exception conditions are not particularly useful, IMHO.","commit_id":"735c2181dc450195454cf4dc62a814ff1679abda"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d4060c231b5aa014e6433b7568a2f6fbabd56c62","unresolved":false,"context_lines":[{"line_number":6427,"context_line":""},{"line_number":6428,"context_line":"    @mock.patch(\u0027nova.network.neutronv2.api.API.validate_networks\u0027)"},{"line_number":6429,"context_line":"    @mock.patch(\u0027nova.network.neutronv2.api.API.create_resource_requests\u0027)"},{"line_number":6430,"context_line":"    def test_validate_and_build_base_options_checks_resource_request("},{"line_number":6431,"context_line":"            self, mock_neutron_create_resource_requests,"},{"line_number":6432,"context_line":"            mock_validate_network):"},{"line_number":6433,"context_line":"        \"\"\"Checks that validate_and_build_base_options raises if the request"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_d59b2870","line":6430,"in_reply_to":"9fdfeff1_a56be8b4","updated":"2019-01-29 16:20:53.000000000","message":"OK then I will drop this as the functional also tests the translation of the exception to HTTP error code.\n\nDone in a fup.","commit_id":"735c2181dc450195454cf4dc62a814ff1679abda"}]}
