)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"581ca471b4b049899e9b95ad75c9cc25ab8ed48c","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2013-08-28 15:22:05 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Radware LBaaS driver implementation (WIP)"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I43f666ed6716c16b0ef95bc7ed58c4c422a7fd89"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"AAAASn%2F%2FuQ4%3D","line":8,"updated":"2013-08-30 12:57:26.000000000","message":"please specify a related blueprint","commit_id":"4295e85651271462e60c3b1339136d548e94e559"}],"etc/neutron.conf":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b4eec81fc54ed5825260022c372a94345608f3e6","unresolved":false,"context_lines":[{"line_number":364,"context_line":"# service_provider\u003dFIREWALL:name2:firewall_driver_path"},{"line_number":365,"context_line":"# --- Reference implementations ---"},{"line_number":366,"context_line":"service_provider\u003dLOADBALANCER:Haproxy:neutron.services.loadbalancer.drivers.haproxy.plugin_driver.HaproxyOnHostPluginDriver:default"},{"line_number":367,"context_line":"#service_provider \u003d LOADBALANCER:Radware:neutron.services.loadbalancer.drivers.radware.driver.LoadBalancerDriver:default"},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"[radware]"},{"line_number":370,"context_line":"#vdirect_address\u003d0.0.0.0"}],"source_content_type":"text/plain","patch_set":15,"id":"AAAATH%2F%2F%2FYI%3D","line":367,"updated":"2013-10-06 11:36:08.000000000","message":"Minor nit - it would be nice if you added that this support was specifically for the radware driver. It may not be clear to people","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"},{"author":{"_account_id":6447,"name":"Avishay Balderman","email":"avishayb@radware.com","username":"avishayb"},"change_message_id":"9651fd3054d84e5966410a0a2c1a308aa288d6e1","unresolved":false,"context_lines":[{"line_number":364,"context_line":"# service_provider\u003dFIREWALL:name2:firewall_driver_path"},{"line_number":365,"context_line":"# --- Reference implementations ---"},{"line_number":366,"context_line":"service_provider\u003dLOADBALANCER:Haproxy:neutron.services.loadbalancer.drivers.haproxy.plugin_driver.HaproxyOnHostPluginDriver:default"},{"line_number":367,"context_line":"#service_provider \u003d LOADBALANCER:Radware:neutron.services.loadbalancer.drivers.radware.driver.LoadBalancerDriver:default"},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"[radware]"},{"line_number":370,"context_line":"#vdirect_address\u003d0.0.0.0"}],"source_content_type":"text/plain","patch_set":15,"id":"AAAATH%2F%2F%2FHo%3D","line":367,"in_reply_to":"AAAATH%2F%2F%2FYI%3D","updated":"2013-10-06 23:45:02.000000000","message":"OK","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"}],"neutron/services/loadbalancer/drivers/radware/driver.py":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"7de7a02ea31a87bdd1e30135cb8b71cd4bf905b6","unresolved":false,"context_lines":[{"line_number":28,"context_line":"from oslo.config import cfg"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"from neutron import context as qcontext"},{"line_number":31,"context_line":"from neutron.db.loadbalancer.loadbalancer_db import HealthMonitor"},{"line_number":32,"context_line":"from neutron.db.loadbalancer.loadbalancer_db import Member"},{"line_number":33,"context_line":"from neutron.db.loadbalancer.loadbalancer_db import Pool"},{"line_number":34,"context_line":"from neutron.db.loadbalancer.loadbalancer_db import Vip"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAASn%2F%2F9%2FI%3D","line":31,"updated":"2013-08-27 13:06:13.000000000","message":"please use module level imports, consider:\n\nfrom neutron.db.loadbalancer import loadbalancer_db as lb_db","commit_id":"594966a4ff5c17127bc136b097512b7d89f7016d"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"7de7a02ea31a87bdd1e30135cb8b71cd4bf905b6","unresolved":false,"context_lines":[{"line_number":103,"context_line":"}"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"driver_opts \u003d ["},{"line_number":106,"context_line":"    cfg.StrOpt(\u0027vdirect_address\u0027,"},{"line_number":107,"context_line":"               default\u003d\u002710.205.123.101\u0027,  # TODO: remove this default"},{"line_number":108,"context_line":"               help\u003d_(\u0027vdirect server IP address\u0027))"},{"line_number":109,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAASn%2F%2F9%2B8%3D","line":106,"updated":"2013-08-27 13:06:13.000000000","message":"should be reflected in a config file","commit_id":"594966a4ff5c17127bc136b097512b7d89f7016d"},{"author":{"_account_id":6447,"name":"Avishay Balderman","email":"avishayb@radware.com","username":"avishayb"},"change_message_id":"545d44d4284663ca2770e4fde09c0e2948a5b53a","unresolved":false,"context_lines":[{"line_number":103,"context_line":"}"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"driver_opts \u003d ["},{"line_number":106,"context_line":"    cfg.StrOpt(\u0027vdirect_address\u0027,"},{"line_number":107,"context_line":"               default\u003d\u002710.205.123.101\u0027,  # TODO: remove this default"},{"line_number":108,"context_line":"               help\u003d_(\u0027vdirect server IP address\u0027))"},{"line_number":109,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAASn%2F%2F9rk%3D","line":106,"in_reply_to":"AAAASn%2F%2F9%2B8%3D","updated":"2013-08-28 12:24:56.000000000","message":"Question: Should I create Radware specific config file? Where should this file reside? \nIf I add my config to an exisiting file (Example: quantum.conf) - should I just create \"Radware\" section and push my data under this section?","commit_id":"594966a4ff5c17127bc136b097512b7d89f7016d"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"7de7a02ea31a87bdd1e30135cb8b71cd4bf905b6","unresolved":false,"context_lines":[{"line_number":113,"context_line":""},{"line_number":114,"context_line":"class LoadBalancerDriver(abstract_driver.LoadBalancerAbstractDriver):"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    \u0027\u0027\u0027Radware lbass driver.\u0027\u0027\u0027"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    def __init__(self, plugin):"},{"line_number":119,"context_line":"        self.plugin \u003d plugin"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAASn%2F%2F9%2Bk%3D","line":116,"updated":"2013-08-27 13:06:13.000000000","message":"please use double quotes for docstrings, here and below","commit_id":"594966a4ff5c17127bc136b097512b7d89f7016d"},{"author":{"_account_id":6447,"name":"Avishay Balderman","email":"avishayb@radware.com","username":"avishayb"},"change_message_id":"545d44d4284663ca2770e4fde09c0e2948a5b53a","unresolved":false,"context_lines":[{"line_number":113,"context_line":""},{"line_number":114,"context_line":"class LoadBalancerDriver(abstract_driver.LoadBalancerAbstractDriver):"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    \u0027\u0027\u0027Radware lbass driver.\u0027\u0027\u0027"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    def __init__(self, plugin):"},{"line_number":119,"context_line":"        self.plugin \u003d plugin"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAASn%2F%2F9rg%3D","line":116,"in_reply_to":"AAAASn%2F%2F9%2Bk%3D","updated":"2013-08-28 12:24:56.000000000","message":"Done","commit_id":"594966a4ff5c17127bc136b097512b7d89f7016d"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"7de7a02ea31a87bdd1e30135cb8b71cd4bf905b6","unresolved":false,"context_lines":[{"line_number":149,"context_line":"            _translate_vip_object_graph(extended_vip))"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    def delete_vip(self, context, vip):"},{"line_number":152,"context_line":"        \u0027\u0027\u0027Delete a Vip. First delete it from the device. If deletion ended OK"},{"line_number":153,"context_line":"           - remove config from DB as well."},{"line_number":154,"context_line":"           If the deletion failed - mark elements with error status in DB"},{"line_number":155,"context_line":"        \u0027\u0027\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAASn%2F%2F9%2BA%3D","line":152,"updated":"2013-08-27 13:06:13.000000000","message":"please follow pep257 rules, here and below","commit_id":"594966a4ff5c17127bc136b097512b7d89f7016d"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"7de7a02ea31a87bdd1e30135cb8b71cd4bf905b6","unresolved":false,"context_lines":[{"line_number":160,"context_line":"            # device"},{"line_number":161,"context_line":"            self._remove_workflow(extended_vip[\u0027pool_id\u0027])"},{"line_number":162,"context_line":"        except Exception:"},{"line_number":163,"context_line":"            LOG.error(_(\u0027Failed to remove workflow %s.\u0027)"},{"line_number":164,"context_line":"                      % extended_vip[\u0027pool_id\u0027])"},{"line_number":165,"context_line":"            _update_vip_graph_status("},{"line_number":166,"context_line":"                self.plugin, context, extended_vip, constants.ERROR)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAASn%2F%2F99s%3D","line":163,"updated":"2013-08-27 13:06:13.000000000","message":"LOG.error(_(\u0027Failed to remove workflow %s.\u0027),\n          extended_vip[\u0027pool_id\u0027])","commit_id":"594966a4ff5c17127bc136b097512b7d89f7016d"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"7de7a02ea31a87bdd1e30135cb8b71cd4bf905b6","unresolved":false,"context_lines":[{"line_number":179,"context_line":"        self._handle_pool(context, pool, delete\u003dTrue)"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"    def _handle_pool(self, context, pool, delete\u003dFalse):"},{"line_number":182,"context_line":"        vip_id \u003d self.plugin.get_pool(context, pool[\u0027id\u0027]).get(\u0027vip_id\u0027, None)"},{"line_number":183,"context_line":"        if vip_id:"},{"line_number":184,"context_line":"            vip \u003d self.plugin.get_vip(context, vip_id)"},{"line_number":185,"context_line":"            extended_vip \u003d self.plugin.populate_vip_graph(context, vip)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAASn%2F%2F98w%3D","line":182,"updated":"2013-08-27 13:06:13.000000000","message":"consider \n\nvip_id \u003d pool[\u0027vip_id\u0027]","commit_id":"594966a4ff5c17127bc136b097512b7d89f7016d"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"7de7a02ea31a87bdd1e30135cb8b71cd4bf905b6","unresolved":false,"context_lines":[{"line_number":186,"context_line":"            self._update_workflow("},{"line_number":187,"context_line":"                pool[\u0027id\u0027], L4_ACTION_NAME,"},{"line_number":188,"context_line":"                _translate_vip_object_graph(extended_vip))"},{"line_number":189,"context_line":"        # We have to delete this pool but it is not connected to a vip yet"},{"line_number":190,"context_line":"        if delete and not vip_id:"},{"line_number":191,"context_line":"            self.plugin._delete_db_pool(context, pool[\u0027id\u0027])"},{"line_number":192,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAASn%2F%2F98E%3D","line":189,"updated":"2013-08-27 13:06:13.000000000","message":"nit: but if it is not...","commit_id":"594966a4ff5c17127bc136b097512b7d89f7016d"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"7de7a02ea31a87bdd1e30135cb8b71cd4bf905b6","unresolved":false,"context_lines":[{"line_number":203,"context_line":"        \u0027\u0027\u0027Navigate the model. If a Vip is found - activate a bulk WF action."},{"line_number":204,"context_line":"        \u0027\u0027\u0027"},{"line_number":205,"context_line":"        vip_id \u003d self.plugin.get_pool("},{"line_number":206,"context_line":"            context, member[\u0027pool_id\u0027]).get(\u0027vip_id\u0027, None)"},{"line_number":207,"context_line":"        if vip_id:"},{"line_number":208,"context_line":"            vip \u003d self.plugin.get_vip(context, vip_id)"},{"line_number":209,"context_line":"            extended_vip \u003d self.plugin.populate_vip_graph(context, vip)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAASn%2F%2F97s%3D","line":206,"updated":"2013-08-27 13:06:13.000000000","message":"None is redundant, in fact can use [ ] addressing","commit_id":"594966a4ff5c17127bc136b097512b7d89f7016d"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"7de7a02ea31a87bdd1e30135cb8b71cd4bf905b6","unresolved":false,"context_lines":[{"line_number":210,"context_line":"            self._update_workflow("},{"line_number":211,"context_line":"                member[\u0027pool_id\u0027], L4_ACTION_NAME,"},{"line_number":212,"context_line":"                _translate_vip_object_graph(extended_vip))"},{"line_number":213,"context_line":"        # We have to delete this member but it is not connected to a vip yet"},{"line_number":214,"context_line":"        if delete:"},{"line_number":215,"context_line":"            self.plugin.delete_db_member(context, member[\u0027id\u0027])"},{"line_number":216,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAASn%2F%2F97I%3D","line":213,"updated":"2013-08-27 13:06:13.000000000","message":"comment seems irrelevant","commit_id":"594966a4ff5c17127bc136b097512b7d89f7016d"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"7de7a02ea31a87bdd1e30135cb8b71cd4bf905b6","unresolved":false,"context_lines":[{"line_number":212,"context_line":"                _translate_vip_object_graph(extended_vip))"},{"line_number":213,"context_line":"        # We have to delete this member but it is not connected to a vip yet"},{"line_number":214,"context_line":"        if delete:"},{"line_number":215,"context_line":"            self.plugin.delete_db_member(context, member[\u0027id\u0027])"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"    def create_health_monitor(self, context, health_monitor):"},{"line_number":218,"context_line":"        # Anything to do here? the hm is not connected to the graph yet"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAASn%2F%2F96s%3D","line":215,"updated":"2013-08-27 13:06:13.000000000","message":"_delete_db_member","commit_id":"594966a4ff5c17127bc136b097512b7d89f7016d"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"7de7a02ea31a87bdd1e30135cb8b71cd4bf905b6","unresolved":false,"context_lines":[{"line_number":220,"context_line":""},{"line_number":221,"context_line":"    def update_health_monitor(self, context, old_health_monitor,"},{"line_number":222,"context_line":"                              health_monitor,"},{"line_number":223,"context_line":"                              pool_association):"},{"line_number":224,"context_line":"        pool_id \u003d pool_association[\u0027pool_id\u0027]"},{"line_number":225,"context_line":"        vip_id \u003d self.plugin.get_pool(context, pool_id).get(\u0027vip_id\u0027, None)"},{"line_number":226,"context_line":"        # Are we sure?"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAASn%2F%2F96c%3D","line":223,"updated":"2013-08-27 13:06:13.000000000","message":"pool_id now instead of pool_association, check latest abstract driver","commit_id":"594966a4ff5c17127bc136b097512b7d89f7016d"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"7de7a02ea31a87bdd1e30135cb8b71cd4bf905b6","unresolved":false,"context_lines":[{"line_number":222,"context_line":"                              health_monitor,"},{"line_number":223,"context_line":"                              pool_association):"},{"line_number":224,"context_line":"        pool_id \u003d pool_association[\u0027pool_id\u0027]"},{"line_number":225,"context_line":"        vip_id \u003d self.plugin.get_pool(context, pool_id).get(\u0027vip_id\u0027, None)"},{"line_number":226,"context_line":"        # Are we sure?"},{"line_number":227,"context_line":"        if vip_id:"},{"line_number":228,"context_line":"            vip \u003d self.plugin.get_vip(context, vip_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAASn%2F%2F96U%3D","line":225,"updated":"2013-08-27 13:06:13.000000000","message":"same comment as above","commit_id":"594966a4ff5c17127bc136b097512b7d89f7016d"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"7de7a02ea31a87bdd1e30135cb8b71cd4bf905b6","unresolved":false,"context_lines":[{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    def create_pool_health_monitor(self, context,"},{"line_number":235,"context_line":"                                   health_monitor, pool_id):"},{"line_number":236,"context_line":"        pass"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"    def delete_pool_health_monitor(self, context, health_monitor, pool_id):"},{"line_number":239,"context_line":"        self.plugin._delete_db_pool_health_monitor("}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAASn%2F%2F96Q%3D","line":236,"updated":"2013-08-27 13:06:13.000000000","message":"TODO?","commit_id":"594966a4ff5c17127bc136b097512b7d89f7016d"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"7de7a02ea31a87bdd1e30135cb8b71cd4bf905b6","unresolved":false,"context_lines":[{"line_number":280,"context_line":"        ids \u003d params.get(\u0027__ids__\u0027, None)"},{"line_number":281,"context_line":"        if ids:"},{"line_number":282,"context_line":"            del params[\u0027__ids__\u0027]"},{"line_number":283,"context_line":"        response \u003d __(self.restClient.call(\u0027POST\u0027, resource,"},{"line_number":284,"context_line":"                                           {\u0027parameters\u0027: params},"},{"line_number":285,"context_line":"                                           TEMPLATE_HEADER))"},{"line_number":286,"context_line":"        LOG.debug(\u0027_update_workflow response: \u0027 + str(response))"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAASn%2F%2F95s%3D","line":283,"updated":"2013-08-27 13:06:13.000000000","message":"what is __?","commit_id":"594966a4ff5c17127bc136b097512b7d89f7016d"},{"author":{"_account_id":6447,"name":"Avishay Balderman","email":"avishayb@radware.com","username":"avishayb"},"change_message_id":"545d44d4284663ca2770e4fde09c0e2948a5b53a","unresolved":false,"context_lines":[{"line_number":280,"context_line":"        ids \u003d params.get(\u0027__ids__\u0027, None)"},{"line_number":281,"context_line":"        if ids:"},{"line_number":282,"context_line":"            del params[\u0027__ids__\u0027]"},{"line_number":283,"context_line":"        response \u003d __(self.restClient.call(\u0027POST\u0027, resource,"},{"line_number":284,"context_line":"                                           {\u0027parameters\u0027: params},"},{"line_number":285,"context_line":"                                           TEMPLATE_HEADER))"},{"line_number":286,"context_line":"        LOG.debug(\u0027_update_workflow response: \u0027 + str(response))"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAASn%2F%2F9qg%3D","line":283,"in_reply_to":"AAAASn%2F%2F95s%3D","updated":"2013-08-28 12:24:56.000000000","message":"It is a method that I use to wrap my REST calls. Instead of checking the return value of the HTTP call, this method takes care of it and return the request response.","commit_id":"594966a4ff5c17127bc136b097512b7d89f7016d"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"7de7a02ea31a87bdd1e30135cb8b71cd4bf905b6","unresolved":false,"context_lines":[{"line_number":285,"context_line":"                                           TEMPLATE_HEADER))"},{"line_number":286,"context_line":"        LOG.debug(\u0027_update_workflow response: \u0027 + str(response))"},{"line_number":287,"context_line":"        if action not in ACTIONS_TO_SKIP:"},{"line_number":288,"context_line":"            params \u003d ids if ids else params"},{"line_number":289,"context_line":"            oper \u003d OperationAttributes(response[\u0027uri\u0027],"},{"line_number":290,"context_line":"                                       params,"},{"line_number":291,"context_line":"                                       delete\u003ddelete)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAASn%2F%2F95g%3D","line":288,"updated":"2013-08-27 13:06:13.000000000","message":"nit: ids or params","commit_id":"594966a4ff5c17127bc136b097512b7d89f7016d"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"7de7a02ea31a87bdd1e30135cb8b71cd4bf905b6","unresolved":false,"context_lines":[{"line_number":293,"context_line":"            self.queue.put_nowait(oper)"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"    def _remove_workflow(self, wf_name):"},{"line_number":296,"context_line":"        LOG.debug(\"About to remove the workflow %s\" % wf_name)"},{"line_number":297,"context_line":"        resource \u003d \u0027/api/workflow/%s\u0027 % (wf_name)"},{"line_number":298,"context_line":"        __(self.restClient.call(\u0027DELETE\u0027, resource,"},{"line_number":299,"context_line":"                                None, None),"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAASn%2F%2F95M%3D","line":296,"updated":"2013-08-27 13:06:13.000000000","message":"i18n, here and in other logging which you are not going to remove after WIP.","commit_id":"594966a4ff5c17127bc136b097512b7d89f7016d"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"7de7a02ea31a87bdd1e30135cb8b71cd4bf905b6","unresolved":false,"context_lines":[{"line_number":587,"context_line":"                LOG.exception(msg)"},{"line_number":588,"context_line":""},{"line_number":589,"context_line":""},{"line_number":590,"context_line":"def __(response, success_codes\u003d[202]):"},{"line_number":591,"context_line":"    if response[RESP_STATUS] not in success_codes:"},{"line_number":592,"context_line":"        raise Exception(str(response[RESP_STATUS]) + \u0027:\u0027"},{"line_number":593,"context_line":"                        + response[RESP_REASON] +"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAASn%2F%2F93s%3D","line":590,"updated":"2013-08-27 13:06:13.000000000","message":"please set some meaningful name for the func","commit_id":"594966a4ff5c17127bc136b097512b7d89f7016d"},{"author":{"_account_id":6447,"name":"Avishay Balderman","email":"avishayb@radware.com","username":"avishayb"},"change_message_id":"545d44d4284663ca2770e4fde09c0e2948a5b53a","unresolved":false,"context_lines":[{"line_number":587,"context_line":"                LOG.exception(msg)"},{"line_number":588,"context_line":""},{"line_number":589,"context_line":""},{"line_number":590,"context_line":"def __(response, success_codes\u003d[202]):"},{"line_number":591,"context_line":"    if response[RESP_STATUS] not in success_codes:"},{"line_number":592,"context_line":"        raise Exception(str(response[RESP_STATUS]) + \u0027:\u0027"},{"line_number":593,"context_line":"                        + response[RESP_REASON] +"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAASn%2F%2F5A0%3D","line":590,"in_reply_to":"AAAASn%2F%2F93s%3D","updated":"2013-08-28 12:24:56.000000000","message":"Done","commit_id":"594966a4ff5c17127bc136b097512b7d89f7016d"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"7de7a02ea31a87bdd1e30135cb8b71cd4bf905b6","unresolved":false,"context_lines":[{"line_number":622,"context_line":"                             status)"},{"line_number":623,"context_line":""},{"line_number":624,"context_line":""},{"line_number":625,"context_line":"def _remove_vip_object_grpah_from_db(plugin, context, extended_vip):"},{"line_number":626,"context_line":"    \u0027\u0027\u0027Traverse the Vip graph and remove nodes from lbaas DB.\u0027\u0027\u0027"},{"line_number":627,"context_line":"    for hm in extended_vip[\u0027health_monitors\u0027]:"},{"line_number":628,"context_line":"        plugin._delete_db_pool_health_monitor(context,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAASn%2F%2F93o%3D","line":625,"updated":"2013-08-27 13:06:13.000000000","message":"typo in grpah","commit_id":"594966a4ff5c17127bc136b097512b7d89f7016d"},{"author":{"_account_id":6447,"name":"Avishay Balderman","email":"avishayb@radware.com","username":"avishayb"},"change_message_id":"545d44d4284663ca2770e4fde09c0e2948a5b53a","unresolved":false,"context_lines":[{"line_number":622,"context_line":"                             status)"},{"line_number":623,"context_line":""},{"line_number":624,"context_line":""},{"line_number":625,"context_line":"def _remove_vip_object_grpah_from_db(plugin, context, extended_vip):"},{"line_number":626,"context_line":"    \u0027\u0027\u0027Traverse the Vip graph and remove nodes from lbaas DB.\u0027\u0027\u0027"},{"line_number":627,"context_line":"    for hm in extended_vip[\u0027health_monitors\u0027]:"},{"line_number":628,"context_line":"        plugin._delete_db_pool_health_monitor(context,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAASn%2F%2F470%3D","line":625,"in_reply_to":"AAAASn%2F%2F93o%3D","updated":"2013-08-28 12:24:56.000000000","message":"Done","commit_id":"594966a4ff5c17127bc136b097512b7d89f7016d"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"7acc462347fa4e8f155e8e5ef4825002dd3dfeaf","unresolved":false,"context_lines":[{"line_number":120,"context_line":"    cfg.IntOpt(\u0027service_cache\u0027,"},{"line_number":121,"context_line":"               default\u003d20,"},{"line_number":122,"context_line":"               help\u003d_(\u0027service cache\u0027))"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"]"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"cfg.CONF.register_opts(driver_opts, \"radware\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAS3%2F%2FN%2Fw%3D","line":123,"updated":"2013-10-02 03:14:14.000000000","message":"nit: extra new line","commit_id":"f772752fd6370bb072cb20d42abbf91c69940735"},{"author":{"_account_id":6447,"name":"Avishay Balderman","email":"avishayb@radware.com","username":"avishayb"},"change_message_id":"54eba99a0b40eb5861df278beef1c122a9a5918b","unresolved":false,"context_lines":[{"line_number":120,"context_line":"    cfg.IntOpt(\u0027service_cache\u0027,"},{"line_number":121,"context_line":"               default\u003d20,"},{"line_number":122,"context_line":"               help\u003d_(\u0027service cache\u0027))"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"]"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"cfg.CONF.register_opts(driver_opts, \"radware\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAS3%2F%2FNLs%3D","line":123,"in_reply_to":"AAAAS3%2F%2FN%2Fw%3D","updated":"2013-10-02 14:43:03.000000000","message":"OK +","commit_id":"f772752fd6370bb072cb20d42abbf91c69940735"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"7acc462347fa4e8f155e8e5ef4825002dd3dfeaf","unresolved":false,"context_lines":[{"line_number":134,"context_line":"        self.plugin \u003d plugin"},{"line_number":135,"context_line":"        self._init_service_config()"},{"line_number":136,"context_line":"        vdirect_address \u003d cfg.CONF.radware.vdirect_address"},{"line_number":137,"context_line":"        self.restClient \u003d vDirectRESTClient(server\u003dvdirect_address)"},{"line_number":138,"context_line":"        self.queue \u003d Queue.Queue()"},{"line_number":139,"context_line":"        self.completionHandler \u003d OperationCompletionHander(self.queue,"},{"line_number":140,"context_line":"                                                           self.restClient,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAS3%2F%2FN%2Fk%3D","line":137,"updated":"2013-10-02 03:14:14.000000000","message":"hacking compliance needed:\n\nself.rest_client \u003d","commit_id":"f772752fd6370bb072cb20d42abbf91c69940735"},{"author":{"_account_id":6447,"name":"Avishay Balderman","email":"avishayb@radware.com","username":"avishayb"},"change_message_id":"54eba99a0b40eb5861df278beef1c122a9a5918b","unresolved":false,"context_lines":[{"line_number":134,"context_line":"        self.plugin \u003d plugin"},{"line_number":135,"context_line":"        self._init_service_config()"},{"line_number":136,"context_line":"        vdirect_address \u003d cfg.CONF.radware.vdirect_address"},{"line_number":137,"context_line":"        self.restClient \u003d vDirectRESTClient(server\u003dvdirect_address)"},{"line_number":138,"context_line":"        self.queue \u003d Queue.Queue()"},{"line_number":139,"context_line":"        self.completionHandler \u003d OperationCompletionHander(self.queue,"},{"line_number":140,"context_line":"                                                           self.restClient,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAS3%2F%2FNLo%3D","line":137,"in_reply_to":"AAAAS3%2F%2FN%2Fk%3D","updated":"2013-10-02 14:43:03.000000000","message":"OK +","commit_id":"f772752fd6370bb072cb20d42abbf91c69940735"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"7acc462347fa4e8f155e8e5ef4825002dd3dfeaf","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        vdirect_address \u003d cfg.CONF.radware.vdirect_address"},{"line_number":137,"context_line":"        self.restClient \u003d vDirectRESTClient(server\u003dvdirect_address)"},{"line_number":138,"context_line":"        self.queue \u003d Queue.Queue()"},{"line_number":139,"context_line":"        self.completionHandler \u003d OperationCompletionHander(self.queue,"},{"line_number":140,"context_line":"                                                           self.restClient,"},{"line_number":141,"context_line":"                                                           plugin)"},{"line_number":142,"context_line":"        self.completionHandler.setDaemon(True)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAS3%2F%2FN%2Fs%3D","line":139,"updated":"2013-10-02 03:14:14.000000000","message":"hacking compliance needed:\n\nself.completion_handler \u003d","commit_id":"f772752fd6370bb072cb20d42abbf91c69940735"},{"author":{"_account_id":6447,"name":"Avishay Balderman","email":"avishayb@radware.com","username":"avishayb"},"change_message_id":"54eba99a0b40eb5861df278beef1c122a9a5918b","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        vdirect_address \u003d cfg.CONF.radware.vdirect_address"},{"line_number":137,"context_line":"        self.restClient \u003d vDirectRESTClient(server\u003dvdirect_address)"},{"line_number":138,"context_line":"        self.queue \u003d Queue.Queue()"},{"line_number":139,"context_line":"        self.completionHandler \u003d OperationCompletionHander(self.queue,"},{"line_number":140,"context_line":"                                                           self.restClient,"},{"line_number":141,"context_line":"                                                           plugin)"},{"line_number":142,"context_line":"        self.completionHandler.setDaemon(True)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAS3%2F%2FNLg%3D","line":139,"in_reply_to":"AAAAS3%2F%2FN%2Fs%3D","updated":"2013-10-02 14:43:03.000000000","message":"OK +","commit_id":"f772752fd6370bb072cb20d42abbf91c69940735"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"7acc462347fa4e8f155e8e5ef4825002dd3dfeaf","unresolved":false,"context_lines":[{"line_number":185,"context_line":"            # device"},{"line_number":186,"context_line":"            self._remove_workflow(extended_vip[\u0027pool_id\u0027])"},{"line_number":187,"context_line":"        except Exception:"},{"line_number":188,"context_line":"            LOG.error(_(\u0027Failed to remove workflow %s.\u0027),"},{"line_number":189,"context_line":"                      extended_vip[\u0027pool_id\u0027])"},{"line_number":190,"context_line":"            _update_vip_graph_status("},{"line_number":191,"context_line":"                self.plugin, context, extended_vip, constants.ERROR)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAS3%2F%2FN%2Fc%3D","line":188,"updated":"2013-10-02 03:14:14.000000000","message":"LOG.exception()","commit_id":"f772752fd6370bb072cb20d42abbf91c69940735"},{"author":{"_account_id":6447,"name":"Avishay Balderman","email":"avishayb@radware.com","username":"avishayb"},"change_message_id":"54eba99a0b40eb5861df278beef1c122a9a5918b","unresolved":false,"context_lines":[{"line_number":185,"context_line":"            # device"},{"line_number":186,"context_line":"            self._remove_workflow(extended_vip[\u0027pool_id\u0027])"},{"line_number":187,"context_line":"        except Exception:"},{"line_number":188,"context_line":"            LOG.error(_(\u0027Failed to remove workflow %s.\u0027),"},{"line_number":189,"context_line":"                      extended_vip[\u0027pool_id\u0027])"},{"line_number":190,"context_line":"            _update_vip_graph_status("},{"line_number":191,"context_line":"                self.plugin, context, extended_vip, constants.ERROR)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAS3%2F%2FNLc%3D","line":188,"in_reply_to":"AAAAS3%2F%2FN%2Fc%3D","updated":"2013-10-02 14:43:03.000000000","message":"OK +","commit_id":"f772752fd6370bb072cb20d42abbf91c69940735"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"7acc462347fa4e8f155e8e5ef4825002dd3dfeaf","unresolved":false,"context_lines":[{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    def create_pool_health_monitor(self, context,"},{"line_number":260,"context_line":"                                   health_monitor, pool_id):"},{"line_number":261,"context_line":"        pass"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"    def delete_pool_health_monitor(self, context, health_monitor, pool_id):"},{"line_number":264,"context_line":"        self.plugin._delete_db_pool_health_monitor("}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAS3%2F%2FN%2FY%3D","line":261,"updated":"2013-10-02 03:14:14.000000000","message":"Does something need to be done here?","commit_id":"f772752fd6370bb072cb20d42abbf91c69940735"},{"author":{"_account_id":6447,"name":"Avishay Balderman","email":"avishayb@radware.com","username":"avishayb"},"change_message_id":"e52455ded1284bf518c9b4f7ab9bc2b8cc74e629","unresolved":false,"context_lines":[{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    def create_pool_health_monitor(self, context,"},{"line_number":260,"context_line":"                                   health_monitor, pool_id):"},{"line_number":261,"context_line":"        pass"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"    def delete_pool_health_monitor(self, context, health_monitor, pool_id):"},{"line_number":264,"context_line":"        self.plugin._delete_db_pool_health_monitor("}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAS3%2F%2FMBs%3D","line":261,"in_reply_to":"AAAAS3%2F%2FN%2FY%3D","updated":"2013-10-02 17:38:59.000000000","message":"Done","commit_id":"f772752fd6370bb072cb20d42abbf91c69940735"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"7acc462347fa4e8f155e8e5ef4825002dd3dfeaf","unresolved":false,"context_lines":[{"line_number":289,"context_line":"            self._upload_workflows_templates()"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"        resource \u003d \u0027/api/workflow/%s/action/%s\u0027 % (wf_name, action)"},{"line_number":292,"context_line":"        ids \u003d params.get(\u0027__ids__\u0027, None)"},{"line_number":293,"context_line":"        if ids:"},{"line_number":294,"context_line":"            del params[\u0027__ids__\u0027]"},{"line_number":295,"context_line":"        response \u003d _rest_wrapper(self.restClient.call(\u0027POST\u0027, resource,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAS3%2F%2FN%2FU%3D","line":292,"updated":"2013-10-02 03:14:14.000000000","message":"Replace 292-294:\n\nids \u003d params.pop(\u0027__ids__\u0027, None)","commit_id":"f772752fd6370bb072cb20d42abbf91c69940735"},{"author":{"_account_id":6447,"name":"Avishay Balderman","email":"avishayb@radware.com","username":"avishayb"},"change_message_id":"54eba99a0b40eb5861df278beef1c122a9a5918b","unresolved":false,"context_lines":[{"line_number":289,"context_line":"            self._upload_workflows_templates()"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"        resource \u003d \u0027/api/workflow/%s/action/%s\u0027 % (wf_name, action)"},{"line_number":292,"context_line":"        ids \u003d params.get(\u0027__ids__\u0027, None)"},{"line_number":293,"context_line":"        if ids:"},{"line_number":294,"context_line":"            del params[\u0027__ids__\u0027]"},{"line_number":295,"context_line":"        response \u003d _rest_wrapper(self.restClient.call(\u0027POST\u0027, resource,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAS3%2F%2FNLY%3D","line":292,"in_reply_to":"AAAAS3%2F%2FN%2FU%3D","updated":"2013-10-02 14:43:03.000000000","message":"OK +","commit_id":"f772752fd6370bb072cb20d42abbf91c69940735"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"7acc462347fa4e8f155e8e5ef4825002dd3dfeaf","unresolved":false,"context_lines":[{"line_number":421,"context_line":"        \"\"\"Upload a wf template to vDirect server.\"\"\""},{"line_number":422,"context_line":"        def _get_folders():"},{"line_number":423,"context_line":"            current_folder \u003d os.path.dirname(os.path.realpath(__file__))"},{"line_number":424,"context_line":"            folders \u003d []"},{"line_number":425,"context_line":"            folders.append(current_folder + \u0027/workflows/\u0027 + wf_template_name)"},{"line_number":426,"context_line":"            folders.append(current_folder + \u0027/workflows/common\u0027)"},{"line_number":427,"context_line":"            return folders"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAS3%2F%2FN%2FI%3D","line":424,"updated":"2013-10-02 03:14:14.000000000","message":"folders \u003d [\n    current_folder + \u0027/workflows/\u0027 + wf_template_name,\n    current_folder + \u0027/workflows/common\u0027\n]","commit_id":"f772752fd6370bb072cb20d42abbf91c69940735"},{"author":{"_account_id":6447,"name":"Avishay Balderman","email":"avishayb@radware.com","username":"avishayb"},"change_message_id":"54eba99a0b40eb5861df278beef1c122a9a5918b","unresolved":false,"context_lines":[{"line_number":421,"context_line":"        \"\"\"Upload a wf template to vDirect server.\"\"\""},{"line_number":422,"context_line":"        def _get_folders():"},{"line_number":423,"context_line":"            current_folder \u003d os.path.dirname(os.path.realpath(__file__))"},{"line_number":424,"context_line":"            folders \u003d []"},{"line_number":425,"context_line":"            folders.append(current_folder + \u0027/workflows/\u0027 + wf_template_name)"},{"line_number":426,"context_line":"            folders.append(current_folder + \u0027/workflows/common\u0027)"},{"line_number":427,"context_line":"            return folders"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAS3%2F%2FNLU%3D","line":424,"in_reply_to":"AAAAS3%2F%2FN%2FI%3D","updated":"2013-10-02 14:43:03.000000000","message":"OK +","commit_id":"f772752fd6370bb072cb20d42abbf91c69940735"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"7acc462347fa4e8f155e8e5ef4825002dd3dfeaf","unresolved":false,"context_lines":[{"line_number":441,"context_line":"            return f \u003d\u003d \u0027workflow.xml\u0027 or ext in [\u0027.vm\u0027, \u0027.groovy\u0027]"},{"line_number":442,"context_line":"        in_memory_file \u003d StringIO()"},{"line_number":443,"context_line":"        zip_file \u003d ZipFile(in_memory_file, \u0027w\u0027)"},{"line_number":444,"context_line":"        LOG.debug(_(\u0027Folders are %s\u0027), str(folders))"},{"line_number":445,"context_line":"        for folder in folders:"},{"line_number":446,"context_line":"            LOG.debug(_(\u0027Folder is %s\u0027), str(folder))"},{"line_number":447,"context_line":"            for root, dirs, files in os.walk(folder):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAS3%2F%2FN%2FA%3D","line":444,"updated":"2013-10-02 03:14:14.000000000","message":"str() is redundent with the %s formatting character.","commit_id":"f772752fd6370bb072cb20d42abbf91c69940735"},{"author":{"_account_id":6447,"name":"Avishay Balderman","email":"avishayb@radware.com","username":"avishayb"},"change_message_id":"54eba99a0b40eb5861df278beef1c122a9a5918b","unresolved":false,"context_lines":[{"line_number":441,"context_line":"            return f \u003d\u003d \u0027workflow.xml\u0027 or ext in [\u0027.vm\u0027, \u0027.groovy\u0027]"},{"line_number":442,"context_line":"        in_memory_file \u003d StringIO()"},{"line_number":443,"context_line":"        zip_file \u003d ZipFile(in_memory_file, \u0027w\u0027)"},{"line_number":444,"context_line":"        LOG.debug(_(\u0027Folders are %s\u0027), str(folders))"},{"line_number":445,"context_line":"        for folder in folders:"},{"line_number":446,"context_line":"            LOG.debug(_(\u0027Folder is %s\u0027), str(folder))"},{"line_number":447,"context_line":"            for root, dirs, files in os.walk(folder):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAS3%2F%2FNLM%3D","line":444,"in_reply_to":"AAAAS3%2F%2FN%2FA%3D","updated":"2013-10-02 14:43:03.000000000","message":"OK +","commit_id":"f772752fd6370bb072cb20d42abbf91c69940735"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"7acc462347fa4e8f155e8e5ef4825002dd3dfeaf","unresolved":false,"context_lines":[{"line_number":443,"context_line":"        zip_file \u003d ZipFile(in_memory_file, \u0027w\u0027)"},{"line_number":444,"context_line":"        LOG.debug(_(\u0027Folders are %s\u0027), str(folders))"},{"line_number":445,"context_line":"        for folder in folders:"},{"line_number":446,"context_line":"            LOG.debug(_(\u0027Folder is %s\u0027), str(folder))"},{"line_number":447,"context_line":"            for root, dirs, files in os.walk(folder):"},{"line_number":448,"context_line":"                for file in files:"},{"line_number":449,"context_line":"                    if _file_to_zip(file):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAS3%2F%2FN%2B4%3D","line":446,"updated":"2013-10-02 03:14:14.000000000","message":"same as above","commit_id":"f772752fd6370bb072cb20d42abbf91c69940735"},{"author":{"_account_id":6447,"name":"Avishay Balderman","email":"avishayb@radware.com","username":"avishayb"},"change_message_id":"54eba99a0b40eb5861df278beef1c122a9a5918b","unresolved":false,"context_lines":[{"line_number":443,"context_line":"        zip_file \u003d ZipFile(in_memory_file, \u0027w\u0027)"},{"line_number":444,"context_line":"        LOG.debug(_(\u0027Folders are %s\u0027), str(folders))"},{"line_number":445,"context_line":"        for folder in folders:"},{"line_number":446,"context_line":"            LOG.debug(_(\u0027Folder is %s\u0027), str(folder))"},{"line_number":447,"context_line":"            for root, dirs, files in os.walk(folder):"},{"line_number":448,"context_line":"                for file in files:"},{"line_number":449,"context_line":"                    if _file_to_zip(file):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAS3%2F%2FNLI%3D","line":446,"in_reply_to":"AAAAS3%2F%2FN%2B4%3D","updated":"2013-10-02 14:43:03.000000000","message":"OK +","commit_id":"f772752fd6370bb072cb20d42abbf91c69940735"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"7acc462347fa4e8f155e8e5ef4825002dd3dfeaf","unresolved":false,"context_lines":[{"line_number":714,"context_line":"        ids \u003d {}"},{"line_number":715,"context_line":"        ids[\u0027vip\u0027] \u003d extended_vip[\u0027id\u0027]"},{"line_number":716,"context_line":"        ids[\u0027pool\u0027] \u003d extended_vip[\u0027pool\u0027][\u0027id\u0027]"},{"line_number":717,"context_line":"        ids[\u0027members\u0027] \u003d []"},{"line_number":718,"context_line":"        for member in extended_vip[\u0027members\u0027]:"},{"line_number":719,"context_line":"            ids[\u0027members\u0027].append(member[\u0027id\u0027])"},{"line_number":720,"context_line":"        ids[\u0027health_monitors\u0027] \u003d []"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAS3%2F%2FN%2Bw%3D","line":717,"updated":"2013-10-02 03:14:14.000000000","message":"replace 717-719:\n\nids[\u0027members\u0027] \u003d [m[\u0027id\u0027] for m in extended_vip[\u0027members\u0027]]","commit_id":"f772752fd6370bb072cb20d42abbf91c69940735"},{"author":{"_account_id":6447,"name":"Avishay Balderman","email":"avishayb@radware.com","username":"avishayb"},"change_message_id":"54eba99a0b40eb5861df278beef1c122a9a5918b","unresolved":false,"context_lines":[{"line_number":714,"context_line":"        ids \u003d {}"},{"line_number":715,"context_line":"        ids[\u0027vip\u0027] \u003d extended_vip[\u0027id\u0027]"},{"line_number":716,"context_line":"        ids[\u0027pool\u0027] \u003d extended_vip[\u0027pool\u0027][\u0027id\u0027]"},{"line_number":717,"context_line":"        ids[\u0027members\u0027] \u003d []"},{"line_number":718,"context_line":"        for member in extended_vip[\u0027members\u0027]:"},{"line_number":719,"context_line":"            ids[\u0027members\u0027].append(member[\u0027id\u0027])"},{"line_number":720,"context_line":"        ids[\u0027health_monitors\u0027] \u003d []"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAS3%2F%2FNLA%3D","line":717,"in_reply_to":"AAAAS3%2F%2FN%2Bw%3D","updated":"2013-10-02 14:43:03.000000000","message":"OK","commit_id":"f772752fd6370bb072cb20d42abbf91c69940735"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"7acc462347fa4e8f155e8e5ef4825002dd3dfeaf","unresolved":false,"context_lines":[{"line_number":717,"context_line":"        ids[\u0027members\u0027] \u003d []"},{"line_number":718,"context_line":"        for member in extended_vip[\u0027members\u0027]:"},{"line_number":719,"context_line":"            ids[\u0027members\u0027].append(member[\u0027id\u0027])"},{"line_number":720,"context_line":"        ids[\u0027health_monitors\u0027] \u003d []"},{"line_number":721,"context_line":"        for hm in extended_vip[\u0027health_monitors\u0027]:"},{"line_number":722,"context_line":"            ids[\u0027health_monitors\u0027].append(hm[\u0027id\u0027])"},{"line_number":723,"context_line":"        return ids"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAS3%2F%2FN%2Bs%3D","line":720,"updated":"2013-10-02 03:14:14.000000000","message":"repalce 720-722:\n\nids[\u0027health_monitors\u0027] \u003d [hm[\u0027id\u0027] for hm in extended_vip[\u0027health_monitors\u0027]]","commit_id":"f772752fd6370bb072cb20d42abbf91c69940735"},{"author":{"_account_id":6447,"name":"Avishay Balderman","email":"avishayb@radware.com","username":"avishayb"},"change_message_id":"54eba99a0b40eb5861df278beef1c122a9a5918b","unresolved":false,"context_lines":[{"line_number":717,"context_line":"        ids[\u0027members\u0027] \u003d []"},{"line_number":718,"context_line":"        for member in extended_vip[\u0027members\u0027]:"},{"line_number":719,"context_line":"            ids[\u0027members\u0027].append(member[\u0027id\u0027])"},{"line_number":720,"context_line":"        ids[\u0027health_monitors\u0027] \u003d []"},{"line_number":721,"context_line":"        for hm in extended_vip[\u0027health_monitors\u0027]:"},{"line_number":722,"context_line":"            ids[\u0027health_monitors\u0027].append(hm[\u0027id\u0027])"},{"line_number":723,"context_line":"        return ids"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAS3%2F%2FNK8%3D","line":720,"in_reply_to":"AAAAS3%2F%2FN%2Bs%3D","updated":"2013-10-02 14:43:03.000000000","message":"OK +","commit_id":"f772752fd6370bb072cb20d42abbf91c69940735"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"7acc462347fa4e8f155e8e5ef4825002dd3dfeaf","unresolved":false,"context_lines":[{"line_number":754,"context_line":"def _drop_pending_delete_elements(extended_vip):"},{"line_number":755,"context_line":"    \"\"\"Traverse the Vip object graph and drop PENDEING_DELETE nodes.\"\"\""},{"line_number":756,"context_line":"    # What if the pool is pendening_delete?"},{"line_number":757,"context_line":"    extended_vip[\u0027health_monitors\u0027] \u003d [hm for hm in extended_vip["},{"line_number":758,"context_line":"        \u0027health_monitors\u0027] if hm[\u0027status\u0027] !\u003d constants.PENDING_DELETE]"},{"line_number":759,"context_line":"    extended_vip[\u0027members\u0027] \u003d [member for member in extended_vip["},{"line_number":760,"context_line":"        \u0027members\u0027] if member[\u0027status\u0027] !\u003d constants.PENDING_DELETE]"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAS3%2F%2FN%2Bg%3D","line":757,"updated":"2013-10-02 03:14:14.000000000","message":"consider reformatting to improve readability\n\nextended_vip[\u0027health_monitors\u0027] \u003d [\n    hm for hm in extended_vip[\u0027health_monitors\u0027]\n    if hm[\u0027status\u0027] !\u003d constants.PENDING_DELETE\n]","commit_id":"f772752fd6370bb072cb20d42abbf91c69940735"},{"author":{"_account_id":6447,"name":"Avishay Balderman","email":"avishayb@radware.com","username":"avishayb"},"change_message_id":"54eba99a0b40eb5861df278beef1c122a9a5918b","unresolved":false,"context_lines":[{"line_number":754,"context_line":"def _drop_pending_delete_elements(extended_vip):"},{"line_number":755,"context_line":"    \"\"\"Traverse the Vip object graph and drop PENDEING_DELETE nodes.\"\"\""},{"line_number":756,"context_line":"    # What if the pool is pendening_delete?"},{"line_number":757,"context_line":"    extended_vip[\u0027health_monitors\u0027] \u003d [hm for hm in extended_vip["},{"line_number":758,"context_line":"        \u0027health_monitors\u0027] if hm[\u0027status\u0027] !\u003d constants.PENDING_DELETE]"},{"line_number":759,"context_line":"    extended_vip[\u0027members\u0027] \u003d [member for member in extended_vip["},{"line_number":760,"context_line":"        \u0027members\u0027] if member[\u0027status\u0027] !\u003d constants.PENDING_DELETE]"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAS3%2F%2FNK4%3D","line":757,"in_reply_to":"AAAAS3%2F%2FN%2Bg%3D","updated":"2013-10-02 14:43:03.000000000","message":"OK +","commit_id":"f772752fd6370bb072cb20d42abbf91c69940735"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"7acc462347fa4e8f155e8e5ef4825002dd3dfeaf","unresolved":false,"context_lines":[{"line_number":756,"context_line":"    # What if the pool is pendening_delete?"},{"line_number":757,"context_line":"    extended_vip[\u0027health_monitors\u0027] \u003d [hm for hm in extended_vip["},{"line_number":758,"context_line":"        \u0027health_monitors\u0027] if hm[\u0027status\u0027] !\u003d constants.PENDING_DELETE]"},{"line_number":759,"context_line":"    extended_vip[\u0027members\u0027] \u003d [member for member in extended_vip["},{"line_number":760,"context_line":"        \u0027members\u0027] if member[\u0027status\u0027] !\u003d constants.PENDING_DELETE]"},{"line_number":761,"context_line":"    return extended_vip"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAS3%2F%2FN%2Bc%3D","line":759,"updated":"2013-10-02 03:14:14.000000000","message":"same comment as above","commit_id":"f772752fd6370bb072cb20d42abbf91c69940735"},{"author":{"_account_id":6447,"name":"Avishay Balderman","email":"avishayb@radware.com","username":"avishayb"},"change_message_id":"54eba99a0b40eb5861df278beef1c122a9a5918b","unresolved":false,"context_lines":[{"line_number":756,"context_line":"    # What if the pool is pendening_delete?"},{"line_number":757,"context_line":"    extended_vip[\u0027health_monitors\u0027] \u003d [hm for hm in extended_vip["},{"line_number":758,"context_line":"        \u0027health_monitors\u0027] if hm[\u0027status\u0027] !\u003d constants.PENDING_DELETE]"},{"line_number":759,"context_line":"    extended_vip[\u0027members\u0027] \u003d [member for member in extended_vip["},{"line_number":760,"context_line":"        \u0027members\u0027] if member[\u0027status\u0027] !\u003d constants.PENDING_DELETE]"},{"line_number":761,"context_line":"    return extended_vip"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAS3%2F%2FNK0%3D","line":759,"in_reply_to":"AAAAS3%2F%2FN%2Bc%3D","updated":"2013-10-02 14:43:03.000000000","message":"OK +","commit_id":"f772752fd6370bb072cb20d42abbf91c69940735"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"3116dc723f4e24cdc53b6af68daf1fb67eebbcbc","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import base64"},{"line_number":20,"context_line":"import httplib"},{"line_number":21,"context_line":"import json"},{"line_number":22,"context_line":"import os"},{"line_number":23,"context_line":"import Queue"},{"line_number":24,"context_line":"import socket"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAS3%2F%2FJK4%3D","line":21,"updated":"2013-10-03 15:45:04.000000000","message":"Need to use the library from the common libs since it will find the fastest version of json installed on the system.\n\nfrom neutron.openstack.common import jsonutils as json","commit_id":"ea4f0d5aab8cc9c6bdf39a96ea31b01e7accbec4"},{"author":{"_account_id":6447,"name":"Avishay Balderman","email":"avishayb@radware.com","username":"avishayb"},"change_message_id":"3adbd6af204754a0ba344c859cbed9280321f774","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import base64"},{"line_number":20,"context_line":"import httplib"},{"line_number":21,"context_line":"import json"},{"line_number":22,"context_line":"import os"},{"line_number":23,"context_line":"import Queue"},{"line_number":24,"context_line":"import socket"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAS3%2F%2FI%2FI%3D","line":21,"in_reply_to":"AAAAS3%2F%2FJK4%3D","updated":"2013-10-03 16:35:22.000000000","message":"OK","commit_id":"ea4f0d5aab8cc9c6bdf39a96ea31b01e7accbec4"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"3116dc723f4e24cdc53b6af68daf1fb67eebbcbc","unresolved":false,"context_lines":[{"line_number":23,"context_line":"import Queue"},{"line_number":24,"context_line":"import socket"},{"line_number":25,"context_line":"from StringIO import StringIO"},{"line_number":26,"context_line":"import threading"},{"line_number":27,"context_line":"import time"},{"line_number":28,"context_line":"from zipfile import ZipFile"},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAS3%2F%2FJKs%3D","line":26,"updated":"2013-10-03 15:45:04.000000000","message":"The neutron server uses eventlet, so mixing python threads and eventlet threads should be avoided.","commit_id":"ea4f0d5aab8cc9c6bdf39a96ea31b01e7accbec4"},{"author":{"_account_id":6447,"name":"Avishay Balderman","email":"avishayb@radware.com","username":"avishayb"},"change_message_id":"3adbd6af204754a0ba344c859cbed9280321f774","unresolved":false,"context_lines":[{"line_number":23,"context_line":"import Queue"},{"line_number":24,"context_line":"import socket"},{"line_number":25,"context_line":"from StringIO import StringIO"},{"line_number":26,"context_line":"import threading"},{"line_number":27,"context_line":"import time"},{"line_number":28,"context_line":"from zipfile import ZipFile"},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAS3%2F%2FI%2FE%3D","line":26,"in_reply_to":"AAAAS3%2F%2FJKs%3D","updated":"2013-10-03 16:35:22.000000000","message":"OK","commit_id":"ea4f0d5aab8cc9c6bdf39a96ea31b01e7accbec4"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"3116dc723f4e24cdc53b6af68daf1fb67eebbcbc","unresolved":false,"context_lines":[{"line_number":554,"context_line":"            ret \u003d (response.status, response.reason, respstr, respdata)"},{"line_number":555,"context_line":"        except (socket.timeout, socket.error) as e:"},{"line_number":556,"context_line":"            LOG.error(_(\u0027vdirectRESTClient: %(action)s failure, %(e)r\u0027),"},{"line_number":557,"context_line":"                      locals())"},{"line_number":558,"context_line":"            ret \u003d 0, None, None, None"},{"line_number":559,"context_line":"        conn.close()"},{"line_number":560,"context_line":"        return ret"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAS3%2F%2FJJQ%3D","line":557,"updated":"2013-10-03 15:45:04.000000000","message":"Passing locals() to a handler is something we\u0027re getting away from in the code base.  You should explicitly pass the arg dict.","commit_id":"ea4f0d5aab8cc9c6bdf39a96ea31b01e7accbec4"},{"author":{"_account_id":6447,"name":"Avishay Balderman","email":"avishayb@radware.com","username":"avishayb"},"change_message_id":"3adbd6af204754a0ba344c859cbed9280321f774","unresolved":false,"context_lines":[{"line_number":554,"context_line":"            ret \u003d (response.status, response.reason, respstr, respdata)"},{"line_number":555,"context_line":"        except (socket.timeout, socket.error) as e:"},{"line_number":556,"context_line":"            LOG.error(_(\u0027vdirectRESTClient: %(action)s failure, %(e)r\u0027),"},{"line_number":557,"context_line":"                      locals())"},{"line_number":558,"context_line":"            ret \u003d 0, None, None, None"},{"line_number":559,"context_line":"        conn.close()"},{"line_number":560,"context_line":"        return ret"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAS3%2F%2FI%2B4%3D","line":557,"in_reply_to":"AAAAS3%2F%2FJJQ%3D","updated":"2013-10-03 16:35:22.000000000","message":"OK","commit_id":"ea4f0d5aab8cc9c6bdf39a96ea31b01e7accbec4"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"e3f80b9e10ff8849901a9614967f934423aa3bee","unresolved":false,"context_lines":[{"line_number":17,"context_line":"# @author: Avishay Balderman, Radware"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import base64"},{"line_number":20,"context_line":"import eventlet"},{"line_number":21,"context_line":"import httplib"},{"line_number":22,"context_line":"from neutron.openstack.common import jsonutils as json"},{"line_number":23,"context_line":"import os"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAS3%2F%2FH%2F0%3D","line":20,"updated":"2013-10-03 21:20:48.000000000","message":"This needs to be in the 2nd group of imports.","commit_id":"f1737e577f7c12139545663dd20b4853939a19e1"},{"author":{"_account_id":6447,"name":"Avishay Balderman","email":"avishayb@radware.com","username":"avishayb"},"change_message_id":"152f3b4138e1aa691d5891762829b448cc88d1d4","unresolved":false,"context_lines":[{"line_number":17,"context_line":"# @author: Avishay Balderman, Radware"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import base64"},{"line_number":20,"context_line":"import eventlet"},{"line_number":21,"context_line":"import httplib"},{"line_number":22,"context_line":"from neutron.openstack.common import jsonutils as json"},{"line_number":23,"context_line":"import os"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAS3%2F%2FH7E%3D","line":20,"in_reply_to":"AAAAS3%2F%2FH%2F0%3D","updated":"2013-10-03 22:02:10.000000000","message":"Done","commit_id":"f1737e577f7c12139545663dd20b4853939a19e1"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"e3f80b9e10ff8849901a9614967f934423aa3bee","unresolved":false,"context_lines":[{"line_number":19,"context_line":"import base64"},{"line_number":20,"context_line":"import eventlet"},{"line_number":21,"context_line":"import httplib"},{"line_number":22,"context_line":"from neutron.openstack.common import jsonutils as json"},{"line_number":23,"context_line":"import os"},{"line_number":24,"context_line":"import Queue"},{"line_number":25,"context_line":"import socket"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAS3%2F%2FH%2F4%3D","line":22,"updated":"2013-10-03 21:20:48.000000000","message":"This needs to be 3rd group of imports.","commit_id":"f1737e577f7c12139545663dd20b4853939a19e1"},{"author":{"_account_id":6447,"name":"Avishay Balderman","email":"avishayb@radware.com","username":"avishayb"},"change_message_id":"152f3b4138e1aa691d5891762829b448cc88d1d4","unresolved":false,"context_lines":[{"line_number":19,"context_line":"import base64"},{"line_number":20,"context_line":"import eventlet"},{"line_number":21,"context_line":"import httplib"},{"line_number":22,"context_line":"from neutron.openstack.common import jsonutils as json"},{"line_number":23,"context_line":"import os"},{"line_number":24,"context_line":"import Queue"},{"line_number":25,"context_line":"import socket"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAS3%2F%2FH7I%3D","line":22,"in_reply_to":"AAAAS3%2F%2FH%2F4%3D","updated":"2013-10-03 22:02:10.000000000","message":"Done","commit_id":"f1737e577f7c12139545663dd20b4853939a19e1"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b4eec81fc54ed5825260022c372a94345608f3e6","unresolved":false,"context_lines":[{"line_number":88,"context_line":"                         \"ha_port\": 2}"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"SERVICE \u003d {"},{"line_number":92,"context_line":"    \"haPair\": False,"},{"line_number":93,"context_line":"    \"primary\": {"},{"line_number":94,"context_line":"        \"capacity\": {"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAATH%2F%2F%2FXw%3D","line":91,"updated":"2013-10-06 11:36:08.000000000","message":"Not clear why you need a global data structure here. Can you please clarify","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"},{"author":{"_account_id":6447,"name":"Avishay Balderman","email":"avishayb@radware.com","username":"avishayb"},"change_message_id":"9651fd3054d84e5966410a0a2c1a308aa288d6e1","unresolved":false,"context_lines":[{"line_number":88,"context_line":"                         \"ha_port\": 2}"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"SERVICE \u003d {"},{"line_number":92,"context_line":"    \"haPair\": False,"},{"line_number":93,"context_line":"    \"primary\": {"},{"line_number":94,"context_line":"        \"capacity\": {"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAATH%2F%2F%2FEY%3D","line":91,"in_reply_to":"AAAATH%2F%2F%2FXw%3D","updated":"2013-10-06 23:45:02.000000000","message":"OK. moved into the class","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b4eec81fc54ed5825260022c372a94345608f3e6","unresolved":false,"context_lines":[{"line_number":107,"context_line":"}"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"driver_opts \u003d ["},{"line_number":110,"context_line":"    cfg.StrOpt(\u0027vdirect_address\u0027,"},{"line_number":111,"context_line":"               help\u003d_(\u0027vdirect server IP address\u0027)),"},{"line_number":112,"context_line":"    cfg.BoolOpt(\u0027service_haPair\u0027,"},{"line_number":113,"context_line":"                default\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAATH%2F%2F%2FYE%3D","line":110,"updated":"2013-10-06 11:36:08.000000000","message":"Does this support v4 and v6?","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"},{"author":{"_account_id":6447,"name":"Avishay Balderman","email":"avishayb@radware.com","username":"avishayb"},"change_message_id":"9651fd3054d84e5966410a0a2c1a308aa288d6e1","unresolved":false,"context_lines":[{"line_number":107,"context_line":"}"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"driver_opts \u003d ["},{"line_number":110,"context_line":"    cfg.StrOpt(\u0027vdirect_address\u0027,"},{"line_number":111,"context_line":"               help\u003d_(\u0027vdirect server IP address\u0027)),"},{"line_number":112,"context_line":"    cfg.BoolOpt(\u0027service_haPair\u0027,"},{"line_number":113,"context_line":"                default\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAATH%2F%2F%2FEU%3D","line":110,"in_reply_to":"AAAATH%2F%2F%2FYE%3D","updated":"2013-10-06 23:45:02.000000000","message":"both are ok. no special handling for any type","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b4eec81fc54ed5825260022c372a94345608f3e6","unresolved":false,"context_lines":[{"line_number":118,"context_line":"    cfg.IntOpt(\u0027service_sslThroughput\u0027,"},{"line_number":119,"context_line":"               default\u003d100,"},{"line_number":120,"context_line":"               help\u003d_(\u0027service ssl throughtput\u0027)),"},{"line_number":121,"context_line":"    cfg.IntOpt(\u0027service_compressionThroughput\u0027,"},{"line_number":122,"context_line":"               default\u003d100,"},{"line_number":123,"context_line":"               help\u003d_(\u0027service compression throughtput\u0027)),"},{"line_number":124,"context_line":"    cfg.IntOpt(\u0027service_cache\u0027,"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAATH%2F%2F%2FX4%3D","line":121,"updated":"2013-10-06 11:36:08.000000000","message":"It would be better that this was like the fomat of the ones above - it should be service_compression_throughput\u0027 instead of service_compressionThroughput\u0027","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"},{"author":{"_account_id":6447,"name":"Avishay Balderman","email":"avishayb@radware.com","username":"avishayb"},"change_message_id":"9651fd3054d84e5966410a0a2c1a308aa288d6e1","unresolved":false,"context_lines":[{"line_number":118,"context_line":"    cfg.IntOpt(\u0027service_sslThroughput\u0027,"},{"line_number":119,"context_line":"               default\u003d100,"},{"line_number":120,"context_line":"               help\u003d_(\u0027service ssl throughtput\u0027)),"},{"line_number":121,"context_line":"    cfg.IntOpt(\u0027service_compressionThroughput\u0027,"},{"line_number":122,"context_line":"               default\u003d100,"},{"line_number":123,"context_line":"               help\u003d_(\u0027service compression throughtput\u0027)),"},{"line_number":124,"context_line":"    cfg.IntOpt(\u0027service_cache\u0027,"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAATH%2F%2F%2FEQ%3D","line":121,"in_reply_to":"AAAATH%2F%2F%2FX4%3D","updated":"2013-10-06 23:45:02.000000000","message":"OK","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b4eec81fc54ed5825260022c372a94345608f3e6","unresolved":false,"context_lines":[{"line_number":144,"context_line":"                                                            plugin)"},{"line_number":145,"context_line":"        self.completion_handler.setDaemon(True)"},{"line_number":146,"context_line":"        self.completion_handler.start()"},{"line_number":147,"context_line":"        self.workflows_were_uploaded \u003d False"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    def _init_service_config(self):"},{"line_number":150,"context_line":"        rad \u003d cfg.CONF.radware"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAATH%2F%2F%2FX0%3D","line":147,"updated":"2013-10-06 11:36:08.000000000","message":"should this flag be set prior to starting the daemon?","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"},{"author":{"_account_id":6447,"name":"Avishay Balderman","email":"avishayb@radware.com","username":"avishayb"},"change_message_id":"9651fd3054d84e5966410a0a2c1a308aa288d6e1","unresolved":false,"context_lines":[{"line_number":144,"context_line":"                                                            plugin)"},{"line_number":145,"context_line":"        self.completion_handler.setDaemon(True)"},{"line_number":146,"context_line":"        self.completion_handler.start()"},{"line_number":147,"context_line":"        self.workflows_were_uploaded \u003d False"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    def _init_service_config(self):"},{"line_number":150,"context_line":"        rad \u003d cfg.CONF.radware"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAATH%2F%2F%2FEI%3D","line":147,"in_reply_to":"AAAATH%2F%2F%2FX0%3D","updated":"2013-10-06 23:45:02.000000000","message":"OK","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b4eec81fc54ed5825260022c372a94345608f3e6","unresolved":false,"context_lines":[{"line_number":330,"context_line":"            self.queue.put_nowait(oper)"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"    def _remove_workflow(self, wf_name):"},{"line_number":333,"context_line":"        LOG.debug(_(\u0027About to remove the workflow %s\u0027) % wf_name)"},{"line_number":334,"context_line":"        resource \u003d \u0027/api/workflow/%s\u0027 % (wf_name)"},{"line_number":335,"context_line":"        _rest_wrapper(self.rest_client.call(\u0027DELETE\u0027, resource,"},{"line_number":336,"context_line":"                      None, None),"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAATH%2F%2F%2FXo%3D","line":333,"updated":"2013-10-06 11:36:08.000000000","message":"Do you need the log here. It may be confifung in the log files if there is no completion","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"},{"author":{"_account_id":6447,"name":"Avishay Balderman","email":"avishayb@radware.com","username":"avishayb"},"change_message_id":"9651fd3054d84e5966410a0a2c1a308aa288d6e1","unresolved":false,"context_lines":[{"line_number":330,"context_line":"            self.queue.put_nowait(oper)"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"    def _remove_workflow(self, wf_name):"},{"line_number":333,"context_line":"        LOG.debug(_(\u0027About to remove the workflow %s\u0027) % wf_name)"},{"line_number":334,"context_line":"        resource \u003d \u0027/api/workflow/%s\u0027 % (wf_name)"},{"line_number":335,"context_line":"        _rest_wrapper(self.rest_client.call(\u0027DELETE\u0027, resource,"},{"line_number":336,"context_line":"                      None, None),"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAATH%2F%2F%2FD8%3D","line":333,"in_reply_to":"AAAATH%2F%2F%2FXo%3D","updated":"2013-10-06 23:45:02.000000000","message":"Modified the message and remove the \"about to\"","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b4eec81fc54ed5825260022c372a94345608f3e6","unresolved":false,"context_lines":[{"line_number":391,"context_line":"                                                resource,"},{"line_number":392,"context_line":"                                                None, None), [200])"},{"line_number":393,"context_line":"        except Exception:"},{"line_number":394,"context_line":"            return None"},{"line_number":395,"context_line":"        return service_name"},{"line_number":396,"context_line":""},{"line_number":397,"context_line":"    def _workflow_exists(self, pool_id):"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAATH%2F%2F%2FXk%3D","line":394,"updated":"2013-10-06 11:36:08.000000000","message":"should you log that there was an exception\n\nyou can remove the None - by default the method returns None","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"},{"author":{"_account_id":6447,"name":"Avishay Balderman","email":"avishayb@radware.com","username":"avishayb"},"change_message_id":"9651fd3054d84e5966410a0a2c1a308aa288d6e1","unresolved":false,"context_lines":[{"line_number":391,"context_line":"                                                resource,"},{"line_number":392,"context_line":"                                                None, None), [200])"},{"line_number":393,"context_line":"        except Exception:"},{"line_number":394,"context_line":"            return None"},{"line_number":395,"context_line":"        return service_name"},{"line_number":396,"context_line":""},{"line_number":397,"context_line":"    def _workflow_exists(self, pool_id):"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAATH%2F%2F%2FD0%3D","line":394,"in_reply_to":"AAAATH%2F%2F%2FXk%3D","updated":"2013-10-06 23:45:02.000000000","message":"The exception is part of the correct method logic so no need to log the exception.\n\nchnegd the return None to jus return","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b4eec81fc54ed5825260022c372a94345608f3e6","unresolved":false,"context_lines":[{"line_number":403,"context_line":"                                                None,"},{"line_number":404,"context_line":"                                                None), [200])"},{"line_number":405,"context_line":"        except Exception:"},{"line_number":406,"context_line":"            return False"},{"line_number":407,"context_line":"        return True"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"    def _create_workflow(self, wf_name, wf_template_name,"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAATH%2F%2F%2FXg%3D","line":406,"updated":"2013-10-06 11:36:08.000000000","message":"ditto regarding the exception","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"},{"author":{"_account_id":6447,"name":"Avishay Balderman","email":"avishayb@radware.com","username":"avishayb"},"change_message_id":"9651fd3054d84e5966410a0a2c1a308aa288d6e1","unresolved":false,"context_lines":[{"line_number":403,"context_line":"                                                None,"},{"line_number":404,"context_line":"                                                None), [200])"},{"line_number":405,"context_line":"        except Exception:"},{"line_number":406,"context_line":"            return False"},{"line_number":407,"context_line":"        return True"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"    def _create_workflow(self, wf_name, wf_template_name,"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAATH%2F%2F%2FDs%3D","line":406,"in_reply_to":"AAAATH%2F%2F%2FXg%3D","updated":"2013-10-06 23:45:02.000000000","message":"The exception is part of the correct method logic so no need to log the exception.","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"d365ac51e45e156cdcdf3c363ab72d8d03bdd71e","unresolved":false,"context_lines":[{"line_number":181,"context_line":"            pool_id \u003d extended_vip[\u0027pool_id\u0027]"},{"line_number":182,"context_line":"            LOG.exception("},{"line_number":183,"context_line":"                _(\u0027Failed to remove workflow %(pool_id)s. Exception %(e)s\u0027)"},{"line_number":184,"context_line":"                % dict(pool_id\u003dpool_id, e\u003de)"},{"line_number":185,"context_line":"            )"},{"line_number":186,"context_line":"            _update_vip_graph_status("},{"line_number":187,"context_line":"                self.plugin, context, extended_vip, constants.ERROR)"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAATH%2F%2F%2Bd8%3D","line":184,"updated":"2013-10-07 06:49:42.000000000","message":"minor nit - please use {} instead of dict","commit_id":"e7d793c215f665e29b2e35140ca05490d788491d"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"d365ac51e45e156cdcdf3c363ab72d8d03bdd71e","unresolved":false,"context_lines":[{"line_number":690,"context_line":"def _rest_wrapper(response, success_codes\u003d[202]):"},{"line_number":691,"context_line":"    \"\"\"Wrap a REST call and make sure a valid status is returned.\"\"\""},{"line_number":692,"context_line":"    if response[RESP_STATUS] not in success_codes:"},{"line_number":693,"context_line":"        raise StandardError(str(response[RESP_STATUS]) + \u0027:\u0027 +"},{"line_number":694,"context_line":"                            response[RESP_REASON] +"},{"line_number":695,"context_line":"                            \u0027. Error description: \u0027 + response[RESP_STR])"},{"line_number":696,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAATH%2F%2F%2Bd0%3D","line":693,"updated":"2013-10-07 06:49:42.000000000","message":"please use one of the neutron exceptions","commit_id":"e7d793c215f665e29b2e35140ca05490d788491d"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"d365ac51e45e156cdcdf3c363ab72d8d03bdd71e","unresolved":false,"context_lines":[{"line_number":749,"context_line":"    elif oper.lbaas_entity \u003d\u003d Pool:"},{"line_number":750,"context_line":"        plugin._delete_db_pool(context, oper.entity_id)"},{"line_number":751,"context_line":"    else:"},{"line_number":752,"context_line":"        raise StandardError("},{"line_number":753,"context_line":"            _(\u0027Tried to remove unsupported lbaas entity %s!\u0027),"},{"line_number":754,"context_line":"            str(oper.lbaas_entity)"},{"line_number":755,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAATH%2F%2F%2Bdw%3D","line":752,"updated":"2013-10-07 06:49:42.000000000","message":"ditto","commit_id":"e7d793c215f665e29b2e35140ca05490d788491d"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"eea0ad4d9e558b30536864c307faa47b758c9979","unresolved":false,"context_lines":[{"line_number":17,"context_line":"# @author: Avishay Balderman, Radware"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import base64"},{"line_number":20,"context_line":"import eventlet"},{"line_number":21,"context_line":"import httplib"},{"line_number":22,"context_line":"import os"},{"line_number":23,"context_line":"import Queue"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATH%2F%2F9%2F8%3D","line":20,"updated":"2013-10-07 11:29:57.000000000","message":"eventlet is third party library. Please move it to L.30.","commit_id":"756d672a7689dc9eea4a3934e7a8284b5f8b60b7"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"03ce8875ea0c7c71bee72ce246e1f0e018d2ee69","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"from oslo.config import cfg"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"from neutron.common.exceptions import NeutronException"},{"line_number":33,"context_line":"from neutron import context as qcontext"},{"line_number":34,"context_line":"from neutron.db.loadbalancer.loadbalancer_db import Member"},{"line_number":35,"context_line":"from neutron.db.loadbalancer.loadbalancer_db import Pool"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATH%2F%2F%2BDI%3D","line":32,"updated":"2013-10-07 10:07:05.000000000","message":"from neutron.common import exceptions as q_exc","commit_id":"756d672a7689dc9eea4a3934e7a8284b5f8b60b7"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"eea0ad4d9e558b30536864c307faa47b758c9979","unresolved":false,"context_lines":[{"line_number":34,"context_line":"from neutron.db.loadbalancer.loadbalancer_db import Member"},{"line_number":35,"context_line":"from neutron.db.loadbalancer.loadbalancer_db import Pool"},{"line_number":36,"context_line":"from neutron.db.loadbalancer.loadbalancer_db import PoolMonitorAssociation"},{"line_number":37,"context_line":"from neutron.db.loadbalancer.loadbalancer_db import Vip"},{"line_number":38,"context_line":"from neutron.extensions import loadbalancer"},{"line_number":39,"context_line":"from neutron.openstack.common import jsonutils as json"},{"line_number":40,"context_line":"from neutron.openstack.common import log as logging"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATH%2F%2F9%2F4%3D","line":37,"updated":"2013-10-07 11:29:57.000000000","message":"module level import is recommended. For example,\n\n  from neutron.db.loadbalancer import loadbalancer_db as lb_db","commit_id":"756d672a7689dc9eea4a3934e7a8284b5f8b60b7"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"eea0ad4d9e558b30536864c307faa47b758c9979","unresolved":false,"context_lines":[{"line_number":41,"context_line":"from neutron.plugins.common import constants"},{"line_number":42,"context_line":"from neutron.services.loadbalancer.drivers import ("},{"line_number":43,"context_line":"    abstract_driver"},{"line_number":44,"context_line":")"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"eventlet.monkey_patch(thread\u003dTrue)"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATH%2F%2F9%2Fs%3D","line":44,"updated":"2013-10-07 11:29:57.000000000","message":"L.42-44 seems to fit into one line.","commit_id":"756d672a7689dc9eea4a3934e7a8284b5f8b60b7"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"eea0ad4d9e558b30536864c307faa47b758c9979","unresolved":false,"context_lines":[{"line_number":60,"context_line":"L4_ACTION_NAME \u003d \u0027BaseCreate\u0027"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"TEMPLATE_HEADER \u003d {\u0027Content-Type\u0027:"},{"line_number":63,"context_line":"                   \u0027application/vnd.com.radware.vdirect.\u0027 +"},{"line_number":64,"context_line":"                   \u0027template-parameters+json\u0027}"},{"line_number":65,"context_line":"PROVISION_HEADER \u003d {\u0027Content-Type\u0027:"},{"line_number":66,"context_line":"                    \u0027application/vnd.com.radware.\u0027 +"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATH%2F%2F94U%3D","line":63,"updated":"2013-10-07 11:29:57.000000000","message":"We don\u0027t need \u0027+\u0027 here. two strings without an operator between them are concatenated.","commit_id":"756d672a7689dc9eea4a3934e7a8284b5f8b60b7"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"eea0ad4d9e558b30536864c307faa47b758c9979","unresolved":false,"context_lines":[{"line_number":77,"context_line":"                         \"data_ip_address\": \"192.168.200.99\","},{"line_number":78,"context_line":"                         \"data_ip_mask\": \"255.255.255.0\","},{"line_number":79,"context_line":"                         \"gateway\": \"192.168.200.1\","},{"line_number":80,"context_line":"                         \"ha_port\": 2}"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"driver_opts \u003d ["},{"line_number":83,"context_line":"    cfg.StrOpt(\u0027vdirect_address\u0027,"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATH%2F%2F9%2BY%3D","line":80,"updated":"2013-10-07 11:29:57.000000000","message":"Are these IP addresses static parameters? Or does a user need to customize them? If latter, it is better to consider making them configurable.","commit_id":"756d672a7689dc9eea4a3934e7a8284b5f8b60b7"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"eea0ad4d9e558b30536864c307faa47b758c9979","unresolved":false,"context_lines":[{"line_number":144,"context_line":"        capacity[\"throughput\"] \u003d rad.service_throughput"},{"line_number":145,"context_line":"        capacity[\"sslThroughput\"] \u003d rad.service_ssl_throughput"},{"line_number":146,"context_line":"        capacity[\"compressionThroughput\"] \u003d rad.service_compression_throughput"},{"line_number":147,"context_line":"        capacity[\"cache\"] \u003d rad.service_cache"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    def create_vip(self, context, vip):"},{"line_number":150,"context_line":"        LOG.debug(_(\u0027create_vip. vip: %s\u0027), str(vip))"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATH%2F%2F99w%3D","line":147,"updated":"2013-10-07 11:29:57.000000000","message":"I don\u0027t think it is a good idea to change a class variable in an object constructor and many fields are updated by the config parametes. How about the following:\n\n self.service \u003d {\n    \"haPair\": rad.service_ha_pair,\n    \"primary\": {\n        \"capacity\": {\n            \"throughput\": rad.service_throughput,\n            \"sslThroughput\": rad.service_ssl_throughput,\n            \"compressionThroughput\": rad.service_compression_throughput,\n            \"cache\": rad.service_cache\n        },\n        \"network\": {\n            \"type\": \"portgroup\",\n            \"portgroups\": [\u0027DATA_NETWORK\u0027]\n        },\n        \"adcType\": \"VA\",\n        \"acceptableAdc\": \"Exact\"\n    }\n }","commit_id":"756d672a7689dc9eea4a3934e7a8284b5f8b60b7"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"eea0ad4d9e558b30536864c307faa47b758c9979","unresolved":false,"context_lines":[{"line_number":171,"context_line":"        \"\"\"Delete a Vip. First delete it from the device. If deletion ended OK"},{"line_number":172,"context_line":"           - remove data from DB as well."},{"line_number":173,"context_line":"           If the deletion failed - mark elements with error status in DB"},{"line_number":174,"context_line":"        \"\"\""},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"        extended_vip \u003d self.plugin.populate_vip_graph(context, vip)"},{"line_number":177,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATH%2F%2F93M%3D","line":174,"updated":"2013-10-07 11:29:57.000000000","message":"According to the docstring convention, if a docstring consists of multiple lines, it should consists of the first summary line, a blank line and more description after the third line.\n\nIt applies to all methods in this file.","commit_id":"756d672a7689dc9eea4a3934e7a8284b5f8b60b7"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"eea0ad4d9e558b30536864c307faa47b758c9979","unresolved":false,"context_lines":[{"line_number":183,"context_line":"            LOG.exception("},{"line_number":184,"context_line":"                _(\u0027Failed to remove workflow %(pool_id)s. Exception %(e)s\u0027),"},{"line_number":185,"context_line":"                {\u0027pool_id\u0027: pool_id, \u0027e\u0027: e}"},{"line_number":186,"context_line":"            )"},{"line_number":187,"context_line":"            _update_vip_graph_status("},{"line_number":188,"context_line":"                self.plugin, context, extended_vip, constants.ERROR)"},{"line_number":189,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATH%2F%2F99E%3D","line":186,"updated":"2013-10-07 11:29:57.000000000","message":"LOG.exception prints a traceback with a message and information about the exception is included, so we don\u0027t need \"e\" here.","commit_id":"756d672a7689dc9eea4a3934e7a8284b5f8b60b7"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"eea0ad4d9e558b30536864c307faa47b758c9979","unresolved":false,"context_lines":[{"line_number":186,"context_line":"            )"},{"line_number":187,"context_line":"            _update_vip_graph_status("},{"line_number":188,"context_line":"                self.plugin, context, extended_vip, constants.ERROR)"},{"line_number":189,"context_line":"            return"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"    def create_pool(self, context, pool):"},{"line_number":192,"context_line":"        # nothing to do"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATH%2F%2F988%3D","line":189,"updated":"2013-10-07 11:29:57.000000000","message":"This return is unnecessary. This is the last statement in this method. In addition, \"try\" and \"except\" clause both returns None.","commit_id":"756d672a7689dc9eea4a3934e7a8284b5f8b60b7"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"eea0ad4d9e558b30536864c307faa47b758c9979","unresolved":false,"context_lines":[{"line_number":230,"context_line":"        \"\"\"Navigate the model. If a Vip is found - activate a bulk WF action."},{"line_number":231,"context_line":"        \"\"\""},{"line_number":232,"context_line":"        vip_id \u003d self.plugin.get_pool("},{"line_number":233,"context_line":"            context, member[\u0027pool_id\u0027]).get(\u0027vip_id\u0027, None)"},{"line_number":234,"context_line":"        if vip_id:"},{"line_number":235,"context_line":"            vip \u003d self.plugin.get_vip(context, vip_id)"},{"line_number":236,"context_line":"            extended_vip \u003d self.plugin.populate_vip_graph(context, vip)"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATH%2F%2F98w%3D","line":233,"updated":"2013-10-07 11:29:57.000000000","message":"None is the default value, so \"get(\u0027vip_id\u0027)\" works.","commit_id":"756d672a7689dc9eea4a3934e7a8284b5f8b60b7"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"eea0ad4d9e558b30536864c307faa47b758c9979","unresolved":false,"context_lines":[{"line_number":298,"context_line":"        return subnet[\u0027network_id\u0027]"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"    def _update_workflow(self, wf_name, action, wf_params, delete\u003dFalse,"},{"line_number":301,"context_line":"                         lbaas_entity\u003dNone, entity_id\u003dNone):"},{"line_number":302,"context_line":"        \"\"\"Update the WF state. Push the result to a queue for processing.\"\"\""},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"        debug_params \u003d {\"wf_name\": wf_name, \"action\": action,"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATH%2F%2F974%3D","line":301,"updated":"2013-10-07 11:29:57.000000000","message":"L.304-310 just logs method parameters. There is a convenient decorator to do this.\n\n   from neutron.common import log as call_log\n   ..\n   @call_log.log\n   def _update_workflow(self, wf_name, ....):\n\nIf you use the above decorator, L.304-310 becomes unnecessary. It applies to all similar logging. It brings us more easy-to-read code.","commit_id":"756d672a7689dc9eea4a3934e7a8284b5f8b60b7"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"eea0ad4d9e558b30536864c307faa47b758c9979","unresolved":false,"context_lines":[{"line_number":321,"context_line":"        response \u003d _rest_wrapper(self.rest_client.call(\u0027POST\u0027, resource,"},{"line_number":322,"context_line":"                                 {\u0027parameters\u0027: params},"},{"line_number":323,"context_line":"                                 TEMPLATE_HEADER))"},{"line_number":324,"context_line":"        LOG.debug(_(\u0027_update_workflow response: %s \u0027), str(response))"},{"line_number":325,"context_line":""},{"line_number":326,"context_line":"        if action not in ACTIONS_TO_SKIP:"},{"line_number":327,"context_line":"            ids \u003d params.pop(\u0027__ids__\u0027, None)"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATH%2F%2F97o%3D","line":324,"updated":"2013-10-07 11:29:57.000000000","message":"Do we need str(xxx)?","commit_id":"756d672a7689dc9eea4a3934e7a8284b5f8b60b7"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"eea0ad4d9e558b30536864c307faa47b758c9979","unresolved":false,"context_lines":[{"line_number":325,"context_line":""},{"line_number":326,"context_line":"        if action not in ACTIONS_TO_SKIP:"},{"line_number":327,"context_line":"            ids \u003d params.pop(\u0027__ids__\u0027, None)"},{"line_number":328,"context_line":"            if not ids:"},{"line_number":329,"context_line":"                raise StandardError(_(\u0027params must contain __ids__ field!\u0027))"},{"line_number":330,"context_line":"            oper \u003d OperationAttributes(response[\u0027uri\u0027],"},{"line_number":331,"context_line":"                                       ids,"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATH%2F%2F95s%3D","line":328,"updated":"2013-10-07 11:29:57.000000000","message":"(just a question)\nThis checks if params has __ids__. rest_client.call() seems not to update \"params\". I wonder if it should be checked before REST call or here?","commit_id":"756d672a7689dc9eea4a3934e7a8284b5f8b60b7"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"eea0ad4d9e558b30536864c307faa47b758c9979","unresolved":false,"context_lines":[{"line_number":326,"context_line":"        if action not in ACTIONS_TO_SKIP:"},{"line_number":327,"context_line":"            ids \u003d params.pop(\u0027__ids__\u0027, None)"},{"line_number":328,"context_line":"            if not ids:"},{"line_number":329,"context_line":"                raise StandardError(_(\u0027params must contain __ids__ field!\u0027))"},{"line_number":330,"context_line":"            oper \u003d OperationAttributes(response[\u0027uri\u0027],"},{"line_number":331,"context_line":"                                       ids,"},{"line_number":332,"context_line":"                                       lbaas_entity,"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATH%2F%2F954%3D","line":329,"updated":"2013-10-07 11:29:57.000000000","message":"StandardError looks too generic and this may lead to 500 error.\nI am not sure internal server error is appropriate exception here, but in any case I would suggest to define your own exception or use one of the exceptions in common/exceptions.","commit_id":"756d672a7689dc9eea4a3934e7a8284b5f8b60b7"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"eea0ad4d9e558b30536864c307faa47b758c9979","unresolved":false,"context_lines":[{"line_number":339,"context_line":"        params \u003d _translate_vip_object_graph(wf_params)"},{"line_number":340,"context_line":"        ids \u003d params.pop(\u0027__ids__\u0027, None)"},{"line_number":341,"context_line":"        if not ids:"},{"line_number":342,"context_line":"            raise StandardError(_(\u0027params must contain __ids__ field!\u0027))"},{"line_number":343,"context_line":"        wf_name \u003d ids[\u0027pool\u0027]"},{"line_number":344,"context_line":"        LOG.debug(_(\u0027Remove the workflow %s\u0027) % wf_name)"},{"line_number":345,"context_line":"        resource \u003d \u0027/api/workflow/%s\u0027 % (wf_name)"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATH%2F%2F95g%3D","line":342,"updated":"2013-10-07 11:29:57.000000000","message":"Ditto","commit_id":"756d672a7689dc9eea4a3934e7a8284b5f8b60b7"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"eea0ad4d9e558b30536864c307faa47b758c9979","unresolved":false,"context_lines":[{"line_number":394,"context_line":"        service_name \u003d \u0027srv_\u0027 + network_id"},{"line_number":395,"context_line":"        resource \u003d \u0027/api/service?name\u003d%s\u0027 % service_name"},{"line_number":396,"context_line":"        service \u003d LoadBalancerDriver.SERVICE"},{"line_number":397,"context_line":"        service[\u0027primary\u0027][\u0027network\u0027][\u0027portgroups\u0027] \u003d [network_id]"},{"line_number":398,"context_line":"        response \u003d _rest_wrapper(self.rest_client.call(\u0027POST\u0027, resource,"},{"line_number":399,"context_line":"                                 service,"},{"line_number":400,"context_line":"                                 CREATE_SERVICE_HEADER), [201])"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATH%2F%2F93o%3D","line":397,"updated":"2013-10-07 11:29:57.000000000","message":"This changes a class variable or an instance variable.\nWhat happens if two _create_service are called in parallel?\nIt is not a good idea to reuse such variable.","commit_id":"756d672a7689dc9eea4a3934e7a8284b5f8b60b7"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"eea0ad4d9e558b30536864c307faa47b758c9979","unresolved":false,"context_lines":[{"line_number":618,"context_line":"        self.rest_client \u003d rest_client"},{"line_number":619,"context_line":"        self.admin_ctx \u003d qcontext.get_admin_context()"},{"line_number":620,"context_line":"        self.plugin \u003d plugin"},{"line_number":621,"context_line":"        self.stoprequest \u003d threading.Event()"},{"line_number":622,"context_line":""},{"line_number":623,"context_line":"    def _get_db_status(self, operation, success, messages\u003dNone):"},{"line_number":624,"context_line":"        \"\"\"Get the db_status based on the status of the vdirect operation.\"\"\""}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATH%2F%2F92E%3D","line":621,"updated":"2013-10-07 11:29:57.000000000","message":"It is better to avoid mixing eventlet and python threading. neutron-server works with eventlet threading.","commit_id":"756d672a7689dc9eea4a3934e7a8284b5f8b60b7"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"eea0ad4d9e558b30536864c307faa47b758c9979","unresolved":false,"context_lines":[{"line_number":674,"context_line":"                            self.plugin, self.admin_ctx, oper)"},{"line_number":675,"context_line":"                else:"},{"line_number":676,"context_line":"                    # not completed - push to the queue again"},{"line_number":677,"context_line":"                    LOG.debug(\u0027Operation %s is not completed yet..\u0027 % oper)"},{"line_number":678,"context_line":"                    # queue is empty - lets take a short rest"},{"line_number":679,"context_line":"                    if self.queue.empty():"},{"line_number":680,"context_line":"                        time.sleep(1)"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATH%2F%2F93E%3D","line":677,"updated":"2013-10-07 11:29:57.000000000","message":"I18N","commit_id":"756d672a7689dc9eea4a3934e7a8284b5f8b60b7"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"eea0ad4d9e558b30536864c307faa47b758c9979","unresolved":false,"context_lines":[{"line_number":684,"context_line":"            except Queue.Empty:"},{"line_number":685,"context_line":"                continue"},{"line_number":686,"context_line":"            except Exception:"},{"line_number":687,"context_line":"                msg \u003d \"Exception was thrown inside OperationCompletionHander\""},{"line_number":688,"context_line":"                LOG.exception(msg)"},{"line_number":689,"context_line":""},{"line_number":690,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATH%2F%2F93I%3D","line":687,"updated":"2013-10-07 11:29:57.000000000","message":"I18N","commit_id":"756d672a7689dc9eea4a3934e7a8284b5f8b60b7"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"03ce8875ea0c7c71bee72ce246e1f0e018d2ee69","unresolved":false,"context_lines":[{"line_number":691,"context_line":"def _rest_wrapper(response, success_codes\u003d[202]):"},{"line_number":692,"context_line":"    \"\"\"Wrap a REST call and make sure a valid status is returned.\"\"\""},{"line_number":693,"context_line":"    if response[RESP_STATUS] not in success_codes:"},{"line_number":694,"context_line":"        raise NeutronException(str(response[RESP_STATUS]) + \u0027:\u0027 +"},{"line_number":695,"context_line":"                               response[RESP_REASON] +"},{"line_number":696,"context_line":"                               \u0027. Error description: \u0027 + response[RESP_STR])"},{"line_number":697,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATH%2F%2F%2BDE%3D","line":694,"updated":"2013-10-07 10:07:05.000000000","message":"q_exc.NeutronException","commit_id":"756d672a7689dc9eea4a3934e7a8284b5f8b60b7"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"eea0ad4d9e558b30536864c307faa47b758c9979","unresolved":false,"context_lines":[{"line_number":691,"context_line":"def _rest_wrapper(response, success_codes\u003d[202]):"},{"line_number":692,"context_line":"    \"\"\"Wrap a REST call and make sure a valid status is returned.\"\"\""},{"line_number":693,"context_line":"    if response[RESP_STATUS] not in success_codes:"},{"line_number":694,"context_line":"        raise NeutronException(str(response[RESP_STATUS]) + \u0027:\u0027 +"},{"line_number":695,"context_line":"                               response[RESP_REASON] +"},{"line_number":696,"context_line":"                               \u0027. Error description: \u0027 + response[RESP_STR])"},{"line_number":697,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATH%2F%2F95E%3D","line":694,"in_reply_to":"AAAATH%2F%2F%2BDE%3D","updated":"2013-10-07 11:29:57.000000000","message":"NeutronException is generic. It is better to use one of specific exceptions defined in common/exceptions. They are converted in to corresponding http status code in the API layer.","commit_id":"756d672a7689dc9eea4a3934e7a8284b5f8b60b7"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"03ce8875ea0c7c71bee72ce246e1f0e018d2ee69","unresolved":false,"context_lines":[{"line_number":750,"context_line":"    elif oper.lbaas_entity \u003d\u003d Pool:"},{"line_number":751,"context_line":"        plugin._delete_db_pool(context, oper.entity_id)"},{"line_number":752,"context_line":"    else:"},{"line_number":753,"context_line":"        raise NeutronException("},{"line_number":754,"context_line":"            _(\u0027Tried to remove unsupported lbaas entity %s!\u0027),"},{"line_number":755,"context_line":"            str(oper.lbaas_entity)"},{"line_number":756,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATH%2F%2F%2BDA%3D","line":753,"updated":"2013-10-07 10:07:05.000000000","message":"ditto","commit_id":"756d672a7689dc9eea4a3934e7a8284b5f8b60b7"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"7b0e53c1f0d789946fcad289d55208a821eb9628","unresolved":false,"context_lines":[{"line_number":385,"context_line":"        resource \u003d \u0027/api/service?name\u003d%s\u0027 % service_name"},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"        service \u003d self.service"},{"line_number":388,"context_line":"        service[\u0027primary\u0027][\u0027network\u0027][\u0027portgroups\u0027] \u003d [network_id]"},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"        response \u003d _rest_wrapper(self.rest_client.call(\u0027POST\u0027, resource,"},{"line_number":391,"context_line":"                                 service,"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAATH%2F%2F85Q%3D","line":388,"updated":"2013-10-07 15:26:47.000000000","message":"It changes an instance variable (self.service).\n_creaet_service may be called in parallel because it is called in create_vip. It is better to deepcopy the variable and then modify it.\n\nIt will be fixed in teh next patch. I already talked with Avishay.","commit_id":"7366ddc4d81889e7c4710d7b4bfc524b9ce5b433"}],"neutron/services/loadbalancer/drivers/radware/workflows/common/groovy/wait_for_service.groovy":[{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"7acc462347fa4e8f155e8e5ef4825002dd3dfeaf","unresolved":false,"context_lines":[{"line_number":1,"context_line":"import com.radware.alteon.beans.adc.*;\r"},{"line_number":2,"context_line":"import com.radware.alteon.api.*;\r"},{"line_number":3,"context_line":"import com.radware.alteon.sdk.*\r"},{"line_number":4,"context_line":"import com.radware.alteon.sdk.rpm.*\r"}],"source_content_type":"text/x-groovy","patch_set":5,"id":"AAAAS3%2F%2FN%2BQ%3D","line":1,"updated":"2013-10-02 03:14:14.000000000","message":"Why is groovy required for this driver?","commit_id":"f772752fd6370bb072cb20d42abbf91c69940735"},{"author":{"_account_id":6447,"name":"Avishay Balderman","email":"avishayb@radware.com","username":"avishayb"},"change_message_id":"54eba99a0b40eb5861df278beef1c122a9a5918b","unresolved":false,"context_lines":[{"line_number":1,"context_line":"import com.radware.alteon.beans.adc.*;\r"},{"line_number":2,"context_line":"import com.radware.alteon.api.*;\r"},{"line_number":3,"context_line":"import com.radware.alteon.sdk.*\r"},{"line_number":4,"context_line":"import com.radware.alteon.sdk.rpm.*\r"}],"source_content_type":"text/x-groovy","patch_set":5,"id":"AAAAS3%2F%2FNL4%3D","line":1,"in_reply_to":"AAAAS3%2F%2FN%2BQ%3D","updated":"2013-10-02 14:43:03.000000000","message":"Please see my explanation in the review message.","commit_id":"f772752fd6370bb072cb20d42abbf91c69940735"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b4eec81fc54ed5825260022c372a94345608f3e6","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        break\r"},{"line_number":30,"context_line":"  } catch (Exception e) {\r"},{"line_number":31,"context_line":"      counter++\r"},{"line_number":32,"context_line":"      sleep(SLEEP_TIME) \r"},{"line_number":33,"context_line":"  }\r"},{"line_number":34,"context_line":"}\r"},{"line_number":35,"context_line":"\r"}],"source_content_type":"text/x-groovy","patch_set":15,"id":"AAAATH%2F%2F%2FXc%3D","line":32,"updated":"2013-10-06 11:36:08.000000000","message":"white space","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b4eec81fc54ed5825260022c372a94345608f3e6","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        s.close();\r"},{"line_number":47,"context_line":"    } catch (Exception e) {\r"},{"line_number":48,"context_line":"        throw new AdcConnectionException(\"IOException while validating the connection.  Please check the connection settings.\",e);\r"},{"line_number":49,"context_line":"    } \r"},{"line_number":50,"context_line":"}\r"},{"line_number":51,"context_line":"\r"}],"source_content_type":"text/x-groovy","patch_set":15,"id":"AAAATH%2F%2F%2FXY%3D","line":49,"updated":"2013-10-06 11:36:08.000000000","message":"ditto","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"}],"neutron/services/loadbalancer/drivers/radware/workflows/openstack_l2_l3/groovy/read_ips_data_from_service.groovy":[{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"7acc462347fa4e8f155e8e5ef4825002dd3dfeaf","unresolved":false,"context_lines":[{"line_number":1,"context_line":"import groovy.transform.ToString\r"},{"line_number":2,"context_line":"import groovy.transform.EqualsAndHashCode\r"},{"line_number":3,"context_line":"\r"},{"line_number":4,"context_line":"import com.radware.alteon.beans.adc.*;\r"}],"source_content_type":"text/x-groovy","patch_set":5,"id":"AAAAS3%2F%2FN%2BM%3D","line":1,"updated":"2013-10-02 03:14:14.000000000","message":"Same comment as before.  Why is groovy required?","commit_id":"f772752fd6370bb072cb20d42abbf91c69940735"},{"author":{"_account_id":6447,"name":"Avishay Balderman","email":"avishayb@radware.com","username":"avishayb"},"change_message_id":"54eba99a0b40eb5861df278beef1c122a9a5918b","unresolved":false,"context_lines":[{"line_number":1,"context_line":"import groovy.transform.ToString\r"},{"line_number":2,"context_line":"import groovy.transform.EqualsAndHashCode\r"},{"line_number":3,"context_line":"\r"},{"line_number":4,"context_line":"import com.radware.alteon.beans.adc.*;\r"}],"source_content_type":"text/x-groovy","patch_set":5,"id":"AAAAS3%2F%2FNMA%3D","line":1,"in_reply_to":"AAAAS3%2F%2FN%2BM%3D","updated":"2013-10-02 14:43:03.000000000","message":"Please see my explanation in the review message.","commit_id":"f772752fd6370bb072cb20d42abbf91c69940735"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b4eec81fc54ed5825260022c372a94345608f3e6","unresolved":false,"context_lines":[{"line_number":27,"context_line":"\r"},{"line_number":28,"context_line":"\r"},{"line_number":29,"context_line":"def tokenize_key(map_key) {\r"},{"line_number":30,"context_line":"    def ret_arr \u003d map_key.tokenize(\".\") \r"},{"line_number":31,"context_line":"    if (ret_arr.size \u003e 0 \u0026\u0026 ret_arr[0].startsWith(\"port\")) {\r"},{"line_number":32,"context_line":"        return ret_arr\r"},{"line_number":33,"context_line":"    }\r"}],"source_content_type":"text/x-groovy","patch_set":15,"id":"AAAATH%2F%2F%2FXU%3D","line":30,"updated":"2013-10-06 11:36:08.000000000","message":"whitespace","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b4eec81fc54ed5825260022c372a94345608f3e6","unresolved":false,"context_lines":[{"line_number":39,"context_line":"def parse(advanced_props) {\r"},{"line_number":40,"context_line":"    def ports \u003d [:]\r"},{"line_number":41,"context_line":"    advanced_props.each {\r"},{"line_number":42,"context_line":"        key, value -\u003e \r"},{"line_number":43,"context_line":"        def parsed_key \u003d tokenize_key(key)\r"},{"line_number":44,"context_line":"        if (parsed_key) {\r"},{"line_number":45,"context_line":"            def port_name \u003d parsed_key[0]\r"}],"source_content_type":"text/x-groovy","patch_set":15,"id":"AAAATH%2F%2F%2FXQ%3D","line":42,"updated":"2013-10-06 11:36:08.000000000","message":"ditto","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b4eec81fc54ed5825260022c372a94345608f3e6","unresolved":false,"context_lines":[{"line_number":147,"context_line":"gateway \u003d get_property_per_port(primary_ports, \"port1\", \"gateway\")\r"},{"line_number":148,"context_line":"\r"},{"line_number":149,"context_line":"if (service.request.ha) {\r"},{"line_number":150,"context_line":"\tsecondary_adc \u003d sdk.read(service.getSecondaryId())\r"},{"line_number":151,"context_line":"\tsecondary_config \u003d secondary_adc.adcInfo.advancedConfiguration\r"},{"line_number":152,"context_line":"\tsecondary_ports \u003d parse(secondary_config)\r"},{"line_number":153,"context_line":"\tha_ip_address_1 \u003d get_property_per_port(primary_ports, \"port2\", \"ips\")\r"}],"source_content_type":"text/x-groovy","patch_set":15,"id":"AAAATH%2F%2F%2FXM%3D","line":150,"updated":"2013-10-06 11:36:08.000000000","message":"whitespace - please use spaces instead of tabs","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b4eec81fc54ed5825260022c372a94345608f3e6","unresolved":false,"context_lines":[{"line_number":148,"context_line":"\r"},{"line_number":149,"context_line":"if (service.request.ha) {\r"},{"line_number":150,"context_line":"\tsecondary_adc \u003d sdk.read(service.getSecondaryId())\r"},{"line_number":151,"context_line":"\tsecondary_config \u003d secondary_adc.adcInfo.advancedConfiguration\r"},{"line_number":152,"context_line":"\tsecondary_ports \u003d parse(secondary_config)\r"},{"line_number":153,"context_line":"\tha_ip_address_1 \u003d get_property_per_port(primary_ports, \"port2\", \"ips\")\r"},{"line_number":154,"context_line":"\tha_ip_address_2 \u003d get_property_per_port(secondary_ports, \"port2\", \"ips\")\r"}],"source_content_type":"text/x-groovy","patch_set":15,"id":"AAAATH%2F%2F%2FXI%3D","line":151,"updated":"2013-10-06 11:36:08.000000000","message":"ditto","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b4eec81fc54ed5825260022c372a94345608f3e6","unresolved":false,"context_lines":[{"line_number":149,"context_line":"if (service.request.ha) {\r"},{"line_number":150,"context_line":"\tsecondary_adc \u003d sdk.read(service.getSecondaryId())\r"},{"line_number":151,"context_line":"\tsecondary_config \u003d secondary_adc.adcInfo.advancedConfiguration\r"},{"line_number":152,"context_line":"\tsecondary_ports \u003d parse(secondary_config)\r"},{"line_number":153,"context_line":"\tha_ip_address_1 \u003d get_property_per_port(primary_ports, \"port2\", \"ips\")\r"},{"line_number":154,"context_line":"\tha_ip_address_2 \u003d get_property_per_port(secondary_ports, \"port2\", \"ips\")\r"},{"line_number":155,"context_line":"\tha_vrrp_ip_address \u003d ha_ip_address_1\r"}],"source_content_type":"text/x-groovy","patch_set":15,"id":"AAAATH%2F%2F%2FXE%3D","line":152,"updated":"2013-10-06 11:36:08.000000000","message":"ditto","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b4eec81fc54ed5825260022c372a94345608f3e6","unresolved":false,"context_lines":[{"line_number":150,"context_line":"\tsecondary_adc \u003d sdk.read(service.getSecondaryId())\r"},{"line_number":151,"context_line":"\tsecondary_config \u003d secondary_adc.adcInfo.advancedConfiguration\r"},{"line_number":152,"context_line":"\tsecondary_ports \u003d parse(secondary_config)\r"},{"line_number":153,"context_line":"\tha_ip_address_1 \u003d get_property_per_port(primary_ports, \"port2\", \"ips\")\r"},{"line_number":154,"context_line":"\tha_ip_address_2 \u003d get_property_per_port(secondary_ports, \"port2\", \"ips\")\r"},{"line_number":155,"context_line":"\tha_vrrp_ip_address \u003d ha_ip_address_1\r"},{"line_number":156,"context_line":"\tha_ip_mask \u003d convert_numeric_ip_to_symbolic(cidr_to_mask(get_property_per_port(primary_ports, \"port2\", \"mask\")))\r"}],"source_content_type":"text/x-groovy","patch_set":15,"id":"AAAATH%2F%2F%2FW8%3D","line":153,"updated":"2013-10-06 11:36:08.000000000","message":"ditto","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b4eec81fc54ed5825260022c372a94345608f3e6","unresolved":false,"context_lines":[{"line_number":151,"context_line":"\tsecondary_config \u003d secondary_adc.adcInfo.advancedConfiguration\r"},{"line_number":152,"context_line":"\tsecondary_ports \u003d parse(secondary_config)\r"},{"line_number":153,"context_line":"\tha_ip_address_1 \u003d get_property_per_port(primary_ports, \"port2\", \"ips\")\r"},{"line_number":154,"context_line":"\tha_ip_address_2 \u003d get_property_per_port(secondary_ports, \"port2\", \"ips\")\r"},{"line_number":155,"context_line":"\tha_vrrp_ip_address \u003d ha_ip_address_1\r"},{"line_number":156,"context_line":"\tha_ip_mask \u003d convert_numeric_ip_to_symbolic(cidr_to_mask(get_property_per_port(primary_ports, \"port2\", \"mask\")))\r"},{"line_number":157,"context_line":"}\r"}],"source_content_type":"text/x-groovy","patch_set":15,"id":"AAAATH%2F%2F%2FW0%3D","line":154,"updated":"2013-10-06 11:36:08.000000000","message":"ditto","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b4eec81fc54ed5825260022c372a94345608f3e6","unresolved":false,"context_lines":[{"line_number":152,"context_line":"\tsecondary_ports \u003d parse(secondary_config)\r"},{"line_number":153,"context_line":"\tha_ip_address_1 \u003d get_property_per_port(primary_ports, \"port2\", \"ips\")\r"},{"line_number":154,"context_line":"\tha_ip_address_2 \u003d get_property_per_port(secondary_ports, \"port2\", \"ips\")\r"},{"line_number":155,"context_line":"\tha_vrrp_ip_address \u003d ha_ip_address_1\r"},{"line_number":156,"context_line":"\tha_ip_mask \u003d convert_numeric_ip_to_symbolic(cidr_to_mask(get_property_per_port(primary_ports, \"port2\", \"mask\")))\r"},{"line_number":157,"context_line":"}\r"},{"line_number":158,"context_line":"else {\r"}],"source_content_type":"text/x-groovy","patch_set":15,"id":"AAAATH%2F%2F%2FWw%3D","line":155,"updated":"2013-10-06 11:36:08.000000000","message":"ditto","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b4eec81fc54ed5825260022c372a94345608f3e6","unresolved":false,"context_lines":[{"line_number":153,"context_line":"\tha_ip_address_1 \u003d get_property_per_port(primary_ports, \"port2\", \"ips\")\r"},{"line_number":154,"context_line":"\tha_ip_address_2 \u003d get_property_per_port(secondary_ports, \"port2\", \"ips\")\r"},{"line_number":155,"context_line":"\tha_vrrp_ip_address \u003d ha_ip_address_1\r"},{"line_number":156,"context_line":"\tha_ip_mask \u003d convert_numeric_ip_to_symbolic(cidr_to_mask(get_property_per_port(primary_ports, \"port2\", \"mask\")))\r"},{"line_number":157,"context_line":"}\r"},{"line_number":158,"context_line":"else {\r"},{"line_number":159,"context_line":"\tsecondary_adc \u003d null\r"}],"source_content_type":"text/x-groovy","patch_set":15,"id":"AAAATH%2F%2F%2FWs%3D","line":156,"updated":"2013-10-06 11:36:08.000000000","message":"ditto","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b4eec81fc54ed5825260022c372a94345608f3e6","unresolved":false,"context_lines":[{"line_number":156,"context_line":"\tha_ip_mask \u003d convert_numeric_ip_to_symbolic(cidr_to_mask(get_property_per_port(primary_ports, \"port2\", \"mask\")))\r"},{"line_number":157,"context_line":"}\r"},{"line_number":158,"context_line":"else {\r"},{"line_number":159,"context_line":"\tsecondary_adc \u003d null\r"},{"line_number":160,"context_line":"\tsecondary_config \u003d null\r"},{"line_number":161,"context_line":"\tsecondary_ports \u003d null\r"},{"line_number":162,"context_line":"\tha_ip_address_1 \u003d \"1.1.1.1\"\r"}],"source_content_type":"text/x-groovy","patch_set":15,"id":"AAAATH%2F%2F%2FXA%3D","line":159,"updated":"2013-10-06 11:36:08.000000000","message":"ditto","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b4eec81fc54ed5825260022c372a94345608f3e6","unresolved":false,"context_lines":[{"line_number":157,"context_line":"}\r"},{"line_number":158,"context_line":"else {\r"},{"line_number":159,"context_line":"\tsecondary_adc \u003d null\r"},{"line_number":160,"context_line":"\tsecondary_config \u003d null\r"},{"line_number":161,"context_line":"\tsecondary_ports \u003d null\r"},{"line_number":162,"context_line":"\tha_ip_address_1 \u003d \"1.1.1.1\"\r"},{"line_number":163,"context_line":"\tha_ip_address_2 \u003d \"1.1.1.2\"\r"}],"source_content_type":"text/x-groovy","patch_set":15,"id":"AAAATH%2F%2F%2FWo%3D","line":160,"updated":"2013-10-06 11:36:08.000000000","message":"ditto","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b4eec81fc54ed5825260022c372a94345608f3e6","unresolved":false,"context_lines":[{"line_number":158,"context_line":"else {\r"},{"line_number":159,"context_line":"\tsecondary_adc \u003d null\r"},{"line_number":160,"context_line":"\tsecondary_config \u003d null\r"},{"line_number":161,"context_line":"\tsecondary_ports \u003d null\r"},{"line_number":162,"context_line":"\tha_ip_address_1 \u003d \"1.1.1.1\"\r"},{"line_number":163,"context_line":"\tha_ip_address_2 \u003d \"1.1.1.2\"\r"},{"line_number":164,"context_line":"\tha_vrrp_ip_address \u003d \"1.1.1.3\"\r"}],"source_content_type":"text/x-groovy","patch_set":15,"id":"AAAATH%2F%2F%2FWk%3D","line":161,"updated":"2013-10-06 11:36:08.000000000","message":"ditto","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b4eec81fc54ed5825260022c372a94345608f3e6","unresolved":false,"context_lines":[{"line_number":159,"context_line":"\tsecondary_adc \u003d null\r"},{"line_number":160,"context_line":"\tsecondary_config \u003d null\r"},{"line_number":161,"context_line":"\tsecondary_ports \u003d null\r"},{"line_number":162,"context_line":"\tha_ip_address_1 \u003d \"1.1.1.1\"\r"},{"line_number":163,"context_line":"\tha_ip_address_2 \u003d \"1.1.1.2\"\r"},{"line_number":164,"context_line":"\tha_vrrp_ip_address \u003d \"1.1.1.3\"\r"},{"line_number":165,"context_line":"\tha_ip_mask \u003d \"255.255.255.255\"\r"}],"source_content_type":"text/x-groovy","patch_set":15,"id":"AAAATH%2F%2F%2FWg%3D","line":162,"updated":"2013-10-06 11:36:08.000000000","message":"ditto","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b4eec81fc54ed5825260022c372a94345608f3e6","unresolved":false,"context_lines":[{"line_number":160,"context_line":"\tsecondary_config \u003d null\r"},{"line_number":161,"context_line":"\tsecondary_ports \u003d null\r"},{"line_number":162,"context_line":"\tha_ip_address_1 \u003d \"1.1.1.1\"\r"},{"line_number":163,"context_line":"\tha_ip_address_2 \u003d \"1.1.1.2\"\r"},{"line_number":164,"context_line":"\tha_vrrp_ip_address \u003d \"1.1.1.3\"\r"},{"line_number":165,"context_line":"\tha_ip_mask \u003d \"255.255.255.255\"\r"},{"line_number":166,"context_line":"\tha_group_vr_id \u003d 2\r"}],"source_content_type":"text/x-groovy","patch_set":15,"id":"AAAATH%2F%2F%2FWc%3D","line":163,"updated":"2013-10-06 11:36:08.000000000","message":"ditto","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b4eec81fc54ed5825260022c372a94345608f3e6","unresolved":false,"context_lines":[{"line_number":161,"context_line":"\tsecondary_ports \u003d null\r"},{"line_number":162,"context_line":"\tha_ip_address_1 \u003d \"1.1.1.1\"\r"},{"line_number":163,"context_line":"\tha_ip_address_2 \u003d \"1.1.1.2\"\r"},{"line_number":164,"context_line":"\tha_vrrp_ip_address \u003d \"1.1.1.3\"\r"},{"line_number":165,"context_line":"\tha_ip_mask \u003d \"255.255.255.255\"\r"},{"line_number":166,"context_line":"\tha_group_vr_id \u003d 2\r"},{"line_number":167,"context_line":"}\r"}],"source_content_type":"text/x-groovy","patch_set":15,"id":"AAAATH%2F%2F%2FWY%3D","line":164,"updated":"2013-10-06 11:36:08.000000000","message":"ditto","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b4eec81fc54ed5825260022c372a94345608f3e6","unresolved":false,"context_lines":[{"line_number":162,"context_line":"\tha_ip_address_1 \u003d \"1.1.1.1\"\r"},{"line_number":163,"context_line":"\tha_ip_address_2 \u003d \"1.1.1.2\"\r"},{"line_number":164,"context_line":"\tha_vrrp_ip_address \u003d \"1.1.1.3\"\r"},{"line_number":165,"context_line":"\tha_ip_mask \u003d \"255.255.255.255\"\r"},{"line_number":166,"context_line":"\tha_group_vr_id \u003d 2\r"},{"line_number":167,"context_line":"}\r"},{"line_number":168,"context_line":"\r"}],"source_content_type":"text/x-groovy","patch_set":15,"id":"AAAATH%2F%2F%2FWU%3D","line":165,"updated":"2013-10-06 11:36:08.000000000","message":"ditto","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b4eec81fc54ed5825260022c372a94345608f3e6","unresolved":false,"context_lines":[{"line_number":163,"context_line":"\tha_ip_address_2 \u003d \"1.1.1.2\"\r"},{"line_number":164,"context_line":"\tha_vrrp_ip_address \u003d \"1.1.1.3\"\r"},{"line_number":165,"context_line":"\tha_ip_mask \u003d \"255.255.255.255\"\r"},{"line_number":166,"context_line":"\tha_group_vr_id \u003d 2\r"},{"line_number":167,"context_line":"}\r"},{"line_number":168,"context_line":"\r"},{"line_number":169,"context_line":"\r"}],"source_content_type":"text/x-groovy","patch_set":15,"id":"AAAATH%2F%2F%2FWQ%3D","line":166,"updated":"2013-10-06 11:36:08.000000000","message":"ditto","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b4eec81fc54ed5825260022c372a94345608f3e6","unresolved":false,"context_lines":[{"line_number":164,"context_line":"\tha_vrrp_ip_address \u003d \"1.1.1.3\"\r"},{"line_number":165,"context_line":"\tha_ip_mask \u003d \"255.255.255.255\"\r"},{"line_number":166,"context_line":"\tha_group_vr_id \u003d 2\r"},{"line_number":167,"context_line":"}\r"},{"line_number":168,"context_line":"\r"},{"line_number":169,"context_line":"\r"},{"line_number":170,"context_line":"\r"}],"source_content_type":"text/x-groovy","patch_set":15,"id":"AAAATH%2F%2F%2FWM%3D","line":167,"updated":"2013-10-06 11:36:08.000000000","message":"Is this an example? Not exactly what the meaning of the IP\u0027s is here?","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"}],"neutron/services/loadbalancer/drivers/radware/workflows/openstack_l2_l3/templates/setup_l2_l3.vm":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b4eec81fc54ed5825260022c372a94345608f3e6","unresolved":false,"context_lines":[{"line_number":27,"context_line":"#set($port.Indx \u003d $data_port)\r"},{"line_number":28,"context_line":"#set($port \u003d $adc.read($port))\r"},{"line_number":29,"context_line":"#if ($adc.isNull($port))\r"},{"line_number":30,"context_line":"\t##Port was not found. not too realistic but if so raise an error\r"},{"line_number":31,"context_line":"\t#error(\"Port $data_port was not found!!\")\r"},{"line_number":32,"context_line":"#else\r"},{"line_number":33,"context_line":"\t#set($data_vlan \u003d $port.PVID)\r"}],"source_content_type":"text/velocity","patch_set":15,"id":"AAAATH%2F%2F%2FWI%3D","line":30,"updated":"2013-10-06 11:36:08.000000000","message":"white space","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b4eec81fc54ed5825260022c372a94345608f3e6","unresolved":false,"context_lines":[{"line_number":28,"context_line":"#set($port \u003d $adc.read($port))\r"},{"line_number":29,"context_line":"#if ($adc.isNull($port))\r"},{"line_number":30,"context_line":"\t##Port was not found. not too realistic but if so raise an error\r"},{"line_number":31,"context_line":"\t#error(\"Port $data_port was not found!!\")\r"},{"line_number":32,"context_line":"#else\r"},{"line_number":33,"context_line":"\t#set($data_vlan \u003d $port.PVID)\r"},{"line_number":34,"context_line":"#end\r"}],"source_content_type":"text/velocity","patch_set":15,"id":"AAAATH%2F%2F%2FWE%3D","line":31,"updated":"2013-10-06 11:36:08.000000000","message":"ditto","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b4eec81fc54ed5825260022c372a94345608f3e6","unresolved":false,"context_lines":[{"line_number":30,"context_line":"\t##Port was not found. not too realistic but if so raise an error\r"},{"line_number":31,"context_line":"\t#error(\"Port $data_port was not found!!\")\r"},{"line_number":32,"context_line":"#else\r"},{"line_number":33,"context_line":"\t#set($data_vlan \u003d $port.PVID)\r"},{"line_number":34,"context_line":"#end\r"},{"line_number":35,"context_line":"\r"},{"line_number":36,"context_line":"#set($port \u003d $adc.newBean(\u0027AgPortNewCfgTableEntry\u0027))\r"}],"source_content_type":"text/velocity","patch_set":15,"id":"AAAATH%2F%2F%2FWA%3D","line":33,"updated":"2013-10-06 11:36:08.000000000","message":"ditto","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b4eec81fc54ed5825260022c372a94345608f3e6","unresolved":false,"context_lines":[{"line_number":37,"context_line":"#set($port.Indx \u003d $ha_port)\r"},{"line_number":38,"context_line":"#set($port \u003d $adc.read($port))\r"},{"line_number":39,"context_line":"#if ($adc.isNull($port))\r"},{"line_number":40,"context_line":"\t##Port was not found. not too realistic but if so raise an error\r"},{"line_number":41,"context_line":"\t#error(\"Port $ha_port was not found!!\")\r"},{"line_number":42,"context_line":"#else\r"},{"line_number":43,"context_line":"\t#set($ha_vlan \u003d $port.PVID)\r"}],"source_content_type":"text/velocity","patch_set":15,"id":"AAAATH%2F%2F%2FV8%3D","line":40,"updated":"2013-10-06 11:36:08.000000000","message":"ditto","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b4eec81fc54ed5825260022c372a94345608f3e6","unresolved":false,"context_lines":[{"line_number":38,"context_line":"#set($port \u003d $adc.read($port))\r"},{"line_number":39,"context_line":"#if ($adc.isNull($port))\r"},{"line_number":40,"context_line":"\t##Port was not found. not too realistic but if so raise an error\r"},{"line_number":41,"context_line":"\t#error(\"Port $ha_port was not found!!\")\r"},{"line_number":42,"context_line":"#else\r"},{"line_number":43,"context_line":"\t#set($ha_vlan \u003d $port.PVID)\r"},{"line_number":44,"context_line":"#end\r"}],"source_content_type":"text/velocity","patch_set":15,"id":"AAAATH%2F%2F%2FV4%3D","line":41,"updated":"2013-10-06 11:36:08.000000000","message":"ditto","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b4eec81fc54ed5825260022c372a94345608f3e6","unresolved":false,"context_lines":[{"line_number":40,"context_line":"\t##Port was not found. not too realistic but if so raise an error\r"},{"line_number":41,"context_line":"\t#error(\"Port $ha_port was not found!!\")\r"},{"line_number":42,"context_line":"#else\r"},{"line_number":43,"context_line":"\t#set($ha_vlan \u003d $port.PVID)\r"},{"line_number":44,"context_line":"#end\r"},{"line_number":45,"context_line":"\r"},{"line_number":46,"context_line":"#set($Integer \u003d 0)\r"}],"source_content_type":"text/velocity","patch_set":15,"id":"AAAATH%2F%2F%2FV0%3D","line":43,"updated":"2013-10-06 11:36:08.000000000","message":"ditto","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b4eec81fc54ed5825260022c372a94345608f3e6","unresolved":false,"context_lines":[{"line_number":44,"context_line":"#end\r"},{"line_number":45,"context_line":"\r"},{"line_number":46,"context_line":"#set($Integer \u003d 0)\r"},{"line_number":47,"context_line":"\t\r"},{"line_number":48,"context_line":"#set($data_interface_string \u003d \"#get_interface_id($data_ip_address, 1)\")\r"},{"line_number":49,"context_line":"#set($data_interface_id \u003d $Integer.parseInt($data_interface_string.trim()))\r"},{"line_number":50,"context_line":"#create_interface($data_ip_address, $data_ip_mask, $data_vlan, $data_interface_id)\r"}],"source_content_type":"text/velocity","patch_set":15,"id":"AAAATH%2F%2F%2FVw%3D","line":47,"updated":"2013-10-06 11:36:08.000000000","message":"ditto","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b4eec81fc54ed5825260022c372a94345608f3e6","unresolved":false,"context_lines":[{"line_number":53,"context_line":"#set($gwb.addr \u003d $gateway)\r"},{"line_number":54,"context_line":"#set($gwb \u003d $adc.findFirst($gwb))\r"},{"line_number":55,"context_line":"#if ($adc.isNull($gwb))\r"},{"line_number":56,"context_line":"\t#set($gateway_id \u003d $adc.getFreeIndexWithDefault(\u0027/c/l3/gw\u0027, 1))\r"},{"line_number":57,"context_line":"#else\r"},{"line_number":58,"context_line":"\t#error(\"Gateway with address $gateway already exists on index $gwb.index\")\r"},{"line_number":59,"context_line":"#end\r"}],"source_content_type":"text/velocity","patch_set":15,"id":"AAAATH%2F%2F%2FVs%3D","line":56,"updated":"2013-10-06 11:36:08.000000000","message":"ditto","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b4eec81fc54ed5825260022c372a94345608f3e6","unresolved":false,"context_lines":[{"line_number":55,"context_line":"#if ($adc.isNull($gwb))\r"},{"line_number":56,"context_line":"\t#set($gateway_id \u003d $adc.getFreeIndexWithDefault(\u0027/c/l3/gw\u0027, 1))\r"},{"line_number":57,"context_line":"#else\r"},{"line_number":58,"context_line":"\t#error(\"Gateway with address $gateway already exists on index $gwb.index\")\r"},{"line_number":59,"context_line":"#end\r"},{"line_number":60,"context_line":"\r"},{"line_number":61,"context_line":"#if ($gateway_id \u003c 5)\r"}],"source_content_type":"text/velocity","patch_set":15,"id":"AAAATH%2F%2F%2FVo%3D","line":58,"updated":"2013-10-06 11:36:08.000000000","message":"ditto","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b4eec81fc54ed5825260022c372a94345608f3e6","unresolved":false,"context_lines":[{"line_number":60,"context_line":"\r"},{"line_number":61,"context_line":"#if ($gateway_id \u003c 5)\r"},{"line_number":62,"context_line":"/c/l3/gw $gateway_id\r"},{"line_number":63,"context_line":"\taddr $gateway\r"},{"line_number":64,"context_line":"    arp ena\r"},{"line_number":65,"context_line":"\tena\r"},{"line_number":66,"context_line":"#else\r"}],"source_content_type":"text/velocity","patch_set":15,"id":"AAAATH%2F%2F%2FVk%3D","line":63,"updated":"2013-10-06 11:36:08.000000000","message":"ditto","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b4eec81fc54ed5825260022c372a94345608f3e6","unresolved":false,"context_lines":[{"line_number":62,"context_line":"/c/l3/gw $gateway_id\r"},{"line_number":63,"context_line":"\taddr $gateway\r"},{"line_number":64,"context_line":"    arp ena\r"},{"line_number":65,"context_line":"\tena\r"},{"line_number":66,"context_line":"#else\r"},{"line_number":67,"context_line":"\t#log(\u0027error\u0027, \"The available gateway index $gatewayId cannot be used for a default gateway!\")\r"},{"line_number":68,"context_line":"\t#error(\"No available index for a default gateway!\")\r"}],"source_content_type":"text/velocity","patch_set":15,"id":"AAAATH%2F%2F%2FVg%3D","line":65,"updated":"2013-10-06 11:36:08.000000000","message":"ditto","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b4eec81fc54ed5825260022c372a94345608f3e6","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    arp ena\r"},{"line_number":65,"context_line":"\tena\r"},{"line_number":66,"context_line":"#else\r"},{"line_number":67,"context_line":"\t#log(\u0027error\u0027, \"The available gateway index $gatewayId cannot be used for a default gateway!\")\r"},{"line_number":68,"context_line":"\t#error(\"No available index for a default gateway!\")\r"},{"line_number":69,"context_line":"#end\r"},{"line_number":70,"context_line":"\r"}],"source_content_type":"text/velocity","patch_set":15,"id":"AAAATH%2F%2F%2FVc%3D","line":67,"updated":"2013-10-06 11:36:08.000000000","message":"ditto","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b4eec81fc54ed5825260022c372a94345608f3e6","unresolved":false,"context_lines":[{"line_number":65,"context_line":"\tena\r"},{"line_number":66,"context_line":"#else\r"},{"line_number":67,"context_line":"\t#log(\u0027error\u0027, \"The available gateway index $gatewayId cannot be used for a default gateway!\")\r"},{"line_number":68,"context_line":"\t#error(\"No available index for a default gateway!\")\r"},{"line_number":69,"context_line":"#end\r"},{"line_number":70,"context_line":"\r"},{"line_number":71,"context_line":"#if($ha_enabled)\r"}],"source_content_type":"text/velocity","patch_set":15,"id":"AAAATH%2F%2F%2FVU%3D","line":68,"updated":"2013-10-06 11:36:08.000000000","message":"ditto","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b4eec81fc54ed5825260022c372a94345608f3e6","unresolved":false,"context_lines":[{"line_number":69,"context_line":"#end\r"},{"line_number":70,"context_line":"\r"},{"line_number":71,"context_line":"#if($ha_enabled)\r"},{"line_number":72,"context_line":"\t#set($ha_interface_string \u003d \"#get_interface_id($ha_ip_address, $data_interface_id)\")\r"},{"line_number":73,"context_line":"\t#set($ha_interface_id \u003d $Integer.parseInt($ha_interface_string.trim()))\r"},{"line_number":74,"context_line":"\t#create_interface($ha_ip_address, $ha_ip_mask, $ha_vlan, $ha_interface_id)\r"},{"line_number":75,"context_line":"\r"}],"source_content_type":"text/velocity","patch_set":15,"id":"AAAATH%2F%2F%2FVQ%3D","line":72,"updated":"2013-10-06 11:36:08.000000000","message":"ditto","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b4eec81fc54ed5825260022c372a94345608f3e6","unresolved":false,"context_lines":[{"line_number":70,"context_line":"\r"},{"line_number":71,"context_line":"#if($ha_enabled)\r"},{"line_number":72,"context_line":"\t#set($ha_interface_string \u003d \"#get_interface_id($ha_ip_address, $data_interface_id)\")\r"},{"line_number":73,"context_line":"\t#set($ha_interface_id \u003d $Integer.parseInt($ha_interface_string.trim()))\r"},{"line_number":74,"context_line":"\t#create_interface($ha_ip_address, $ha_ip_mask, $ha_vlan, $ha_interface_id)\r"},{"line_number":75,"context_line":"\r"},{"line_number":76,"context_line":"\t/c/l3/vrrp/on\r"}],"source_content_type":"text/velocity","patch_set":15,"id":"AAAATH%2F%2F%2FVM%3D","line":73,"updated":"2013-10-06 11:36:08.000000000","message":"ditto","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b4eec81fc54ed5825260022c372a94345608f3e6","unresolved":false,"context_lines":[{"line_number":71,"context_line":"#if($ha_enabled)\r"},{"line_number":72,"context_line":"\t#set($ha_interface_string \u003d \"#get_interface_id($ha_ip_address, $data_interface_id)\")\r"},{"line_number":73,"context_line":"\t#set($ha_interface_id \u003d $Integer.parseInt($ha_interface_string.trim()))\r"},{"line_number":74,"context_line":"\t#create_interface($ha_ip_address, $ha_ip_mask, $ha_vlan, $ha_interface_id)\r"},{"line_number":75,"context_line":"\r"},{"line_number":76,"context_line":"\t/c/l3/vrrp/on\r"},{"line_number":77,"context_line":"\t/c/l3/vrrp/hotstan enabled\r"}],"source_content_type":"text/velocity","patch_set":15,"id":"AAAATH%2F%2F%2FVI%3D","line":74,"updated":"2013-10-06 11:36:08.000000000","message":"ditto","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b4eec81fc54ed5825260022c372a94345608f3e6","unresolved":false,"context_lines":[{"line_number":72,"context_line":"\t#set($ha_interface_string \u003d \"#get_interface_id($ha_ip_address, $data_interface_id)\")\r"},{"line_number":73,"context_line":"\t#set($ha_interface_id \u003d $Integer.parseInt($ha_interface_string.trim()))\r"},{"line_number":74,"context_line":"\t#create_interface($ha_ip_address, $ha_ip_mask, $ha_vlan, $ha_interface_id)\r"},{"line_number":75,"context_line":"\r"},{"line_number":76,"context_line":"\t/c/l3/vrrp/on\r"},{"line_number":77,"context_line":"\t/c/l3/vrrp/hotstan enabled\r"},{"line_number":78,"context_line":"\t \r"}],"source_content_type":"text/velocity","patch_set":15,"id":"AAAATH%2F%2F%2FVE%3D","line":75,"updated":"2013-10-06 11:36:08.000000000","message":"ditto","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b4eec81fc54ed5825260022c372a94345608f3e6","unresolved":false,"context_lines":[{"line_number":73,"context_line":"\t#set($ha_interface_id \u003d $Integer.parseInt($ha_interface_string.trim()))\r"},{"line_number":74,"context_line":"\t#create_interface($ha_ip_address, $ha_ip_mask, $ha_vlan, $ha_interface_id)\r"},{"line_number":75,"context_line":"\r"},{"line_number":76,"context_line":"\t/c/l3/vrrp/on\r"},{"line_number":77,"context_line":"\t/c/l3/vrrp/hotstan enabled\r"},{"line_number":78,"context_line":"\t \r"},{"line_number":79,"context_line":"\t/c/l3/vrrp/vr 1\r"}],"source_content_type":"text/velocity","patch_set":15,"id":"AAAATH%2F%2F%2FVA%3D","line":76,"updated":"2013-10-06 11:36:08.000000000","message":"ditto and many more below","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"}],"neutron/services/loadbalancer/drivers/radware/workflows/openstack_l2_l3/templates/teardown_l2_l3.vm":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b4eec81fc54ed5825260022c372a94345608f3e6","unresolved":false,"context_lines":[{"line_number":1,"context_line":"\r"},{"line_number":2,"context_line":"#property(\u0027description\u0027, \u0027Cleanup VLANs and L3 interface for data and HA networks - v1\u0027)\r"},{"line_number":3,"context_line":"\r"},{"line_number":4,"context_line":"#param(\"data_port\", \"int\", \"in\", \"min\u003d1\", \"max\u003d2\", \"prompt\u003dData Port\")\r"}],"source_content_type":"text/velocity","patch_set":15,"id":"AAAATH%2F%2F%2FU8%3D","line":1,"updated":"2013-10-06 11:36:08.000000000","message":"Ditto regarding the white spaces","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"d365ac51e45e156cdcdf3c363ab72d8d03bdd71e","unresolved":false,"context_lines":[{"line_number":23,"context_line":"        del\r"},{"line_number":24,"context_line":"\r"},{"line_number":25,"context_line":"    /c/l3/vrrp/hotstan dis\r"},{"line_number":26,"context_line":"\t\t\r"},{"line_number":27,"context_line":"    /c/l3/vrrp/off\r"},{"line_number":28,"context_line":"\r"},{"line_number":29,"context_line":"    #delete_interface($ha_interface_id)\r"}],"source_content_type":"text/velocity","patch_set":16,"id":"AAAATH%2F%2F%2Bds%3D","line":26,"updated":"2013-10-07 06:49:42.000000000","message":"white space","commit_id":"e7d793c215f665e29b2e35140ca05490d788491d"}],"neutron/services/loadbalancer/drivers/radware/workflows/openstack_l2_l3/workflow/workflow.xml":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b4eec81fc54ed5825260022c372a94345608f3e6","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        \u003clog message\u003d\"This may take time... making sure that the service is provisioned.\"/\u003e"},{"line_number":55,"context_line":"        \u003cscript file\u003d\"wait_for_service.groovy\" name\u003d\"wait_for_service\"/\u003e"},{"line_number":56,"context_line":"        \u003clog message\u003d\"Service is provisioned.\"/\u003e"},{"line_number":57,"context_line":"\t\t\u003cset saveAs\u003d\"$ha_enabled\" value\u003d\"$service.request.ha\"/\u003e"},{"line_number":58,"context_line":"      \u003c/sequence\u003e"},{"line_number":59,"context_line":"\t  \u003csequence if\u003d\"$ha_enabled\"\u003e"},{"line_number":60,"context_line":"        \u003cset saveAs\u003d\"$ha_network\" value\u003d\"${service.containerResourcePool.getNetwork($ha_network_name)}\"/\u003e"}],"source_content_type":"application/xml","patch_set":15,"id":"AAAATH%2F%2F%2FU4%3D","line":57,"updated":"2013-10-06 11:36:08.000000000","message":"ditto","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"}],"neutron/services/loadbalancer/drivers/radware/workflows/openstack_l4/templates/openstack_common.vm":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b4eec81fc54ed5825260022c372a94345608f3e6","unresolved":false,"context_lines":[{"line_number":130,"context_line":"    #set($rightInt\u003d0)\r"},{"line_number":131,"context_line":"    #set($rightInt\u003d$rightInt.parseInt($right))\r"},{"line_number":132,"context_line":"    #set($result[0]\u003d$leftInt)\r"},{"line_number":133,"context_line":"    #set($result[1]\u003d$rightInt)    \r"},{"line_number":134,"context_line":"#end\r"},{"line_number":135,"context_line":"\r"},{"line_number":136,"context_line":"#macro(os_print_http_response, $response, $hcUUID)\r"}],"source_content_type":"text/velocity","patch_set":15,"id":"AAAATH%2F%2F%2FU0%3D","line":133,"updated":"2013-10-06 11:36:08.000000000","message":"whitespace","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b4eec81fc54ed5825260022c372a94345608f3e6","unresolved":false,"context_lines":[{"line_number":165,"context_line":"#macro(os_strip_uuid,$uuid,$result)\r"},{"line_number":166,"context_line":"    #set($strippedUUID\u003d$uuid.replaceAll(\"-\",\"\"))\r"},{"line_number":167,"context_line":"    #if($strippedUUID.length() \u003e $HC_MAX_ID_LENGTH)\r"},{"line_number":168,"context_line":"        #error(\"UUID $strippedUUID is too long and cant be used as Health Monitor ID. Maximum length is $HC_MAX_ID_LENGTH.\")    \r"},{"line_number":169,"context_line":"    #end\r"},{"line_number":170,"context_line":"    #set($result[0]\u003d$strippedUUID)    \r"},{"line_number":171,"context_line":"#end\r"}],"source_content_type":"text/velocity","patch_set":15,"id":"AAAATH%2F%2F%2FUw%3D","line":168,"updated":"2013-10-06 11:36:08.000000000","message":"ditto","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"}],"neutron/services/loadbalancer/drivers/radware/workflows/openstack_l4/templates/openstack_manage_hcs.vm":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b4eec81fc54ed5825260022c372a94345608f3e6","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        #os_get_ref_count_for_hc($hcUUID, $hcType, $refCountRetArray)\r"},{"line_number":35,"context_line":"        ##consider raising error if ref count is 0\r"},{"line_number":36,"context_line":"        #set($not_in_use\u003d$currHCs.put($hcUUID, $refCountRetArray[0]))\r"},{"line_number":37,"context_line":"        #set($counter\u003d$counter+1)                \r"},{"line_number":38,"context_line":"    #end\r"},{"line_number":39,"context_line":"#end\r"},{"line_number":40,"context_line":"\r"}],"source_content_type":"text/velocity","patch_set":15,"id":"AAAATH%2F%2F%2FUs%3D","line":37,"updated":"2013-10-06 11:36:08.000000000","message":"ditto","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b4eec81fc54ed5825260022c372a94345608f3e6","unresolved":false,"context_lines":[{"line_number":96,"context_line":"    ## query the device and check how many references this hc has already\r"},{"line_number":97,"context_line":"    #os_get_ref_count_for_hc($hcUUID, $hcType, $refCountRetArray)\r"},{"line_number":98,"context_line":"    #set($hcRefCount\u003d$hcRefCount+$refCountRetArray[0])\r"},{"line_number":99,"context_line":"    \r"},{"line_number":100,"context_line":"    #os_print_hc_config($hcType, $hcUUID,$hcRefCount,$hcMxRetries,$hcDelay, $hcTimeout,$hcUrlPath,$hcExpectedCodes)\r"},{"line_number":101,"context_line":"#end\r"},{"line_number":102,"context_line":"\r"}],"source_content_type":"text/velocity","patch_set":15,"id":"AAAATH%2F%2F%2FUo%3D","line":99,"updated":"2013-10-06 11:36:08.000000000","message":"ditto","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"}],"neutron/services/loadbalancer/drivers/radware/workflows/openstack_l4/templates/openstack_manage_l4.vm":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b4eec81fc54ed5825260022c372a94345608f3e6","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    #else\r"},{"line_number":61,"context_line":"    addr v4 none v6 $vip 128 persist disable\r"},{"line_number":62,"context_line":"    #end\r"},{"line_number":63,"context_line":"\r"},{"line_number":64,"context_line":"    \r"},{"line_number":65,"context_line":"\r"},{"line_number":66,"context_line":"\r"}],"source_content_type":"text/velocity","patch_set":15,"id":"AAAATH%2F%2F%2FUk%3D","line":63,"updated":"2013-10-06 11:36:08.000000000","message":"whitespace","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"}],"neutron/services/loadbalancer/drivers/radware/workflows/openstack_l4/templates/openstack_manage_rips.vm":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b4eec81fc54ed5825260022c372a94345608f3e6","unresolved":false,"context_lines":[{"line_number":63,"context_line":"/c/slb/real $updateId\r"},{"line_number":64,"context_line":"    #print_weight($memberWeight)\r"},{"line_number":65,"context_line":"    #os_print_bool_to_ena_dis($memberAdminState)\r"},{"line_number":66,"context_line":"    \r"},{"line_number":67,"context_line":"#end\r"},{"line_number":68,"context_line":"\r"},{"line_number":69,"context_line":"#set($createId\u003d0)\r"}],"source_content_type":"text/velocity","patch_set":15,"id":"AAAATH%2F%2F%2FUg%3D","line":66,"updated":"2013-10-06 11:36:08.000000000","message":"ditto","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"}],"neutron/services/loadbalancer/drivers/radware/workflows/openstack_l4/templates/openstack_teardown_l4.vm":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b4eec81fc54ed5825260022c372a94345608f3e6","unresolved":false,"context_lines":[{"line_number":19,"context_line":"    del\r"},{"line_number":20,"context_line":"\r"},{"line_number":21,"context_line":"## remove the LOGEXP part\r"},{"line_number":22,"context_line":"/c/slb/advhc/health HC_Group_$groupId \r"},{"line_number":23,"context_line":"    del\r"},{"line_number":24,"context_line":"\r"},{"line_number":25,"context_line":"#foreach ($uuid in $curr_hm_uuid_array)\r"}],"source_content_type":"text/velocity","patch_set":15,"id":"AAAATH%2F%2F%2FUc%3D","line":22,"updated":"2013-10-06 11:36:08.000000000","message":"ditto","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b4eec81fc54ed5825260022c372a94345608f3e6","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    /c/slb/advhc/health $stripped_uuid[0]\r"},{"line_number":29,"context_line":"        del\r"},{"line_number":30,"context_line":"#end\r"},{"line_number":31,"context_line":"    \r"},{"line_number":32,"context_line":"#foreach ($serverId in $curRealServerIds)\r"},{"line_number":33,"context_line":"/c/slb/real $serverId\r"},{"line_number":34,"context_line":"    del\r"}],"source_content_type":"text/velocity","patch_set":15,"id":"AAAATH%2F%2F%2FUY%3D","line":31,"updated":"2013-10-06 11:36:08.000000000","message":"ditto","commit_id":"139dbfe415174a6eb548299ccdca85ed932f5a13"}],"neutron/services/loadbalancer/drivers/radware/workflows/readme.txt":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"eea0ad4d9e558b30536864c307faa47b758c9979","unresolved":false,"context_lines":[{"line_number":1,"context_line":"The Radware LBaaS driver uploads ADC workflows on-demand into vDirect The ADC Workflows are composed from files which are located underneath this workflows directory."},{"line_number":2,"context_line":"The workflows directory is part of the Radware LBaaS driver code included in OpenStack."},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"Those ADC Workflows are instantiated and run in the vDirect Virtual Machine."}],"source_content_type":"text/plain","patch_set":17,"id":"AAAATH%2F%2F%2BBE%3D","line":1,"updated":"2013-10-07 11:29:57.000000000","message":"Need a period before \"The ADC\".","commit_id":"756d672a7689dc9eea4a3934e7a8284b5f8b60b7"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"eea0ad4d9e558b30536864c307faa47b758c9979","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"An ADC workflow is composed from:"},{"line_number":8,"context_line":"1. A mandatory XML file called workflow.xml which defines the different states and the transition flow between states as well as \"linking\" to the actual code that can be done on each state."},{"line_number":9,"context_line":"2. ADC Configuration Template files with file extension .vm which are using an extended apache velocity template engine syntax"},{"line_number":10,"context_line":"3. ADC Configuration Groovy script file with extension .groovy"},{"line_number":11,"context_line":""}],"source_content_type":"text/plain","patch_set":17,"id":"AAAATH%2F%2F%2BAY%3D","line":9,"updated":"2013-10-07 11:29:57.000000000","message":"It is better to change \"file extension\" to \"extension\" for consistency with the next line.","commit_id":"756d672a7689dc9eea4a3934e7a8284b5f8b60b7"}],"neutron/tests/unit/services/loadbalancer/drivers/radware/test_plugin_driver.py":[{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"7acc462347fa4e8f155e8e5ef4825002dd3dfeaf","unresolved":false,"context_lines":[{"line_number":16,"context_line":"#"},{"line_number":17,"context_line":"# @author: Avishay Balderman, Radware"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from __future__ import absolute_import"},{"line_number":20,"context_line":"import json"},{"line_number":21,"context_line":"import re"},{"line_number":22,"context_line":"import time"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAS3%2F%2FN%2BE%3D","line":19,"updated":"2013-10-02 03:14:14.000000000","message":"Why is this needed?","commit_id":"f772752fd6370bb072cb20d42abbf91c69940735"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"7acc462347fa4e8f155e8e5ef4825002dd3dfeaf","unresolved":false,"context_lines":[{"line_number":17,"context_line":"# @author: Avishay Balderman, Radware"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from __future__ import absolute_import"},{"line_number":20,"context_line":"import json"},{"line_number":21,"context_line":"import re"},{"line_number":22,"context_line":"import time"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAS3%2F%2FN%2BA%3D","line":20,"updated":"2013-10-02 03:14:14.000000000","message":"from neutron.openstack.common import jsonutils as json","commit_id":"f772752fd6370bb072cb20d42abbf91c69940735"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"7acc462347fa4e8f155e8e5ef4825002dd3dfeaf","unresolved":false,"context_lines":[{"line_number":30,"context_line":"from neutron import manager"},{"line_number":31,"context_line":"from neutron.plugins.common import constants"},{"line_number":32,"context_line":"from neutron.services.loadbalancer.drivers.radware import driver"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"from neutron.tests.unit.db.loadbalancer import test_db_loadbalancer"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"GET_200 \u003d (\u0027/api/workflow/\u0027, \u0027/api/service/\u0027, \u0027/api/workflowTemplate\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAS3%2F%2FN98%3D","line":33,"updated":"2013-10-02 03:14:14.000000000","message":"empty line should be removed","commit_id":"f772752fd6370bb072cb20d42abbf91c69940735"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"7acc462347fa4e8f155e8e5ef4825002dd3dfeaf","unresolved":false,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        self.ctx \u003d context.get_admin_context()"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    def tearDown(self):"},{"line_number":114,"context_line":"        super(TestLoadBalancerPlugin, self).tearDown()"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def test_create_vip_failure(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAS3%2F%2FN90%3D","line":113,"updated":"2013-10-02 03:14:14.000000000","message":"This method only calls the super, so it can be dropped.","commit_id":"f772752fd6370bb072cb20d42abbf91c69940735"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"3116dc723f4e24cdc53b6af68daf1fb67eebbcbc","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from mock import ANY"},{"line_number":20,"context_line":"from mock import call"},{"line_number":21,"context_line":"from mock import Mock"},{"line_number":22,"context_line":"from neutron import context"},{"line_number":23,"context_line":"from neutron.extensions import loadbalancer"},{"line_number":24,"context_line":"from neutron import manager"},{"line_number":25,"context_line":"from neutron.openstack.common import jsonutils as json"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAS3%2F%2FJIM%3D","line":22,"updated":"2013-10-03 15:45:04.000000000","message":"Import ordering.\n\nimport re\nimport time\n\nimport mock\n\nimport neutron.extensions import loadbalancer\n...","commit_id":"ea4f0d5aab8cc9c6bdf39a96ea31b01e7accbec4"},{"author":{"_account_id":6447,"name":"Avishay Balderman","email":"avishayb@radware.com","username":"avishayb"},"change_message_id":"3adbd6af204754a0ba344c859cbed9280321f774","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from mock import ANY"},{"line_number":20,"context_line":"from mock import call"},{"line_number":21,"context_line":"from mock import Mock"},{"line_number":22,"context_line":"from neutron import context"},{"line_number":23,"context_line":"from neutron.extensions import loadbalancer"},{"line_number":24,"context_line":"from neutron import manager"},{"line_number":25,"context_line":"from neutron.openstack.common import jsonutils as json"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAS3%2F%2FI60%3D","line":22,"in_reply_to":"AAAAS3%2F%2FJIM%3D","updated":"2013-10-03 16:35:22.000000000","message":"OK","commit_id":"ea4f0d5aab8cc9c6bdf39a96ea31b01e7accbec4"},{"author":{"_account_id":6447,"name":"Avishay Balderman","email":"avishayb@radware.com","username":"avishayb"},"change_message_id":"8c43960e0f7eb4ce40369a8cebe6a4f20cc33290","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from mock import ANY"},{"line_number":20,"context_line":"from mock import call"},{"line_number":21,"context_line":"from mock import Mock"},{"line_number":22,"context_line":"from neutron import context"},{"line_number":23,"context_line":"from neutron.extensions import loadbalancer"},{"line_number":24,"context_line":"from neutron import manager"},{"line_number":25,"context_line":"from neutron.openstack.common import jsonutils as json"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAS3%2F%2FI0o%3D","line":22,"in_reply_to":"AAAAS3%2F%2FJIM%3D","updated":"2013-10-03 16:57:02.000000000","message":"not sure I got it ...","commit_id":"ea4f0d5aab8cc9c6bdf39a96ea31b01e7accbec4"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"e3f80b9e10ff8849901a9614967f934423aa3bee","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from mock import ANY"},{"line_number":21,"context_line":"from mock import call"},{"line_number":22,"context_line":"from mock import Mock"},{"line_number":23,"context_line":"from neutron import context"},{"line_number":24,"context_line":"from neutron.extensions import loadbalancer"},{"line_number":25,"context_line":"from neutron import manager"},{"line_number":26,"context_line":"from neutron.openstack.common import jsonutils as json"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAS3%2F%2FH%2B8%3D","line":23,"updated":"2013-10-03 21:20:48.000000000","message":"there should be a newline between line 23 and 24","commit_id":"f1737e577f7c12139545663dd20b4853939a19e1"},{"author":{"_account_id":6447,"name":"Avishay Balderman","email":"avishayb@radware.com","username":"avishayb"},"change_message_id":"152f3b4138e1aa691d5891762829b448cc88d1d4","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from mock import ANY"},{"line_number":21,"context_line":"from mock import call"},{"line_number":22,"context_line":"from mock import Mock"},{"line_number":23,"context_line":"from neutron import context"},{"line_number":24,"context_line":"from neutron.extensions import loadbalancer"},{"line_number":25,"context_line":"from neutron import manager"},{"line_number":26,"context_line":"from neutron.openstack.common import jsonutils as json"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAS3%2F%2FH64%3D","line":23,"in_reply_to":"AAAAS3%2F%2FH%2B8%3D","updated":"2013-10-03 22:02:10.000000000","message":"Done","commit_id":"f1737e577f7c12139545663dd20b4853939a19e1"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"e3f80b9e10ff8849901a9614967f934423aa3bee","unresolved":false,"context_lines":[{"line_number":27,"context_line":"from neutron.plugins.common import constants"},{"line_number":28,"context_line":"from neutron.services.loadbalancer.drivers.radware import driver"},{"line_number":29,"context_line":"from neutron.tests.unit.db.loadbalancer import test_db_loadbalancer"},{"line_number":30,"context_line":"import re"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"GET_200 \u003d (\u0027/api/workflow/\u0027, \u0027/api/service/\u0027, \u0027/api/workflowTemplate\u0027)"},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAS3%2F%2FH%2Bk%3D","line":30,"updated":"2013-10-03 21:20:48.000000000","message":"This should go in line 18.  PEP8 import ordering is:\n\nstandard library modules\n\n\u003cblank line\u003e\n\n3rd party modules\n\n\u003cblank line\u003e\n\nproject modules","commit_id":"f1737e577f7c12139545663dd20b4853939a19e1"},{"author":{"_account_id":6447,"name":"Avishay Balderman","email":"avishayb@radware.com","username":"avishayb"},"change_message_id":"152f3b4138e1aa691d5891762829b448cc88d1d4","unresolved":false,"context_lines":[{"line_number":27,"context_line":"from neutron.plugins.common import constants"},{"line_number":28,"context_line":"from neutron.services.loadbalancer.drivers.radware import driver"},{"line_number":29,"context_line":"from neutron.tests.unit.db.loadbalancer import test_db_loadbalancer"},{"line_number":30,"context_line":"import re"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"GET_200 \u003d (\u0027/api/workflow/\u0027, \u0027/api/service/\u0027, \u0027/api/workflowTemplate\u0027)"},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAS3%2F%2FH60%3D","line":30,"in_reply_to":"AAAAS3%2F%2FH%2Bk%3D","updated":"2013-10-03 22:02:10.000000000","message":"Done","commit_id":"f1737e577f7c12139545663dd20b4853939a19e1"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"eea0ad4d9e558b30536864c307faa47b758c9979","unresolved":false,"context_lines":[{"line_number":20,"context_line":"import mock"},{"line_number":21,"context_line":"from mock import ANY"},{"line_number":22,"context_line":"from mock import call"},{"line_number":23,"context_line":"from mock import Mock"},{"line_number":24,"context_line":"import re"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from neutron import context"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATH%2F%2F92k%3D","line":23,"updated":"2013-10-07 11:29:57.000000000","message":"module level import is recommended.\nPlease remove L.21-23 and use mock.ANY/call/Mock.","commit_id":"756d672a7689dc9eea4a3934e7a8284b5f8b60b7"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"eea0ad4d9e558b30536864c307faa47b758c9979","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from mock import ANY"},{"line_number":22,"context_line":"from mock import call"},{"line_number":23,"context_line":"from mock import Mock"},{"line_number":24,"context_line":"import re"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from neutron import context"},{"line_number":27,"context_line":"from neutron.extensions import loadbalancer"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATH%2F%2F92s%3D","line":24,"updated":"2013-10-07 11:29:57.000000000","message":"re is a standard module. Move it to the first","commit_id":"756d672a7689dc9eea4a3934e7a8284b5f8b60b7"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"eea0ad4d9e558b30536864c307faa47b758c9979","unresolved":false,"context_lines":[{"line_number":196,"context_line":"                self.rest_call_mock.assert_has_calls(calls, any_order\u003dTrue)"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"                # sleep to wait for the operation completion"},{"line_number":199,"context_line":"                greenthread.sleep(1)"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"                #Test DB"},{"line_number":202,"context_line":"                new_vip \u003d self.plugin_instance.get_vip(self.ctx, vip[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATH%2F%2F914%3D","line":199,"updated":"2013-10-07 11:29:57.000000000","message":"greenthread.sleep(1) always enough? I am afraid the unit test failure due to this static value.\n\nIf you have more steady way to check a operation completion, it is better. IMO sleep(1) is a last-resort.","commit_id":"756d672a7689dc9eea4a3934e7a8284b5f8b60b7"}],"neutron/tests/unit/services/loadbalancer/drivers/radware/test_plugin_drivet.py":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"14f03b14f16d723567709dae2e487ade7e369ffa","unresolved":false,"context_lines":[{"line_number":21,"context_line":"import re"},{"line_number":22,"context_line":"import time"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from mock import ANY"},{"line_number":25,"context_line":"from mock import call"},{"line_number":26,"context_line":"from mock import Mock"},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAS3%2F%2F9iM%3D","line":24,"updated":"2013-09-16 14:54:44.000000000","message":"please do just \u0027import mock\u0027","commit_id":"008b1eb09ad7a881fba5e0fa1cabdc8e9f5a8568"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"14f03b14f16d723567709dae2e487ade7e369ffa","unresolved":false,"context_lines":[{"line_number":30,"context_line":"from neutron import manager"},{"line_number":31,"context_line":"from neutron.plugins.common import constants"},{"line_number":32,"context_line":"from neutron.services.loadbalancer.drivers.radware import driver"},{"line_number":33,"context_line":"from oslo.config import cfg"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"from neutron.tests.unit.db.loadbalancer import test_db_loadbalancer"},{"line_number":36,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAS3%2F%2F9iA%3D","line":33,"updated":"2013-09-16 14:54:44.000000000","message":"it should be in a third party import section (after # 26)","commit_id":"008b1eb09ad7a881fba5e0fa1cabdc8e9f5a8568"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"14f03b14f16d723567709dae2e487ade7e369ffa","unresolved":false,"context_lines":[{"line_number":31,"context_line":"from neutron.plugins.common import constants"},{"line_number":32,"context_line":"from neutron.services.loadbalancer.drivers.radware import driver"},{"line_number":33,"context_line":"from oslo.config import cfg"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"from neutron.tests.unit.db.loadbalancer import test_db_loadbalancer"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"GET_200 \u003d (\u0027/api/workflow/\u0027, \u0027/api/service/\u0027, \u0027/api/workflowTemplate\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAS3%2F%2F9h4%3D","line":34,"updated":"2013-09-16 14:54:44.000000000","message":"blank line not needed","commit_id":"008b1eb09ad7a881fba5e0fa1cabdc8e9f5a8568"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"14f03b14f16d723567709dae2e487ade7e369ffa","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        return 202, \u0027\u0027, \u0027\u0027, \u0027\u0027"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"class TestLoadBalancerPluginBase("},{"line_number":85,"context_line":"    test_db_loadbalancer.LoadBalancerPluginDbTestCase):"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAS3%2F%2F9hc%3D","line":84,"updated":"2013-09-16 14:54:44.000000000","message":"It\u0027s better to update the test name to reflect that it is supposed to test Radware driver","commit_id":"008b1eb09ad7a881fba5e0fa1cabdc8e9f5a8568"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"14f03b14f16d723567709dae2e487ade7e369ffa","unresolved":false,"context_lines":[{"line_number":85,"context_line":"    test_db_loadbalancer.LoadBalancerPluginDbTestCase):"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    def setUp(self):"},{"line_number":88,"context_line":"        cfg.CONF.set_override(\u0027driver_fqn\u0027,"},{"line_number":89,"context_line":"                              \"neutron.services.loadbalancer.drivers.radware\""},{"line_number":90,"context_line":"                              \".driver.LoadBalancerDriver\", group\u003d\"LBAAS\")"},{"line_number":91,"context_line":"        self.addCleanup(cfg.CONF.reset)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAS3%2F%2F9h0%3D","line":88,"updated":"2013-09-16 14:54:44.000000000","message":"no such opt anymore","commit_id":"008b1eb09ad7a881fba5e0fa1cabdc8e9f5a8568"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"14f03b14f16d723567709dae2e487ade7e369ffa","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        self.plugin_instance \u003d loaded_plugins[constants.LOADBALANCER]"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"class TestLoadBalancerPlugin(TestLoadBalancerPluginBase):"},{"line_number":99,"context_line":"    def setUp(self):"},{"line_number":100,"context_line":"        super(TestLoadBalancerPlugin, self).setUp()"},{"line_number":101,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAS3%2F%2F9hQ%3D","line":98,"updated":"2013-09-16 14:54:44.000000000","message":"Same concern about too general test case name","commit_id":"008b1eb09ad7a881fba5e0fa1cabdc8e9f5a8568"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"14f03b14f16d723567709dae2e487ade7e369ffa","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        self.ctx \u003d context.get_admin_context()"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    def tearDown(self):"},{"line_number":114,"context_line":"        super(TestLoadBalancerPlugin, self).tearDown()"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def test_create_vip_failure(self):"},{"line_number":117,"context_line":"        \"\"\"Test the rest call failure handling by Exception raising.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAS3%2F%2F9hM%3D","line":114,"updated":"2013-09-16 14:54:44.000000000","message":"this is useless","commit_id":"008b1eb09ad7a881fba5e0fa1cabdc8e9f5a8568"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"14f03b14f16d723567709dae2e487ade7e369ffa","unresolved":false,"context_lines":[{"line_number":135,"context_line":""},{"line_number":136,"context_line":"                rest_call_function_mock.__dict__.update("},{"line_number":137,"context_line":"                    {\u0027RESPOND_WITH_ERROR\u0027: True})"},{"line_number":138,"context_line":"                self.assertRaises(Exception,"},{"line_number":139,"context_line":"                                  self.plugin_instance.create_vip,"},{"line_number":140,"context_line":"                                  (self.ctx, {\u0027vip\u0027: vip_data}))"},{"line_number":141,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAS3%2F%2F9hE%3D","line":138,"updated":"2013-09-16 14:54:44.000000000","message":"please specify the particular type of exception","commit_id":"008b1eb09ad7a881fba5e0fa1cabdc8e9f5a8568"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"14f03b14f16d723567709dae2e487ade7e369ffa","unresolved":false,"context_lines":[{"line_number":143,"context_line":"        self.rest_call_mock.reset_mock()"},{"line_number":144,"context_line":"        with self.subnet() as subnet:"},{"line_number":145,"context_line":"            with self.pool(no_delete\u003dTrue) as pool:"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"                vip_data \u003d {"},{"line_number":148,"context_line":"                    \u0027name\u0027: \u0027vip1\u0027,"},{"line_number":149,"context_line":"                    \u0027subnet_id\u0027: subnet[\u0027subnet\u0027][\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAS3%2F%2F9hA%3D","line":146,"updated":"2013-09-16 14:54:44.000000000","message":"blank line not needed","commit_id":"008b1eb09ad7a881fba5e0fa1cabdc8e9f5a8568"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"14f03b14f16d723567709dae2e487ade7e369ffa","unresolved":false,"context_lines":[{"line_number":198,"context_line":"                self.rest_call_mock.assert_has_calls(calls, any_order\u003dTrue)"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"                # sleep to wait for the operation completion"},{"line_number":201,"context_line":"                time.sleep(1)"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"                #Test DB"},{"line_number":204,"context_line":"                new_vip \u003d self.plugin_instance.get_vip(self.ctx, vip[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAS3%2F%2F9gs%3D","line":201,"updated":"2013-09-16 14:54:44.000000000","message":"sleeps are weird in unit tests, should smth be mocked instead?","commit_id":"008b1eb09ad7a881fba5e0fa1cabdc8e9f5a8568"}]}
