)]}'
{"nova/conductor/manager.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"2cd82fc6cc137a1434567c8f83da86ee69ad4a95","unresolved":false,"context_lines":[{"line_number":544,"context_line":"    def compute_reboot(self, context, instance, reboot_type):"},{"line_number":545,"context_line":"        self.compute_api.reboot(context, instance, reboot_type)"},{"line_number":546,"context_line":""},{"line_number":547,"context_line":"    def add_virtual_interfaces(self, context, vifs):"},{"line_number":548,"context_line":"        \"\"\"Adds virtual interfaces to db.\"\"\""},{"line_number":549,"context_line":"        for vif in vifs:"},{"line_number":550,"context_line":"            self.db.virtual_interface_create(context, vif)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2FUs0%3D","line":547,"updated":"2013-07-04 00:32:29.000000000","message":"This needs @rpc_common.client_exceptions(exception.VirtualInterfaceCreateException)","commit_id":"ec4f4e1db91c0852ce64b8db75ac9736ad0f3fe2"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"ba40d4fde7493e6639c8a052d9a586536d9fb652","unresolved":false,"context_lines":[{"line_number":544,"context_line":"    def compute_reboot(self, context, instance, reboot_type):"},{"line_number":545,"context_line":"        self.compute_api.reboot(context, instance, reboot_type)"},{"line_number":546,"context_line":""},{"line_number":547,"context_line":"    def add_virtual_interfaces(self, context, vifs):"},{"line_number":548,"context_line":"        \"\"\"Adds virtual interfaces to db.\"\"\""},{"line_number":549,"context_line":"        for vif in vifs:"},{"line_number":550,"context_line":"            self.db.virtual_interface_create(context, vif)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAP3%2F%2F7lI%3D","line":547,"in_reply_to":"AAAAP3%2F%2F8pU%3D","updated":"2013-07-08 23:45:06.000000000","message":"Anything that throws an exception that should be returned but not logged against conductor should have this decorator. Some should have it but don\u0027t, and some don\u0027t need it.","commit_id":"ec4f4e1db91c0852ce64b8db75ac9736ad0f3fe2"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"b517c6afb09e714d43a9767b51bc93febd1ffc0e","unresolved":false,"context_lines":[{"line_number":544,"context_line":"    def compute_reboot(self, context, instance, reboot_type):"},{"line_number":545,"context_line":"        self.compute_api.reboot(context, instance, reboot_type)"},{"line_number":546,"context_line":""},{"line_number":547,"context_line":"    def add_virtual_interfaces(self, context, vifs):"},{"line_number":548,"context_line":"        \"\"\"Adds virtual interfaces to db.\"\"\""},{"line_number":549,"context_line":"        for vif in vifs:"},{"line_number":550,"context_line":"            self.db.virtual_interface_create(context, vif)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAP3%2F%2F8pU%3D","line":547,"in_reply_to":"AAAAPn%2F%2FUs0%3D","updated":"2013-07-08 18:25:46.000000000","message":"Why don\u0027t a lot of the other methods above not have this? What about virtual_interfaces_get_by_instance() and virtual_interface_delete_by_instance() ?","commit_id":"ec4f4e1db91c0852ce64b8db75ac9736ad0f3fe2"}],"nova/conductor/rpcapi.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"2cd82fc6cc137a1434567c8f83da86ee69ad4a95","unresolved":false,"context_lines":[{"line_number":518,"context_line":"    def virtual_interface_delete_by_instance(self, context, instance_uuid):"},{"line_number":519,"context_line":"        msg \u003d self.make_msg(\u0027virtual_interface_delete_by_instance\u0027,"},{"line_number":520,"context_line":"                            instance_uuid\u003dinstance_uuid)"},{"line_number":521,"context_line":"        return self.call(context, msg, version\u003d\u00271.54\u0027)"},{"line_number":522,"context_line":""},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"class ComputeTaskAPI(nova.openstack.common.rpc.proxy.RpcProxy):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2FUso%3D","line":521,"updated":"2013-07-04 00:32:29.000000000","message":"I think all three of these may need:\n\n  if not self.can_send_version(\u00271.54\u0027):\n    raise SomeException()\n\nI\u0027m not 100% positive though. I noticed that the compute_reboot() one above that was just added doesn\u0027t have it, but I think it prolly should.","commit_id":"ec4f4e1db91c0852ce64b8db75ac9736ad0f3fe2"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"11f41a93dbcdd54fe730ed4371b6f047078a0ace","unresolved":false,"context_lines":[{"line_number":518,"context_line":"    def virtual_interface_delete_by_instance(self, context, instance_uuid):"},{"line_number":519,"context_line":"        msg \u003d self.make_msg(\u0027virtual_interface_delete_by_instance\u0027,"},{"line_number":520,"context_line":"                            instance_uuid\u003dinstance_uuid)"},{"line_number":521,"context_line":"        return self.call(context, msg, version\u003d\u00271.54\u0027)"},{"line_number":522,"context_line":""},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"class ComputeTaskAPI(nova.openstack.common.rpc.proxy.RpcProxy):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAP3%2F%2F56k%3D","line":521,"in_reply_to":"AAAAP3%2F%2F6DM%3D","updated":"2013-07-09 13:40:48.000000000","message":"Ah, makes sense, thanks :)","commit_id":"ec4f4e1db91c0852ce64b8db75ac9736ad0f3fe2"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"d23f3b4de50db241b76b5dc635a4d24ec7344c20","unresolved":false,"context_lines":[{"line_number":518,"context_line":"    def virtual_interface_delete_by_instance(self, context, instance_uuid):"},{"line_number":519,"context_line":"        msg \u003d self.make_msg(\u0027virtual_interface_delete_by_instance\u0027,"},{"line_number":520,"context_line":"                            instance_uuid\u003dinstance_uuid)"},{"line_number":521,"context_line":"        return self.call(context, msg, version\u003d\u00271.54\u0027)"},{"line_number":522,"context_line":""},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"class ComputeTaskAPI(nova.openstack.common.rpc.proxy.RpcProxy):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAP3%2F%2F6DM%3D","line":521,"in_reply_to":"AAAAP3%2F%2F7eU%3D","updated":"2013-07-09 13:39:10.000000000","message":"I appreciate Dan looking out for this.  :-)  In this case, it\u0027s not needed.\n\nThe base rpc proxy class will already check to see if the version specified is compatible with the configure maximum version.  If it\u0027s not compatible, it will raise an exception.\n\nThe cases where we need to making changes like this are where there\u0027s something we can fall back to instead of just returning an exception to the caller.  If we can\u0027t send 1.54, but there was an older version of the method, so we could send a different message with version 1.X where 0 \u003c\u003d X \u003c 54, then that is a case where we need to do some special handling.\n\nNote that all of this is related to *client side* version handling.  The exception Aaron refers to in his last comment is raised by the *server side* version handling.  Client side version control is something we are just now implementing in Havana, as it is one of the pieces necessary to do live rolling upgrades.","commit_id":"ec4f4e1db91c0852ce64b8db75ac9736ad0f3fe2"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"6a2eb9645e5dc603242eb3935c061960c95e90ae","unresolved":false,"context_lines":[{"line_number":518,"context_line":"    def virtual_interface_delete_by_instance(self, context, instance_uuid):"},{"line_number":519,"context_line":"        msg \u003d self.make_msg(\u0027virtual_interface_delete_by_instance\u0027,"},{"line_number":520,"context_line":"                            instance_uuid\u003dinstance_uuid)"},{"line_number":521,"context_line":"        return self.call(context, msg, version\u003d\u00271.54\u0027)"},{"line_number":522,"context_line":""},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"class ComputeTaskAPI(nova.openstack.common.rpc.proxy.RpcProxy):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAP3%2F%2F7eU%3D","line":521,"in_reply_to":"AAAAP3%2F%2F7lA%3D","updated":"2013-07-09 00:31:26.000000000","message":"I think this is already being done somewhere as when i run conductor with RPC_API_VERSION \u003d \u00271.53\u0027 and call my methods an exception is reaised saying that it doesn\u0027t support 1.54","commit_id":"ec4f4e1db91c0852ce64b8db75ac9736ad0f3fe2"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"ba40d4fde7493e6639c8a052d9a586536d9fb652","unresolved":false,"context_lines":[{"line_number":518,"context_line":"    def virtual_interface_delete_by_instance(self, context, instance_uuid):"},{"line_number":519,"context_line":"        msg \u003d self.make_msg(\u0027virtual_interface_delete_by_instance\u0027,"},{"line_number":520,"context_line":"                            instance_uuid\u003dinstance_uuid)"},{"line_number":521,"context_line":"        return self.call(context, msg, version\u003d\u00271.54\u0027)"},{"line_number":522,"context_line":""},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"class ComputeTaskAPI(nova.openstack.common.rpc.proxy.RpcProxy):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAP3%2F%2F7lA%3D","line":521,"in_reply_to":"AAAAP3%2F%2F8pE%3D","updated":"2013-07-08 23:45:06.000000000","message":"If the expectation is that we should be doing this, then it definitely needs to be in this patch.","commit_id":"ec4f4e1db91c0852ce64b8db75ac9736ad0f3fe2"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"b517c6afb09e714d43a9767b51bc93febd1ffc0e","unresolved":false,"context_lines":[{"line_number":518,"context_line":"    def virtual_interface_delete_by_instance(self, context, instance_uuid):"},{"line_number":519,"context_line":"        msg \u003d self.make_msg(\u0027virtual_interface_delete_by_instance\u0027,"},{"line_number":520,"context_line":"                            instance_uuid\u003dinstance_uuid)"},{"line_number":521,"context_line":"        return self.call(context, msg, version\u003d\u00271.54\u0027)"},{"line_number":522,"context_line":""},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"class ComputeTaskAPI(nova.openstack.common.rpc.proxy.RpcProxy):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAP3%2F%2F8pE%3D","line":521,"in_reply_to":"AAAAPn%2F%2FUso%3D","updated":"2013-07-08 18:25:46.000000000","message":"I don\u0027t see any of the methods having this above so if this is needed i think it should be done in another patch.","commit_id":"ec4f4e1db91c0852ce64b8db75ac9736ad0f3fe2"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"83c9a7b54050a3c0b7b679e6e9a2d28e8cd176b0","unresolved":false,"context_lines":[{"line_number":510,"context_line":"        msg \u003d self.make_msg(\u0027add_virtual_interfaces\u0027, vifs\u003dvifs)"},{"line_number":511,"context_line":"        return self.call(context, msg, version\u003d\u00271.54\u0027)"},{"line_number":512,"context_line":""},{"line_number":513,"context_line":"    def virtual_interfaces_get_by_instance(self, context, instance_uuid):"},{"line_number":514,"context_line":"        msg \u003d self.make_msg(\u0027virtual_interfaces_get_by_instance\u0027,"},{"line_number":515,"context_line":"                            instance_uuid\u003dinstance_uuid)"},{"line_number":516,"context_line":"        return self.call(context, msg, version\u003d\u00271.54\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAP3%2F%2F6C8%3D","line":513,"updated":"2013-07-09 13:00:19.000000000","message":"Would rather go ahead and send the full instance here.","commit_id":"613d0b9fd0e61735e5bda6bbac34f390b308889d"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"77dcf5277bd4ee903a6619adab45d78076945881","unresolved":false,"context_lines":[{"line_number":510,"context_line":"        msg \u003d self.make_msg(\u0027add_virtual_interfaces\u0027, vifs\u003dvifs)"},{"line_number":511,"context_line":"        return self.call(context, msg, version\u003d\u00271.54\u0027)"},{"line_number":512,"context_line":""},{"line_number":513,"context_line":"    def virtual_interfaces_get_by_instance(self, context, instance_uuid):"},{"line_number":514,"context_line":"        msg \u003d self.make_msg(\u0027virtual_interfaces_get_by_instance\u0027,"},{"line_number":515,"context_line":"                            instance_uuid\u003dinstance_uuid)"},{"line_number":516,"context_line":"        return self.call(context, msg, version\u003d\u00271.54\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAP3%2F%2F5Gw%3D","line":513,"in_reply_to":"AAAAP3%2F%2F6C8%3D","updated":"2013-07-09 18:54:46.000000000","message":"any particular reason why out of curiosity.","commit_id":"613d0b9fd0e61735e5bda6bbac34f390b308889d"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"83c9a7b54050a3c0b7b679e6e9a2d28e8cd176b0","unresolved":false,"context_lines":[{"line_number":515,"context_line":"                            instance_uuid\u003dinstance_uuid)"},{"line_number":516,"context_line":"        return self.call(context, msg, version\u003d\u00271.54\u0027)"},{"line_number":517,"context_line":""},{"line_number":518,"context_line":"    def virtual_interface_delete_by_instance(self, context, instance_uuid):"},{"line_number":519,"context_line":"        msg \u003d self.make_msg(\u0027virtual_interface_delete_by_instance\u0027,"},{"line_number":520,"context_line":"                            instance_uuid\u003dinstance_uuid)"},{"line_number":521,"context_line":"        return self.call(context, msg, version\u003d\u00271.54\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAP3%2F%2F6C4%3D","line":518,"updated":"2013-07-09 13:00:19.000000000","message":"send the full instance here as well","commit_id":"613d0b9fd0e61735e5bda6bbac34f390b308889d"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"77dcf5277bd4ee903a6619adab45d78076945881","unresolved":false,"context_lines":[{"line_number":515,"context_line":"                            instance_uuid\u003dinstance_uuid)"},{"line_number":516,"context_line":"        return self.call(context, msg, version\u003d\u00271.54\u0027)"},{"line_number":517,"context_line":""},{"line_number":518,"context_line":"    def virtual_interface_delete_by_instance(self, context, instance_uuid):"},{"line_number":519,"context_line":"        msg \u003d self.make_msg(\u0027virtual_interface_delete_by_instance\u0027,"},{"line_number":520,"context_line":"                            instance_uuid\u003dinstance_uuid)"},{"line_number":521,"context_line":"        return self.call(context, msg, version\u003d\u00271.54\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAP3%2F%2F5Gk%3D","line":518,"in_reply_to":"AAAAP3%2F%2F6C4%3D","updated":"2013-07-09 18:54:46.000000000","message":"ditto","commit_id":"613d0b9fd0e61735e5bda6bbac34f390b308889d"}],"nova/db/sqlalchemy/models.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"2cd82fc6cc137a1434567c8f83da86ee69ad4a95","unresolved":false,"context_lines":[{"line_number":704,"context_line":"    network_id \u003d Column(Integer, nullable\u003dFalse)"},{"line_number":705,"context_line":"    # TODO(arosen): neutron stores the network as a uuid. Convert nova-network"},{"line_number":706,"context_line":"    # code to use uuid so that network_id column can be combined."},{"line_number":707,"context_line":"    network_uuid \u003d Column(String(255), nullable\u003dFalse)"},{"line_number":708,"context_line":"    instance_uuid \u003d Column(String(36), nullable\u003dFalse)"},{"line_number":709,"context_line":"    uuid \u003d Column(String(36))"},{"line_number":710,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2FUrw%3D","line":707,"updated":"2013-07-04 00:32:29.000000000","message":"Shouldn\u0027t this be the same format as everything else that stores a uuid? I.e. a String(36).","commit_id":"ec4f4e1db91c0852ce64b8db75ac9736ad0f3fe2"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"b517c6afb09e714d43a9767b51bc93febd1ffc0e","unresolved":false,"context_lines":[{"line_number":704,"context_line":"    network_id \u003d Column(Integer, nullable\u003dFalse)"},{"line_number":705,"context_line":"    # TODO(arosen): neutron stores the network as a uuid. Convert nova-network"},{"line_number":706,"context_line":"    # code to use uuid so that network_id column can be combined."},{"line_number":707,"context_line":"    network_uuid \u003d Column(String(255), nullable\u003dFalse)"},{"line_number":708,"context_line":"    instance_uuid \u003d Column(String(36), nullable\u003dFalse)"},{"line_number":709,"context_line":"    uuid \u003d Column(String(36))"},{"line_number":710,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAP3%2F%2F8o8%3D","line":707,"in_reply_to":"AAAAPn%2F%2FTA4%3D","updated":"2013-07-08 18:25:46.000000000","message":"whoops, yup this should definitely be a string(36)","commit_id":"ec4f4e1db91c0852ce64b8db75ac9736ad0f3fe2"},{"author":{"_account_id":1636,"name":"David Scannell","email":"dscannell@gridcentric.com","username":"dscannell"},"change_message_id":"c26eb9bbc9351be7ae6ed96f1dc1dff1f1a55098","unresolved":false,"context_lines":[{"line_number":704,"context_line":"    network_id \u003d Column(Integer, nullable\u003dFalse)"},{"line_number":705,"context_line":"    # TODO(arosen): neutron stores the network as a uuid. Convert nova-network"},{"line_number":706,"context_line":"    # code to use uuid so that network_id column can be combined."},{"line_number":707,"context_line":"    network_uuid \u003d Column(String(255), nullable\u003dFalse)"},{"line_number":708,"context_line":"    instance_uuid \u003d Column(String(36), nullable\u003dFalse)"},{"line_number":709,"context_line":"    uuid \u003d Column(String(36))"},{"line_number":710,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2FTA4%3D","line":707,"in_reply_to":"AAAAPn%2F%2FUrw%3D","updated":"2013-07-04 16:56:55.000000000","message":"Similarly it looks like the network_uuid column in the migration script is created as String(36):\n\n    network_uuid \u003d Column(\u0027network_uuid\u0027, String(36))","commit_id":"ec4f4e1db91c0852ce64b8db75ac9736ad0f3fe2"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"2cd82fc6cc137a1434567c8f83da86ee69ad4a95","unresolved":false,"context_lines":[{"line_number":705,"context_line":"    # TODO(arosen): neutron stores the network as a uuid. Convert nova-network"},{"line_number":706,"context_line":"    # code to use uuid so that network_id column can be combined."},{"line_number":707,"context_line":"    network_uuid \u003d Column(String(255), nullable\u003dFalse)"},{"line_number":708,"context_line":"    instance_uuid \u003d Column(String(36), nullable\u003dFalse)"},{"line_number":709,"context_line":"    uuid \u003d Column(String(36))"},{"line_number":710,"context_line":""},{"line_number":711,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2FUrk%3D","line":708,"updated":"2013-07-04 00:32:29.000000000","message":"You took the ForeignKey out of here, do you need to remove the constraint from the database on the migration? Or was it already missing?","commit_id":"ec4f4e1db91c0852ce64b8db75ac9736ad0f3fe2"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"b517c6afb09e714d43a9767b51bc93febd1ffc0e","unresolved":false,"context_lines":[{"line_number":705,"context_line":"    # TODO(arosen): neutron stores the network as a uuid. Convert nova-network"},{"line_number":706,"context_line":"    # code to use uuid so that network_id column can be combined."},{"line_number":707,"context_line":"    network_uuid \u003d Column(String(255), nullable\u003dFalse)"},{"line_number":708,"context_line":"    instance_uuid \u003d Column(String(36), nullable\u003dFalse)"},{"line_number":709,"context_line":"    uuid \u003d Column(String(36))"},{"line_number":710,"context_line":""},{"line_number":711,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAP3%2F%2F8ow%3D","line":708,"in_reply_to":"AAAAPn%2F%2FUrk%3D","updated":"2013-07-08 18:25:46.000000000","message":"I\u0027ll check it out.","commit_id":"ec4f4e1db91c0852ce64b8db75ac9736ad0f3fe2"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"2cd82fc6cc137a1434567c8f83da86ee69ad4a95","unresolved":false,"context_lines":[{"line_number":706,"context_line":"    # code to use uuid so that network_id column can be combined."},{"line_number":707,"context_line":"    network_uuid \u003d Column(String(255), nullable\u003dFalse)"},{"line_number":708,"context_line":"    instance_uuid \u003d Column(String(36), nullable\u003dFalse)"},{"line_number":709,"context_line":"    uuid \u003d Column(String(36))"},{"line_number":710,"context_line":""},{"line_number":711,"context_line":""},{"line_number":712,"context_line":"# TODO(vish): can these both come from the same baseclass?"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2FUrc%3D","line":709,"updated":"2013-07-04 00:32:29.000000000","message":"It was nullable\u003dTrue before, does this imply false? Do you need to migrate the existing nulled data to something useful, or will they all be blank uuid strings after this?","commit_id":"ec4f4e1db91c0852ce64b8db75ac9736ad0f3fe2"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"b517c6afb09e714d43a9767b51bc93febd1ffc0e","unresolved":false,"context_lines":[{"line_number":706,"context_line":"    # code to use uuid so that network_id column can be combined."},{"line_number":707,"context_line":"    network_uuid \u003d Column(String(255), nullable\u003dFalse)"},{"line_number":708,"context_line":"    instance_uuid \u003d Column(String(36), nullable\u003dFalse)"},{"line_number":709,"context_line":"    uuid \u003d Column(String(36))"},{"line_number":710,"context_line":""},{"line_number":711,"context_line":""},{"line_number":712,"context_line":"# TODO(vish): can these both come from the same baseclass?"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAP3%2F%2F8oo%3D","line":709,"in_reply_to":"AAAAPn%2F%2FUrc%3D","updated":"2013-07-08 18:25:46.000000000","message":"I didn\u0027t mean to change this... Will revert.","commit_id":"ec4f4e1db91c0852ce64b8db75ac9736ad0f3fe2"}],"nova/network/quantumv2/api.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"27e80a6f620f2be4227889f07079ff1d657c880a","unresolved":false,"context_lines":[{"line_number":305,"context_line":"                vif[\u0027network_uuid\u0027] \u003d iface[\u0027network\u0027][\u0027id\u0027]"},{"line_number":306,"context_line":"            vifs.append(vif)"},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"        self.conductor_api.add_virtual_interfaces(context, vifs)"},{"line_number":309,"context_line":"        # NOTE(danms): Only return info about ports we created in this run."},{"line_number":310,"context_line":"        # In the initial allocation case, this will be everything we created,"},{"line_number":311,"context_line":"        # and in later runs will only be what was created that time. Thus,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAP3%2F%2F75w%3D","line":308,"updated":"2013-07-08 21:48:28.000000000","message":"minor nit - if the vifs is [] do we need to do the conductor call?","commit_id":"e1b4f8d82923bd8c4846d52920619affbcce6683"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"4c5a18ab4b425ba51941b5d0edf112adb38b206a","unresolved":false,"context_lines":[{"line_number":305,"context_line":"                vif[\u0027network_uuid\u0027] \u003d iface[\u0027network\u0027][\u0027id\u0027]"},{"line_number":306,"context_line":"            vifs.append(vif)"},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"        self.conductor_api.add_virtual_interfaces(context, vifs)"},{"line_number":309,"context_line":"        # NOTE(danms): Only return info about ports we created in this run."},{"line_number":310,"context_line":"        # In the initial allocation case, this will be everything we created,"},{"line_number":311,"context_line":"        # and in later runs will only be what was created that time. Thus,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAP3%2F%2F7s0%3D","line":308,"in_reply_to":"AAAAP3%2F%2F75w%3D","updated":"2013-07-08 22:57:41.000000000","message":"right, we don\u0027t need to. I\u0027ll add an if statement.","commit_id":"e1b4f8d82923bd8c4846d52920619affbcce6683"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"d1d93f589f78aa5cc279ba0d74fb7a8c8341ba56","unresolved":false,"context_lines":[{"line_number":297,"context_line":"        # save nw_info in virtual_interface table so that vif order will be"},{"line_number":298,"context_line":"        # retained if rebooted."},{"line_number":299,"context_line":"        vifs \u003d []"},{"line_number":300,"context_line":"        for iface in nw_info:"},{"line_number":301,"context_line":"            vif \u003d {\u0027address\u0027: iface.get(\u0027address\u0027),"},{"line_number":302,"context_line":"                   \u0027instance_uuid\u0027: instance[\u0027uuid\u0027],"},{"line_number":303,"context_line":"                   \u0027uuid\u0027: uuidutils.generate_uuid()}"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAP3%2F%2F4tE%3D","line":300,"updated":"2013-07-09 19:29:01.000000000","message":"If this information is in the model in the correct order.... why is it not in the instance[\u0027info_cache\u0027] in the correct order?","commit_id":"613d0b9fd0e61735e5bda6bbac34f390b308889d"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"83c9a7b54050a3c0b7b679e6e9a2d28e8cd176b0","unresolved":false,"context_lines":[{"line_number":890,"context_line":"                context, instance[\u0027uuid\u0027])"},{"line_number":891,"context_line":"            if vifs:"},{"line_number":892,"context_line":"                net_ids \u003d [vif[\u0027network_uuid\u0027]"},{"line_number":893,"context_line":"                           for vif in vifs if vif.get(\u0027network_uuid\u0027)]"},{"line_number":894,"context_line":"            else:"},{"line_number":895,"context_line":"                net_ids \u003d []"},{"line_number":896,"context_line":"            networks \u003d self._get_available_networks(context,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAP3%2F%2F6B4%3D","line":893,"updated":"2013-07-09 13:00:19.000000000","message":"What happens here for vifs that were in the virtual_interfaces table from before this db migration?  It looks like they won\u0027t have network_uuid set, and they\u0027ll be silently dropped from the net_ids list here.","commit_id":"613d0b9fd0e61735e5bda6bbac34f390b308889d"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"77dcf5277bd4ee903a6619adab45d78076945881","unresolved":false,"context_lines":[{"line_number":890,"context_line":"                context, instance[\u0027uuid\u0027])"},{"line_number":891,"context_line":"            if vifs:"},{"line_number":892,"context_line":"                net_ids \u003d [vif[\u0027network_uuid\u0027]"},{"line_number":893,"context_line":"                           for vif in vifs if vif.get(\u0027network_uuid\u0027)]"},{"line_number":894,"context_line":"            else:"},{"line_number":895,"context_line":"                net_ids \u003d []"},{"line_number":896,"context_line":"            networks \u003d self._get_available_networks(context,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAP3%2F%2F49Q%3D","line":893,"in_reply_to":"AAAAP3%2F%2F6B4%3D","updated":"2013-07-09 18:54:46.000000000","message":"Good catch I missed this. Actually, if using quantum we never stored the virtual_interface ids in this table. This actually presents a different problem. If you reboot an instance after this patch you actually lose the nics on the instance. It looks like we have two options to fix this. We could add the line: \n\n\nif not net_ids:\n   networks \u003d self._get_available_networks(context,instance[\u0027project_id\u0027])\n\nThis would solve the issue but query quantum for nics on vms that didn\u0027t have any nics. Alternatively, It seems like the best solution would be to provide a script that populates the virtual_interface table with the data in quantum. What do you think?","commit_id":"613d0b9fd0e61735e5bda6bbac34f390b308889d"}]}
