)]}'
{"etc/neutron/plugins/nicira/nvp.ini":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"14d670d9821c1aa0b0394132621d49e85a02103a","unresolved":false,"context_lines":[{"line_number":130,"context_line":"# networks will be served by the new infrastructure. Migration tools are provided to"},{"line_number":131,"context_line":"# \u0027move\u0027 one network from one model to another; however, were this not possible"},{"line_number":132,"context_line":"# both networks served by the agent and networks served by NSX services can coexist"},{"line_number":133,"context_line":"# in the deployment. With agent_mode set to \u0027combined\u0027, option \u0027network_auto_schedule\u0027"},{"line_number":134,"context_line":"# in neutron.conf is ignored, as new networks will no longer be scheduled to existing"},{"line_number":135,"context_line":"# dhcp agents."},{"line_number":136,"context_line":"# agent_mode \u003d agent"}],"source_content_type":"text/x-properties","patch_set":32,"id":"AAAAUX%2F%2Fw7g%3D","line":133,"updated":"2014-02-10 23:33:02.000000000","message":"I have difficulties in understanding this sentence (the one starting with \u0027however, were this not possible...\u0027\n\nIt\u0027s either me dumb or the sentence need a bit of rephrasing for dumb people like me.","commit_id":"2314e4312e66fb247ca72c49b03791222ab84649"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"f517d07d8aad636493798fad84f7ae42973bf47e","unresolved":false,"context_lines":[{"line_number":130,"context_line":"# networks will be served by the new infrastructure. Migration tools are provided to"},{"line_number":131,"context_line":"# \u0027move\u0027 one network from one model to another; however, were this not possible"},{"line_number":132,"context_line":"# both networks served by the agent and networks served by NSX services can coexist"},{"line_number":133,"context_line":"# in the deployment. With agent_mode set to \u0027combined\u0027, option \u0027network_auto_schedule\u0027"},{"line_number":134,"context_line":"# in neutron.conf is ignored, as new networks will no longer be scheduled to existing"},{"line_number":135,"context_line":"# dhcp agents."},{"line_number":136,"context_line":"# agent_mode \u003d agent"}],"source_content_type":"text/x-properties","patch_set":32,"id":"AAAAUX%2F%2FwdQ%3D","line":133,"in_reply_to":"AAAAUX%2F%2Fw7g%3D","updated":"2014-02-11 00:48:00.000000000","message":"I\u0027ll rephrase","commit_id":"2314e4312e66fb247ca72c49b03791222ab84649"}],"etc/neutron/plugins/vmware/nsx.ini":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"14d670d9821c1aa0b0394132621d49e85a02103a","unresolved":false,"context_lines":[{"line_number":124,"context_line":"# existing networks keep being served by the existing infrastructure, whereas new"},{"line_number":125,"context_line":"# networks will be served by the new infrastructure. Migration tools are provided to"},{"line_number":126,"context_line":"# \u0027move\u0027 one network from one model to another; however, were this not possible"},{"line_number":127,"context_line":"# both networks served by the agent and networks served by NSX services can coexist"},{"line_number":128,"context_line":"# in the deployment. With agent_mode set to \u0027combined\u0027, option \u0027network_auto_schedule\u0027"},{"line_number":129,"context_line":"# in neutron.conf is ignored, as new networks will no longer be scheduled to existing"},{"line_number":130,"context_line":"# dhcp agents."}],"source_content_type":"text/x-properties","patch_set":32,"id":"AAAAUX%2F%2Fw6k%3D","line":127,"updated":"2014-02-10 23:33:02.000000000","message":"same comments here as for the other in the \u0027twin\u0027 ini file.","commit_id":"2314e4312e66fb247ca72c49b03791222ab84649"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"f517d07d8aad636493798fad84f7ae42973bf47e","unresolved":false,"context_lines":[{"line_number":124,"context_line":"# existing networks keep being served by the existing infrastructure, whereas new"},{"line_number":125,"context_line":"# networks will be served by the new infrastructure. Migration tools are provided to"},{"line_number":126,"context_line":"# \u0027move\u0027 one network from one model to another; however, were this not possible"},{"line_number":127,"context_line":"# both networks served by the agent and networks served by NSX services can coexist"},{"line_number":128,"context_line":"# in the deployment. With agent_mode set to \u0027combined\u0027, option \u0027network_auto_schedule\u0027"},{"line_number":129,"context_line":"# in neutron.conf is ignored, as new networks will no longer be scheduled to existing"},{"line_number":130,"context_line":"# dhcp agents."}],"source_content_type":"text/x-properties","patch_set":32,"id":"AAAAUX%2F%2FwdI%3D","line":127,"in_reply_to":"AAAAUX%2F%2Fw6k%3D","updated":"2014-02-11 00:48:00.000000000","message":"Done","commit_id":"2314e4312e66fb247ca72c49b03791222ab84649"}],"neutron/db/migration/alembic_migrations/versions/1421183d533f_nsx_dhcp_metadata.py":[{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"7a8144654472a4ae5a11e3eae747df12a42d93ab","unresolved":false,"context_lines":[{"line_number":19,"context_line":"\"\"\"NSX DHCP/metadata support"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Revision ID: 1421183d533f"},{"line_number":22,"context_line":"Revises: 49f5e553f61f"},{"line_number":23,"context_line":"Create Date: 2013-10-11 14:33:37.303215"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"\"\"\""}],"source_content_type":"text/x-python","patch_set":31,"id":"AAAAUX%2F%2FyNY%3D","line":22,"updated":"2014-02-10 20:43:30.000000000","message":"nit: mismatch with down_revision below","commit_id":"c55ea2c33855b3cbda601a6742678d9284ea08db"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"eeaffe829bbd294aa8bfe4aced813931c0b32862","unresolved":false,"context_lines":[{"line_number":19,"context_line":"\"\"\"NSX DHCP/metadata support"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Revision ID: 1421183d533f"},{"line_number":22,"context_line":"Revises: 49f5e553f61f"},{"line_number":23,"context_line":"Create Date: 2013-10-11 14:33:37.303215"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"\"\"\""}],"source_content_type":"text/x-python","patch_set":31,"id":"AAAAUX%2F%2FxDo%3D","line":22,"in_reply_to":"AAAAUX%2F%2FyNY%3D","updated":"2014-02-10 22:49:25.000000000","message":"Done","commit_id":"c55ea2c33855b3cbda601a6742678d9284ea08db"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"7a8144654472a4ae5a11e3eae747df12a42d93ab","unresolved":false,"context_lines":[{"line_number":69,"context_line":"    if not migration.should_run(active_plugins, migration_for_plugins):"},{"line_number":70,"context_line":"        return"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    op.drop_table(\u0027lsn\u0027)"},{"line_number":73,"context_line":"    op.drop_table(\u0027lsn_port\u0027)"}],"source_content_type":"text/x-python","patch_set":31,"id":"AAAAUX%2F%2FyNE%3D","line":72,"updated":"2014-02-10 20:43:30.000000000","message":"dropping tables in this order may fail","commit_id":"c55ea2c33855b3cbda601a6742678d9284ea08db"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"eeaffe829bbd294aa8bfe4aced813931c0b32862","unresolved":false,"context_lines":[{"line_number":69,"context_line":"    if not migration.should_run(active_plugins, migration_for_plugins):"},{"line_number":70,"context_line":"        return"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    op.drop_table(\u0027lsn\u0027)"},{"line_number":73,"context_line":"    op.drop_table(\u0027lsn_port\u0027)"}],"source_content_type":"text/x-python","patch_set":31,"id":"AAAAUX%2F%2FxDk%3D","line":72,"in_reply_to":"AAAAUX%2F%2FyNE%3D","updated":"2014-02-10 22:49:25.000000000","message":"Done","commit_id":"c55ea2c33855b3cbda601a6742678d9284ea08db"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"14d670d9821c1aa0b0394132621d49e85a02103a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2013 VMware, Inc."},{"line_number":2,"context_line":"# All Rights Reserved"},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":32,"id":"AAAAUX%2F%2Fw6c%3D","line":1,"updated":"2014-02-10 23:33:02.000000000","message":"meh its 2014 now","commit_id":"2314e4312e66fb247ca72c49b03791222ab84649"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"f517d07d8aad636493798fad84f7ae42973bf47e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2013 VMware, Inc."},{"line_number":2,"context_line":"# All Rights Reserved"},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":32,"id":"AAAAUX%2F%2FwdE%3D","line":1,"in_reply_to":"AAAAUX%2F%2Fw6c%3D","updated":"2014-02-11 00:48:00.000000000","message":"Done","commit_id":"2314e4312e66fb247ca72c49b03791222ab84649"}],"neutron/plugins/nicira/dbexts/lsn_db.py":[{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"999675cf6065e47dbd5969f285446e3a00440723","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"class LsnPort(models_v2.model_base.BASEV2):"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    __tablename__ \u003d \u0027lsn_port\u0027"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    lsn_port_id \u003d Column(String(36), primary_key\u003dTrue)"},{"line_number":38,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAATn%2F%2Fpdg%3D","line":35,"updated":"2013-10-30 23:47:20.000000000","message":"all of our tables are plurals  it would be nice to keep this convention.","commit_id":"68f1570160a54fe19645a2db3024ae0b4febdfcb"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"999675cf6065e47dbd5969f285446e3a00440723","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    lsn_port_id \u003d Column(String(36), primary_key\u003dTrue)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    lsn_id \u003d Column(String(36), ForeignKey(\u0027lsn.lsn_id\u0027, ondelete\u003d\"CASCADE\"))"},{"line_number":40,"context_line":"    sub_id \u003d Column(String(36), nullable\u003dFalse, unique\u003dTrue)"},{"line_number":41,"context_line":"    mac_addr \u003d Column(String(32), nullable\u003dFalse, unique\u003dTrue)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def __init__(self, lsn_port_id, subnet_id, mac_address, lsn_id):"}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAATn%2F%2FpdM%3D","line":40,"updated":"2013-10-30 23:47:20.000000000","message":"nit: can we use subnet_id and mac_address for consistency we use mac_address and subnet_id everywhere already.","commit_id":"68f1570160a54fe19645a2db3024ae0b4febdfcb"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"999675cf6065e47dbd5969f285446e3a00440723","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"class Lsn(models_v2.model_base.BASEV2):"},{"line_number":51,"context_line":"    __tablename__ \u003d \u0027lsn\u0027"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    lsn_id \u003d Column(String(36), primary_key\u003dTrue)"},{"line_number":54,"context_line":"    net_id \u003d Column(String(36), nullable\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAATn%2F%2FpdE%3D","line":51,"updated":"2013-10-30 23:47:20.000000000","message":"+s","commit_id":"68f1570160a54fe19645a2db3024ae0b4febdfcb"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"999675cf6065e47dbd5969f285446e3a00440723","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    __tablename__ \u003d \u0027lsn\u0027"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    lsn_id \u003d Column(String(36), primary_key\u003dTrue)"},{"line_number":54,"context_line":"    net_id \u003d Column(String(36), nullable\u003dFalse)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def __init__(self, net_id, lsn_id):"},{"line_number":57,"context_line":"        self.net_id \u003d net_id"}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAATn%2F%2Fpc8%3D","line":54,"updated":"2013-10-30 23:47:20.000000000","message":"network_id","commit_id":"68f1570160a54fe19645a2db3024ae0b4febdfcb"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"14d670d9821c1aa0b0394132621d49e85a02103a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2013 VMware, Inc."},{"line_number":2,"context_line":"# All Rights Reserved"},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":32,"id":"AAAAUX%2F%2Fw4g%3D","line":1,"updated":"2014-02-10 23:33:02.000000000","message":"meh it\u0027s 2014 now. Does not matter to me.\n\nYou or somebody else can sort this out with a follow-up patch.","commit_id":"2314e4312e66fb247ca72c49b03791222ab84649"}],"neutron/plugins/nicira/dhcp_meta/combined.py":[{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"999675cf6065e47dbd5969f285446e3a00440723","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        self.agentless_notifier \u003d nvp_svc.DhcpAgentNotifyAPI(plugin, manager)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def notify(self, context, data, methodname):"},{"line_number":33,"context_line":"        [resource, action, _e] \u003d methodname.split(\u0027.\u0027)"},{"line_number":34,"context_line":"        lsn_manager \u003d self.agentless_notifier.plugin.lsn_manager"},{"line_number":35,"context_line":"        plugin \u003d self.agentless_notifier.plugin"},{"line_number":36,"context_line":"        if resource \u003d\u003d \u0027network\u0027:"}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAATn%2F%2FpT8%3D","line":33,"updated":"2013-10-30 23:47:20.000000000","message":"if you want to get ride of  _e this could be written as: \n\nresource, action \u003d methodname.split(\u0027.\u0027)[:2]","commit_id":"68f1570160a54fe19645a2db3024ae0b4febdfcb"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"999675cf6065e47dbd5969f285446e3a00440723","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        network_id \u003d subnet[\u0027network_id\u0027]"},{"line_number":88,"context_line":"        if plugin.lsn_manager.lsn_exists(context, network_id):"},{"line_number":89,"context_line":"            nvp_svc.handle_router_metadata_access("},{"line_number":90,"context_line":"                plugin, context, router_id, interface)"},{"line_number":91,"context_line":"        else:"},{"line_number":92,"context_line":"            nvp_rpc.handle_router_metadata_access("},{"line_number":93,"context_line":"                plugin, context, router_id, interface)"}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAATn%2F%2FpSk%3D","line":90,"updated":"2013-10-30 23:47:20.000000000","message":"nit: if you put a return statement here you could remove 91-94","commit_id":"68f1570160a54fe19645a2db3024ae0b4febdfcb"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"14d670d9821c1aa0b0394132621d49e85a02103a","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    def __init__(self, plugin, manager):"},{"line_number":27,"context_line":"        super(DhcpAgentNotifyAPI, self).__init__(topic\u003dtopics.DHCP_AGENT)"},{"line_number":28,"context_line":"        self.agentless_notifier \u003d nvp_svc.DhcpAgentNotifyAPI(plugin, manager)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def notify(self, context, data, methodname):"},{"line_number":31,"context_line":"        [resource, action, _e] \u003d methodname.split(\u0027.\u0027)"}],"source_content_type":"text/x-python","patch_set":32,"id":"AAAAUX%2F%2FwzE%3D","line":28,"updated":"2014-02-10 23:33:02.000000000","message":"opinion: it\u0027s a bit confusing, at the least to the untrained eye, mixing composition and inheritance.\n\nPerhaps it might be worth thinking of doing composition only in a follow-up patch.","commit_id":"2314e4312e66fb247ca72c49b03791222ab84649"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"f517d07d8aad636493798fad84f7ae42973bf47e","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    def __init__(self, plugin, manager):"},{"line_number":27,"context_line":"        super(DhcpAgentNotifyAPI, self).__init__(topic\u003dtopics.DHCP_AGENT)"},{"line_number":28,"context_line":"        self.agentless_notifier \u003d nvp_svc.DhcpAgentNotifyAPI(plugin, manager)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def notify(self, context, data, methodname):"},{"line_number":31,"context_line":"        [resource, action, _e] \u003d methodname.split(\u0027.\u0027)"}],"source_content_type":"text/x-python","patch_set":32,"id":"AAAAUX%2F%2FwbE%3D","line":28,"in_reply_to":"AAAAUX%2F%2FwzE%3D","updated":"2014-02-11 00:48:00.000000000","message":"I think that combination of (is-a, has-a) relationships best describes the role of this notifier: it acts like a notifier of the old model, and uses the services of the new notifier when required. If I used composition across the board I would needed to re-implement even methods that didn\u0027t have to.","commit_id":"2314e4312e66fb247ca72c49b03791222ab84649"}],"neutron/plugins/nicira/dhcp_meta/constants.py":[{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"999675cf6065e47dbd5969f285446e3a00440723","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from neutron.db import l3_db"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"# A unique MAC to quickly identify the LSN port used for metadata services"},{"line_number":22,"context_line":"# when dhcp on the subnet is off. Inspired by leet-speak for \u0027metadata\u0027."},{"line_number":23,"context_line":"METADATA_MAC \u003d \"fa:15:73:74:d4:74\""},{"line_number":24,"context_line":"METADATA_PORT_ID \u003d \u0027metadata:id\u0027"},{"line_number":25,"context_line":"METADATA_PORT_NAME \u003d \u0027metadata:name\u0027"}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAATn%2F%2FpSY%3D","line":22,"updated":"2013-10-30 23:47:20.000000000","message":"nit: 1337 speak :P","commit_id":"68f1570160a54fe19645a2db3024ae0b4febdfcb"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"14d670d9821c1aa0b0394132621d49e85a02103a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2013 VMware, Inc."},{"line_number":2,"context_line":"# All Rights Reserved"},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":32,"id":"AAAAUX%2F%2Fw2s%3D","line":1,"updated":"2014-02-10 23:33:02.000000000","message":"meh","commit_id":"2314e4312e66fb247ca72c49b03791222ab84649"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"f517d07d8aad636493798fad84f7ae42973bf47e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2013 VMware, Inc."},{"line_number":2,"context_line":"# All Rights Reserved"},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":32,"id":"AAAAUX%2F%2Fwa0%3D","line":1,"in_reply_to":"AAAAUX%2F%2Fw2s%3D","updated":"2014-02-11 00:48:00.000000000","message":"Done","commit_id":"2314e4312e66fb247ca72c49b03791222ab84649"}],"neutron/plugins/nicira/dhcp_meta/lsnmanager.py":[{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"999675cf6065e47dbd5969f285446e3a00440723","unresolved":false,"context_lines":[{"line_number":72,"context_line":"                raise p_exc.LsnNotFound(entity\u003d\u0027network\u0027,"},{"line_number":73,"context_line":"                                        entity_id\u003dnetwork_id)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    def lsn_create(self, context, network_id):"},{"line_number":76,"context_line":"        \"\"\"Create a LSN associated to the network.\"\"\""},{"line_number":77,"context_line":"        try:"},{"line_number":78,"context_line":"            return lsn_api.lsn_for_network_create(self.cluster, network_id)"}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAATn%2F%2FpRY%3D","line":75,"updated":"2013-10-30 23:47:20.000000000","message":"Just curious do we pass context to create/delete just because there is a lsn_create() in the base class that needs that for creating it in the db? Actually  It\u0027s because this is part of the extension and we pass that in by default right?","commit_id":"68f1570160a54fe19645a2db3024ae0b4febdfcb"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"999675cf6065e47dbd5969f285446e3a00440723","unresolved":false,"context_lines":[{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def lsn_delete_by_network(self, context, network_id):"},{"line_number":91,"context_line":"        \"\"\"Delete a LSN associated to the network.\"\"\""},{"line_number":92,"context_line":"        lsn_id \u003d self.lsn_get(context, network_id, raise_on_err\u003dFalse)"},{"line_number":93,"context_line":"        if lsn_id:"},{"line_number":94,"context_line":"            self.lsn_delete(context, lsn_id)"},{"line_number":95,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAATn%2F%2FpSE%3D","line":92,"updated":"2013-10-30 23:47:20.000000000","message":"should we just issue a delete directly rather than doing a get to save us the operation? I\u0027m fine with having it there if so.","commit_id":"68f1570160a54fe19645a2db3024ae0b4febdfcb"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"999675cf6065e47dbd5969f285446e3a00440723","unresolved":false,"context_lines":[{"line_number":109,"context_line":"                    raise p_exc.LsnPortNotFound(lsn_id\u003dlsn_id,"},{"line_number":110,"context_line":"                                                entity\u003d\u0027subnet\u0027,"},{"line_number":111,"context_line":"                                                entity_id\u003dsubnet_id)"},{"line_number":112,"context_line":"                return (lsn_id, None)"},{"line_number":113,"context_line":"            else:"},{"line_number":114,"context_line":"                return (lsn_id, lsn_port_id)"},{"line_number":115,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAATn%2F%2FpR4%3D","line":112,"updated":"2013-10-30 23:47:20.000000000","message":"could we collapse all of this into just one return of (lsn_id, lsn_port_id)?","commit_id":"68f1570160a54fe19645a2db3024ae0b4febdfcb"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"999675cf6065e47dbd5969f285446e3a00440723","unresolved":false,"context_lines":[{"line_number":131,"context_line":"                    raise p_exc.LsnPortNotFound(lsn_id\u003dlsn_id,"},{"line_number":132,"context_line":"                                                entity\u003d\u0027MAC\u0027,"},{"line_number":133,"context_line":"                                                entity_id\u003dmac)"},{"line_number":134,"context_line":"                return (lsn_id, None)"},{"line_number":135,"context_line":"            else:"},{"line_number":136,"context_line":"                return (lsn_id, lsn_port_id)"},{"line_number":137,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAATn%2F%2FpR0%3D","line":134,"updated":"2013-10-30 23:47:20.000000000","message":"ditto","commit_id":"68f1570160a54fe19645a2db3024ae0b4febdfcb"}],"neutron/plugins/nicira/dhcp_meta/migration.py":[{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"999675cf6065e47dbd5969f285446e3a00440723","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        for port in ports:"},{"line_number":60,"context_line":"            if port[\u0027fixed_ips\u0027][0][\u0027subnet_id\u0027] \u003d\u003d subnet[\u0027id\u0027]:"},{"line_number":61,"context_line":"                return port[\u0027device_id\u0027]"},{"line_number":62,"context_line":"        else:"},{"line_number":63,"context_line":"            raise n_exc.NotFound()"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def metadata_deallocate(self, context, router_id, subnet_id):"}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAATn%2F%2FpQs%3D","line":62,"updated":"2013-10-30 23:47:20.000000000","message":"nit: doesn\u0027t matter but else is unneed could just raise here instead. Probably helpful to raise SubnetNotFound(subnet_id\u003dsubnet[\u0027id\u0027])  too","commit_id":"68f1570160a54fe19645a2db3024ae0b4febdfcb"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"999675cf6065e47dbd5969f285446e3a00440723","unresolved":false,"context_lines":[{"line_number":123,"context_line":"        subnets \u003d self.plugin.get_subnets(context, filters\u003dfilters)"},{"line_number":124,"context_line":"        count \u003d len(subnets)"},{"line_number":125,"context_line":"        if count \u003d\u003d 0:"},{"line_number":126,"context_line":"            return None"},{"line_number":127,"context_line":"        elif count \u003d\u003d 1 and subnets[0][\u0027cidr\u0027] \u003d\u003d rpc.METADATA_SUBNET_CIDR:"},{"line_number":128,"context_line":"            reason \u003d _(\"Cannot migrate a \u0027metadata\u0027 network\")"},{"line_number":129,"context_line":"            raise n_exc.BadRequest(resource\u003d\u0027network\u0027, msg\u003dreason)"}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAATn%2F%2FpQc%3D","line":126,"updated":"2013-10-30 23:47:20.000000000","message":"nit: return","commit_id":"68f1570160a54fe19645a2db3024ae0b4febdfcb"}],"neutron/plugins/nicira/extensions/lsn.py":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"14d670d9821c1aa0b0394132621d49e85a02103a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2013 VMware, Inc."},{"line_number":2,"context_line":"# All Rights Reserved"},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":32,"id":"AAAAUX%2F%2Fw50%3D","line":1,"updated":"2014-02-10 23:33:02.000000000","message":"meh it\u0027s 2014 now","commit_id":"2314e4312e66fb247ca72c49b03791222ab84649"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"14d670d9821c1aa0b0394132621d49e85a02103a","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"class Lsn(object):"},{"line_number":40,"context_line":"    \"\"\"Extension class supporting logical services node.\"\"\""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    @classmethod"},{"line_number":43,"context_line":"    def get_name(cls):"}],"source_content_type":"text/x-python","patch_set":32,"id":"AAAAUX%2F%2Fw5M%3D","line":40,"updated":"2014-02-10 23:33:02.000000000","message":"Does this extension class support logical service nodes or does it enable logical service node support for neutron networks?\n\nIf the semantic is different this might affect also get_name and get_description","commit_id":"2314e4312e66fb247ca72c49b03791222ab84649"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"f517d07d8aad636493798fad84f7ae42973bf47e","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"class Lsn(object):"},{"line_number":40,"context_line":"    \"\"\"Extension class supporting logical services node.\"\"\""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    @classmethod"},{"line_number":43,"context_line":"    def get_name(cls):"}],"source_content_type":"text/x-python","patch_set":32,"id":"AAAAUX%2F%2Fwac%3D","line":40,"in_reply_to":"AAAAUX%2F%2Fw5M%3D","updated":"2014-02-11 00:48:00.000000000","message":"I\u0027ll rephrase.","commit_id":"2314e4312e66fb247ca72c49b03791222ab84649"}],"neutron/plugins/nicira/shell/__init__.py":[{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"999675cf6065e47dbd5969f285446e3a00440723","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"def main():"},{"line_number":42,"context_line":"    return NsxManage(shell.NEUTRON_API_VERSION).run(sys.argv[1:])"}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAATn%2F%2FpP4%3D","line":42,"updated":"2013-10-30 23:47:20.000000000","message":"nit: argv[1:] can be [] not sure if that\u0027s okay.","commit_id":"68f1570160a54fe19645a2db3024ae0b4febdfcb"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"14d670d9821c1aa0b0394132621d49e85a02103a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2013 VMware, Inc."},{"line_number":2,"context_line":"# All Rights Reserved"},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":32,"id":"AAAAUX%2F%2FwyU%3D","line":1,"updated":"2014-02-10 23:33:02.000000000","message":"2014...","commit_id":"2314e4312e66fb247ca72c49b03791222ab84649"}]}
