)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"e5610e1f407da9f10a23f45e4ec8e633280ad9f4","unresolved":false,"context_lines":[{"line_number":3,"context_line":"AuthorDate: 2013-07-19 21:02:27 +0800"},{"line_number":4,"context_line":"Commit:     Zang MingJie \u003czealot0630@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2013-07-30 22:13:34 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Modular L2 TypeDriver extra port information (WIP)"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Provides a mechanism where TypeDriver can provide extra information to agent"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAAQn%2F%2FeG0%3D","line":6,"updated":"2013-07-30 17:14:27.000000000","message":"This is no longer WIP, remove this from the commit message.","commit_id":"2976fad338fd825215899c2e955b9269b9158276"}],"neutron/db/migration/alembic_migrations/versions/250fefed41af_ml2_port_info.py":[{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"984df43b06639579ede4cd09f25d1bd01431b2d4","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"# XXX(zangmingjie): the following data migrate script is only tested against"},{"line_number":70,"context_line":"#                   MYSQL"},{"line_number":71,"context_line":"def upgrade(active_plugins\u003dNone, options\u003dNone):"},{"line_number":72,"context_line":"    if not migration.should_run(active_plugins, migration_for_plugins):"},{"line_number":73,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9XRM%3D","line":70,"updated":"2013-12-12 10:36:23.000000000","message":"It\u0027s easy to test against sqlite because unittests run with sqlite.","commit_id":"dad769cf274b35ac68069be58f7a65b0b66b35ca"},{"author":{"_account_id":7170,"name":"Zang MingJie","email":"zealot0630@gmail.com","username":"zealot"},"change_message_id":"f3d4e9b102cd1ada04ff4cff921504d08fe40dbc","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"# XXX(zangmingjie): the following data migrate script is only tested against"},{"line_number":70,"context_line":"#                   MYSQL"},{"line_number":71,"context_line":"def upgrade(active_plugins\u003dNone, options\u003dNone):"},{"line_number":72,"context_line":"    if not migration.should_run(active_plugins, migration_for_plugins):"},{"line_number":73,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9Wgs%3D","line":70,"in_reply_to":"AAAATn%2F9XRM%3D","updated":"2013-12-12 11:38:51.000000000","message":"does unittests run upgrade/downgrade with data filled, or empty table only schema test ?","commit_id":"dad769cf274b35ac68069be58f7a65b0b66b35ca"}],"neutron/plugins/linuxbridge/agent/linuxbridge_neutron_agent.py":[{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"1fcc7a85a03fa4a025c31856d74dc6695c2f0ebf","unresolved":false,"context_lines":[{"line_number":891,"context_line":"            if \u0027port_id\u0027 in details:"},{"line_number":892,"context_line":"                LOG.info(_(\"Port %(device)s updated. Details: %(details)s\"),"},{"line_number":893,"context_line":"                         {\u0027device\u0027: device, \u0027details\u0027: details})"},{"line_number":894,"context_line":"                if details[\u0027admin_state_up\u0027]:"},{"line_number":895,"context_line":"                    # create the networking for the port"},{"line_number":896,"context_line":"                    network_type \u003d details.get(\u0027network_type\u0027)"},{"line_number":897,"context_line":"                    if network_type:"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9S7M%3D","line":894,"updated":"2013-12-12 22:44:03.000000000","message":"should be fixed this part too.","commit_id":"8bffbc6a3772cedbf024231dba2e98c03ebdb13e"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"cf5c918d7ffb81f6eba8ff52a8387a9914196db7","unresolved":false,"context_lines":[{"line_number":891,"context_line":"            if \u0027port_id\u0027 in details:"},{"line_number":892,"context_line":"                LOG.info(_(\"Port %(device)s updated. Details: %(details)s\"),"},{"line_number":893,"context_line":"                         {\u0027device\u0027: device, \u0027details\u0027: details})"},{"line_number":894,"context_line":"                if details[\u0027admin_state_up\u0027]:"},{"line_number":895,"context_line":"                    # create the networking for the port"},{"line_number":896,"context_line":"                    network_type \u003d details.get(\u0027network_type\u0027)"},{"line_number":897,"context_line":"                    if network_type:"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9S5I%3D","line":894,"in_reply_to":"AAAATn%2F9S7M%3D","updated":"2013-12-12 22:54:10.000000000","message":"sorry. mistake. discard above comment.","commit_id":"8bffbc6a3772cedbf024231dba2e98c03ebdb13e"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"cf5c918d7ffb81f6eba8ff52a8387a9914196db7","unresolved":false,"context_lines":[{"line_number":902,"context_line":"                        (network_type,"},{"line_number":903,"context_line":"                         segmentation_id) \u003d lconst.interpret_vlan_id(vlan_id)"},{"line_number":904,"context_line":"                    if self.br_mgr.add_interface(details[\u0027network_id\u0027],"},{"line_number":905,"context_line":"                                                 network_type,"},{"line_number":906,"context_line":"                                                 details[\u0027physical_network\u0027],"},{"line_number":907,"context_line":"                                                 segmentation_id,"},{"line_number":908,"context_line":"                                                 details[\u0027port_id\u0027]):"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F9S4M%3D","line":905,"updated":"2013-12-12 22:54:10.000000000","message":"shoud be fixed this part too.","commit_id":"8bffbc6a3772cedbf024231dba2e98c03ebdb13e"}],"neutron/plugins/ml2/db.py":[{"author":{"_account_id":2711,"name":"Zhang Hua","display_name":"Zhang Hua","email":"joshua.zhang@canonical.com","username":"zhhuabj"},"change_message_id":"488c84ddc273c93ca98ddfb1fb845b78608ee6ab","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        record \u003d models.NetworkSegment("},{"line_number":37,"context_line":"            id\u003duuidutils.generate_uuid(),"},{"line_number":38,"context_line":"            network_id\u003dnetwork_id,"},{"line_number":39,"context_line":"            network_type\u003dnetwork_type)"},{"line_number":40,"context_line":"        session.add(record)"},{"line_number":41,"context_line":"    LOG.info(_(\"Added segment %(id)s of type %(network_type)s for network\""},{"line_number":42,"context_line":"               \" %(network_id)s\"), record)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAQn%2F%2B9oQ%3D","line":39,"updated":"2013-08-09 08:47:25.000000000","message":"not clear where the segment dictionaries will be stored, like multicast group for VXLAN you said\nand it\u0027s easy to feel confused for the table name of NetworkSegment since the segmentation_id filed has been removed.","commit_id":"c829745f13b9a8bda8e7730c0f033ec58f982afe"},{"author":{"_account_id":7170,"name":"Zang MingJie","email":"zealot0630@gmail.com","username":"zealot"},"change_message_id":"a1a0e6a0d86c39ae7ee385054730a81a21f9fe3f","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        record \u003d models.NetworkSegment("},{"line_number":37,"context_line":"            id\u003duuidutils.generate_uuid(),"},{"line_number":38,"context_line":"            network_id\u003dnetwork_id,"},{"line_number":39,"context_line":"            network_type\u003dnetwork_type)"},{"line_number":40,"context_line":"        session.add(record)"},{"line_number":41,"context_line":"    LOG.info(_(\"Added segment %(id)s of type %(network_type)s for network\""},{"line_number":42,"context_line":"               \" %(network_id)s\"), record)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAQn%2F%2B9hw%3D","line":39,"in_reply_to":"AAAAQn%2F%2B9oQ%3D","updated":"2013-08-09 09:12:17.000000000","message":"All implementation depend field have been moved to underlying type driver. This table only stores the segment type, and all required information can be fetched from the actual type driver.","commit_id":"c829745f13b9a8bda8e7730c0f033ec58f982afe"}],"neutron/plugins/ml2/driver_api.py":[{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"792b34121e893c2e55fa957c77fe3b3f4b9fff7a","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        \"\"\""},{"line_number":127,"context_line":"        pass"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    def get_port_details(self, session, segment, agent_id, port):"},{"line_number":130,"context_line":"        \"\"\"Provide extra information to agent to setup the port."},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"        :param session: database session"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAQn%2F%2FNZ8%3D","line":129,"updated":"2013-08-05 13:51:49.000000000","message":"\u0027get_\u0027 usually means the caller is expecting something to be returned. I would suggest \u0027extend_port_details\u0027 .","commit_id":"cff365872df92b48df0e1716c91622b62662fe4b"}],"neutron/plugins/ml2/driver_context.py":[{"author":{"_account_id":107,"name":"Arvind Somya","email":"arvind.somya@gmail.com","username":"asomya"},"change_message_id":"18625860c09fbf441a16c3699cd53c43d4a8f3c4","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        self._network \u003d network"},{"line_number":36,"context_line":"        self._original_network \u003d original_network"},{"line_number":37,"context_line":"        self._segments \u003d plugin.get_network_segments("},{"line_number":38,"context_line":"            plugin_context.session, network[\u0027id\u0027])"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    @property"},{"line_number":41,"context_line":"    def current(self):"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAATn%2F%2BRFc%3D","line":38,"updated":"2013-11-28 06:37:44.000000000","message":"Does this query the Mechanism drivers for network segments? Should it be querying the type drivers instead?","commit_id":"cfa789a151b909054315bd8ae756be6a7caef523"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"984df43b06639579ede4cd09f25d1bd01431b2d4","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        self._network \u003d network"},{"line_number":36,"context_line":"        self._original_network \u003d original_network"},{"line_number":37,"context_line":"        self._segments \u003d plugin.get_network_segments("},{"line_number":38,"context_line":"            plugin_context.session, network[\u0027id\u0027])"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    @property"},{"line_number":41,"context_line":"    def current(self):"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9XE0%3D","line":38,"updated":"2013-12-12 10:36:23.000000000","message":"unneccesary code churn.","commit_id":"dad769cf274b35ac68069be58f7a65b0b66b35ca"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"a0fbf2e9db6940298d6514db7d3fe8e0bd5c6028","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        self._network \u003d network"},{"line_number":36,"context_line":"        self._original_network \u003d original_network"},{"line_number":37,"context_line":"        self._segments \u003d plugin.get_network_segments("},{"line_number":38,"context_line":"            plugin_context.session, network[\u0027id\u0027])"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    @property"},{"line_number":41,"context_line":"    def current(self):"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9V6E%3D","line":38,"in_reply_to":"AAAATn%2F9Wgg%3D","updated":"2013-12-12 13:38:24.000000000","message":"Oops, you\u0027re right.","commit_id":"dad769cf274b35ac68069be58f7a65b0b66b35ca"},{"author":{"_account_id":7170,"name":"Zang MingJie","email":"zealot0630@gmail.com","username":"zealot"},"change_message_id":"f3d4e9b102cd1ada04ff4cff921504d08fe40dbc","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        self._network \u003d network"},{"line_number":36,"context_line":"        self._original_network \u003d original_network"},{"line_number":37,"context_line":"        self._segments \u003d plugin.get_network_segments("},{"line_number":38,"context_line":"            plugin_context.session, network[\u0027id\u0027])"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    @property"},{"line_number":41,"context_line":"    def current(self):"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9Wgg%3D","line":38,"in_reply_to":"AAAATn%2F9XE0%3D","updated":"2013-12-12 11:38:51.000000000","message":"this is very different, db only fetch base field (id, type), and plugin extends the map with arbitrary field define by type driver (via `extend` call)","commit_id":"dad769cf274b35ac68069be58f7a65b0b66b35ca"}],"neutron/plugins/ml2/drivers/l2pop/mech_driver.py":[{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"984df43b06639579ede4cd09f25d1bd01431b2d4","unresolved":false,"context_lines":[{"line_number":148,"context_line":""},{"line_number":149,"context_line":"        other_fdb_entries \u003d {network_id:"},{"line_number":150,"context_line":"                             {\u0027segment_id\u0027:"},{"line_number":151,"context_line":"                              segment[\u0027provider:segmentation_id\u0027],"},{"line_number":152,"context_line":"                              \u0027network_type\u0027: segment[\u0027network_type\u0027],"},{"line_number":153,"context_line":"                              \u0027ports\u0027: {agent_ip: []}}}"},{"line_number":154,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9XKU%3D","line":151,"updated":"2013-12-12 10:36:23.000000000","message":"nitpick: providernet.SEGMENTATION_ID\nsame blow.","commit_id":"dad769cf274b35ac68069be58f7a65b0b66b35ca"},{"author":{"_account_id":7170,"name":"Zang MingJie","email":"zealot0630@gmail.com","username":"zealot"},"change_message_id":"f3d4e9b102cd1ada04ff4cff921504d08fe40dbc","unresolved":false,"context_lines":[{"line_number":148,"context_line":""},{"line_number":149,"context_line":"        other_fdb_entries \u003d {network_id:"},{"line_number":150,"context_line":"                             {\u0027segment_id\u0027:"},{"line_number":151,"context_line":"                              segment[\u0027provider:segmentation_id\u0027],"},{"line_number":152,"context_line":"                              \u0027network_type\u0027: segment[\u0027network_type\u0027],"},{"line_number":153,"context_line":"                              \u0027ports\u0027: {agent_ip: []}}}"},{"line_number":154,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9Weg%3D","line":151,"in_reply_to":"AAAATn%2F9XKU%3D","updated":"2013-12-12 11:38:51.000000000","message":"Done","commit_id":"dad769cf274b35ac68069be58f7a65b0b66b35ca"}],"neutron/plugins/ml2/drivers/type_gre.py":[{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"984df43b06639579ede4cd09f25d1bd01431b2d4","unresolved":false,"context_lines":[{"line_number":94,"context_line":"                    LOG.debug(_(\"Reserving specific gre tunnel %s outside \""},{"line_number":95,"context_line":"                                \"pool\"),"},{"line_number":96,"context_line":"                              segmentation_id)"},{"line_number":97,"context_line":"                    alloc \u003d GreAllocation(gre_id\u003dsegmentation_id)"},{"line_number":98,"context_line":"                    session.add(alloc)"},{"line_number":99,"context_line":"                alloc.segment_id \u003d segment[\u0027id\u0027]"},{"line_number":100,"context_line":"                segment[provider.SEGMENTATION_ID] \u003d alloc.gre_id"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9WsY%3D","line":97,"updated":"2013-12-12 10:36:23.000000000","message":"Race. table locking or something is necessary.\nThis is an additional new feature to specify gre key. So it should be separated patch because it\u0027s subtle coding.\n\nSame to vlan and vxlan type drivers.","commit_id":"dad769cf274b35ac68069be58f7a65b0b66b35ca"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"a0fbf2e9db6940298d6514db7d3fe8e0bd5c6028","unresolved":false,"context_lines":[{"line_number":94,"context_line":"                    LOG.debug(_(\"Reserving specific gre tunnel %s outside \""},{"line_number":95,"context_line":"                                \"pool\"),"},{"line_number":96,"context_line":"                              segmentation_id)"},{"line_number":97,"context_line":"                    alloc \u003d GreAllocation(gre_id\u003dsegmentation_id)"},{"line_number":98,"context_line":"                    session.add(alloc)"},{"line_number":99,"context_line":"                alloc.segment_id \u003d segment[\u0027id\u0027]"},{"line_number":100,"context_line":"                segment[provider.SEGMENTATION_ID] \u003d alloc.gre_id"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9V6g%3D","line":97,"in_reply_to":"AAAATn%2F9Wb4%3D","updated":"2013-12-12 13:38:24.000000000","message":"Ah,it\u0027s the issue of original code. Not the issue of this patch.\nOkay.","commit_id":"dad769cf274b35ac68069be58f7a65b0b66b35ca"},{"author":{"_account_id":7170,"name":"Zang MingJie","email":"zealot0630@gmail.com","username":"zealot"},"change_message_id":"f3d4e9b102cd1ada04ff4cff921504d08fe40dbc","unresolved":false,"context_lines":[{"line_number":94,"context_line":"                    LOG.debug(_(\"Reserving specific gre tunnel %s outside \""},{"line_number":95,"context_line":"                                \"pool\"),"},{"line_number":96,"context_line":"                              segmentation_id)"},{"line_number":97,"context_line":"                    alloc \u003d GreAllocation(gre_id\u003dsegmentation_id)"},{"line_number":98,"context_line":"                    session.add(alloc)"},{"line_number":99,"context_line":"                alloc.segment_id \u003d segment[\u0027id\u0027]"},{"line_number":100,"context_line":"                segment[provider.SEGMENTATION_ID] \u003d alloc.gre_id"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F9Wb4%3D","line":97,"in_reply_to":"AAAATn%2F9WsY%3D","updated":"2013-12-12 11:38:51.000000000","message":"This is not a new feature, the origin code also support allocating gre_id this way. The code works exactly the same as before, but look for different field (allocated against segment_id !\u003d null). I\u0027ll add some comments to explain the changes.","commit_id":"dad769cf274b35ac68069be58f7a65b0b66b35ca"}],"neutron/plugins/ml2/drivers/type_vlan.py":[{"author":{"_account_id":2711,"name":"Zhang Hua","display_name":"Zhang Hua","email":"joshua.zhang@canonical.com","username":"zhhuabj"},"change_message_id":"488c84ddc273c93ca98ddfb1fb845b78608ee6ab","unresolved":false,"context_lines":[{"line_number":65,"context_line":"                                 primary_key\u003dTrue)"},{"line_number":66,"context_line":"    vlan_id \u003d sa.Column(sa.Integer, nullable\u003dFalse, primary_key\u003dTrue,"},{"line_number":67,"context_line":"                        autoincrement\u003dFalse)"},{"line_number":68,"context_line":"    segment_id \u003d sa.Column(sa.String(36),"},{"line_number":69,"context_line":"                           sa.ForeignKey(\u0027ml2_network_segments.id\u0027,"},{"line_number":70,"context_line":"                                         ondelete\u003d\"RESTRICT\"),"},{"line_number":71,"context_line":"                           nullable\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAQn%2F%2B9oI%3D","line":68,"updated":"2013-08-09 08:47:25.000000000","message":"What special benefits to change the field from allocated to segment_id ?\nand if it\u0027s a must, where is db migration scripts ?","commit_id":"c829745f13b9a8bda8e7730c0f033ec58f982afe"},{"author":{"_account_id":7170,"name":"Zang MingJie","email":"zealot0630@gmail.com","username":"zealot"},"change_message_id":"a1a0e6a0d86c39ae7ee385054730a81a21f9fe3f","unresolved":false,"context_lines":[{"line_number":65,"context_line":"                                 primary_key\u003dTrue)"},{"line_number":66,"context_line":"    vlan_id \u003d sa.Column(sa.Integer, nullable\u003dFalse, primary_key\u003dTrue,"},{"line_number":67,"context_line":"                        autoincrement\u003dFalse)"},{"line_number":68,"context_line":"    segment_id \u003d sa.Column(sa.String(36),"},{"line_number":69,"context_line":"                           sa.ForeignKey(\u0027ml2_network_segments.id\u0027,"},{"line_number":70,"context_line":"                                         ondelete\u003d\"RESTRICT\"),"},{"line_number":71,"context_line":"                           nullable\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAQn%2F%2B9fs%3D","line":68,"in_reply_to":"AAAAQn%2F%2B9oI%3D","updated":"2013-08-09 09:12:17.000000000","message":"It is a must. because vlan_id is removed from NetworkSegment table, segment_id must be use here to figure out which segment the vlan belonged to.\n\nThe implementation is still under discussion, I\u0027ll complete the migration script when it is ready to ship","commit_id":"c829745f13b9a8bda8e7730c0f033ec58f982afe"}],"neutron/plugins/ml2/plugin.py":[{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"792b34121e893c2e55fa957c77fe3b3f4b9fff7a","unresolved":false,"context_lines":[{"line_number":197,"context_line":"                                  segment[api.NETWORK_TYPE],"},{"line_number":198,"context_line":"                                  segment[api.SEGMENTATION_ID],"},{"line_number":199,"context_line":"                                  segment[api.PHYSICAL_NETWORK],"},{"line_number":200,"context_line":"                                  segment)"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"    # TODO(apech): Need to override bulk operations"},{"line_number":203,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAQn%2F%2FNYo%3D","line":200,"updated":"2013-08-05 13:51:49.000000000","message":"We already pass three components of segment, so it does not feel right to throw the whole thing in there at the end. Maybe you can kwargify port_update in the agent notifier:\n\n  self.notifier.port_update(context, port\u003dport, **segment)","commit_id":"cff365872df92b48df0e1716c91622b62662fe4b"},{"author":{"_account_id":107,"name":"Arvind Somya","email":"arvind.somya@gmail.com","username":"asomya"},"change_message_id":"18625860c09fbf441a16c3699cd53c43d4a8f3c4","unresolved":false,"context_lines":[{"line_number":275,"context_line":""},{"line_number":276,"context_line":"    def get_network_segments(self, session, id):"},{"line_number":277,"context_line":"        with session.begin(subtransactions\u003dTrue):"},{"line_number":278,"context_line":"            segments \u003d db.get_network_segments(session, id)"},{"line_number":279,"context_line":"            for segment in segments:"},{"line_number":280,"context_line":"                self.type_manager.extend_segment(session, segment)"},{"line_number":281,"context_line":"            return segments"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAATn%2F%2BRCg%3D","line":278,"updated":"2013-11-28 06:37:44.000000000","message":"Won\u0027t this only return the network types after the DB change to store only the segment type?","commit_id":"cfa789a151b909054315bd8ae756be6a7caef523"}],"neutron/plugins/ml2/rpc.py":[{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"792b34121e893c2e55fa957c77fe3b3f4b9fff7a","unresolved":false,"context_lines":[{"line_number":123,"context_line":"                     \u0027network_type\u0027: segment[api.NETWORK_TYPE],"},{"line_number":124,"context_line":"                     \u0027segmentation_id\u0027: segment[api.SEGMENTATION_ID],"},{"line_number":125,"context_line":"                     \u0027physical_network\u0027: segment[api.PHYSICAL_NETWORK],"},{"line_number":126,"context_line":"                     \u0027segment\u0027: segment}"},{"line_number":127,"context_line":"            LOG.debug(_(\"Returning: %s\"), entry)"},{"line_number":128,"context_line":"            return entry"},{"line_number":129,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAQn%2F%2FNTg%3D","line":126,"updated":"2013-08-05 13:51:49.000000000","message":"Since you put the whole segment in there, entry now contains duplicated information. Try this:\n\n    port_info \u003d {\u0027device\u0027: device,\n                 \u0027network_id\u0027: port.network_id,\n                 \u0027port_id\u0027: port.id,\n                 \u0027admin_state_up\u0027: port.admin_state_up}\n    entry \u003d dict(port_info.items() + segment.items())","commit_id":"cff365872df92b48df0e1716c91622b62662fe4b"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"792b34121e893c2e55fa957c77fe3b3f4b9fff7a","unresolved":false,"context_lines":[{"line_number":201,"context_line":"                         topic\u003dself.topic_network_delete)"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"    def port_update(self, context, port, network_type, segmentation_id,"},{"line_number":204,"context_line":"                    physical_network, segment):"},{"line_number":205,"context_line":"        self.fanout_cast(context,"},{"line_number":206,"context_line":"                         self.make_msg(\u0027port_update\u0027,"},{"line_number":207,"context_line":"                                       port\u003dport,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAQn%2F%2FNV0%3D","line":204,"updated":"2013-08-05 13:51:49.000000000","message":"Consider:\n\n  def port_update(self, context, **kwargs)","commit_id":"cff365872df92b48df0e1716c91622b62662fe4b"}]}
