)]}'
{"networking_cisco/plugins/cisco/cfg_agent/device_drivers/asr1k/aci_asr1k_routing_driver.py":[{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"07e1aa73b6f0af4f3c84b45d0a42d438ed945e33","unresolved":false,"context_lines":[{"line_number":34,"context_line":"from networking_cisco.plugins.cisco.common import cisco_constants"},{"line_number":35,"context_line":"from networking_cisco.plugins.cisco.extensions import ha"},{"line_number":36,"context_line":"from networking_cisco.plugins.cisco.extensions import routerrole"},{"line_number":37,"context_line":"from neutron.common import constants"},{"line_number":38,"context_line":"from networking_cisco._i18n import _LE, _LI"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a98d1f4_dab2a2e4","line":37,"range":{"start_line":37,"start_character":0,"end_line":37,"end_character":36},"updated":"2016-10-03 13:47:01.000000000","message":"This import should be in a separate import group above the networking-cisco imports.","commit_id":"4c8376d31f753a226b6f6fb98bde0a5fbc61180c"},{"author":{"_account_id":18031,"name":"Thomas Bachman","email":"tbachman@yahoo.com","username":"bachmantech"},"change_message_id":"ddd4503ec236f7bbb238d4e5fb859c2b3f2dd9f0","unresolved":false,"context_lines":[{"line_number":34,"context_line":"from networking_cisco.plugins.cisco.common import cisco_constants"},{"line_number":35,"context_line":"from networking_cisco.plugins.cisco.extensions import ha"},{"line_number":36,"context_line":"from networking_cisco.plugins.cisco.extensions import routerrole"},{"line_number":37,"context_line":"from neutron.common import constants"},{"line_number":38,"context_line":"from networking_cisco._i18n import _LE, _LI"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a98d1f4_a2eafdd8","line":37,"range":{"start_line":37,"start_character":0,"end_line":37,"end_character":36},"in_reply_to":"3a98d1f4_dab2a2e4","updated":"2016-10-03 18:29:16.000000000","message":"Good catch -- will move (and weird that pep8 didn\u0027t catch this).","commit_id":"4c8376d31f753a226b6f6fb98bde0a5fbc61180c"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"07e1aa73b6f0af4f3c84b45d0a42d438ed945e33","unresolved":false,"context_lines":[{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def external_gateway_removed(self, ri, ext_gw_port):"},{"line_number":99,"context_line":"        if not self._is_global_router(ri):"},{"line_number":100,"context_line":"            g_configs \u003d ext_gw_port[\u0027hosting_info\u0027].get(\u0027global_config\u0027)"},{"line_number":101,"context_line":"            if g_configs and isinstance(g_configs, list):"},{"line_number":102,"context_line":"                self._remove_global_config(ri, ext_gw_port, g_configs)"},{"line_number":103,"context_line":"            if ext_gw_port[\u0027hosting_info\u0027].get(\u0027snat_subnets\u0027):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a98d1f4_101f8908","line":100,"range":{"start_line":100,"start_character":24,"end_line":100,"end_character":51},"updated":"2016-10-03 13:47:01.000000000","message":"Can hosting_info be None at this point? If so this will result in a confusing None type has no attribute get error","commit_id":"4c8376d31f753a226b6f6fb98bde0a5fbc61180c"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"07e1aa73b6f0af4f3c84b45d0a42d438ed945e33","unresolved":false,"context_lines":[{"line_number":241,"context_line":"                                      \u0027REMOVE_TENANT_ROUTE_WITH_INTF\u0027)"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"    def _get_info_port(self, ri, port):"},{"line_number":244,"context_line":"        if ri.ex_gw_port:"},{"line_number":245,"context_line":"            return ri.ex_gw_port"},{"line_number":246,"context_line":"        elif ri.router.get(\u0027gw_port\u0027):"},{"line_number":247,"context_line":"            return ri.router[\u0027gw_port\u0027]"},{"line_number":248,"context_line":"        else:"},{"line_number":249,"context_line":"            return port"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"    def _get_interface_ip_from_hosting_port(self, ri, port, is_external\u003dFalse):"},{"line_number":252,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a98d1f4_10406933","line":249,"range":{"start_line":244,"start_character":8,"end_line":249,"end_character":23},"updated":"2016-10-03 13:47:01.000000000","message":"This could be simplfied to:\n\nif ri.ex_gw_port:\n   return ri.ex_gw_port\nreturn ri.router.get(gw_port, port)\n\nor even just\n\n return ri.ex_gw_port or ri.router.get(gw_port, port)","commit_id":"4c8376d31f753a226b6f6fb98bde0a5fbc61180c"},{"author":{"_account_id":18031,"name":"Thomas Bachman","email":"tbachman@yahoo.com","username":"bachmantech"},"change_message_id":"ddd4503ec236f7bbb238d4e5fb859c2b3f2dd9f0","unresolved":false,"context_lines":[{"line_number":241,"context_line":"                                      \u0027REMOVE_TENANT_ROUTE_WITH_INTF\u0027)"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"    def _get_info_port(self, ri, port):"},{"line_number":244,"context_line":"        if ri.ex_gw_port:"},{"line_number":245,"context_line":"            return ri.ex_gw_port"},{"line_number":246,"context_line":"        elif ri.router.get(\u0027gw_port\u0027):"},{"line_number":247,"context_line":"            return ri.router[\u0027gw_port\u0027]"},{"line_number":248,"context_line":"        else:"},{"line_number":249,"context_line":"            return port"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"    def _get_interface_ip_from_hosting_port(self, ri, port, is_external\u003dFalse):"},{"line_number":252,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a98d1f4_629e3508","line":249,"range":{"start_line":244,"start_character":8,"end_line":249,"end_character":23},"in_reply_to":"3a98d1f4_10406933","updated":"2016-10-03 18:29:16.000000000","message":"Good optimization -- will change to the last one.","commit_id":"4c8376d31f753a226b6f6fb98bde0a5fbc61180c"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"07e1aa73b6f0af4f3c84b45d0a42d438ed945e33","unresolved":false,"context_lines":[{"line_number":295,"context_line":"                raise cfg_exc.DriverExpectedKeyNotSetException(**params)"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"    def internal_network_removed(self, ri, port, itfc_deleted\u003dFalse):"},{"line_number":298,"context_line":"        if_configs \u003d port[\u0027hosting_info\u0027].get(\u0027interface_config\u0027)"},{"line_number":299,"context_line":"        if if_configs and isinstance(if_configs, list) and itfc_deleted:"},{"line_number":300,"context_line":"            self._remove_interface_config(ri, port, if_configs)"},{"line_number":301,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a98d1f4_f0fcddb9","line":298,"range":{"start_line":298,"start_character":21,"end_line":298,"end_character":41},"updated":"2016-10-03 13:47:01.000000000","message":"Can hosting_info be None at this point? If so this will result in a confusing None type has no attribute get error","commit_id":"4c8376d31f753a226b6f6fb98bde0a5fbc61180c"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"07e1aa73b6f0af4f3c84b45d0a42d438ed945e33","unresolved":false,"context_lines":[{"line_number":305,"context_line":""},{"line_number":306,"context_line":"    # \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Internal \"preparation\" functions  \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"    def cleanup_invalid_cfg(self, hd, routers):"},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"        cfg_syncer \u003d syncer.ConfigSyncer(routers, self, hd)"},{"line_number":311,"context_line":"        cfg_syncer.delete_invalid_cfg()"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a98d1f4_b0aa5583","line":308,"range":{"start_line":308,"start_character":8,"end_line":308,"end_character":27},"updated":"2016-10-03 13:47:01.000000000","message":"If this is an internal only function shouldn\u0027t it have a underscore prefix like the rest?","commit_id":"4c8376d31f753a226b6f6fb98bde0a5fbc61180c"},{"author":{"_account_id":18031,"name":"Thomas Bachman","email":"tbachman@yahoo.com","username":"bachmantech"},"change_message_id":"ddd4503ec236f7bbb238d4e5fb859c2b3f2dd9f0","unresolved":false,"context_lines":[{"line_number":305,"context_line":""},{"line_number":306,"context_line":"    # \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Internal \"preparation\" functions  \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"    def cleanup_invalid_cfg(self, hd, routers):"},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"        cfg_syncer \u003d syncer.ConfigSyncer(routers, self, hd)"},{"line_number":311,"context_line":"        cfg_syncer.delete_invalid_cfg()"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a98d1f4_626c7508","line":308,"range":{"start_line":308,"start_character":8,"end_line":308,"end_character":27},"in_reply_to":"3a98d1f4_b0aa5583","updated":"2016-10-03 18:29:16.000000000","message":"This is an API from the config syncer (i.e. defined by that API, which doesn\u0027t have an underscore). I\u0027ll move this function above the \"internal prepartion functions\" section.","commit_id":"4c8376d31f753a226b6f6fb98bde0a5fbc61180c"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"07e1aa73b6f0af4f3c84b45d0a42d438ed945e33","unresolved":false,"context_lines":[{"line_number":360,"context_line":"        # on the external interface). Search for the matching subnet for this"},{"line_number":361,"context_line":"        # FIP, and use the highest host address as a secondary address on that"},{"line_number":362,"context_line":"        # interface"},{"line_number":363,"context_line":"        subnets \u003d ri.router[\u0027gw_port\u0027].get(\u0027extra_subnets\u0027, [])"},{"line_number":364,"context_line":"        subnet \u003d self._get_matching_subnet(subnets, floating_ip)"},{"line_number":365,"context_line":"        if subnet:"},{"line_number":366,"context_line":"            secondary_ip \u003d netaddr.IPAddress(subnet.value +"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a98d1f4_50711143","line":363,"range":{"start_line":363,"start_character":21,"end_line":363,"end_character":38},"updated":"2016-10-03 13:47:01.000000000","message":"ditto but for gw_port","commit_id":"4c8376d31f753a226b6f6fb98bde0a5fbc61180c"},{"author":{"_account_id":18031,"name":"Thomas Bachman","email":"tbachman@yahoo.com","username":"bachmantech"},"change_message_id":"ddd4503ec236f7bbb238d4e5fb859c2b3f2dd9f0","unresolved":false,"context_lines":[{"line_number":360,"context_line":"        # on the external interface). Search for the matching subnet for this"},{"line_number":361,"context_line":"        # FIP, and use the highest host address as a secondary address on that"},{"line_number":362,"context_line":"        # interface"},{"line_number":363,"context_line":"        subnets \u003d ri.router[\u0027gw_port\u0027].get(\u0027extra_subnets\u0027, [])"},{"line_number":364,"context_line":"        subnet \u003d self._get_matching_subnet(subnets, floating_ip)"},{"line_number":365,"context_line":"        if subnet:"},{"line_number":366,"context_line":"            secondary_ip \u003d netaddr.IPAddress(subnet.value +"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a98d1f4_6b61b104","line":363,"range":{"start_line":363,"start_character":21,"end_line":363,"end_character":38},"in_reply_to":"3a98d1f4_50711143","updated":"2016-10-03 18:29:16.000000000","message":"By the time we get here, the floating IP must apply to an external network that is connected to a router, so this should be legitimate (i.e. no check needed)","commit_id":"4c8376d31f753a226b6f6fb98bde0a5fbc61180c"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"07e1aa73b6f0af4f3c84b45d0a42d438ed945e33","unresolved":false,"context_lines":[{"line_number":379,"context_line":"        # the floating IP, then search for any other floating IPs on that"},{"line_number":380,"context_line":"        # subnet. If there aren\u0027t any, then the secondary IP can safely"},{"line_number":381,"context_line":"        # be removed."},{"line_number":382,"context_line":"        subnets \u003d ri.router[\u0027gw_port\u0027].get(\u0027extra_subnets\u0027, [])"},{"line_number":383,"context_line":"        subnet \u003d self._get_matching_subnet(subnets, floating_ip)"},{"line_number":384,"context_line":"        if not subnet:"},{"line_number":385,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a98d1f4_90955934","line":382,"range":{"start_line":382,"start_character":21,"end_line":382,"end_character":38},"updated":"2016-10-03 13:47:01.000000000","message":"ditto","commit_id":"4c8376d31f753a226b6f6fb98bde0a5fbc61180c"},{"author":{"_account_id":18031,"name":"Thomas Bachman","email":"tbachman@yahoo.com","username":"bachmantech"},"change_message_id":"ddd4503ec236f7bbb238d4e5fb859c2b3f2dd9f0","unresolved":false,"context_lines":[{"line_number":379,"context_line":"        # the floating IP, then search for any other floating IPs on that"},{"line_number":380,"context_line":"        # subnet. If there aren\u0027t any, then the secondary IP can safely"},{"line_number":381,"context_line":"        # be removed."},{"line_number":382,"context_line":"        subnets \u003d ri.router[\u0027gw_port\u0027].get(\u0027extra_subnets\u0027, [])"},{"line_number":383,"context_line":"        subnet \u003d self._get_matching_subnet(subnets, floating_ip)"},{"line_number":384,"context_line":"        if not subnet:"},{"line_number":385,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a98d1f4_8b5c3d4c","line":382,"range":{"start_line":382,"start_character":21,"end_line":382,"end_character":38},"in_reply_to":"3a98d1f4_90955934","updated":"2016-10-03 18:29:16.000000000","message":"see above.","commit_id":"4c8376d31f753a226b6f6fb98bde0a5fbc61180c"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"07e1aa73b6f0af4f3c84b45d0a42d438ed945e33","unresolved":false,"context_lines":[{"line_number":408,"context_line":"        target_ip \u003d netaddr.IPAddress(ip)"},{"line_number":409,"context_line":"        for subnet in subnets:"},{"line_number":410,"context_line":"            net \u003d netaddr.IPNetwork(subnet[\u0027cidr\u0027])"},{"line_number":411,"context_line":"            if (target_ip.value \u0026 net.netmask.value) \u003d\u003d net.value:"},{"line_number":412,"context_line":"                return net"},{"line_number":413,"context_line":"        return None"},{"line_number":414,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a98d1f4_30dba51c","line":411,"range":{"start_line":411,"start_character":12,"end_line":411,"end_character":66},"updated":"2016-10-03 13:47:01.000000000","message":"Are you trying to see if the IP is in the network? If thats the case netaddr supports: \n\nif target_ip in net:\n   ...","commit_id":"4c8376d31f753a226b6f6fb98bde0a5fbc61180c"},{"author":{"_account_id":18031,"name":"Thomas Bachman","email":"tbachman@yahoo.com","username":"bachmantech"},"change_message_id":"ddd4503ec236f7bbb238d4e5fb859c2b3f2dd9f0","unresolved":false,"context_lines":[{"line_number":408,"context_line":"        target_ip \u003d netaddr.IPAddress(ip)"},{"line_number":409,"context_line":"        for subnet in subnets:"},{"line_number":410,"context_line":"            net \u003d netaddr.IPNetwork(subnet[\u0027cidr\u0027])"},{"line_number":411,"context_line":"            if (target_ip.value \u0026 net.netmask.value) \u003d\u003d net.value:"},{"line_number":412,"context_line":"                return net"},{"line_number":413,"context_line":"        return None"},{"line_number":414,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a98d1f4_0e53db17","line":411,"range":{"start_line":411,"start_character":12,"end_line":411,"end_character":66},"in_reply_to":"3a98d1f4_30dba51c","updated":"2016-10-03 18:29:16.000000000","message":"Good optimization -- thanks for the tip! Will fix.","commit_id":"4c8376d31f753a226b6f6fb98bde0a5fbc61180c"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"07e1aa73b6f0af4f3c84b45d0a42d438ed945e33","unresolved":false,"context_lines":[{"line_number":471,"context_line":"        return prefix"},{"line_number":472,"context_line":""},{"line_number":473,"context_line":"    def _get_snat_prefix(self, ri, ext_port):"},{"line_number":474,"context_line":"        subnets \u003d ext_port[\u0027hosting_info\u0027].get(\u0027snat_subnets\u0027, [])"},{"line_number":475,"context_line":"        if subnets:"},{"line_number":476,"context_line":"            # TODO(tbachman) Currently we\u0027ll only have a single"},{"line_number":477,"context_line":"            # subnet, but this may change in the future"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a98d1f4_30772503","line":474,"range":{"start_line":474,"start_character":18,"end_line":474,"end_character":42},"updated":"2016-10-03 13:47:01.000000000","message":"ditto","commit_id":"4c8376d31f753a226b6f6fb98bde0a5fbc61180c"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"07e1aa73b6f0af4f3c84b45d0a42d438ed945e33","unresolved":false,"context_lines":[{"line_number":497,"context_line":""},{"line_number":498,"context_line":"    def _set_snat_pools_from_hosting_info(self, ri, gw_port, is_delete):"},{"line_number":499,"context_line":"        # TODO(tbachma ): unique naming for more than one pool"},{"line_number":500,"context_line":"        for subnet in gw_port[\u0027hosting_info\u0027].get(\u0027snat_subnets\u0027, []):"},{"line_number":501,"context_line":"            if is_delete:"},{"line_number":502,"context_line":"                self._remove_rid_from_snat_list(ri, gw_port, subnet)"},{"line_number":503,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a98d1f4_9066394f","line":500,"range":{"start_line":500,"start_character":22,"end_line":500,"end_character":45},"updated":"2016-10-03 13:47:01.000000000","message":"ditto","commit_id":"4c8376d31f753a226b6f6fb98bde0a5fbc61180c"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"07e1aa73b6f0af4f3c84b45d0a42d438ed945e33","unresolved":false,"context_lines":[{"line_number":514,"context_line":"        # Global conifguration parameters are passed using the user"},{"line_number":515,"context_line":"        # router. Check to see if there is any global config, and if it\u0027s"},{"line_number":516,"context_line":"        # not already configured, add it in"},{"line_number":517,"context_line":"        g_configs \u003d ext_gw_port[\u0027hosting_info\u0027].get(\u0027global_config\u0027)"},{"line_number":518,"context_line":"        if g_configs and isinstance(g_configs, list):"},{"line_number":519,"context_line":"            self._set_global_config(ri, ext_gw_port, g_configs)"},{"line_number":520,"context_line":"        if ext_gw_port[\u0027hosting_info\u0027].get(\u0027snat_subnets\u0027):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a98d1f4_30e565a7","line":517,"range":{"start_line":517,"start_character":19,"end_line":517,"end_character":47},"updated":"2016-10-03 13:47:01.000000000","message":"ditto","commit_id":"4c8376d31f753a226b6f6fb98bde0a5fbc61180c"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"ee5b1d7fc240ad9684d9523482b24ea240f1ea88","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2015 Cisco Systems, Inc.  All rights reserved."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a98d1f4_52165d4c","line":1,"range":{"start_line":1,"start_character":12,"end_line":1,"end_character":16},"updated":"2016-10-03 21:59:02.000000000","message":"date","commit_id":"8aa0bcb24ab3a755d307decc7ccf6c3e1667126b"},{"author":{"_account_id":18031,"name":"Thomas Bachman","email":"tbachman@yahoo.com","username":"bachmantech"},"change_message_id":"1470409f2188987c66031d976f5a0d95c6289940","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2015 Cisco Systems, Inc.  All rights reserved."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a95cdbc_fd571ac8","line":1,"range":{"start_line":1,"start_character":12,"end_line":1,"end_character":16},"in_reply_to":"3a98d1f4_52165d4c","updated":"2016-10-04 17:12:36.000000000","message":"Will fix.","commit_id":"8aa0bcb24ab3a755d307decc7ccf6c3e1667126b"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"ee5b1d7fc240ad9684d9523482b24ea240f1ea88","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from oslo_config import cfg"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from neutron.common import constants"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from networking_cisco.plugins.cisco.cfg_agent import cfg_exceptions as cfg_exc"},{"line_number":24,"context_line":"from networking_cisco.plugins.cisco.cfg_agent.device_drivers.asr1k import ("}],"source_content_type":"text/x-python","patch_set":3,"id":"3a98d1f4_7238b9d3","line":21,"updated":"2016-10-03 21:59:02.000000000","message":"move to L19, before oslo import","commit_id":"8aa0bcb24ab3a755d307decc7ccf6c3e1667126b"},{"author":{"_account_id":18031,"name":"Thomas Bachman","email":"tbachman@yahoo.com","username":"bachmantech"},"change_message_id":"1470409f2188987c66031d976f5a0d95c6289940","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from oslo_config import cfg"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from neutron.common import constants"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from networking_cisco.plugins.cisco.cfg_agent import cfg_exceptions as cfg_exc"},{"line_number":24,"context_line":"from networking_cisco.plugins.cisco.cfg_agent.device_drivers.asr1k import ("}],"source_content_type":"text/x-python","patch_set":3,"id":"1a95cdbc_3da342a0","line":21,"in_reply_to":"3a98d1f4_7238b9d3","updated":"2016-10-04 17:12:36.000000000","message":"Will fix.","commit_id":"8aa0bcb24ab3a755d307decc7ccf6c3e1667126b"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"ee5b1d7fc240ad9684d9523482b24ea240f1ea88","unresolved":false,"context_lines":[{"line_number":246,"context_line":""},{"line_number":247,"context_line":"    def _get_interface_ip_from_hosting_port(self, ri, port, is_external\u003dFalse):"},{"line_number":248,"context_line":"        \"\"\""},{"line_number":249,"context_line":"        Extract the underlying subinterface IP for a port"},{"line_number":250,"context_line":"        e.g. 1.103.2.1"},{"line_number":251,"context_line":"        \"\"\""},{"line_number":252,"context_line":"        if is_external:"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a98d1f4_d22eed41","line":249,"updated":"2016-10-03 21:59:02.000000000","message":"nit: PEP8/257 one line doc string (on same line as quotes), with period, blank line, and then rest of docstring. Not sure the example provides any value here. If not, can put entire docstring on one line (quotes and all).","commit_id":"8aa0bcb24ab3a755d307decc7ccf6c3e1667126b"},{"author":{"_account_id":18031,"name":"Thomas Bachman","email":"tbachman@yahoo.com","username":"bachmantech"},"change_message_id":"1470409f2188987c66031d976f5a0d95c6289940","unresolved":false,"context_lines":[{"line_number":246,"context_line":""},{"line_number":247,"context_line":"    def _get_interface_ip_from_hosting_port(self, ri, port, is_external\u003dFalse):"},{"line_number":248,"context_line":"        \"\"\""},{"line_number":249,"context_line":"        Extract the underlying subinterface IP for a port"},{"line_number":250,"context_line":"        e.g. 1.103.2.1"},{"line_number":251,"context_line":"        \"\"\""},{"line_number":252,"context_line":"        if is_external:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a95cdbc_bda032a7","line":249,"in_reply_to":"3a98d1f4_d22eed41","updated":"2016-10-04 17:12:36.000000000","message":"Will fix.","commit_id":"8aa0bcb24ab3a755d307decc7ccf6c3e1667126b"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"ee5b1d7fc240ad9684d9523482b24ea240f1ea88","unresolved":false,"context_lines":[{"line_number":262,"context_line":""},{"line_number":263,"context_line":"    def _get_interface_gateway_ip_from_hosting_port(self, ri, port):"},{"line_number":264,"context_line":"        \"\"\""},{"line_number":265,"context_line":"        Extract the next hop IP for a subinterface"},{"line_number":266,"context_line":"        e.g. 1.103.2.254"},{"line_number":267,"context_line":"        \"\"\""},{"line_number":268,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a98d1f4_9219c524","line":265,"updated":"2016-10-03 21:59:02.000000000","message":"ditto. Here and others.","commit_id":"8aa0bcb24ab3a755d307decc7ccf6c3e1667126b"},{"author":{"_account_id":18031,"name":"Thomas Bachman","email":"tbachman@yahoo.com","username":"bachmantech"},"change_message_id":"1470409f2188987c66031d976f5a0d95c6289940","unresolved":false,"context_lines":[{"line_number":262,"context_line":""},{"line_number":263,"context_line":"    def _get_interface_gateway_ip_from_hosting_port(self, ri, port):"},{"line_number":264,"context_line":"        \"\"\""},{"line_number":265,"context_line":"        Extract the next hop IP for a subinterface"},{"line_number":266,"context_line":"        e.g. 1.103.2.254"},{"line_number":267,"context_line":"        \"\"\""},{"line_number":268,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a95cdbc_fdaaba84","line":265,"in_reply_to":"3a98d1f4_9219c524","updated":"2016-10-04 17:12:36.000000000","message":"Will fix.","commit_id":"8aa0bcb24ab3a755d307decc7ccf6c3e1667126b"}],"networking_cisco/tests/unit/cisco/cfg_agent/test_aci_asr1k_cfg_syncer.py":[{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"ee5b1d7fc240ad9684d9523482b24ea240f1ea88","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2014 Cisco Systems, Inc.  All rights reserved."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a98d1f4_726b591e","line":1,"range":{"start_line":1,"start_character":12,"end_line":1,"end_character":16},"updated":"2016-10-03 21:59:02.000000000","message":"date","commit_id":"8aa0bcb24ab3a755d307decc7ccf6c3e1667126b"},{"author":{"_account_id":18031,"name":"Thomas Bachman","email":"tbachman@yahoo.com","username":"bachmantech"},"change_message_id":"1470409f2188987c66031d976f5a0d95c6289940","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2014 Cisco Systems, Inc.  All rights reserved."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a95cdbc_bd7832fa","line":1,"range":{"start_line":1,"start_character":12,"end_line":1,"end_character":16},"in_reply_to":"3a98d1f4_726b591e","updated":"2016-10-04 17:12:36.000000000","message":"Will fix.","commit_id":"8aa0bcb24ab3a755d307decc7ccf6c3e1667126b"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"ee5b1d7fc240ad9684d9523482b24ea240f1ea88","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        helper function for reading the dummy neutron router db"},{"line_number":66,"context_line":"        \"\"\""},{"line_number":67,"context_line":"        with open(base.ROOTDIR +"},{"line_number":68,"context_line":"                  \u0027/unit/cisco/etc/cfg_syncer/neutron_router_db.json\u0027,"},{"line_number":69,"context_line":"                  \u0027r\u0027) as fp:"},{"line_number":70,"context_line":"            self.router_db_info \u003d jsonutils.load(fp)"},{"line_number":71,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3a98d1f4_129e9506","line":68,"updated":"2016-10-03 21:59:02.000000000","message":"Is this a large config file? if not, can a string be loaded, instead of using a file?","commit_id":"8aa0bcb24ab3a755d307decc7ccf6c3e1667126b"},{"author":{"_account_id":18031,"name":"Thomas Bachman","email":"tbachman@yahoo.com","username":"bachmantech"},"change_message_id":"1470409f2188987c66031d976f5a0d95c6289940","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        helper function for reading the dummy neutron router db"},{"line_number":66,"context_line":"        \"\"\""},{"line_number":67,"context_line":"        with open(base.ROOTDIR +"},{"line_number":68,"context_line":"                  \u0027/unit/cisco/etc/cfg_syncer/neutron_router_db.json\u0027,"},{"line_number":69,"context_line":"                  \u0027r\u0027) as fp:"},{"line_number":70,"context_line":"            self.router_db_info \u003d jsonutils.load(fp)"},{"line_number":71,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a95cdbc_18577403","line":68,"in_reply_to":"3a98d1f4_129e9506","updated":"2016-10-04 17:12:36.000000000","message":"This is legacy -- the old code used to read this file. Will remove, as this is no longer used.","commit_id":"8aa0bcb24ab3a755d307decc7ccf6c3e1667126b"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"ee5b1d7fc240ad9684d9523482b24ea240f1ea88","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        self.config_syncer \u003d aci_asr1k_cfg_syncer.ConfigSyncer("},{"line_number":76,"context_line":"            self.router_db_info, self.driver, self.hosting_device_info)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    def tearDown(self):"},{"line_number":79,"context_line":"        super(AciASR1kCfgSyncer, self).tearDown()"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def test_delete_invalid_cfg_empty_routers_list(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a98d1f4_5261fd03","line":78,"updated":"2016-10-03 21:59:02.000000000","message":"not needed, if not doing any additional actions.","commit_id":"8aa0bcb24ab3a755d307decc7ccf6c3e1667126b"},{"author":{"_account_id":18031,"name":"Thomas Bachman","email":"tbachman@yahoo.com","username":"bachmantech"},"change_message_id":"1470409f2188987c66031d976f5a0d95c6289940","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        self.config_syncer \u003d aci_asr1k_cfg_syncer.ConfigSyncer("},{"line_number":76,"context_line":"            self.router_db_info, self.driver, self.hosting_device_info)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    def tearDown(self):"},{"line_number":79,"context_line":"        super(AciASR1kCfgSyncer, self).tearDown()"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def test_delete_invalid_cfg_empty_routers_list(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a95cdbc_d8734cb3","line":78,"in_reply_to":"3a98d1f4_5261fd03","updated":"2016-10-04 17:12:36.000000000","message":"Will remove.","commit_id":"8aa0bcb24ab3a755d307decc7ccf6c3e1667126b"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"ee5b1d7fc240ad9684d9523482b24ea240f1ea88","unresolved":false,"context_lines":[{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        invalid_cfg \u003d self.config_syncer.delete_invalid_cfg()"},{"line_number":93,"context_line":"        self.assertEqual(8, len(invalid_cfg))"},{"line_number":94,"context_line":"        for i in range(len(INVALID_CFG_LIST_1)):"},{"line_number":95,"context_line":"            if isinstance(invalid_cfg[i], LineItem):"},{"line_number":96,"context_line":"                check_string \u003d invalid_cfg[i].line"},{"line_number":97,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a98d1f4_05565105","line":94,"updated":"2016-10-03 21:59:02.000000000","message":"you can get rid of all the indexing and use zip and do:\n    for actual_cfg, expected_cfg \u003d zip(invalid_cfg, INVALID_CFG_LIST):","commit_id":"8aa0bcb24ab3a755d307decc7ccf6c3e1667126b"},{"author":{"_account_id":18031,"name":"Thomas Bachman","email":"tbachman@yahoo.com","username":"bachmantech"},"change_message_id":"1470409f2188987c66031d976f5a0d95c6289940","unresolved":false,"context_lines":[{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        invalid_cfg \u003d self.config_syncer.delete_invalid_cfg()"},{"line_number":93,"context_line":"        self.assertEqual(8, len(invalid_cfg))"},{"line_number":94,"context_line":"        for i in range(len(INVALID_CFG_LIST_1)):"},{"line_number":95,"context_line":"            if isinstance(invalid_cfg[i], LineItem):"},{"line_number":96,"context_line":"                check_string \u003d invalid_cfg[i].line"},{"line_number":97,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a95cdbc_38b0b0f4","line":94,"in_reply_to":"3a98d1f4_05565105","updated":"2016-10-04 17:12:36.000000000","message":"Good idea -- will change (and thanks!).","commit_id":"8aa0bcb24ab3a755d307decc7ccf6c3e1667126b"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"47540544fb61d77d81bc6522bc7f2a8890370e88","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from oslo_config import cfg"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import mock"},{"line_number":18,"context_line":"from networking_cisco.tests.unit.cisco.cfg_agent import ("},{"line_number":19,"context_line":"    test_asr1k_cfg_syncer as test_sync)"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a95cdbc_4bf2dfd3","line":17,"updated":"2016-10-05 13:30:49.000000000","message":"mock import should be before oslo.","commit_id":"7c7d43e8738bd642b1798fa153442c1d80e32e64"},{"author":{"_account_id":18031,"name":"Thomas Bachman","email":"tbachman@yahoo.com","username":"bachmantech"},"change_message_id":"2c24cda8a4f7631d2404e950be8fe903ee0e90de","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from oslo_config import cfg"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import mock"},{"line_number":18,"context_line":"from networking_cisco.tests.unit.cisco.cfg_agent import ("},{"line_number":19,"context_line":"    test_asr1k_cfg_syncer as test_sync)"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a95cdbc_0e38e0d2","line":17,"in_reply_to":"1a95cdbc_4bf2dfd3","updated":"2016-10-05 16:27:45.000000000","message":"Will fix.","commit_id":"7c7d43e8738bd642b1798fa153442c1d80e32e64"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"47540544fb61d77d81bc6522bc7f2a8890370e88","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from oslo_config import cfg"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import mock"},{"line_number":18,"context_line":"from networking_cisco.tests.unit.cisco.cfg_agent import ("},{"line_number":19,"context_line":"    test_asr1k_cfg_syncer as test_sync)"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a95cdbc_abd8c354","line":18,"updated":"2016-10-05 13:30:49.000000000","message":"this should be grouped with the others and put on L25.","commit_id":"7c7d43e8738bd642b1798fa153442c1d80e32e64"},{"author":{"_account_id":18031,"name":"Thomas Bachman","email":"tbachman@yahoo.com","username":"bachmantech"},"change_message_id":"2c24cda8a4f7631d2404e950be8fe903ee0e90de","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from oslo_config import cfg"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import mock"},{"line_number":18,"context_line":"from networking_cisco.tests.unit.cisco.cfg_agent import ("},{"line_number":19,"context_line":"    test_asr1k_cfg_syncer as test_sync)"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a95cdbc_4e32e8f2","line":18,"in_reply_to":"1a95cdbc_abd8c354","updated":"2016-10-05 16:27:45.000000000","message":"Will fix.","commit_id":"7c7d43e8738bd642b1798fa153442c1d80e32e64"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"47540544fb61d77d81bc6522bc7f2a8890370e88","unresolved":false,"context_lines":[{"line_number":82,"context_line":"                check_string \u003d actual_cfg.line"},{"line_number":83,"context_line":"            else:"},{"line_number":84,"context_line":"                check_string \u003d actual_cfg"},{"line_number":85,"context_line":"            self.assertEqual(check_string, expected_cfg)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    def test_delete_invalid_cfg_with_multi_region_and_empty_routers_list(self):"},{"line_number":88,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a95cdbc_8bba27e0","line":85,"updated":"2016-10-05 13:30:49.000000000","message":"Just put expected first, for consistency.","commit_id":"7c7d43e8738bd642b1798fa153442c1d80e32e64"},{"author":{"_account_id":18031,"name":"Thomas Bachman","email":"tbachman@yahoo.com","username":"bachmantech"},"change_message_id":"2c24cda8a4f7631d2404e950be8fe903ee0e90de","unresolved":false,"context_lines":[{"line_number":82,"context_line":"                check_string \u003d actual_cfg.line"},{"line_number":83,"context_line":"            else:"},{"line_number":84,"context_line":"                check_string \u003d actual_cfg"},{"line_number":85,"context_line":"            self.assertEqual(check_string, expected_cfg)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    def test_delete_invalid_cfg_with_multi_region_and_empty_routers_list(self):"},{"line_number":88,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a95cdbc_eeaf34e1","line":85,"in_reply_to":"1a95cdbc_8bba27e0","updated":"2016-10-05 16:27:45.000000000","message":"Will fix.","commit_id":"7c7d43e8738bd642b1798fa153442c1d80e32e64"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"47540544fb61d77d81bc6522bc7f2a8890370e88","unresolved":false,"context_lines":[{"line_number":108,"context_line":"                check_string \u003d actual_cfg.line"},{"line_number":109,"context_line":"            else:"},{"line_number":110,"context_line":"                check_string \u003d actual_cfg"},{"line_number":111,"context_line":"            self.assertEqual(check_string, expected_cfg)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a95cdbc_ebb9ebea","line":111,"updated":"2016-10-05 13:30:49.000000000","message":"ditto.","commit_id":"7c7d43e8738bd642b1798fa153442c1d80e32e64"},{"author":{"_account_id":18031,"name":"Thomas Bachman","email":"tbachman@yahoo.com","username":"bachmantech"},"change_message_id":"2c24cda8a4f7631d2404e950be8fe903ee0e90de","unresolved":false,"context_lines":[{"line_number":108,"context_line":"                check_string \u003d actual_cfg.line"},{"line_number":109,"context_line":"            else:"},{"line_number":110,"context_line":"                check_string \u003d actual_cfg"},{"line_number":111,"context_line":"            self.assertEqual(check_string, expected_cfg)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a95cdbc_8e879060","line":111,"in_reply_to":"1a95cdbc_ebb9ebea","updated":"2016-10-05 16:27:45.000000000","message":"Will fix.","commit_id":"7c7d43e8738bd642b1798fa153442c1d80e32e64"}],"networking_cisco/tests/unit/cisco/cfg_agent/test_aciasr1k_routing_driver.py":[{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"ee5b1d7fc240ad9684d9523482b24ea240f1ea88","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2014 Cisco Systems, Inc.  All rights reserved."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a98d1f4_856181d5","line":1,"range":{"start_line":1,"start_character":12,"end_line":1,"end_character":16},"updated":"2016-10-03 21:59:02.000000000","message":"date","commit_id":"8aa0bcb24ab3a755d307decc7ccf6c3e1667126b"},{"author":{"_account_id":18031,"name":"Thomas Bachman","email":"tbachman@yahoo.com","username":"bachmantech"},"change_message_id":"1470409f2188987c66031d976f5a0d95c6289940","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2014 Cisco Systems, Inc.  All rights reserved."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a95cdbc_3ddb42ef","line":1,"range":{"start_line":1,"start_character":12,"end_line":1,"end_character":16},"in_reply_to":"3a98d1f4_856181d5","updated":"2016-10-04 17:12:36.000000000","message":"Will fix.","commit_id":"8aa0bcb24ab3a755d307decc7ccf6c3e1667126b"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"ee5b1d7fc240ad9684d9523482b24ea240f1ea88","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    routing_svc_helper)"},{"line_number":35,"context_line":"from networking_cisco.tests.unit.cisco.cfg_agent import ("},{"line_number":36,"context_line":"    test_asr1k_routing_driver as asr1ktest)"},{"line_number":37,"context_line":"from neutron.common import constants as l3_constants"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"sys.modules[\u0027ncclient\u0027] \u003d mock.MagicMock()"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3a98d1f4_057bb17b","line":37,"updated":"2016-10-03 21:59:02.000000000","message":"move up neutron import to L20","commit_id":"8aa0bcb24ab3a755d307decc7ccf6c3e1667126b"},{"author":{"_account_id":18031,"name":"Thomas Bachman","email":"tbachman@yahoo.com","username":"bachmantech"},"change_message_id":"1470409f2188987c66031d976f5a0d95c6289940","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    routing_svc_helper)"},{"line_number":35,"context_line":"from networking_cisco.tests.unit.cisco.cfg_agent import ("},{"line_number":36,"context_line":"    test_asr1k_routing_driver as asr1ktest)"},{"line_number":37,"context_line":"from neutron.common import constants as l3_constants"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"sys.modules[\u0027ncclient\u0027] \u003d mock.MagicMock()"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a95cdbc_7de5caa6","line":37,"in_reply_to":"3a98d1f4_057bb17b","updated":"2016-10-04 17:12:36.000000000","message":"WIll fix.","commit_id":"8aa0bcb24ab3a755d307decc7ccf6c3e1667126b"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"ee5b1d7fc240ad9684d9523482b24ea240f1ea88","unresolved":false,"context_lines":[{"line_number":216,"context_line":"    def test_internal_network_added_with_multi_region(self):"},{"line_number":217,"context_line":"        cfg.CONF.set_override(\u0027enable_multi_region\u0027, True, \u0027multi_region\u0027)"},{"line_number":218,"context_line":"        is_multi_region_enabled \u003d cfg.CONF.multi_region.enable_multi_region"},{"line_number":219,"context_line":"        self.assertEqual(True, is_multi_region_enabled)"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"        region_id \u003d cfg.CONF.multi_region.region_id"},{"line_number":222,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3a98d1f4_e5bfa5cd","line":219,"updated":"2016-10-03 21:59:02.000000000","message":"assertTrue()","commit_id":"8aa0bcb24ab3a755d307decc7ccf6c3e1667126b"},{"author":{"_account_id":18031,"name":"Thomas Bachman","email":"tbachman@yahoo.com","username":"bachmantech"},"change_message_id":"1470409f2188987c66031d976f5a0d95c6289940","unresolved":false,"context_lines":[{"line_number":216,"context_line":"    def test_internal_network_added_with_multi_region(self):"},{"line_number":217,"context_line":"        cfg.CONF.set_override(\u0027enable_multi_region\u0027, True, \u0027multi_region\u0027)"},{"line_number":218,"context_line":"        is_multi_region_enabled \u003d cfg.CONF.multi_region.enable_multi_region"},{"line_number":219,"context_line":"        self.assertEqual(True, is_multi_region_enabled)"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"        region_id \u003d cfg.CONF.multi_region.region_id"},{"line_number":222,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a95cdbc_ddf25e6f","line":219,"in_reply_to":"3a98d1f4_e5bfa5cd","updated":"2016-10-04 17:12:36.000000000","message":"Will fix.","commit_id":"8aa0bcb24ab3a755d307decc7ccf6c3e1667126b"}]}
