)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"ba9f2fc42b1caa06769b444177f59a0568090a85","unresolved":false,"context_lines":[{"line_number":12,"context_line":"This patch adds a derived attribute to the network as part of the"},{"line_number":13,"context_line":"address scopes extension that will show related address scopes"},{"line_number":14,"context_line":"when viewing a network through the API."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: Ib1657636033ad2c0009d50ebe7c5ae4f72f6b175"},{"line_number":17,"context_line":"Closes-Bug: #1547380"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"bae84128_b3b1f249","line":15,"updated":"2016-02-22 19:43:27.000000000","message":"This is an API change so it requires APIImpact and a release note. The extension is now adding extra information","commit_id":"0d385b753c74426a2534b3ce27ebfa7563afcf4f"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"2850a15544f8ef9c512cdfc146043669a4ec0a5d","unresolved":false,"context_lines":[{"line_number":12,"context_line":"This patch adds a derived attribute to the network as part of the"},{"line_number":13,"context_line":"address scopes extension that will show related address scopes"},{"line_number":14,"context_line":"when viewing a network through the API."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: Ib1657636033ad2c0009d50ebe7c5ae4f72f6b175"},{"line_number":17,"context_line":"Closes-Bug: #1547380"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"bae84128_02283c99","line":15,"in_reply_to":"bae84128_b3b1f249","updated":"2016-02-23 03:51:01.000000000","message":"Done","commit_id":"0d385b753c74426a2534b3ce27ebfa7563afcf4f"}],"neutron/db/address_scope_db.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"ba9f2fc42b1caa06769b444177f59a0568090a85","unresolved":false,"context_lines":[{"line_number":135,"context_line":"        for subnetpool in subnetpools:"},{"line_number":136,"context_line":"            as_id \u003d subnetpool[ext_address_scope.ADDRESS_SCOPE_ID]"},{"line_number":137,"context_line":"            if subnetpool[\u0027ip_version\u0027] \u003d\u003d constants.IP_VERSION_4:"},{"line_number":138,"context_line":"                network_res[ext_address_scope.IPV4_ADDRESS_SCOPE] \u003d as_id"},{"line_number":139,"context_line":"            if subnetpool[\u0027ip_version\u0027] \u003d\u003d constants.IP_VERSION_6:"},{"line_number":140,"context_line":"                network_res[ext_address_scope.IPV6_ADDRESS_SCOPE] \u003d as_id"},{"line_number":141,"context_line":"        return network_res"}],"source_content_type":"text/x-python","patch_set":2,"id":"bae84128_53f6a6f9","line":138,"updated":"2016-02-22 19:43:27.000000000","message":"so this value can be over written? That is if there is more than one entry?","commit_id":"0d385b753c74426a2534b3ce27ebfa7563afcf4f"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"2850a15544f8ef9c512cdfc146043669a4ec0a5d","unresolved":false,"context_lines":[{"line_number":135,"context_line":"        for subnetpool in subnetpools:"},{"line_number":136,"context_line":"            as_id \u003d subnetpool[ext_address_scope.ADDRESS_SCOPE_ID]"},{"line_number":137,"context_line":"            if subnetpool[\u0027ip_version\u0027] \u003d\u003d constants.IP_VERSION_4:"},{"line_number":138,"context_line":"                network_res[ext_address_scope.IPV4_ADDRESS_SCOPE] \u003d as_id"},{"line_number":139,"context_line":"            if subnetpool[\u0027ip_version\u0027] \u003d\u003d constants.IP_VERSION_6:"},{"line_number":140,"context_line":"                network_res[ext_address_scope.IPV6_ADDRESS_SCOPE] \u003d as_id"},{"line_number":141,"context_line":"        return network_res"}],"source_content_type":"text/x-python","patch_set":2,"id":"bae84128_8584565e","line":138,"in_reply_to":"bae84128_53f6a6f9","updated":"2016-02-23 03:51:01.000000000","message":"A network will be constrained to only one pool per address family. This is implemented in [1]. I will add a comment here to avoid future confusion. \n\n[1] https://bugs.launchpad.net/neutron/+bug/1451559","commit_id":"0d385b753c74426a2534b3ce27ebfa7563afcf4f"}],"neutron/db/models_v2.py":[{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"9ef1e773fed8534a45b668f8d5e0fd0a72c1d4bb","unresolved":false,"context_lines":[{"line_number":183,"context_line":"    name \u003d sa.Column(sa.String(attr.NAME_MAX_LEN))"},{"line_number":184,"context_line":"    network_id \u003d sa.Column(sa.String(36), sa.ForeignKey(\u0027networks.id\u0027))"},{"line_number":185,"context_line":"    subnetpool_id \u003d sa.Column(sa.String(36), index\u003dTrue)"},{"line_number":186,"context_line":"    # Note(xiaohhui): Explicitly specify join conditions for the relationship,"},{"line_number":187,"context_line":"    # because subnetpool_id in subnet might be \u0027prefix_delegation\u0027, when the"},{"line_number":188,"context_line":"    # IPv6 Prefix Delegation is enabled"},{"line_number":189,"context_line":"    subnetpool \u003d orm.relationship("}],"source_content_type":"text/x-python","patch_set":1,"id":"bae84128_3c4bf888","line":186,"range":{"start_line":186,"start_character":10,"end_line":186,"end_character":20},"updated":"2016-02-22 18:39:28.000000000","message":"Notes don\u0027t generally carry a name like TODOs do.","commit_id":"0da34461d8e56dbec23cde6c6a77394a8912d5d8"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"9ef1e773fed8534a45b668f8d5e0fd0a72c1d4bb","unresolved":false,"context_lines":[{"line_number":184,"context_line":"    network_id \u003d sa.Column(sa.String(36), sa.ForeignKey(\u0027networks.id\u0027))"},{"line_number":185,"context_line":"    subnetpool_id \u003d sa.Column(sa.String(36), index\u003dTrue)"},{"line_number":186,"context_line":"    # Note(xiaohhui): Explicitly specify join conditions for the relationship,"},{"line_number":187,"context_line":"    # because subnetpool_id in subnet might be \u0027prefix_delegation\u0027, when the"},{"line_number":188,"context_line":"    # IPv6 Prefix Delegation is enabled"},{"line_number":189,"context_line":"    subnetpool \u003d orm.relationship("},{"line_number":190,"context_line":"        \u0027SubnetPool\u0027, lazy\u003d\u0027joined\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"bae84128_dc1c8cc3","line":187,"range":{"start_line":187,"start_character":48,"end_line":187,"end_character":65},"updated":"2016-02-22 18:39:28.000000000","message":"I knew this was going to bite us.  This has been on my mind for a while.  I wonder if the prefix_delegation should be stored as a real subnet pool.  Of course, the allocation code should not allocate anything from it.  I wonder if we could accomplish that my adding \u0027prefix_delegation\u0027 as a subnet with an empty allocation pool or something.  I guess that could be work for another patch set.","commit_id":"0da34461d8e56dbec23cde6c6a77394a8912d5d8"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"5d2519334d215842769c8d2f675b2f7072c75286","unresolved":false,"context_lines":[{"line_number":187,"context_line":"    # subnetpool_id in subnet might be \u0027prefix_delegation\u0027 when the IPv6 Prefix"},{"line_number":188,"context_line":"    # Delegation is enabled"},{"line_number":189,"context_line":"    subnetpool \u003d orm.relationship("},{"line_number":190,"context_line":"        \u0027SubnetPool\u0027, lazy\u003d\u0027joined\u0027,"},{"line_number":191,"context_line":"        foreign_keys\u003d\u0027Subnet.subnetpool_id\u0027,"},{"line_number":192,"context_line":"        primaryjoin\u003d\u0027Subnet.subnetpool_id\u003d\u003dSubnetPool.id\u0027)"},{"line_number":193,"context_line":"    ip_version \u003d sa.Column(sa.Integer, nullable\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bae84128_32b79fd9","line":190,"range":{"start_line":190,"start_character":9,"end_line":190,"end_character":19},"updated":"2016-02-22 19:04:57.000000000","message":"I wonder if this could be specified using the class below instead of a string here.  Same question for the rest of the strings in this statement.","commit_id":"0d385b753c74426a2534b3ce27ebfa7563afcf4f"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"2850a15544f8ef9c512cdfc146043669a4ec0a5d","unresolved":false,"context_lines":[{"line_number":187,"context_line":"    # subnetpool_id in subnet might be \u0027prefix_delegation\u0027 when the IPv6 Prefix"},{"line_number":188,"context_line":"    # Delegation is enabled"},{"line_number":189,"context_line":"    subnetpool \u003d orm.relationship("},{"line_number":190,"context_line":"        \u0027SubnetPool\u0027, lazy\u003d\u0027joined\u0027,"},{"line_number":191,"context_line":"        foreign_keys\u003d\u0027Subnet.subnetpool_id\u0027,"},{"line_number":192,"context_line":"        primaryjoin\u003d\u0027Subnet.subnetpool_id\u003d\u003dSubnetPool.id\u0027)"},{"line_number":193,"context_line":"    ip_version \u003d sa.Column(sa.Integer, nullable\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bae84128_e5a28298","line":190,"range":{"start_line":190,"start_character":9,"end_line":190,"end_character":19},"in_reply_to":"bae84128_32b79fd9","updated":"2016-02-23 03:51:01.000000000","message":"I don\u0027t think so. I have tried to use class instead of string, however, it will report error with \"name \u0027SubnetPool\u0027 is not defined\". I think it is because the class SubnetPool is defined after this line.","commit_id":"0d385b753c74426a2534b3ce27ebfa7563afcf4f"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"5d2519334d215842769c8d2f675b2f7072c75286","unresolved":false,"context_lines":[{"line_number":188,"context_line":"    # Delegation is enabled"},{"line_number":189,"context_line":"    subnetpool \u003d orm.relationship("},{"line_number":190,"context_line":"        \u0027SubnetPool\u0027, lazy\u003d\u0027joined\u0027,"},{"line_number":191,"context_line":"        foreign_keys\u003d\u0027Subnet.subnetpool_id\u0027,"},{"line_number":192,"context_line":"        primaryjoin\u003d\u0027Subnet.subnetpool_id\u003d\u003dSubnetPool.id\u0027)"},{"line_number":193,"context_line":"    ip_version \u003d sa.Column(sa.Integer, nullable\u003dFalse)"},{"line_number":194,"context_line":"    cidr \u003d sa.Column(sa.String(64), nullable\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bae84128_32a2ffae","line":191,"range":{"start_line":191,"start_character":8,"end_line":191,"end_character":20},"updated":"2016-02-22 19:04:57.000000000","message":"I don\u0027t think this requires a migration because I don\u0027t think it affects the schema at the database level [1].\n\n [1] http://docs.sqlalchemy.org/en/latest/orm/relationship_api.html#sqlalchemy.orm.relationship.params.foreign_keys","commit_id":"0d385b753c74426a2534b3ce27ebfa7563afcf4f"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"ba9f2fc42b1caa06769b444177f59a0568090a85","unresolved":false,"context_lines":[{"line_number":188,"context_line":"    # Delegation is enabled"},{"line_number":189,"context_line":"    subnetpool \u003d orm.relationship("},{"line_number":190,"context_line":"        \u0027SubnetPool\u0027, lazy\u003d\u0027joined\u0027,"},{"line_number":191,"context_line":"        foreign_keys\u003d\u0027Subnet.subnetpool_id\u0027,"},{"line_number":192,"context_line":"        primaryjoin\u003d\u0027Subnet.subnetpool_id\u003d\u003dSubnetPool.id\u0027)"},{"line_number":193,"context_line":"    ip_version \u003d sa.Column(sa.Integer, nullable\u003dFalse)"},{"line_number":194,"context_line":"    cidr \u003d sa.Column(sa.String(64), nullable\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bae84128_537fc665","line":191,"range":{"start_line":191,"start_character":8,"end_line":191,"end_character":20},"in_reply_to":"bae84128_32a2ffae","updated":"2016-02-22 19:43:27.000000000","message":"I think that this requires a migration but am not 100% sure.","commit_id":"0d385b753c74426a2534b3ce27ebfa7563afcf4f"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"2850a15544f8ef9c512cdfc146043669a4ec0a5d","unresolved":false,"context_lines":[{"line_number":188,"context_line":"    # Delegation is enabled"},{"line_number":189,"context_line":"    subnetpool \u003d orm.relationship("},{"line_number":190,"context_line":"        \u0027SubnetPool\u0027, lazy\u003d\u0027joined\u0027,"},{"line_number":191,"context_line":"        foreign_keys\u003d\u0027Subnet.subnetpool_id\u0027,"},{"line_number":192,"context_line":"        primaryjoin\u003d\u0027Subnet.subnetpool_id\u003d\u003dSubnetPool.id\u0027)"},{"line_number":193,"context_line":"    ip_version \u003d sa.Column(sa.Integer, nullable\u003dFalse)"},{"line_number":194,"context_line":"    cidr \u003d sa.Column(sa.String(64), nullable\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bae84128_45da4e18","line":191,"range":{"start_line":191,"start_character":8,"end_line":191,"end_character":20},"in_reply_to":"bae84128_537fc665","updated":"2016-02-23 03:51:01.000000000","message":"I agree with Carl that no migration is needed.","commit_id":"0d385b753c74426a2534b3ce27ebfa7563afcf4f"}],"neutron/extensions/address_scope.py":[{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"9ef1e773fed8534a45b668f8d5e0fd0a72c1d4bb","unresolved":false,"context_lines":[{"line_number":67,"context_line":"                           \u0027is_visible\u0027: True}"},{"line_number":68,"context_line":"    },"},{"line_number":69,"context_line":"    attr.NETWORKS: {"},{"line_number":70,"context_line":"        IPV4_ADDRESS_SCOPE: {\u0027allow_post\u0027: False, \u0027allow_put\u0027: False,"},{"line_number":71,"context_line":"              \u0027is_visible\u0027: True},"},{"line_number":72,"context_line":"        IPV6_ADDRESS_SCOPE: {\u0027allow_post\u0027: False, \u0027allow_put\u0027: False,"},{"line_number":73,"context_line":"              \u0027is_visible\u0027: True},"}],"source_content_type":"text/x-python","patch_set":1,"id":"bae84128_b7c5618f","line":70,"range":{"start_line":70,"start_character":29,"end_line":70,"end_character":68},"updated":"2016-02-22 18:39:28.000000000","message":"nit:  Line these up, one per line with format to match above.","commit_id":"0da34461d8e56dbec23cde6c6a77394a8912d5d8"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"ba9f2fc42b1caa06769b444177f59a0568090a85","unresolved":false,"context_lines":[{"line_number":66,"context_line":"                           \u0027validate\u0027: {\u0027type:uuid_or_none\u0027: None},"},{"line_number":67,"context_line":"                           \u0027is_visible\u0027: True}"},{"line_number":68,"context_line":"    },"},{"line_number":69,"context_line":"    attr.NETWORKS: {"},{"line_number":70,"context_line":"        IPV4_ADDRESS_SCOPE: {\u0027allow_post\u0027: False,"},{"line_number":71,"context_line":"                             \u0027allow_put\u0027: False,"},{"line_number":72,"context_line":"                             \u0027is_visible\u0027: True},"}],"source_content_type":"text/x-python","patch_set":2,"id":"bae84128_f3b7fa37","line":69,"updated":"2016-02-22 19:43:27.000000000","message":"This is why we need the API Impact","commit_id":"0d385b753c74426a2534b3ce27ebfa7563afcf4f"}]}
