)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"a7dc614d944268496bad5bbccd8452e0a60703e1","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Mike Dorman \u003cmdorman@godaddy.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-08-21 08:43:32 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Cells v1: Support attach/detach interface and external events"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Adds support under cells v1 for interface attach/detach events."},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"ba15a1d1_8c2105b7","line":7,"updated":"2015-09-15 16:38:21.000000000","message":"I don\u0027t see anything that fixes external events?\n\nHonestly, thats probably good, I feel that should be a separate patch.","commit_id":"51e3817bc7b058c4d15d38da2c434cc3d389860b"},{"author":{"_account_id":9060,"name":"Mike Dorman","email":"dorm@dorm.org","username":"gd-mdorman"},"change_message_id":"03bd9c9bb3095eaa989fff165d897cdef875f5ba","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Mike Dorman \u003cmdorman@godaddy.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-08-21 08:43:32 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Cells v1: Support attach/detach interface and external events"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Adds support under cells v1 for interface attach/detach events."},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"ba15a1d1_cdde7b3d","line":7,"in_reply_to":"ba15a1d1_8c2105b7","updated":"2015-09-18 15:30:25.000000000","message":"Done","commit_id":"51e3817bc7b058c4d15d38da2c434cc3d389860b"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"6fe269df7f93996fd690bf6a924e4b87da164242","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Mike Dorman \u003cmdorman@godaddy.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-09-21 09:11:05 -0600"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Cells v1: Support attach/detach interface events"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Adds support under cells v1 for interface attach/detach events."},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"ba15a1d1_bdf2d598","line":7,"updated":"2015-09-22 19:21:43.000000000","message":"Please remove mention of events, it\u0027s about \"attach/detach interface calls/features\". There is no longer changes related to events in this review.","commit_id":"4866713a62c826e4825a2ab8edaffa537d1f8b76"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8b7c0d2d8e28e12a08c427881bd1f3d56b89d1ed","unresolved":false,"context_lines":[{"line_number":14,"context_line":"Change-Id: I316f0339769e0ebc19fa4fcf3ee5691fb030b2ae"},{"line_number":15,"context_line":"Co-Authored-By: Sam Morrison \u003csorrison@gmail.com\u003e"},{"line_number":16,"context_line":"Co-Authored-By: Mathieu Gagné \u003cmgagne@iweb.com\u003e"},{"line_number":17,"context_line":"Closes-Bug: 1456381"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"5a2ca52d_9de6ecb2","line":17,"updated":"2015-10-15 15:00:07.000000000","message":"This is a wishlist bug, so not really a bug.  We should track adding this support with a blueprint for mitaka.\n\nI don\u0027t think we need a spec for this, but we should have the bp for tracking against the release - so please open one and then we can track it as a specless bp here:\n\nhttps://etherpad.openstack.org/p/mitaka-nova-spec-review-tracking","commit_id":"4866713a62c826e4825a2ab8edaffa537d1f8b76"}],"nova/api/openstack/compute/attach_interfaces.py":[{"author":{"_account_id":9060,"name":"Mike Dorman","email":"dorm@dorm.org","username":"gd-mdorman"},"change_message_id":"e18899aadd3864604209518d88773124aa365f64","unresolved":false,"context_lines":[{"line_number":174,"context_line":"            raise exc.HTTPNotFound(explanation\u003de.format_message())"},{"line_number":175,"context_line":"        except NotImplementedError:"},{"line_number":176,"context_line":"            common.raise_feature_not_supported()"},{"line_number":177,"context_line":"        except exception.InstanceInvalidState as state_error: 185"},{"line_number":178,"context_line":"            common.raise_http_conflict_for_instance_invalid_state(state_error,"},{"line_number":179,"context_line":"                    \u0027detach_interface\u0027)"},{"line_number":180,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba15a1d1_bbe9fa80","line":177,"updated":"2015-09-18 17:21:51.000000000","message":"embarrassing copy/paste error here.","commit_id":"6e4872d2c15452cfc87d5a5f1c6fc38874d0b3e0"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"a138f26af7eda502e43ff0c89ff5b8646559605a","unresolved":false,"context_lines":[{"line_number":174,"context_line":"            raise exc.HTTPNotFound(explanation\u003de.format_message())"},{"line_number":175,"context_line":"        except NotImplementedError:"},{"line_number":176,"context_line":"            common.raise_feature_not_supported()"},{"line_number":177,"context_line":"        except exception.InstanceInvalidState as state_error:"},{"line_number":178,"context_line":"            common.raise_http_conflict_for_instance_invalid_state(state_error,"},{"line_number":179,"context_line":"                    \u0027detach_interface\u0027)"},{"line_number":180,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_23825c53","line":177,"updated":"2015-09-21 20:33:23.000000000","message":"I\u0027m not seeing why this matters in this patch.  There shouldn\u0027t be a state conflict for listing ports, nor would it necessarily be related to detach_interface.","commit_id":"4866713a62c826e4825a2ab8edaffa537d1f8b76"}],"nova/api/openstack/compute/legacy_v2/contrib/attach_interfaces.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"a7dc614d944268496bad5bbccd8452e0a60703e1","unresolved":false,"context_lines":[{"line_number":184,"context_line":"            raise webob.exc.HTTPNotImplemented(explanation\u003dmsg)"},{"line_number":185,"context_line":"        except exception.InstanceInvalidState as state_error:"},{"line_number":186,"context_line":"            common.raise_http_conflict_for_instance_invalid_state(state_error,"},{"line_number":187,"context_line":"                    \u0027detach_interface\u0027)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"        ports \u003d data.get(\u0027ports\u0027, [])"},{"line_number":190,"context_line":"        results \u003d [entity_maker(port) for port in ports]"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba15a1d1_4ca9ad7a","line":187,"updated":"2015-09-15 16:38:21.000000000","message":"Please also update the v2.1 API, which is now the default API:\nhttps://github.com/openstack/nova/blob/master/nova/api/openstack/compute/attach_interfaces.py#L175","commit_id":"51e3817bc7b058c4d15d38da2c434cc3d389860b"},{"author":{"_account_id":9060,"name":"Mike Dorman","email":"dorm@dorm.org","username":"gd-mdorman"},"change_message_id":"03bd9c9bb3095eaa989fff165d897cdef875f5ba","unresolved":false,"context_lines":[{"line_number":184,"context_line":"            raise webob.exc.HTTPNotImplemented(explanation\u003dmsg)"},{"line_number":185,"context_line":"        except exception.InstanceInvalidState as state_error:"},{"line_number":186,"context_line":"            common.raise_http_conflict_for_instance_invalid_state(state_error,"},{"line_number":187,"context_line":"                    \u0027detach_interface\u0027)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"        ports \u003d data.get(\u0027ports\u0027, [])"},{"line_number":190,"context_line":"        results \u003d [entity_maker(port) for port in ports]"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba15a1d1_9223bebc","line":187,"in_reply_to":"ba15a1d1_4ca9ad7a","updated":"2015-09-18 15:30:25.000000000","message":"Done","commit_id":"51e3817bc7b058c4d15d38da2c434cc3d389860b"}],"nova/compute/api.py":[{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"68f42d80204652141e9a82e743b1fb6cf00be7d7","unresolved":false,"context_lines":[{"line_number":3141,"context_line":"                self.volume_api.unreserve_volume(context, new_volume[\u0027id\u0027])"},{"line_number":3142,"context_line":""},{"line_number":3143,"context_line":"    def _attach_interface(self, context, instance, network_id, port_id,"},{"line_number":3144,"context_line":"                         requested_ip):"},{"line_number":3145,"context_line":"        \"\"\"Use hotplug to add an network adapter to an instance."},{"line_number":3146,"context_line":""},{"line_number":3147,"context_line":"        This method is separated to make it possible for cells version"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba15a1d1_3cac92ec","line":3144,"updated":"2015-09-15 21:08:07.000000000","message":"needs one more space for indentation, to match the self argument.","commit_id":"51e3817bc7b058c4d15d38da2c434cc3d389860b"},{"author":{"_account_id":9060,"name":"Mike Dorman","email":"dorm@dorm.org","username":"gd-mdorman"},"change_message_id":"03bd9c9bb3095eaa989fff165d897cdef875f5ba","unresolved":false,"context_lines":[{"line_number":3141,"context_line":"                self.volume_api.unreserve_volume(context, new_volume[\u0027id\u0027])"},{"line_number":3142,"context_line":""},{"line_number":3143,"context_line":"    def _attach_interface(self, context, instance, network_id, port_id,"},{"line_number":3144,"context_line":"                         requested_ip):"},{"line_number":3145,"context_line":"        \"\"\"Use hotplug to add an network adapter to an instance."},{"line_number":3146,"context_line":""},{"line_number":3147,"context_line":"        This method is separated to make it possible for cells version"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba15a1d1_ad078716","line":3144,"in_reply_to":"ba15a1d1_3cac92ec","updated":"2015-09-18 15:30:25.000000000","message":"Done","commit_id":"51e3817bc7b058c4d15d38da2c434cc3d389860b"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"68f42d80204652141e9a82e743b1fb6cf00be7d7","unresolved":false,"context_lines":[{"line_number":3142,"context_line":""},{"line_number":3143,"context_line":"    def _attach_interface(self, context, instance, network_id, port_id,"},{"line_number":3144,"context_line":"                         requested_ip):"},{"line_number":3145,"context_line":"        \"\"\"Use hotplug to add an network adapter to an instance."},{"line_number":3146,"context_line":""},{"line_number":3147,"context_line":"        This method is separated to make it possible for cells version"},{"line_number":3148,"context_line":"        to override it."}],"source_content_type":"text/x-python","patch_set":2,"id":"ba15a1d1_7c80ca46","line":3145,"updated":"2015-09-15 21:08:07.000000000","message":"a network adapter instead of an network adapter","commit_id":"51e3817bc7b058c4d15d38da2c434cc3d389860b"},{"author":{"_account_id":9060,"name":"Mike Dorman","email":"dorm@dorm.org","username":"gd-mdorman"},"change_message_id":"03bd9c9bb3095eaa989fff165d897cdef875f5ba","unresolved":false,"context_lines":[{"line_number":3142,"context_line":""},{"line_number":3143,"context_line":"    def _attach_interface(self, context, instance, network_id, port_id,"},{"line_number":3144,"context_line":"                         requested_ip):"},{"line_number":3145,"context_line":"        \"\"\"Use hotplug to add an network adapter to an instance."},{"line_number":3146,"context_line":""},{"line_number":3147,"context_line":"        This method is separated to make it possible for cells version"},{"line_number":3148,"context_line":"        to override it."}],"source_content_type":"text/x-python","patch_set":2,"id":"ba15a1d1_cd0afb1f","line":3145,"in_reply_to":"ba15a1d1_7c80ca46","updated":"2015-09-18 15:30:25.000000000","message":"Done","commit_id":"51e3817bc7b058c4d15d38da2c434cc3d389860b"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"68f42d80204652141e9a82e743b1fb6cf00be7d7","unresolved":false,"context_lines":[{"line_number":3152,"context_line":"            requested_ip\u003drequested_ip)"},{"line_number":3153,"context_line":""},{"line_number":3154,"context_line":"    def _detach_interface(self, context, instance, port_id):"},{"line_number":3155,"context_line":"        \"\"\"Detach an network adapter from an instance."},{"line_number":3156,"context_line":""},{"line_number":3157,"context_line":"        This method is separated to make it possible for cells version"},{"line_number":3158,"context_line":"        to override it."}],"source_content_type":"text/x-python","patch_set":2,"id":"ba15a1d1_fc8cda80","line":3155,"updated":"2015-09-15 21:08:07.000000000","message":"a network adapter instead of an network adapter","commit_id":"51e3817bc7b058c4d15d38da2c434cc3d389860b"},{"author":{"_account_id":9060,"name":"Mike Dorman","email":"dorm@dorm.org","username":"gd-mdorman"},"change_message_id":"03bd9c9bb3095eaa989fff165d897cdef875f5ba","unresolved":false,"context_lines":[{"line_number":3152,"context_line":"            requested_ip\u003drequested_ip)"},{"line_number":3153,"context_line":""},{"line_number":3154,"context_line":"    def _detach_interface(self, context, instance, port_id):"},{"line_number":3155,"context_line":"        \"\"\"Detach an network adapter from an instance."},{"line_number":3156,"context_line":""},{"line_number":3157,"context_line":"        This method is separated to make it possible for cells version"},{"line_number":3158,"context_line":"        to override it."}],"source_content_type":"text/x-python","patch_set":2,"id":"ba15a1d1_2d1cd768","line":3155,"in_reply_to":"ba15a1d1_fc8cda80","updated":"2015-09-18 15:30:25.000000000","message":"Done","commit_id":"51e3817bc7b058c4d15d38da2c434cc3d389860b"}],"nova/compute/cells_api.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"a7dc614d944268496bad5bbccd8452e0a60703e1","unresolved":false,"context_lines":[{"line_number":51,"context_line":"                        \u0027confirm_resize\u0027, \u0027reset_network\u0027,"},{"line_number":52,"context_line":"                        \u0027inject_network_info\u0027,"},{"line_number":53,"context_line":"                        \u0027backup_instance\u0027, \u0027snapshot_instance\u0027,"},{"line_number":54,"context_line":"                        \u0027set_admin_password\u0027]"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def __init__(self, cells_rpcapi):"},{"line_number":57,"context_line":"        self.cells_rpcapi \u003d cells_rpcapi"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba15a1d1_6cdcb1e4","line":54,"updated":"2015-09-15 16:38:21.000000000","message":"Could we not just add attach_interface and dettach_interface here instead?\n\nI have a feeling you could add the external events call here as well, but I have not double checked that one.","commit_id":"51e3817bc7b058c4d15d38da2c434cc3d389860b"},{"author":{"_account_id":9060,"name":"Mike Dorman","email":"dorm@dorm.org","username":"gd-mdorman"},"change_message_id":"03bd9c9bb3095eaa989fff165d897cdef875f5ba","unresolved":false,"context_lines":[{"line_number":51,"context_line":"                        \u0027confirm_resize\u0027, \u0027reset_network\u0027,"},{"line_number":52,"context_line":"                        \u0027inject_network_info\u0027,"},{"line_number":53,"context_line":"                        \u0027backup_instance\u0027, \u0027snapshot_instance\u0027,"},{"line_number":54,"context_line":"                        \u0027set_admin_password\u0027]"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def __init__(self, cells_rpcapi):"},{"line_number":57,"context_line":"        self.cells_rpcapi \u003d cells_rpcapi"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba15a1d1_6d75ef61","line":54,"in_reply_to":"ba15a1d1_6cdcb1e4","updated":"2015-09-18 15:30:25.000000000","message":"Maybe.  I am not familiar with all of this enough to be able to make a judgement here.  mgagne, sorrison can you weigh in?","commit_id":"51e3817bc7b058c4d15d38da2c434cc3d389860b"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"68f42d80204652141e9a82e743b1fb6cf00be7d7","unresolved":false,"context_lines":[{"line_number":438,"context_line":"    @check_instance_cell"},{"line_number":439,"context_line":"    def _attach_interface(self, context, instance, network_id, port_id,"},{"line_number":440,"context_line":"                         requested_ip):"},{"line_number":441,"context_line":"        \"\"\"Use hotplug to add an network adapter to an instance.\"\"\""},{"line_number":442,"context_line":"        return self._call_to_cells(context, instance, \u0027attach_interface\u0027,"},{"line_number":443,"context_line":"                network_id\u003dnetwork_id, port_id\u003dport_id,"},{"line_number":444,"context_line":"                requested_ip\u003drequested_ip)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba15a1d1_9c5fdee4","line":441,"updated":"2015-09-15 21:08:07.000000000","message":"a network adapter instead of an network adapter","commit_id":"51e3817bc7b058c4d15d38da2c434cc3d389860b"},{"author":{"_account_id":9060,"name":"Mike Dorman","email":"dorm@dorm.org","username":"gd-mdorman"},"change_message_id":"03bd9c9bb3095eaa989fff165d897cdef875f5ba","unresolved":false,"context_lines":[{"line_number":438,"context_line":"    @check_instance_cell"},{"line_number":439,"context_line":"    def _attach_interface(self, context, instance, network_id, port_id,"},{"line_number":440,"context_line":"                         requested_ip):"},{"line_number":441,"context_line":"        \"\"\"Use hotplug to add an network adapter to an instance.\"\"\""},{"line_number":442,"context_line":"        return self._call_to_cells(context, instance, \u0027attach_interface\u0027,"},{"line_number":443,"context_line":"                network_id\u003dnetwork_id, port_id\u003dport_id,"},{"line_number":444,"context_line":"                requested_ip\u003drequested_ip)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba15a1d1_8d3f23b3","line":441,"in_reply_to":"ba15a1d1_9c5fdee4","updated":"2015-09-18 15:30:25.000000000","message":"Done","commit_id":"51e3817bc7b058c4d15d38da2c434cc3d389860b"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"68f42d80204652141e9a82e743b1fb6cf00be7d7","unresolved":false,"context_lines":[{"line_number":445,"context_line":""},{"line_number":446,"context_line":"    @check_instance_cell"},{"line_number":447,"context_line":"    def _detach_interface(self, context, instance, port_id):"},{"line_number":448,"context_line":"        \"\"\"Detach an network adapter from an instance.\"\"\""},{"line_number":449,"context_line":"        return self._call_to_cells(context, instance, \u0027detach_interface\u0027,"},{"line_number":450,"context_line":"                port_id\u003dport_id)"},{"line_number":451,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba15a1d1_bc62e2ab","line":448,"updated":"2015-09-15 21:08:07.000000000","message":"a network adapter instead of an network adapter","commit_id":"51e3817bc7b058c4d15d38da2c434cc3d389860b"},{"author":{"_account_id":9060,"name":"Mike Dorman","email":"dorm@dorm.org","username":"gd-mdorman"},"change_message_id":"03bd9c9bb3095eaa989fff165d897cdef875f5ba","unresolved":false,"context_lines":[{"line_number":445,"context_line":""},{"line_number":446,"context_line":"    @check_instance_cell"},{"line_number":447,"context_line":"    def _detach_interface(self, context, instance, port_id):"},{"line_number":448,"context_line":"        \"\"\"Detach an network adapter from an instance.\"\"\""},{"line_number":449,"context_line":"        return self._call_to_cells(context, instance, \u0027detach_interface\u0027,"},{"line_number":450,"context_line":"                port_id\u003dport_id)"},{"line_number":451,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba15a1d1_2d4a9755","line":448,"in_reply_to":"ba15a1d1_bc62e2ab","updated":"2015-09-18 15:30:25.000000000","message":"Done","commit_id":"51e3817bc7b058c4d15d38da2c434cc3d389860b"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"a138f26af7eda502e43ff0c89ff5b8646559605a","unresolved":false,"context_lines":[{"line_number":51,"context_line":"                        \u0027confirm_resize\u0027, \u0027reset_network\u0027,"},{"line_number":52,"context_line":"                        \u0027inject_network_info\u0027,"},{"line_number":53,"context_line":"                        \u0027backup_instance\u0027, \u0027snapshot_instance\u0027,"},{"line_number":54,"context_line":"                        \u0027set_admin_password\u0027]"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def __init__(self, cells_rpcapi):"},{"line_number":57,"context_line":"        self.cells_rpcapi \u003d cells_rpcapi"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_a3542c54","line":54,"updated":"2015-09-21 20:33:23.000000000","message":"As John mentioned in a previous revision the more \"modern\" way of doing this would be to add the two rpcapi methods here.  This would avoid splitting the methods in compute/api.py and overriding them below.  However you would need to add them to cells/rpcapi.py, cells/manager.py, and cells/messaging.py.  You can look at something like start_instance as an example of what you would need.\n\nI\u0027m not sure there\u0027s a reason to prefer one way over another at this point, but this is the new way to do it.  If cellsv1 wasn\u0027t on a deprecation path I would recommend going this route.","commit_id":"4866713a62c826e4825a2ab8edaffa537d1f8b76"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"a138f26af7eda502e43ff0c89ff5b8646559605a","unresolved":false,"context_lines":[{"line_number":446,"context_line":"    @check_instance_cell"},{"line_number":447,"context_line":"    def _detach_interface(self, context, instance, port_id):"},{"line_number":448,"context_line":"        \"\"\"Detach a network adapter from an instance.\"\"\""},{"line_number":449,"context_line":"        return self._call_to_cells(context, instance, \u0027detach_interface\u0027,"},{"line_number":450,"context_line":"                port_id\u003dport_id)"},{"line_number":451,"context_line":""},{"line_number":452,"context_line":"    @wrap_check_policy"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_83b9e817","line":449,"updated":"2015-09-21 20:33:23.000000000","message":"detach_interface is a cast in the non-cells setup, so this should be a cast.","commit_id":"4866713a62c826e4825a2ab8edaffa537d1f8b76"}],"nova/network/neutronv2/api.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"9a9abe7c636c7f2f8b954fbdb5f0effbeac15563","unresolved":false,"context_lines":[{"line_number":677,"context_line":"            port_ids\u003dports_in_requested_order,"},{"line_number":678,"context_line":"            admin_client\u003dadmin_client,"},{"line_number":679,"context_line":"            preexisting_port_ids\u003dpreexisting_port_ids,"},{"line_number":680,"context_line":"            update_cells\u003dTrue)"},{"line_number":681,"context_line":"        # NOTE(danms): Only return info about ports we created in this run."},{"line_number":682,"context_line":"        # In the initial allocation case, this will be everything we created,"},{"line_number":683,"context_line":"        # and in later runs will only be what was created that time. Thus,"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa1b9901_bd0f952d","line":680,"updated":"2015-08-22 03:23:16.000000000","message":"i am not sure why this is True, can you please clarify","commit_id":"51e3817bc7b058c4d15d38da2c434cc3d389860b"},{"author":{"_account_id":9060,"name":"Mike Dorman","email":"dorm@dorm.org","username":"gd-mdorman"},"change_message_id":"03bd9c9bb3095eaa989fff165d897cdef875f5ba","unresolved":false,"context_lines":[{"line_number":677,"context_line":"            port_ids\u003dports_in_requested_order,"},{"line_number":678,"context_line":"            admin_client\u003dadmin_client,"},{"line_number":679,"context_line":"            preexisting_port_ids\u003dpreexisting_port_ids,"},{"line_number":680,"context_line":"            update_cells\u003dTrue)"},{"line_number":681,"context_line":"        # NOTE(danms): Only return info about ports we created in this run."},{"line_number":682,"context_line":"        # In the initial allocation case, this will be everything we created,"},{"line_number":683,"context_line":"        # and in later runs will only be what was created that time. Thus,"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba15a1d1_0def931e","line":680,"in_reply_to":"ba15a1d1_175f270f","updated":"2015-09-18 15:30:25.000000000","message":"Done","commit_id":"51e3817bc7b058c4d15d38da2c434cc3d389860b"},{"author":{"_account_id":16839,"name":"Cale Rath","email":"ctrath@us.ibm.com","username":"ctrath"},"change_message_id":"2d53da899b13b6d2f89a5a8f6194cf7deee88225","unresolved":false,"context_lines":[{"line_number":677,"context_line":"            port_ids\u003dports_in_requested_order,"},{"line_number":678,"context_line":"            admin_client\u003dadmin_client,"},{"line_number":679,"context_line":"            preexisting_port_ids\u003dpreexisting_port_ids,"},{"line_number":680,"context_line":"            update_cells\u003dTrue)"},{"line_number":681,"context_line":"        # NOTE(danms): Only return info about ports we created in this run."},{"line_number":682,"context_line":"        # In the initial allocation case, this will be everything we created,"},{"line_number":683,"context_line":"        # and in later runs will only be what was created that time. Thus,"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba15a1d1_175f270f","line":680,"in_reply_to":"da20952f_e409cc2d","updated":"2015-09-15 21:23:59.000000000","message":"It may be helpful to put a comment in the code explaining this since it appears to not be well understood.","commit_id":"51e3817bc7b058c4d15d38da2c434cc3d389860b"},{"author":{"_account_id":3031,"name":"Sam Morrison","email":"sorrison@gmail.com","username":"sorrison"},"change_message_id":"bc6441942bdfa3d5f708b52c028dbc60ece8f872","unresolved":false,"context_lines":[{"line_number":677,"context_line":"            port_ids\u003dports_in_requested_order,"},{"line_number":678,"context_line":"            admin_client\u003dadmin_client,"},{"line_number":679,"context_line":"            preexisting_port_ids\u003dpreexisting_port_ids,"},{"line_number":680,"context_line":"            update_cells\u003dTrue)"},{"line_number":681,"context_line":"        # NOTE(danms): Only return info about ports we created in this run."},{"line_number":682,"context_line":"        # In the initial allocation case, this will be everything we created,"},{"line_number":683,"context_line":"        # and in later runs will only be what was created that time. Thus,"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa1b9901_6513940e","line":680,"in_reply_to":"fa1b9901_34b5d7cf","updated":"2015-08-23 07:06:06.000000000","message":"Yeah that\u0027s correct although the other way. We need to sync the network_info in the instance_cache up to the api cell.","commit_id":"51e3817bc7b058c4d15d38da2c434cc3d389860b"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"e905144f1853b60fac3fa5a83903761bcf27460d","unresolved":false,"context_lines":[{"line_number":677,"context_line":"            port_ids\u003dports_in_requested_order,"},{"line_number":678,"context_line":"            admin_client\u003dadmin_client,"},{"line_number":679,"context_line":"            preexisting_port_ids\u003dpreexisting_port_ids,"},{"line_number":680,"context_line":"            update_cells\u003dTrue)"},{"line_number":681,"context_line":"        # NOTE(danms): Only return info about ports we created in this run."},{"line_number":682,"context_line":"        # In the initial allocation case, this will be everything we created,"},{"line_number":683,"context_line":"        # and in later runs will only be what was created that time. Thus,"}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_e409cc2d","line":680,"in_reply_to":"fa1b9901_6513940e","updated":"2015-08-27 16:09:06.000000000","message":"I confirm this.","commit_id":"51e3817bc7b058c4d15d38da2c434cc3d389860b"},{"author":{"_account_id":9060,"name":"Mike Dorman","email":"dorm@dorm.org","username":"gd-mdorman"},"change_message_id":"79bdd17439ecda63dd4e499ede9eea70c4fa055a","unresolved":false,"context_lines":[{"line_number":677,"context_line":"            port_ids\u003dports_in_requested_order,"},{"line_number":678,"context_line":"            admin_client\u003dadmin_client,"},{"line_number":679,"context_line":"            preexisting_port_ids\u003dpreexisting_port_ids,"},{"line_number":680,"context_line":"            update_cells\u003dTrue)"},{"line_number":681,"context_line":"        # NOTE(danms): Only return info about ports we created in this run."},{"line_number":682,"context_line":"        # In the initial allocation case, this will be everything we created,"},{"line_number":683,"context_line":"        # and in later runs will only be what was created that time. Thus,"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa1b9901_34b5d7cf","line":680,"in_reply_to":"fa1b9901_bd0f952d","updated":"2015-08-22 18:06:08.000000000","message":"TBH I am not 100% sure.  I thought it was to ensure any nw info cache updates are always pushed down into the compute cell.  But that might be wrong.\n\nThis is based on patches against Juno from sorrison, that we forwarded into Kilo (and now Liberty.)  Maybe he can comment more intelligently on this.","commit_id":"51e3817bc7b058c4d15d38da2c434cc3d389860b"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"a138f26af7eda502e43ff0c89ff5b8646559605a","unresolved":false,"context_lines":[{"line_number":679,"context_line":"            port_ids\u003dports_in_requested_order,"},{"line_number":680,"context_line":"            admin_client\u003dadmin_client,"},{"line_number":681,"context_line":"            preexisting_port_ids\u003dpreexisting_port_ids,"},{"line_number":682,"context_line":"            update_cells\u003dTrue)"},{"line_number":683,"context_line":""},{"line_number":684,"context_line":"        # NOTE(danms): Only return info about ports we created in this run."},{"line_number":685,"context_line":"        # In the initial allocation case, this will be everything we created,"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_636cd49c","line":682,"updated":"2015-09-21 20:33:23.000000000","message":"There\u0027s surely a good reason to do this, but it\u0027s not clear why this is necessary in this patch.  Is it related to the attach/detach interface events specifically?","commit_id":"4866713a62c826e4825a2ab8edaffa537d1f8b76"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"ef11843bae6cb92a4c00c9c8a90654584486d2d1","unresolved":false,"context_lines":[{"line_number":679,"context_line":"            port_ids\u003dports_in_requested_order,"},{"line_number":680,"context_line":"            admin_client\u003dadmin_client,"},{"line_number":681,"context_line":"            preexisting_port_ids\u003dpreexisting_port_ids,"},{"line_number":682,"context_line":"            update_cells\u003dTrue)"},{"line_number":683,"context_line":""},{"line_number":684,"context_line":"        # NOTE(danms): Only return info about ports we created in this run."},{"line_number":685,"context_line":"        # In the initial allocation case, this will be everything we created,"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a1a9d01_270d8f3e","line":682,"in_reply_to":"ba15a1d1_414041a5","updated":"2015-09-25 18:38:02.000000000","message":"Right. So we should rebase this change against yours.\n\nThe original version of my patch added update_cells parameter to get_instance_nw_info: https://gist.github.com/mgagne/08679164845921f7107f\n\nIt looks like get_instance_nw_info got refactored to accept **kwargs which now shadows the lack of support for update_cells parameter in this change.","commit_id":"4866713a62c826e4825a2ab8edaffa537d1f8b76"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"561d328ac2ed8f1f9fa7c2501969591fbfc4bd9d","unresolved":false,"context_lines":[{"line_number":679,"context_line":"            port_ids\u003dports_in_requested_order,"},{"line_number":680,"context_line":"            admin_client\u003dadmin_client,"},{"line_number":681,"context_line":"            preexisting_port_ids\u003dpreexisting_port_ids,"},{"line_number":682,"context_line":"            update_cells\u003dTrue)"},{"line_number":683,"context_line":""},{"line_number":684,"context_line":"        # NOTE(danms): Only return info about ports we created in this run."},{"line_number":685,"context_line":"        # In the initial allocation case, this will be everything we created,"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_414041a5","line":682,"in_reply_to":"ba15a1d1_5db379e9","updated":"2015-09-23 19:51:17.000000000","message":"Okay.  My point is still that this change is related to the network info being available in the API.  It can stand on its own as a fix and should.\n\nHowever, looking through the code I couldn\u0027t see that update_cells would be honored anywhere in this call path.  We have a similar internal fix that we\u0027ve been trying to clean up and push up so I went ahead and did that at https://review.openstack.org/#/c/226941/.","commit_id":"4866713a62c826e4825a2ab8edaffa537d1f8b76"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"2b2f5a64b878a503358336a4cfc47d8b17730f94","unresolved":false,"context_lines":[{"line_number":679,"context_line":"            port_ids\u003dports_in_requested_order,"},{"line_number":680,"context_line":"            admin_client\u003dadmin_client,"},{"line_number":681,"context_line":"            preexisting_port_ids\u003dpreexisting_port_ids,"},{"line_number":682,"context_line":"            update_cells\u003dTrue)"},{"line_number":683,"context_line":""},{"line_number":684,"context_line":"        # NOTE(danms): Only return info about ports we created in this run."},{"line_number":685,"context_line":"        # In the initial allocation case, this will be everything we created,"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_c6e28e01","line":682,"in_reply_to":"ba15a1d1_636cd49c","updated":"2015-09-21 20:52:10.000000000","message":"Unless something changed in Nova between the time I wrote the patch and now, this is *required* for IPs to show up in the API cell. This is what mdorman mentionned in his comment above.\n\nSee my other comment in previous version of this patch [1]:\n\nI tested your patch and found that the network_info cache is not updated properly and therefore the IP is not made available in the instance details through the API.\n\nWe implemented a similar patch in OpenStack Icehouse which you can find here: https://gist.github.com/mgagne/08679164845921f7107f\n\nFeel free to include the network_info cache refresh part.\n\n[1] https://review.openstack.org/#/c/184155/","commit_id":"4866713a62c826e4825a2ab8edaffa537d1f8b76"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"51684a2f18df47559aef400ffcee1abc8df9a4fb","unresolved":false,"context_lines":[{"line_number":679,"context_line":"            port_ids\u003dports_in_requested_order,"},{"line_number":680,"context_line":"            admin_client\u003dadmin_client,"},{"line_number":681,"context_line":"            preexisting_port_ids\u003dpreexisting_port_ids,"},{"line_number":682,"context_line":"            update_cells\u003dTrue)"},{"line_number":683,"context_line":""},{"line_number":684,"context_line":"        # NOTE(danms): Only return info about ports we created in this run."},{"line_number":685,"context_line":"        # In the initial allocation case, this will be everything we created,"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_d16218d8","line":682,"in_reply_to":"ba15a1d1_c6e28e01","updated":"2015-09-22 17:46:19.000000000","message":"I can see the reasoning for having this change, what I don\u0027t understand is how it\u0027s related to the attach/detach events.  What I would suggest is pulling this change out into a separate patch and having the current patch depend on it if that\u0027s necessary.","commit_id":"4866713a62c826e4825a2ab8edaffa537d1f8b76"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"a639642cd9f58acdc799a47d1283f915a04bb2e0","unresolved":false,"context_lines":[{"line_number":679,"context_line":"            port_ids\u003dports_in_requested_order,"},{"line_number":680,"context_line":"            admin_client\u003dadmin_client,"},{"line_number":681,"context_line":"            preexisting_port_ids\u003dpreexisting_port_ids,"},{"line_number":682,"context_line":"            update_cells\u003dTrue)"},{"line_number":683,"context_line":""},{"line_number":684,"context_line":"        # NOTE(danms): Only return info about ports we created in this run."},{"line_number":685,"context_line":"        # In the initial allocation case, this will be everything we created,"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_5db379e9","line":682,"in_reply_to":"ba15a1d1_d16218d8","updated":"2015-09-22 19:20:40.000000000","message":"The commit title is wrong. It\u0027s not about attach/detach events, it\u0027s about attach/detach *support* with cells.","commit_id":"4866713a62c826e4825a2ab8edaffa537d1f8b76"}],"nova/tests/unit/fake_policy.py":[{"author":{"_account_id":3031,"name":"Sam Morrison","email":"sorrison@gmail.com","username":"sorrison"},"change_message_id":"ca70a6b0d19711467f238259d72a9e21b4ac211d","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    \"compute:attach_interface\": \"\","},{"line_number":64,"context_line":"    \"compute:detach_interface\": \"\","},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    \"compute:attach_interface\": \"\","},{"line_number":67,"context_line":"    \"compute:detach_interface\": \"\","},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    \"compute:set_admin_password\": \"\","}],"source_content_type":"text/x-python","patch_set":4,"id":"ba15a1d1_f29f8863","line":66,"updated":"2015-09-19 00:17:36.000000000","message":"This can go, it\u0027s defined above","commit_id":"cb7dc5b690076e612abb8d64eb007fe0fb715d54"},{"author":{"_account_id":9060,"name":"Mike Dorman","email":"dorm@dorm.org","username":"gd-mdorman"},"change_message_id":"c9ef429b88847d873b2f617560df1d7b3ec5760f","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    \"compute:attach_interface\": \"\","},{"line_number":64,"context_line":"    \"compute:detach_interface\": \"\","},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    \"compute:attach_interface\": \"\","},{"line_number":67,"context_line":"    \"compute:detach_interface\": \"\","},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    \"compute:set_admin_password\": \"\","}],"source_content_type":"text/x-python","patch_set":4,"id":"ba15a1d1_60bb7b76","line":66,"in_reply_to":"ba15a1d1_f29f8863","updated":"2015-09-21 15:11:24.000000000","message":"Done","commit_id":"cb7dc5b690076e612abb8d64eb007fe0fb715d54"}]}
