)]}'
{"neutron/plugins/cisco/l3/common/constants.py":[{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"1c29fed34c1f5b9fe062c4dde2b86fa845f8d313","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Copyright 2013 Cisco Systems, Inc.  All rights reserved."},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2Bs2w%3D","line":1,"updated":"2014-02-19 19:27:30.000000000","message":"Pull VIM lines from all files (new requirement).\nUpdate copyright on all files.","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":162,"name":"Bob Melander","email":"bob.melander@gmail.com","username":"bob-melander"},"change_message_id":"5f272f8274871758afa460dc127db3844d183118","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Copyright 2013 Cisco Systems, Inc.  All rights reserved."},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVX%2F%2FukY%3D","line":1,"in_reply_to":"AAAAUX%2F%2Bs2w%3D","updated":"2014-02-28 18:47:27.000000000","message":"Done","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"}],"neutron/plugins/cisco/l3/common/l3_rpc_joint_agent_api.py":[{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"82927ca388203232c334ab7c906516f58e35586d","unresolved":false,"context_lines":[{"line_number":29,"context_line":"              cl3_constants.CFG_AGENT: \" cfg \"}"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class L3JointAgentNotifyAPI(proxy.RpcProxy):"},{"line_number":33,"context_line":"    \"\"\"API for plugin to notify Cisco cfg agent and L3 agent.\"\"\""},{"line_number":34,"context_line":"    BASE_RPC_API_VERSION \u003d \u00271.0\u0027"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2B7GY%3D","line":32,"updated":"2014-02-18 07:11:59.000000000","message":"Is the assumption that communication between neturon server and agent are one-way?\ni.e. no call or no callback?","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":162,"name":"Bob Melander","email":"bob.melander@gmail.com","username":"bob-melander"},"change_message_id":"5f272f8274871758afa460dc127db3844d183118","unresolved":false,"context_lines":[{"line_number":29,"context_line":"              cl3_constants.CFG_AGENT: \" cfg \"}"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class L3JointAgentNotifyAPI(proxy.RpcProxy):"},{"line_number":33,"context_line":"    \"\"\"API for plugin to notify Cisco cfg agent and L3 agent.\"\"\""},{"line_number":34,"context_line":"    BASE_RPC_API_VERSION \u003d \u00271.0\u0027"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVX%2F%2FuhQ%3D","line":32,"in_reply_to":"AAAAUX%2F%2B7GY%3D","updated":"2014-02-28 18:47:27.000000000","message":"No it is both ways but only notifications included in this patch.","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"1c29fed34c1f5b9fe062c4dde2b86fa845f8d313","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        \"\"\"Notify changed routers to the Cisco configuration agents"},{"line_number":53,"context_line":"        of their hosting devices or the routers\u0027 hosting l3 agents."},{"line_number":54,"context_line":"        \"\"\""},{"line_number":55,"context_line":"        adminContext \u003d context.is_admin and context or context.elevated()"},{"line_number":56,"context_line":"        plugin \u003d manager.NeutronManager.get_service_plugins().get("},{"line_number":57,"context_line":"            service_constants.L3_ROUTER_NAT)"},{"line_number":58,"context_line":"        for router in routers:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2Bs0s%3D","line":55,"updated":"2014-02-19 19:27:30.000000000","message":"Is the ordering right here? Shouldn\u0027t it be checking if there is a context and then if admin or elevated? Same on L93. Maybe I\u0027m missing something.\n\ncontext and (context.is_admin or context.elevate)?","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"1c29fed34c1f5b9fe062c4dde2b86fa845f8d313","unresolved":false,"context_lines":[{"line_number":83,"context_line":"                          version\u003d\u00271.1\u0027)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def _notification(self, context, method, routers, operation, data):"},{"line_number":86,"context_line":"        \"\"\"Notify all the l3 agents and Cisco cfg agents that are"},{"line_number":87,"context_line":"        hosting or configuring the routers, respectively."},{"line_number":88,"context_line":"        \"\"\""},{"line_number":89,"context_line":"        plugin \u003d manager.NeutronManager.get_service_plugins().get("}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2Bszw%3D","line":86,"updated":"2014-02-19 19:27:30.000000000","message":"PEP257 docstring summary line one line line w/period and any continuation on separate lines, separated by a blank line.\n\nCheck other docstrings in this file (and others).","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"1c29fed34c1f5b9fe062c4dde2b86fa845f8d313","unresolved":false,"context_lines":[{"line_number":122,"context_line":"                                {\u0027admin_state_up\u0027: admin_state_up},"},{"line_number":123,"context_line":"                                host)"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    def router_deleted(self, context, router):"},{"line_number":126,"context_line":"        if router[\u0027router_type\u0027] \u003d\u003d cl3_constants.NAMESPACE_ROUTER_TYPE:"},{"line_number":127,"context_line":"            self._notification_fanout(context, \u0027router_deleted\u0027, router[\u0027id\u0027])"},{"line_number":128,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2Bswk%3D","line":125,"updated":"2014-02-19 19:27:30.000000000","message":"Could use docstrings for all the API functions in this file.","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"1762615a152b94151cb342fe22d37e7a6bc62daf","unresolved":false,"context_lines":[{"line_number":117,"context_line":"                                {\u0027admin_state_up\u0027: admin_state_up},"},{"line_number":118,"context_line":"                                host)"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    def router_deleted(self, context, router):"},{"line_number":121,"context_line":"        if router[\u0027router_type\u0027] \u003d\u003d cl3_constants.NAMESPACE_ROUTER_TYPE:"},{"line_number":122,"context_line":"            self._notification_fanout(context, \u0027router_deleted\u0027, router[\u0027id\u0027])"},{"line_number":123,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAVn%2F%2F%2Fos%3D","line":120,"updated":"2014-03-02 20:40:24.000000000","message":"Docstrings for all top level API functions?","commit_id":"54eb0877e18fb9ad35f9f704adef4660f491cd06"},{"author":{"_account_id":162,"name":"Bob Melander","email":"bob.melander@gmail.com","username":"bob-melander"},"change_message_id":"8e9824da041c566cc5d36ac46c3a11de0ad08a21","unresolved":false,"context_lines":[{"line_number":117,"context_line":"                                {\u0027admin_state_up\u0027: admin_state_up},"},{"line_number":118,"context_line":"                                host)"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    def router_deleted(self, context, router):"},{"line_number":121,"context_line":"        if router[\u0027router_type\u0027] \u003d\u003d cl3_constants.NAMESPACE_ROUTER_TYPE:"},{"line_number":122,"context_line":"            self._notification_fanout(context, \u0027router_deleted\u0027, router[\u0027id\u0027])"},{"line_number":123,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAVn%2F%2FkYk%3D","line":120,"in_reply_to":"AAAAVn%2F%2F%2Fos%3D","updated":"2014-03-05 11:10:11.000000000","message":"Done","commit_id":"54eb0877e18fb9ad35f9f704adef4660f491cd06"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"83a283276b87695d3185f52c9c4a5d83e7a9d95b","unresolved":false,"context_lines":[{"line_number":67,"context_line":"                    admin_state_up\u003dTrue,"},{"line_number":68,"context_line":"                    active\u003dTrue)"},{"line_number":69,"context_line":"            else:"},{"line_number":70,"context_line":"                agents \u003d []"},{"line_number":71,"context_line":"            for agent in agents:"},{"line_number":72,"context_line":"                LOG.debug(_(\u0027Notify l3%(type)sagent at %(topic)s.%(host)s the \u0027"},{"line_number":73,"context_line":"                            \u0027message %(method)s\u0027),"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAWH%2F%2FqHI%3D","line":70,"updated":"2014-03-17 10:57:24.000000000","message":"just continue?","commit_id":"6adeae069677ff066d6bacd752bee92ce53be491"}],"neutron/plugins/cisco/l3/common/n1kv_constants.py":[{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"1c29fed34c1f5b9fe062c4dde2b86fa845f8d313","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"# These prefix defines will go away when Nova allows spinning up"},{"line_number":22,"context_line":"# VMs with vifs on networks without subnet(s)."},{"line_number":23,"context_line":"SUB_PREFX \u003d \u0027172.16.1.0/24\u0027"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"# T1 port/network is for VXLAN"},{"line_number":26,"context_line":"T1_PORT_NAME \u003d \u0027t1_p:\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2BswM%3D","line":23,"updated":"2014-02-19 19:27:30.000000000","message":"Spell out vs abbreviate. Here and L34-35","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":162,"name":"Bob Melander","email":"bob.melander@gmail.com","username":"bob-melander"},"change_message_id":"5f272f8274871758afa460dc127db3844d183118","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"# These prefix defines will go away when Nova allows spinning up"},{"line_number":22,"context_line":"# VMs with vifs on networks without subnet(s)."},{"line_number":23,"context_line":"SUB_PREFX \u003d \u0027172.16.1.0/24\u0027"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"# T1 port/network is for VXLAN"},{"line_number":26,"context_line":"T1_PORT_NAME \u003d \u0027t1_p:\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVX%2F%2Fujw%3D","line":23,"in_reply_to":"AAAAUX%2F%2BswM%3D","updated":"2014-02-28 18:47:27.000000000","message":"Done","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"83a283276b87695d3185f52c9c4a5d83e7a9d95b","unresolved":false,"context_lines":[{"line_number":21,"context_line":"# VMs with vifs on networks without subnet(s)."},{"line_number":22,"context_line":"SUBNET_PREFIX \u003d \u0027172.16.1.0/24\u0027"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"# T1 port/network is for VXLAN"},{"line_number":25,"context_line":"T1_PORT_NAME \u003d \u0027t1_p:\u0027"},{"line_number":26,"context_line":"# T2 port/network is for VLAN"},{"line_number":27,"context_line":"T2_PORT_NAME \u003d \u0027t2_p:\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAWH%2F%2FqDM%3D","line":24,"updated":"2014-03-17 10:57:24.000000000","message":"Just a nit of either putting the comment lines together, or grouping the T1 entries together and the T2 entries together.","commit_id":"6adeae069677ff066d6bacd752bee92ce53be491"}],"neutron/plugins/cisco/l3/common/service_vm_lib.py":[{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"1c29fed34c1f5b9fe062c4dde2b86fa845f8d313","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    def get_service_vm_status(self, vm_id):"},{"line_number":57,"context_line":"        try:"},{"line_number":58,"context_line":"            status \u003d self._nclient.servers.get(vm_id).status"},{"line_number":59,"context_line":"        except (nova_exc.UnsupportedVersion, nova_exc.CommandError,"},{"line_number":60,"context_line":"                nova_exc.AuthorizationFailure, nova_exc.NoUniqueMatch,"},{"line_number":61,"context_line":"                nova_exc.AuthSystemNotFound, nova_exc.NoTokenLookupException,"},{"line_number":62,"context_line":"                nova_exc.EndpointNotFound, nova_exc.AmbiguousEndpoints,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2BssQ%3D","line":59,"updated":"2014-02-19 19:27:30.000000000","message":"Is it useful to look for each of the specific exceptions, or just a base Nova exception class? Wondering about benefit, versus risk of missing an exception due to changes in Nova.\n\nSame for other cases below.","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":162,"name":"Bob Melander","email":"bob.melander@gmail.com","username":"bob-melander"},"change_message_id":"5f272f8274871758afa460dc127db3844d183118","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    def get_service_vm_status(self, vm_id):"},{"line_number":57,"context_line":"        try:"},{"line_number":58,"context_line":"            status \u003d self._nclient.servers.get(vm_id).status"},{"line_number":59,"context_line":"        except (nova_exc.UnsupportedVersion, nova_exc.CommandError,"},{"line_number":60,"context_line":"                nova_exc.AuthorizationFailure, nova_exc.NoUniqueMatch,"},{"line_number":61,"context_line":"                nova_exc.AuthSystemNotFound, nova_exc.NoTokenLookupException,"},{"line_number":62,"context_line":"                nova_exc.EndpointNotFound, nova_exc.AmbiguousEndpoints,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVX%2F%2Fuiw%3D","line":59,"in_reply_to":"AAAAUX%2F%2BssQ%3D","updated":"2014-02-28 18:47:27.000000000","message":"There is no common base other than Exception for the first ones.","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"1c29fed34c1f5b9fe062c4dde2b86fa845f8d313","unresolved":false,"context_lines":[{"line_number":63,"context_line":"                nova_exc.ConnectionRefused, nova_exc.ClientException) as e:"},{"line_number":64,"context_line":"            LOG.error(_(\u0027Failed to get status of service VM instance %(id)s, \u0027"},{"line_number":65,"context_line":"                        \u0027due to %(err)s\u0027), {\u0027id\u0027: vm_id, \u0027err\u0027: e})"},{"line_number":66,"context_line":"            status \u003d constants.SVM_ERROR"},{"line_number":67,"context_line":"        return status"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def dispatch_service_vm(self, context, instance_name, vm_image, vm_flavor,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2BsuE%3D","line":66,"updated":"2014-02-19 19:27:30.000000000","message":"can eliminate temp variable and just return error code.","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":162,"name":"Bob Melander","email":"bob.melander@gmail.com","username":"bob-melander"},"change_message_id":"5f272f8274871758afa460dc127db3844d183118","unresolved":false,"context_lines":[{"line_number":63,"context_line":"                nova_exc.ConnectionRefused, nova_exc.ClientException) as e:"},{"line_number":64,"context_line":"            LOG.error(_(\u0027Failed to get status of service VM instance %(id)s, \u0027"},{"line_number":65,"context_line":"                        \u0027due to %(err)s\u0027), {\u0027id\u0027: vm_id, \u0027err\u0027: e})"},{"line_number":66,"context_line":"            status \u003d constants.SVM_ERROR"},{"line_number":67,"context_line":"        return status"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def dispatch_service_vm(self, context, instance_name, vm_image, vm_flavor,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVX%2F%2Fuhk%3D","line":66,"in_reply_to":"AAAAUX%2F%2BsuE%3D","updated":"2014-02-28 18:47:27.000000000","message":"Left this one as is.","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"1c29fed34c1f5b9fe062c4dde2b86fa845f8d313","unresolved":false,"context_lines":[{"line_number":100,"context_line":"            LOG.error(_(\u0027Failed to create service VM instance: %s\u0027), e)"},{"line_number":101,"context_line":"            hosting_device_drv.delete_configdrive_files(context, mgmt_port)"},{"line_number":102,"context_line":"            return None"},{"line_number":103,"context_line":"        res \u003d {\u0027id\u0027: server.id}"},{"line_number":104,"context_line":"        return res"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    def delete_service_vm(self, context, vm_id, hosting_device_drv,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2Bstk%3D","line":103,"updated":"2014-02-19 19:27:30.000000000","message":"Can elim temp variable.","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":162,"name":"Bob Melander","email":"bob.melander@gmail.com","username":"bob-melander"},"change_message_id":"5f272f8274871758afa460dc127db3844d183118","unresolved":false,"context_lines":[{"line_number":100,"context_line":"            LOG.error(_(\u0027Failed to create service VM instance: %s\u0027), e)"},{"line_number":101,"context_line":"            hosting_device_drv.delete_configdrive_files(context, mgmt_port)"},{"line_number":102,"context_line":"            return None"},{"line_number":103,"context_line":"        res \u003d {\u0027id\u0027: server.id}"},{"line_number":104,"context_line":"        return res"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    def delete_service_vm(self, context, vm_id, hosting_device_drv,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVX%2F%2Fuhw%3D","line":103,"in_reply_to":"AAAAUX%2F%2Bstk%3D","updated":"2014-02-28 18:47:27.000000000","message":"Done","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"83a283276b87695d3185f52c9c4a5d83e7a9d95b","unresolved":false,"context_lines":[{"line_number":78,"context_line":"            flavor \u003d n_utils.find_resource(self._nclient.flavors, vm_flavor)"},{"line_number":79,"context_line":"        except nova_exc.CommandError as e:"},{"line_number":80,"context_line":"            LOG.error(_(\u0027Failure: %s\u0027), e)"},{"line_number":81,"context_line":"            return None"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        try:"},{"line_number":84,"context_line":"            # Assumption for now is that this does not need to be"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAWH%2F%2FqCU%3D","line":81,"updated":"2014-03-17 10:57:24.000000000","message":"Nit: None is not needed here and L91, L107","commit_id":"6adeae069677ff066d6bacd752bee92ce53be491"}],"neutron/plugins/cisco/l3/db/hosting_device_manager_db.py":[{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"1c29fed34c1f5b9fe062c4dde2b86fa845f8d313","unresolved":false,"context_lines":[{"line_number":48,"context_line":"    cfg.StrOpt(\u0027l3_admin_tenant\u0027, default\u003d\u0027L3AdminTenant\u0027,"},{"line_number":49,"context_line":"               help\u003d_(\"Name of the L3 admin tenant\")),"},{"line_number":50,"context_line":"    cfg.StrOpt(\u0027management_network\u0027, default\u003d\u0027osn_mgmt_nw\u0027,"},{"line_number":51,"context_line":"               help\u003d_(\"Name of management network for CSR VM configuration\")),"},{"line_number":52,"context_line":"    cfg.StrOpt(\u0027default_security_group\u0027, default\u003d\u0027mgmt_sec_grp\u0027,"},{"line_number":53,"context_line":"               help\u003d_(\"Default security group applied on mgmt port\")),"},{"line_number":54,"context_line":"    cfg.IntOpt(\u0027csr1kv_flavor\u0027, default\u003d621,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2Bsqg%3D","line":51,"updated":"2014-02-19 19:27:30.000000000","message":"Should the defaults for any of these be shown in help message (especially boot time)?","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":162,"name":"Bob Melander","email":"bob.melander@gmail.com","username":"bob-melander"},"change_message_id":"5f272f8274871758afa460dc127db3844d183118","unresolved":false,"context_lines":[{"line_number":48,"context_line":"    cfg.StrOpt(\u0027l3_admin_tenant\u0027, default\u003d\u0027L3AdminTenant\u0027,"},{"line_number":49,"context_line":"               help\u003d_(\"Name of the L3 admin tenant\")),"},{"line_number":50,"context_line":"    cfg.StrOpt(\u0027management_network\u0027, default\u003d\u0027osn_mgmt_nw\u0027,"},{"line_number":51,"context_line":"               help\u003d_(\"Name of management network for CSR VM configuration\")),"},{"line_number":52,"context_line":"    cfg.StrOpt(\u0027default_security_group\u0027, default\u003d\u0027mgmt_sec_grp\u0027,"},{"line_number":53,"context_line":"               help\u003d_(\"Default security group applied on mgmt port\")),"},{"line_number":54,"context_line":"    cfg.IntOpt(\u0027csr1kv_flavor\u0027, default\u003d621,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVX%2F%2Fujs%3D","line":51,"in_reply_to":"AAAAUX%2F%2Bsqg%3D","updated":"2014-02-28 18:47:27.000000000","message":"Done","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"1c29fed34c1f5b9fe062c4dde2b86fa845f8d313","unresolved":false,"context_lines":[{"line_number":59,"context_line":"               help\u003d_(\"The maximum number of logical routers a CSR1kv VM \""},{"line_number":60,"context_line":"                      \"instance should host\")),"},{"line_number":61,"context_line":"    cfg.IntOpt(\u0027csr1kv_booting_time\u0027, default\u003d420,"},{"line_number":62,"context_line":"               help\u003d_(\"The time in seconds it typically takes to \""},{"line_number":63,"context_line":"                      \"boot a CSR1kv VM\")),"},{"line_number":64,"context_line":"    cfg.IntOpt(\u0027standby_pool_size\u0027, default\u003d1,"},{"line_number":65,"context_line":"               help\u003d_(\"The number of running service VMs to maintain \""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2Bsq0%3D","line":62,"updated":"2014-02-19 19:27:30.000000000","message":"Is this the max time until considers CSR dead? If so, should we indicate that?","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":162,"name":"Bob Melander","email":"bob.melander@gmail.com","username":"bob-melander"},"change_message_id":"5f272f8274871758afa460dc127db3844d183118","unresolved":false,"context_lines":[{"line_number":59,"context_line":"               help\u003d_(\"The maximum number of logical routers a CSR1kv VM \""},{"line_number":60,"context_line":"                      \"instance should host\")),"},{"line_number":61,"context_line":"    cfg.IntOpt(\u0027csr1kv_booting_time\u0027, default\u003d420,"},{"line_number":62,"context_line":"               help\u003d_(\"The time in seconds it typically takes to \""},{"line_number":63,"context_line":"                      \"boot a CSR1kv VM\")),"},{"line_number":64,"context_line":"    cfg.IntOpt(\u0027standby_pool_size\u0027, default\u003d1,"},{"line_number":65,"context_line":"               help\u003d_(\"The number of running service VMs to maintain \""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVX%2F%2Fujc%3D","line":62,"in_reply_to":"AAAAUX%2F%2Bsq0%3D","updated":"2014-02-28 18:47:27.000000000","message":"No it is booting time.","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"82927ca388203232c334ab7c906516f58e35586d","unresolved":false,"context_lines":[{"line_number":75,"context_line":"    The caller should make sure that HostingDeviceManager is a singleton."},{"line_number":76,"context_line":"    \"\"\""},{"line_number":77,"context_line":"    # The one and only instance"},{"line_number":78,"context_line":"    _instance \u003d None"},{"line_number":79,"context_line":"    # The all-mighty tenant owning all hosting devices"},{"line_number":80,"context_line":"    _l3_tenant_uuid \u003d None"},{"line_number":81,"context_line":"    # The management network for hosting devices"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2B7NM%3D","line":78,"updated":"2014-02-18 07:11:59.000000000","message":"Does this mean only single VM is allowed?\nIs this by design? or Will it be hopefully enhanced in future?","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":162,"name":"Bob Melander","email":"bob.melander@gmail.com","username":"bob-melander"},"change_message_id":"5f272f8274871758afa460dc127db3844d183118","unresolved":false,"context_lines":[{"line_number":75,"context_line":"    The caller should make sure that HostingDeviceManager is a singleton."},{"line_number":76,"context_line":"    \"\"\""},{"line_number":77,"context_line":"    # The one and only instance"},{"line_number":78,"context_line":"    _instance \u003d None"},{"line_number":79,"context_line":"    # The all-mighty tenant owning all hosting devices"},{"line_number":80,"context_line":"    _l3_tenant_uuid \u003d None"},{"line_number":81,"context_line":"    # The management network for hosting devices"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVX%2F%2FujU%3D","line":78,"in_reply_to":"AAAAUX%2F%2B7NM%3D","updated":"2014-02-28 18:47:27.000000000","message":"No, this is a resource manager. There can be arbitrary number of VMs.","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"1c29fed34c1f5b9fe062c4dde2b86fa845f8d313","unresolved":false,"context_lines":[{"line_number":165,"context_line":"                                \u0027Please assign one.\u0027))"},{"line_number":166,"context_line":"                    return"},{"line_number":167,"context_line":"                elif num_subnets \u003e 1:"},{"line_number":168,"context_line":"                    LOG.info(_(\u0027The management network has %s subnets. The \u0027"},{"line_number":169,"context_line":"                               \u0027first one will be used.\u0027), num_subnets)"},{"line_number":170,"context_line":"                cls._mgmt_nw_uuid \u003d net[0].get(\u0027id\u0027)"},{"line_number":171,"context_line":"            elif len(net) \u003e 1:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2BsmQ%3D","line":168,"updated":"2014-02-19 19:27:30.000000000","message":"%s -\u003e %d","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":162,"name":"Bob Melander","email":"bob.melander@gmail.com","username":"bob-melander"},"change_message_id":"5f272f8274871758afa460dc127db3844d183118","unresolved":false,"context_lines":[{"line_number":165,"context_line":"                                \u0027Please assign one.\u0027))"},{"line_number":166,"context_line":"                    return"},{"line_number":167,"context_line":"                elif num_subnets \u003e 1:"},{"line_number":168,"context_line":"                    LOG.info(_(\u0027The management network has %s subnets. The \u0027"},{"line_number":169,"context_line":"                               \u0027first one will be used.\u0027), num_subnets)"},{"line_number":170,"context_line":"                cls._mgmt_nw_uuid \u003d net[0].get(\u0027id\u0027)"},{"line_number":171,"context_line":"            elif len(net) \u003e 1:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVX%2F%2FujM%3D","line":168,"in_reply_to":"AAAAUX%2F%2BsmQ%3D","updated":"2014-02-28 18:47:27.000000000","message":"Done","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"1c29fed34c1f5b9fe062c4dde2b86fa845f8d313","unresolved":false,"context_lines":[{"line_number":206,"context_line":"        return cls._mgmt_sec_grp_id"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"    def get_hosting_device_driver(self, context, host_type):"},{"line_number":209,"context_line":"        \"\"\"Returns the driver for hosting device with specified"},{"line_number":210,"context_line":"           hosting_device_id or hosting devices with specified host_type."},{"line_number":211,"context_line":"        \"\"\""},{"line_number":212,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2BslE%3D","line":209,"updated":"2014-02-19 19:27:30.000000000","message":"PEP8 on docstring summary line here and following...","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":162,"name":"Bob Melander","email":"bob.melander@gmail.com","username":"bob-melander"},"change_message_id":"5f272f8274871758afa460dc127db3844d183118","unresolved":false,"context_lines":[{"line_number":206,"context_line":"        return cls._mgmt_sec_grp_id"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"    def get_hosting_device_driver(self, context, host_type):"},{"line_number":209,"context_line":"        \"\"\"Returns the driver for hosting device with specified"},{"line_number":210,"context_line":"           hosting_device_id or hosting devices with specified host_type."},{"line_number":211,"context_line":"        \"\"\""},{"line_number":212,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVX%2F%2FujI%3D","line":209,"in_reply_to":"AAAAUX%2F%2BslE%3D","updated":"2014-02-28 18:47:27.000000000","message":"Done","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"1c29fed34c1f5b9fe062c4dde2b86fa845f8d313","unresolved":false,"context_lines":[{"line_number":242,"context_line":"                                \"host type %(host_type)s\"),"},{"line_number":243,"context_line":"                              {\u0027driver\u0027: template.get(\u0027plugging_driver\u0027),"},{"line_number":244,"context_line":"                               \u0027host_type\u0027: host_type})"},{"line_number":245,"context_line":"                raise"},{"line_number":246,"context_line":"            return self._plugging_drivers[host_type]"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"    def get_hosting_device_capacity(self, context, host_type):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2BskI%3D","line":245,"updated":"2014-02-19 19:27:30.000000000","message":"Use excutils save_and_reraise_exception in this block.","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":162,"name":"Bob Melander","email":"bob.melander@gmail.com","username":"bob-melander"},"change_message_id":"5f272f8274871758afa460dc127db3844d183118","unresolved":false,"context_lines":[{"line_number":242,"context_line":"                                \"host type %(host_type)s\"),"},{"line_number":243,"context_line":"                              {\u0027driver\u0027: template.get(\u0027plugging_driver\u0027),"},{"line_number":244,"context_line":"                               \u0027host_type\u0027: host_type})"},{"line_number":245,"context_line":"                raise"},{"line_number":246,"context_line":"            return self._plugging_drivers[host_type]"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"    def get_hosting_device_capacity(self, context, host_type):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVX%2F%2FujE%3D","line":245,"in_reply_to":"AAAAUX%2F%2BskI%3D","updated":"2014-02-28 18:47:27.000000000","message":"Done","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"1c29fed34c1f5b9fe062c4dde2b86fa845f8d313","unresolved":false,"context_lines":[{"line_number":551,"context_line":"            return hosting_devices"},{"line_number":552,"context_line":"        # These resources are owned by the L3AdminTenant"},{"line_number":553,"context_line":"        birth_date \u003d timeutils.utcnow()"},{"line_number":554,"context_line":"        for i in xrange(0, num):"},{"line_number":555,"context_line":"            res \u003d plugging_drv.create_hosting_device_resources("},{"line_number":556,"context_line":"                context, self.l3_tenant_id(), self.mgmt_nw_id(),"},{"line_number":557,"context_line":"                self.mgmt_sec_grp_id(), capacity)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2Bsg0%3D","line":554,"updated":"2014-02-19 19:27:30.000000000","message":"xrange(num)","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":162,"name":"Bob Melander","email":"bob.melander@gmail.com","username":"bob-melander"},"change_message_id":"5f272f8274871758afa460dc127db3844d183118","unresolved":false,"context_lines":[{"line_number":551,"context_line":"            return hosting_devices"},{"line_number":552,"context_line":"        # These resources are owned by the L3AdminTenant"},{"line_number":553,"context_line":"        birth_date \u003d timeutils.utcnow()"},{"line_number":554,"context_line":"        for i in xrange(0, num):"},{"line_number":555,"context_line":"            res \u003d plugging_drv.create_hosting_device_resources("},{"line_number":556,"context_line":"                context, self.l3_tenant_id(), self.mgmt_nw_id(),"},{"line_number":557,"context_line":"                self.mgmt_sec_grp_id(), capacity)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVX%2F%2FujA%3D","line":554,"in_reply_to":"AAAAUX%2F%2Bsg0%3D","updated":"2014-02-28 18:47:27.000000000","message":"Done","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"1c29fed34c1f5b9fe062c4dde2b86fa845f8d313","unresolved":false,"context_lines":[{"line_number":572,"context_line":"                        admin_state_up\u003dTrue,"},{"line_number":573,"context_line":"                        host_type\u003dtemplate[\u0027host_type\u0027],"},{"line_number":574,"context_line":"                        host_category\u003dtemplate[\u0027host_category\u0027],"},{"line_number":575,"context_line":"#                        ip_address\u003d\u002710.0.100.5\u0027,"},{"line_number":576,"context_line":"                        ip_address\u003dmgmt_port[\u0027fixed_ips\u0027][0][\u0027ip_address\u0027],"},{"line_number":577,"context_line":"                        transport_port\u003dtemplate[\u0027transport_port\u0027],"},{"line_number":578,"context_line":"                        cfg_agent_id\u003dNone,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2Bsgs%3D","line":575,"updated":"2014-02-19 19:27:30.000000000","message":"dead code removal","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":162,"name":"Bob Melander","email":"bob.melander@gmail.com","username":"bob-melander"},"change_message_id":"5f272f8274871758afa460dc127db3844d183118","unresolved":false,"context_lines":[{"line_number":572,"context_line":"                        admin_state_up\u003dTrue,"},{"line_number":573,"context_line":"                        host_type\u003dtemplate[\u0027host_type\u0027],"},{"line_number":574,"context_line":"                        host_category\u003dtemplate[\u0027host_category\u0027],"},{"line_number":575,"context_line":"#                        ip_address\u003d\u002710.0.100.5\u0027,"},{"line_number":576,"context_line":"                        ip_address\u003dmgmt_port[\u0027fixed_ips\u0027][0][\u0027ip_address\u0027],"},{"line_number":577,"context_line":"                        transport_port\u003dtemplate[\u0027transport_port\u0027],"},{"line_number":578,"context_line":"                        cfg_agent_id\u003dNone,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVX%2F%2Fui8%3D","line":575,"in_reply_to":"AAAAUX%2F%2Bsgs%3D","updated":"2014-02-28 18:47:27.000000000","message":"Done","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"1c29fed34c1f5b9fe062c4dde2b86fa845f8d313","unresolved":false,"context_lines":[{"line_number":620,"context_line":"        hd_candidates \u003d query.all()"},{"line_number":621,"context_line":"        num_possible_to_delete \u003d min(len(hd_candidates), num)"},{"line_number":622,"context_line":"        with context.session.begin(subtransactions\u003dTrue):"},{"line_number":623,"context_line":"            for i in xrange(0, num_possible_to_delete):"},{"line_number":624,"context_line":"                res \u003d plugging_drv.get_hosting_device_resources("},{"line_number":625,"context_line":"                    context, hd_candidates[i][\u0027id\u0027], self.l3_tenant_id(),"},{"line_number":626,"context_line":"                    self.mgmt_nw_id())"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2BsgI%3D","line":623,"updated":"2014-02-19 19:27:30.000000000","message":"xrange(num_possible_to_delete)","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":162,"name":"Bob Melander","email":"bob.melander@gmail.com","username":"bob-melander"},"change_message_id":"5f272f8274871758afa460dc127db3844d183118","unresolved":false,"context_lines":[{"line_number":620,"context_line":"        hd_candidates \u003d query.all()"},{"line_number":621,"context_line":"        num_possible_to_delete \u003d min(len(hd_candidates), num)"},{"line_number":622,"context_line":"        with context.session.begin(subtransactions\u003dTrue):"},{"line_number":623,"context_line":"            for i in xrange(0, num_possible_to_delete):"},{"line_number":624,"context_line":"                res \u003d plugging_drv.get_hosting_device_resources("},{"line_number":625,"context_line":"                    context, hd_candidates[i][\u0027id\u0027], self.l3_tenant_id(),"},{"line_number":626,"context_line":"                    self.mgmt_nw_id())"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVX%2F%2Fui4%3D","line":623,"in_reply_to":"AAAAUX%2F%2BsgI%3D","updated":"2014-02-28 18:47:27.000000000","message":"Done","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"1762615a152b94151cb342fe22d37e7a6bc62daf","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    cfg.StrOpt(\u0027l3_admin_tenant\u0027, default\u003d\u0027L3AdminTenant\u0027,"},{"line_number":48,"context_line":"               help\u003d_(\"Name of the L3 admin tenant\")),"},{"line_number":49,"context_line":"    cfg.StrOpt(\u0027management_network\u0027, default\u003d\u0027osn_mgmt_nw\u0027,"},{"line_number":50,"context_line":"               help\u003d_(\"Name of management network for CSR VM configuration.\""},{"line_number":51,"context_line":"                      \"Default value is osn_mgmt_nw\")),"},{"line_number":52,"context_line":"    cfg.StrOpt(\u0027default_security_group\u0027, default\u003d\u0027mgmt_sec_grp\u0027,"},{"line_number":53,"context_line":"               help\u003d_(\"Default security group applied on management port.\""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAVn%2F%2F%2FoU%3D","line":50,"updated":"2014-03-02 20:40:24.000000000","message":"Space at end of string. Here and L56 (with period), L60, and L70","commit_id":"54eb0877e18fb9ad35f9f704adef4660f491cd06"},{"author":{"_account_id":162,"name":"Bob Melander","email":"bob.melander@gmail.com","username":"bob-melander"},"change_message_id":"8e9824da041c566cc5d36ac46c3a11de0ad08a21","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    cfg.StrOpt(\u0027l3_admin_tenant\u0027, default\u003d\u0027L3AdminTenant\u0027,"},{"line_number":48,"context_line":"               help\u003d_(\"Name of the L3 admin tenant\")),"},{"line_number":49,"context_line":"    cfg.StrOpt(\u0027management_network\u0027, default\u003d\u0027osn_mgmt_nw\u0027,"},{"line_number":50,"context_line":"               help\u003d_(\"Name of management network for CSR VM configuration.\""},{"line_number":51,"context_line":"                      \"Default value is osn_mgmt_nw\")),"},{"line_number":52,"context_line":"    cfg.StrOpt(\u0027default_security_group\u0027, default\u003d\u0027mgmt_sec_grp\u0027,"},{"line_number":53,"context_line":"               help\u003d_(\"Default security group applied on management port.\""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAVn%2F%2FkdU%3D","line":50,"in_reply_to":"AAAAVn%2F%2F%2FoU%3D","updated":"2014-03-05 11:10:11.000000000","message":"Done","commit_id":"54eb0877e18fb9ad35f9f704adef4660f491cd06"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"83a283276b87695d3185f52c9c4a5d83e7a9d95b","unresolved":false,"context_lines":[{"line_number":157,"context_line":"        if cls._mgmt_nw_uuid is None:"},{"line_number":158,"context_line":"            tenant_id \u003d cls.l3_tenant_id()"},{"line_number":159,"context_line":"            if not tenant_id:"},{"line_number":160,"context_line":"                return None"},{"line_number":161,"context_line":"            net \u003d manager.NeutronManager.get_plugin().get_networks("},{"line_number":162,"context_line":"                neutron_context.get_admin_context(),"},{"line_number":163,"context_line":"                {\u0027tenant_id\u0027: [tenant_id],"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAWH%2F%2FhwY%3D","line":160,"updated":"2014-03-17 10:57:24.000000000","message":"More cases in this file where \"return None\" can be replaced with \"return\"","commit_id":"6adeae069677ff066d6bacd752bee92ce53be491"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"83a283276b87695d3185f52c9c4a5d83e7a9d95b","unresolved":false,"context_lines":[{"line_number":191,"context_line":"        if cls._mgmt_sec_grp_id is None:"},{"line_number":192,"context_line":"            # Get the id for the _mgmt_security_group_id"},{"line_number":193,"context_line":"            tenant_id \u003d cls.l3_tenant_id()"},{"line_number":194,"context_line":"            res \u003d manager.NeutronManager.get_plugin().get_security_groups("},{"line_number":195,"context_line":"                neutron_context.get_admin_context(),"},{"line_number":196,"context_line":"                {\u0027tenant_id\u0027: [tenant_id],"},{"line_number":197,"context_line":"                 \u0027name\u0027: [cfg.CONF.default_security_group]},"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAWH%2F%2Fhuo%3D","line":194,"updated":"2014-03-17 10:57:24.000000000","message":"Should res be a more descriptive name? security_groups? sec_grps?","commit_id":"6adeae069677ff066d6bacd752bee92ce53be491"}],"neutron/plugins/cisco/l3/db/l3_models.py":[{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"82927ca388203232c334ab7c906516f58e35586d","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class HostingDeviceTemplate(model_base.BASEV2, models_v2.HasId,"},{"line_number":29,"context_line":"                            models_v2.HasTenant):"},{"line_number":30,"context_line":"    \"\"\"Represents a template for hosting devices.\"\"\""},{"line_number":31,"context_line":"    # user-friendly name given to hosting devices created"},{"line_number":32,"context_line":"    # using this template"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2B7K0%3D","line":29,"updated":"2014-02-18 07:11:59.000000000","message":"Can \u0027hosting\u0027 be dropped. i.e. s/hostingdevice/device/\nI\u0027m asking because some reviewers of my servicevm patch asked it.\n\nI don\u0027t have strong opinion, but the reviewer has.","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":162,"name":"Bob Melander","email":"bob.melander@gmail.com","username":"bob-melander"},"change_message_id":"5f272f8274871758afa460dc127db3844d183118","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class HostingDeviceTemplate(model_base.BASEV2, models_v2.HasId,"},{"line_number":29,"context_line":"                            models_v2.HasTenant):"},{"line_number":30,"context_line":"    \"\"\"Represents a template for hosting devices.\"\"\""},{"line_number":31,"context_line":"    # user-friendly name given to hosting devices created"},{"line_number":32,"context_line":"    # using this template"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVX%2F%2FueM%3D","line":29,"in_reply_to":"AAAAUX%2F%2B7K0%3D","updated":"2014-02-28 18:47:27.000000000","message":"I\u0027d rather keep this for now and do name change if/when I adopt the service vm framework you\u0027re writing.","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"82927ca388203232c334ab7c906516f58e35586d","unresolved":false,"context_lines":[{"line_number":127,"context_line":"    router_type \u003d sa.Column(sa.String(255), nullable\u003dFalse)"},{"line_number":128,"context_line":"    # If \u0027auto_schedule\u0027 is True then router is automatically scheduled"},{"line_number":129,"context_line":"    # if it lacks a hosting device or its hosting device fails."},{"line_number":130,"context_line":"    auto_schedule \u003d sa.Column(sa.Boolean, default\u003dTrue, nullable\u003dFalse)"},{"line_number":131,"context_line":"    share_hosting_device \u003d sa.Column(sa.Boolean, default\u003dTrue, nullable\u003dFalse)"},{"line_number":132,"context_line":"    hosting_device_id \u003d sa.Column(sa.String(36),"},{"line_number":133,"context_line":"                                  sa.ForeignKey(\u0027hostingdevices.id\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2B7JA%3D","line":130,"updated":"2014-02-18 07:11:59.000000000","message":"Isn\u0027t the actual schedule included in this patch?","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":162,"name":"Bob Melander","email":"bob.melander@gmail.com","username":"bob-melander"},"change_message_id":"5f272f8274871758afa460dc127db3844d183118","unresolved":false,"context_lines":[{"line_number":127,"context_line":"    router_type \u003d sa.Column(sa.String(255), nullable\u003dFalse)"},{"line_number":128,"context_line":"    # If \u0027auto_schedule\u0027 is True then router is automatically scheduled"},{"line_number":129,"context_line":"    # if it lacks a hosting device or its hosting device fails."},{"line_number":130,"context_line":"    auto_schedule \u003d sa.Column(sa.Boolean, default\u003dTrue, nullable\u003dFalse)"},{"line_number":131,"context_line":"    share_hosting_device \u003d sa.Column(sa.Boolean, default\u003dTrue, nullable\u003dFalse)"},{"line_number":132,"context_line":"    hosting_device_id \u003d sa.Column(sa.String(36),"},{"line_number":133,"context_line":"                                  sa.ForeignKey(\u0027hostingdevices.id\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVX%2F%2Fuhg%3D","line":130,"in_reply_to":"AAAAUX%2F%2B7JA%3D","updated":"2014-02-28 18:47:27.000000000","message":"No. Will be separate one.","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"}],"neutron/plugins/cisco/l3/db/l3_router_appliance_db.py":[{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"82927ca388203232c334ab7c906516f58e35586d","unresolved":false,"context_lines":[{"line_number":72,"context_line":"    message \u003d _(\"Could not get binding information for router %(router_id)s.\")"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"class L3_router_appliance_db_mixin(extraroute_db.ExtraRoute_db_mixin):"},{"line_number":76,"context_line":"    \"\"\"Mixin class to support router appliances to implement Neutron\u0027s"},{"line_number":77,"context_line":"       L3 routing functionality"},{"line_number":78,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2B7IM%3D","line":75,"updated":"2014-02-18 07:11:59.000000000","message":"nitpick: PleaseUseCamelCase according to pep8","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":162,"name":"Bob Melander","email":"bob.melander@gmail.com","username":"bob-melander"},"change_message_id":"5f272f8274871758afa460dc127db3844d183118","unresolved":false,"context_lines":[{"line_number":72,"context_line":"    message \u003d _(\"Could not get binding information for router %(router_id)s.\")"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"class L3_router_appliance_db_mixin(extraroute_db.ExtraRoute_db_mixin):"},{"line_number":76,"context_line":"    \"\"\"Mixin class to support router appliances to implement Neutron\u0027s"},{"line_number":77,"context_line":"       L3 routing functionality"},{"line_number":78,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVX%2F%2FuhI%3D","line":75,"in_reply_to":"AAAAUX%2F%2B7IM%3D","updated":"2014-02-28 18:47:27.000000000","message":"Done","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"1c29fed34c1f5b9fe062c4dde2b86fa845f8d313","unresolved":false,"context_lines":[{"line_number":73,"context_line":""},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"class L3_router_appliance_db_mixin(extraroute_db.ExtraRoute_db_mixin):"},{"line_number":76,"context_line":"    \"\"\"Mixin class to support router appliances to implement Neutron\u0027s"},{"line_number":77,"context_line":"       L3 routing functionality"},{"line_number":78,"context_line":"    \"\"\""},{"line_number":79,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2BsXw%3D","line":76,"updated":"2014-02-19 19:27:30.000000000","message":"PEP8 nits on docstrings in this file...","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":162,"name":"Bob Melander","email":"bob.melander@gmail.com","username":"bob-melander"},"change_message_id":"5f272f8274871758afa460dc127db3844d183118","unresolved":false,"context_lines":[{"line_number":73,"context_line":""},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"class L3_router_appliance_db_mixin(extraroute_db.ExtraRoute_db_mixin):"},{"line_number":76,"context_line":"    \"\"\"Mixin class to support router appliances to implement Neutron\u0027s"},{"line_number":77,"context_line":"       L3 routing functionality"},{"line_number":78,"context_line":"    \"\"\""},{"line_number":79,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVX%2F%2FuhE%3D","line":76,"in_reply_to":"AAAAUX%2F%2BsXw%3D","updated":"2014-02-28 18:47:27.000000000","message":"Done","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"1c29fed34c1f5b9fe062c4dde2b86fa845f8d313","unresolved":false,"context_lines":[{"line_number":109,"context_line":"                router_type\u003dr.get(\u0027router_type\u0027,"},{"line_number":110,"context_line":"                                  cfg.CONF.default_router_type),"},{"line_number":111,"context_line":"                auto_schedule\u003dFalse,"},{"line_number":112,"context_line":"#                auto_schedule\u003dr.get(\u0027auto_schedule\u0027,"},{"line_number":113,"context_line":"#                                    cfg.CONF.router_auto_schedule),"},{"line_number":114,"context_line":"                share_hosting_device\u003dr.get(\u0027share_host\u0027, True),"},{"line_number":115,"context_line":"                hosting_device_id\u003dNone)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2Bsc0%3D","line":112,"updated":"2014-02-19 19:27:30.000000000","message":"dead code removal","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":162,"name":"Bob Melander","email":"bob.melander@gmail.com","username":"bob-melander"},"change_message_id":"5f272f8274871758afa460dc127db3844d183118","unresolved":false,"context_lines":[{"line_number":109,"context_line":"                router_type\u003dr.get(\u0027router_type\u0027,"},{"line_number":110,"context_line":"                                  cfg.CONF.default_router_type),"},{"line_number":111,"context_line":"                auto_schedule\u003dFalse,"},{"line_number":112,"context_line":"#                auto_schedule\u003dr.get(\u0027auto_schedule\u0027,"},{"line_number":113,"context_line":"#                                    cfg.CONF.router_auto_schedule),"},{"line_number":114,"context_line":"                share_hosting_device\u003dr.get(\u0027share_host\u0027, True),"},{"line_number":115,"context_line":"                hosting_device_id\u003dNone)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVX%2F%2FuhA%3D","line":112,"in_reply_to":"AAAAUX%2F%2Bsc0%3D","updated":"2014-02-28 18:47:27.000000000","message":"Done","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"1c29fed34c1f5b9fe062c4dde2b86fa845f8d313","unresolved":false,"context_lines":[{"line_number":415,"context_line":"            # This should not happen either"},{"line_number":416,"context_line":"            LOG.error(_(\u0027DB inconsistency: Multiple type and hosting info\u0027"},{"line_number":417,"context_line":"                        \u0027 associated with router %s\u0027), id)"},{"line_number":418,"context_line":"            raise RouterBindingInfoError(router_id\u003did)"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"    def _get_hosting_device_bindings(self, context, id, load_routers\u003dFalse,"},{"line_number":421,"context_line":"                                     load_hosting_device\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2BsZc%3D","line":418,"updated":"2014-02-19 19:27:30.000000000","message":"Will loose traceback to original exception location when re-raise. Can use excutils here too.","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":162,"name":"Bob Melander","email":"bob.melander@gmail.com","username":"bob-melander"},"change_message_id":"5f272f8274871758afa460dc127db3844d183118","unresolved":false,"context_lines":[{"line_number":415,"context_line":"            # This should not happen either"},{"line_number":416,"context_line":"            LOG.error(_(\u0027DB inconsistency: Multiple type and hosting info\u0027"},{"line_number":417,"context_line":"                        \u0027 associated with router %s\u0027), id)"},{"line_number":418,"context_line":"            raise RouterBindingInfoError(router_id\u003did)"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"    def _get_hosting_device_bindings(self, context, id, load_routers\u003dFalse,"},{"line_number":421,"context_line":"                                     load_hosting_device\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVX%2F%2Fug8%3D","line":418,"in_reply_to":"AAAAUX%2F%2BsZc%3D","updated":"2014-02-28 18:47:27.000000000","message":"Done","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"1c29fed34c1f5b9fe062c4dde2b86fa845f8d313","unresolved":false,"context_lines":[{"line_number":436,"context_line":"                binding_info \u003d self._get_router_binding_info(context,"},{"line_number":437,"context_line":"                                                             router[\u0027id\u0027])"},{"line_number":438,"context_line":"        except RouterBindingInfoError:"},{"line_number":439,"context_line":"            return"},{"line_number":440,"context_line":"        router[\u0027router_type\u0027] \u003d binding_info[\u0027router_type\u0027]"},{"line_number":441,"context_line":"        router[\u0027share_host\u0027] \u003d binding_info[\u0027share_hosting_device\u0027]"},{"line_number":442,"context_line":"        if binding_info.router_type \u003d\u003d cl3_const.NAMESPACE_ROUTER_TYPE:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2BsY8%3D","line":439,"updated":"2014-02-19 19:27:30.000000000","message":"no logging needed?","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":162,"name":"Bob Melander","email":"bob.melander@gmail.com","username":"bob-melander"},"change_message_id":"5f272f8274871758afa460dc127db3844d183118","unresolved":false,"context_lines":[{"line_number":436,"context_line":"                binding_info \u003d self._get_router_binding_info(context,"},{"line_number":437,"context_line":"                                                             router[\u0027id\u0027])"},{"line_number":438,"context_line":"        except RouterBindingInfoError:"},{"line_number":439,"context_line":"            return"},{"line_number":440,"context_line":"        router[\u0027router_type\u0027] \u003d binding_info[\u0027router_type\u0027]"},{"line_number":441,"context_line":"        router[\u0027share_host\u0027] \u003d binding_info[\u0027share_hosting_device\u0027]"},{"line_number":442,"context_line":"        if binding_info.router_type \u003d\u003d cl3_const.NAMESPACE_ROUTER_TYPE:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVX%2F%2Fug4%3D","line":439,"in_reply_to":"AAAAUX%2F%2BsY8%3D","updated":"2014-02-28 18:47:27.000000000","message":"Done","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"1c29fed34c1f5b9fe062c4dde2b86fa845f8d313","unresolved":false,"context_lines":[{"line_number":517,"context_line":"        alloc \u003d plugging_driver.allocate_hosting_port("},{"line_number":518,"context_line":"            context, router_id, port_db, network_type, hosting_device_id)"},{"line_number":519,"context_line":"        if alloc is None:"},{"line_number":520,"context_line":"            return"},{"line_number":521,"context_line":"        with context.session.begin(subtransactions\u003dTrue):"},{"line_number":522,"context_line":"            h_info \u003d HostedHostingPortBinding("},{"line_number":523,"context_line":"                router_id\u003drouter_id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2BsXc%3D","line":520,"updated":"2014-02-19 19:27:30.000000000","message":"Do we want to log that allocation failed?","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":162,"name":"Bob Melander","email":"bob.melander@gmail.com","username":"bob-melander"},"change_message_id":"5f272f8274871758afa460dc127db3844d183118","unresolved":false,"context_lines":[{"line_number":517,"context_line":"        alloc \u003d plugging_driver.allocate_hosting_port("},{"line_number":518,"context_line":"            context, router_id, port_db, network_type, hosting_device_id)"},{"line_number":519,"context_line":"        if alloc is None:"},{"line_number":520,"context_line":"            return"},{"line_number":521,"context_line":"        with context.session.begin(subtransactions\u003dTrue):"},{"line_number":522,"context_line":"            h_info \u003d HostedHostingPortBinding("},{"line_number":523,"context_line":"                router_id\u003drouter_id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVX%2F%2Fug0%3D","line":520,"in_reply_to":"AAAAUX%2F%2BsXc%3D","updated":"2014-02-28 18:47:27.000000000","message":"Done","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"1762615a152b94151cb342fe22d37e7a6bc62daf","unresolved":false,"context_lines":[{"line_number":419,"context_line":"            # This should not happen either"},{"line_number":420,"context_line":"            LOG.error(_(\u0027DB inconsistency: Multiple type and hosting info\u0027"},{"line_number":421,"context_line":"                        \u0027 associated with router %s\u0027), id)"},{"line_number":422,"context_line":"            raise RouterBindingInfoError(router_id\u003did)"},{"line_number":423,"context_line":""},{"line_number":424,"context_line":"    def _get_hosting_device_bindings(self, context, id, load_routers\u003dFalse,"},{"line_number":425,"context_line":"                                     load_hosting_device\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAVn%2F%2F%2FoE%3D","line":422,"updated":"2014-03-02 20:40:24.000000000","message":"See comment in rev 1 on re-raise.","commit_id":"54eb0877e18fb9ad35f9f704adef4660f491cd06"},{"author":{"_account_id":162,"name":"Bob Melander","email":"bob.melander@gmail.com","username":"bob-melander"},"change_message_id":"8e9824da041c566cc5d36ac46c3a11de0ad08a21","unresolved":false,"context_lines":[{"line_number":419,"context_line":"            # This should not happen either"},{"line_number":420,"context_line":"            LOG.error(_(\u0027DB inconsistency: Multiple type and hosting info\u0027"},{"line_number":421,"context_line":"                        \u0027 associated with router %s\u0027), id)"},{"line_number":422,"context_line":"            raise RouterBindingInfoError(router_id\u003did)"},{"line_number":423,"context_line":""},{"line_number":424,"context_line":"    def _get_hosting_device_bindings(self, context, id, load_routers\u003dFalse,"},{"line_number":425,"context_line":"                                     load_hosting_device\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAVn%2F%2FkU4%3D","line":422,"in_reply_to":"AAAAVn%2F%2F%2FoE%3D","updated":"2014-03-05 11:10:11.000000000","message":"I intentionally left this one out (and the other place in the code where I check for db search result exceptions). Thinking was that I don\u0027t care about the original exception since the exception I raise fully explain the error.\n\nIs that ok reasoning or are you saying this can lead to errors I don\u0027t foresee?","commit_id":"54eb0877e18fb9ad35f9f704adef4660f491cd06"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"1762615a152b94151cb342fe22d37e7a6bc62daf","unresolved":false,"context_lines":[{"line_number":440,"context_line":"                binding_info \u003d self._get_router_binding_info(context,"},{"line_number":441,"context_line":"                                                             router[\u0027id\u0027])"},{"line_number":442,"context_line":"        except RouterBindingInfoError:"},{"line_number":443,"context_line":"            LOG.error(_(\u0027DB inconsistency: No hosting info associated with\u0027"},{"line_number":444,"context_line":"                        \u0027router %s\u0027), router[\u0027id\u0027])"},{"line_number":445,"context_line":"            return"},{"line_number":446,"context_line":"        router[\u0027router_type\u0027] \u003d binding_info[\u0027router_type\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAVn%2F%2F%2FoA%3D","line":443,"updated":"2014-03-02 20:40:24.000000000","message":"blank at end of string.","commit_id":"54eb0877e18fb9ad35f9f704adef4660f491cd06"},{"author":{"_account_id":162,"name":"Bob Melander","email":"bob.melander@gmail.com","username":"bob-melander"},"change_message_id":"8e9824da041c566cc5d36ac46c3a11de0ad08a21","unresolved":false,"context_lines":[{"line_number":440,"context_line":"                binding_info \u003d self._get_router_binding_info(context,"},{"line_number":441,"context_line":"                                                             router[\u0027id\u0027])"},{"line_number":442,"context_line":"        except RouterBindingInfoError:"},{"line_number":443,"context_line":"            LOG.error(_(\u0027DB inconsistency: No hosting info associated with\u0027"},{"line_number":444,"context_line":"                        \u0027router %s\u0027), router[\u0027id\u0027])"},{"line_number":445,"context_line":"            return"},{"line_number":446,"context_line":"        router[\u0027router_type\u0027] \u003d binding_info[\u0027router_type\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAVn%2F%2FkfU%3D","line":443,"in_reply_to":"AAAAVn%2F%2F%2FoA%3D","updated":"2014-03-05 11:10:11.000000000","message":"Done","commit_id":"54eb0877e18fb9ad35f9f704adef4660f491cd06"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"83a283276b87695d3185f52c9c4a5d83e7a9d95b","unresolved":false,"context_lines":[{"line_number":48,"context_line":"               default\u003d\u0027neutron.plugins.cisco.l3.scheduler.\u0027"},{"line_number":49,"context_line":"                       \u0027l3_hosting_device_scheduler.L3HostingDeviceScheduler\u0027,"},{"line_number":50,"context_line":"               help\u003d_(\u0027Driver to use for scheduling router to a hosting \u0027"},{"line_number":51,"context_line":"                      \u0027device\u0027)),"},{"line_number":52,"context_line":"    cfg.IntOpt(\u0027backlog_processing_interval\u0027,"},{"line_number":53,"context_line":"               default\u003d10,"},{"line_number":54,"context_line":"               help\u003d_(\u0027Time in seconds between renewed scheduling attempts of \u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAWH%2F%2FhnY%3D","line":51,"updated":"2014-03-17 10:57:24.000000000","message":"should we indicate default in help msg?","commit_id":"6adeae069677ff066d6bacd752bee92ce53be491"}],"neutron/plugins/cisco/l3/hosting_device_drivers/__init__.py":[{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"1c29fed34c1f5b9fe062c4dde2b86fa845f8d313","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class HostingDeviceDriver(object):"},{"line_number":23,"context_line":"    \"\"\"This class defines the API for hosting device drivers that are used"},{"line_number":24,"context_line":"       by a Neutron (service) plugin to perform various (plugin independent)"},{"line_number":25,"context_line":"       operations on hosting devices."},{"line_number":26,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2BsV0%3D","line":23,"updated":"2014-02-19 19:27:30.000000000","message":"PEP8/PEP257 on docstrings...","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":162,"name":"Bob Melander","email":"bob.melander@gmail.com","username":"bob-melander"},"change_message_id":"5f272f8274871758afa460dc127db3844d183118","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class HostingDeviceDriver(object):"},{"line_number":23,"context_line":"    \"\"\"This class defines the API for hosting device drivers that are used"},{"line_number":24,"context_line":"       by a Neutron (service) plugin to perform various (plugin independent)"},{"line_number":25,"context_line":"       operations on hosting devices."},{"line_number":26,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVX%2F%2Fugw%3D","line":23,"in_reply_to":"AAAAUX%2F%2BsV0%3D","updated":"2014-02-28 18:47:27.000000000","message":"Done","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"1c29fed34c1f5b9fe062c4dde2b86fa845f8d313","unresolved":false,"context_lines":[{"line_number":24,"context_line":"       by a Neutron (service) plugin to perform various (plugin independent)"},{"line_number":25,"context_line":"       operations on hosting devices."},{"line_number":26,"context_line":"    \"\"\""},{"line_number":27,"context_line":"    __metaclass__ \u003d ABCMeta"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def hosting_device_name(self):"},{"line_number":30,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2BsXE%3D","line":27,"updated":"2014-02-19 19:27:30.000000000","message":"Use six import and decorator...","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":162,"name":"Bob Melander","email":"bob.melander@gmail.com","username":"bob-melander"},"change_message_id":"5f272f8274871758afa460dc127db3844d183118","unresolved":false,"context_lines":[{"line_number":24,"context_line":"       by a Neutron (service) plugin to perform various (plugin independent)"},{"line_number":25,"context_line":"       operations on hosting devices."},{"line_number":26,"context_line":"    \"\"\""},{"line_number":27,"context_line":"    __metaclass__ \u003d ABCMeta"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def hosting_device_name(self):"},{"line_number":30,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVX%2F%2Fugs%3D","line":27,"in_reply_to":"AAAAUX%2F%2BsXE%3D","updated":"2014-02-28 18:47:27.000000000","message":"Done","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"82927ca388203232c334ab7c906516f58e35586d","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    \"\"\""},{"line_number":27,"context_line":"    __metaclass__ \u003d ABCMeta"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def hosting_device_name(self):"},{"line_number":30,"context_line":"        pass"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def create_configdrive_files(self, context, mgmtport):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2B7G4%3D","line":29,"updated":"2014-02-18 07:11:59.000000000","message":"@abstractmethod","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":162,"name":"Bob Melander","email":"bob.melander@gmail.com","username":"bob-melander"},"change_message_id":"5f272f8274871758afa460dc127db3844d183118","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    \"\"\""},{"line_number":27,"context_line":"    __metaclass__ \u003d ABCMeta"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def hosting_device_name(self):"},{"line_number":30,"context_line":"        pass"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def create_configdrive_files(self, context, mgmtport):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVX%2F%2Fugo%3D","line":29,"in_reply_to":"AAAAUX%2F%2B7G4%3D","updated":"2014-02-28 18:47:27.000000000","message":"Done","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"}],"neutron/plugins/cisco/l3/plugging_drivers/__init__.py":[{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"1c29fed34c1f5b9fe062c4dde2b86fa845f8d313","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class PluginSidePluggingDriver(object):"},{"line_number":23,"context_line":"    \"\"\"This class defines the API for plugging drivers that are used by a"},{"line_number":24,"context_line":"       Neutron (service) plugin to perform various operations on the logical"},{"line_number":25,"context_line":"       ports of logical (service) resources in a plugin compatible way."},{"line_number":26,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2BsWM%3D","line":23,"updated":"2014-02-19 19:27:30.000000000","message":"PEP8/PEP257 on doc strings for class.","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":162,"name":"Bob Melander","email":"bob.melander@gmail.com","username":"bob-melander"},"change_message_id":"5f272f8274871758afa460dc127db3844d183118","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class PluginSidePluggingDriver(object):"},{"line_number":23,"context_line":"    \"\"\"This class defines the API for plugging drivers that are used by a"},{"line_number":24,"context_line":"       Neutron (service) plugin to perform various operations on the logical"},{"line_number":25,"context_line":"       ports of logical (service) resources in a plugin compatible way."},{"line_number":26,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVX%2F%2Fugk%3D","line":23,"in_reply_to":"AAAAUX%2F%2BsWM%3D","updated":"2014-02-28 18:47:27.000000000","message":"Done","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"1c29fed34c1f5b9fe062c4dde2b86fa845f8d313","unresolved":false,"context_lines":[{"line_number":24,"context_line":"       Neutron (service) plugin to perform various operations on the logical"},{"line_number":25,"context_line":"       ports of logical (service) resources in a plugin compatible way."},{"line_number":26,"context_line":"    \"\"\""},{"line_number":27,"context_line":"    __metaclass__ \u003d ABCMeta"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def create_hosting_device_resources(self, context, tenant_id, mgmt_nw_id,"},{"line_number":30,"context_line":"                                        mgmt_sec_grp_id, max_hosted):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2BsWc%3D","line":27,"updated":"2014-02-19 19:27:30.000000000","message":"Same in this file.","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":162,"name":"Bob Melander","email":"bob.melander@gmail.com","username":"bob-melander"},"change_message_id":"5f272f8274871758afa460dc127db3844d183118","unresolved":false,"context_lines":[{"line_number":24,"context_line":"       Neutron (service) plugin to perform various operations on the logical"},{"line_number":25,"context_line":"       ports of logical (service) resources in a plugin compatible way."},{"line_number":26,"context_line":"    \"\"\""},{"line_number":27,"context_line":"    __metaclass__ \u003d ABCMeta"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def create_hosting_device_resources(self, context, tenant_id, mgmt_nw_id,"},{"line_number":30,"context_line":"                                        mgmt_sec_grp_id, max_hosted):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVX%2F%2Fugg%3D","line":27,"in_reply_to":"AAAAUX%2F%2BsWc%3D","updated":"2014-02-28 18:47:27.000000000","message":"Done","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"}],"neutron/plugins/cisco/l3/plugging_drivers/n1kv_trunking_driver.py":[{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"1c29fed34c1f5b9fe062c4dde2b86fa845f8d313","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"MIN_LL_VLAN_TAG \u003d 10"},{"line_number":59,"context_line":"MAX_LL_VLAN_TAG \u003d 200"},{"line_number":60,"context_line":"FULL_VLAN_SET \u003d set(range(MIN_LL_VLAN_TAG, MAX_LL_VLAN_TAG))"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"# Port lookups can fail so retries are needed"},{"line_number":63,"context_line":"MAX_HOSTING_PORT_LOOKUP_ATTEMPTS \u003d 10"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2BsUw%3D","line":60,"updated":"2014-02-19 19:27:30.000000000","message":"MAX_LL_VLAN_TAG+1?","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":162,"name":"Bob Melander","email":"bob.melander@gmail.com","username":"bob-melander"},"change_message_id":"5f272f8274871758afa460dc127db3844d183118","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"MIN_LL_VLAN_TAG \u003d 10"},{"line_number":59,"context_line":"MAX_LL_VLAN_TAG \u003d 200"},{"line_number":60,"context_line":"FULL_VLAN_SET \u003d set(range(MIN_LL_VLAN_TAG, MAX_LL_VLAN_TAG))"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"# Port lookups can fail so retries are needed"},{"line_number":63,"context_line":"MAX_HOSTING_PORT_LOOKUP_ATTEMPTS \u003d 10"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVX%2F%2Fugc%3D","line":60,"in_reply_to":"AAAAUX%2F%2BsUw%3D","updated":"2014-02-28 18:47:27.000000000","message":"Done","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"1c29fed34c1f5b9fe062c4dde2b86fa845f8d313","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"class N1kvTrunkingPlugDriver(plug.PluginSidePluggingDriver):"},{"line_number":68,"context_line":"    \"\"\"This is a driver class for service VMs used together with"},{"line_number":69,"context_line":"    the N1kv plugin. It makes use that plugin\u0027s VLAN trunk feature."},{"line_number":70,"context_line":"    \"\"\""},{"line_number":71,"context_line":"    _n1kv_mgmt_pp_id \u003d None"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2BsUY%3D","line":68,"updated":"2014-02-19 19:27:30.000000000","message":"PEP8/PEP257 on docstrings in file.","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":162,"name":"Bob Melander","email":"bob.melander@gmail.com","username":"bob-melander"},"change_message_id":"5f272f8274871758afa460dc127db3844d183118","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"class N1kvTrunkingPlugDriver(plug.PluginSidePluggingDriver):"},{"line_number":68,"context_line":"    \"\"\"This is a driver class for service VMs used together with"},{"line_number":69,"context_line":"    the N1kv plugin. It makes use that plugin\u0027s VLAN trunk feature."},{"line_number":70,"context_line":"    \"\"\""},{"line_number":71,"context_line":"    _n1kv_mgmt_pp_id \u003d None"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVX%2F%2FugU%3D","line":68,"in_reply_to":"AAAAUX%2F%2BsUY%3D","updated":"2014-02-28 18:47:27.000000000","message":"Done","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"1c29fed34c1f5b9fe062c4dde2b86fa845f8d313","unresolved":false,"context_lines":[{"line_number":190,"context_line":"                    \u0027ip_version\u0027: 4,"},{"line_number":191,"context_line":"                    \u0027dns_nameservers\u0027: attributes.ATTR_NOT_SPECIFIED,"},{"line_number":192,"context_line":"                    \u0027host_routes\u0027: attributes.ATTR_NOT_SPECIFIED}}"},{"line_number":193,"context_line":"                for i in xrange(0, max_hosted):"},{"line_number":194,"context_line":"                    # Create T1 trunk network for this router"},{"line_number":195,"context_line":"                    indx \u003d str(i + 1)"},{"line_number":196,"context_line":"                    n_spec[\u0027network\u0027].update("}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2BsUE%3D","line":193,"updated":"2014-02-19 19:27:30.000000000","message":"xrange(max_hosted)","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":162,"name":"Bob Melander","email":"bob.melander@gmail.com","username":"bob-melander"},"change_message_id":"5f272f8274871758afa460dc127db3844d183118","unresolved":false,"context_lines":[{"line_number":190,"context_line":"                    \u0027ip_version\u0027: 4,"},{"line_number":191,"context_line":"                    \u0027dns_nameservers\u0027: attributes.ATTR_NOT_SPECIFIED,"},{"line_number":192,"context_line":"                    \u0027host_routes\u0027: attributes.ATTR_NOT_SPECIFIED}}"},{"line_number":193,"context_line":"                for i in xrange(0, max_hosted):"},{"line_number":194,"context_line":"                    # Create T1 trunk network for this router"},{"line_number":195,"context_line":"                    indx \u003d str(i + 1)"},{"line_number":196,"context_line":"                    n_spec[\u0027network\u0027].update("}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVX%2F%2FugM%3D","line":193,"in_reply_to":"AAAAUX%2F%2BsUE%3D","updated":"2014-02-28 18:47:27.000000000","message":"Done","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"1c29fed34c1f5b9fe062c4dde2b86fa845f8d313","unresolved":false,"context_lines":[{"line_number":214,"context_line":"                         \u0027network_id\u0027: t1_n[i][\u0027id\u0027],"},{"line_number":215,"context_line":"                         \u0027n1kv:profile_id\u0027: self.n1kv_t1_pp_id()})"},{"line_number":216,"context_line":"                    t_p.append(self._core_plugin.create_port(context, p_spec))"},{"line_number":217,"context_line":"                    LOG.debug(_(\u0027Created T1 port with name %(name)s,  \u0027"},{"line_number":218,"context_line":"                                \u0027id %(id)s and subnet %(subnet)s\u0027),"},{"line_number":219,"context_line":"                              {\u0027name\u0027: t1_n[i][\u0027name\u0027],"},{"line_number":220,"context_line":"                               \u0027id\u0027: t1_n[i][\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2BsTg%3D","line":217,"updated":"2014-02-19 19:27:30.000000000","message":"extra whitespace at end of string","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":162,"name":"Bob Melander","email":"bob.melander@gmail.com","username":"bob-melander"},"change_message_id":"5f272f8274871758afa460dc127db3844d183118","unresolved":false,"context_lines":[{"line_number":214,"context_line":"                         \u0027network_id\u0027: t1_n[i][\u0027id\u0027],"},{"line_number":215,"context_line":"                         \u0027n1kv:profile_id\u0027: self.n1kv_t1_pp_id()})"},{"line_number":216,"context_line":"                    t_p.append(self._core_plugin.create_port(context, p_spec))"},{"line_number":217,"context_line":"                    LOG.debug(_(\u0027Created T1 port with name %(name)s,  \u0027"},{"line_number":218,"context_line":"                                \u0027id %(id)s and subnet %(subnet)s\u0027),"},{"line_number":219,"context_line":"                              {\u0027name\u0027: t1_n[i][\u0027name\u0027],"},{"line_number":220,"context_line":"                               \u0027id\u0027: t1_n[i][\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVX%2F%2FugE%3D","line":217,"in_reply_to":"AAAAUX%2F%2BsTg%3D","updated":"2014-02-28 18:47:27.000000000","message":"Done","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"1c29fed34c1f5b9fe062c4dde2b86fa845f8d313","unresolved":false,"context_lines":[{"line_number":217,"context_line":"                    LOG.debug(_(\u0027Created T1 port with name %(name)s,  \u0027"},{"line_number":218,"context_line":"                                \u0027id %(id)s and subnet %(subnet)s\u0027),"},{"line_number":219,"context_line":"                              {\u0027name\u0027: t1_n[i][\u0027name\u0027],"},{"line_number":220,"context_line":"                               \u0027id\u0027: t1_n[i][\u0027id\u0027],"},{"line_number":221,"context_line":"                               \u0027subnet\u0027: t1_sn[i][\u0027id\u0027]})"},{"line_number":222,"context_line":"                    # Create T2 trunk network for this router"},{"line_number":223,"context_line":"                    n_spec[\u0027network\u0027].update("}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2BsSw%3D","line":220,"updated":"2014-02-19 19:27:30.000000000","message":"should avoid using id, which is built-in. Here and following places.","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":162,"name":"Bob Melander","email":"bob.melander@gmail.com","username":"bob-melander"},"change_message_id":"5f272f8274871758afa460dc127db3844d183118","unresolved":false,"context_lines":[{"line_number":217,"context_line":"                    LOG.debug(_(\u0027Created T1 port with name %(name)s,  \u0027"},{"line_number":218,"context_line":"                                \u0027id %(id)s and subnet %(subnet)s\u0027),"},{"line_number":219,"context_line":"                              {\u0027name\u0027: t1_n[i][\u0027name\u0027],"},{"line_number":220,"context_line":"                               \u0027id\u0027: t1_n[i][\u0027id\u0027],"},{"line_number":221,"context_line":"                               \u0027subnet\u0027: t1_sn[i][\u0027id\u0027]})"},{"line_number":222,"context_line":"                    # Create T2 trunk network for this router"},{"line_number":223,"context_line":"                    n_spec[\u0027network\u0027].update("}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVX%2F%2FugA%3D","line":220,"in_reply_to":"AAAAUX%2F%2BsSw%3D","updated":"2014-02-28 18:47:27.000000000","message":"Done","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"}],"neutron/plugins/cisco/l3/tests/unit/plugging_dummy_driver.py":[{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"1c29fed34c1f5b9fe062c4dde2b86fa845f8d313","unresolved":false,"context_lines":[{"line_number":73,"context_line":"                    \u0027ip_version\u0027: 4,"},{"line_number":74,"context_line":"                    \u0027dns_nameservers\u0027: attributes.ATTR_NOT_SPECIFIED,"},{"line_number":75,"context_line":"                    \u0027host_routes\u0027: attributes.ATTR_NOT_SPECIFIED}}"},{"line_number":76,"context_line":"                for i in xrange(0, max_hosted):"},{"line_number":77,"context_line":"                    # Create T1 trunk network for this router"},{"line_number":78,"context_line":"                    indx \u003d str(i + 1)"},{"line_number":79,"context_line":"                    n_spec[\u0027network\u0027].update("}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2BsQs%3D","line":76,"updated":"2014-02-19 19:27:30.000000000","message":"xrange(max_hosted)","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":162,"name":"Bob Melander","email":"bob.melander@gmail.com","username":"bob-melander"},"change_message_id":"5f272f8274871758afa460dc127db3844d183118","unresolved":false,"context_lines":[{"line_number":73,"context_line":"                    \u0027ip_version\u0027: 4,"},{"line_number":74,"context_line":"                    \u0027dns_nameservers\u0027: attributes.ATTR_NOT_SPECIFIED,"},{"line_number":75,"context_line":"                    \u0027host_routes\u0027: attributes.ATTR_NOT_SPECIFIED}}"},{"line_number":76,"context_line":"                for i in xrange(0, max_hosted):"},{"line_number":77,"context_line":"                    # Create T1 trunk network for this router"},{"line_number":78,"context_line":"                    indx \u003d str(i + 1)"},{"line_number":79,"context_line":"                    n_spec[\u0027network\u0027].update("}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVX%2F%2Fuf8%3D","line":76,"in_reply_to":"AAAAUX%2F%2BsQs%3D","updated":"2014-02-28 18:47:27.000000000","message":"Done","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"1c29fed34c1f5b9fe062c4dde2b86fa845f8d313","unresolved":false,"context_lines":[{"line_number":95,"context_line":"                        {\u0027name\u0027: n1kv_const.T1_PORT_NAME + indx,"},{"line_number":96,"context_line":"                         \u0027network_id\u0027: t1_n[i][\u0027id\u0027]})"},{"line_number":97,"context_line":"                    t_p.append(self._core_plugin.create_port(context, p_spec))"},{"line_number":98,"context_line":"                    LOG.debug(_(\u0027Created T1 port with name %(name)s,  \u0027"},{"line_number":99,"context_line":"                                \u0027id %(id)s and subnet %(subnet)s\u0027),"},{"line_number":100,"context_line":"                              {\u0027name\u0027: t1_n[i][\u0027name\u0027],"},{"line_number":101,"context_line":"                               \u0027id\u0027: t1_n[i][\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2BsQY%3D","line":98,"updated":"2014-02-19 19:27:30.000000000","message":"extra space","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":162,"name":"Bob Melander","email":"bob.melander@gmail.com","username":"bob-melander"},"change_message_id":"5f272f8274871758afa460dc127db3844d183118","unresolved":false,"context_lines":[{"line_number":95,"context_line":"                        {\u0027name\u0027: n1kv_const.T1_PORT_NAME + indx,"},{"line_number":96,"context_line":"                         \u0027network_id\u0027: t1_n[i][\u0027id\u0027]})"},{"line_number":97,"context_line":"                    t_p.append(self._core_plugin.create_port(context, p_spec))"},{"line_number":98,"context_line":"                    LOG.debug(_(\u0027Created T1 port with name %(name)s,  \u0027"},{"line_number":99,"context_line":"                                \u0027id %(id)s and subnet %(subnet)s\u0027),"},{"line_number":100,"context_line":"                              {\u0027name\u0027: t1_n[i][\u0027name\u0027],"},{"line_number":101,"context_line":"                               \u0027id\u0027: t1_n[i][\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVX%2F%2Fuf4%3D","line":98,"in_reply_to":"AAAAUX%2F%2BsQY%3D","updated":"2014-02-28 18:47:27.000000000","message":"Done","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"}],"neutron/tests/unit/cisco/l3/test_l3_router_appliance_plugin.py":[{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"1c29fed34c1f5b9fe062c4dde2b86fa845f8d313","unresolved":false,"context_lines":[{"line_number":162,"context_line":"        hosting_device_manager_db.HostingDeviceManager._mgmt_nw_uuid \u003d None"},{"line_number":163,"context_line":"        hosting_device_manager_db.HostingDeviceTemplate._mgmt_sec_grp_id \u003d None"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"        super(test_l3_plugin.L3BaseForSepTests, self).setUp("},{"line_number":166,"context_line":"            plugin\u003dplugin, ext_mgr\u003dext_mgr,"},{"line_number":167,"context_line":"            service_plugins\u003dservice_plugins)"},{"line_number":168,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2BsM0%3D","line":165,"updated":"2014-02-19 19:27:30.000000000","message":"Just curious as to why not doing super(L3RouterApplianceTestCase, self).setUp()?","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":162,"name":"Bob Melander","email":"bob.melander@gmail.com","username":"bob-melander"},"change_message_id":"5f272f8274871758afa460dc127db3844d183118","unresolved":false,"context_lines":[{"line_number":162,"context_line":"        hosting_device_manager_db.HostingDeviceManager._mgmt_nw_uuid \u003d None"},{"line_number":163,"context_line":"        hosting_device_manager_db.HostingDeviceTemplate._mgmt_sec_grp_id \u003d None"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"        super(test_l3_plugin.L3BaseForSepTests, self).setUp("},{"line_number":166,"context_line":"            plugin\u003dplugin, ext_mgr\u003dext_mgr,"},{"line_number":167,"context_line":"            service_plugins\u003dservice_plugins)"},{"line_number":168,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVX%2F%2FufQ%3D","line":165,"in_reply_to":"AAAAUX%2F%2BsM0%3D","updated":"2014-02-28 18:47:27.000000000","message":"Immediate super class uses wrong plugin.","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"1c29fed34c1f5b9fe062c4dde2b86fa845f8d313","unresolved":false,"context_lines":[{"line_number":228,"context_line":"                self._delete(\u0027ports\u0027, p[\u0027id\u0027])"},{"line_number":229,"context_line":"            self._delete(\u0027subnets\u0027, self.mgmt_subnet[\u0027subnet\u0027][\u0027id\u0027])"},{"line_number":230,"context_line":"            self._delete(\u0027networks\u0027, self.mgmt_nw[\u0027network\u0027][\u0027id\u0027])"},{"line_number":231,"context_line":"        self.delete_svc_vm_fcn_p.stop()"},{"line_number":232,"context_line":"        self.dispatch_svc_vm_fcn_p.stop()"},{"line_number":233,"context_line":"        self.tenant_id_fcn_p.stop()"},{"line_number":234,"context_line":"        self.sched.stop()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2BsNU%3D","line":231,"updated":"2014-02-19 19:27:30.000000000","message":"Can add self.addCleanup(mock.patch.stopall) to setup vs stopping each one.","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":162,"name":"Bob Melander","email":"bob.melander@gmail.com","username":"bob-melander"},"change_message_id":"5f272f8274871758afa460dc127db3844d183118","unresolved":false,"context_lines":[{"line_number":228,"context_line":"                self._delete(\u0027ports\u0027, p[\u0027id\u0027])"},{"line_number":229,"context_line":"            self._delete(\u0027subnets\u0027, self.mgmt_subnet[\u0027subnet\u0027][\u0027id\u0027])"},{"line_number":230,"context_line":"            self._delete(\u0027networks\u0027, self.mgmt_nw[\u0027network\u0027][\u0027id\u0027])"},{"line_number":231,"context_line":"        self.delete_svc_vm_fcn_p.stop()"},{"line_number":232,"context_line":"        self.dispatch_svc_vm_fcn_p.stop()"},{"line_number":233,"context_line":"        self.tenant_id_fcn_p.stop()"},{"line_number":234,"context_line":"        self.sched.stop()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVX%2F%2FufM%3D","line":231,"in_reply_to":"AAAAUX%2F%2BsNU%3D","updated":"2014-02-28 18:47:27.000000000","message":"Done","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"1c29fed34c1f5b9fe062c4dde2b86fa845f8d313","unresolved":false,"context_lines":[{"line_number":241,"context_line":"        result \u003d plugin.get_networks(ctx, filters\u003dNone)"},{"line_number":242,"context_line":"        # Remove mgmt network from list"},{"line_number":243,"context_line":"        to_del \u003d -1"},{"line_number":244,"context_line":"        for i in xrange(0, len(result)):"},{"line_number":245,"context_line":"            if result[i].get(\u0027id\u0027) \u003d\u003d dev_mgr.mgmt_nw_id():"},{"line_number":246,"context_line":"                to_del \u003d i"},{"line_number":247,"context_line":"        if to_del !\u003d -1:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2BsMo%3D","line":244,"updated":"2014-02-19 19:27:30.000000000","message":"for net in result: could be used.","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":162,"name":"Bob Melander","email":"bob.melander@gmail.com","username":"bob-melander"},"change_message_id":"5f272f8274871758afa460dc127db3844d183118","unresolved":false,"context_lines":[{"line_number":241,"context_line":"        result \u003d plugin.get_networks(ctx, filters\u003dNone)"},{"line_number":242,"context_line":"        # Remove mgmt network from list"},{"line_number":243,"context_line":"        to_del \u003d -1"},{"line_number":244,"context_line":"        for i in xrange(0, len(result)):"},{"line_number":245,"context_line":"            if result[i].get(\u0027id\u0027) \u003d\u003d dev_mgr.mgmt_nw_id():"},{"line_number":246,"context_line":"                to_del \u003d i"},{"line_number":247,"context_line":"        if to_del !\u003d -1:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVX%2F%2Fue8%3D","line":244,"in_reply_to":"AAAAUX%2F%2BsMo%3D","updated":"2014-02-28 18:47:27.000000000","message":"Has modified this","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"1c29fed34c1f5b9fe062c4dde2b86fa845f8d313","unresolved":false,"context_lines":[{"line_number":243,"context_line":"        to_del \u003d -1"},{"line_number":244,"context_line":"        for i in xrange(0, len(result)):"},{"line_number":245,"context_line":"            if result[i].get(\u0027id\u0027) \u003d\u003d dev_mgr.mgmt_nw_id():"},{"line_number":246,"context_line":"                to_del \u003d i"},{"line_number":247,"context_line":"        if to_del !\u003d -1:"},{"line_number":248,"context_line":"            del result[to_del]"},{"line_number":249,"context_line":"        self.assertEqual(result, [])"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2BsI8%3D","line":246,"updated":"2014-02-19 19:27:30.000000000","message":"Is the intent to delete only the last matching, first (need break), or all?","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"1c29fed34c1f5b9fe062c4dde2b86fa845f8d313","unresolved":false,"context_lines":[{"line_number":244,"context_line":"        for i in xrange(0, len(result)):"},{"line_number":245,"context_line":"            if result[i].get(\u0027id\u0027) \u003d\u003d dev_mgr.mgmt_nw_id():"},{"line_number":246,"context_line":"                to_del \u003d i"},{"line_number":247,"context_line":"        if to_del !\u003d -1:"},{"line_number":248,"context_line":"            del result[to_del]"},{"line_number":249,"context_line":"        self.assertEqual(result, [])"},{"line_number":250,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2BsIU%3D","line":247,"updated":"2014-02-19 19:27:30.000000000","message":"If break out of loop, can use else: on for clause, instead of to_del \u003d -1","commit_id":"6d33651048d2e92aa492721606df09d834a8fefb"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"1762615a152b94151cb342fe22d37e7a6bc62daf","unresolved":false,"context_lines":[{"line_number":231,"context_line":"                self._delete(\u0027ports\u0027, p[\u0027id\u0027])"},{"line_number":232,"context_line":"            self._delete(\u0027subnets\u0027, self.mgmt_subnet[\u0027subnet\u0027][\u0027id\u0027])"},{"line_number":233,"context_line":"            self._delete(\u0027networks\u0027, self.mgmt_nw[\u0027network\u0027][\u0027id\u0027])"},{"line_number":234,"context_line":"        mock.patch.stopall()"},{"line_number":235,"context_line":"        super(test_l3_plugin.L3NatDBSepTestCase, self).tearDown()"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"    def test_get_network_succeeds_without_filter(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAVn%2F%2F%2Fm0%3D","line":234,"updated":"2014-03-02 20:40:24.000000000","message":"Is better to use self.addCleanup(...) in setUp, than to do this in tearDown. If there is a failure in setUp, then tearDown will not be invoked.","commit_id":"54eb0877e18fb9ad35f9f704adef4660f491cd06"},{"author":{"_account_id":162,"name":"Bob Melander","email":"bob.melander@gmail.com","username":"bob-melander"},"change_message_id":"8e9824da041c566cc5d36ac46c3a11de0ad08a21","unresolved":false,"context_lines":[{"line_number":231,"context_line":"                self._delete(\u0027ports\u0027, p[\u0027id\u0027])"},{"line_number":232,"context_line":"            self._delete(\u0027subnets\u0027, self.mgmt_subnet[\u0027subnet\u0027][\u0027id\u0027])"},{"line_number":233,"context_line":"            self._delete(\u0027networks\u0027, self.mgmt_nw[\u0027network\u0027][\u0027id\u0027])"},{"line_number":234,"context_line":"        mock.patch.stopall()"},{"line_number":235,"context_line":"        super(test_l3_plugin.L3NatDBSepTestCase, self).tearDown()"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"    def test_get_network_succeeds_without_filter(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAVn%2F%2FkbI%3D","line":234,"in_reply_to":"AAAAVn%2F%2F%2Fm0%3D","updated":"2014-03-05 11:10:11.000000000","message":"Done","commit_id":"54eb0877e18fb9ad35f9f704adef4660f491cd06"}]}
