)]}'
{"neutron/db/migration/alembic_migrations/versions/19180cf98af6_nsx_gw_devices.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"f641fac9a649299be0b525dea135dba8aa071181","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Copyright 2014 OpenStack Foundation"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAVn%2F%2FwhM%3D","line":1,"updated":"2014-03-04 09:01:08.000000000","message":"lines 1 and 2 are no longer needed","commit_id":"e717c030acbd6c16c3c14955da13d65adbc17438"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"61311442aa2d28f7aca9429cc26617d8fbc313c0","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Copyright 2014 OpenStack Foundation"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAVn%2F%2Fi%2Bw%3D","line":1,"in_reply_to":"AAAAVn%2F%2FwhM%3D","updated":"2014-03-05 13:54:02.000000000","message":"right!\nI think we might still have that in the template","commit_id":"e717c030acbd6c16c3c14955da13d65adbc17438"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"a248c99de5a3fd30b73fd696aa23f2e126ca8de3","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        sa.Column(\u0027status\u0027, sa.String(length\u003d16), nullable\u003dTrue),"},{"line_number":71,"context_line":"        sa.PrimaryKeyConstraint(\u0027id\u0027),"},{"line_number":72,"context_line":"        mysql_engine\u003d\u0027InnoDB\u0027)"},{"line_number":73,"context_line":"    # Create a networkgatewaydevice for each existing reference."},{"line_number":74,"context_line":"    # For existing references nsx_id \u003d\u003d neutron_id"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAVn%2F%2FNBY%3D","line":73,"updated":"2014-03-07 17:16:29.000000000","message":"shouldn\u0027t this comment go on like 62?","commit_id":"bda33006d5610b3473a33e6ed4ea40384b9cd8a1"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"855e6e34bfd4096c6c9852a496409838be84f706","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        sa.Column(\u0027status\u0027, sa.String(length\u003d16), nullable\u003dTrue),"},{"line_number":71,"context_line":"        sa.PrimaryKeyConstraint(\u0027id\u0027),"},{"line_number":72,"context_line":"        mysql_engine\u003d\u0027InnoDB\u0027)"},{"line_number":73,"context_line":"    # Create a networkgatewaydevice for each existing reference."},{"line_number":74,"context_line":"    # For existing references nsx_id \u003d\u003d neutron_id"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAVn%2F%2FMbs%3D","line":73,"in_reply_to":"AAAAVn%2F%2FNBY%3D","updated":"2014-03-07 18:39:09.000000000","message":"yes.","commit_id":"bda33006d5610b3473a33e6ed4ea40384b9cd8a1"}],"neutron/plugins/vmware/dbexts/networkgw_db.py":[{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"a248c99de5a3fd30b73fd696aa23f2e126ca8de3","unresolved":false,"context_lines":[{"line_number":58,"context_line":""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"class GatewayDeviceNotFound(exceptions.NotFound):"},{"line_number":61,"context_line":"    message \u003d _(\"Network Gateway Device %(device_id)s could not be found\")"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"class NetworkGatewayPortInUse(exceptions.InUse):"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAVn%2F%2FNAM%3D","line":61,"updated":"2014-03-07 17:16:29.000000000","message":"pedentic nit: . at the end?","commit_id":"bda33006d5610b3473a33e6ed4ea40384b9cd8a1"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"855e6e34bfd4096c6c9852a496409838be84f706","unresolved":false,"context_lines":[{"line_number":58,"context_line":""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"class GatewayDeviceNotFound(exceptions.NotFound):"},{"line_number":61,"context_line":"    message \u003d _(\"Network Gateway Device %(device_id)s could not be found\")"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"class NetworkGatewayPortInUse(exceptions.InUse):"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAVn%2F%2FMaw%3D","line":61,"in_reply_to":"AAAAVn%2F%2FNAM%3D","updated":"2014-03-07 18:39:09.000000000","message":"pedantic reply: it\u0027s \"pedantic\" not \"pedentic\"","commit_id":"bda33006d5610b3473a33e6ed4ea40384b9cd8a1"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"64e265734a26a32181898dca0908efbdbb4edc76","unresolved":false,"context_lines":[{"line_number":130,"context_line":"    nsx_id \u003d sa.Column(sa.String(36))"},{"line_number":131,"context_line":"    # Optional name for the gateway device"},{"line_number":132,"context_line":"    name \u003d sa.Column(sa.String(255))"},{"line_number":133,"context_line":"    # Transport connector type. Not using enum as range of"},{"line_number":134,"context_line":"    # connector types might vary with backend version"},{"line_number":135,"context_line":"    connector_type \u003d sa.Column(sa.String(10))"},{"line_number":136,"context_line":"    # Transport connector IP Address"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAVn%2F%2FSkI%3D","line":133,"updated":"2014-03-07 01:23:15.000000000","message":"I guess there is no reason we to store the cert in the db?","commit_id":"bda33006d5610b3473a33e6ed4ea40384b9cd8a1"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"183b8d82f47ea9156ab54eace9afbdbb3898585a","unresolved":false,"context_lines":[{"line_number":130,"context_line":"    nsx_id \u003d sa.Column(sa.String(36))"},{"line_number":131,"context_line":"    # Optional name for the gateway device"},{"line_number":132,"context_line":"    name \u003d sa.Column(sa.String(255))"},{"line_number":133,"context_line":"    # Transport connector type. Not using enum as range of"},{"line_number":134,"context_line":"    # connector types might vary with backend version"},{"line_number":135,"context_line":"    connector_type \u003d sa.Column(sa.String(10))"},{"line_number":136,"context_line":"    # Transport connector IP Address"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAVn%2F%2FNlg%3D","line":133,"in_reply_to":"AAAAVn%2F%2FSkI%3D","updated":"2014-03-07 15:55:57.000000000","message":"I did it by design. We don\u0027t need to store them, and also we have no idea of how secure the neutron db is.\n\nHence, certificates are just passed on to the NSX endpoint.","commit_id":"bda33006d5610b3473a33e6ed4ea40384b9cd8a1"}],"neutron/plugins/vmware/extensions/networkgw.py":[{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"bbf6572105c6565b87a46b711d88cc1a82a8193f","unresolved":false,"context_lines":[{"line_number":113,"context_line":"        msg \u003d _(\"A connector type is required to create a gateway device\")"},{"line_number":114,"context_line":"        return msg"},{"line_number":115,"context_line":"    connector_types \u003d (valid_values if valid_values else"},{"line_number":116,"context_line":"                       [\u0027GRE\u0027, \u0027STT\u0027, \u0027Bridge\u0027, \u0027IPsecGRE\u0027, \u0027IPsecSTT\u0027])"},{"line_number":117,"context_line":"    if data not in connector_types:"},{"line_number":118,"context_line":"        msg \u003d _(\"Unknown connector type: %s\") % data"},{"line_number":119,"context_line":"        return msg"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAVn%2F%2FiAQ%3D","line":116,"updated":"2014-03-05 15:29:31.000000000","message":"These are defined here:\n\nhttps://github.com/openstack/neutron/blob/master/neutron/plugins/vmware/plugins/base.py#L87\n\nYou might want to move to somewhere more appropriate and reuse them. Also, what\u0027s with the capital case? Please can you double check?","commit_id":"5ed3aa18eeb444e355091e100e882ffef020855c"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"a248c99de5a3fd30b73fd696aa23f2e126ca8de3","unresolved":false,"context_lines":[{"line_number":113,"context_line":"        msg \u003d _(\"A connector type is required to create a gateway device\")"},{"line_number":114,"context_line":"        return msg"},{"line_number":115,"context_line":"    connector_types \u003d (valid_values if valid_values else"},{"line_number":116,"context_line":"                       [\u0027GRE\u0027, \u0027STT\u0027, \u0027Bridge\u0027, \u0027IPsecGRE\u0027, \u0027IPsecSTT\u0027])"},{"line_number":117,"context_line":"    if data not in connector_types:"},{"line_number":118,"context_line":"        msg \u003d _(\"Unknown connector type: %s\") % data"},{"line_number":119,"context_line":"        return msg"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAVn%2F%2FM8k%3D","line":116,"updated":"2014-03-07 17:16:29.000000000","message":"I see you ignored my comment on PS11, okay...I\u0027ll make a note for that...","commit_id":"bda33006d5610b3473a33e6ed4ea40384b9cd8a1"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"855e6e34bfd4096c6c9852a496409838be84f706","unresolved":false,"context_lines":[{"line_number":113,"context_line":"        msg \u003d _(\"A connector type is required to create a gateway device\")"},{"line_number":114,"context_line":"        return msg"},{"line_number":115,"context_line":"    connector_types \u003d (valid_values if valid_values else"},{"line_number":116,"context_line":"                       [\u0027GRE\u0027, \u0027STT\u0027, \u0027Bridge\u0027, \u0027IPsecGRE\u0027, \u0027IPsecSTT\u0027])"},{"line_number":117,"context_line":"    if data not in connector_types:"},{"line_number":118,"context_line":"        msg \u003d _(\"Unknown connector type: %s\") % data"},{"line_number":119,"context_line":"        return msg"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAVn%2F%2FMQs%3D","line":116,"in_reply_to":"AAAAVn%2F%2FM8k%3D","updated":"2014-03-07 18:39:09.000000000","message":"I missed it, not ignored it.\n\nThe backend call is case-sensitive. It should not be hard to reuse however the definition you pointed out and provide appropriate mappings.","commit_id":"bda33006d5610b3473a33e6ed4ea40384b9cd8a1"}],"neutron/plugins/vmware/nsxlib/l2gateway.py":[{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"a248c99de5a3fd30b73fd696aa23f2e126ca8de3","unresolved":false,"context_lines":[{"line_number":148,"context_line":"                                      connector_type, connector_ip,"},{"line_number":149,"context_line":"                                      client_certificate, tz_uuid)"},{"line_number":150,"context_line":"    return do_request("},{"line_number":151,"context_line":"        \"PUT\", _build_uri_path(TRANSPORTNODE_RESOURCE, resource_id\u003dgateway_id),"},{"line_number":152,"context_line":"        json.dumps(body), cluster\u003dcluster)"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAVn%2F%2FM9g%3D","line":151,"updated":"2014-03-07 17:16:29.000000000","message":"here?","commit_id":"bda33006d5610b3473a33e6ed4ea40384b9cd8a1"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"855e6e34bfd4096c6c9852a496409838be84f706","unresolved":false,"context_lines":[{"line_number":148,"context_line":"                                      connector_type, connector_ip,"},{"line_number":149,"context_line":"                                      client_certificate, tz_uuid)"},{"line_number":150,"context_line":"    return do_request("},{"line_number":151,"context_line":"        \"PUT\", _build_uri_path(TRANSPORTNODE_RESOURCE, resource_id\u003dgateway_id),"},{"line_number":152,"context_line":"        json.dumps(body), cluster\u003dcluster)"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAVn%2F%2FMQg%3D","line":151,"in_reply_to":"AAAAVn%2F%2FM9g%3D","updated":"2014-03-07 18:39:09.000000000","message":"Done","commit_id":"bda33006d5610b3473a33e6ed4ea40384b9cd8a1"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"a248c99de5a3fd30b73fd696aa23f2e126ca8de3","unresolved":false,"context_lines":[{"line_number":153,"context_line":""},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"def delete_gateway_device(cluster, device_uuid):"},{"line_number":156,"context_line":"    return do_request(\"DELETE\","},{"line_number":157,"context_line":"                      _build_uri_path(TRANSPORTNODE_RESOURCE,"},{"line_number":158,"context_line":"                                      device_uuid),"},{"line_number":159,"context_line":"                      cluster\u003dcluster)"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAVn%2F%2FM9k%3D","line":156,"updated":"2014-03-07 17:16:29.000000000","message":"use variables instead?","commit_id":"bda33006d5610b3473a33e6ed4ea40384b9cd8a1"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"855e6e34bfd4096c6c9852a496409838be84f706","unresolved":false,"context_lines":[{"line_number":153,"context_line":""},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"def delete_gateway_device(cluster, device_uuid):"},{"line_number":156,"context_line":"    return do_request(\"DELETE\","},{"line_number":157,"context_line":"                      _build_uri_path(TRANSPORTNODE_RESOURCE,"},{"line_number":158,"context_line":"                                      device_uuid),"},{"line_number":159,"context_line":"                      cluster\u003dcluster)"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAVn%2F%2FMQc%3D","line":156,"in_reply_to":"AAAAVn%2F%2FM9k%3D","updated":"2014-03-07 18:39:09.000000000","message":"Done","commit_id":"bda33006d5610b3473a33e6ed4ea40384b9cd8a1"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"a248c99de5a3fd30b73fd696aa23f2e126ca8de3","unresolved":false,"context_lines":[{"line_number":160,"context_line":""},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"def get_gateway_device_status(cluster, device_uuid):"},{"line_number":163,"context_line":"    status_res \u003d do_request(\"GET\","},{"line_number":164,"context_line":"                            _build_uri_path(TRANSPORTNODE_RESOURCE,"},{"line_number":165,"context_line":"                                            device_uuid,"},{"line_number":166,"context_line":"                                            extra_action\u003d\u0027status\u0027),"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAVn%2F%2FM9Y%3D","line":163,"updated":"2014-03-07 17:16:29.000000000","message":"here?","commit_id":"bda33006d5610b3473a33e6ed4ea40384b9cd8a1"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"855e6e34bfd4096c6c9852a496409838be84f706","unresolved":false,"context_lines":[{"line_number":160,"context_line":""},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"def get_gateway_device_status(cluster, device_uuid):"},{"line_number":163,"context_line":"    status_res \u003d do_request(\"GET\","},{"line_number":164,"context_line":"                            _build_uri_path(TRANSPORTNODE_RESOURCE,"},{"line_number":165,"context_line":"                                            device_uuid,"},{"line_number":166,"context_line":"                                            extra_action\u003d\u0027status\u0027),"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAVn%2F%2FMQY%3D","line":163,"in_reply_to":"AAAAVn%2F%2FM9Y%3D","updated":"2014-03-07 18:39:09.000000000","message":"Done","commit_id":"bda33006d5610b3473a33e6ed4ea40384b9cd8a1"}],"neutron/plugins/vmware/plugins/base.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"f641fac9a649299be0b525dea135dba8aa071181","unresolved":false,"context_lines":[{"line_number":2237,"context_line":"                       \"NSX backend (NSX id:%(nsx_id)s) because the NSX \""},{"line_number":2238,"context_line":"                       \"resource was not found\"),"},{"line_number":2239,"context_line":"                     {\u0027neutron_id\u0027: device_id, \u0027nsx_id\u0027: nsx_device_id})"},{"line_number":2240,"context_line":"        except api_exc.NsxApiException as e:"},{"line_number":2241,"context_line":"            LOG.warn(_(\"Removal of gateway device: %(neutron_id)s failed on \""},{"line_number":2242,"context_line":"                       \"NSX backend (NSX id:%(nsx_id)s). Neutron and NSX \""},{"line_number":2243,"context_line":"                       \"states have diverged. Failure reason:%(error)s\"),"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAVn%2F%2Fwfs%3D","line":2240,"updated":"2014-03-04 09:01:08.000000000","message":"can you please use with excutils.save_and_reraise_exception():","commit_id":"e717c030acbd6c16c3c14955da13d65adbc17438"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"61311442aa2d28f7aca9429cc26617d8fbc313c0","unresolved":false,"context_lines":[{"line_number":2237,"context_line":"                       \"NSX backend (NSX id:%(nsx_id)s) because the NSX \""},{"line_number":2238,"context_line":"                       \"resource was not found\"),"},{"line_number":2239,"context_line":"                     {\u0027neutron_id\u0027: device_id, \u0027nsx_id\u0027: nsx_device_id})"},{"line_number":2240,"context_line":"        except api_exc.NsxApiException as e:"},{"line_number":2241,"context_line":"            LOG.warn(_(\"Removal of gateway device: %(neutron_id)s failed on \""},{"line_number":2242,"context_line":"                       \"NSX backend (NSX id:%(nsx_id)s). Neutron and NSX \""},{"line_number":2243,"context_line":"                       \"states have diverged. Failure reason:%(error)s\"),"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAVn%2F%2Fi8c%3D","line":2240,"in_reply_to":"AAAAVn%2F%2Fwfs%3D","updated":"2014-03-05 13:54:02.000000000","message":"I thought save_and_reraise should be used in cases where the exception context could be cleared, which might happen if the handler caused a greenthread switch or raised in its own turn.\n\nI\u0027m not sure if that applies to LOG statements as well","commit_id":"e717c030acbd6c16c3c14955da13d65adbc17438"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"a248c99de5a3fd30b73fd696aa23f2e126ca8de3","unresolved":false,"context_lines":[{"line_number":2108,"context_line":"    def _get_nsx_device_id(self, context, device_id):"},{"line_number":2109,"context_line":"        return self._get_gateway_device(context, device_id)[\u0027nsx_id\u0027]"},{"line_number":2110,"context_line":""},{"line_number":2111,"context_line":"    def _get_nsx_device_status(self, nsx_uuid):"},{"line_number":2112,"context_line":"        try:"},{"line_number":2113,"context_line":"            status_up \u003d l2gwlib.get_gateway_device_status("},{"line_number":2114,"context_line":"                self.cluster, nsx_uuid)"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAVn%2F%2FM7I%3D","line":2111,"updated":"2014-03-07 17:16:29.000000000","message":"why is this a private class method, it does not need to be. Pass the cluster and consider moving to a util function.","commit_id":"bda33006d5610b3473a33e6ed4ea40384b9cd8a1"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"a248c99de5a3fd30b73fd696aa23f2e126ca8de3","unresolved":false,"context_lines":[{"line_number":2121,"context_line":"        except n_exc.NotFound:"},{"line_number":2122,"context_line":"            return networkgw_db.ERROR"},{"line_number":2123,"context_line":""},{"line_number":2124,"context_line":"    def _get_nsx_device_statuses(self, tenant_id):"},{"line_number":2125,"context_line":"        try:"},{"line_number":2126,"context_line":"            status_dict \u003d l2gwlib.get_gateway_devices_status("},{"line_number":2127,"context_line":"                self.cluster, tenant_id)"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAVn%2F%2FM7k%3D","line":2124,"updated":"2014-03-07 17:16:29.000000000","message":"why is this a private class method, it does not need to be. Consider moving to a util function.","commit_id":"bda33006d5610b3473a33e6ed4ea40384b9cd8a1"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"a248c99de5a3fd30b73fd696aa23f2e126ca8de3","unresolved":false,"context_lines":[{"line_number":2182,"context_line":"                    query \u003d self._model_query("},{"line_number":2183,"context_line":"                        context, networkgw_db.NetworkGatewayDevice).filter("},{"line_number":2184,"context_line":"                            networkgw_db.NetworkGatewayDevice.id \u003d\u003d neutron_id)"},{"line_number":2185,"context_line":"                    query.delete()"},{"line_number":2186,"context_line":""},{"line_number":2187,"context_line":"    def update_gateway_device_handler(self, context, gateway_device,"},{"line_number":2188,"context_line":"                                      old_gateway_device_data,"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAVn%2F%2FM5g%3D","line":2185,"updated":"2014-03-07 17:16:29.000000000","message":"is it worth protecting this delete with a try-catch?","commit_id":"bda33006d5610b3473a33e6ed4ea40384b9cd8a1"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"855e6e34bfd4096c6c9852a496409838be84f706","unresolved":false,"context_lines":[{"line_number":2182,"context_line":"                    query \u003d self._model_query("},{"line_number":2183,"context_line":"                        context, networkgw_db.NetworkGatewayDevice).filter("},{"line_number":2184,"context_line":"                            networkgw_db.NetworkGatewayDevice.id \u003d\u003d neutron_id)"},{"line_number":2185,"context_line":"                    query.delete()"},{"line_number":2186,"context_line":""},{"line_number":2187,"context_line":"    def update_gateway_device_handler(self, context, gateway_device,"},{"line_number":2188,"context_line":"                                      old_gateway_device_data,"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAVn%2F%2FMNw%3D","line":2185,"in_reply_to":"AAAAVn%2F%2FM5g%3D","updated":"2014-03-07 18:39:09.000000000","message":"try...catch is so java! you still live in the noughties, you\u0027re old!\n\nOn another note, query.delete should not raise an exception if no record is found. In case of other DB exceptions, I think it\u0027s fine to let re-raise.\nI will probably use synchronize_session\u003dFalse in this case however.","commit_id":"bda33006d5610b3473a33e6ed4ea40384b9cd8a1"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"64e265734a26a32181898dca0908efbdbb4edc76","unresolved":false,"context_lines":[{"line_number":2211,"context_line":"                        networkgw_db.NetworkGatewayDevice.id \u003d\u003d neutron_id)"},{"line_number":2212,"context_line":"                query.update({\u0027status\u0027: device_status},"},{"line_number":2213,"context_line":"                             synchronize_session\u003dFalse)"},{"line_number":2214,"context_line":"            LOG.debug(_(\"Neutron gateway device: %(neutron_id)s;\""},{"line_number":2215,"context_line":"                        \"NSX transport node identifier: %(nsx_id)s;\""},{"line_number":2216,"context_line":"                        \"Operational status: %(status)s.\"),"},{"line_number":2217,"context_line":"                      {\u0027neutron_id\u0027: neutron_id,"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAVn%2F%2FSkM%3D","line":2214,"updated":"2014-03-07 01:23:15.000000000","message":"missing spaces","commit_id":"bda33006d5610b3473a33e6ed4ea40384b9cd8a1"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"a248c99de5a3fd30b73fd696aa23f2e126ca8de3","unresolved":false,"context_lines":[{"line_number":2323,"context_line":"                       \"resource was not found\"),"},{"line_number":2324,"context_line":"                     {\u0027neutron_id\u0027: device_id, \u0027nsx_id\u0027: nsx_device_id})"},{"line_number":2325,"context_line":"        except api_exc.NsxApiException as e:"},{"line_number":2326,"context_line":"            LOG.warn(_(\"Removal of gateway device: %(neutron_id)s failed on \""},{"line_number":2327,"context_line":"                       \"NSX backend (NSX id:%(nsx_id)s). Neutron and NSX \""},{"line_number":2328,"context_line":"                       \"states have diverged. Failure reason:%(error)s\"),"},{"line_number":2329,"context_line":"                     {\u0027neutron_id\u0027: device_id,"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAVn%2F%2FM5E%3D","line":2326,"updated":"2014-03-07 17:16:29.000000000","message":"so why we log at warn level?","commit_id":"bda33006d5610b3473a33e6ed4ea40384b9cd8a1"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"855e6e34bfd4096c6c9852a496409838be84f706","unresolved":false,"context_lines":[{"line_number":2323,"context_line":"                       \"resource was not found\"),"},{"line_number":2324,"context_line":"                     {\u0027neutron_id\u0027: device_id, \u0027nsx_id\u0027: nsx_device_id})"},{"line_number":2325,"context_line":"        except api_exc.NsxApiException as e:"},{"line_number":2326,"context_line":"            LOG.warn(_(\"Removal of gateway device: %(neutron_id)s failed on \""},{"line_number":2327,"context_line":"                       \"NSX backend (NSX id:%(nsx_id)s). Neutron and NSX \""},{"line_number":2328,"context_line":"                       \"states have diverged. Failure reason:%(error)s\"),"},{"line_number":2329,"context_line":"                     {\u0027neutron_id\u0027: device_id,"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAVn%2F%2FMPE%3D","line":2326,"in_reply_to":"AAAAVn%2F%2FM5E%3D","updated":"2014-03-07 18:39:09.000000000","message":"I will elevate to LOG.exception","commit_id":"bda33006d5610b3473a33e6ed4ea40384b9cd8a1"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"64e265734a26a32181898dca0908efbdbb4edc76","unresolved":false,"context_lines":[{"line_number":2507,"context_line":""},{"line_number":2508,"context_line":""},{"line_number":2509,"context_line":"# for backward compatibility"},{"line_number":2510,"context_line":"NsxPluginV2 \u003d NsxPluginV2"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAVn%2F%2FSjo%3D","line":2510,"updated":"2014-03-07 01:23:15.000000000","message":"WHoops?","commit_id":"bda33006d5610b3473a33e6ed4ea40384b9cd8a1"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"183b8d82f47ea9156ab54eace9afbdbb3898585a","unresolved":false,"context_lines":[{"line_number":2507,"context_line":""},{"line_number":2508,"context_line":""},{"line_number":2509,"context_line":"# for backward compatibility"},{"line_number":2510,"context_line":"NsxPluginV2 \u003d NsxPluginV2"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAVn%2F%2FNmA%3D","line":2510,"in_reply_to":"AAAAVn%2F%2FSjo%3D","updated":"2014-03-07 15:55:57.000000000","message":"I Did :%s/NvpPluginV2/NsxPluginV2/g","commit_id":"bda33006d5610b3473a33e6ed4ea40384b9cd8a1"}]}
