)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"d44d4cefbaf948de522c42d5ac1dd9ca2d19f256","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Pass instance host-id to Quantum using port bindings extension."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This is a nova change to pass the hostname on which the instance was started to"},{"line_number":10,"context_line":"Quantum. The assoociated quantum plugins will pass this hostname to"},{"line_number":11,"context_line":"hardware device vendors management stations to allow them to segment the network"},{"line_number":12,"context_line":"in a more precise manner (for example automatically trunk the vlan on the"},{"line_number":13,"context_line":"physical switch port connected to the compute host on which the VM instance was"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAAPH%2F%2F49w%3D","line":10,"updated":"2013-05-20 21:44:49.000000000","message":"associated","commit_id":"3576a29dfdd8082ce5594f87565665620e8f47af"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"dc492920747b1a8df023beed6579adf01925e280","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Pass instance host-id to Quantum using port bindings extension."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This is a nova change to pass the hostname on which the instance was started to"},{"line_number":10,"context_line":"Quantum. The assoociated quantum plugins will pass this hostname to"},{"line_number":11,"context_line":"hardware device vendors management stations to allow them to segment the network"},{"line_number":12,"context_line":"in a more precise manner (for example automatically trunk the vlan on the"},{"line_number":13,"context_line":"physical switch port connected to the compute host on which the VM instance was"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAAPH%2F%2F4m4%3D","line":10,"in_reply_to":"AAAAPH%2F%2F49w%3D","updated":"2013-05-21 00:25:49.000000000","message":"Done","commit_id":"3576a29dfdd8082ce5594f87565665620e8f47af"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"c51eef2547881bc63eadad210040845957704d25","unresolved":false,"context_lines":[{"line_number":14,"context_line":"started)."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I05012ac7abf67a94b515361a7ef7ac1063cb0ac3"},{"line_number":17,"context_line":"Implements: blueprint vm-host-quantum"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAAPH%2F%2F48s%3D","line":17,"updated":"2013-05-20 21:45:40.000000000","message":"nit: should be above the change-id.","commit_id":"3576a29dfdd8082ce5594f87565665620e8f47af"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"dc492920747b1a8df023beed6579adf01925e280","unresolved":false,"context_lines":[{"line_number":14,"context_line":"started)."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I05012ac7abf67a94b515361a7ef7ac1063cb0ac3"},{"line_number":17,"context_line":"Implements: blueprint vm-host-quantum"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAAPH%2F%2F4m0%3D","line":17,"in_reply_to":"AAAAPH%2F%2F48s%3D","updated":"2013-05-21 00:25:49.000000000","message":"Done","commit_id":"3576a29dfdd8082ce5594f87565665620e8f47af"}],"nova/network/quantumv2/api.py":[{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"d44d4cefbaf948de522c42d5ac1dd9ca2d19f256","unresolved":false,"context_lines":[{"line_number":790,"context_line":"            except Exception as ex:"},{"line_number":791,"context_line":"                msg \u003d _(\"Unable to update host of port %(portid)s with\""},{"line_number":792,"context_line":"                        \" failure: %(exception)s\")"},{"line_number":793,"context_line":"                LOG.debug(msg, {\u0027portid\u0027: p[\u0027id\u0027], \u0027exception\u0027: ex})"},{"line_number":794,"context_line":"                raise"},{"line_number":795,"context_line":""},{"line_number":796,"context_line":"    def add_network_to_project(self, context, project_id, network_uuid\u003dNone):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPH%2F%2F49I%3D","line":793,"updated":"2013-05-20 21:44:49.000000000","message":"nit: could use Log.exception instead.","commit_id":"3576a29dfdd8082ce5594f87565665620e8f47af"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"dc492920747b1a8df023beed6579adf01925e280","unresolved":false,"context_lines":[{"line_number":790,"context_line":"            except Exception as ex:"},{"line_number":791,"context_line":"                msg \u003d _(\"Unable to update host of port %(portid)s with\""},{"line_number":792,"context_line":"                        \" failure: %(exception)s\")"},{"line_number":793,"context_line":"                LOG.debug(msg, {\u0027portid\u0027: p[\u0027id\u0027], \u0027exception\u0027: ex})"},{"line_number":794,"context_line":"                raise"},{"line_number":795,"context_line":""},{"line_number":796,"context_line":"    def add_network_to_project(self, context, project_id, network_uuid\u003dNone):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPH%2F%2F4m8%3D","line":793,"in_reply_to":"AAAAPH%2F%2F49I%3D","updated":"2013-05-21 00:25:49.000000000","message":"Done,\nI will change line 285 too.","commit_id":"3576a29dfdd8082ce5594f87565665620e8f47af"},{"author":{"_account_id":191,"name":"Trey Morris","email":"trey.morris@rackspace.com","username":"tr3buchet"},"change_message_id":"ab1f6c892b7a451e9f4feb3a1421d972a8b0cfc3","unresolved":false,"context_lines":[{"line_number":283,"context_line":"                            msg \u003d _(\"Fail to delete port %(portid)s with\""},{"line_number":284,"context_line":"                                    \" failure: %(exception)s\")"},{"line_number":285,"context_line":"                            LOG.exception(msg, {\u0027portid\u0027: port_id,"},{"line_number":286,"context_line":"                                            \u0027exception\u0027: ex})"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"        nw_info \u003d self._get_instance_nw_info(context, instance, networks\u003dnets)"},{"line_number":289,"context_line":"        # NOTE(danms): Only return info about ports we created in this run."}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAPH%2F%2F1FY%3D","line":286,"updated":"2013-05-22 06:49:00.000000000","message":"this log.exception could be cleaned up like the one on line 337","commit_id":"9bf7dc4a5807935e06e5c7d2a33825846bc92f39"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"03a298733b1e8a269cbe91353e5349f74891c043","unresolved":false,"context_lines":[{"line_number":283,"context_line":"                            msg \u003d _(\"Fail to delete port %(portid)s with\""},{"line_number":284,"context_line":"                                    \" failure: %(exception)s\")"},{"line_number":285,"context_line":"                            LOG.exception(msg, {\u0027portid\u0027: port_id,"},{"line_number":286,"context_line":"                                            \u0027exception\u0027: ex})"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"        nw_info \u003d self._get_instance_nw_info(context, instance, networks\u003dnets)"},{"line_number":289,"context_line":"        # NOTE(danms): Only return info about ports we created in this run."}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAPH%2F%2F0zQ%3D","line":286,"in_reply_to":"AAAAPH%2F%2F1FY%3D","updated":"2013-05-22 07:10:42.000000000","message":"Done","commit_id":"9bf7dc4a5807935e06e5c7d2a33825846bc92f39"},{"author":{"_account_id":191,"name":"Trey Morris","email":"trey.morris@rackspace.com","username":"tr3buchet"},"change_message_id":"ab1f6c892b7a451e9f4feb3a1421d972a8b0cfc3","unresolved":false,"context_lines":[{"line_number":791,"context_line":"                msg \u003d _(\"Unable to update host of port %(portid)s with\""},{"line_number":792,"context_line":"                        \" failure: %(exception)s\")"},{"line_number":793,"context_line":"                LOG.exception(msg, {\u0027portid\u0027: p[\u0027id\u0027], \u0027exception\u0027: ex})"},{"line_number":794,"context_line":"                raise"},{"line_number":795,"context_line":""},{"line_number":796,"context_line":"    def add_network_to_project(self, context, project_id, network_uuid\u003dNone):"},{"line_number":797,"context_line":"        \"\"\"Force add a network to the project.\"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAPH%2F%2F02Q%3D","line":794,"updated":"2013-05-22 06:49:00.000000000","message":"is it your intention to fail if the update port doesn\u0027t work? This log.exception message could also be cleaner as at line 337.","commit_id":"9bf7dc4a5807935e06e5c7d2a33825846bc92f39"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"03a298733b1e8a269cbe91353e5349f74891c043","unresolved":false,"context_lines":[{"line_number":791,"context_line":"                msg \u003d _(\"Unable to update host of port %(portid)s with\""},{"line_number":792,"context_line":"                        \" failure: %(exception)s\")"},{"line_number":793,"context_line":"                LOG.exception(msg, {\u0027portid\u0027: p[\u0027id\u0027], \u0027exception\u0027: ex})"},{"line_number":794,"context_line":"                raise"},{"line_number":795,"context_line":""},{"line_number":796,"context_line":"    def add_network_to_project(self, context, project_id, network_uuid\u003dNone):"},{"line_number":797,"context_line":"        \"\"\"Force add a network to the project.\"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAPH%2F%2F0zc%3D","line":794,"in_reply_to":"AAAAPH%2F%2F02Q%3D","updated":"2013-05-22 07:10:42.000000000","message":"The host is important when port_binding is enabled, so I fail it. Done","commit_id":"9bf7dc4a5807935e06e5c7d2a33825846bc92f39"},{"author":{"_account_id":191,"name":"Trey Morris","email":"trey.morris@rackspace.com","username":"tr3buchet"},"change_message_id":"df74b330a3621423031f5272341486ba947c4a03","unresolved":false,"context_lines":[{"line_number":279,"context_line":"                    for port_id in created_port_ids:"},{"line_number":280,"context_line":"                        try:"},{"line_number":281,"context_line":"                            quantum.delete_port(port_id)"},{"line_number":282,"context_line":"                        except Exception as ex:"},{"line_number":283,"context_line":"                            msg \u003d _(\"Failed to delete port %(portid)s\")"},{"line_number":284,"context_line":"                            LOG.exception(msg, {\u0027portid\u0027: port_id})"},{"line_number":285,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAPH%2F%2Fye0%3D","line":282,"updated":"2013-05-22 23:46:49.000000000","message":"\" as ex\" is no longer needed","commit_id":"1c98e32976c9ea870e8c11749e946c07b9e28df3"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"f63102325e0c97218e912147e1ca92cc8d27c87b","unresolved":false,"context_lines":[{"line_number":279,"context_line":"                    for port_id in created_port_ids:"},{"line_number":280,"context_line":"                        try:"},{"line_number":281,"context_line":"                            quantum.delete_port(port_id)"},{"line_number":282,"context_line":"                        except Exception as ex:"},{"line_number":283,"context_line":"                            msg \u003d _(\"Failed to delete port %(portid)s\")"},{"line_number":284,"context_line":"                            LOG.exception(msg, {\u0027portid\u0027: port_id})"},{"line_number":285,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAPH%2F%2FydA%3D","line":282,"in_reply_to":"AAAAPH%2F%2Fye0%3D","updated":"2013-05-22 23:58:51.000000000","message":"Done","commit_id":"1c98e32976c9ea870e8c11749e946c07b9e28df3"},{"author":{"_account_id":191,"name":"Trey Morris","email":"trey.morris@rackspace.com","username":"tr3buchet"},"change_message_id":"df74b330a3621423031f5272341486ba947c4a03","unresolved":false,"context_lines":[{"line_number":785,"context_line":"            port_req_body \u003d {\u0027port\u0027: {\u0027binding:host_id\u0027: instance.get(\u0027host\u0027)}}"},{"line_number":786,"context_line":"            try:"},{"line_number":787,"context_line":"                quantum.update_port(p[\u0027id\u0027], port_req_body)"},{"line_number":788,"context_line":"            except Exception as ex:"},{"line_number":789,"context_line":"                msg \u003d _(\"Unable to update host of port %(portid)s\")"},{"line_number":790,"context_line":"                LOG.exception(msg, {\u0027portid\u0027: p[\u0027id\u0027]})"},{"line_number":791,"context_line":"                raise"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAPH%2F%2Fyew%3D","line":788,"updated":"2013-05-22 23:46:49.000000000","message":"\" as ex\" is no longer needed","commit_id":"1c98e32976c9ea870e8c11749e946c07b9e28df3"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"f63102325e0c97218e912147e1ca92cc8d27c87b","unresolved":false,"context_lines":[{"line_number":785,"context_line":"            port_req_body \u003d {\u0027port\u0027: {\u0027binding:host_id\u0027: instance.get(\u0027host\u0027)}}"},{"line_number":786,"context_line":"            try:"},{"line_number":787,"context_line":"                quantum.update_port(p[\u0027id\u0027], port_req_body)"},{"line_number":788,"context_line":"            except Exception as ex:"},{"line_number":789,"context_line":"                msg \u003d _(\"Unable to update host of port %(portid)s\")"},{"line_number":790,"context_line":"                LOG.exception(msg, {\u0027portid\u0027: p[\u0027id\u0027]})"},{"line_number":791,"context_line":"                raise"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAPH%2F%2FydE%3D","line":788,"in_reply_to":"AAAAPH%2F%2Fyew%3D","updated":"2013-05-22 23:58:51.000000000","message":"Done","commit_id":"1c98e32976c9ea870e8c11749e946c07b9e28df3"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"38e067dd0270efada49775b9f8a4f89fa91362da","unresolved":false,"context_lines":[{"line_number":153,"context_line":"            # Requires admin creds to set port bindings"},{"line_number":154,"context_line":"            quantum \u003d quantumv2.get_client(context, admin\u003dTrue)"},{"line_number":155,"context_line":"        else:"},{"line_number":156,"context_line":"            quantum \u003d quantumv2.get_client(context)"},{"line_number":157,"context_line":"        LOG.debug(_(\u0027allocate_for_instance() for %s\u0027),"},{"line_number":158,"context_line":"                  instance[\u0027display_name\u0027])"},{"line_number":159,"context_line":"        if not instance[\u0027project_id\u0027]:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPH%2F%2FuQI%3D","line":156,"updated":"2013-05-24 13:35:52.000000000","message":"Hmm, this seems strange. Why does all this code, which normally has a non-admin client, suddenly get one if this extension is enabled, with no other apparent changes?","commit_id":"33dc7bcfcba02441301ec9438d6e415b2dfa4001"},{"author":{"_account_id":191,"name":"Trey Morris","email":"trey.morris@rackspace.com","username":"tr3buchet"},"change_message_id":"f20a144e9689374afaf0a8f43e1459776d404dce","unresolved":false,"context_lines":[{"line_number":153,"context_line":"            # Requires admin creds to set port bindings"},{"line_number":154,"context_line":"            quantum \u003d quantumv2.get_client(context, admin\u003dTrue)"},{"line_number":155,"context_line":"        else:"},{"line_number":156,"context_line":"            quantum \u003d quantumv2.get_client(context)"},{"line_number":157,"context_line":"        LOG.debug(_(\u0027allocate_for_instance() for %s\u0027),"},{"line_number":158,"context_line":"                  instance[\u0027display_name\u0027])"},{"line_number":159,"context_line":"        if not instance[\u0027project_id\u0027]:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPH%2F%2Fo0Q%3D","line":156,"in_reply_to":"AAAAPH%2F%2Fq5c%3D","updated":"2013-05-28 20:32:06.000000000","message":"seems like it would be easy to replace quantum.update_port with a new function update_port which calls quantum.update_port after getting the correct client:\n def update_port(self, port_id, port_req_body):\n     if \u0027binding:host_id\u0027 in port_req_body[\u0027port\u0027]:\n         quantum \u003d quantumv2.get_client(context, admin\u003dTrue)\n     else:\n         quantum \u003d quantumv2.get_client(context)\n     quantum.update_port(port_id, port_req_body","commit_id":"33dc7bcfcba02441301ec9438d6e415b2dfa4001"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"763499da94f76f33dd14fd2047cc8d10d7c6f163","unresolved":false,"context_lines":[{"line_number":153,"context_line":"            # Requires admin creds to set port bindings"},{"line_number":154,"context_line":"            quantum \u003d quantumv2.get_client(context, admin\u003dTrue)"},{"line_number":155,"context_line":"        else:"},{"line_number":156,"context_line":"            quantum \u003d quantumv2.get_client(context)"},{"line_number":157,"context_line":"        LOG.debug(_(\u0027allocate_for_instance() for %s\u0027),"},{"line_number":158,"context_line":"                  instance[\u0027display_name\u0027])"},{"line_number":159,"context_line":"        if not instance[\u0027project_id\u0027]:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPH%2F%2Fq5c%3D","line":156,"in_reply_to":"AAAAPH%2F%2FrBY%3D","updated":"2013-05-28 03:24:00.000000000","message":"I didn\u0027t write a concrete example. What I thought is as follows. We don\u0027t need two calls of update_port.\n\nquantum \u003d quantumv2.get_client()  (L.156)\nquantum.show_port (L.170)\nquantum.list_networks (L.115)\nquantum.list_networks (L.120)\nquantum.list_security_groups (L.197)\nquantumv2.elevated.update_port or quantum.create_port  (L.248) \u003c----- needs admin context\n\nWe need two tokens (user context and admin context) to do this. It requires two keystone access but we can reduce keystone access for admin token by caching the token. The recent change in quantumclient allows us to retrieve auth_token from Client object, so we can cache admin auth_token in nova/network/quantumv2/__init__ and reuse it.","commit_id":"33dc7bcfcba02441301ec9438d6e415b2dfa4001"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"e5bd3af0bc1f1a44712e61d29ab03a66830631e3","unresolved":false,"context_lines":[{"line_number":153,"context_line":"            # Requires admin creds to set port bindings"},{"line_number":154,"context_line":"            quantum \u003d quantumv2.get_client(context, admin\u003dTrue)"},{"line_number":155,"context_line":"        else:"},{"line_number":156,"context_line":"            quantum \u003d quantumv2.get_client(context)"},{"line_number":157,"context_line":"        LOG.debug(_(\u0027allocate_for_instance() for %s\u0027),"},{"line_number":158,"context_line":"                  instance[\u0027display_name\u0027])"},{"line_number":159,"context_line":"        if not instance[\u0027project_id\u0027]:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPH%2F%2Frbw%3D","line":156,"in_reply_to":"AAAAPH%2F%2FryQ%3D","updated":"2013-05-27 14:32:17.000000000","message":"Agreed!","commit_id":"33dc7bcfcba02441301ec9438d6e415b2dfa4001"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"30174ae38c100299f1ae17d5c70b2ad31e2226b6","unresolved":false,"context_lines":[{"line_number":153,"context_line":"            # Requires admin creds to set port bindings"},{"line_number":154,"context_line":"            quantum \u003d quantumv2.get_client(context, admin\u003dTrue)"},{"line_number":155,"context_line":"        else:"},{"line_number":156,"context_line":"            quantum \u003d quantumv2.get_client(context)"},{"line_number":157,"context_line":"        LOG.debug(_(\u0027allocate_for_instance() for %s\u0027),"},{"line_number":158,"context_line":"                  instance[\u0027display_name\u0027])"},{"line_number":159,"context_line":"        if not instance[\u0027project_id\u0027]:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPH%2F%2FrBY%3D","line":156,"in_reply_to":"AAAAPH%2F%2FryQ%3D","updated":"2013-05-28 00:14:55.000000000","message":"In fact, we put the quantum \u003d quantumv2.get_client(context, admin\u003dTrue) at line 152 instead of just above update_port so that we can reduce one quantumve.get_client() call.","commit_id":"33dc7bcfcba02441301ec9438d6e415b2dfa4001"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"6c2c9dff059f8788e2d034dd00a133e36116d28d","unresolved":false,"context_lines":[{"line_number":153,"context_line":"            # Requires admin creds to set port bindings"},{"line_number":154,"context_line":"            quantum \u003d quantumv2.get_client(context, admin\u003dTrue)"},{"line_number":155,"context_line":"        else:"},{"line_number":156,"context_line":"            quantum \u003d quantumv2.get_client(context)"},{"line_number":157,"context_line":"        LOG.debug(_(\u0027allocate_for_instance() for %s\u0027),"},{"line_number":158,"context_line":"                  instance[\u0027display_name\u0027])"},{"line_number":159,"context_line":"        if not instance[\u0027project_id\u0027]:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPH%2F%2FsmI%3D","line":156,"in_reply_to":"AAAAPH%2F%2Fs%2BU%3D","updated":"2013-05-25 22:52:42.000000000","message":"Right, but doesn\u0027t this cause the code to always use the admin client if that extension is enabled? That seems wrong, but perhaps I don\u0027t understand the relationship between quantum admin and nova admin.","commit_id":"33dc7bcfcba02441301ec9438d6e415b2dfa4001"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"361d60a4387881a1af065af4fcf06d020985edd9","unresolved":false,"context_lines":[{"line_number":153,"context_line":"            # Requires admin creds to set port bindings"},{"line_number":154,"context_line":"            quantum \u003d quantumv2.get_client(context, admin\u003dTrue)"},{"line_number":155,"context_line":"        else:"},{"line_number":156,"context_line":"            quantum \u003d quantumv2.get_client(context)"},{"line_number":157,"context_line":"        LOG.debug(_(\u0027allocate_for_instance() for %s\u0027),"},{"line_number":158,"context_line":"                  instance[\u0027display_name\u0027])"},{"line_number":159,"context_line":"        if not instance[\u0027project_id\u0027]:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPH%2F%2FryQ%3D","line":156,"in_reply_to":"AAAAPH%2F%2FsEg%3D","updated":"2013-05-27 08:48:39.000000000","message":"From the point of its behavior, there is no change whether we use service context (tenant\u003dservice, user\u003dquantum in nova.conf) or user context. But from the maintenance perspective it is safer to use user context by default.\n\nIt would be nice if we can do:\n- quantum \u003d quantumv2.get_client(context)\n- quantum.show_port()\n- quantum.elevated.update_port()   # if admin context is required","commit_id":"33dc7bcfcba02441301ec9438d6e415b2dfa4001"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"4ea3d152986e0437a2383b0a14a55cc7b08dec17","unresolved":false,"context_lines":[{"line_number":153,"context_line":"            # Requires admin creds to set port bindings"},{"line_number":154,"context_line":"            quantum \u003d quantumv2.get_client(context, admin\u003dTrue)"},{"line_number":155,"context_line":"        else:"},{"line_number":156,"context_line":"            quantum \u003d quantumv2.get_client(context)"},{"line_number":157,"context_line":"        LOG.debug(_(\u0027allocate_for_instance() for %s\u0027),"},{"line_number":158,"context_line":"                  instance[\u0027display_name\u0027])"},{"line_number":159,"context_line":"        if not instance[\u0027project_id\u0027]:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPH%2F%2FsEY%3D","line":156,"in_reply_to":"AAAAPH%2F%2FskE%3D","updated":"2013-05-27 01:16:07.000000000","message":"the quantum admin client is just limited this function.","commit_id":"33dc7bcfcba02441301ec9438d6e415b2dfa4001"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"deada7bde02aee3b16dd9e6d024f7b5792ffe3ca","unresolved":false,"context_lines":[{"line_number":153,"context_line":"            # Requires admin creds to set port bindings"},{"line_number":154,"context_line":"            quantum \u003d quantumv2.get_client(context, admin\u003dTrue)"},{"line_number":155,"context_line":"        else:"},{"line_number":156,"context_line":"            quantum \u003d quantumv2.get_client(context)"},{"line_number":157,"context_line":"        LOG.debug(_(\u0027allocate_for_instance() for %s\u0027),"},{"line_number":158,"context_line":"                  instance[\u0027display_name\u0027])"},{"line_number":159,"context_line":"        if not instance[\u0027project_id\u0027]:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPH%2F%2FskE%3D","line":156,"in_reply_to":"AAAAPH%2F%2FsmI%3D","updated":"2013-05-26 01:56:06.000000000","message":"I agree it seems weird though all the queries in this file should include \nsearch_opts \u003d { \u0027tenant_id\u0027: instance[\u0027project_id\u0027]} to limit it to just to that tenants results. Also, the response is only seen my the nova-compute node (so it\u0027s not like it\u0027s leaking to other places).","commit_id":"33dc7bcfcba02441301ec9438d6e415b2dfa4001"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"4ea3d152986e0437a2383b0a14a55cc7b08dec17","unresolved":false,"context_lines":[{"line_number":153,"context_line":"            # Requires admin creds to set port bindings"},{"line_number":154,"context_line":"            quantum \u003d quantumv2.get_client(context, admin\u003dTrue)"},{"line_number":155,"context_line":"        else:"},{"line_number":156,"context_line":"            quantum \u003d quantumv2.get_client(context)"},{"line_number":157,"context_line":"        LOG.debug(_(\u0027allocate_for_instance() for %s\u0027),"},{"line_number":158,"context_line":"                  instance[\u0027display_name\u0027])"},{"line_number":159,"context_line":"        if not instance[\u0027project_id\u0027]:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPH%2F%2FsEg%3D","line":156,"in_reply_to":"AAAAPH%2F%2FsmI%3D","updated":"2013-05-27 01:16:07.000000000","message":"the credentials in nova.conf for quantum need to be a admin role one. quantum admin here is from that credentials. It has nothing nova admin.","commit_id":"33dc7bcfcba02441301ec9438d6e415b2dfa4001"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"6397741decf5a7a89d468ab8063043c14dcb0764","unresolved":false,"context_lines":[{"line_number":153,"context_line":"            # Requires admin creds to set port bindings"},{"line_number":154,"context_line":"            quantum \u003d quantumv2.get_client(context, admin\u003dTrue)"},{"line_number":155,"context_line":"        else:"},{"line_number":156,"context_line":"            quantum \u003d quantumv2.get_client(context)"},{"line_number":157,"context_line":"        LOG.debug(_(\u0027allocate_for_instance() for %s\u0027),"},{"line_number":158,"context_line":"                  instance[\u0027display_name\u0027])"},{"line_number":159,"context_line":"        if not instance[\u0027project_id\u0027]:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPH%2F%2Fs%2BU%3D","line":156,"in_reply_to":"AAAAPH%2F%2FuQI%3D","updated":"2013-05-25 00:26:10.000000000","message":"In quantum, we limit the privilege to admin guys if he/she wants to set host field of a port.","commit_id":"33dc7bcfcba02441301ec9438d6e415b2dfa4001"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"361d60a4387881a1af065af4fcf06d020985edd9","unresolved":false,"context_lines":[{"line_number":271,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":272,"context_line":"                    for port_id in touched_port_ids:"},{"line_number":273,"context_line":"                        port_in_server \u003d quantum.show_port(port_id).get(\u0027port\u0027)"},{"line_number":274,"context_line":"                        if not port_in_server:"},{"line_number":275,"context_line":"                            raise Exception(_(\u0027Port not found\u0027))"},{"line_number":276,"context_line":"                        port_req_body \u003d {\u0027port\u0027: {\u0027device_id\u0027: None}}"},{"line_number":277,"context_line":"                        quantum.update_port(port_id, port_req_body)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPH%2F%2Frw4%3D","line":274,"updated":"2013-05-27 08:48:39.000000000","message":"When does this if statement become True? If there is no port on quantum, show_port raises an exception.","commit_id":"33dc7bcfcba02441301ec9438d6e415b2dfa4001"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"30174ae38c100299f1ae17d5c70b2ad31e2226b6","unresolved":false,"context_lines":[{"line_number":271,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":272,"context_line":"                    for port_id in touched_port_ids:"},{"line_number":273,"context_line":"                        port_in_server \u003d quantum.show_port(port_id).get(\u0027port\u0027)"},{"line_number":274,"context_line":"                        if not port_in_server:"},{"line_number":275,"context_line":"                            raise Exception(_(\u0027Port not found\u0027))"},{"line_number":276,"context_line":"                        port_req_body \u003d {\u0027port\u0027: {\u0027device_id\u0027: None}}"},{"line_number":277,"context_line":"                        quantum.update_port(port_id, port_req_body)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPH%2F%2FrBo%3D","line":274,"in_reply_to":"AAAAPH%2F%2Frw4%3D","updated":"2013-05-28 00:14:55.000000000","message":"Done","commit_id":"33dc7bcfcba02441301ec9438d6e415b2dfa4001"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"361d60a4387881a1af065af4fcf06d020985edd9","unresolved":false,"context_lines":[{"line_number":273,"context_line":"                        port_in_server \u003d quantum.show_port(port_id).get(\u0027port\u0027)"},{"line_number":274,"context_line":"                        if not port_in_server:"},{"line_number":275,"context_line":"                            raise Exception(_(\u0027Port not found\u0027))"},{"line_number":276,"context_line":"                        port_req_body \u003d {\u0027port\u0027: {\u0027device_id\u0027: None}}"},{"line_number":277,"context_line":"                        quantum.update_port(port_id, port_req_body)"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"                    for port_id in created_port_ids:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPH%2F%2Frws%3D","line":276,"updated":"2013-05-27 08:48:39.000000000","message":"Is it better to clear binding:host_id attribute?","commit_id":"33dc7bcfcba02441301ec9438d6e415b2dfa4001"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"30174ae38c100299f1ae17d5c70b2ad31e2226b6","unresolved":false,"context_lines":[{"line_number":273,"context_line":"                        port_in_server \u003d quantum.show_port(port_id).get(\u0027port\u0027)"},{"line_number":274,"context_line":"                        if not port_in_server:"},{"line_number":275,"context_line":"                            raise Exception(_(\u0027Port not found\u0027))"},{"line_number":276,"context_line":"                        port_req_body \u003d {\u0027port\u0027: {\u0027device_id\u0027: None}}"},{"line_number":277,"context_line":"                        quantum.update_port(port_id, port_req_body)"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"                    for port_id in created_port_ids:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPH%2F%2FrBk%3D","line":276,"in_reply_to":"AAAAPH%2F%2Frws%3D","updated":"2013-05-28 00:14:55.000000000","message":"Done","commit_id":"33dc7bcfcba02441301ec9438d6e415b2dfa4001"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"361d60a4387881a1af065af4fcf06d020985edd9","unresolved":false,"context_lines":[{"line_number":280,"context_line":"                        try:"},{"line_number":281,"context_line":"                            quantum.delete_port(port_id)"},{"line_number":282,"context_line":"                        except Exception:"},{"line_number":283,"context_line":"                            msg \u003d _(\"Failed to delete port %(portid)s\")"},{"line_number":284,"context_line":"                            LOG.exception(msg, {\u0027portid\u0027: port_id})"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"        nw_info \u003d self._get_instance_nw_info(context, instance, networks\u003dnets)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPH%2F%2FryM%3D","line":283,"updated":"2013-05-27 08:48:39.000000000","message":"%(portid)s -\u003e %s","commit_id":"33dc7bcfcba02441301ec9438d6e415b2dfa4001"},{"author":{"_account_id":191,"name":"Trey Morris","email":"trey.morris@rackspace.com","username":"tr3buchet"},"change_message_id":"f20a144e9689374afaf0a8f43e1459776d404dce","unresolved":false,"context_lines":[{"line_number":280,"context_line":"                        try:"},{"line_number":281,"context_line":"                            quantum.delete_port(port_id)"},{"line_number":282,"context_line":"                        except Exception:"},{"line_number":283,"context_line":"                            msg \u003d _(\"Failed to delete port %(portid)s\")"},{"line_number":284,"context_line":"                            LOG.exception(msg, {\u0027portid\u0027: port_id})"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"        nw_info \u003d self._get_instance_nw_info(context, instance, networks\u003dnets)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPH%2F%2Fo4Q%3D","line":283,"in_reply_to":"AAAAPH%2F%2FrBs%3D","updated":"2013-05-28 20:32:06.000000000","message":"but you would be passing in port_id immediately below, maintaining readability.","commit_id":"33dc7bcfcba02441301ec9438d6e415b2dfa4001"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"30174ae38c100299f1ae17d5c70b2ad31e2226b6","unresolved":false,"context_lines":[{"line_number":280,"context_line":"                        try:"},{"line_number":281,"context_line":"                            quantum.delete_port(port_id)"},{"line_number":282,"context_line":"                        except Exception:"},{"line_number":283,"context_line":"                            msg \u003d _(\"Failed to delete port %(portid)s\")"},{"line_number":284,"context_line":"                            LOG.exception(msg, {\u0027portid\u0027: port_id})"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"        nw_info \u003d self._get_instance_nw_info(context, instance, networks\u003dnets)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPH%2F%2FrBs%3D","line":283,"in_reply_to":"AAAAPH%2F%2FryM%3D","updated":"2013-05-28 00:14:55.000000000","message":"why? the %(portid)s is more obvious than just %s, I think.","commit_id":"33dc7bcfcba02441301ec9438d6e415b2dfa4001"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"361d60a4387881a1af065af4fcf06d020985edd9","unresolved":false,"context_lines":[{"line_number":333,"context_line":"            try:"},{"line_number":334,"context_line":"                quantumv2.get_client(context).delete_port(port[\u0027id\u0027])"},{"line_number":335,"context_line":"            except Exception:"},{"line_number":336,"context_line":"                LOG.exception(_(\"Failed to delete quantum port %(portid)s \"),"},{"line_number":337,"context_line":"                              {\u0027portid\u0027: port[\u0027id\u0027]})"},{"line_number":338,"context_line":""},{"line_number":339,"context_line":"    @refresh_cache"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPH%2F%2Frxk%3D","line":336,"updated":"2013-05-27 08:48:39.000000000","message":"%(portid)s -\u003e %s","commit_id":"33dc7bcfcba02441301ec9438d6e415b2dfa4001"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"763499da94f76f33dd14fd2047cc8d10d7c6f163","unresolved":false,"context_lines":[{"line_number":333,"context_line":"            try:"},{"line_number":334,"context_line":"                quantumv2.get_client(context).delete_port(port[\u0027id\u0027])"},{"line_number":335,"context_line":"            except Exception:"},{"line_number":336,"context_line":"                LOG.exception(_(\"Failed to delete quantum port %(portid)s \"),"},{"line_number":337,"context_line":"                              {\u0027portid\u0027: port[\u0027id\u0027]})"},{"line_number":338,"context_line":""},{"line_number":339,"context_line":"    @refresh_cache"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPH%2F%2Fq34%3D","line":336,"in_reply_to":"AAAAPH%2F%2FrB0%3D","updated":"2013-05-28 03:24:00.000000000","message":"In a case where a string contains one conversion specifier, we usually use %s style rather than %(xxx)s style. I18N section in  HACKING.rst says so. Do I miss something?","commit_id":"33dc7bcfcba02441301ec9438d6e415b2dfa4001"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"30174ae38c100299f1ae17d5c70b2ad31e2226b6","unresolved":false,"context_lines":[{"line_number":333,"context_line":"            try:"},{"line_number":334,"context_line":"                quantumv2.get_client(context).delete_port(port[\u0027id\u0027])"},{"line_number":335,"context_line":"            except Exception:"},{"line_number":336,"context_line":"                LOG.exception(_(\"Failed to delete quantum port %(portid)s \"),"},{"line_number":337,"context_line":"                              {\u0027portid\u0027: port[\u0027id\u0027]})"},{"line_number":338,"context_line":""},{"line_number":339,"context_line":"    @refresh_cache"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPH%2F%2FrB0%3D","line":336,"in_reply_to":"AAAAPH%2F%2Frxk%3D","updated":"2013-05-28 00:14:55.000000000","message":"why?","commit_id":"33dc7bcfcba02441301ec9438d6e415b2dfa4001"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"361d60a4387881a1af065af4fcf06d020985edd9","unresolved":false,"context_lines":[{"line_number":786,"context_line":"            try:"},{"line_number":787,"context_line":"                quantum.update_port(p[\u0027id\u0027], port_req_body)"},{"line_number":788,"context_line":"            except Exception:"},{"line_number":789,"context_line":"                msg \u003d _(\"Unable to update host of port %(portid)s\")"},{"line_number":790,"context_line":"                LOG.exception(msg, {\u0027portid\u0027: p[\u0027id\u0027]})"},{"line_number":791,"context_line":"                raise"},{"line_number":792,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPH%2F%2Frxg%3D","line":789,"updated":"2013-05-27 08:48:39.000000000","message":"Ditto","commit_id":"33dc7bcfcba02441301ec9438d6e415b2dfa4001"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"30174ae38c100299f1ae17d5c70b2ad31e2226b6","unresolved":false,"context_lines":[{"line_number":786,"context_line":"            try:"},{"line_number":787,"context_line":"                quantum.update_port(p[\u0027id\u0027], port_req_body)"},{"line_number":788,"context_line":"            except Exception:"},{"line_number":789,"context_line":"                msg \u003d _(\"Unable to update host of port %(portid)s\")"},{"line_number":790,"context_line":"                LOG.exception(msg, {\u0027portid\u0027: p[\u0027id\u0027]})"},{"line_number":791,"context_line":"                raise"},{"line_number":792,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPH%2F%2FrBw%3D","line":789,"in_reply_to":"AAAAPH%2F%2Frxg%3D","updated":"2013-05-28 00:14:55.000000000","message":"why?","commit_id":"33dc7bcfcba02441301ec9438d6e415b2dfa4001"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"730370f5d9c8273cac377814e0f212fc543a0d32","unresolved":false,"context_lines":[{"line_number":328,"context_line":"            instance_type \u003d flavors.extract_instance_type(instance)"},{"line_number":329,"context_line":"            rxtx_factor \u003d instance_type.get(\u0027rxtx_factor\u0027)"},{"line_number":330,"context_line":"            port_req_body[\u0027port\u0027][\u0027rxtx_factor\u0027] \u003d rxtx_factor"},{"line_number":331,"context_line":"        if PORTBINDING_EXT in self.extensions:"},{"line_number":332,"context_line":"            port_req_body[\u0027port\u0027][\u0027binding:host_id\u0027] \u003d instance.get(\u0027host\u0027)"},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"    def deallocate_for_instance(self, context, instance, **kwargs):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAPX%2F%2F94I%3D","line":331,"updated":"2013-06-04 23:27:48.000000000","message":"wouldn\u0027t be better to rely on  _has_port_binding_extension?","commit_id":"02863d5076319d7b2d67b8806ecef397db63bf95"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"aef810ff9973399263a30e5a77b0aada68dc09ed","unresolved":false,"context_lines":[{"line_number":328,"context_line":"            instance_type \u003d flavors.extract_instance_type(instance)"},{"line_number":329,"context_line":"            rxtx_factor \u003d instance_type.get(\u0027rxtx_factor\u0027)"},{"line_number":330,"context_line":"            port_req_body[\u0027port\u0027][\u0027rxtx_factor\u0027] \u003d rxtx_factor"},{"line_number":331,"context_line":"        if PORTBINDING_EXT in self.extensions:"},{"line_number":332,"context_line":"            port_req_body[\u0027port\u0027][\u0027binding:host_id\u0027] \u003d instance.get(\u0027host\u0027)"},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"    def deallocate_for_instance(self, context, instance, **kwargs):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAPX%2F%2F9ow%3D","line":331,"in_reply_to":"AAAAPX%2F%2F94I%3D","updated":"2013-06-05 02:56:37.000000000","message":"_has_port_binding_extension(self) called the self._refresh_quantum_extensions_cache().","commit_id":"02863d5076319d7b2d67b8806ecef397db63bf95"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"ae5cb6deba305e1a2097862f05627a8043af3ed0","unresolved":false,"context_lines":[{"line_number":343,"context_line":"                quantumv2.get_client(context).delete_port(port[\u0027id\u0027])"},{"line_number":344,"context_line":"            except Exception:"},{"line_number":345,"context_line":"                LOG.exception(_(\"Failed to delete quantum port %s \"),"},{"line_number":346,"context_line":"                              port[\u0027id\u0027])"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"    @refresh_cache"},{"line_number":349,"context_line":"    def allocate_port_for_instance(self, context, instance, port_id,"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAPX%2F%2Fr4Y%3D","line":346,"updated":"2013-06-12 20:03:11.000000000","message":"I\u0027d prefer you revert the change to the format string and argument here.  Also, while you\u0027re at it, it might not be a bad idea to eliminate the trailing whitespace from the message…","commit_id":"1ab26ae3c657b11e803f16b7ce5c430ef9f3bdad"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"0e7a8488cf836894c4800e4eb70989fe67d56002","unresolved":false,"context_lines":[{"line_number":343,"context_line":"                quantumv2.get_client(context).delete_port(port[\u0027id\u0027])"},{"line_number":344,"context_line":"            except Exception:"},{"line_number":345,"context_line":"                LOG.exception(_(\"Failed to delete quantum port %s \"),"},{"line_number":346,"context_line":"                              port[\u0027id\u0027])"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"    @refresh_cache"},{"line_number":349,"context_line":"    def allocate_port_for_instance(self, context, instance, port_id,"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAPX%2F%2Fq6g%3D","line":346,"in_reply_to":"AAAAPX%2F%2Fr4Y%3D","updated":"2013-06-13 03:17:11.000000000","message":"Done","commit_id":"1ab26ae3c657b11e803f16b7ce5c430ef9f3bdad"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"040ff8e73f5460eb73cb60c5280141f94b642dba","unresolved":false,"context_lines":[{"line_number":281,"context_line":"                            else:"},{"line_number":282,"context_line":"                                port_client \u003d quantum"},{"line_number":283,"context_line":"                            port_client.update_port(port_id, port_req_body)"},{"line_number":284,"context_line":"                        except Exception:"},{"line_number":285,"context_line":"                            msg \u003d _(\"Failed to update port %s\")"},{"line_number":286,"context_line":"                            LOG.exception(msg, port_id)"},{"line_number":287,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAPn%2F%2F3y4%3D","line":284,"updated":"2013-06-19 11:31:25.000000000","message":"do we really not know the exception type better than this?","commit_id":"da83d5c3d4f7d07a8b65b49e8b34af5cd5c588bf"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"a1ac13920459cee324ccc51c608a544cffb539e5","unresolved":false,"context_lines":[{"line_number":281,"context_line":"                            else:"},{"line_number":282,"context_line":"                                port_client \u003d quantum"},{"line_number":283,"context_line":"                            port_client.update_port(port_id, port_req_body)"},{"line_number":284,"context_line":"                        except Exception:"},{"line_number":285,"context_line":"                            msg \u003d _(\"Failed to update port %s\")"},{"line_number":286,"context_line":"                            LOG.exception(msg, port_id)"},{"line_number":287,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAPn%2F%2F3j4%3D","line":284,"in_reply_to":"AAAAPn%2F%2F3nU%3D","updated":"2013-06-19 13:24:31.000000000","message":"they can be system exception, such as socket exception and so on. In addition, all the codes are using this style in this module.","commit_id":"da83d5c3d4f7d07a8b65b49e8b34af5cd5c588bf"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"cd01c6023c66e8d6735348b9cc579d208de053b8","unresolved":false,"context_lines":[{"line_number":281,"context_line":"                            else:"},{"line_number":282,"context_line":"                                port_client \u003d quantum"},{"line_number":283,"context_line":"                            port_client.update_port(port_id, port_req_body)"},{"line_number":284,"context_line":"                        except Exception:"},{"line_number":285,"context_line":"                            msg \u003d _(\"Failed to update port %s\")"},{"line_number":286,"context_line":"                            LOG.exception(msg, port_id)"},{"line_number":287,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAPn%2F%2F3nU%3D","line":284,"in_reply_to":"AAAAPn%2F%2F3wg%3D","updated":"2013-06-19 13:07:10.000000000","message":"we must know that they can only be Quantum Exceptions, right?","commit_id":"da83d5c3d4f7d07a8b65b49e8b34af5cd5c588bf"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"5f079c73878c1ea8f09b39d3b3f2a2227e095431","unresolved":false,"context_lines":[{"line_number":281,"context_line":"                            else:"},{"line_number":282,"context_line":"                                port_client \u003d quantum"},{"line_number":283,"context_line":"                            port_client.update_port(port_id, port_req_body)"},{"line_number":284,"context_line":"                        except Exception:"},{"line_number":285,"context_line":"                            msg \u003d _(\"Failed to update port %s\")"},{"line_number":286,"context_line":"                            LOG.exception(msg, port_id)"},{"line_number":287,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAPn%2F%2F3wg%3D","line":284,"in_reply_to":"AAAAPn%2F%2F3y4%3D","updated":"2013-06-19 11:55:38.000000000","message":"there will be too many kind of exception types here and we don\u0027t want to handle them differently.","commit_id":"da83d5c3d4f7d07a8b65b49e8b34af5cd5c588bf"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"040ff8e73f5460eb73cb60c5280141f94b642dba","unresolved":false,"context_lines":[{"line_number":328,"context_line":"            instance_type \u003d flavors.extract_flavor(instance)"},{"line_number":329,"context_line":"            rxtx_factor \u003d instance_type.get(\u0027rxtx_factor\u0027)"},{"line_number":330,"context_line":"            port_req_body[\u0027port\u0027][\u0027rxtx_factor\u0027] \u003d rxtx_factor"},{"line_number":331,"context_line":"        if PORTBINDING_EXT in self.extensions:"},{"line_number":332,"context_line":"            port_req_body[\u0027port\u0027][\u0027binding:host_id\u0027] \u003d instance.get(\u0027host\u0027)"},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"    def deallocate_for_instance(self, context, instance, **kwargs):"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAPn%2F%2F3zA%3D","line":331,"updated":"2013-06-19 11:31:25.000000000","message":"so we have a utility function for this right above here, why isn\u0027t this using that?","commit_id":"da83d5c3d4f7d07a8b65b49e8b34af5cd5c588bf"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"a1ac13920459cee324ccc51c608a544cffb539e5","unresolved":false,"context_lines":[{"line_number":328,"context_line":"            instance_type \u003d flavors.extract_flavor(instance)"},{"line_number":329,"context_line":"            rxtx_factor \u003d instance_type.get(\u0027rxtx_factor\u0027)"},{"line_number":330,"context_line":"            port_req_body[\u0027port\u0027][\u0027rxtx_factor\u0027] \u003d rxtx_factor"},{"line_number":331,"context_line":"        if PORTBINDING_EXT in self.extensions:"},{"line_number":332,"context_line":"            port_req_body[\u0027port\u0027][\u0027binding:host_id\u0027] \u003d instance.get(\u0027host\u0027)"},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"    def deallocate_for_instance(self, context, instance, **kwargs):"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAPn%2F%2F3j0%3D","line":331,"in_reply_to":"AAAAPn%2F%2F3nM%3D","updated":"2013-06-19 13:24:31.000000000","message":"can u give me a solution here?","commit_id":"da83d5c3d4f7d07a8b65b49e8b34af5cd5c588bf"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"cd01c6023c66e8d6735348b9cc579d208de053b8","unresolved":false,"context_lines":[{"line_number":328,"context_line":"            instance_type \u003d flavors.extract_flavor(instance)"},{"line_number":329,"context_line":"            rxtx_factor \u003d instance_type.get(\u0027rxtx_factor\u0027)"},{"line_number":330,"context_line":"            port_req_body[\u0027port\u0027][\u0027rxtx_factor\u0027] \u003d rxtx_factor"},{"line_number":331,"context_line":"        if PORTBINDING_EXT in self.extensions:"},{"line_number":332,"context_line":"            port_req_body[\u0027port\u0027][\u0027binding:host_id\u0027] \u003d instance.get(\u0027host\u0027)"},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"    def deallocate_for_instance(self, context, instance, **kwargs):"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAPn%2F%2F3nM%3D","line":331,"in_reply_to":"AAAAPn%2F%2F3wY%3D","updated":"2013-06-19 13:07:10.000000000","message":"right, but that leaves code duplication. I don\u0027t like having that if in test in 2 places.","commit_id":"da83d5c3d4f7d07a8b65b49e8b34af5cd5c588bf"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"5f079c73878c1ea8f09b39d3b3f2a2227e095431","unresolved":false,"context_lines":[{"line_number":328,"context_line":"            instance_type \u003d flavors.extract_flavor(instance)"},{"line_number":329,"context_line":"            rxtx_factor \u003d instance_type.get(\u0027rxtx_factor\u0027)"},{"line_number":330,"context_line":"            port_req_body[\u0027port\u0027][\u0027rxtx_factor\u0027] \u003d rxtx_factor"},{"line_number":331,"context_line":"        if PORTBINDING_EXT in self.extensions:"},{"line_number":332,"context_line":"            port_req_body[\u0027port\u0027][\u0027binding:host_id\u0027] \u003d instance.get(\u0027host\u0027)"},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"    def deallocate_for_instance(self, context, instance, **kwargs):"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAPn%2F%2F3wY%3D","line":331,"in_reply_to":"AAAAPn%2F%2F3zA%3D","updated":"2013-06-19 11:55:38.000000000","message":"are u referring to _has_port_binding_extension? it has one more function call which has been called in _populate_quantum_extension_values()","commit_id":"da83d5c3d4f7d07a8b65b49e8b34af5cd5c588bf"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"ed977758edd940191e746ceb7330a0b0f7472484","unresolved":false,"context_lines":[{"line_number":77,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"NET_EXTERNAL \u003d \u0027router:external\u0027"},{"line_number":80,"context_line":"PORTBINDING_EXT \u003d \u0027Port Binding\u0027"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"refresh_cache \u003d network_api.refresh_cache"},{"line_number":83,"context_line":"update_instance_info_cache \u003d network_api.update_instance_cache_with_nw_info"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAPn%2F%2FnTM%3D","line":80,"updated":"2013-06-26 18:17:42.000000000","message":"why is this defined here? I think it should belong to somewhere else, either its own extension file or in the constants.py","commit_id":"c9ced20e7986c727c5099462804d121368aa6d7b"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"863a3e3a27100ba6f7be83cc8b0b8f659905623b","unresolved":false,"context_lines":[{"line_number":77,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"NET_EXTERNAL \u003d \u0027router:external\u0027"},{"line_number":80,"context_line":"PORTBINDING_EXT \u003d \u0027Port Binding\u0027"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"refresh_cache \u003d network_api.refresh_cache"},{"line_number":83,"context_line":"update_instance_info_cache \u003d network_api.update_instance_cache_with_nw_info"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAPn%2F%2FmbY%3D","line":80,"in_reply_to":"AAAAPn%2F%2FnTM%3D","updated":"2013-06-26 23:01:31.000000000","message":"Done","commit_id":"c9ced20e7986c727c5099462804d121368aa6d7b"},{"author":{"_account_id":2711,"name":"Zhang Hua","display_name":"Zhang Hua","email":"joshua.zhang@canonical.com","username":"zhhuabj"},"change_message_id":"112d5333052b4cf8cb71fd11b2cf0fe49e36dc7a","unresolved":false,"context_lines":[{"line_number":238,"context_line":"                                      \u0027device_owner\u0027: zone}}"},{"line_number":239,"context_line":"            try:"},{"line_number":240,"context_line":"                port \u003d ports.get(network_id)"},{"line_number":241,"context_line":"                self._populate_quantum_extension_values(instance,"},{"line_number":242,"context_line":"                                                        port_req_body)"},{"line_number":243,"context_line":"                # Requires admin creds to set port bindings"},{"line_number":244,"context_line":"                port_client \u003d (quantum if not"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAPn%2F%2Fr2g%3D","line":241,"updated":"2013-06-25 10:20:34.000000000","message":"seems that _populate_quantum_extension_values is redundant with the _refresh_quantum_extensions_cache method of the bellow _has_port_binding_extension","commit_id":"c9ced20e7986c727c5099462804d121368aa6d7b"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"f90bbb304457141455cff4e63d815575c75712e8","unresolved":false,"context_lines":[{"line_number":238,"context_line":"                                      \u0027device_owner\u0027: zone}}"},{"line_number":239,"context_line":"            try:"},{"line_number":240,"context_line":"                port \u003d ports.get(network_id)"},{"line_number":241,"context_line":"                self._populate_quantum_extension_values(instance,"},{"line_number":242,"context_line":"                                                        port_req_body)"},{"line_number":243,"context_line":"                # Requires admin creds to set port bindings"},{"line_number":244,"context_line":"                port_client \u003d (quantum if not"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAPn%2F%2Fpnk%3D","line":241,"in_reply_to":"AAAAPn%2F%2Fr2g%3D","updated":"2013-06-25 22:48:01.000000000","message":"There is a possibility the supported extension is changed on the quantum server side. Anyway, the _refresh_quantum_extensions_cache() will not call quantum server  if it is not expired","commit_id":"c9ced20e7986c727c5099462804d121368aa6d7b"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"ed977758edd940191e746ceb7330a0b0f7472484","unresolved":false,"context_lines":[{"line_number":287,"context_line":"                        try:"},{"line_number":288,"context_line":"                            quantum.delete_port(port_id)"},{"line_number":289,"context_line":"                        except Exception:"},{"line_number":290,"context_line":"                            msg \u003d _(\"Failed to delete port %s\")"},{"line_number":291,"context_line":"                            LOG.exception(msg, port_id)"},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"        nw_info \u003d self._get_instance_nw_info(context, instance, networks\u003dnets)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAPn%2F%2FnRI%3D","line":290,"updated":"2013-06-26 18:17:42.000000000","message":"I wonder if it\u0027s worth logging the host as well, since we have it.","commit_id":"c9ced20e7986c727c5099462804d121368aa6d7b"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"9aad5623b3b7dd955f3b7ef8a0f22e96c8f7544e","unresolved":false,"context_lines":[{"line_number":287,"context_line":"                        try:"},{"line_number":288,"context_line":"                            quantum.delete_port(port_id)"},{"line_number":289,"context_line":"                        except Exception:"},{"line_number":290,"context_line":"                            msg \u003d _(\"Failed to delete port %s\")"},{"line_number":291,"context_line":"                            LOG.exception(msg, port_id)"},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"        nw_info \u003d self._get_instance_nw_info(context, instance, networks\u003dnets)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAPn%2F%2FmV0%3D","line":290,"in_reply_to":"AAAAPn%2F%2FmbM%3D","updated":"2013-06-27 00:08:28.000000000","message":"I think it does not make big point.","commit_id":"c9ced20e7986c727c5099462804d121368aa6d7b"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"863a3e3a27100ba6f7be83cc8b0b8f659905623b","unresolved":false,"context_lines":[{"line_number":287,"context_line":"                        try:"},{"line_number":288,"context_line":"                            quantum.delete_port(port_id)"},{"line_number":289,"context_line":"                        except Exception:"},{"line_number":290,"context_line":"                            msg \u003d _(\"Failed to delete port %s\")"},{"line_number":291,"context_line":"                            LOG.exception(msg, port_id)"},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"        nw_info \u003d self._get_instance_nw_info(context, instance, networks\u003dnets)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAPn%2F%2FmbM%3D","line":290,"in_reply_to":"AAAAPn%2F%2FnRI%3D","updated":"2013-06-26 23:01:31.000000000","message":"Done","commit_id":"c9ced20e7986c727c5099462804d121368aa6d7b"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"ed977758edd940191e746ceb7330a0b0f7472484","unresolved":false,"context_lines":[{"line_number":326,"context_line":"            instance_type \u003d flavors.extract_flavor(instance)"},{"line_number":327,"context_line":"            rxtx_factor \u003d instance_type.get(\u0027rxtx_factor\u0027)"},{"line_number":328,"context_line":"            port_req_body[\u0027port\u0027][\u0027rxtx_factor\u0027] \u003d rxtx_factor"},{"line_number":329,"context_line":"        if PORTBINDING_EXT in self.extensions:"},{"line_number":330,"context_line":"            port_req_body[\u0027port\u0027][\u0027binding:host_id\u0027] \u003d instance.get(\u0027host\u0027)"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"    def deallocate_for_instance(self, context, instance, **kwargs):"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAPn%2F%2FnQ4%3D","line":329,"updated":"2013-06-26 18:17:42.000000000","message":"since you do a similar check in _has_port_binding_extension() I suggest you call _has_port_binding_extension and add fetch_cache\u003dFalse as argument in the function. That wraps up the check logic neatly and you don\u0027t have to repeat it twice.","commit_id":"c9ced20e7986c727c5099462804d121368aa6d7b"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"863a3e3a27100ba6f7be83cc8b0b8f659905623b","unresolved":false,"context_lines":[{"line_number":326,"context_line":"            instance_type \u003d flavors.extract_flavor(instance)"},{"line_number":327,"context_line":"            rxtx_factor \u003d instance_type.get(\u0027rxtx_factor\u0027)"},{"line_number":328,"context_line":"            port_req_body[\u0027port\u0027][\u0027rxtx_factor\u0027] \u003d rxtx_factor"},{"line_number":329,"context_line":"        if PORTBINDING_EXT in self.extensions:"},{"line_number":330,"context_line":"            port_req_body[\u0027port\u0027][\u0027binding:host_id\u0027] \u003d instance.get(\u0027host\u0027)"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"    def deallocate_for_instance(self, context, instance, **kwargs):"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAPn%2F%2FmbI%3D","line":329,"in_reply_to":"AAAAPn%2F%2FnQ4%3D","updated":"2013-06-26 23:01:31.000000000","message":"Done","commit_id":"c9ced20e7986c727c5099462804d121368aa6d7b"},{"author":{"_account_id":1501,"name":"Phil Day","email":"philip.day@hp.com","username":"philip-day"},"change_message_id":"162936a3075c36ea2db4e9c211a715fe26f11231","unresolved":false,"context_lines":[{"line_number":327,"context_line":"            rxtx_factor \u003d instance_type.get(\u0027rxtx_factor\u0027)"},{"line_number":328,"context_line":"            port_req_body[\u0027port\u0027][\u0027rxtx_factor\u0027] \u003d rxtx_factor"},{"line_number":329,"context_line":"        if PORTBINDING_EXT in self.extensions:"},{"line_number":330,"context_line":"            port_req_body[\u0027port\u0027][\u0027binding:host_id\u0027] \u003d instance.get(\u0027host\u0027)"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"    def deallocate_for_instance(self, context, instance, **kwargs):"},{"line_number":333,"context_line":"        \"\"\"Deallocate all network resources related to the instance.\"\"\""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAPn%2F%2FvfM%3D","line":330,"updated":"2013-06-23 14:05:46.000000000","message":"This seems to mean that for a multi-homed server you\u0027d set the same host_id property on all of its ports - which doesn\u0027t seem right (I\u0027d assume Quantum could use this for the hostname returned by DHCP)\n\nSeems like it would be better to be \u0027host\u0027 on the first port and \u0027host-n\u0027 on subsequent ports","commit_id":"c9ced20e7986c727c5099462804d121368aa6d7b"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"fd0ed934fa6e10c71d17dd2fde630528e7deca27","unresolved":false,"context_lines":[{"line_number":327,"context_line":"            rxtx_factor \u003d instance_type.get(\u0027rxtx_factor\u0027)"},{"line_number":328,"context_line":"            port_req_body[\u0027port\u0027][\u0027rxtx_factor\u0027] \u003d rxtx_factor"},{"line_number":329,"context_line":"        if PORTBINDING_EXT in self.extensions:"},{"line_number":330,"context_line":"            port_req_body[\u0027port\u0027][\u0027binding:host_id\u0027] \u003d instance.get(\u0027host\u0027)"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"    def deallocate_for_instance(self, context, instance, **kwargs):"},{"line_number":333,"context_line":"        \"\"\"Deallocate all network resources related to the instance.\"\"\""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAPn%2F%2FvIY%3D","line":330,"in_reply_to":"AAAAPn%2F%2FvfM%3D","updated":"2013-06-24 02:00:30.000000000","message":"Phil:\nthe host_id just means a logic name, which is defined in configuration file such as nova.conf, quantum.conf etc, by \u0027host\u0027 item. By default, its value is got from host name of Operating system.\n\nSo it can go even with multi-homed server.","commit_id":"c9ced20e7986c727c5099462804d121368aa6d7b"}],"nova/tests/network/test_quantumv2.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"95496945921b869a8cd11ac48b6a3bd9611e8f84","unresolved":false,"context_lines":[{"line_number":1435,"context_line":"class TestQuantumv2Portbinding(TestQuantumv2Base):"},{"line_number":1436,"context_line":""},{"line_number":1437,"context_line":"    def setUp(self):"},{"line_number":1438,"context_line":"        super(TestQuantumv2Portbinding, self).setUp()"},{"line_number":1439,"context_line":""},{"line_number":1440,"context_line":"    def test_allocate_for_instance_portbinding(self):"},{"line_number":1441,"context_line":"        self._allocate_for_instance(1, portbinding\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAPn%2F%2Fkm0%3D","line":1438,"updated":"2013-06-27 15:27:13.000000000","message":"Drop the unnecessary setUp() method, please.","commit_id":"cfbeb4f289f183d98c986addf6b5d1d393132fbc"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"e355667ec7b2342d51d277617d60bcd8606194a9","unresolved":false,"context_lines":[{"line_number":1435,"context_line":"class TestQuantumv2Portbinding(TestQuantumv2Base):"},{"line_number":1436,"context_line":""},{"line_number":1437,"context_line":"    def setUp(self):"},{"line_number":1438,"context_line":"        super(TestQuantumv2Portbinding, self).setUp()"},{"line_number":1439,"context_line":""},{"line_number":1440,"context_line":"    def test_allocate_for_instance_portbinding(self):"},{"line_number":1441,"context_line":"        self._allocate_for_instance(1, portbinding\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAPn%2F%2FjYE%3D","line":1438,"in_reply_to":"AAAAPn%2F%2Fkm0%3D","updated":"2013-06-27 21:48:30.000000000","message":"Done","commit_id":"cfbeb4f289f183d98c986addf6b5d1d393132fbc"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"1d225ccb31548977b458dbddd023a1c236e01bb6","unresolved":false,"context_lines":[{"line_number":751,"context_line":"        port_data \u003d number \u003d\u003d 1 and self.port_data1 or self.port_data2"},{"line_number":752,"context_line":"        self.moxed_client.delete_port(port_data[0][\u0027id\u0027])"},{"line_number":753,"context_line":""},{"line_number":754,"context_line":"        nets \u003d [port_data[0][\u0027network_id\u0027]]"},{"line_number":755,"context_line":"        quantumv2.get_client(mox.IgnoreArg(), admin\u003dTrue).AndReturn("},{"line_number":756,"context_line":"            self.moxed_client)"},{"line_number":757,"context_line":"        self.moxed_client.list_ports("}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAPn%2F%2FaqE%3D","line":754,"updated":"2013-07-02 13:02:14.000000000","message":"There are a number of additions in this file that look unused.  Is this needed?   If so, why?\n\n(Same common for the other cases)","commit_id":"6ace89bd58167dc5776ee8a9d858e3006b54da3b"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"1d225ccb31548977b458dbddd023a1c236e01bb6","unresolved":false,"context_lines":[{"line_number":1093,"context_line":""},{"line_number":1094,"context_line":"    def test_allocate_floating_ip_with_pool_id(self):"},{"line_number":1095,"context_line":"        api \u003d quantumapi.API()"},{"line_number":1096,"context_line":"        pool_name \u003d self.fip_pool[\u0027name\u0027]"},{"line_number":1097,"context_line":"        pool_id \u003d self.fip_pool[\u0027id\u0027]"},{"line_number":1098,"context_line":"        search_opts \u003d {\u0027router:external\u0027: True,"},{"line_number":1099,"context_line":"                       \u0027fields\u0027: \u0027id\u0027,"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAPn%2F%2FaqA%3D","line":1096,"updated":"2013-07-02 13:02:14.000000000","message":"here","commit_id":"6ace89bd58167dc5776ee8a9d858e3006b54da3b"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"1d225ccb31548977b458dbddd023a1c236e01bb6","unresolved":false,"context_lines":[{"line_number":1137,"context_line":"    def test_release_floating_ip_associated(self):"},{"line_number":1138,"context_line":"        api \u003d quantumapi.API()"},{"line_number":1139,"context_line":"        address \u003d self.fip_associated[\u0027floating_ip_address\u0027]"},{"line_number":1140,"context_line":"        fip_id \u003d self.fip_associated[\u0027id\u0027]"},{"line_number":1141,"context_line":""},{"line_number":1142,"context_line":"        self.moxed_client.list_floatingips(floating_ip_address\u003daddress).\\"},{"line_number":1143,"context_line":"            AndReturn({\u0027floatingips\u0027: [self.fip_associated]})"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAPn%2F%2Fap8%3D","line":1140,"updated":"2013-07-02 13:02:14.000000000","message":"here","commit_id":"6ace89bd58167dc5776ee8a9d858e3006b54da3b"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"1d225ccb31548977b458dbddd023a1c236e01bb6","unresolved":false,"context_lines":[{"line_number":1181,"context_line":"        api \u003d quantumapi.API()"},{"line_number":1182,"context_line":"        address \u003d self.fip_associated[\u0027floating_ip_address\u0027]"},{"line_number":1183,"context_line":"        fixed_address \u003d self.fip_associated[\u0027fixed_ip_address\u0027]"},{"line_number":1184,"context_line":"        fip_id \u003d self.fip_associated[\u0027id\u0027]"},{"line_number":1185,"context_line":""},{"line_number":1186,"context_line":"        search_opts \u003d {\u0027device_owner\u0027: \u0027compute:nova\u0027,"},{"line_number":1187,"context_line":"                       \u0027device_id\u0027: self.instance[\u0027uuid\u0027]}"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAPn%2F%2Fap4%3D","line":1184,"updated":"2013-07-02 13:02:14.000000000","message":"here","commit_id":"6ace89bd58167dc5776ee8a9d858e3006b54da3b"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"1d225ccb31548977b458dbddd023a1c236e01bb6","unresolved":false,"context_lines":[{"line_number":1215,"context_line":"        self.moxed_client.list_subnets("},{"line_number":1216,"context_line":"            **search_opts).AndReturn({\u0027subnets\u0027: self.subnet_data_n})"},{"line_number":1217,"context_line":""},{"line_number":1218,"context_line":"        zone \u003d \u0027compute:%s\u0027 % self.instance[\u0027availability_zone\u0027]"},{"line_number":1219,"context_line":"        search_opts \u003d {\u0027device_id\u0027: self.instance[\u0027uuid\u0027],"},{"line_number":1220,"context_line":"                       \u0027device_owner\u0027: \u0027compute:nova\u0027,"},{"line_number":1221,"context_line":"                       \u0027network_id\u0027: network_id}"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAPn%2F%2Fapw%3D","line":1218,"updated":"2013-07-02 13:02:14.000000000","message":"here","commit_id":"6ace89bd58167dc5776ee8a9d858e3006b54da3b"}]}
