)]}'
{"neutron/plugins/bigswitch/plugin.py":[{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"520c327388f1921ed668dd1626261be32f4cc7ee","unresolved":false,"context_lines":[{"line_number":79,"context_line":"from neutron.plugins.bigswitch import servermanager"},{"line_number":80,"context_line":"from neutron.plugins.bigswitch.version import version_string_with_vcs"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"eventlet.monkey_patch()"},{"line_number":83,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAU3%2F%2F6YA%3D","line":82,"updated":"2014-02-24 05:09:31.000000000","message":"This is not necessary since the server will call monkey_patch for you.","commit_id":"7de8ac54371c46c538a6c6e5103f16ab5fb1d45b"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"cb5d8da2f0486e3f883898087f28da04453230ef","unresolved":false,"context_lines":[{"line_number":79,"context_line":"from neutron.plugins.bigswitch import servermanager"},{"line_number":80,"context_line":"from neutron.plugins.bigswitch.version import version_string_with_vcs"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"eventlet.monkey_patch()"},{"line_number":83,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAU3%2F%2F6Nc%3D","line":82,"in_reply_to":"AAAAU3%2F%2F6YA%3D","updated":"2014-02-24 06:01:04.000000000","message":"Done","commit_id":"7de8ac54371c46c538a6c6e5103f16ab5fb1d45b"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"c91b3a1f4c58b8d7b102d7fccf1d1b4964701b3c","unresolved":false,"context_lines":[{"line_number":534,"context_line":"                # and the data in the backend."},{"line_number":535,"context_line":"                # Fail this create but spawn a sync to get it consistent."},{"line_number":536,"context_line":"                if (cfg.CONF.RESTPROXY.auto_sync_on_failure and"},{"line_number":537,"context_line":"                    e.status \u003d\u003d 404 and servermanager.NXNETWORK in e.reason):"},{"line_number":538,"context_line":"                    LOG.error(_(\"Iconsistency with backend controller \""},{"line_number":539,"context_line":"                                \"triggering full synchronization.\"))"},{"line_number":540,"context_line":"                    eventlet.spawn(self._send_all_data,"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAU3%2F%2FgI8%3D","line":537,"updated":"2014-02-26 09:13:57.000000000","message":"please consider to use httplib.NOT_FOUND instead of 404","commit_id":"e58fa2385b9a21c7a4a3a35ed56431725536bc23"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"285c85207ddf01c71082154ee236f6693d96ee86","unresolved":false,"context_lines":[{"line_number":534,"context_line":"                # and the data in the backend."},{"line_number":535,"context_line":"                # Fail this create but spawn a sync to get it consistent."},{"line_number":536,"context_line":"                if (cfg.CONF.RESTPROXY.auto_sync_on_failure and"},{"line_number":537,"context_line":"                    e.status \u003d\u003d 404 and servermanager.NXNETWORK in e.reason):"},{"line_number":538,"context_line":"                    LOG.error(_(\"Iconsistency with backend controller \""},{"line_number":539,"context_line":"                                \"triggering full synchronization.\"))"},{"line_number":540,"context_line":"                    eventlet.spawn(self._send_all_data,"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAU3%2F%2FaiE%3D","line":537,"in_reply_to":"AAAAU3%2F%2FgI8%3D","updated":"2014-02-26 19:24:43.000000000","message":"Done","commit_id":"e58fa2385b9a21c7a4a3a35ed56431725536bc23"},{"author":{"_account_id":7962,"name":"Ronak Shah","email":"ronak.malav.shah@gmail.com","username":"ronak"},"change_message_id":"d650d7fa4e6165f4b2823fc6d8e9a862ccfd2d08","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        if not self.servers:"},{"line_number":174,"context_line":"            LOG.warning(_(\"ServerPool not set!\"))"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    def _get_all_data(self, get_ports\u003dTrue, get_floating_ips\u003dTrue,"},{"line_number":177,"context_line":"                      get_routers\u003dTrue):"},{"line_number":178,"context_line":"        admin_context \u003d qcontext.get_admin_context()"},{"line_number":179,"context_line":"        networks \u003d []"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAVn%2F%2Fq0g%3D","line":176,"updated":"2014-03-05 01:31:24.000000000","message":"It would be nicer to pass all get_\u003cresource\u003e in a single list and than read that list for further operation. Or use kwargs for better readability. A minor nit and something to take care may be in Juno :)","commit_id":"4628ac47b41ae28008866df36e8588947a78f204"},{"author":{"_account_id":7962,"name":"Ronak Shah","email":"ronak.malav.shah@gmail.com","username":"ronak"},"change_message_id":"d650d7fa4e6165f4b2823fc6d8e9a862ccfd2d08","unresolved":false,"context_lines":[{"line_number":402,"context_line":"                            \"triggering full synchronization.\"))"},{"line_number":403,"context_line":"                # args depend on if we are operating in ML2 driver"},{"line_number":404,"context_line":"                # or as the full plugin"},{"line_number":405,"context_line":"                topoargs \u003d self.servers.get_topo_function_args"},{"line_number":406,"context_line":"                self._send_all_data("},{"line_number":407,"context_line":"                    send_ports\u003dtopoargs[\u0027get_ports\u0027],"},{"line_number":408,"context_line":"                    send_floating_ips\u003dtopoargs[\u0027get_floating_ips\u0027],"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAVn%2F%2Fqyg%3D","line":405,"updated":"2014-03-05 01:31:24.000000000","message":"In continuation on earlier comment, you can simply pass topoargs as one arg replacing first 3.","commit_id":"4628ac47b41ae28008866df36e8588947a78f204"}],"neutron/plugins/bigswitch/servermanager.py":[{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"520c327388f1921ed668dd1626261be32f4cc7ee","unresolved":false,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def __init__(self, **kwargs):"},{"line_number":73,"context_line":"        self.status \u003d kwargs.pop(\u0027status\u0027, None)"},{"line_number":74,"context_line":"        self.reason \u003d kwargs.get(\u0027reason\u0027, None)"},{"line_number":75,"context_line":"        super(RemoteRestError, self).__init__(**kwargs)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAU3%2F%2F6X0%3D","line":74,"updated":"2014-02-24 05:09:31.000000000","message":"self.reason \u003d kwargs.get(\u0027reason\u0027)","commit_id":"7de8ac54371c46c538a6c6e5103f16ab5fb1d45b"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"cb5d8da2f0486e3f883898087f28da04453230ef","unresolved":false,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def __init__(self, **kwargs):"},{"line_number":73,"context_line":"        self.status \u003d kwargs.pop(\u0027status\u0027, None)"},{"line_number":74,"context_line":"        self.reason \u003d kwargs.get(\u0027reason\u0027, None)"},{"line_number":75,"context_line":"        super(RemoteRestError, self).__init__(**kwargs)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAU3%2F%2F6NI%3D","line":74,"in_reply_to":"AAAAU3%2F%2F6X0%3D","updated":"2014-02-24 06:01:04.000000000","message":"Done","commit_id":"7de8ac54371c46c538a6c6e5103f16ab5fb1d45b"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"520c327388f1921ed668dd1626261be32f4cc7ee","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        if auth:"},{"line_number":94,"context_line":"            self.auth \u003d \u0027Basic \u0027 + base64.encodestring(auth).strip()"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def rest_call(self, action, resource, data, headers, **kwargs):"},{"line_number":97,"context_line":"        uri \u003d self.base_uri + resource"},{"line_number":98,"context_line":"        body \u003d json.dumps(data)"},{"line_number":99,"context_line":"        if not headers:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAU3%2F%2F6Xo%3D","line":96,"updated":"2014-02-24 05:09:31.000000000","message":"timeout\u003dNone","commit_id":"7de8ac54371c46c538a6c6e5103f16ab5fb1d45b"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"cb5d8da2f0486e3f883898087f28da04453230ef","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        if auth:"},{"line_number":94,"context_line":"            self.auth \u003d \u0027Basic \u0027 + base64.encodestring(auth).strip()"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def rest_call(self, action, resource, data, headers, **kwargs):"},{"line_number":97,"context_line":"        uri \u003d self.base_uri + resource"},{"line_number":98,"context_line":"        body \u003d json.dumps(data)"},{"line_number":99,"context_line":"        if not headers:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAU3%2F%2F6L4%3D","line":96,"in_reply_to":"AAAAU3%2F%2F6Xo%3D","updated":"2014-02-24 06:01:04.000000000","message":"Done","commit_id":"7de8ac54371c46c538a6c6e5103f16ab5fb1d45b"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"520c327388f1921ed668dd1626261be32f4cc7ee","unresolved":false,"context_lines":[{"line_number":115,"context_line":"                   \u0027action\u0027: action})"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"        conn \u003d None"},{"line_number":118,"context_line":"        timeout \u003d kwargs.get(\u0027timeout\u0027, self.timeout)"},{"line_number":119,"context_line":"        if self.ssl:"},{"line_number":120,"context_line":"            conn \u003d httplib.HTTPSConnection("},{"line_number":121,"context_line":"                self.server, self.port, timeout\u003dtimeout)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAU3%2F%2F6Xk%3D","line":118,"updated":"2014-02-24 05:09:31.000000000","message":"timeout \u003d timeout or self.timeout","commit_id":"7de8ac54371c46c538a6c6e5103f16ab5fb1d45b"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"cb5d8da2f0486e3f883898087f28da04453230ef","unresolved":false,"context_lines":[{"line_number":115,"context_line":"                   \u0027action\u0027: action})"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"        conn \u003d None"},{"line_number":118,"context_line":"        timeout \u003d kwargs.get(\u0027timeout\u0027, self.timeout)"},{"line_number":119,"context_line":"        if self.ssl:"},{"line_number":120,"context_line":"            conn \u003d httplib.HTTPSConnection("},{"line_number":121,"context_line":"                self.server, self.port, timeout\u003dtimeout)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAU3%2F%2F6L0%3D","line":118,"in_reply_to":"AAAAU3%2F%2F6Xk%3D","updated":"2014-02-24 06:01:04.000000000","message":"Done","commit_id":"7de8ac54371c46c538a6c6e5103f16ab5fb1d45b"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"520c327388f1921ed668dd1626261be32f4cc7ee","unresolved":false,"context_lines":[{"line_number":211,"context_line":""},{"line_number":212,"context_line":"    @utils.synchronized(\u0027bsn-rest-call\u0027, external\u003dTrue)"},{"line_number":213,"context_line":"    def rest_call(self, action, resource, data, headers, ignore_codes,"},{"line_number":214,"context_line":"                  **kwargs):"},{"line_number":215,"context_line":"        good_first \u003d sorted(self.servers, key\u003dlambda x: x.failed)"},{"line_number":216,"context_line":"        first_response \u003d None"},{"line_number":217,"context_line":"        for active_server in good_first:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAU3%2F%2F6XU%3D","line":214,"updated":"2014-02-24 05:09:31.000000000","message":"timeout\u003dNone","commit_id":"7de8ac54371c46c538a6c6e5103f16ab5fb1d45b"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"cb5d8da2f0486e3f883898087f28da04453230ef","unresolved":false,"context_lines":[{"line_number":211,"context_line":""},{"line_number":212,"context_line":"    @utils.synchronized(\u0027bsn-rest-call\u0027, external\u003dTrue)"},{"line_number":213,"context_line":"    def rest_call(self, action, resource, data, headers, ignore_codes,"},{"line_number":214,"context_line":"                  **kwargs):"},{"line_number":215,"context_line":"        good_first \u003d sorted(self.servers, key\u003dlambda x: x.failed)"},{"line_number":216,"context_line":"        first_response \u003d None"},{"line_number":217,"context_line":"        for active_server in good_first:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAU3%2F%2F6Lc%3D","line":214,"in_reply_to":"AAAAU3%2F%2F6XU%3D","updated":"2014-02-24 06:01:04.000000000","message":"Done","commit_id":"7de8ac54371c46c538a6c6e5103f16ab5fb1d45b"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"520c327388f1921ed668dd1626261be32f4cc7ee","unresolved":false,"context_lines":[{"line_number":248,"context_line":"        return first_response"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"    def rest_action(self, action, resource, data\u003d\u0027\u0027, errstr\u003d\u0027%s\u0027,"},{"line_number":251,"context_line":"                    ignore_codes\u003d[], headers\u003dNone, **kwargs):"},{"line_number":252,"context_line":"        \"\"\""},{"line_number":253,"context_line":"        Wrapper for rest_call that verifies success and raises a"},{"line_number":254,"context_line":"        RemoteRestError on failure with a provided error string"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAU3%2F%2F6W0%3D","line":251,"updated":"2014-02-24 05:09:31.000000000","message":"timeout\u003dNone","commit_id":"7de8ac54371c46c538a6c6e5103f16ab5fb1d45b"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"cb5d8da2f0486e3f883898087f28da04453230ef","unresolved":false,"context_lines":[{"line_number":248,"context_line":"        return first_response"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"    def rest_action(self, action, resource, data\u003d\u0027\u0027, errstr\u003d\u0027%s\u0027,"},{"line_number":251,"context_line":"                    ignore_codes\u003d[], headers\u003dNone, **kwargs):"},{"line_number":252,"context_line":"        \"\"\""},{"line_number":253,"context_line":"        Wrapper for rest_call that verifies success and raises a"},{"line_number":254,"context_line":"        RemoteRestError on failure with a provided error string"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAU3%2F%2F6KY%3D","line":251,"in_reply_to":"AAAAU3%2F%2F6W0%3D","updated":"2014-02-24 06:01:04.000000000","message":"Done","commit_id":"7de8ac54371c46c538a6c6e5103f16ab5fb1d45b"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"520c327388f1921ed668dd1626261be32f4cc7ee","unresolved":false,"context_lines":[{"line_number":258,"context_line":"        if not ignore_codes and action \u003d\u003d \u0027DELETE\u0027:"},{"line_number":259,"context_line":"            ignore_codes \u003d [404]"},{"line_number":260,"context_line":"        resp \u003d self.rest_call(action, resource, data, headers, ignore_codes,"},{"line_number":261,"context_line":"                              **kwargs)"},{"line_number":262,"context_line":"        if self.server_failure(resp, ignore_codes):"},{"line_number":263,"context_line":"            LOG.error(errstr, resp[2])"},{"line_number":264,"context_line":"            raise RemoteRestError(reason\u003dresp[2], status\u003dresp[0])"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAU3%2F%2F6Ws%3D","line":261,"updated":"2014-02-24 05:09:31.000000000","message":"timeout\u003dNone","commit_id":"7de8ac54371c46c538a6c6e5103f16ab5fb1d45b"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"cb5d8da2f0486e3f883898087f28da04453230ef","unresolved":false,"context_lines":[{"line_number":258,"context_line":"        if not ignore_codes and action \u003d\u003d \u0027DELETE\u0027:"},{"line_number":259,"context_line":"            ignore_codes \u003d [404]"},{"line_number":260,"context_line":"        resp \u003d self.rest_call(action, resource, data, headers, ignore_codes,"},{"line_number":261,"context_line":"                              **kwargs)"},{"line_number":262,"context_line":"        if self.server_failure(resp, ignore_codes):"},{"line_number":263,"context_line":"            LOG.error(errstr, resp[2])"},{"line_number":264,"context_line":"            raise RemoteRestError(reason\u003dresp[2], status\u003dresp[0])"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAU3%2F%2F6KU%3D","line":261,"in_reply_to":"AAAAU3%2F%2F6Ws%3D","updated":"2014-02-24 06:01:04.000000000","message":"Done","commit_id":"7de8ac54371c46c538a6c6e5103f16ab5fb1d45b"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"c91b3a1f4c58b8d7b102d7fccf1d1b4964701b3c","unresolved":false,"context_lines":[{"line_number":270,"context_line":"            ret \u003d active_server.rest_call(action, resource, data, headers,"},{"line_number":271,"context_line":"                                          timeout, **kwargs)"},{"line_number":272,"context_line":"            # If inconsistent, synchronize and try again"},{"line_number":273,"context_line":"            if ret[0] \u003d\u003d 409:"},{"line_number":274,"context_line":"                if not self.get_topo_function:"},{"line_number":275,"context_line":"                    raise cfg.Error(_(\u0027Server requires synchronization, \u0027"},{"line_number":276,"context_line":"                                      \u0027but no topology function was defined.\u0027))"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAU3%2F%2FgII%3D","line":273,"updated":"2014-02-26 09:13:57.000000000","message":"please consider to use httplib.CONFLICT instead of 409","commit_id":"e58fa2385b9a21c7a4a3a35ed56431725536bc23"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"285c85207ddf01c71082154ee236f6693d96ee86","unresolved":false,"context_lines":[{"line_number":270,"context_line":"            ret \u003d active_server.rest_call(action, resource, data, headers,"},{"line_number":271,"context_line":"                                          timeout, **kwargs)"},{"line_number":272,"context_line":"            # If inconsistent, synchronize and try again"},{"line_number":273,"context_line":"            if ret[0] \u003d\u003d 409:"},{"line_number":274,"context_line":"                if not self.get_topo_function:"},{"line_number":275,"context_line":"                    raise cfg.Error(_(\u0027Server requires synchronization, \u0027"},{"line_number":276,"context_line":"                                      \u0027but no topology function was defined.\u0027))"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAU3%2F%2FahA%3D","line":273,"in_reply_to":"AAAAU3%2F%2FgII%3D","updated":"2014-02-26 19:24:43.000000000","message":"Done","commit_id":"e58fa2385b9a21c7a4a3a35ed56431725536bc23"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"65ab89ceb9368e0d769d30a14d774a0a49b18e35","unresolved":false,"context_lines":[{"line_number":113,"context_line":"        return self.capabilities"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    def rest_call(self, action, resource, data\u003d\u0027\u0027, headers\u003d{}, timeout\u003dNone,"},{"line_number":116,"context_line":"                  **kwargs):"},{"line_number":117,"context_line":"        uri \u003d self.base_uri + resource"},{"line_number":118,"context_line":"        body \u003d json.dumps(data)"},{"line_number":119,"context_line":"        if not headers:"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAVn%2F%2Fzwk%3D","line":116,"updated":"2014-03-04 01:02:49.000000000","message":"Why do we need kwargs here?  It is not used in this method.","commit_id":"0275707d5d05944c26208fe553503cbf0f40d21b"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"f2aa58256635309b4efdfbcac824d0109157758c","unresolved":false,"context_lines":[{"line_number":113,"context_line":"        return self.capabilities"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    def rest_call(self, action, resource, data\u003d\u0027\u0027, headers\u003d{}, timeout\u003dNone,"},{"line_number":116,"context_line":"                  **kwargs):"},{"line_number":117,"context_line":"        uri \u003d self.base_uri + resource"},{"line_number":118,"context_line":"        body \u003d json.dumps(data)"},{"line_number":119,"context_line":"        if not headers:"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAVn%2F%2FzrY%3D","line":116,"in_reply_to":"AAAAVn%2F%2Fzwk%3D","updated":"2014-03-04 01:16:46.000000000","message":"Had timeout in it in an earlier version. Now it\u0027s not necessary.","commit_id":"0275707d5d05944c26208fe553503cbf0f40d21b"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"65ab89ceb9368e0d769d30a14d774a0a49b18e35","unresolved":false,"context_lines":[{"line_number":179,"context_line":"                                                    \u0027data\u0027: ret[3]})"},{"line_number":180,"context_line":"        return ret"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"        def _put_consistency_hash(self, newhash):"},{"line_number":183,"context_line":"            self.mypool.consistency_hash \u003d newhash"},{"line_number":184,"context_line":"            cdb.put_consistency_hash(newhash)"},{"line_number":185,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAVn%2F%2Fzvo%3D","line":182,"updated":"2014-03-04 01:02:49.000000000","message":"Why is this defined inside of another method?","commit_id":"0275707d5d05944c26208fe553503cbf0f40d21b"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"f2aa58256635309b4efdfbcac824d0109157758c","unresolved":false,"context_lines":[{"line_number":179,"context_line":"                                                    \u0027data\u0027: ret[3]})"},{"line_number":180,"context_line":"        return ret"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"        def _put_consistency_hash(self, newhash):"},{"line_number":183,"context_line":"            self.mypool.consistency_hash \u003d newhash"},{"line_number":184,"context_line":"            cdb.put_consistency_hash(newhash)"},{"line_number":185,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAVn%2F%2FzsA%3D","line":182,"in_reply_to":"AAAAVn%2F%2Fzvo%3D","updated":"2014-03-04 01:16:46.000000000","message":"Functional typo... :-)","commit_id":"0275707d5d05944c26208fe553503cbf0f40d21b"}],"neutron/plugins/ml2/drivers/mech_bigswitch/driver.py":[{"author":{"_account_id":10310,"name":"Mandeep Dhami","email":"dhami@noironetworks.com","username":"mandeepdhami"},"change_message_id":"049975e65b62eb16271c3181ec8146dd891532d4","unresolved":false,"context_lines":[{"line_number":84,"context_line":"                if e.status \u003d\u003d 404 and cfg.CONF.RESTPROXY.auto_sync_on_failure:"},{"line_number":85,"context_line":"                    LOG.error(_(\"Iconsistency with backend controller \""},{"line_number":86,"context_line":"                                \"triggering full synchronization.\"))"},{"line_number":87,"context_line":"                    eventlet.spawn("},{"line_number":88,"context_line":"                        self._send_all_data, send_ports\u003dTrue,"},{"line_number":89,"context_line":"                        send_floating_ips\u003dFalse, send_routers\u003dFalse,"},{"line_number":90,"context_line":"                        triggered_by_tenant\u003dport[\"network\"][\"tenant_id\"]"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2Bhag%3D","line":87,"updated":"2014-02-20 18:17:41.000000000","message":"In case 404 is generated for reasons other than inconsistency that can be fixed by a sync, will this lead to infinite loop? Also, While today all 404 may be fixed by a sync, will that always be true?","commit_id":"4868fb7df6a5ac964950b503f5e65be517f5b70a"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"6b1f606d7da71afbf3530e7d966b461def31bcae","unresolved":false,"context_lines":[{"line_number":84,"context_line":"                if e.status \u003d\u003d 404 and cfg.CONF.RESTPROXY.auto_sync_on_failure:"},{"line_number":85,"context_line":"                    LOG.error(_(\"Iconsistency with backend controller \""},{"line_number":86,"context_line":"                                \"triggering full synchronization.\"))"},{"line_number":87,"context_line":"                    eventlet.spawn("},{"line_number":88,"context_line":"                        self._send_all_data, send_ports\u003dTrue,"},{"line_number":89,"context_line":"                        send_floating_ips\u003dFalse, send_routers\u003dFalse,"},{"line_number":90,"context_line":"                        triggered_by_tenant\u003dport[\"network\"][\"tenant_id\"]"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2Bg6w%3D","line":87,"in_reply_to":"AAAAUX%2F%2Bhag%3D","updated":"2014-02-20 19:14:52.000000000","message":"The only thing that currently generates a 404 on a create is the missing network. If something else does cause a 404, but that still won\u0027t lead to an infinite loop. It will just cause a sync to happen every time the tenant tries to create a port. \n\nI will add a keyword to check for to make sure it\u0027s not because an API moved or something in the future.","commit_id":"4868fb7df6a5ac964950b503f5e65be517f5b70a"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"520c327388f1921ed668dd1626261be32f4cc7ee","unresolved":false,"context_lines":[{"line_number":76,"context_line":"                self.servers.rest_create_port(port[\"network\"][\"tenant_id\"],"},{"line_number":77,"context_line":"                                              port[\"network\"][\"id\"], port)"},{"line_number":78,"context_line":"            except servermanager.RemoteRestError as e:"},{"line_number":79,"context_line":"                # 404 should never be received on a port create unless"},{"line_number":80,"context_line":"                # there are inconsistencies between the data in neutron"},{"line_number":81,"context_line":"                # and the data in the backend."},{"line_number":82,"context_line":"                # Fail this create but spawn a sync to get it consistent."}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAU3%2F%2F6WQ%3D","line":79,"updated":"2014-02-24 05:09:31.000000000","message":"Should use excutils.save_and_reraise_exception() here.","commit_id":"7de8ac54371c46c538a6c6e5103f16ab5fb1d45b"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"cb5d8da2f0486e3f883898087f28da04453230ef","unresolved":false,"context_lines":[{"line_number":76,"context_line":"                self.servers.rest_create_port(port[\"network\"][\"tenant_id\"],"},{"line_number":77,"context_line":"                                              port[\"network\"][\"id\"], port)"},{"line_number":78,"context_line":"            except servermanager.RemoteRestError as e:"},{"line_number":79,"context_line":"                # 404 should never be received on a port create unless"},{"line_number":80,"context_line":"                # there are inconsistencies between the data in neutron"},{"line_number":81,"context_line":"                # and the data in the backend."},{"line_number":82,"context_line":"                # Fail this create but spawn a sync to get it consistent."}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAU3%2F%2F6Gg%3D","line":79,"in_reply_to":"AAAAU3%2F%2F6WQ%3D","updated":"2014-02-24 06:01:04.000000000","message":"Done","commit_id":"7de8ac54371c46c538a6c6e5103f16ab5fb1d45b"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"c91b3a1f4c58b8d7b102d7fccf1d1b4964701b3c","unresolved":false,"context_lines":[{"line_number":87,"context_line":"                # Fail this create but spawn a sync to get it consistent."},{"line_number":88,"context_line":"                with excutils.save_and_reraise_exception() as ctxt:"},{"line_number":89,"context_line":"                    if (cfg.CONF.RESTPROXY.auto_sync_on_failure and"},{"line_number":90,"context_line":"                        e.status \u003d\u003d 404 and"},{"line_number":91,"context_line":"                        servermanager.NXNETWORK in e.reason):"},{"line_number":92,"context_line":"                        LOG.error(_(\"Iconsistency with backend controller \""},{"line_number":93,"context_line":"                                    \"triggering full synchronization.\"))"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAU3%2F%2FgHk%3D","line":90,"updated":"2014-02-26 09:13:57.000000000","message":"same as before for using httplib constants","commit_id":"e58fa2385b9a21c7a4a3a35ed56431725536bc23"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"285c85207ddf01c71082154ee236f6693d96ee86","unresolved":false,"context_lines":[{"line_number":87,"context_line":"                # Fail this create but spawn a sync to get it consistent."},{"line_number":88,"context_line":"                with excutils.save_and_reraise_exception() as ctxt:"},{"line_number":89,"context_line":"                    if (cfg.CONF.RESTPROXY.auto_sync_on_failure and"},{"line_number":90,"context_line":"                        e.status \u003d\u003d 404 and"},{"line_number":91,"context_line":"                        servermanager.NXNETWORK in e.reason):"},{"line_number":92,"context_line":"                        LOG.error(_(\"Iconsistency with backend controller \""},{"line_number":93,"context_line":"                                    \"triggering full synchronization.\"))"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAU3%2F%2FagQ%3D","line":90,"in_reply_to":"AAAAU3%2F%2FgHk%3D","updated":"2014-02-26 19:24:43.000000000","message":"Done","commit_id":"e58fa2385b9a21c7a4a3a35ed56431725536bc23"}],"neutron/tests/unit/bigswitch/test_restproxy_plugin.py":[{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"520c327388f1921ed668dd1626261be32f4cc7ee","unresolved":false,"context_lines":[{"line_number":139,"context_line":"            ports \u003d self._get_ports(n[\u0027network\u0027][\u0027id\u0027])"},{"line_number":140,"context_line":"            # failure to create due to 404 should result in no ports"},{"line_number":141,"context_line":"            # and a triggered background sync"},{"line_number":142,"context_line":"            self.assertEqual(0, len(ports))"},{"line_number":143,"context_line":"            #\u0027self._send_all_data\u0027"},{"line_number":144,"context_line":"            call \u003d mock.call("},{"line_number":145,"context_line":"                mock_send_all,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAU3%2F%2F6V4%3D","line":142,"updated":"2014-02-24 05:09:31.000000000","message":"self.assertFalse(ports)","commit_id":"7de8ac54371c46c538a6c6e5103f16ab5fb1d45b"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"cb5d8da2f0486e3f883898087f28da04453230ef","unresolved":false,"context_lines":[{"line_number":139,"context_line":"            ports \u003d self._get_ports(n[\u0027network\u0027][\u0027id\u0027])"},{"line_number":140,"context_line":"            # failure to create due to 404 should result in no ports"},{"line_number":141,"context_line":"            # and a triggered background sync"},{"line_number":142,"context_line":"            self.assertEqual(0, len(ports))"},{"line_number":143,"context_line":"            #\u0027self._send_all_data\u0027"},{"line_number":144,"context_line":"            call \u003d mock.call("},{"line_number":145,"context_line":"                mock_send_all,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAU3%2F%2F6F8%3D","line":142,"in_reply_to":"AAAAU3%2F%2F6V4%3D","updated":"2014-02-24 06:01:04.000000000","message":"Done","commit_id":"7de8ac54371c46c538a6c6e5103f16ab5fb1d45b"}],"neutron/tests/unit/ml2/drivers/test_bigswitch_mech.py":[{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"c5964bc6449a8ea25d2661a64f8993d69e529947","unresolved":false,"context_lines":[{"line_number":31,"context_line":"PHYS_NET \u003d \u0027physnet1\u0027"},{"line_number":32,"context_line":"VLAN_START \u003d 1000"},{"line_number":33,"context_line":"VLAN_END \u003d 1100"},{"line_number":34,"context_line":"SERVERPOOL \u003d \u0027neutron.plugins.bigswitch.servermanager.ServerPool\u0027"},{"line_number":35,"context_line":"DRIVERMOD \u003d \u0027neutron.plugins.ml2.drivers.mech_bigswitch.driver\u0027"},{"line_number":36,"context_line":"DRIVER \u003d DRIVERMOD + \u0027.BigSwitchMechanismDriver\u0027"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2F7F4%3D","line":34,"updated":"2014-03-03 11:59:46.000000000","message":"nit: why not use SERVER_POOL for readability.\nSame for 2 next defines","commit_id":"9cdb925791b7f8fea53a9fcdb6d5e80d5ec1e956"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"73440922fdda837b76578d1e6b6a6083e444ec1a","unresolved":false,"context_lines":[{"line_number":31,"context_line":"PHYS_NET \u003d \u0027physnet1\u0027"},{"line_number":32,"context_line":"VLAN_START \u003d 1000"},{"line_number":33,"context_line":"VLAN_END \u003d 1100"},{"line_number":34,"context_line":"SERVERPOOL \u003d \u0027neutron.plugins.bigswitch.servermanager.ServerPool\u0027"},{"line_number":35,"context_line":"DRIVERMOD \u003d \u0027neutron.plugins.ml2.drivers.mech_bigswitch.driver\u0027"},{"line_number":36,"context_line":"DRIVER \u003d DRIVERMOD + \u0027.BigSwitchMechanismDriver\u0027"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2F1fg%3D","line":34,"in_reply_to":"AAAAVn%2F%2F7F4%3D","updated":"2014-03-03 21:28:11.000000000","message":"Done","commit_id":"9cdb925791b7f8fea53a9fcdb6d5e80d5ec1e956"}]}
