)]}'
{"doc/api_samples/os-networks-associate/network-disassociate-host-req.json":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"a68e44968e51265f030bb9254d7ae99bb642b7a8","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"\t\"disassociate_host\": null"},{"line_number":3,"context_line":"}"}],"source_content_type":"application/json","patch_set":3,"id":"AAAAMH%2F%2FuUc%3D","line":2,"updated":"2012-11-28 17:46:07.000000000","message":"femtonit: I\u0027d like to avoid the tab here; just go for four spaces.  Not a big deal for me, though…","commit_id":"598147a58fa820285a3ce139354186c2b4ee0e44"}],"doc/api_samples/os-networks-associate/network-disassociate-project-req.json":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"a68e44968e51265f030bb9254d7ae99bb642b7a8","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"\t\"disassociate_project\": null"},{"line_number":3,"context_line":"}"}],"source_content_type":"application/json","patch_set":3,"id":"AAAAMH%2F%2FuUU%3D","line":2,"updated":"2012-11-28 17:46:07.000000000","message":"femtonit: tab-\u003e4 spaces","commit_id":"598147a58fa820285a3ce139354186c2b4ee0e44"}],"doc/api_samples/os-networks-associate/network-disassociate-req.json":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"a68e44968e51265f030bb9254d7ae99bb642b7a8","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"\t\"disassociate\": null"},{"line_number":3,"context_line":"}"}],"source_content_type":"application/json","patch_set":3,"id":"AAAAMH%2F%2FuUM%3D","line":2,"updated":"2012-11-28 17:46:07.000000000","message":"femtonit: tab-\u003e4 spaces","commit_id":"598147a58fa820285a3ce139354186c2b4ee0e44"}],"nova/api/openstack/compute/contrib/networks.py":[{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"8ae899420a1785f5ba02ec15b42372e6d51a8dff","unresolved":false,"context_lines":[{"line_number":177,"context_line":"                                                    network_uuid)[\u0027id\u0027]"},{"line_number":178,"context_line":"            except exception.NetworkNotFound as ex:"},{"line_number":179,"context_line":"                raise exc.HTTPUnprocessableEntity(explanation\u003dstr(ex))"},{"line_number":180,"context_line":"            db.network_update(context, network_id, net)"},{"line_number":181,"context_line":"        else:"},{"line_number":182,"context_line":"            # Associate network with a project"},{"line_number":183,"context_line":"            project_id \u003d context.project_id"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAMH%2F%2F5lE%3D","line":180,"updated":"2012-11-16 15:23:21.000000000","message":"Instead of doing direct db access here, can this be added to nova/network/api.py instead?","commit_id":"c9a64fc001a09e602c8eae259b3c9f5c87289ca3"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"a68e44968e51265f030bb9254d7ae99bb642b7a8","unresolved":false,"context_lines":[{"line_number":175,"context_line":"            collection_actions\u003dcollection_actions)"},{"line_number":176,"context_line":"        return [res]"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    def get_controller_extensions(self):"},{"line_number":179,"context_line":"        extension \u003d extensions.ControllerExtension("},{"line_number":180,"context_line":"                self, \u0027os-networks\u0027, NetworkActionController())"},{"line_number":181,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAMH%2F%2FuT0%3D","line":178,"updated":"2012-11-28 17:46:07.000000000","message":"I don\u0027t understand the point of this change; why break the _disassociate_host_and_project() out into a separate controller class then make it extend the controller class you just created?  Surely there\u0027s a way to do this without making a controller extension within the very API extension that defines what we\u0027re extending?\n\n(And boy do we have a lot of things we use the term \"extension\" for…)","commit_id":"598147a58fa820285a3ce139354186c2b4ee0e44"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"e249f370e6134155f1a5c33e5d90bd2ba7ff72a3","unresolved":false,"context_lines":[{"line_number":175,"context_line":"            collection_actions\u003dcollection_actions)"},{"line_number":176,"context_line":"        return [res]"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    def get_controller_extensions(self):"},{"line_number":179,"context_line":"        extension \u003d extensions.ControllerExtension("},{"line_number":180,"context_line":"                self, \u0027os-networks\u0027, NetworkActionController())"},{"line_number":181,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAMH%2F%2FtIc%3D","line":178,"updated":"2012-11-29 16:31:15.000000000","message":"I don\u0027t understand the point of this change; why break the _disassociate_host_and_project() out into a separate controller class then make it extend the controller class you just created? Surely there\u0027s a way to do this without making a controller extension within the very API extension that defines what we\u0027re extending?\n\n(And boy do we have a lot of things we use the term \"extension\" for…)","commit_id":"819ebde453ff42559a2fb6e8d6a0dff0072ff17f"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"e770fe988e38fa8aa45fb5b169877a40575d6c4a","unresolved":false,"context_lines":[{"line_number":175,"context_line":"            collection_actions\u003dcollection_actions)"},{"line_number":176,"context_line":"        return [res]"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    def get_controller_extensions(self):"},{"line_number":179,"context_line":"        extension \u003d extensions.ControllerExtension("},{"line_number":180,"context_line":"                self, \u0027os-networks\u0027, NetworkActionController())"},{"line_number":181,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAMH%2F%2Fsho%3D","line":178,"in_reply_to":"AAAAMH%2F%2FsoE%3D","updated":"2012-11-29 22:22:07.000000000","message":"Yeah, you have to hit \"Review\"/\"Publish Comments\" to get in-line comments out :)\n\nAnyway, my point is, I expected it would be possible to do this by changing the base class of NetworkController itself to wsgi.Controller; then, you should just need to eliminate the action() method and add @wsgi.action(\u0027disassociate\u0027) to the _disassociate_host_and_project() method.  This would eliminate the need to use a ControllerExtension here…","commit_id":"819ebde453ff42559a2fb6e8d6a0dff0072ff17f"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"5e5b1cdd5448d0840cdae2970a54bcd89007fcc8","unresolved":false,"context_lines":[{"line_number":175,"context_line":"            collection_actions\u003dcollection_actions)"},{"line_number":176,"context_line":"        return [res]"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    def get_controller_extensions(self):"},{"line_number":179,"context_line":"        extension \u003d extensions.ControllerExtension("},{"line_number":180,"context_line":"                self, \u0027os-networks\u0027, NetworkActionController())"},{"line_number":181,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAMH%2F%2FsoE%3D","line":178,"in_reply_to":"AAAAMH%2F%2FtIc%3D","updated":"2012-11-29 21:27:00.000000000","message":"This change was required to be able to extend actions in network_associate.py. If disassociate is implemented through an action function in the resource extension it masks any action controller extensions in network_associate.py. By moving it into its own controller extension it co-operates with the network_associate controller extension and at the same time from the REST API point of view preserves the original behaviour","commit_id":"819ebde453ff42559a2fb6e8d6a0dff0072ff17f"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"c8046d851b1e571c270e1a51c5b32ec0efcf5af9","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        LOG.debug(_(\"Disassociating network with id %s\"), id)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        try:"},{"line_number":76,"context_line":"            self.network_api.disassociate(context, id, True, True)"},{"line_number":77,"context_line":"        except exception.NetworkNotFound:"},{"line_number":78,"context_line":"            raise exc.HTTPNotFound(_(\"Network not found\"))"},{"line_number":79,"context_line":"        return exc.HTTPAccepted()"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAMX%2F%2F9Aw%3D","line":76,"updated":"2012-12-05 08:21:52.000000000","message":"The problem with args like this is you can\u0027t tell what \"True, True\" means from just looking at it\n\nHow about:\n\n  self.network_api.associate(context, id, host\u003dNone, project\u003dNone)","commit_id":"d58decc6f5105710e906d8cd0a7dca9310a85219"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"04d115181654aa9db7286aa18f2204d089b7ec8e","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        LOG.debug(_(\"Disassociating network with id %s\"), id)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        try:"},{"line_number":76,"context_line":"            self.network_api.associate(context, id, host\u003dNone, project\u003dNone)"},{"line_number":77,"context_line":"        except exception.NetworkNotFound:"},{"line_number":78,"context_line":"            raise exc.HTTPNotFound(_(\"Network not found\"))"},{"line_number":79,"context_line":"        return exc.HTTPAccepted()"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAMX%2F%2F3JA%3D","line":76,"updated":"2012-12-12 01:52:26.000000000","message":"setting host and project to none basically removes the existing association?","commit_id":"790825089f8f54705c713beb78508918fd531a6c"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"2f7c7fe6a7ece7a33e623e7982c43e5e9a6ca1d4","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        LOG.debug(_(\"Disassociating network with id %s\"), id)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        try:"},{"line_number":76,"context_line":"            self.network_api.associate(context, id, host\u003dNone, project\u003dNone)"},{"line_number":77,"context_line":"        except exception.NetworkNotFound:"},{"line_number":78,"context_line":"            raise exc.HTTPNotFound(_(\"Network not found\"))"},{"line_number":79,"context_line":"        return exc.HTTPAccepted()"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAMX%2F%2F3IY%3D","line":76,"in_reply_to":"AAAAMX%2F%2F3JA%3D","updated":"2012-12-12 09:51:18.000000000","message":"Yes","commit_id":"790825089f8f54705c713beb78508918fd531a6c"}],"nova/api/openstack/compute/contrib/networks_associate.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"a68e44968e51265f030bb9254d7ae99bb642b7a8","unresolved":false,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def get_controller_extensions(self):"},{"line_number":71,"context_line":"        extension \u003d extensions.ControllerExtension("},{"line_number":72,"context_line":"                self, \u0027os-networks\u0027, NetworkAssociateActionController())"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        return [extension]"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAMH%2F%2FuTk%3D","line":72,"updated":"2012-11-28 17:46:07.000000000","message":"And for the record, I do *not* object to this instance of a controller extension; this is acting exactly how I envisioned when I last rototilled the extensions framework…","commit_id":"598147a58fa820285a3ce139354186c2b4ee0e44"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"c8046d851b1e571c270e1a51c5b32ec0efcf5af9","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        except Exception as ex:"},{"line_number":56,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dstr(ex))"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        return webob.exc.HTTPAccepted()"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"class Networks_associate(extensions.ExtensionDescriptor):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAMX%2F%2F9As%3D","line":58,"updated":"2012-12-05 08:21:52.000000000","message":"Seems like a single associate() network API call with work for all of the above use cases","commit_id":"d58decc6f5105710e906d8cd0a7dca9310a85219"}],"nova/db/sqlalchemy/api.py":[{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"c8046d851b1e571c270e1a51c5b32ec0efcf5af9","unresolved":false,"context_lines":[{"line_number":2078,"context_line":"@require_admin_context"},{"line_number":2079,"context_line":"def network_associate_host(context, network_id, host):"},{"line_number":2080,"context_line":"    net_update \u003d {\u0027host\u0027: host}"},{"line_number":2081,"context_line":"    network_update(context, network_id, net_update)"},{"line_number":2082,"context_line":""},{"line_number":2083,"context_line":""},{"line_number":2084,"context_line":"@require_admin_context"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAMX%2F%2F9Ag%3D","line":2081,"updated":"2012-12-05 08:21:52.000000000","message":"This duplicates network_set_host() - we should do some cleanup here","commit_id":"d58decc6f5105710e906d8cd0a7dca9310a85219"}],"nova/network/api.py":[{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"c8046d851b1e571c270e1a51c5b32ec0efcf5af9","unresolved":false,"context_lines":[{"line_number":236,"context_line":"    def add_network_to_host(self, context, network_uuid, host):"},{"line_number":237,"context_line":"        \"\"\"Adds a network to a host.\"\"\""},{"line_number":238,"context_line":"        self.network_rpcapi.add_network_to_host(context, network_uuid, host)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"    @refresh_cache"},{"line_number":241,"context_line":"    def get_instance_nw_info(self, context, instance):"},{"line_number":242,"context_line":"        \"\"\"Returns all network info related to an instance.\"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAMX%2F%2F9AU%3D","line":239,"updated":"2012-12-05 08:21:52.000000000","message":"Ok, so we currently have:\n\n  add_network_to_project()\n  disassociate()\n\nthe former does project association only, the latter only allows disassociating both at the same time\n\nRather than adding another \"add\" method and making disassociate more flexible, just having a single method e.g.\n\n  _sentinel \u003d object()\n\n  def associate(self, context, network_uuid, host\u003d_sentinel, project\u003d_sentinel):\n      associations \u003d {}\n      if host is not _sentinel:\n          associations[\u0027host\u0027] \u003d host\n      if project is not _sentinel:\n          associations[\u0027project\u0027] \u003d project\n      self.network_rpcapi.associate(context, network_uuid, associations)\n\nYou\u0027d need to keep add_network_to_project() and disassociate() around for compat","commit_id":"d58decc6f5105710e906d8cd0a7dca9310a85219"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"af6deae2c8068d933645b5f206da415b504fa830","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        LOG.debug(_(\u0027kwargs: %s\u0027) % (kwargs or {}))"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"_sentinel \u003d object()"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"class API(base.Base):"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAMX%2F%2F0JE%3D","line":82,"updated":"2012-12-14 11:51:22.000000000","message":"If we are going to do a package variable, this should come before the defs in the package, like LOG.","commit_id":"921bdc96e146b822256e2b031d2cc8708d2230d4"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"76429be84ea475d11e0abb43c8478e02d2510669","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        LOG.debug(_(\u0027kwargs: %s\u0027) % (kwargs or {}))"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"_sentinel \u003d object()"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"class API(base.Base):"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAMX%2F%2F0H8%3D","line":82,"in_reply_to":"AAAAMX%2F%2F0JE%3D","updated":"2012-12-14 12:05:37.000000000","message":"maybe a class variable","commit_id":"921bdc96e146b822256e2b031d2cc8708d2230d4"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"af6deae2c8068d933645b5f206da415b504fa830","unresolved":false,"context_lines":[{"line_number":236,"context_line":"                network_uuid)"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"    def associate(self, context, network_uuid, host\u003d_sentinel,"},{"line_number":239,"context_line":"                  project\u003d_sentinel):"},{"line_number":240,"context_line":"        \"\"\"Associate or disassociate host or project to network\"\"\""},{"line_number":241,"context_line":"        associations \u003d {}"},{"line_number":242,"context_line":"        if host is not _sentinel:"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAMX%2F%2F0I8%3D","line":239,"updated":"2012-12-14 11:51:22.000000000","message":"ok, I need a better explanation about the _sentinel use here, because this seems like it should be able to be handled by None.","commit_id":"921bdc96e146b822256e2b031d2cc8708d2230d4"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"cdbdef2779016cf4f28925a13786e92bfa08938a","unresolved":false,"context_lines":[{"line_number":236,"context_line":"                network_uuid)"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"    def associate(self, context, network_uuid, host\u003d_sentinel,"},{"line_number":239,"context_line":"                  project\u003d_sentinel):"},{"line_number":240,"context_line":"        \"\"\"Associate or disassociate host or project to network\"\"\""},{"line_number":241,"context_line":"        associations \u003d {}"},{"line_number":242,"context_line":"        if host is not _sentinel:"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAMX%2F%2F0HU%3D","line":239,"in_reply_to":"AAAAMX%2F%2F0H4%3D","updated":"2012-12-14 12:17:55.000000000","message":"Thanks Mark, my python-fu just went up with the explanation","commit_id":"921bdc96e146b822256e2b031d2cc8708d2230d4"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"76429be84ea475d11e0abb43c8478e02d2510669","unresolved":false,"context_lines":[{"line_number":236,"context_line":"                network_uuid)"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"    def associate(self, context, network_uuid, host\u003d_sentinel,"},{"line_number":239,"context_line":"                  project\u003d_sentinel):"},{"line_number":240,"context_line":"        \"\"\"Associate or disassociate host or project to network\"\"\""},{"line_number":241,"context_line":"        associations \u003d {}"},{"line_number":242,"context_line":"        if host is not _sentinel:"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAMX%2F%2F0H4%3D","line":239,"in_reply_to":"AAAAMX%2F%2F0I8%3D","updated":"2012-12-14 12:05:37.000000000","message":"It\u0027s a fairly standard idiom ...\n\nIt\u0027s where None is one of the valid values you want to allow a caller to supply, but you also want to know when the caller didn\u0027t supply anything\n\nIn this case, I guess nothing\u003dnoop, None\u003ddisassociate, !None\u003dassociate","commit_id":"921bdc96e146b822256e2b031d2cc8708d2230d4"}],"nova/network/rpcapi.py":[{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"8ae899420a1785f5ba02ec15b42372e6d51a8dff","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    API version history:"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"        1.0 - Initial version."},{"line_number":36,"context_line":"        1.1 - Adds migrate_instance_[start|finish]"},{"line_number":37,"context_line":"        1.2 - Make migrate_instance_[start|finish] a little more flexible"},{"line_number":38,"context_line":"    \u0027\u0027\u0027"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAMH%2F%2F5lM%3D","line":36,"updated":"2012-11-16 15:23:21.000000000","message":"Can you add an entry for 1.3 here?","commit_id":"c9a64fc001a09e602c8eae259b3c9f5c87289ca3"}],"nova/tests/integrated/api_samples/all_extensions/extensions-get-resp.json.tpl":[{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"0350c23ea073c4a7483ad5fdcdd8aecb686be386","unresolved":false,"context_lines":[{"line_number":279,"context_line":"            \"name\": \"NetworkAssociationSupport\","},{"line_number":280,"context_line":"            \"namespace\": \"http://docs.openstack.org/compute/ext/networks_associate/api/v2\","},{"line_number":281,"context_line":"            \"updated\": \"%(timestamp)s\""},{"line_number":282,"context_line":"        }, "},{"line_number":283,"context_line":"        {"},{"line_number":284,"context_line":"            \"alias\": \"os-quota-class-sets\","},{"line_number":285,"context_line":"            \"description\": \"%(text)s\","}],"source_content_type":"text/x-smarty","patch_set":3,"id":"AAAAMH%2F%2F010%3D","line":282,"updated":"2012-11-21 04:40:19.000000000","message":"Minor nit, trailing whitespace.","commit_id":"598147a58fa820285a3ce139354186c2b4ee0e44"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"a68e44968e51265f030bb9254d7ae99bb642b7a8","unresolved":false,"context_lines":[{"line_number":279,"context_line":"            \"name\": \"NetworkAssociationSupport\","},{"line_number":280,"context_line":"            \"namespace\": \"http://docs.openstack.org/compute/ext/networks_associate/api/v2\","},{"line_number":281,"context_line":"            \"updated\": \"%(timestamp)s\""},{"line_number":282,"context_line":"        }, "},{"line_number":283,"context_line":"        {"},{"line_number":284,"context_line":"            \"alias\": \"os-quota-class-sets\","},{"line_number":285,"context_line":"            \"description\": \"%(text)s\","}],"source_content_type":"text/x-smarty","patch_set":3,"id":"AAAAMH%2F%2FuTc%3D","line":282,"in_reply_to":"AAAAMH%2F%2F010%3D","updated":"2012-11-28 17:46:07.000000000","message":"I\u0027d like to see it cleaned up, though.","commit_id":"598147a58fa820285a3ce139354186c2b4ee0e44"}],"nova/tests/integrated/api_samples/os-networks-associate/network-disassociate-host-req.json.tpl":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"a68e44968e51265f030bb9254d7ae99bb642b7a8","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"\t\"disassociate_host\": null"},{"line_number":3,"context_line":"}"}],"source_content_type":"text/x-smarty","patch_set":3,"id":"AAAAMH%2F%2FuTU%3D","line":2,"updated":"2012-11-28 17:46:07.000000000","message":"femtonit: tab-\u003e4 spaces","commit_id":"598147a58fa820285a3ce139354186c2b4ee0e44"}],"nova/tests/integrated/api_samples/os-networks-associate/network-disassociate-project-req.json.tpl":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"a68e44968e51265f030bb9254d7ae99bb642b7a8","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"\t\"disassociate_project\": null"},{"line_number":3,"context_line":"}"}],"source_content_type":"text/x-smarty","patch_set":3,"id":"AAAAMH%2F%2FuTM%3D","line":2,"updated":"2012-11-28 17:46:07.000000000","message":"femtonit: tab-\u003e4 spaces","commit_id":"598147a58fa820285a3ce139354186c2b4ee0e44"}],"nova/tests/integrated/api_samples/os-networks-associate/network-disassociate-req.json.tpl":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"a68e44968e51265f030bb9254d7ae99bb642b7a8","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"\t\"disassociate\": null"},{"line_number":3,"context_line":"}"}],"source_content_type":"text/x-smarty","patch_set":3,"id":"AAAAMH%2F%2FuTI%3D","line":2,"updated":"2012-11-28 17:46:07.000000000","message":"femtonit: tab-\u003e4 spaces","commit_id":"598147a58fa820285a3ce139354186c2b4ee0e44"}],"nova/tests/integrated/test_api_samples.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"a68e44968e51265f030bb9254d7ae99bb642b7a8","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from nova.compute import api"},{"line_number":27,"context_line":"from nova import context"},{"line_number":28,"context_line":"from nova import db"},{"line_number":29,"context_line":"from nova.network.api import API"},{"line_number":30,"context_line":"from nova.network.manager import NetworkManager"},{"line_number":31,"context_line":"from nova.openstack.common import cfg"},{"line_number":32,"context_line":"from nova.openstack.common import importutils"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAMH%2F%2FuS8%3D","line":29,"updated":"2012-11-28 17:46:07.000000000","message":"I\u0027d like to discourage import of the API class here, in compliance with HACKING.rst.  Since it\u0027s done by a couple of other imports already here, I\u0027ll let it slide for this patch…","commit_id":"598147a58fa820285a3ce139354186c2b4ee0e44"}],"nova/tests/network/test_rpcapi.py":[{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"04d115181654aa9db7286aa18f2204d089b7ec8e","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        self._test_network_api(\u0027disassociate_network\u0027, rpc_method\u003d\u0027call\u0027,"},{"line_number":93,"context_line":"                network_uuid\u003d\u0027fake_uuid\u0027)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    def test_associate(self):"},{"line_number":96,"context_line":"        self._test_network_api(\u0027associate\u0027, rpc_method\u003d\u0027call\u0027,"},{"line_number":97,"context_line":"                network_uuid\u003d\u0027fake_uuid\u0027,"},{"line_number":98,"context_line":"                associations\u003d{\u0027host\u0027: \"testHost\","}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAMX%2F%2F3I4%3D","line":95,"updated":"2012-12-12 01:52:26.000000000","message":"test_associate_host_and_project?","commit_id":"790825089f8f54705c713beb78508918fd531a6c"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"2f7c7fe6a7ece7a33e623e7982c43e5e9a6ca1d4","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        self._test_network_api(\u0027disassociate_network\u0027, rpc_method\u003d\u0027call\u0027,"},{"line_number":93,"context_line":"                network_uuid\u003d\u0027fake_uuid\u0027)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    def test_associate(self):"},{"line_number":96,"context_line":"        self._test_network_api(\u0027associate\u0027, rpc_method\u003d\u0027call\u0027,"},{"line_number":97,"context_line":"                network_uuid\u003d\u0027fake_uuid\u0027,"},{"line_number":98,"context_line":"                associations\u003d{\u0027host\u0027: \"testHost\","}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAMX%2F%2F3GU%3D","line":95,"in_reply_to":"AAAAMX%2F%2F3I4%3D","updated":"2012-12-12 09:51:18.000000000","message":"Done","commit_id":"790825089f8f54705c713beb78508918fd531a6c"}]}
