)]}'
{"nova/tests/unit/api/openstack/compute/test_access_ips.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"93e98a61f9739470431014ae97009e0e4849b709","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        self.stub_out(\u0027nova.objects.instance.Instance.save\u0027, fake_save)"},{"line_number":45,"context_line":"        self.stub_out(\u0027nova.compute.api.API.rebuild\u0027, fake_rebuild)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        self.req \u003d fakes.HTTPRequest.blank(\u0027\u0027)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def _set_up_controller(self):"},{"line_number":50,"context_line":"        self.controller \u003d servers_v21.ServersController()"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_e2dbd81d","side":"PARENT","line":47,"updated":"2019-12-11 14:31:12.000000000","message":"This doesn\u0027t really seem to have anything to do with neutron?","commit_id":"39bcf6f02db0dc99fe41d97e94fe2f6543a440e4"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"a2519028391d8cf6537ff7f36811710453446d2d","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        self.stub_out(\u0027nova.objects.instance.Instance.save\u0027, fake_save)"},{"line_number":45,"context_line":"        self.stub_out(\u0027nova.compute.api.API.rebuild\u0027, fake_rebuild)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        self.req \u003d fakes.HTTPRequest.blank(\u0027\u0027)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def _set_up_controller(self):"},{"line_number":50,"context_line":"        self.controller \u003d servers_v21.ServersController()"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_3d2b517c","side":"PARENT","line":47,"in_reply_to":"3fa7e38b_e2dbd81d","updated":"2019-12-11 14:57:37.000000000","message":"It sort of does. Without this change, I get the following:\n\n\t2019-12-11 14:50:20,316 ERROR [nova.api.openstack.wsgi] Unexpected exception in API method\n\tTraceback (most recent call last):\n\t  File \"/home/sfinucan/Development/openstack/nova/nova/api/openstack/wsgi.py\", line 671, in wrapped\n\t    return f(*args, **kwargs)\n\t  File \"/home/sfinucan/Development/openstack/nova/nova/api/validation/__init__.py\", line 110, in wrapper\n\t    return func(*args, **kwargs)\n\t  File \"/home/sfinucan/Development/openstack/nova/nova/api/validation/__init__.py\", line 110, in wrapper\n\t    return func(*args, **kwargs)\n\t  File \"/home/sfinucan/Development/openstack/nova/nova/api/validation/__init__.py\", line 110, in wrapper\n\t    return func(*args, **kwargs)\n\t  [Previous line repeated 9 more times]\n\t  File \"/home/sfinucan/Development/openstack/nova/nova/api/openstack/compute/servers.py\", line 778, in create\n\t    server \u003d self._view_builder.create(req, instances[0])\n\t  File \"/home/sfinucan/Development/openstack/nova/nova/api/openstack/compute/views/servers.py\", line 93, in create\n\t    create_request\u003dTrue)\n\t  File \"/home/sfinucan/Development/openstack/nova/nova/api/openstack/compute/views/servers.py\", line 681, in _add_security_grps\n\t    req_obj \u003d jsonutils.loads(req.body)\n\t  File \"/home/sfinucan/Development/openstack/nova/.tox/py36/lib/python3.6/site-packages/oslo_serialization/jsonutils.py\", line 264, in loads\n\t    return json.loads(encodeutils.safe_decode(s, encoding), **kwargs)\n\t  File \"/usr/lib64/python3.6/json/__init__.py\", line 354, in loads\n\t    return _default_decoder.decode(s)\n\t  File \"/usr/lib64/python3.6/json/decoder.py\", line 339, in decode\n\t    obj, end \u003d self.raw_decode(s, idx\u003d_w(s, 0).end())\n\t  File \"/usr/lib64/python3.6/json/decoder.py\", line 357, in raw_decode\n\t    raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n\tjson.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n\nWhich seems to be happening because the controller expects the the request body to be populated with the server details when using the neutron path. I considered changing the code but it seemed wrong to change code to satisfy tests","commit_id":"39bcf6f02db0dc99fe41d97e94fe2f6543a440e4"}],"nova/tests/unit/api/openstack/compute/test_availability_zone.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"93e98a61f9739470431014ae97009e0e4849b709","unresolved":false,"context_lines":[{"line_number":96,"context_line":"            self.controller.host_api, \u0027service_get_all\u0027,"},{"line_number":97,"context_line":"            side_effect\u003dfake_service_get_all).start()"},{"line_number":98,"context_line":"        self.addCleanup(self.mock_service_get_all.stop)"},{"line_number":99,"context_line":"        self.req \u003d fakes.HTTPRequest.blank(\u0027\u0027)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    def test_filtered_availability_zones(self):"},{"line_number":102,"context_line":"        zones \u003d [\u0027zone1\u0027, \u0027internal\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_42bbccbc","side":"PARENT","line":99,"updated":"2019-12-11 14:31:12.000000000","message":"I don\u0027t really understand what the changes in this test have to do with the neutron stuff?","commit_id":"39bcf6f02db0dc99fe41d97e94fe2f6543a440e4"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"a2519028391d8cf6537ff7f36811710453446d2d","unresolved":false,"context_lines":[{"line_number":96,"context_line":"            self.controller.host_api, \u0027service_get_all\u0027,"},{"line_number":97,"context_line":"            side_effect\u003dfake_service_get_all).start()"},{"line_number":98,"context_line":"        self.addCleanup(self.mock_service_get_all.stop)"},{"line_number":99,"context_line":"        self.req \u003d fakes.HTTPRequest.blank(\u0027\u0027)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    def test_filtered_availability_zones(self):"},{"line_number":102,"context_line":"        zones \u003d [\u0027zone1\u0027, \u0027internal\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_dd4b1d5c","side":"PARENT","line":99,"in_reply_to":"3fa7e38b_42bbccbc","updated":"2019-12-11 14:57:37.000000000","message":"See previous file","commit_id":"39bcf6f02db0dc99fe41d97e94fe2f6543a440e4"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"93e98a61f9739470431014ae97009e0e4849b709","unresolved":false,"context_lines":[{"line_number":211,"context_line":"        fake.stub_out_image_service(self)"},{"line_number":212,"context_line":"        self.stub_out(\u0027nova.compute.api.API.create_db_entry_for_new_instance\u0027,"},{"line_number":213,"context_line":"                      create_db_entry_for_new_instance)"},{"line_number":214,"context_line":"        self.req \u003d fakes.HTTPRequest.blank(\u0027\u0027)"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"    def _set_up_controller(self):"},{"line_number":217,"context_line":"        self.controller \u003d servers_v21.ServersController()"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_c2e49ce1","side":"PARENT","line":214,"updated":"2019-12-11 14:31:12.000000000","message":"same","commit_id":"39bcf6f02db0dc99fe41d97e94fe2f6543a440e4"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"a2519028391d8cf6537ff7f36811710453446d2d","unresolved":false,"context_lines":[{"line_number":211,"context_line":"        fake.stub_out_image_service(self)"},{"line_number":212,"context_line":"        self.stub_out(\u0027nova.compute.api.API.create_db_entry_for_new_instance\u0027,"},{"line_number":213,"context_line":"                      create_db_entry_for_new_instance)"},{"line_number":214,"context_line":"        self.req \u003d fakes.HTTPRequest.blank(\u0027\u0027)"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"    def _set_up_controller(self):"},{"line_number":217,"context_line":"        self.controller \u003d servers_v21.ServersController()"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_9d512510","side":"PARENT","line":214,"in_reply_to":"3fa7e38b_c2e49ce1","updated":"2019-12-11 14:57:37.000000000","message":"ditto","commit_id":"39bcf6f02db0dc99fe41d97e94fe2f6543a440e4"}],"nova/tests/unit/api/openstack/compute/test_floating_ips.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"93e98a61f9739470431014ae97009e0e4849b709","unresolved":false,"context_lines":[{"line_number":198,"context_line":"                                                        expected_exc)"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"class FloatingIpTestV21(test.TestCase):"},{"line_number":202,"context_line":"    floating_ip \u003d \"10.10.10.10\""},{"line_number":203,"context_line":"    floating_ip_2 \u003d \"10.10.10.11\""},{"line_number":204,"context_line":"    floating_ips \u003d fips_v21"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_e2043880","side":"PARENT","line":201,"updated":"2019-12-11 14:31:12.000000000","message":"OK this is gone because it\u0027s nova-net specific.","commit_id":"39bcf6f02db0dc99fe41d97e94fe2f6543a440e4"}],"nova/tests/unit/api/openstack/compute/test_serversV21.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"93e98a61f9739470431014ae97009e0e4849b709","unresolved":false,"context_lines":[{"line_number":336,"context_line":"        res \u003d self.controller._get_requested_networks(requested_networks)"},{"line_number":337,"context_line":"        self.assertEqual([(None, None, port, None)], res.as_tuples())"},{"line_number":338,"context_line":""},{"line_number":339,"context_line":"    def test_requested_networks_with_duplicate_networks_nova_net(self):"},{"line_number":340,"context_line":"        # duplicate networks are allowed only for nova neutron v2.0"},{"line_number":341,"context_line":"        self.flags(use_neutron\u003dFalse)"},{"line_number":342,"context_line":"        network \u003d \u0027aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_42e98ca8","side":"PARENT","line":339,"range":{"start_line":339,"start_character":8,"end_line":339,"end_character":64},"updated":"2019-12-11 14:31:12.000000000","message":"When removing this we should also remove the code it\u0027s testing, correct? Just so we don\u0027t forget.\n\nhttps://github.com/openstack/nova/blob/4c8f3990c61948af21aa580646122340eb3873a0/nova/api/openstack/compute/servers.py#L397\n\nIf that\u0027s done later in the series then don\u0027t worry about it here. Even if it\u0027s not yet done later in the series, it could be a follow up.","commit_id":"39bcf6f02db0dc99fe41d97e94fe2f6543a440e4"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"a2519028391d8cf6537ff7f36811710453446d2d","unresolved":false,"context_lines":[{"line_number":336,"context_line":"        res \u003d self.controller._get_requested_networks(requested_networks)"},{"line_number":337,"context_line":"        self.assertEqual([(None, None, port, None)], res.as_tuples())"},{"line_number":338,"context_line":""},{"line_number":339,"context_line":"    def test_requested_networks_with_duplicate_networks_nova_net(self):"},{"line_number":340,"context_line":"        # duplicate networks are allowed only for nova neutron v2.0"},{"line_number":341,"context_line":"        self.flags(use_neutron\u003dFalse)"},{"line_number":342,"context_line":"        network \u003d \u0027aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_7d3a29c4","side":"PARENT","line":339,"range":{"start_line":339,"start_character":8,"end_line":339,"end_character":64},"in_reply_to":"3fa7e38b_42e98ca8","updated":"2019-12-11 14:57:37.000000000","message":"Yup, I\u0027ve definitely killed this later (I removed the is_neutron helper)","commit_id":"39bcf6f02db0dc99fe41d97e94fe2f6543a440e4"}],"nova/tests/unit/api/openstack/fakes.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"93e98a61f9739470431014ae97009e0e4849b709","unresolved":false,"context_lines":[{"line_number":218,"context_line":"def stub_out_secgroup_api(test, security_groups\u003dNone):"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"    class FakeSecurityGroupAPI(security_group_base.SecurityGroupBase):"},{"line_number":221,"context_line":"        \"\"\"This handles both nova-network and neutron style security group APIs"},{"line_number":222,"context_line":"        \"\"\""},{"line_number":223,"context_line":"        def get_instances_security_groups_bindings("},{"line_number":224,"context_line":"                self, context, servers, detailed\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_021634a8","line":221,"updated":"2019-12-11 14:31:12.000000000","message":"Shouldn\u0027t this be updated? Or just removed?","commit_id":"3d4a468c389eb3142220094412da2bafe87fcf78"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"93e98a61f9739470431014ae97009e0e4849b709","unresolved":false,"context_lines":[{"line_number":222,"context_line":"        \"\"\""},{"line_number":223,"context_line":"        def get_instances_security_groups_bindings("},{"line_number":224,"context_line":"                self, context, servers, detailed\u003dFalse):"},{"line_number":225,"context_line":"            # This method shouldn\u0027t be called unless using neutron."},{"line_number":226,"context_line":"            if not CONF.use_neutron:"},{"line_number":227,"context_line":"                raise Exception(\u0027Invalid security group API call for nova-net\u0027)"},{"line_number":228,"context_line":"            instances_security_group_bindings \u003d {}"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_8221c4fe","line":225,"range":{"start_line":225,"start_character":12,"end_line":225,"end_character":67},"updated":"2019-12-11 14:31:12.000000000","message":"Heh, yeah, the docstring above says nova-net is totally cool bro but not this.","commit_id":"3d4a468c389eb3142220094412da2bafe87fcf78"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"a2519028391d8cf6537ff7f36811710453446d2d","unresolved":false,"context_lines":[{"line_number":222,"context_line":"        \"\"\""},{"line_number":223,"context_line":"        def get_instances_security_groups_bindings("},{"line_number":224,"context_line":"                self, context, servers, detailed\u003dFalse):"},{"line_number":225,"context_line":"            # This method shouldn\u0027t be called unless using neutron."},{"line_number":226,"context_line":"            if not CONF.use_neutron:"},{"line_number":227,"context_line":"                raise Exception(\u0027Invalid security group API call for nova-net\u0027)"},{"line_number":228,"context_line":"            instances_security_group_bindings \u003d {}"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_fd85b959","line":225,"range":{"start_line":225,"start_character":12,"end_line":225,"end_character":67},"in_reply_to":"3fa7e38b_8221c4fe","updated":"2019-12-11 14:57:37.000000000","message":"Killed in 33862e1ac95fe519570e4cf8165db2d3d9ff6a5e","commit_id":"3d4a468c389eb3142220094412da2bafe87fcf78"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3741bde06dfb49d113bea19c6ca527c5ee8f62ed","unresolved":false,"context_lines":[{"line_number":222,"context_line":"        \"\"\""},{"line_number":223,"context_line":"        def get_instances_security_groups_bindings("},{"line_number":224,"context_line":"                self, context, servers, detailed\u003dFalse):"},{"line_number":225,"context_line":"            # This method shouldn\u0027t be called unless using neutron."},{"line_number":226,"context_line":"            if not CONF.use_neutron:"},{"line_number":227,"context_line":"                raise Exception(\u0027Invalid security group API call for nova-net\u0027)"},{"line_number":228,"context_line":"            instances_security_group_bindings \u003d {}"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_5df72dd5","line":225,"range":{"start_line":225,"start_character":12,"end_line":225,"end_character":67},"in_reply_to":"3fa7e38b_fd85b959","updated":"2019-12-11 15:05:18.000000000","message":"I think you mean:\n\nhttps://review.opendev.org/#/c/696510/6/nova/tests/unit/api/openstack/fakes.py","commit_id":"3d4a468c389eb3142220094412da2bafe87fcf78"}]}
