)]}'
{"nova/network/manager.py":[{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"1b31f31c795d607cf10d285d3cace16da4901f51","unresolved":false,"context_lines":[{"line_number":1390,"context_line":"                except exception.VirtualInterfaceCreateException:"},{"line_number":1391,"context_line":"                    # passed in macs, but we ran out..."},{"line_number":1392,"context_line":"                    if macs and not available_macs:"},{"line_number":1393,"context_line":"                        raise exception.VirtualInterfaceCreateException()"},{"line_number":1394,"context_line":""},{"line_number":1395,"context_line":"    def add_virtual_interface(self, context, instance_uuid, network_id,"},{"line_number":1396,"context_line":"                              mac\u003dNone):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2FZng%3D","line":1393,"updated":"2013-01-23 23:01:03.000000000","message":"I think this can be quite a bit simpler:\nfor network in networks:\n    if macs is None:\n        self.add_virtual_interface(context, instance_uuid, network[\u0027id\u0027])\n    else:\n        try:\n            mac \u003d macs.pop()\n        except KeyError:\n            raise exception.VirtualInterfaceCreateException()\n        self.add_virtual_interface(context, instance_uuid, network[\u0027id\u0027], mac)","commit_id":"bf3557ba0f4a30f7a548fb1440c0ea6b2dbd6d95"},{"author":{"_account_id":1803,"name":"Michael J Fork","email":"mjfork@us.ibm.com","username":"mjfork"},"change_message_id":"018840301ec58c76de1279e430a98982b57ade39","unresolved":false,"context_lines":[{"line_number":1390,"context_line":"                except exception.VirtualInterfaceCreateException:"},{"line_number":1391,"context_line":"                    # passed in macs, but we ran out..."},{"line_number":1392,"context_line":"                    if macs and not available_macs:"},{"line_number":1393,"context_line":"                        raise exception.VirtualInterfaceCreateException()"},{"line_number":1394,"context_line":""},{"line_number":1395,"context_line":"    def add_virtual_interface(self, context, instance_uuid, network_id,"},{"line_number":1396,"context_line":"                              mac\u003dNone):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2FYbI%3D","line":1393,"in_reply_to":"AAAAM3%2F%2FZng%3D","updated":"2013-01-24 18:22:36.000000000","message":"Done","commit_id":"bf3557ba0f4a30f7a548fb1440c0ea6b2dbd6d95"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"1b31f31c795d607cf10d285d3cace16da4901f51","unresolved":false,"context_lines":[{"line_number":1393,"context_line":"                        raise exception.VirtualInterfaceCreateException()"},{"line_number":1394,"context_line":""},{"line_number":1395,"context_line":"    def add_virtual_interface(self, context, instance_uuid, network_id,"},{"line_number":1396,"context_line":"                              mac\u003dNone):"},{"line_number":1397,"context_line":"        vif \u003d {\u0027address\u0027: mac,"},{"line_number":1398,"context_line":"               \u0027instance_uuid\u0027: instance_uuid,"},{"line_number":1399,"context_line":"               \u0027network_id\u0027: network_id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2FZnA%3D","line":1396,"updated":"2013-01-23 23:01:03.000000000","message":"This can be simpler too I think. Assign mac before the dict:\n    if mac is None:\n        mac \u003d utils.generate_mac_address()\n        retry_count \u003d CONF.create_unique_mac_address_attempts\n    else:\n        retry_count \u003d 0\nThen change \u0027for i in xrange...\u0027 to just \u0027for i in range(retry_count)\u0027 #xrange if you like, but its python3 incompatible - may as well fix as we go\n\nAnd don\u0027t change the rest of the function at all.","commit_id":"bf3557ba0f4a30f7a548fb1440c0ea6b2dbd6d95"},{"author":{"_account_id":1803,"name":"Michael J Fork","email":"mjfork@us.ibm.com","username":"mjfork"},"change_message_id":"018840301ec58c76de1279e430a98982b57ade39","unresolved":false,"context_lines":[{"line_number":1393,"context_line":"                        raise exception.VirtualInterfaceCreateException()"},{"line_number":1394,"context_line":""},{"line_number":1395,"context_line":"    def add_virtual_interface(self, context, instance_uuid, network_id,"},{"line_number":1396,"context_line":"                              mac\u003dNone):"},{"line_number":1397,"context_line":"        vif \u003d {\u0027address\u0027: mac,"},{"line_number":1398,"context_line":"               \u0027instance_uuid\u0027: instance_uuid,"},{"line_number":1399,"context_line":"               \u0027network_id\u0027: network_id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2FYbE%3D","line":1396,"in_reply_to":"AAAAM3%2F%2FZnA%3D","updated":"2013-01-24 18:22:36.000000000","message":"Done","commit_id":"bf3557ba0f4a30f7a548fb1440c0ea6b2dbd6d95"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"76d1ab5111046feb2710ee7db32af92efccaa292","unresolved":false,"context_lines":[{"line_number":1149,"context_line":"        rxtx_factor \u003d kwargs[\u0027rxtx_factor\u0027]"},{"line_number":1150,"context_line":"        requested_networks \u003d kwargs.get(\u0027requested_networks\u0027)"},{"line_number":1151,"context_line":"        vpn \u003d kwargs[\u0027vpn\u0027]"},{"line_number":1152,"context_line":"        macs \u003d kwargs.get(\u0027macs\u0027, None)"},{"line_number":1153,"context_line":"        admin_context \u003d context.elevated()"},{"line_number":1154,"context_line":"        LOG.debug(_(\"network allocations\"), instance_uuid\u003dinstance_uuid,"},{"line_number":1155,"context_line":"                  context\u003dcontext)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2FXwA%3D","line":1152,"updated":"2013-01-25 02:05:43.000000000","message":"Doesn\u0027t need to be optional now, as the API bump means macs will always be present.","commit_id":"305e76aec66e556117cbafa6bdb2567481e84690"},{"author":{"_account_id":1803,"name":"Michael J Fork","email":"mjfork@us.ibm.com","username":"mjfork"},"change_message_id":"03ab72c15873aa0fa27f9e2588219f74396b2d33","unresolved":false,"context_lines":[{"line_number":1149,"context_line":"        rxtx_factor \u003d kwargs[\u0027rxtx_factor\u0027]"},{"line_number":1150,"context_line":"        requested_networks \u003d kwargs.get(\u0027requested_networks\u0027)"},{"line_number":1151,"context_line":"        vpn \u003d kwargs[\u0027vpn\u0027]"},{"line_number":1152,"context_line":"        macs \u003d kwargs.get(\u0027macs\u0027, None)"},{"line_number":1153,"context_line":"        admin_context \u003d context.elevated()"},{"line_number":1154,"context_line":"        LOG.debug(_(\"network allocations\"), instance_uuid\u003dinstance_uuid,"},{"line_number":1155,"context_line":"                  context\u003dcontext)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2FXSk%3D","line":1152,"in_reply_to":"AAAAM3%2F%2FXwA%3D","updated":"2013-01-25 16:14:55.000000000","message":"Done","commit_id":"305e76aec66e556117cbafa6bdb2567481e84690"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"76d1ab5111046feb2710ee7db32af92efccaa292","unresolved":false,"context_lines":[{"line_number":1377,"context_line":"        for network in networks:"},{"line_number":1378,"context_line":"            if macs is None:"},{"line_number":1379,"context_line":"                self.add_virtual_interface(context, instance_uuid,"},{"line_number":1380,"context_line":"                                           network[\u0027id\u0027])"},{"line_number":1381,"context_line":"            else:"},{"line_number":1382,"context_line":"                try:"},{"line_number":1383,"context_line":"                    mac \u003d available_macs.pop()"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2FXvs%3D","line":1380,"updated":"2013-01-25 02:05:43.000000000","message":"doh, so close to one-line :(.","commit_id":"305e76aec66e556117cbafa6bdb2567481e84690"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"76d1ab5111046feb2710ee7db32af92efccaa292","unresolved":false,"context_lines":[{"line_number":1408,"context_line":"        else:"},{"line_number":1409,"context_line":"            self.db.virtual_interface_delete_by_instance(context,"},{"line_number":1410,"context_line":"                                                         instance_uuid)"},{"line_number":1411,"context_line":"            raise exception.VirtualInterfaceMacAddressException()"},{"line_number":1412,"context_line":""},{"line_number":1413,"context_line":"    @wrap_check_policy"},{"line_number":1414,"context_line":"    def add_fixed_ip_to_instance(self, context, instance_id, host, network_id):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2FXvg%3D","line":1411,"updated":"2013-01-25 02:05:43.000000000","message":"Ah, we need to get this case up into the calling function. add_virtual_interface is only called from _allocate_mac_addresses, so I suggest:\n - make add_virtual_interface into _add_virtual_interface.\n - take the else from this function and move it up into a try:except in allocate_for_instance. (There is - by inspection - a bug already, in that a cancelled process mid-add_virtual_interface will leak allocated interfaces.)","commit_id":"305e76aec66e556117cbafa6bdb2567481e84690"},{"author":{"_account_id":1803,"name":"Michael J Fork","email":"mjfork@us.ibm.com","username":"mjfork"},"change_message_id":"03ab72c15873aa0fa27f9e2588219f74396b2d33","unresolved":false,"context_lines":[{"line_number":1408,"context_line":"        else:"},{"line_number":1409,"context_line":"            self.db.virtual_interface_delete_by_instance(context,"},{"line_number":1410,"context_line":"                                                         instance_uuid)"},{"line_number":1411,"context_line":"            raise exception.VirtualInterfaceMacAddressException()"},{"line_number":1412,"context_line":""},{"line_number":1413,"context_line":"    @wrap_check_policy"},{"line_number":1414,"context_line":"    def add_fixed_ip_to_instance(self, context, instance_id, host, network_id):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2FXSA%3D","line":1411,"in_reply_to":"AAAAM3%2F%2FXvg%3D","updated":"2013-01-25 16:14:55.000000000","message":"Done","commit_id":"305e76aec66e556117cbafa6bdb2567481e84690"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"354e967d816a35d3d5f98de5a288399474a043dc","unresolved":false,"context_lines":[{"line_number":1390,"context_line":"        except Exception as e:"},{"line_number":1391,"context_line":"            exc_info \u003d sys.exc_info()"},{"line_number":1392,"context_line":"            self.db.virtual_interface_delete_by_instance(context, instance_uuid)"},{"line_number":1393,"context_line":"            raise exc_info[0], exc_info[1], exc_info[2]"},{"line_number":1394,"context_line":""},{"line_number":1395,"context_line":"    def _add_virtual_interface(self, context, instance_uuid, network_id,"},{"line_number":1396,"context_line":"                              mac\u003dNone):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FWt0%3D","line":1393,"updated":"2013-01-25 20:23:11.000000000","message":"I was suggesting hoisting it up level higher still - this functional also only has a single caller.\n\nyou don\u0027t need to write\nexcept Exception as e:\n...\nraise (exc_info...\n\njust a bare raise will re-raise it correctly.","commit_id":"de39b96f65ad3441a5ea0c9238099e52ff054ae9"},{"author":{"_account_id":1803,"name":"Michael J Fork","email":"mjfork@us.ibm.com","username":"mjfork"},"change_message_id":"b6b5300170ae6f01d98e082c9215a1731f7141f8","unresolved":false,"context_lines":[{"line_number":1390,"context_line":"        except Exception as e:"},{"line_number":1391,"context_line":"            exc_info \u003d sys.exc_info()"},{"line_number":1392,"context_line":"            self.db.virtual_interface_delete_by_instance(context, instance_uuid)"},{"line_number":1393,"context_line":"            raise exc_info[0], exc_info[1], exc_info[2]"},{"line_number":1394,"context_line":""},{"line_number":1395,"context_line":"    def _add_virtual_interface(self, context, instance_uuid, network_id,"},{"line_number":1396,"context_line":"                              mac\u003dNone):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FVn4%3D","line":1393,"in_reply_to":"AAAAM3%2F%2FWt0%3D","updated":"2013-01-28 13:26:45.000000000","message":"You are right that it only has one caller, but moving it one level higher would make the handling inconsistent with the other callers; allocate_for_instance itself has no error handling.\n\nAlso, I tried the bare raise method (and some other variations) previously and get \"TypeError: exceptions must be old-style classes or derived from BaseException, not NoneType\".  Switching to this format was the only one that worked.","commit_id":"de39b96f65ad3441a5ea0c9238099e52ff054ae9"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"a1b6c85cde30e0371b1b3172cb5b2adc53e4d5a9","unresolved":false,"context_lines":[{"line_number":511,"context_line":"            exc_info \u003d sys.exc_info()"},{"line_number":512,"context_line":"            self.db.virtual_interface_delete_by_instance(context,"},{"line_number":513,"context_line":"                                                         instance_uuid)"},{"line_number":514,"context_line":"            raise exc_info[0], exc_info[1], exc_info[2]"},{"line_number":515,"context_line":""},{"line_number":516,"context_line":"        self._allocate_fixed_ips(admin_context, instance_id,"},{"line_number":517,"context_line":"                                 host, networks, vpn\u003dvpn,"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAM3%2F%2FHDc%3D","line":514,"updated":"2013-02-06 21:38:02.000000000","message":"Please use excutils.save_and_reraise_exception() for this…","commit_id":"fbd9dc08839befd4584770715095aa546cfcc7b0"},{"author":{"_account_id":1803,"name":"Michael J Fork","email":"mjfork@us.ibm.com","username":"mjfork"},"change_message_id":"2261fecafaa762fc8168bde59e7b3576fa084c5e","unresolved":false,"context_lines":[{"line_number":511,"context_line":"            exc_info \u003d sys.exc_info()"},{"line_number":512,"context_line":"            self.db.virtual_interface_delete_by_instance(context,"},{"line_number":513,"context_line":"                                                         instance_uuid)"},{"line_number":514,"context_line":"            raise exc_info[0], exc_info[1], exc_info[2]"},{"line_number":515,"context_line":""},{"line_number":516,"context_line":"        self._allocate_fixed_ips(admin_context, instance_id,"},{"line_number":517,"context_line":"                                 host, networks, vpn\u003dvpn,"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAM3%2F%2FGWc%3D","line":514,"in_reply_to":"AAAAM3%2F%2FHDc%3D","updated":"2013-02-07 03:35:24.000000000","message":"Done","commit_id":"fbd9dc08839befd4584770715095aa546cfcc7b0"}],"nova/network/rpcapi.py":[{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"1b31f31c795d607cf10d285d3cace16da4901f51","unresolved":false,"context_lines":[{"line_number":151,"context_line":""},{"line_number":152,"context_line":"    def allocate_for_instance(self, ctxt, instance_id, instance_uuid,"},{"line_number":153,"context_line":"                              project_id, host, rxtx_factor, vpn,"},{"line_number":154,"context_line":"                              requested_networks, macs):"},{"line_number":155,"context_line":"        return self.call(ctxt, self.make_msg(\u0027allocate_for_instance\u0027,"},{"line_number":156,"context_line":"                instance_id\u003dinstance_id, instance_uuid\u003dinstance_uuid,"},{"line_number":157,"context_line":"                project_id\u003dproject_id, host\u003dhost, rxtx_factor\u003drxtx_factor,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2FZm0%3D","line":154,"updated":"2013-01-23 23:01:03.000000000","message":"I\u0027d prefer you said \u0027macs\u003dNone\u0027 even though nothing does conditionally call it, just to be nicer to anyone running patched versions.","commit_id":"bf3557ba0f4a30f7a548fb1440c0ea6b2dbd6d95"},{"author":{"_account_id":1803,"name":"Michael J Fork","email":"mjfork@us.ibm.com","username":"mjfork"},"change_message_id":"018840301ec58c76de1279e430a98982b57ade39","unresolved":false,"context_lines":[{"line_number":151,"context_line":""},{"line_number":152,"context_line":"    def allocate_for_instance(self, ctxt, instance_id, instance_uuid,"},{"line_number":153,"context_line":"                              project_id, host, rxtx_factor, vpn,"},{"line_number":154,"context_line":"                              requested_networks, macs):"},{"line_number":155,"context_line":"        return self.call(ctxt, self.make_msg(\u0027allocate_for_instance\u0027,"},{"line_number":156,"context_line":"                instance_id\u003dinstance_id, instance_uuid\u003dinstance_uuid,"},{"line_number":157,"context_line":"                project_id\u003dproject_id, host\u003dhost, rxtx_factor\u003drxtx_factor,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2FYbA%3D","line":154,"in_reply_to":"AAAAM3%2F%2FZm0%3D","updated":"2013-01-24 18:22:36.000000000","message":"Done","commit_id":"bf3557ba0f4a30f7a548fb1440c0ea6b2dbd6d95"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"a1b6c85cde30e0371b1b3172cb5b2adc53e4d5a9","unresolved":false,"context_lines":[{"line_number":155,"context_line":"        return self.call(ctxt, self.make_msg(\u0027allocate_for_instance\u0027,"},{"line_number":156,"context_line":"                instance_id\u003dinstance_id, instance_uuid\u003dinstance_uuid,"},{"line_number":157,"context_line":"                project_id\u003dproject_id, host\u003dhost, rxtx_factor\u003drxtx_factor,"},{"line_number":158,"context_line":"                vpn\u003dvpn, requested_networks\u003drequested_networks, macs\u003dmacs))"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    def deallocate_for_instance(self, ctxt, instance_id, project_id, host):"},{"line_number":161,"context_line":"        return self.call(ctxt, self.make_msg(\u0027deallocate_for_instance\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAM3%2F%2FHDY%3D","line":158,"updated":"2013-02-06 21:38:02.000000000","message":"I believe you need to specify the version to self.call(), i.e., \"1.8\"…","commit_id":"fbd9dc08839befd4584770715095aa546cfcc7b0"},{"author":{"_account_id":1803,"name":"Michael J Fork","email":"mjfork@us.ibm.com","username":"mjfork"},"change_message_id":"2261fecafaa762fc8168bde59e7b3576fa084c5e","unresolved":false,"context_lines":[{"line_number":155,"context_line":"        return self.call(ctxt, self.make_msg(\u0027allocate_for_instance\u0027,"},{"line_number":156,"context_line":"                instance_id\u003dinstance_id, instance_uuid\u003dinstance_uuid,"},{"line_number":157,"context_line":"                project_id\u003dproject_id, host\u003dhost, rxtx_factor\u003drxtx_factor,"},{"line_number":158,"context_line":"                vpn\u003dvpn, requested_networks\u003drequested_networks, macs\u003dmacs))"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    def deallocate_for_instance(self, ctxt, instance_id, project_id, host):"},{"line_number":161,"context_line":"        return self.call(ctxt, self.make_msg(\u0027deallocate_for_instance\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAM3%2F%2FGWY%3D","line":158,"in_reply_to":"AAAAM3%2F%2FHDY%3D","updated":"2013-02-07 03:35:24.000000000","message":"Done","commit_id":"fbd9dc08839befd4584770715095aa546cfcc7b0"}],"nova/tests/network/test_manager.py":[{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"1b31f31c795d607cf10d285d3cace16da4901f51","unresolved":false,"context_lines":[{"line_number":1647,"context_line":"        self.network.deallocate_for_instance(self.context,"},{"line_number":1648,"context_line":"                                             instance_id\u003dinst[\u0027id\u0027],"},{"line_number":1649,"context_line":"                                             host\u003dself.network.host,"},{"line_number":1650,"context_line":"                                             project_id\u003dproject_id)"},{"line_number":1651,"context_line":""},{"line_number":1652,"context_line":""},{"line_number":1653,"context_line":"class FloatingIPTestCase(test.TestCase):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2FZms%3D","line":1650,"updated":"2013-01-23 23:01:03.000000000","message":"Please add a test for the no-macs-available case. Either ask for two networks and offer one mac (thats a common bare metal situation) or ask for one network and offer set() as the available macs (thats a less common virtualised chassis corner case)","commit_id":"bf3557ba0f4a30f7a548fb1440c0ea6b2dbd6d95"},{"author":{"_account_id":1803,"name":"Michael J Fork","email":"mjfork@us.ibm.com","username":"mjfork"},"change_message_id":"018840301ec58c76de1279e430a98982b57ade39","unresolved":false,"context_lines":[{"line_number":1647,"context_line":"        self.network.deallocate_for_instance(self.context,"},{"line_number":1648,"context_line":"                                             instance_id\u003dinst[\u0027id\u0027],"},{"line_number":1649,"context_line":"                                             host\u003dself.network.host,"},{"line_number":1650,"context_line":"                                             project_id\u003dproject_id)"},{"line_number":1651,"context_line":""},{"line_number":1652,"context_line":""},{"line_number":1653,"context_line":"class FloatingIPTestCase(test.TestCase):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2FYa8%3D","line":1650,"in_reply_to":"AAAAM3%2F%2FZms%3D","updated":"2013-01-24 18:22:36.000000000","message":"Done","commit_id":"bf3557ba0f4a30f7a548fb1440c0ea6b2dbd6d95"}]}
