)]}'
{"nova/api/openstack/compute/servers.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"77ab90a9abdd6f5e57f845a80879683f11a8a78f","unresolved":false,"context_lines":[{"line_number":699,"context_line":"                exception.ImageNUMATopologyCPUsUnassigned,"},{"line_number":700,"context_line":"                exception.ImageNUMATopologyMemoryOutOfRange,"},{"line_number":701,"context_line":"                exception.InstanceGroupNotFound,"},{"line_number":702,"context_line":"                exception.UnableToAutoAllocateNetwork) as error:"},{"line_number":703,"context_line":"            raise exc.HTTPBadRequest(explanation\u003derror.format_message())"},{"line_number":704,"context_line":"        except (exception.PortInUse,"},{"line_number":705,"context_line":"                exception.InstanceExists,"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_05002b00","line":702,"range":{"start_line":702,"start_character":26,"end_line":702,"end_character":53},"updated":"2016-04-27 20:06:43.000000000","message":"This will be an HTTPConflict.","commit_id":"b689091413749b4576b020e814f52594231eed40"}],"nova/exception.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"77ab90a9abdd6f5e57f845a80879683f11a8a78f","unresolved":false,"context_lines":[{"line_number":811,"context_line":"                \"network ID(s) to select which one(s) to connect to.\")"},{"line_number":812,"context_line":""},{"line_number":813,"context_line":""},{"line_number":814,"context_line":"class UnableToAutoAllocateNetwork(Invalid):"},{"line_number":815,"context_line":"    msg_fmt \u003d _(\u0027Unable to automatically allocate a network for project \u0027"},{"line_number":816,"context_line":"                \u0027%(project_id)s\u0027)"},{"line_number":817,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_22143d4b","line":814,"range":{"start_line":814,"start_character":34,"end_line":814,"end_character":41},"updated":"2016-04-27 20:06:43.000000000","message":"This needs to be Conflict (409).","commit_id":"b689091413749b4576b020e814f52594231eed40"}],"nova/network/neutronv2/api.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d95ae40066cdb4d98e6580aba221d1c61b32d76f","unresolved":false,"context_lines":[{"line_number":1146,"context_line":"                LOG.debug(\u0027No networks are available for project %s; checking \u0027"},{"line_number":1147,"context_line":"                          \u0027to see if we can automatically allocate a network.\u0027,"},{"line_number":1148,"context_line":"                          context.project_id)"},{"line_number":1149,"context_line":"                if not self._can_auto_allocate_network(neutron):"},{"line_number":1150,"context_line":"                    raise exception.UnableToAutoAllocateNetwork("},{"line_number":1151,"context_line":"                        project_id\u003dcontext.project_id)"},{"line_number":1152,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"7aa08908_ca17b252","line":1149,"range":{"start_line":1149,"start_character":28,"end_line":1149,"end_character":54},"updated":"2016-06-10 17:56:57.000000000","message":"oops, this takes 2 args, not 1.","commit_id":"556b039e75a157f6bafe6b5e9e5cdf84ef4cb2fe"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a5a8c4e8644c287ef2d0ddd82dc8f1370b84936a","unresolved":false,"context_lines":[{"line_number":673,"context_line":"                                     neutron\u003dNone):"},{"line_number":674,"context_line":"        if refresh_cache:"},{"line_number":675,"context_line":"            self._refresh_neutron_extensions_cache(context, neutron\u003dneutron)"},{"line_number":676,"context_line":"        return constants.AUTO_ALLOCATE_TOPO_EXT in self.extensions"},{"line_number":677,"context_line":""},{"line_number":678,"context_line":"    @staticmethod"},{"line_number":679,"context_line":"    def _populate_neutron_binding_profile(instance, pci_request_id,"}],"source_content_type":"text/x-python","patch_set":15,"id":"7aa08908_4056f3d2","line":676,"updated":"2016-06-11 01:12:47.000000000","message":"The tempest test failed on this because it says the extension wasn\u0027t available:\n\nhttp://logs.openstack.org/01/327901/1/check/gate-tempest-dsvm-neutron-full/bd3f3c4/logs/screen-n-api.txt.gz#_2016-06-11_00_06_11_219\n\nWhich might be because this is the first thing to check the extensions, so we need to check if self.extensions is empty and refresh it if so.","commit_id":"f3d5a9dab755f068dc2e71969b289b17b5be1196"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"715953d3dac30470a1bf2d72717e4a29f2b6f65b","unresolved":false,"context_lines":[{"line_number":1127,"context_line":"                requested_networks)"},{"line_number":1128,"context_line":""},{"line_number":1129,"context_line":"        ports_needed_per_instance \u003d 0"},{"line_number":1130,"context_line":"        if not requested_networks or requested_networks.auto_allocate:"},{"line_number":1131,"context_line":"            nets \u003d self._get_available_networks(context, context.project_id,"},{"line_number":1132,"context_line":"                                                neutron\u003dneutron)"},{"line_number":1133,"context_line":"            if len(nets) \u003e 1:"}],"source_content_type":"text/x-python","patch_set":16,"id":"7aa08908_44e219d6","line":1130,"range":{"start_line":1130,"start_character":11,"end_line":1130,"end_character":33},"updated":"2016-06-14 14:53:12.000000000","message":"This won\u0027t work right? An instance of objects.NetworkRequestList will always be truthy, unless I\u0027m missing something.","commit_id":"b1fdc382691d9433df83945ba91a1f646876f4a2"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"82237b5ba10e0ced2e176b350d24cc2f759f199a","unresolved":false,"context_lines":[{"line_number":1127,"context_line":"                requested_networks)"},{"line_number":1128,"context_line":""},{"line_number":1129,"context_line":"        ports_needed_per_instance \u003d 0"},{"line_number":1130,"context_line":"        if not requested_networks or requested_networks.auto_allocate:"},{"line_number":1131,"context_line":"            nets \u003d self._get_available_networks(context, context.project_id,"},{"line_number":1132,"context_line":"                                                neutron\u003dneutron)"},{"line_number":1133,"context_line":"            if len(nets) \u003e 1:"}],"source_content_type":"text/x-python","patch_set":16,"id":"7aa08908_dafa6474","line":1130,"range":{"start_line":1130,"start_character":11,"end_line":1130,"end_character":33},"in_reply_to":"7aa08908_1ae6ac43","updated":"2016-06-14 15:15:20.000000000","message":"Okay, I thought you had changed this because you moved the requested_networks objectification above this. Checking for \"is None\" would be preferable, IMHO, because otherwise stray things that are Truthy will cause us to fail below in weird ways.","commit_id":"b1fdc382691d9433df83945ba91a1f646876f4a2"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7230dae52adccdeb7d844939922e521bb500bd09","unresolved":false,"context_lines":[{"line_number":1127,"context_line":"                requested_networks)"},{"line_number":1128,"context_line":""},{"line_number":1129,"context_line":"        ports_needed_per_instance \u003d 0"},{"line_number":1130,"context_line":"        if not requested_networks or requested_networks.auto_allocate:"},{"line_number":1131,"context_line":"            nets \u003d self._get_available_networks(context, context.project_id,"},{"line_number":1132,"context_line":"                                                neutron\u003dneutron)"},{"line_number":1133,"context_line":"            if len(nets) \u003e 1:"}],"source_content_type":"text/x-python","patch_set":16,"id":"7aa08908_1ae6ac43","line":1130,"range":{"start_line":1130,"start_character":11,"end_line":1130,"end_character":33},"in_reply_to":"7aa08908_44e219d6","updated":"2016-06-14 15:11:10.000000000","message":"None won\u0027t be.","commit_id":"b1fdc382691d9433df83945ba91a1f646876f4a2"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6160ab8bdd36a9753f10dc182b83527c903867a9","unresolved":false,"context_lines":[{"line_number":1127,"context_line":"                requested_networks)"},{"line_number":1128,"context_line":""},{"line_number":1129,"context_line":"        ports_needed_per_instance \u003d 0"},{"line_number":1130,"context_line":"        if not requested_networks or requested_networks.auto_allocate:"},{"line_number":1131,"context_line":"            nets \u003d self._get_available_networks(context, context.project_id,"},{"line_number":1132,"context_line":"                                                neutron\u003dneutron)"},{"line_number":1133,"context_line":"            if len(nets) \u003e 1:"}],"source_content_type":"text/x-python","patch_set":16,"id":"7aa08908_ef183520","line":1130,"range":{"start_line":1130,"start_character":11,"end_line":1130,"end_character":33},"in_reply_to":"7aa08908_b06fb790","updated":"2016-06-14 17:48:26.000000000","message":"I think the reason I did it this way was because before it was checking if requested_networks is None or an empty list. If it\u0027s an empty list, the check above won\u0027t catch it and convert it to a NetworkRequestList object, and calling [].auto_allocate will fail.","commit_id":"b1fdc382691d9433df83945ba91a1f646876f4a2"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c425fcc2a7b60369b9c44ce652bec66a1d13b2ba","unresolved":false,"context_lines":[{"line_number":1127,"context_line":"                requested_networks)"},{"line_number":1128,"context_line":""},{"line_number":1129,"context_line":"        ports_needed_per_instance \u003d 0"},{"line_number":1130,"context_line":"        if not requested_networks or requested_networks.auto_allocate:"},{"line_number":1131,"context_line":"            nets \u003d self._get_available_networks(context, context.project_id,"},{"line_number":1132,"context_line":"                                                neutron\u003dneutron)"},{"line_number":1133,"context_line":"            if len(nets) \u003e 1:"}],"source_content_type":"text/x-python","patch_set":16,"id":"7aa08908_b06fb790","line":1130,"range":{"start_line":1130,"start_character":11,"end_line":1130,"end_character":33},"in_reply_to":"7aa08908_dafa6474","updated":"2016-06-14 15:34:02.000000000","message":"Yeah I\u0027ll change back to is None. At this point I honestly don\u0027t remember my thought process when I wrote this.","commit_id":"b1fdc382691d9433df83945ba91a1f646876f4a2"}],"nova/tests/unit/network/test_neutronv2.py":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"529c542746d6e58e236014d3831ce65fdd78f6ed","unresolved":false,"context_lines":[{"line_number":4632,"context_line":"        self.api \u003d neutronapi.API()"},{"line_number":4633,"context_line":"        self.context \u003d context.RequestContext(uuids.user_id, uuids.project_id)"},{"line_number":4634,"context_line":""},{"line_number":4635,"context_line":"    def test__has_auto_allocate_extension_false(self):"},{"line_number":4636,"context_line":"        # Tests that the extension is not available."},{"line_number":4637,"context_line":"        self.api.extensions \u003d []"},{"line_number":4638,"context_line":"        with mock.patch.object(self.api,"}],"source_content_type":"text/x-python","patch_set":10,"id":"7aa08908_2b57a303","line":4635,"updated":"2016-06-05 21:22:46.000000000","message":"Why did you add two underscore, it\u0027s something we do not usually do","commit_id":"528923daf800c682b91be454fc91b770361bc23f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d43749f9a89b10a1afd78b332a4dbef5d6847eb1","unresolved":false,"context_lines":[{"line_number":4632,"context_line":"        self.api \u003d neutronapi.API()"},{"line_number":4633,"context_line":"        self.context \u003d context.RequestContext(uuids.user_id, uuids.project_id)"},{"line_number":4634,"context_line":""},{"line_number":4635,"context_line":"    def test__has_auto_allocate_extension_false(self):"},{"line_number":4636,"context_line":"        # Tests that the extension is not available."},{"line_number":4637,"context_line":"        self.api.extensions \u003d []"},{"line_number":4638,"context_line":"        with mock.patch.object(self.api,"}],"source_content_type":"text/x-python","patch_set":10,"id":"7aa08908_d4a5c204","line":4635,"in_reply_to":"7aa08908_2b57a303","updated":"2016-06-06 13:35:27.000000000","message":"Because the method being tested is private and starts with an underscore. I\u0027ve seen this done this way before. I\u0027m not married to it though so if others don\u0027t like it I can change it.","commit_id":"528923daf800c682b91be454fc91b770361bc23f"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"006be5357b8db3120df59a84627f20420345547d","unresolved":false,"context_lines":[{"line_number":4632,"context_line":"        self.api \u003d neutronapi.API()"},{"line_number":4633,"context_line":"        self.context \u003d context.RequestContext(uuids.user_id, uuids.project_id)"},{"line_number":4634,"context_line":""},{"line_number":4635,"context_line":"    def test__has_auto_allocate_extension_false(self):"},{"line_number":4636,"context_line":"        # Tests that the extension is not available."},{"line_number":4637,"context_line":"        self.api.extensions \u003d []"},{"line_number":4638,"context_line":"        with mock.patch.object(self.api,"}],"source_content_type":"text/x-python","patch_set":10,"id":"7aa08908_8c45e3b4","line":4635,"in_reply_to":"7aa08908_d4a5c204","updated":"2016-06-06 16:55:43.000000000","message":"I did not notice that, that is fine for me I was just scary it was a mistake.","commit_id":"528923daf800c682b91be454fc91b770361bc23f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"04402e6146d2d19be226b6b4f503411d097cd44c","unresolved":false,"context_lines":[{"line_number":4713,"context_line":"                    exception.UnableToAutoAllocateNetwork,"},{"line_number":4714,"context_line":"                    self.api._ports_needed_per_instance,"},{"line_number":4715,"context_line":"                    self.context, mock.sentinel.neutron, requested_networks)"},{"line_number":4716,"context_line":"            can_alloc.assert_called_once_with(mock.sentinel.neutron)"},{"line_number":4717,"context_line":""},{"line_number":4718,"context_line":"    def test__ports_needed_per_instance_auto_reqs_no_nets_ok(self):"},{"line_number":4719,"context_line":"        # Test for when there are no available networks and we\u0027re requested"}],"source_content_type":"text/x-python","patch_set":13,"id":"7aa08908_c59a03c5","line":4716,"range":{"start_line":4716,"start_character":12,"end_line":4716,"end_character":68},"updated":"2016-06-10 17:58:47.000000000","message":"Hmm, why wouldn\u0027t it fail here?","commit_id":"556b039e75a157f6bafe6b5e9e5cdf84ef4cb2fe"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1e162079a4128efa3fc0ec0eaccfc8b6a3873ef5","unresolved":false,"context_lines":[{"line_number":4713,"context_line":"                    exception.UnableToAutoAllocateNetwork,"},{"line_number":4714,"context_line":"                    self.api._ports_needed_per_instance,"},{"line_number":4715,"context_line":"                    self.context, mock.sentinel.neutron, requested_networks)"},{"line_number":4716,"context_line":"            can_alloc.assert_called_once_with(mock.sentinel.neutron)"},{"line_number":4717,"context_line":""},{"line_number":4718,"context_line":"    def test__ports_needed_per_instance_auto_reqs_no_nets_ok(self):"},{"line_number":4719,"context_line":"        # Test for when there are no available networks and we\u0027re requested"}],"source_content_type":"text/x-python","patch_set":13,"id":"7aa08908_a04fe568","line":4716,"range":{"start_line":4716,"start_character":12,"end_line":4716,"end_character":68},"in_reply_to":"7aa08908_c59a03c5","updated":"2016-06-10 18:15:58.000000000","message":"Ah because it requires the spec to be set since I\u0027m mocking out the API.","commit_id":"556b039e75a157f6bafe6b5e9e5cdf84ef4cb2fe"}]}
