)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"84da2eaf4dd550edce6f87fc6bc60cc15c08955a","unresolved":false,"context_lines":[{"line_number":10,"context_line":"an AddressScope.  All SubnetPools in an AddressScope must be"},{"line_number":11,"context_line":"from the same address family. A SubnetPool cannot be created"},{"line_number":12,"context_line":"in an AddressScope with a different address family."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: Ibc6de08e0ef58a5da954d13f274f6003012a76cd"},{"line_number":15,"context_line":"Partially-Implements: blueprint address-scopes"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"ba8a016a_286243ae","line":13,"updated":"2015-11-17 09:58:22.000000000","message":"This changes the API so please have DocImact and UpgradeImpact in the commit message","commit_id":"a4b023a825c10aff49e960de4590810573686dfc"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"aadfa27ca4f1947c645b02e175a9d19731512ab4","unresolved":false,"context_lines":[{"line_number":10,"context_line":"an AddressScope.  All SubnetPools in an AddressScope must be"},{"line_number":11,"context_line":"from the same address family. A SubnetPool cannot be created"},{"line_number":12,"context_line":"in an AddressScope with a different address family."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: Ibc6de08e0ef58a5da954d13f274f6003012a76cd"},{"line_number":15,"context_line":"Partially-Implements: blueprint address-scopes"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"ba8a016a_948252ff","line":13,"in_reply_to":"ba8a016a_286243ae","updated":"2015-11-17 16:23:32.000000000","message":"Done","commit_id":"a4b023a825c10aff49e960de4590810573686dfc"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"31c725b291d520bcde50924904ae75b859b470da","unresolved":false,"context_lines":[{"line_number":10,"context_line":"an AddressScope.  All SubnetPools in an AddressScope must be"},{"line_number":11,"context_line":"from the same address family. A SubnetPool cannot be created"},{"line_number":12,"context_line":"in an AddressScope with a different address family."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: Ibc6de08e0ef58a5da954d13f274f6003012a76cd"},{"line_number":15,"context_line":"Partially-Implements: blueprint address-scopes"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"ba8a016a_9eb4a1d1","line":13,"in_reply_to":"ba8a016a_948252ff","updated":"2015-11-17 21:22:56.000000000","message":"Technically the first flag you should have had is \"ApiImpact\".... but this API did not exist in Liberty from a user perspective so you should not bother.\n\nFor the same reason I\u0027m not sure whether you need the DocImpact flag as we don\u0027t have yet (from what I gather) any doc covering address pools.\nAnd the same applies to UpgradeImpact.","commit_id":"a4b023a825c10aff49e960de4590810573686dfc"}],"neutron/common/exceptions.py":[{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"c2043e32cc58415f243f26e208e1a0fbe31fb8f0","unresolved":false,"context_lines":[{"line_number":487,"context_line":""},{"line_number":488,"context_line":"class IllegalSubnetPoolAssociationToAddressScope(BadRequest):"},{"line_number":489,"context_line":"    message \u003d _(\"Illegal subnetpool association: subnetpool %(subnetpool_id)s \""},{"line_number":490,"context_line":"                \" cannot be associated with address scope\""},{"line_number":491,"context_line":"                \" %(address_scope_id)s\")"},{"line_number":492,"context_line":""},{"line_number":493,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5a2ca52d_07caa66d","line":490,"updated":"2015-10-15 04:09:02.000000000","message":"Please modify this as well ;)","commit_id":"80cd6df65f6470e4eb2737e54824ca703b3181f3"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"279ef4f5cb8d884f17c7da5e801a5c56e92e34a7","unresolved":false,"context_lines":[{"line_number":492,"context_line":""},{"line_number":493,"context_line":""},{"line_number":494,"context_line":"class IllegalSubnetPoolIpVersionAssociationToAddressScope(BadRequest):"},{"line_number":495,"context_line":"    message \u003d _(\"Illegal subnetpool association: subnetpool %(subnetpool_id)s \""},{"line_number":496,"context_line":"                \" cannot be associated with address scope\""},{"line_number":497,"context_line":"                \" %(address_scope_id)s with ip_version %(ip_version)s\")"},{"line_number":498,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5a2ca52d_8b4c9471","line":495,"updated":"2015-10-14 17:05:52.000000000","message":"extra space at the end of this line is not required. please note we already have a space in the next line as well.","commit_id":"80cd6df65f6470e4eb2737e54824ca703b3181f3"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"c5d08e069a03041f3ffcf205ac4b9580d8ff3da0","unresolved":false,"context_lines":[{"line_number":492,"context_line":""},{"line_number":493,"context_line":""},{"line_number":494,"context_line":"class IllegalSubnetPoolIpVersionAssociationToAddressScope(BadRequest):"},{"line_number":495,"context_line":"    message \u003d _(\"Illegal subnetpool association: subnetpool %(subnetpool_id)s \""},{"line_number":496,"context_line":"                \" cannot be associated with address scope\""},{"line_number":497,"context_line":"                \" %(address_scope_id)s with ip_version %(ip_version)s\")"},{"line_number":498,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5a2ca52d_ab54f020","line":495,"in_reply_to":"5a2ca52d_8b4c9471","updated":"2015-10-14 17:24:16.000000000","message":"Thanks for the catch.  Will spin a new patch set to address","commit_id":"80cd6df65f6470e4eb2737e54824ca703b3181f3"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"84da2eaf4dd550edce6f87fc6bc60cc15c08955a","unresolved":false,"context_lines":[{"line_number":489,"context_line":""},{"line_number":490,"context_line":""},{"line_number":491,"context_line":"class IllegalSubnetPoolIpVersionAssociationToAddressScope(BadRequest):"},{"line_number":492,"context_line":"    message \u003d _(\"Illegal subnetpool association: subnetpool %(subnetpool_id)s\""},{"line_number":493,"context_line":"                \" cannot associate with address scope %(address_scope_id)s\""},{"line_number":494,"context_line":"                \" because subnetpool ip_version is not %(ip_version)s.\")"},{"line_number":495,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"ba8a016a_0a7896c3","line":492,"updated":"2015-11-17 09:58:22.000000000","message":"i prefer spaces at the end of the line. Lets try and be consistent with the exceptions above and below.\nMaybe this is too much nitpicking. But in my opinion it is an eyesore to have the space at the beginning of the line","commit_id":"a4b023a825c10aff49e960de4590810573686dfc"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"aadfa27ca4f1947c645b02e175a9d19731512ab4","unresolved":false,"context_lines":[{"line_number":489,"context_line":""},{"line_number":490,"context_line":""},{"line_number":491,"context_line":"class IllegalSubnetPoolIpVersionAssociationToAddressScope(BadRequest):"},{"line_number":492,"context_line":"    message \u003d _(\"Illegal subnetpool association: subnetpool %(subnetpool_id)s\""},{"line_number":493,"context_line":"                \" cannot associate with address scope %(address_scope_id)s\""},{"line_number":494,"context_line":"                \" because subnetpool ip_version is not %(ip_version)s.\")"},{"line_number":495,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"ba8a016a_1477423b","line":492,"in_reply_to":"ba8a016a_0a7896c3","updated":"2015-11-17 16:23:32.000000000","message":"Done","commit_id":"a4b023a825c10aff49e960de4590810573686dfc"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"31c725b291d520bcde50924904ae75b859b470da","unresolved":false,"context_lines":[{"line_number":489,"context_line":""},{"line_number":490,"context_line":""},{"line_number":491,"context_line":"class IllegalSubnetPoolIpVersionAssociationToAddressScope(BadRequest):"},{"line_number":492,"context_line":"    message \u003d _(\"Illegal subnetpool association: subnetpool %(subnetpool_id)s\""},{"line_number":493,"context_line":"                \" cannot associate with address scope %(address_scope_id)s\""},{"line_number":494,"context_line":"                \" because subnetpool ip_version is not %(ip_version)s.\")"},{"line_number":495,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"ba8a016a_feae0d84","line":492,"in_reply_to":"ba8a016a_1477423b","updated":"2015-11-17 21:22:56.000000000","message":"As Gary surely knows I too have an opinion on this matter and it is \"meh\"","commit_id":"a4b023a825c10aff49e960de4590810573686dfc"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"54dcd92378fdec9dc29495d6dd6c4d97b83095bd","unresolved":false,"context_lines":[{"line_number":505,"context_line":""},{"line_number":506,"context_line":""},{"line_number":507,"context_line":"class IllegalSubnetPoolIpVersionAssociationToAddressScope(BadRequest):"},{"line_number":508,"context_line":"    message \u003d _(\"Illegal subnetpool association: subnetpool %(subnetpool_id)s \""},{"line_number":509,"context_line":"                \"cannot associate with address scope %(address_scope_id)s \""},{"line_number":510,"context_line":"                \"because subnetpool ip_version is not %(ip_version)s.\")"},{"line_number":511,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"5a710552_53972e90","line":508,"updated":"2015-12-15 21:55:33.000000000","message":"It just occurred to me how funny it is that we use the word \u0027illegal\u0027 in these exceptions. OpenStack is serious business!","commit_id":"6894e7db22df67651ada3f6e0e2196d57dc51497"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"0cb05445e1675f05fe7911b59f9a17a911ce1e7d","unresolved":false,"context_lines":[{"line_number":505,"context_line":""},{"line_number":506,"context_line":""},{"line_number":507,"context_line":"class IllegalSubnetPoolIpVersionAssociationToAddressScope(BadRequest):"},{"line_number":508,"context_line":"    message \u003d _(\"Illegal subnetpool association: subnetpool %(subnetpool_id)s \""},{"line_number":509,"context_line":"                \"cannot associate with address scope %(address_scope_id)s \""},{"line_number":510,"context_line":"                \"because subnetpool ip_version is not %(ip_version)s.\")"},{"line_number":511,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"5a710552_56a4fca4","line":508,"in_reply_to":"5a710552_53972e90","updated":"2015-12-15 22:09:55.000000000","message":"Indeed!!","commit_id":"6894e7db22df67651ada3f6e0e2196d57dc51497"}],"neutron/db/address_scope_db.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"84da2eaf4dd550edce6f87fc6bc60cc15c08955a","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    name \u003d sa.Column(sa.String(255), nullable\u003dFalse)"},{"line_number":33,"context_line":"    shared \u003d sa.Column(sa.Boolean, nullable\u003dFalse)"},{"line_number":34,"context_line":"    ip_version \u003d sa.Column(sa.Integer, nullable\u003dFalse)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"class AddressScopeDbMixin(ext_address_scope.AddressScopePluginBase):"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba8a016a_2a5c7a4a","line":34,"updated":"2015-11-17 09:58:22.000000000","message":"Can we use an Enum here sa.Enum(4,6)","commit_id":"a4b023a825c10aff49e960de4590810573686dfc"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"aadfa27ca4f1947c645b02e175a9d19731512ab4","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    name \u003d sa.Column(sa.String(255), nullable\u003dFalse)"},{"line_number":33,"context_line":"    shared \u003d sa.Column(sa.Boolean, nullable\u003dFalse)"},{"line_number":34,"context_line":"    ip_version \u003d sa.Column(sa.Integer, nullable\u003dFalse)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"class AddressScopeDbMixin(ext_address_scope.AddressScopePluginBase):"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba8a016a_f4b95ecc","line":34,"in_reply_to":"ba8a016a_2a5c7a4a","updated":"2015-11-17 16:23:32.000000000","message":"Done","commit_id":"a4b023a825c10aff49e960de4590810573686dfc"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"88ad90d3c65bb94fd4d1273454944124d2776d9b","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    name \u003d sa.Column(sa.String(255), nullable\u003dFalse)"},{"line_number":33,"context_line":"    shared \u003d sa.Column(sa.Boolean, nullable\u003dFalse)"},{"line_number":34,"context_line":"    ip_version \u003d sa.Column(sa.Integer(), nullable\u003dFalse)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"class AddressScopeDbMixin(ext_address_scope.AddressScopePluginBase):"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a740942_f3ae4684","line":34,"updated":"2015-12-06 07:54:03.000000000","message":"why is this not an enum for 4 and 6?","commit_id":"18830b93f1e14c3793f5dd4d2112a2137761a281"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"8b5fedecc59ecf75a15368a246bf65d5e46a751b","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    name \u003d sa.Column(sa.String(255), nullable\u003dFalse)"},{"line_number":33,"context_line":"    shared \u003d sa.Column(sa.Boolean, nullable\u003dFalse)"},{"line_number":34,"context_line":"    ip_version \u003d sa.Column(sa.Integer(), nullable\u003dFalse)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"class AddressScopeDbMixin(ext_address_scope.AddressScopePluginBase):"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a740942_aec0de50","line":34,"in_reply_to":"7a740942_f3ae4684","updated":"2015-12-08 18:35:31.000000000","message":"Enum doesn\u0027t seem to support integer types.  I\u0027m still a bit of a sqlalchemy noob, am I missing something?  I also don\u0027t see Enum used anywhere with an integer type, particularly for ip_version throughout Neutron.  I think this may be picking nits unless there\u0027s a performance issue I\u0027m not aware of.  We don\u0027t seem to use this (for an integer type) anywhere else in Neutron, are you suggesting we change that going forward?","commit_id":"18830b93f1e14c3793f5dd4d2112a2137761a281"}],"neutron/db/db_base_plugin_v2.py":[{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"ede9cb8d34f46492433b159e59076973ce3498b5","unresolved":false,"context_lines":[{"line_number":900,"context_line":"                subnetpool_id\u003dsubnetpool_id, address_scope_id\u003daddress_scope_id)"},{"line_number":901,"context_line":""},{"line_number":902,"context_line":"        if ip_version !\u003d self.get_ip_version_for_address_scope(context,"},{"line_number":903,"context_line":"                                                             address_scope_id):"},{"line_number":904,"context_line":"            raise n_exc.IllegalSubnetPoolAssociationToAddressScope("},{"line_number":905,"context_line":"                subnetpool_id\u003dsubnetpool_id, address_scope_id\u003daddress_scope_id)"},{"line_number":906,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7a2fa921_0eaf5fe4","line":903,"updated":"2015-10-12 19:04:17.000000000","message":"nit:  Strange whitespace.  A local variable might be appropriate here.  Wrapping is always so awkward in the middle of an ip statement boolean expression but especially here where we\u0027re pushed up again the line ending no matter what.\n\n  new_ip_version \u003d self.get_ip_version_for_address_scope(\n      context, address_scope_id)\n  if ip_version !\u003d new_ip_version:","commit_id":"2100dc9358010508a1e68baa802f96daf37c2c51"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"8bda53407ece2ee788754aaca155614b998441c5","unresolved":false,"context_lines":[{"line_number":900,"context_line":"                subnetpool_id\u003dsubnetpool_id, address_scope_id\u003daddress_scope_id)"},{"line_number":901,"context_line":""},{"line_number":902,"context_line":"        if ip_version !\u003d self.get_ip_version_for_address_scope(context,"},{"line_number":903,"context_line":"                                                             address_scope_id):"},{"line_number":904,"context_line":"            raise n_exc.IllegalSubnetPoolAssociationToAddressScope("},{"line_number":905,"context_line":"                subnetpool_id\u003dsubnetpool_id, address_scope_id\u003daddress_scope_id)"},{"line_number":906,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5a2ca52d_f9967393","line":903,"in_reply_to":"7a2fa921_0eaf5fe4","updated":"2015-10-13 19:31:57.000000000","message":"Done","commit_id":"2100dc9358010508a1e68baa802f96daf37c2c51"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"d0eb5e8a18f8939caf6cfdef6a4755c89d06c6dc","unresolved":false,"context_lines":[{"line_number":905,"context_line":"        if ip_version !\u003d as_ip_version:"},{"line_number":906,"context_line":"            raise n_exc.IllegalSubnetPoolIpVersionAssociationToAddressScope("},{"line_number":907,"context_line":"                subnetpool_id\u003dsubnetpool_id, address_scope_id\u003daddress_scope_id,"},{"line_number":908,"context_line":"                ip_version\u003dip_version)"},{"line_number":909,"context_line":""},{"line_number":910,"context_line":"        subnetpools \u003d self._get_subnetpools_by_address_scope_id("},{"line_number":911,"context_line":"            context, address_scope_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"da85f559_de40090a","line":908,"updated":"2015-11-14 08:47:52.000000000","message":"+1 with YAMAMOTO, and it would be better to add information in comment of this method in line 892","commit_id":"2f09ec62505f4d607f49f61602316a68930063a4"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"a2c1e0c3fdd5232e058be0399169a709cdbce139","unresolved":false,"context_lines":[{"line_number":905,"context_line":"        if ip_version !\u003d as_ip_version:"},{"line_number":906,"context_line":"            raise n_exc.IllegalSubnetPoolIpVersionAssociationToAddressScope("},{"line_number":907,"context_line":"                subnetpool_id\u003dsubnetpool_id, address_scope_id\u003daddress_scope_id,"},{"line_number":908,"context_line":"                ip_version\u003dip_version)"},{"line_number":909,"context_line":""},{"line_number":910,"context_line":"        subnetpools \u003d self._get_subnetpools_by_address_scope_id("},{"line_number":911,"context_line":"            context, address_scope_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa80f949_46a0b690","line":908,"updated":"2015-11-05 10:16:02.000000000","message":"ip_version\u003das_ip_version ?","commit_id":"2f09ec62505f4d607f49f61602316a68930063a4"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"731c151c4e7ab2ec74ca4028ca67bb28d0df6a03","unresolved":false,"context_lines":[{"line_number":905,"context_line":"        if ip_version !\u003d as_ip_version:"},{"line_number":906,"context_line":"            raise n_exc.IllegalSubnetPoolIpVersionAssociationToAddressScope("},{"line_number":907,"context_line":"                subnetpool_id\u003dsubnetpool_id, address_scope_id\u003daddress_scope_id,"},{"line_number":908,"context_line":"                ip_version\u003dip_version)"},{"line_number":909,"context_line":""},{"line_number":910,"context_line":"        subnetpools \u003d self._get_subnetpools_by_address_scope_id("},{"line_number":911,"context_line":"            context, address_scope_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_bc6a1f19","line":908,"in_reply_to":"fa80f949_46a0b690","updated":"2015-11-16 16:01:48.000000000","message":"Done","commit_id":"2f09ec62505f4d607f49f61602316a68930063a4"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"cf5ea9642d6d4e19ca6d2e162a301dd8c864df9e","unresolved":false,"context_lines":[{"line_number":917,"context_line":"        if ip_version !\u003d as_ip_version:"},{"line_number":918,"context_line":"            raise n_exc.IllegalSubnetPoolIpVersionAssociationToAddressScope("},{"line_number":919,"context_line":"                subnetpool_id\u003dsubnetpool_id, address_scope_id\u003daddress_scope_id,"},{"line_number":920,"context_line":"                ip_version\u003das_ip_version)"},{"line_number":921,"context_line":""},{"line_number":922,"context_line":"        subnetpools \u003d self._get_subnetpools_by_address_scope_id("},{"line_number":923,"context_line":"            context, address_scope_id)"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba8a016a_b9d41f20","line":920,"updated":"2015-11-17 21:32:05.000000000","message":"note that in this method you are loading the ip address scope twice for validation purposes. Considering that it is called in lo-freq operations it\u0027s not a big deal, but in general it is wasteful.\n\nYou have probably taken this choice for not violating the principles of encapsulation concerning the class supporting IPAddressScope. Just for the sake of pedantry, that principle gets violated as soon as you use that class as a mixin, together with this one, in a plugin.\n\nAnyway, this was just for being pedantic, which is what I\u0027m known for ;)\nNo need to address this comment.","commit_id":"a4b023a825c10aff49e960de4590810573686dfc"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"cdda7b2cdd93aadd5eca4dee12ca0edb063f7c15","unresolved":false,"context_lines":[{"line_number":917,"context_line":"        if ip_version !\u003d as_ip_version:"},{"line_number":918,"context_line":"            raise n_exc.IllegalSubnetPoolIpVersionAssociationToAddressScope("},{"line_number":919,"context_line":"                subnetpool_id\u003dsubnetpool_id, address_scope_id\u003daddress_scope_id,"},{"line_number":920,"context_line":"                ip_version\u003das_ip_version)"},{"line_number":921,"context_line":""},{"line_number":922,"context_line":"        subnetpools \u003d self._get_subnetpools_by_address_scope_id("},{"line_number":923,"context_line":"            context, address_scope_id)"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba8a016a_0bd863ee","line":920,"in_reply_to":"ba8a016a_b9d41f20","updated":"2015-11-18 06:19:59.000000000","message":"Not pedantic at all, we shouldn\u0027t need to read the address scope twice.  I\u0027ll see what can be done here without going on too much of a tangent.","commit_id":"a4b023a825c10aff49e960de4590810573686dfc"}],"neutron/db/migration/alembic_migrations/versions/mitaka/expand/c3a73f615e4_add_ip_version_to_address_scope.py":[{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"c7b9726b000aee5ca84c1b55afb1235b9031e01a","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def upgrade():"},{"line_number":32,"context_line":"    op.add_column(\u0027address_scopes\u0027,"},{"line_number":33,"context_line":"                  sa.Column(\u0027ip_version\u0027, sa.Integer(nullable\u003dFalse,"},{"line_number":34,"context_line":"                                                     autoincrement\u003dFalse)))"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a2fa921_2b9269f7","line":33,"range":{"start_line":33,"start_character":42,"end_line":33,"end_character":53},"updated":"2015-10-12 07:24:46.000000000","message":"You forget to close parenthesis here: sa.Integer()","commit_id":"0437cb97fc183256a880665c6b48148c16016d86"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"0edcf7932e24f2818d797f37b0d18286dc824574","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def upgrade():"},{"line_number":32,"context_line":"    op.add_column(\u0027address_scopes\u0027,"},{"line_number":33,"context_line":"                  sa.Column(\u0027ip_version\u0027, sa.Integer(nullable\u003dFalse,"},{"line_number":34,"context_line":"                                                     autoincrement\u003dFalse)))"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a2fa921_e3ed5cf0","line":33,"in_reply_to":"7a2fa921_2b9269f7","updated":"2015-10-12 18:34:36.000000000","message":"Done","commit_id":"0437cb97fc183256a880665c6b48148c16016d86"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"84da2eaf4dd550edce6f87fc6bc60cc15c08955a","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def upgrade():"},{"line_number":32,"context_line":"    op.add_column(\u0027address_scopes\u0027,"},{"line_number":33,"context_line":"                  sa.Column(\u0027ip_version\u0027, sa.Integer(), nullable\u003dFalse,"},{"line_number":34,"context_line":"                            autoincrement\u003dFalse))"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba8a016a_6a404257","line":33,"updated":"2015-11-17 09:58:22.000000000","message":"enum if possible","commit_id":"a4b023a825c10aff49e960de4590810573686dfc"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"aadfa27ca4f1947c645b02e175a9d19731512ab4","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def upgrade():"},{"line_number":32,"context_line":"    op.add_column(\u0027address_scopes\u0027,"},{"line_number":33,"context_line":"                  sa.Column(\u0027ip_version\u0027, sa.Integer(), nullable\u003dFalse,"},{"line_number":34,"context_line":"                            autoincrement\u003dFalse))"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba8a016a_54d2aa01","line":33,"in_reply_to":"ba8a016a_6a404257","updated":"2015-11-17 16:23:32.000000000","message":"Done","commit_id":"a4b023a825c10aff49e960de4590810573686dfc"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"cf5ea9642d6d4e19ca6d2e162a301dd8c864df9e","unresolved":false,"context_lines":[{"line_number":31,"context_line":"def upgrade():"},{"line_number":32,"context_line":"    op.add_column(\u0027address_scopes\u0027,"},{"line_number":33,"context_line":"                  sa.Column(\u0027ip_version\u0027, sa.Integer(), nullable\u003dFalse,"},{"line_number":34,"context_line":"                            autoincrement\u003dFalse))"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba8a016a_797d576d","line":34,"updated":"2015-11-17 21:32:05.000000000","message":"autoincrement is False by default. It does not make any harm but you can remove it if you wish","commit_id":"a4b023a825c10aff49e960de4590810573686dfc"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"8b77d0b1bfc0880ef6f9bce95347142b747447b2","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def upgrade():"},{"line_number":32,"context_line":"    op.add_column(\u0027address_scopes\u0027,"},{"line_number":33,"context_line":"                  sa.Column(\u0027ip_version\u0027, sa.Integer(), nullable\u003dFalse))"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a8ffd7b_d49705ea","line":32,"updated":"2015-12-03 12:43:36.000000000","message":"We don\u0027t need a contract script for this?","commit_id":"804dd97bc0401deb5a5f7a8819064e4effd9be15"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"a090c17d9e1e683cbec511c79f2758acb623a69c","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def upgrade():"},{"line_number":32,"context_line":"    op.add_column(\u0027address_scopes\u0027,"},{"line_number":33,"context_line":"                  sa.Column(\u0027ip_version\u0027, sa.Integer(), nullable\u003dFalse))"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a740942_f7ed3226","line":32,"in_reply_to":"7a740942_71ff1235","updated":"2015-12-03 15:39:13.000000000","message":"Got it.","commit_id":"804dd97bc0401deb5a5f7a8819064e4effd9be15"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"4f7778680326c1726c28e46825592318a3f540f8","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def upgrade():"},{"line_number":32,"context_line":"    op.add_column(\u0027address_scopes\u0027,"},{"line_number":33,"context_line":"                  sa.Column(\u0027ip_version\u0027, sa.Integer(), nullable\u003dFalse))"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a740942_71ff1235","line":32,"in_reply_to":"9a8ffd7b_d49705ea","updated":"2015-12-03 15:20:05.000000000","message":"Nope, this is not a contracting schema change ie not removing entities or attributes.  This is purely an addition to the schema, so we only need to move EXPAND_HEAD","commit_id":"804dd97bc0401deb5a5f7a8819064e4effd9be15"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"54dcd92378fdec9dc29495d6dd6c4d97b83095bd","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def upgrade():"},{"line_number":32,"context_line":"    op.add_column(\u0027address_scopes\u0027,"},{"line_number":33,"context_line":"                  sa.Column(\u0027ip_version\u0027, sa.Integer(), nullable\u003dFalse))"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a710552_d318fe86","line":33,"updated":"2015-12-15 21:55:33.000000000","message":"Just one quick sanity question.\n\nAre we sure there is no way an address scope was implicitly created by any internal subnetpool mechanisms or IPAM at this point? Because if there are any records in this table, this migration will fail because of the NOT NULL constraint.","commit_id":"6894e7db22df67651ada3f6e0e2196d57dc51497"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"0cb05445e1675f05fe7911b59f9a17a911ce1e7d","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def upgrade():"},{"line_number":32,"context_line":"    op.add_column(\u0027address_scopes\u0027,"},{"line_number":33,"context_line":"                  sa.Column(\u0027ip_version\u0027, sa.Integer(), nullable\u003dFalse))"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a710552_f6a408ba","line":33,"in_reply_to":"5a710552_d318fe86","updated":"2015-12-15 22:09:55.000000000","message":"I\u0027m not aware of any mechanisms that implicitly create address scope records under the covers.  subnetpools treat a null address_scope_id as the \"implicit\" scope, and I believe IPAM treats it the same way.  Good question, but I don\u0027t think the scenario you\u0027re describing exists (thankfully!).","commit_id":"6894e7db22df67651ada3f6e0e2196d57dc51497"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"f07a80e0d8912933d9e81d9903bcc25f3c12f279","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def upgrade():"},{"line_number":32,"context_line":"    op.add_column(\u0027address_scopes\u0027,"},{"line_number":33,"context_line":"                  sa.Column(\u0027ip_version\u0027, sa.Integer(), nullable\u003dFalse))"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a710552_9941350e","line":33,"in_reply_to":"5a710552_f6a408ba","updated":"2015-12-15 22:24:02.000000000","message":"Thanks!","commit_id":"6894e7db22df67651ada3f6e0e2196d57dc51497"}],"neutron/extensions/address_scope.py":[{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"279ef4f5cb8d884f17c7da5e801a5c56e92e34a7","unresolved":false,"context_lines":[{"line_number":50,"context_line":"                      \u0027is_visible\u0027: True,"},{"line_number":51,"context_line":"                      \u0027required_by_policy\u0027: True,"},{"line_number":52,"context_line":"                      \u0027enforce_policy\u0027: True},"},{"line_number":53,"context_line":"        \u0027ip_version\u0027: {\u0027allow_post\u0027: True, \u0027allow_put\u0027: False,"},{"line_number":54,"context_line":"                       \u0027convert_to\u0027: attr.convert_to_int,"},{"line_number":55,"context_line":"                       \u0027validate\u0027: {\u0027type:values\u0027: [4, 6]},"},{"line_number":56,"context_line":"                       \u0027is_visible\u0027: True},"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a2ca52d_ab8cf07f","line":53,"updated":"2015-10-14 17:05:52.000000000","message":"is this not a key attribute?","commit_id":"80cd6df65f6470e4eb2737e54824ca703b3181f3"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"c2043e32cc58415f243f26e208e1a0fbe31fb8f0","unresolved":false,"context_lines":[{"line_number":50,"context_line":"                      \u0027is_visible\u0027: True,"},{"line_number":51,"context_line":"                      \u0027required_by_policy\u0027: True,"},{"line_number":52,"context_line":"                      \u0027enforce_policy\u0027: True},"},{"line_number":53,"context_line":"        \u0027ip_version\u0027: {\u0027allow_post\u0027: True, \u0027allow_put\u0027: False,"},{"line_number":54,"context_line":"                       \u0027convert_to\u0027: attr.convert_to_int,"},{"line_number":55,"context_line":"                       \u0027validate\u0027: {\u0027type:values\u0027: [4, 6]},"},{"line_number":56,"context_line":"                       \u0027is_visible\u0027: True},"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a2ca52d_c7a26eae","line":53,"in_reply_to":"5a2ca52d_6b4ed897","updated":"2015-10-15 04:09:02.000000000","message":"Ok. Got it!","commit_id":"80cd6df65f6470e4eb2737e54824ca703b3181f3"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"c5d08e069a03041f3ffcf205ac4b9580d8ff3da0","unresolved":false,"context_lines":[{"line_number":50,"context_line":"                      \u0027is_visible\u0027: True,"},{"line_number":51,"context_line":"                      \u0027required_by_policy\u0027: True,"},{"line_number":52,"context_line":"                      \u0027enforce_policy\u0027: True},"},{"line_number":53,"context_line":"        \u0027ip_version\u0027: {\u0027allow_post\u0027: True, \u0027allow_put\u0027: False,"},{"line_number":54,"context_line":"                       \u0027convert_to\u0027: attr.convert_to_int,"},{"line_number":55,"context_line":"                       \u0027validate\u0027: {\u0027type:values\u0027: [4, 6]},"},{"line_number":56,"context_line":"                       \u0027is_visible\u0027: True},"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a2ca52d_6b4ed897","line":53,"in_reply_to":"5a2ca52d_ab8cf07f","updated":"2015-10-14 17:24:16.000000000","message":"No, it\u0027s not key attribute.  However, it is a required attribute.","commit_id":"80cd6df65f6470e4eb2737e54824ca703b3181f3"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"31c725b291d520bcde50924904ae75b859b470da","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        \u0027ip_version\u0027: {\u0027allow_post\u0027: True, \u0027allow_put\u0027: False,"},{"line_number":54,"context_line":"                       \u0027convert_to\u0027: attr.convert_to_int,"},{"line_number":55,"context_line":"                       \u0027validate\u0027: {\u0027type:values\u0027: [4, 6]},"},{"line_number":56,"context_line":"                       \u0027is_visible\u0027: True},"},{"line_number":57,"context_line":"    },"},{"line_number":58,"context_line":"    attr.SUBNETPOOLS: {"},{"line_number":59,"context_line":"        ADDRESS_SCOPE_ID: {\u0027allow_post\u0027: True,"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba8a016a_593733e3","line":56,"updated":"2015-11-17 21:22:56.000000000","message":"for the benefit of the other reviewers, as the API was disabled in Liberty this change can be made without any care for backward compatibility.","commit_id":"a4b023a825c10aff49e960de4590810573686dfc"}],"neutron/tests/api/test_address_scopes.py":[{"author":{"_account_id":17211,"name":"Brandon Palm","email":"bapalm@us.ibm.com","username":"bapalm"},"change_message_id":"26a962fe80c29f78ba2d9c23a5d911a8965236a0","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def _test_update_address_scope_helper(self, is_admin\u003dFalse, shared\u003dNone):"},{"line_number":47,"context_line":"        address_scope \u003d self._create_address_scope(is_admin\u003dis_admin,"},{"line_number":48,"context_line":"                                                   ip_version\u003d4)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        if is_admin:"},{"line_number":51,"context_line":"            client \u003d self.admin_client"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_9741343c","line":48,"updated":"2015-11-16 16:15:09.000000000","message":"Could you use the neutron.common IP_VERSION 4?  Just for consistency.","commit_id":"2f09ec62505f4d607f49f61602316a68930063a4"},{"author":{"_account_id":17211,"name":"Brandon Palm","email":"bapalm@us.ibm.com","username":"bapalm"},"change_message_id":"26a962fe80c29f78ba2d9c23a5d911a8965236a0","unresolved":false,"context_lines":[{"line_number":68,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":69,"context_line":"    @test.idempotent_id(\u0027045f9294-8b1a-4848-b6a8-edf1b41e9d06\u0027)"},{"line_number":70,"context_line":"    def test_tenant_create_list_address_scope(self):"},{"line_number":71,"context_line":"        address_scope \u003d self._create_address_scope(ip_version\u003d4)"},{"line_number":72,"context_line":"        body \u003d self.client.list_address_scopes()"},{"line_number":73,"context_line":"        returned_address_scopes \u003d body[\u0027address_scopes\u0027]"},{"line_number":74,"context_line":"        self.assertIn(address_scope[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_574bcc59","line":71,"updated":"2015-11-16 16:15:09.000000000","message":"Ditto.","commit_id":"2f09ec62505f4d607f49f61602316a68930063a4"},{"author":{"_account_id":17211,"name":"Brandon Palm","email":"bapalm@us.ibm.com","username":"bapalm"},"change_message_id":"26a962fe80c29f78ba2d9c23a5d911a8965236a0","unresolved":false,"context_lines":[{"line_number":81,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":82,"context_line":"    @test.idempotent_id(\u002785e0326b-4c75-4b92-bd6e-7c7de6aaf05c\u0027)"},{"line_number":83,"context_line":"    def test_show_address_scope(self):"},{"line_number":84,"context_line":"        address_scope \u003d self._create_address_scope(ip_version\u003d4)"},{"line_number":85,"context_line":"        body \u003d self.client.show_address_scope("},{"line_number":86,"context_line":"            address_scope[\u0027id\u0027])"},{"line_number":87,"context_line":"        returned_address_scope \u003d body[\u0027address_scope\u0027]"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_d76d7ccd","line":84,"updated":"2015-11-16 16:15:09.000000000","message":"Ditto.","commit_id":"2f09ec62505f4d607f49f61602316a68930063a4"},{"author":{"_account_id":17211,"name":"Brandon Palm","email":"bapalm@us.ibm.com","username":"bapalm"},"change_message_id":"26a962fe80c29f78ba2d9c23a5d911a8965236a0","unresolved":false,"context_lines":[{"line_number":98,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":99,"context_line":"    @test.idempotent_id(\u002722b3b600-72a8-4b60-bc94-0f29dd6271df\u0027)"},{"line_number":100,"context_line":"    def test_delete_address_scope(self):"},{"line_number":101,"context_line":"        address_scope \u003d self._create_address_scope(ip_version\u003d4)"},{"line_number":102,"context_line":"        self.client.delete_address_scope(address_scope[\u0027id\u0027])"},{"line_number":103,"context_line":"        self.assertRaises(lib_exc.NotFound, self.client.show_address_scope,"},{"line_number":104,"context_line":"                          address_scope[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_b76558e2","line":101,"updated":"2015-11-16 16:15:09.000000000","message":"Ditto.","commit_id":"2f09ec62505f4d607f49f61602316a68930063a4"},{"author":{"_account_id":17211,"name":"Brandon Palm","email":"bapalm@us.ibm.com","username":"bapalm"},"change_message_id":"26a962fe80c29f78ba2d9c23a5d911a8965236a0","unresolved":false,"context_lines":[{"line_number":107,"context_line":"    @test.idempotent_id(\u00275a06c287-8036-4d04-9d78-def8e06d43df\u0027)"},{"line_number":108,"context_line":"    def test_admin_create_shared_address_scope(self):"},{"line_number":109,"context_line":"        address_scope \u003d self._create_address_scope(is_admin\u003dTrue, shared\u003dTrue,"},{"line_number":110,"context_line":"                                                   ip_version\u003d4)"},{"line_number":111,"context_line":"        body \u003d self.admin_client.show_address_scope("},{"line_number":112,"context_line":"            address_scope[\u0027id\u0027])"},{"line_number":113,"context_line":"        returned_address_scope \u003d body[\u0027address_scope\u0027]"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_37a088f4","line":110,"updated":"2015-11-16 16:15:09.000000000","message":"Ditto.","commit_id":"2f09ec62505f4d607f49f61602316a68930063a4"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"88ad90d3c65bb94fd4d1273454944124d2776d9b","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def _test_update_address_scope_helper(self, is_admin\u003dFalse, shared\u003dNone):"},{"line_number":50,"context_line":"        address_scope \u003d self._create_address_scope(is_admin\u003dis_admin,"},{"line_number":51,"context_line":"                                                   ip_version\u003d4)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        if is_admin:"},{"line_number":54,"context_line":"            client \u003d self.admin_client"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a740942_93b4a2d1","line":51,"updated":"2015-12-06 07:54:03.000000000","message":"In https://review.openstack.org/#/c/233317/9/neutron/tests/unit/extensions/test_address_scope.py,cm you have this set as 4 so no need to set this here","commit_id":"18830b93f1e14c3793f5dd4d2112a2137761a281"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"0c953023eef14ab3c44087801a580916582450ac","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def _test_update_address_scope_helper(self, is_admin\u003dFalse, shared\u003dNone):"},{"line_number":50,"context_line":"        address_scope \u003d self._create_address_scope(is_admin\u003dis_admin,"},{"line_number":51,"context_line":"                                                   ip_version\u003d4)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        if is_admin:"},{"line_number":54,"context_line":"            client \u003d self.admin_client"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a710552_bc878dd6","line":51,"in_reply_to":"7a740942_2ecdce84","updated":"2015-12-14 19:10:15.000000000","message":"Actually looking at this more closely, this is required because these are the API tests not the unit tests.  ip_version is passed with kwargs here.","commit_id":"18830b93f1e14c3793f5dd4d2112a2137761a281"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"8b5fedecc59ecf75a15368a246bf65d5e46a751b","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def _test_update_address_scope_helper(self, is_admin\u003dFalse, shared\u003dNone):"},{"line_number":50,"context_line":"        address_scope \u003d self._create_address_scope(is_admin\u003dis_admin,"},{"line_number":51,"context_line":"                                                   ip_version\u003d4)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        if is_admin:"},{"line_number":54,"context_line":"            client \u003d self.admin_client"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a740942_2ecdce84","line":51,"in_reply_to":"7a740942_93b4a2d1","updated":"2015-12-08 18:35:31.000000000","message":"Done","commit_id":"18830b93f1e14c3793f5dd4d2112a2137761a281"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"88ad90d3c65bb94fd4d1273454944124d2776d9b","unresolved":false,"context_lines":[{"line_number":71,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":72,"context_line":"    @test.idempotent_id(\u0027045f9294-8b1a-4848-b6a8-edf1b41e9d06\u0027)"},{"line_number":73,"context_line":"    def test_tenant_create_list_address_scope(self):"},{"line_number":74,"context_line":"        address_scope \u003d self._create_address_scope(ip_version\u003d4)"},{"line_number":75,"context_line":"        body \u003d self.client.list_address_scopes()"},{"line_number":76,"context_line":"        returned_address_scopes \u003d body[\u0027address_scopes\u0027]"},{"line_number":77,"context_line":"        self.assertIn(address_scope[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a740942_33ccce69","line":74,"updated":"2015-12-06 07:54:03.000000000","message":"ditto","commit_id":"18830b93f1e14c3793f5dd4d2112a2137761a281"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"8b5fedecc59ecf75a15368a246bf65d5e46a751b","unresolved":false,"context_lines":[{"line_number":71,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":72,"context_line":"    @test.idempotent_id(\u0027045f9294-8b1a-4848-b6a8-edf1b41e9d06\u0027)"},{"line_number":73,"context_line":"    def test_tenant_create_list_address_scope(self):"},{"line_number":74,"context_line":"        address_scope \u003d self._create_address_scope(ip_version\u003d4)"},{"line_number":75,"context_line":"        body \u003d self.client.list_address_scopes()"},{"line_number":76,"context_line":"        returned_address_scopes \u003d body[\u0027address_scopes\u0027]"},{"line_number":77,"context_line":"        self.assertIn(address_scope[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a740942_eec26652","line":74,"in_reply_to":"7a740942_33ccce69","updated":"2015-12-08 18:35:31.000000000","message":"Done","commit_id":"18830b93f1e14c3793f5dd4d2112a2137761a281"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"0c953023eef14ab3c44087801a580916582450ac","unresolved":false,"context_lines":[{"line_number":71,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":72,"context_line":"    @test.idempotent_id(\u0027045f9294-8b1a-4848-b6a8-edf1b41e9d06\u0027)"},{"line_number":73,"context_line":"    def test_tenant_create_list_address_scope(self):"},{"line_number":74,"context_line":"        address_scope \u003d self._create_address_scope(ip_version\u003d4)"},{"line_number":75,"context_line":"        body \u003d self.client.list_address_scopes()"},{"line_number":76,"context_line":"        returned_address_scopes \u003d body[\u0027address_scopes\u0027]"},{"line_number":77,"context_line":"        self.assertIn(address_scope[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a710552_dc5ff973","line":74,"in_reply_to":"7a740942_eec26652","updated":"2015-12-14 19:10:15.000000000","message":"Same as above","commit_id":"18830b93f1e14c3793f5dd4d2112a2137761a281"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"88ad90d3c65bb94fd4d1273454944124d2776d9b","unresolved":false,"context_lines":[{"line_number":101,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":102,"context_line":"    @test.idempotent_id(\u002722b3b600-72a8-4b60-bc94-0f29dd6271df\u0027)"},{"line_number":103,"context_line":"    def test_delete_address_scope(self):"},{"line_number":104,"context_line":"        address_scope \u003d self._create_address_scope(ip_version\u003d4)"},{"line_number":105,"context_line":"        self.client.delete_address_scope(address_scope[\u0027id\u0027])"},{"line_number":106,"context_line":"        self.assertRaises(lib_exc.NotFound, self.client.show_address_scope,"},{"line_number":107,"context_line":"                          address_scope[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a740942_53c71a45","line":104,"updated":"2015-12-06 07:54:03.000000000","message":"ditto","commit_id":"18830b93f1e14c3793f5dd4d2112a2137761a281"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"8b5fedecc59ecf75a15368a246bf65d5e46a751b","unresolved":false,"context_lines":[{"line_number":101,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":102,"context_line":"    @test.idempotent_id(\u002722b3b600-72a8-4b60-bc94-0f29dd6271df\u0027)"},{"line_number":103,"context_line":"    def test_delete_address_scope(self):"},{"line_number":104,"context_line":"        address_scope \u003d self._create_address_scope(ip_version\u003d4)"},{"line_number":105,"context_line":"        self.client.delete_address_scope(address_scope[\u0027id\u0027])"},{"line_number":106,"context_line":"        self.assertRaises(lib_exc.NotFound, self.client.show_address_scope,"},{"line_number":107,"context_line":"                          address_scope[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a740942_8ea402ba","line":104,"in_reply_to":"7a740942_53c71a45","updated":"2015-12-08 18:35:31.000000000","message":"Done","commit_id":"18830b93f1e14c3793f5dd4d2112a2137761a281"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"0c953023eef14ab3c44087801a580916582450ac","unresolved":false,"context_lines":[{"line_number":101,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":102,"context_line":"    @test.idempotent_id(\u002722b3b600-72a8-4b60-bc94-0f29dd6271df\u0027)"},{"line_number":103,"context_line":"    def test_delete_address_scope(self):"},{"line_number":104,"context_line":"        address_scope \u003d self._create_address_scope(ip_version\u003d4)"},{"line_number":105,"context_line":"        self.client.delete_address_scope(address_scope[\u0027id\u0027])"},{"line_number":106,"context_line":"        self.assertRaises(lib_exc.NotFound, self.client.show_address_scope,"},{"line_number":107,"context_line":"                          address_scope[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a710552_9c597191","line":104,"in_reply_to":"7a740942_8ea402ba","updated":"2015-12-14 19:10:15.000000000","message":"Same as above","commit_id":"18830b93f1e14c3793f5dd4d2112a2137761a281"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"88ad90d3c65bb94fd4d1273454944124d2776d9b","unresolved":false,"context_lines":[{"line_number":110,"context_line":"    @test.idempotent_id(\u00275a06c287-8036-4d04-9d78-def8e06d43df\u0027)"},{"line_number":111,"context_line":"    def test_admin_create_shared_address_scope(self):"},{"line_number":112,"context_line":"        address_scope \u003d self._create_address_scope(is_admin\u003dTrue, shared\u003dTrue,"},{"line_number":113,"context_line":"                                                   ip_version\u003d4)"},{"line_number":114,"context_line":"        body \u003d self.admin_client.show_address_scope("},{"line_number":115,"context_line":"            address_scope[\u0027id\u0027])"},{"line_number":116,"context_line":"        returned_address_scope \u003d body[\u0027address_scope\u0027]"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a740942_f3c5e63b","line":113,"updated":"2015-12-06 07:54:03.000000000","message":"ditto","commit_id":"18830b93f1e14c3793f5dd4d2112a2137761a281"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"0c953023eef14ab3c44087801a580916582450ac","unresolved":false,"context_lines":[{"line_number":110,"context_line":"    @test.idempotent_id(\u00275a06c287-8036-4d04-9d78-def8e06d43df\u0027)"},{"line_number":111,"context_line":"    def test_admin_create_shared_address_scope(self):"},{"line_number":112,"context_line":"        address_scope \u003d self._create_address_scope(is_admin\u003dTrue, shared\u003dTrue,"},{"line_number":113,"context_line":"                                                   ip_version\u003d4)"},{"line_number":114,"context_line":"        body \u003d self.admin_client.show_address_scope("},{"line_number":115,"context_line":"            address_scope[\u0027id\u0027])"},{"line_number":116,"context_line":"        returned_address_scope \u003d body[\u0027address_scope\u0027]"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a710552_3c4b9db2","line":113,"in_reply_to":"7a740942_4eaa9a86","updated":"2015-12-14 19:10:15.000000000","message":"Same as above","commit_id":"18830b93f1e14c3793f5dd4d2112a2137761a281"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"8b5fedecc59ecf75a15368a246bf65d5e46a751b","unresolved":false,"context_lines":[{"line_number":110,"context_line":"    @test.idempotent_id(\u00275a06c287-8036-4d04-9d78-def8e06d43df\u0027)"},{"line_number":111,"context_line":"    def test_admin_create_shared_address_scope(self):"},{"line_number":112,"context_line":"        address_scope \u003d self._create_address_scope(is_admin\u003dTrue, shared\u003dTrue,"},{"line_number":113,"context_line":"                                                   ip_version\u003d4)"},{"line_number":114,"context_line":"        body \u003d self.admin_client.show_address_scope("},{"line_number":115,"context_line":"            address_scope[\u0027id\u0027])"},{"line_number":116,"context_line":"        returned_address_scope \u003d body[\u0027address_scope\u0027]"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a740942_4eaa9a86","line":113,"in_reply_to":"7a740942_f3c5e63b","updated":"2015-12-08 18:35:31.000000000","message":"Done","commit_id":"18830b93f1e14c3793f5dd4d2112a2137761a281"}],"neutron/tests/api/test_address_scopes_negative.py":[{"author":{"_account_id":17211,"name":"Brandon Palm","email":"bapalm@us.ibm.com","username":"bapalm"},"change_message_id":"26a962fe80c29f78ba2d9c23a5d911a8965236a0","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    @test.idempotent_id(\u00279c92ec34-0c50-4104-aa47-9ce98d5088df\u0027)"},{"line_number":26,"context_line":"    def test_tenant_create_shared_address_scope(self):"},{"line_number":27,"context_line":"        self.assertRaises(lib_exc.Forbidden, self._create_address_scope,"},{"line_number":28,"context_line":"                          shared\u003dTrue, ip_version\u003d4)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    @test.attr(type\u003d[\u0027negative\u0027, \u0027smoke\u0027])"},{"line_number":31,"context_line":"    @test.idempotent_id(\u0027a857b61e-bf53-4fab-b21a-b0daaf81b5bd\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_d7a49c09","line":28,"updated":"2015-11-16 16:15:09.000000000","message":"Ditto.","commit_id":"2f09ec62505f4d607f49f61602316a68930063a4"},{"author":{"_account_id":17211,"name":"Brandon Palm","email":"bapalm@us.ibm.com","username":"bapalm"},"change_message_id":"26a962fe80c29f78ba2d9c23a5d911a8965236a0","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    @test.idempotent_id(\u0027ef213552-f2da-487d-bf4a-e1705d115ff1\u0027)"},{"line_number":51,"context_line":"    def test_tenant_get_not_shared_admin_address_scope(self):"},{"line_number":52,"context_line":"        address_scope \u003d self._create_address_scope(is_admin\u003dTrue,"},{"line_number":53,"context_line":"                                                   ip_version\u003d4)"},{"line_number":54,"context_line":"        # None-shared admin address scope cannot be retrieved by tenant user."},{"line_number":55,"context_line":"        self.assertRaises(lib_exc.NotFound, self.client.show_address_scope,"},{"line_number":56,"context_line":"                          address_scope[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_97aff4e2","line":53,"updated":"2015-11-16 16:15:09.000000000","message":"Ditto.","commit_id":"2f09ec62505f4d607f49f61602316a68930063a4"},{"author":{"_account_id":17211,"name":"Brandon Palm","email":"bapalm@us.ibm.com","username":"bapalm"},"change_message_id":"26a962fe80c29f78ba2d9c23a5d911a8965236a0","unresolved":false,"context_lines":[{"line_number":73,"context_line":"    @test.idempotent_id(\u0027702d0515-82cb-4207-b0d9-703336e54665\u0027)"},{"line_number":74,"context_line":"    def test_update_shared_address_scope_to_unshare(self):"},{"line_number":75,"context_line":"        address_scope \u003d self._create_address_scope(is_admin\u003dTrue, shared\u003dTrue,"},{"line_number":76,"context_line":"                                                   ip_version\u003d4)"},{"line_number":77,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":78,"context_line":"                          self.admin_client.update_address_scope,"},{"line_number":79,"context_line":"                          address_scope[\u0027id\u0027], name\u003d\u0027new-name\u0027, shared\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_77b6103f","line":76,"updated":"2015-11-16 16:15:09.000000000","message":"Ditto.","commit_id":"2f09ec62505f4d607f49f61602316a68930063a4"},{"author":{"_account_id":17211,"name":"Brandon Palm","email":"bapalm@us.ibm.com","username":"bapalm"},"change_message_id":"26a962fe80c29f78ba2d9c23a5d911a8965236a0","unresolved":false,"context_lines":[{"line_number":81,"context_line":"    @test.attr(type\u003d[\u0027negative\u0027, \u0027smoke\u0027])"},{"line_number":82,"context_line":"    @test.idempotent_id(\u00271e471e5c-6f9c-437a-9257-fd9bc4b6f0fb\u0027)"},{"line_number":83,"context_line":"    def test_delete_address_scope_associated_with_subnetpool(self):"},{"line_number":84,"context_line":"        address_scope \u003d self._create_address_scope(ip_version\u003d4)"},{"line_number":85,"context_line":"        prefixes \u003d [u\u002710.11.12.0/24\u0027]"},{"line_number":86,"context_line":"        subnetpool_data \u003d {\u0027subnetpool\u0027: {"},{"line_number":87,"context_line":"            \u0027name\u0027: \u0027foo-subnetpool\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_37872863","line":84,"updated":"2015-11-16 16:15:09.000000000","message":"Ditto.","commit_id":"2f09ec62505f4d607f49f61602316a68930063a4"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"88ad90d3c65bb94fd4d1273454944124d2776d9b","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    @test.idempotent_id(\u0027ef213552-f2da-487d-bf4a-e1705d115ff1\u0027)"},{"line_number":51,"context_line":"    def test_tenant_get_not_shared_admin_address_scope(self):"},{"line_number":52,"context_line":"        address_scope \u003d self._create_address_scope(is_admin\u003dTrue,"},{"line_number":53,"context_line":"                                                   ip_version\u003d4)"},{"line_number":54,"context_line":"        # None-shared admin address scope cannot be retrieved by tenant user."},{"line_number":55,"context_line":"        self.assertRaises(lib_exc.NotFound, self.client.show_address_scope,"},{"line_number":56,"context_line":"                          address_scope[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a740942_13c1922e","line":53,"updated":"2015-12-06 07:54:03.000000000","message":"ditto","commit_id":"18830b93f1e14c3793f5dd4d2112a2137761a281"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"8b5fedecc59ecf75a15368a246bf65d5e46a751b","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    @test.idempotent_id(\u0027ef213552-f2da-487d-bf4a-e1705d115ff1\u0027)"},{"line_number":51,"context_line":"    def test_tenant_get_not_shared_admin_address_scope(self):"},{"line_number":52,"context_line":"        address_scope \u003d self._create_address_scope(is_admin\u003dTrue,"},{"line_number":53,"context_line":"                                                   ip_version\u003d4)"},{"line_number":54,"context_line":"        # None-shared admin address scope cannot be retrieved by tenant user."},{"line_number":55,"context_line":"        self.assertRaises(lib_exc.NotFound, self.client.show_address_scope,"},{"line_number":56,"context_line":"                          address_scope[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a740942_2e94ee40","line":53,"in_reply_to":"7a740942_13c1922e","updated":"2015-12-08 18:35:31.000000000","message":"Done","commit_id":"18830b93f1e14c3793f5dd4d2112a2137761a281"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"0c953023eef14ab3c44087801a580916582450ac","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    @test.idempotent_id(\u0027ef213552-f2da-487d-bf4a-e1705d115ff1\u0027)"},{"line_number":51,"context_line":"    def test_tenant_get_not_shared_admin_address_scope(self):"},{"line_number":52,"context_line":"        address_scope \u003d self._create_address_scope(is_admin\u003dTrue,"},{"line_number":53,"context_line":"                                                   ip_version\u003d4)"},{"line_number":54,"context_line":"        # None-shared admin address scope cannot be retrieved by tenant user."},{"line_number":55,"context_line":"        self.assertRaises(lib_exc.NotFound, self.client.show_address_scope,"},{"line_number":56,"context_line":"                          address_scope[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a710552_1ce581a7","line":53,"in_reply_to":"7a740942_2e94ee40","updated":"2015-12-14 19:10:15.000000000","message":"See comments in https://review.openstack.org/#/c/233317/9/neutron/tests/api/test_address_scopes.py","commit_id":"18830b93f1e14c3793f5dd4d2112a2137761a281"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"88ad90d3c65bb94fd4d1273454944124d2776d9b","unresolved":false,"context_lines":[{"line_number":73,"context_line":"    @test.idempotent_id(\u0027702d0515-82cb-4207-b0d9-703336e54665\u0027)"},{"line_number":74,"context_line":"    def test_update_shared_address_scope_to_unshare(self):"},{"line_number":75,"context_line":"        address_scope \u003d self._create_address_scope(is_admin\u003dTrue, shared\u003dTrue,"},{"line_number":76,"context_line":"                                                   ip_version\u003d4)"},{"line_number":77,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":78,"context_line":"                          self.admin_client.update_address_scope,"},{"line_number":79,"context_line":"                          address_scope[\u0027id\u0027], name\u003d\u0027new-name\u0027, shared\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a740942_b3de7e0f","line":76,"updated":"2015-12-06 07:54:03.000000000","message":"ditto","commit_id":"18830b93f1e14c3793f5dd4d2112a2137761a281"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"8b5fedecc59ecf75a15368a246bf65d5e46a751b","unresolved":false,"context_lines":[{"line_number":73,"context_line":"    @test.idempotent_id(\u0027702d0515-82cb-4207-b0d9-703336e54665\u0027)"},{"line_number":74,"context_line":"    def test_update_shared_address_scope_to_unshare(self):"},{"line_number":75,"context_line":"        address_scope \u003d self._create_address_scope(is_admin\u003dTrue, shared\u003dTrue,"},{"line_number":76,"context_line":"                                                   ip_version\u003d4)"},{"line_number":77,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":78,"context_line":"                          self.admin_client.update_address_scope,"},{"line_number":79,"context_line":"                          address_scope[\u0027id\u0027], name\u003d\u0027new-name\u0027, shared\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a740942_ce9e8a62","line":76,"in_reply_to":"7a740942_b3de7e0f","updated":"2015-12-08 18:35:31.000000000","message":"Done","commit_id":"18830b93f1e14c3793f5dd4d2112a2137761a281"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"0c953023eef14ab3c44087801a580916582450ac","unresolved":false,"context_lines":[{"line_number":73,"context_line":"    @test.idempotent_id(\u0027702d0515-82cb-4207-b0d9-703336e54665\u0027)"},{"line_number":74,"context_line":"    def test_update_shared_address_scope_to_unshare(self):"},{"line_number":75,"context_line":"        address_scope \u003d self._create_address_scope(is_admin\u003dTrue, shared\u003dTrue,"},{"line_number":76,"context_line":"                                                   ip_version\u003d4)"},{"line_number":77,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":78,"context_line":"                          self.admin_client.update_address_scope,"},{"line_number":79,"context_line":"                          address_scope[\u0027id\u0027], name\u003d\u0027new-name\u0027, shared\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a710552_dcedb98f","line":76,"in_reply_to":"7a740942_ce9e8a62","updated":"2015-12-14 19:10:15.000000000","message":"See comments in https://review.openstack.org/#/c/233317/9/neutron/tests/api/test_address_scopes.py","commit_id":"18830b93f1e14c3793f5dd4d2112a2137761a281"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"88ad90d3c65bb94fd4d1273454944124d2776d9b","unresolved":false,"context_lines":[{"line_number":81,"context_line":"    @test.attr(type\u003d[\u0027negative\u0027, \u0027smoke\u0027])"},{"line_number":82,"context_line":"    @test.idempotent_id(\u00271e471e5c-6f9c-437a-9257-fd9bc4b6f0fb\u0027)"},{"line_number":83,"context_line":"    def test_delete_address_scope_associated_with_subnetpool(self):"},{"line_number":84,"context_line":"        address_scope \u003d self._create_address_scope(ip_version\u003d4)"},{"line_number":85,"context_line":"        prefixes \u003d [u\u002710.11.12.0/24\u0027]"},{"line_number":86,"context_line":"        subnetpool_data \u003d {\u0027subnetpool\u0027: {"},{"line_number":87,"context_line":"            \u0027name\u0027: \u0027foo-subnetpool\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a740942_d3e1cad1","line":84,"updated":"2015-12-06 07:54:03.000000000","message":"ditto","commit_id":"18830b93f1e14c3793f5dd4d2112a2137761a281"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"8b5fedecc59ecf75a15368a246bf65d5e46a751b","unresolved":false,"context_lines":[{"line_number":81,"context_line":"    @test.attr(type\u003d[\u0027negative\u0027, \u0027smoke\u0027])"},{"line_number":82,"context_line":"    @test.idempotent_id(\u00271e471e5c-6f9c-437a-9257-fd9bc4b6f0fb\u0027)"},{"line_number":83,"context_line":"    def test_delete_address_scope_associated_with_subnetpool(self):"},{"line_number":84,"context_line":"        address_scope \u003d self._create_address_scope(ip_version\u003d4)"},{"line_number":85,"context_line":"        prefixes \u003d [u\u002710.11.12.0/24\u0027]"},{"line_number":86,"context_line":"        subnetpool_data \u003d {\u0027subnetpool\u0027: {"},{"line_number":87,"context_line":"            \u0027name\u0027: \u0027foo-subnetpool\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a740942_ee99067a","line":84,"in_reply_to":"7a740942_d3e1cad1","updated":"2015-12-08 18:35:31.000000000","message":"Done","commit_id":"18830b93f1e14c3793f5dd4d2112a2137761a281"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"0c953023eef14ab3c44087801a580916582450ac","unresolved":false,"context_lines":[{"line_number":81,"context_line":"    @test.attr(type\u003d[\u0027negative\u0027, \u0027smoke\u0027])"},{"line_number":82,"context_line":"    @test.idempotent_id(\u00271e471e5c-6f9c-437a-9257-fd9bc4b6f0fb\u0027)"},{"line_number":83,"context_line":"    def test_delete_address_scope_associated_with_subnetpool(self):"},{"line_number":84,"context_line":"        address_scope \u003d self._create_address_scope(ip_version\u003d4)"},{"line_number":85,"context_line":"        prefixes \u003d [u\u002710.11.12.0/24\u0027]"},{"line_number":86,"context_line":"        subnetpool_data \u003d {\u0027subnetpool\u0027: {"},{"line_number":87,"context_line":"            \u0027name\u0027: \u0027foo-subnetpool\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a710552_fcf2f56e","line":84,"in_reply_to":"7a740942_ee99067a","updated":"2015-12-14 19:10:15.000000000","message":"See comments in https://review.openstack.org/#/c/233317/9/neutron/tests/api/test_address_scopes.py","commit_id":"18830b93f1e14c3793f5dd4d2112a2137761a281"}],"neutron/tests/api/test_subnetpools_negative.py":[{"author":{"_account_id":17211,"name":"Brandon Palm","email":"bapalm@us.ibm.com","username":"bapalm"},"change_message_id":"26a962fe80c29f78ba2d9c23a5d911a8965236a0","unresolved":false,"context_lines":[{"line_number":164,"context_line":"    def test_create_subnetpool_associate_address_scope_prefix_intersect(self):"},{"line_number":165,"context_line":"        address_scope \u003d self.create_address_scope("},{"line_number":166,"context_line":"            name\u003ddata_utils.rand_name(\u0027smoke-address-scope\u0027),"},{"line_number":167,"context_line":"            ip_version\u003d4)"},{"line_number":168,"context_line":"        addr_scope_id \u003d address_scope[\u0027id\u0027]"},{"line_number":169,"context_line":"        pool_id \u003d self._create_subnetpool("},{"line_number":170,"context_line":"            self.client, pool_values\u003d{\u0027address_scope_id\u0027: addr_scope_id})"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_97961493","line":167,"updated":"2015-11-16 16:15:09.000000000","message":"Ditto.","commit_id":"2f09ec62505f4d607f49f61602316a68930063a4"},{"author":{"_account_id":17211,"name":"Brandon Palm","email":"bapalm@us.ibm.com","username":"bapalm"},"change_message_id":"26a962fe80c29f78ba2d9c23a5d911a8965236a0","unresolved":false,"context_lines":[{"line_number":181,"context_line":"    def test_create_sp_associate_address_scope_multiple_prefix_intersect(self):"},{"line_number":182,"context_line":"        address_scope \u003d self.create_address_scope("},{"line_number":183,"context_line":"            name\u003ddata_utils.rand_name(\u0027smoke-address-scope\u0027),"},{"line_number":184,"context_line":"            ip_version\u003d4)"},{"line_number":185,"context_line":"        addr_scope_id \u003d address_scope[\u0027id\u0027]"},{"line_number":186,"context_line":"        pool_values \u003d {\u0027address_scope_id\u0027: addr_scope_id,"},{"line_number":187,"context_line":"                       \u0027prefixes\u0027: [u\u002720.0.0.0/18\u0027, u\u002730.0.0.0/18\u0027]}"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_778db07a","line":184,"updated":"2015-11-16 16:15:09.000000000","message":"Ditto.","commit_id":"2f09ec62505f4d607f49f61602316a68930063a4"},{"author":{"_account_id":17211,"name":"Brandon Palm","email":"bapalm@us.ibm.com","username":"bapalm"},"change_message_id":"26a962fe80c29f78ba2d9c23a5d911a8965236a0","unresolved":false,"context_lines":[{"line_number":202,"context_line":"    def test_create_subnetpool_associate_address_scope_of_other_owner(self):"},{"line_number":203,"context_line":"        address_scope \u003d self.create_address_scope("},{"line_number":204,"context_line":"            name\u003ddata_utils.rand_name(\u0027smoke-address-scope\u0027), is_admin\u003dTrue,"},{"line_number":205,"context_line":"            ip_version\u003d4)"},{"line_number":206,"context_line":"        address_scope_id \u003d address_scope[\u0027id\u0027]"},{"line_number":207,"context_line":"        subnetpool_data \u003d copy.deepcopy(self._subnetpool_data)"},{"line_number":208,"context_line":"        subnetpool_data[\u0027subnetpool\u0027][\u0027address_scope_id\u0027] \u003d address_scope_id"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_37ee4823","line":205,"updated":"2015-11-16 16:15:09.000000000","message":"Ditto.","commit_id":"2f09ec62505f4d607f49f61602316a68930063a4"},{"author":{"_account_id":17211,"name":"Brandon Palm","email":"bapalm@us.ibm.com","username":"bapalm"},"change_message_id":"26a962fe80c29f78ba2d9c23a5d911a8965236a0","unresolved":false,"context_lines":[{"line_number":214,"context_line":"    def test_tenant_create_subnetpool_associate_shared_address_scope(self):"},{"line_number":215,"context_line":"        address_scope \u003d self.create_address_scope("},{"line_number":216,"context_line":"            name\u003ddata_utils.rand_name(\u0027smoke-address-scope\u0027), is_admin\u003dTrue,"},{"line_number":217,"context_line":"            shared\u003dTrue, ip_version\u003d4)"},{"line_number":218,"context_line":"        subnetpool_data \u003d copy.deepcopy(self._subnetpool_data)"},{"line_number":219,"context_line":"        subnetpool_data[\u0027subnetpool\u0027][\u0027address_scope_id\u0027] \u003d ("},{"line_number":220,"context_line":"            address_scope[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_97ddb472","line":217,"updated":"2015-11-16 16:15:09.000000000","message":"Ditto.","commit_id":"2f09ec62505f4d607f49f61602316a68930063a4"},{"author":{"_account_id":17211,"name":"Brandon Palm","email":"bapalm@us.ibm.com","username":"bapalm"},"change_message_id":"26a962fe80c29f78ba2d9c23a5d911a8965236a0","unresolved":false,"context_lines":[{"line_number":241,"context_line":"        # Updating the first subnet pool with the prefix intersecting"},{"line_number":242,"context_line":"        # with the second one should be a failure"},{"line_number":243,"context_line":"        address_scope \u003d self.create_address_scope("},{"line_number":244,"context_line":"            name\u003ddata_utils.rand_name(\u0027smoke-address-scope\u0027), ip_version\u003d4)"},{"line_number":245,"context_line":"        addr_scope_id \u003d address_scope[\u0027id\u0027]"},{"line_number":246,"context_line":"        pool_values \u003d {\u0027address_scope_id\u0027: addr_scope_id,"},{"line_number":247,"context_line":"                       \u0027prefixes\u0027: pool_1_prefixes}"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_b7da3877","line":244,"updated":"2015-11-16 16:15:09.000000000","message":"Ditto.","commit_id":"2f09ec62505f4d607f49f61602316a68930063a4"},{"author":{"_account_id":17211,"name":"Brandon Palm","email":"bapalm@us.ibm.com","username":"bapalm"},"change_message_id":"26a962fe80c29f78ba2d9c23a5d911a8965236a0","unresolved":false,"context_lines":[{"line_number":286,"context_line":"    def test_tenant_update_sp_prefix_associated_with_shared_addr_scope(self):"},{"line_number":287,"context_line":"        address_scope \u003d self.create_address_scope("},{"line_number":288,"context_line":"            name\u003ddata_utils.rand_name(\u0027smoke-address-scope\u0027), is_admin\u003dTrue,"},{"line_number":289,"context_line":"            shared\u003dTrue, ip_version\u003d4)"},{"line_number":290,"context_line":"        addr_scope_id \u003d address_scope[\u0027id\u0027]"},{"line_number":291,"context_line":"        pool_values \u003d {\u0027prefixes\u0027: [u\u002720.0.0.0/18\u0027, u\u002730.0.0.0/18\u0027]}"},{"line_number":292,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_77e4d03a","line":289,"updated":"2015-11-16 16:15:09.000000000","message":"Ditto.","commit_id":"2f09ec62505f4d607f49f61602316a68930063a4"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"88ad90d3c65bb94fd4d1273454944124d2776d9b","unresolved":false,"context_lines":[{"line_number":167,"context_line":"    def test_create_subnetpool_associate_address_scope_prefix_intersect(self):"},{"line_number":168,"context_line":"        address_scope \u003d self.create_address_scope("},{"line_number":169,"context_line":"            name\u003ddata_utils.rand_name(\u0027smoke-address-scope\u0027),"},{"line_number":170,"context_line":"            ip_version\u003d4)"},{"line_number":171,"context_line":"        addr_scope_id \u003d address_scope[\u0027id\u0027]"},{"line_number":172,"context_line":"        pool_id \u003d self._create_subnetpool("},{"line_number":173,"context_line":"            self.client, pool_values\u003d{\u0027address_scope_id\u0027: addr_scope_id})"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a740942_73e816b5","line":170,"updated":"2015-12-06 07:54:03.000000000","message":"ditto","commit_id":"18830b93f1e14c3793f5dd4d2112a2137761a281"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"8b5fedecc59ecf75a15368a246bf65d5e46a751b","unresolved":false,"context_lines":[{"line_number":167,"context_line":"    def test_create_subnetpool_associate_address_scope_prefix_intersect(self):"},{"line_number":168,"context_line":"        address_scope \u003d self.create_address_scope("},{"line_number":169,"context_line":"            name\u003ddata_utils.rand_name(\u0027smoke-address-scope\u0027),"},{"line_number":170,"context_line":"            ip_version\u003d4)"},{"line_number":171,"context_line":"        addr_scope_id \u003d address_scope[\u0027id\u0027]"},{"line_number":172,"context_line":"        pool_id \u003d self._create_subnetpool("},{"line_number":173,"context_line":"            self.client, pool_values\u003d{\u0027address_scope_id\u0027: addr_scope_id})"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a740942_ae8e9e2b","line":170,"in_reply_to":"7a740942_73e816b5","updated":"2015-12-08 18:35:31.000000000","message":"Done","commit_id":"18830b93f1e14c3793f5dd4d2112a2137761a281"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"0c953023eef14ab3c44087801a580916582450ac","unresolved":false,"context_lines":[{"line_number":167,"context_line":"    def test_create_subnetpool_associate_address_scope_prefix_intersect(self):"},{"line_number":168,"context_line":"        address_scope \u003d self.create_address_scope("},{"line_number":169,"context_line":"            name\u003ddata_utils.rand_name(\u0027smoke-address-scope\u0027),"},{"line_number":170,"context_line":"            ip_version\u003d4)"},{"line_number":171,"context_line":"        addr_scope_id \u003d address_scope[\u0027id\u0027]"},{"line_number":172,"context_line":"        pool_id \u003d self._create_subnetpool("},{"line_number":173,"context_line":"            self.client, pool_values\u003d{\u0027address_scope_id\u0027: addr_scope_id})"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a710552_dc94d9e9","line":170,"in_reply_to":"7a740942_ae8e9e2b","updated":"2015-12-14 19:10:15.000000000","message":"See comments in https://review.openstack.org/#/c/233317/9/neutron/tests/api/test_address_scopes.py","commit_id":"18830b93f1e14c3793f5dd4d2112a2137761a281"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"88ad90d3c65bb94fd4d1273454944124d2776d9b","unresolved":false,"context_lines":[{"line_number":185,"context_line":"    def test_create_sp_associate_address_scope_multiple_prefix_intersect(self):"},{"line_number":186,"context_line":"        address_scope \u003d self.create_address_scope("},{"line_number":187,"context_line":"            name\u003ddata_utils.rand_name(\u0027smoke-address-scope\u0027),"},{"line_number":188,"context_line":"            ip_version\u003d4)"},{"line_number":189,"context_line":"        addr_scope_id \u003d address_scope[\u0027id\u0027]"},{"line_number":190,"context_line":"        pool_values \u003d {\u0027address_scope_id\u0027: addr_scope_id,"},{"line_number":191,"context_line":"                       \u0027prefixes\u0027: [u\u002720.0.0.0/18\u0027, u\u002730.0.0.0/18\u0027]}"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a740942_93eb42b0","line":188,"updated":"2015-12-06 07:54:03.000000000","message":"ditto","commit_id":"18830b93f1e14c3793f5dd4d2112a2137761a281"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"0c953023eef14ab3c44087801a580916582450ac","unresolved":false,"context_lines":[{"line_number":185,"context_line":"    def test_create_sp_associate_address_scope_multiple_prefix_intersect(self):"},{"line_number":186,"context_line":"        address_scope \u003d self.create_address_scope("},{"line_number":187,"context_line":"            name\u003ddata_utils.rand_name(\u0027smoke-address-scope\u0027),"},{"line_number":188,"context_line":"            ip_version\u003d4)"},{"line_number":189,"context_line":"        addr_scope_id \u003d address_scope[\u0027id\u0027]"},{"line_number":190,"context_line":"        pool_values \u003d {\u0027address_scope_id\u0027: addr_scope_id,"},{"line_number":191,"context_line":"                       \u0027prefixes\u0027: [u\u002720.0.0.0/18\u0027, u\u002730.0.0.0/18\u0027]}"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a710552_bca30d4f","line":188,"in_reply_to":"7a740942_0e8012f4","updated":"2015-12-14 19:10:15.000000000","message":"See comments in https://review.openstack.org/#/c/233317/9/neutron/tests/api/test_address_scopes.py","commit_id":"18830b93f1e14c3793f5dd4d2112a2137761a281"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"8b5fedecc59ecf75a15368a246bf65d5e46a751b","unresolved":false,"context_lines":[{"line_number":185,"context_line":"    def test_create_sp_associate_address_scope_multiple_prefix_intersect(self):"},{"line_number":186,"context_line":"        address_scope \u003d self.create_address_scope("},{"line_number":187,"context_line":"            name\u003ddata_utils.rand_name(\u0027smoke-address-scope\u0027),"},{"line_number":188,"context_line":"            ip_version\u003d4)"},{"line_number":189,"context_line":"        addr_scope_id \u003d address_scope[\u0027id\u0027]"},{"line_number":190,"context_line":"        pool_values \u003d {\u0027address_scope_id\u0027: addr_scope_id,"},{"line_number":191,"context_line":"                       \u0027prefixes\u0027: [u\u002720.0.0.0/18\u0027, u\u002730.0.0.0/18\u0027]}"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a740942_0e8012f4","line":188,"in_reply_to":"7a740942_93eb42b0","updated":"2015-12-08 18:35:31.000000000","message":"Done","commit_id":"18830b93f1e14c3793f5dd4d2112a2137761a281"}],"neutron/tests/unit/extensions/test_address_scope.py":[{"author":{"_account_id":17211,"name":"Brandon Palm","email":"bapalm@us.ibm.com","username":"bapalm"},"change_message_id":"26a962fe80c29f78ba2d9c23a5d911a8965236a0","unresolved":false,"context_lines":[{"line_number":129,"context_line":"        expected_addr_scope \u003d {\u0027name\u0027: \u0027foo-address-scope\u0027,"},{"line_number":130,"context_line":"                               \u0027tenant_id\u0027: self._tenant_id,"},{"line_number":131,"context_line":"                               \u0027shared\u0027: False,"},{"line_number":132,"context_line":"                               \u0027ip_version\u0027: 4}"},{"line_number":133,"context_line":"        self._test_create_address_scope(4, name\u003d\u0027foo-address-scope\u0027,"},{"line_number":134,"context_line":"                                        expected\u003dexpected_addr_scope)"},{"line_number":135,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_7773704e","line":132,"updated":"2015-11-16 16:15:09.000000000","message":"https://github.com/openstack/neutron/blob/master/neutron/common/constants.py#L79","commit_id":"2f09ec62505f4d607f49f61602316a68930063a4"},{"author":{"_account_id":17211,"name":"Brandon Palm","email":"bapalm@us.ibm.com","username":"bapalm"},"change_message_id":"26a962fe80c29f78ba2d9c23a5d911a8965236a0","unresolved":false,"context_lines":[{"line_number":145,"context_line":"        expected_addr_scope \u003d {\u0027name\u0027: \u0027\u0027,"},{"line_number":146,"context_line":"                               \u0027tenant_id\u0027: self._tenant_id,"},{"line_number":147,"context_line":"                               \u0027shared\u0027: False}"},{"line_number":148,"context_line":"        self._test_create_address_scope(4, name\u003d\u0027\u0027,"},{"line_number":149,"context_line":"                                        expected\u003dexpected_addr_scope)"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"        # no name specified"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_d7981c6d","line":148,"updated":"2015-11-16 16:15:09.000000000","message":"https://github.com/openstack/neutron/blob/master/neutron/common/constants.py#L79","commit_id":"2f09ec62505f4d607f49f61602316a68930063a4"},{"author":{"_account_id":17211,"name":"Brandon Palm","email":"bapalm@us.ibm.com","username":"bapalm"},"change_message_id":"26a962fe80c29f78ba2d9c23a5d911a8965236a0","unresolved":false,"context_lines":[{"line_number":149,"context_line":"                                        expected\u003dexpected_addr_scope)"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"        # no name specified"},{"line_number":152,"context_line":"        self._test_create_address_scope(4, expected\u003dexpected_addr_scope)"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    def test_create_address_scope_shared_admin(self):"},{"line_number":155,"context_line":"        expected_addr_scope \u003d {\u0027name\u0027: \u0027foo-address-scope\u0027, \u0027shared\u0027: True}"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_97a3749e","line":152,"updated":"2015-11-16 16:15:09.000000000","message":"https://github.com/openstack/neutron/blob/master/neutron/common/constants.py#L79","commit_id":"2f09ec62505f4d607f49f61602316a68930063a4"},{"author":{"_account_id":17211,"name":"Brandon Palm","email":"bapalm@us.ibm.com","username":"bapalm"},"change_message_id":"26a962fe80c29f78ba2d9c23a5d911a8965236a0","unresolved":false,"context_lines":[{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    def test_create_address_scope_shared_admin(self):"},{"line_number":155,"context_line":"        expected_addr_scope \u003d {\u0027name\u0027: \u0027foo-address-scope\u0027, \u0027shared\u0027: True}"},{"line_number":156,"context_line":"        self._test_create_address_scope(4, name\u003d\u0027foo-address-scope\u0027,"},{"line_number":157,"context_line":"                                        admin\u003dTrue, shared\u003dTrue,"},{"line_number":158,"context_line":"                                        expected\u003dexpected_addr_scope)"},{"line_number":159,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_57ad0c87","line":156,"updated":"2015-11-16 16:15:09.000000000","message":"https://github.com/openstack/neutron/blob/master/neutron/common/constants.py#L79","commit_id":"2f09ec62505f4d607f49f61602316a68930063a4"},{"author":{"_account_id":17211,"name":"Brandon Palm","email":"bapalm@us.ibm.com","username":"bapalm"},"change_message_id":"26a962fe80c29f78ba2d9c23a5d911a8965236a0","unresolved":false,"context_lines":[{"line_number":158,"context_line":"                                        expected\u003dexpected_addr_scope)"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    def test_created_address_scope_shared_non_admin(self):"},{"line_number":161,"context_line":"        res \u003d self._create_address_scope(self.fmt, 4,"},{"line_number":162,"context_line":"                                         name\u003d\u0027foo-address-scope\u0027,"},{"line_number":163,"context_line":"                                         tenant_id\u003dself._tenant_id,"},{"line_number":164,"context_line":"                                         admin\u003dFalse, shared\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_37bba8c6","line":161,"updated":"2015-11-16 16:15:09.000000000","message":"https://github.com/openstack/neutron/blob/master/neutron/common/constants.py#L79","commit_id":"2f09ec62505f4d607f49f61602316a68930063a4"},{"author":{"_account_id":17211,"name":"Brandon Palm","email":"bapalm@us.ibm.com","username":"bapalm"},"change_message_id":"26a962fe80c29f78ba2d9c23a5d911a8965236a0","unresolved":false,"context_lines":[{"line_number":165,"context_line":"        self.assertEqual(webob.exc.HTTPForbidden.code, res.status_int)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    def test_created_address_scope_specify_id(self):"},{"line_number":168,"context_line":"        res \u003d self._create_address_scope(self.fmt, 4,"},{"line_number":169,"context_line":"                                         name\u003d\u0027foo-address-scope\u0027,"},{"line_number":170,"context_line":"                                         id\u003d\u0027foo-id\u0027)"},{"line_number":171,"context_line":"        self.assertEqual(webob.exc.HTTPClientError.code, res.status_int)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_b7c79844","line":168,"updated":"2015-11-16 16:15:09.000000000","message":"https://github.com/openstack/neutron/blob/master/neutron/common/constants.py#L79","commit_id":"2f09ec62505f4d607f49f61602316a68930063a4"},{"author":{"_account_id":17211,"name":"Brandon Palm","email":"bapalm@us.ibm.com","username":"bapalm"},"change_message_id":"26a962fe80c29f78ba2d9c23a5d911a8965236a0","unresolved":false,"context_lines":[{"line_number":171,"context_line":"        self.assertEqual(webob.exc.HTTPClientError.code, res.status_int)"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    def test_delete_address_scope(self):"},{"line_number":174,"context_line":"        with self.address_scope(4, name\u003d\u0027foo-address-scope\u0027) as addr_scope:"},{"line_number":175,"context_line":"            self._delete(\u0027address-scopes\u0027, addr_scope[\u0027address_scope\u0027][\u0027id\u0027])"},{"line_number":176,"context_line":"            self._show(\u0027address-scopes\u0027, addr_scope[\u0027address_scope\u0027][\u0027id\u0027],"},{"line_number":177,"context_line":"                       expected_code\u003dwebob.exc.HTTPNotFound.code)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_57c42c3f","line":174,"updated":"2015-11-16 16:15:09.000000000","message":"https://github.com/openstack/neutron/blob/master/neutron/common/constants.py#L79","commit_id":"2f09ec62505f4d607f49f61602316a68930063a4"},{"author":{"_account_id":17211,"name":"Brandon Palm","email":"bapalm@us.ibm.com","username":"bapalm"},"change_message_id":"26a962fe80c29f78ba2d9c23a5d911a8965236a0","unresolved":false,"context_lines":[{"line_number":177,"context_line":"                       expected_code\u003dwebob.exc.HTTPNotFound.code)"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"    def test_update_address_scope(self):"},{"line_number":180,"context_line":"        addr_scope \u003d self._test_create_address_scope(4,"},{"line_number":181,"context_line":"                                                     name\u003d\u0027foo-address-scope\u0027)"},{"line_number":182,"context_line":"        data \u003d {\u0027address_scope\u0027: {\u0027name\u0027: \u0027bar-address-scope\u0027}}"},{"line_number":183,"context_line":"        self._test_update_address_scope(addr_scope[\u0027address_scope\u0027][\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_77c1302e","line":180,"updated":"2015-11-16 16:15:09.000000000","message":"https://github.com/openstack/neutron/blob/master/neutron/common/constants.py#L79","commit_id":"2f09ec62505f4d607f49f61602316a68930063a4"},{"author":{"_account_id":17211,"name":"Brandon Palm","email":"bapalm@us.ibm.com","username":"bapalm"},"change_message_id":"26a962fe80c29f78ba2d9c23a5d911a8965236a0","unresolved":false,"context_lines":[{"line_number":184,"context_line":"                                        data, expected\u003ddata[\u0027address_scope\u0027])"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    def test_update_address_scope_shared_true_admin(self):"},{"line_number":187,"context_line":"        addr_scope \u003d self._test_create_address_scope(4,"},{"line_number":188,"context_line":"                                                     name\u003d\u0027foo-address-scope\u0027)"},{"line_number":189,"context_line":"        data \u003d {\u0027address_scope\u0027: {\u0027shared\u0027: True}}"},{"line_number":190,"context_line":"        self._test_update_address_scope(addr_scope[\u0027address_scope\u0027][\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_37e2c8d6","line":187,"updated":"2015-11-16 16:15:09.000000000","message":"https://github.com/openstack/neutron/blob/master/neutron/common/constants.py#L79","commit_id":"2f09ec62505f4d607f49f61602316a68930063a4"},{"author":{"_account_id":17211,"name":"Brandon Palm","email":"bapalm@us.ibm.com","username":"bapalm"},"change_message_id":"26a962fe80c29f78ba2d9c23a5d911a8965236a0","unresolved":false,"context_lines":[{"line_number":192,"context_line":"                                        expected\u003ddata[\u0027address_scope\u0027])"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    def test_update_address_scope_shared_true_non_admin(self):"},{"line_number":195,"context_line":"        addr_scope \u003d self._test_create_address_scope(4,"},{"line_number":196,"context_line":"                                                     name\u003d\u0027foo-address-scope\u0027)"},{"line_number":197,"context_line":"        data \u003d {\u0027address_scope\u0027: {\u0027shared\u0027: True}}"},{"line_number":198,"context_line":"        res \u003d self._test_update_address_scope("}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_f7ebe0ae","line":195,"updated":"2015-11-16 16:15:09.000000000","message":"https://github.com/openstack/neutron/blob/master/neutron/common/constants.py#L79","commit_id":"2f09ec62505f4d607f49f61602316a68930063a4"},{"author":{"_account_id":17211,"name":"Brandon Palm","email":"bapalm@us.ibm.com","username":"bapalm"},"change_message_id":"26a962fe80c29f78ba2d9c23a5d911a8965236a0","unresolved":false,"context_lines":[{"line_number":200,"context_line":"        self.assertEqual(webob.exc.HTTPForbidden.code, res.status_int)"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"    def test_update_address_scope_shared_false_admin(self):"},{"line_number":203,"context_line":"        addr_scope \u003d self._test_create_address_scope(4,"},{"line_number":204,"context_line":"                                                     name\u003d\u0027foo-address-scope\u0027,"},{"line_number":205,"context_line":"                                                     admin\u003dTrue, shared\u003dTrue)"},{"line_number":206,"context_line":"        data \u003d {\u0027address_scope\u0027: {\u0027shared\u0027: False}}"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_97d134fe","line":203,"updated":"2015-11-16 16:15:09.000000000","message":"https://github.com/openstack/neutron/blob/master/neutron/common/constants.py#L79","commit_id":"2f09ec62505f4d607f49f61602316a68930063a4"},{"author":{"_account_id":17211,"name":"Brandon Palm","email":"bapalm@us.ibm.com","username":"bapalm"},"change_message_id":"26a962fe80c29f78ba2d9c23a5d911a8965236a0","unresolved":false,"context_lines":[{"line_number":209,"context_line":"        self.assertEqual(webob.exc.HTTPClientError.code, res.status_int)"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"    def test_get_address_scope(self):"},{"line_number":212,"context_line":"        addr_scope \u003d self._test_create_address_scope(4,"},{"line_number":213,"context_line":"                                                     name\u003d\u0027foo-address-scope\u0027)"},{"line_number":214,"context_line":"        req \u003d self.new_show_request(\u0027address-scopes\u0027,"},{"line_number":215,"context_line":"                                    addr_scope[\u0027address_scope\u0027][\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_b7ceb858","line":212,"updated":"2015-11-16 16:15:09.000000000","message":"https://github.com/openstack/neutron/blob/master/neutron/common/constants.py#L79","commit_id":"2f09ec62505f4d607f49f61602316a68930063a4"},{"author":{"_account_id":17211,"name":"Brandon Palm","email":"bapalm@us.ibm.com","username":"bapalm"},"change_message_id":"26a962fe80c29f78ba2d9c23a5d911a8965236a0","unresolved":false,"context_lines":[{"line_number":218,"context_line":"                         res[\u0027address_scope\u0027][\u0027id\u0027])"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"    def test_get_address_scope_different_tenants_not_shared(self):"},{"line_number":221,"context_line":"        addr_scope \u003d self._test_create_address_scope(4,"},{"line_number":222,"context_line":"                                                     name\u003d\u0027foo-address-scope\u0027)"},{"line_number":223,"context_line":"        req \u003d self.new_show_request(\u0027address-scopes\u0027,"},{"line_number":224,"context_line":"                                    addr_scope[\u0027address_scope\u0027][\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_57dbcc1b","line":221,"updated":"2015-11-16 16:15:09.000000000","message":"https://github.com/openstack/neutron/blob/master/neutron/common/constants.py#L79","commit_id":"2f09ec62505f4d607f49f61602316a68930063a4"},{"author":{"_account_id":17211,"name":"Brandon Palm","email":"bapalm@us.ibm.com","username":"bapalm"},"change_message_id":"26a962fe80c29f78ba2d9c23a5d911a8965236a0","unresolved":false,"context_lines":[{"line_number":228,"context_line":"        self.assertEqual(webob.exc.HTTPNotFound.code, res.status_int)"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    def test_get_address_scope_different_tenants_shared(self):"},{"line_number":231,"context_line":"        addr_scope \u003d self._test_create_address_scope(4,"},{"line_number":232,"context_line":"                                                     name\u003d\u0027foo-address-scope\u0027,"},{"line_number":233,"context_line":"                                                     shared\u003dTrue, admin\u003dTrue)"},{"line_number":234,"context_line":"        req \u003d self.new_show_request(\u0027address-scopes\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_37096896","line":231,"updated":"2015-11-16 16:15:09.000000000","message":"https://github.com/openstack/neutron/blob/master/neutron/common/constants.py#L79","commit_id":"2f09ec62505f4d607f49f61602316a68930063a4"},{"author":{"_account_id":17211,"name":"Brandon Palm","email":"bapalm@us.ibm.com","username":"bapalm"},"change_message_id":"26a962fe80c29f78ba2d9c23a5d911a8965236a0","unresolved":false,"context_lines":[{"line_number":240,"context_line":"                         res[\u0027address_scope\u0027][\u0027id\u0027])"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"    def test_list_address_scopes(self):"},{"line_number":243,"context_line":"        self._test_create_address_scope(4, name\u003d\u0027foo-address-scope\u0027)"},{"line_number":244,"context_line":"        self._test_create_address_scope(6, name\u003d\u0027bar-address-scope\u0027)"},{"line_number":245,"context_line":"        res \u003d self._list(\u0027address-scopes\u0027)"},{"line_number":246,"context_line":"        self.assertEqual(2, len(res[\u0027address_scopes\u0027]))"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_d7fd7c6f","line":243,"updated":"2015-11-16 16:15:09.000000000","message":"https://github.com/openstack/neutron/blob/master/neutron/common/constants.py#L79","commit_id":"2f09ec62505f4d607f49f61602316a68930063a4"},{"author":{"_account_id":17211,"name":"Brandon Palm","email":"bapalm@us.ibm.com","username":"bapalm"},"change_message_id":"26a962fe80c29f78ba2d9c23a5d911a8965236a0","unresolved":false,"context_lines":[{"line_number":241,"context_line":""},{"line_number":242,"context_line":"    def test_list_address_scopes(self):"},{"line_number":243,"context_line":"        self._test_create_address_scope(4, name\u003d\u0027foo-address-scope\u0027)"},{"line_number":244,"context_line":"        self._test_create_address_scope(6, name\u003d\u0027bar-address-scope\u0027)"},{"line_number":245,"context_line":"        res \u003d self._list(\u0027address-scopes\u0027)"},{"line_number":246,"context_line":"        self.assertEqual(2, len(res[\u0027address_scopes\u0027]))"},{"line_number":247,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_976db434","line":244,"updated":"2015-11-16 16:15:09.000000000","message":"https://github.com/openstack/neutron/blob/master/neutron/common/constants.py#L80","commit_id":"2f09ec62505f4d607f49f61602316a68930063a4"},{"author":{"_account_id":17211,"name":"Brandon Palm","email":"bapalm@us.ibm.com","username":"bapalm"},"change_message_id":"26a962fe80c29f78ba2d9c23a5d911a8965236a0","unresolved":false,"context_lines":[{"line_number":246,"context_line":"        self.assertEqual(2, len(res[\u0027address_scopes\u0027]))"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"    def test_list_address_scopes_different_tenants_shared(self):"},{"line_number":249,"context_line":"        self._test_create_address_scope(4, name\u003d\u0027foo-address-scope\u0027,"},{"line_number":250,"context_line":"                                        shared\u003dTrue, admin\u003dTrue)"},{"line_number":251,"context_line":"        admin_res \u003d self._list(\u0027address-scopes\u0027)"},{"line_number":252,"context_line":"        mortal_res \u003d self._list("}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_97f8547e","line":249,"updated":"2015-11-16 16:15:09.000000000","message":"https://github.com/openstack/neutron/blob/master/neutron/common/constants.py#L79","commit_id":"2f09ec62505f4d607f49f61602316a68930063a4"},{"author":{"_account_id":17211,"name":"Brandon Palm","email":"bapalm@us.ibm.com","username":"bapalm"},"change_message_id":"26a962fe80c29f78ba2d9c23a5d911a8965236a0","unresolved":false,"context_lines":[{"line_number":283,"context_line":"        return subnetpool"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"    def test_create_subnetpool_associate_address_scope(self):"},{"line_number":286,"context_line":"        with self.address_scope(4, name\u003d\u0027foo-address-scope\u0027) as addr_scope:"},{"line_number":287,"context_line":"            address_scope_id \u003d addr_scope[\u0027address_scope\u0027][\u0027id\u0027]"},{"line_number":288,"context_line":"            subnet \u003d netaddr.IPNetwork(\u002710.10.10.0/24\u0027)"},{"line_number":289,"context_line":"            expected \u003d {\u0027address_scope_id\u0027: address_scope_id}"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_57f2ec9b","line":286,"updated":"2015-11-16 16:15:09.000000000","message":"https://github.com/openstack/neutron/blob/master/neutron/common/constants.py#L79","commit_id":"2f09ec62505f4d607f49f61602316a68930063a4"},{"author":{"_account_id":17211,"name":"Brandon Palm","email":"bapalm@us.ibm.com","username":"bapalm"},"change_message_id":"26a962fe80c29f78ba2d9c23a5d911a8965236a0","unresolved":false,"context_lines":[{"line_number":298,"context_line":"            min_prefixlen\u003d\u002721\u0027, address_scope_id\u003d\u0027foo-addr-scope-id\u0027)"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"    def test_create_subnetpool_assoc_address_scope_with_prefix_intersect(self):"},{"line_number":301,"context_line":"        with self.address_scope(4, name\u003d\u0027foo-address-scope\u0027) as addr_scope:"},{"line_number":302,"context_line":"            address_scope_id \u003d addr_scope[\u0027address_scope\u0027][\u0027id\u0027]"},{"line_number":303,"context_line":"            subnet \u003d netaddr.IPNetwork(\u002710.10.10.0/24\u0027)"},{"line_number":304,"context_line":"            expected \u003d {\u0027address_scope_id\u0027: address_scope_id}"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_77eff0b0","line":301,"updated":"2015-11-16 16:15:09.000000000","message":"https://github.com/openstack/neutron/blob/master/neutron/common/constants.py#L79","commit_id":"2f09ec62505f4d607f49f61602316a68930063a4"},{"author":{"_account_id":17211,"name":"Brandon Palm","email":"bapalm@us.ibm.com","username":"bapalm"},"change_message_id":"26a962fe80c29f78ba2d9c23a5d911a8965236a0","unresolved":false,"context_lines":[{"line_number":317,"context_line":"        initial_subnetpool \u003d self._test_create_subnetpool([subnet.cidr],"},{"line_number":318,"context_line":"                                                          name\u003d\u0027foo-sp\u0027,"},{"line_number":319,"context_line":"                                                          min_prefixlen\u003d\u002721\u0027)"},{"line_number":320,"context_line":"        with self.address_scope(4, name\u003d\u0027foo-address-scope\u0027) as addr_scope:"},{"line_number":321,"context_line":"            address_scope_id \u003d addr_scope[\u0027address_scope\u0027][\u0027id\u0027]"},{"line_number":322,"context_line":"            data \u003d {\u0027subnetpool\u0027: {\u0027address_scope_id\u0027: address_scope_id}}"},{"line_number":323,"context_line":"            req \u003d self.new_update_request("}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_f739a042","line":320,"updated":"2015-11-16 16:15:09.000000000","message":"https://github.com/openstack/neutron/blob/master/neutron/common/constants.py#L79","commit_id":"2f09ec62505f4d607f49f61602316a68930063a4"},{"author":{"_account_id":17211,"name":"Brandon Palm","email":"bapalm@us.ibm.com","username":"bapalm"},"change_message_id":"26a962fe80c29f78ba2d9c23a5d911a8965236a0","unresolved":false,"context_lines":[{"line_number":339,"context_line":"        self.assertEqual(webob.exc.HTTPClientError.code, res.status_int)"},{"line_number":340,"context_line":""},{"line_number":341,"context_line":"    def test_update_subnetpool_disassociate_address_scope(self):"},{"line_number":342,"context_line":"        with self.address_scope(4, name\u003d\u0027foo-address-scope\u0027) as addr_scope:"},{"line_number":343,"context_line":"            address_scope_id \u003d addr_scope[\u0027address_scope\u0027][\u0027id\u0027]"},{"line_number":344,"context_line":"            subnet \u003d netaddr.IPNetwork(\u002710.10.10.0/24\u0027)"},{"line_number":345,"context_line":"            expected \u003d {\u0027address_scope_id\u0027: address_scope_id}"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_57498ccf","line":342,"updated":"2015-11-16 16:15:09.000000000","message":"https://github.com/openstack/neutron/blob/master/neutron/common/constants.py#L79","commit_id":"2f09ec62505f4d607f49f61602316a68930063a4"},{"author":{"_account_id":17211,"name":"Brandon Palm","email":"bapalm@us.ibm.com","username":"bapalm"},"change_message_id":"26a962fe80c29f78ba2d9c23a5d911a8965236a0","unresolved":false,"context_lines":[{"line_number":355,"context_line":"            self._compare_resource(res, data[\u0027subnetpool\u0027], \u0027subnetpool\u0027)"},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"    def test_update_subnetpool_associate_another_address_scope(self):"},{"line_number":358,"context_line":"        with self.address_scope(4, name\u003d\u0027foo-address-scope\u0027) as addr_scope:"},{"line_number":359,"context_line":"            address_scope_id \u003d addr_scope[\u0027address_scope\u0027][\u0027id\u0027]"},{"line_number":360,"context_line":"            subnet \u003d netaddr.IPNetwork(\u002710.10.10.0/24\u0027)"},{"line_number":361,"context_line":"            expected \u003d {\u0027address_scope_id\u0027: address_scope_id}"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_774610c1","line":358,"updated":"2015-11-16 16:15:09.000000000","message":"https://github.com/openstack/neutron/blob/master/neutron/common/constants.py#L79","commit_id":"2f09ec62505f4d607f49f61602316a68930063a4"},{"author":{"_account_id":17211,"name":"Brandon Palm","email":"bapalm@us.ibm.com","username":"bapalm"},"change_message_id":"26a962fe80c29f78ba2d9c23a5d911a8965236a0","unresolved":false,"context_lines":[{"line_number":363,"context_line":"                [subnet.cidr], expected\u003dexpected, name\u003d\u0027foo-sp\u0027,"},{"line_number":364,"context_line":"                min_prefixlen\u003d\u002721\u0027, address_scope_id\u003daddress_scope_id)"},{"line_number":365,"context_line":""},{"line_number":366,"context_line":"            with self.address_scope(4, name\u003d\u0027foo-address-scope\u0027) as other_a_s:"},{"line_number":367,"context_line":"                other_a_s_id \u003d other_a_s[\u0027address_scope\u0027][\u0027id\u0027]"},{"line_number":368,"context_line":"                update_data \u003d {\u0027subnetpool\u0027: {\u0027address_scope_id\u0027:"},{"line_number":369,"context_line":"                                              other_a_s_id}}"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_371728a5","line":366,"updated":"2015-11-16 16:15:09.000000000","message":"https://github.com/openstack/neutron/blob/master/neutron/common/constants.py#L79","commit_id":"2f09ec62505f4d607f49f61602316a68930063a4"},{"author":{"_account_id":17211,"name":"Brandon Palm","email":"bapalm@us.ibm.com","username":"bapalm"},"change_message_id":"26a962fe80c29f78ba2d9c23a5d911a8965236a0","unresolved":false,"context_lines":[{"line_number":376,"context_line":"                                       \u0027subnetpool\u0027)"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"    def test_delete_address_scope_in_use(self):"},{"line_number":379,"context_line":"        with self.address_scope(4, name\u003d\u0027foo-address-scope\u0027) as addr_scope:"},{"line_number":380,"context_line":"            address_scope_id \u003d addr_scope[\u0027address_scope\u0027][\u0027id\u0027]"},{"line_number":381,"context_line":"            subnet \u003d netaddr.IPNetwork(\u002710.10.10.0/24\u0027)"},{"line_number":382,"context_line":"            expected \u003d {\u0027address_scope_id\u0027: address_scope_id}"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_b7231805","line":379,"updated":"2015-11-16 16:15:09.000000000","message":"https://github.com/openstack/neutron/blob/master/neutron/common/constants.py#L79","commit_id":"2f09ec62505f4d607f49f61602316a68930063a4"},{"author":{"_account_id":17211,"name":"Brandon Palm","email":"bapalm@us.ibm.com","username":"bapalm"},"change_message_id":"26a962fe80c29f78ba2d9c23a5d911a8965236a0","unresolved":false,"context_lines":[{"line_number":388,"context_line":"                         expected_code\u003dwebob.exc.HTTPConflict.code)"},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"    def test_add_subnetpool_address_scope_wrong_address_family(self):"},{"line_number":391,"context_line":"        with self.address_scope(6, name\u003d\u0027foo-address-scope\u0027) as addr_scope:"},{"line_number":392,"context_line":"            address_scope_id \u003d addr_scope[\u0027address_scope\u0027][\u0027id\u0027]"},{"line_number":393,"context_line":"            subnet \u003d netaddr.IPNetwork(\u002710.10.10.0/24\u0027)"},{"line_number":394,"context_line":"            self.assertRaises(webob.exc.HTTPClientError,"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_3765e844","line":391,"updated":"2015-11-16 16:15:09.000000000","message":"https://github.com/openstack/neutron/blob/master/neutron/common/constants.py#L80","commit_id":"2f09ec62505f4d607f49f61602316a68930063a4"},{"author":{"_account_id":17211,"name":"Brandon Palm","email":"bapalm@us.ibm.com","username":"bapalm"},"change_message_id":"26a962fe80c29f78ba2d9c23a5d911a8965236a0","unresolved":false,"context_lines":[{"line_number":398,"context_line":"                              address_scope_id\u003daddress_scope_id)"},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"    def test_update_subnetpool_associate_address_scope_wrong_family(self):"},{"line_number":401,"context_line":"        with self.address_scope(6, name\u003d\u0027foo-address-scope\u0027) as addr_scope:"},{"line_number":402,"context_line":"            address_scope_id \u003d addr_scope[\u0027address_scope\u0027][\u0027id\u0027]"},{"line_number":403,"context_line":"            subnet \u003d netaddr.IPNetwork(\u00272001:db8::/64\u0027)"},{"line_number":404,"context_line":"            expected \u003d {\u0027address_scope_id\u0027: address_scope_id}"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_7774d0fc","line":401,"updated":"2015-11-16 16:15:09.000000000","message":"https://github.com/openstack/neutron/blob/master/neutron/common/constants.py#L80","commit_id":"2f09ec62505f4d607f49f61602316a68930063a4"},{"author":{"_account_id":17211,"name":"Brandon Palm","email":"bapalm@us.ibm.com","username":"bapalm"},"change_message_id":"26a962fe80c29f78ba2d9c23a5d911a8965236a0","unresolved":false,"context_lines":[{"line_number":406,"context_line":"                [subnet.cidr], expected\u003dexpected, name\u003d\u0027foo-sp\u0027,"},{"line_number":407,"context_line":"                min_prefixlen\u003d\u002764\u0027, address_scope_id\u003daddress_scope_id)"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"            with self.address_scope(4, name\u003d\u0027foo-address-scope\u0027) as other_a_s:"},{"line_number":410,"context_line":"                other_a_s_id \u003d other_a_s[\u0027address_scope\u0027][\u0027id\u0027]"},{"line_number":411,"context_line":"                update_data \u003d {\u0027subnetpool\u0027: {\u0027address_scope_id\u0027:"},{"line_number":412,"context_line":"                                              other_a_s_id}}"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_1779c4fc","line":409,"updated":"2015-11-16 16:15:09.000000000","message":"https://github.com/openstack/neutron/blob/master/neutron/common/constants.py#L79","commit_id":"2f09ec62505f4d607f49f61602316a68930063a4"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"84da2eaf4dd550edce6f87fc6bc60cc15c08955a","unresolved":false,"context_lines":[{"line_number":18,"context_line":"import webob.exc"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from neutron.api.v2 import attributes as attr"},{"line_number":21,"context_line":"from neutron.common.constants import IP_VERSION_4"},{"line_number":22,"context_line":"from neutron.common.constants import IP_VERSION_6"},{"line_number":23,"context_line":"from neutron import context"},{"line_number":24,"context_line":"from neutron.db import address_scope_db"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba8a016a_e8a8bbdd","line":21,"updated":"2015-11-17 09:58:22.000000000","message":"This should be:\nfrom neutron.common import constants\n\nand then use constants.IP_VERSION_4 and constants.IP_VERSION_6","commit_id":"a4b023a825c10aff49e960de4590810573686dfc"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"cf5ea9642d6d4e19ca6d2e162a301dd8c864df9e","unresolved":false,"context_lines":[{"line_number":18,"context_line":"import webob.exc"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from neutron.api.v2 import attributes as attr"},{"line_number":21,"context_line":"from neutron.common.constants import IP_VERSION_4"},{"line_number":22,"context_line":"from neutron.common.constants import IP_VERSION_6"},{"line_number":23,"context_line":"from neutron import context"},{"line_number":24,"context_line":"from neutron.db import address_scope_db"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba8a016a_1948cb5a","line":21,"in_reply_to":"ba8a016a_d42bfae9","updated":"2015-11-17 21:32:05.000000000","message":"I think we used to have a pep8 check for this.","commit_id":"a4b023a825c10aff49e960de4590810573686dfc"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"aadfa27ca4f1947c645b02e175a9d19731512ab4","unresolved":false,"context_lines":[{"line_number":18,"context_line":"import webob.exc"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from neutron.api.v2 import attributes as attr"},{"line_number":21,"context_line":"from neutron.common.constants import IP_VERSION_4"},{"line_number":22,"context_line":"from neutron.common.constants import IP_VERSION_6"},{"line_number":23,"context_line":"from neutron import context"},{"line_number":24,"context_line":"from neutron.db import address_scope_db"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba8a016a_d42bfae9","line":21,"in_reply_to":"ba8a016a_e8a8bbdd","updated":"2015-11-17 16:23:32.000000000","message":"Done","commit_id":"a4b023a825c10aff49e960de4590810573686dfc"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"84da2eaf4dd550edce6f87fc6bc60cc15c08955a","unresolved":false,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":"class AddressScopeTestCase(test_db_base_plugin_v2.NeutronDbPluginV2TestCase):"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def _create_address_scope(self, fmt, ip_version, expected_res_status\u003dNone,"},{"line_number":54,"context_line":"                              admin\u003dFalse, **kwargs):"},{"line_number":55,"context_line":"        address_scope \u003d {\u0027address_scope\u0027: {}}"},{"line_number":56,"context_line":"        address_scope[\u0027address_scope\u0027][\u0027ip_version\u0027] \u003d ip_version"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba8a016a_0883bf57","line":53,"updated":"2015-11-17 09:58:22.000000000","message":"please set this as ip_version\u003dconstants.IP_VERSION_4 then you will not have to make all of the changes in the previous files where you set ip_version\u003d4","commit_id":"a4b023a825c10aff49e960de4590810573686dfc"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"cdda7b2cdd93aadd5eca4dee12ca0edb063f7c15","unresolved":false,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":"class AddressScopeTestCase(test_db_base_plugin_v2.NeutronDbPluginV2TestCase):"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def _create_address_scope(self, fmt, ip_version, expected_res_status\u003dNone,"},{"line_number":54,"context_line":"                              admin\u003dFalse, **kwargs):"},{"line_number":55,"context_line":"        address_scope \u003d {\u0027address_scope\u0027: {}}"},{"line_number":56,"context_line":"        address_scope[\u0027address_scope\u0027][\u0027ip_version\u0027] \u003d ip_version"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba8a016a_dd421e3e","line":53,"in_reply_to":"ba8a016a_0883bf57","updated":"2015-11-18 06:19:59.000000000","message":"I went to the trouble of doing it this way as I prefer not to assume IPv4 is a default out of habit.  I\u0027m not adamant about it, especially since we\u0027re talking about a helper for unit tests.  However, since we live in a dual-stack world as a general rule I\u0027m not a fan of defaulting to an address family where there is a choice.  That said, it\u0027s a simple enough change and in this case nothing to quibble over.","commit_id":"a4b023a825c10aff49e960de4590810573686dfc"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"84da2eaf4dd550edce6f87fc6bc60cc15c08955a","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        return address_scope_res"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def _make_address_scope(self, fmt, ip_version, admin\u003dFalse, **kwargs):"},{"line_number":74,"context_line":"        res \u003d self._create_address_scope(fmt, ip_version,"},{"line_number":75,"context_line":"                                         admin\u003dadmin, **kwargs)"},{"line_number":76,"context_line":"        if res.status_int \u003e\u003d webob.exc.HTTPClientError.code:"},{"line_number":77,"context_line":"            raise webob.exc.HTTPClientError(code\u003dres.status_int)"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba8a016a_c87cd774","line":74,"updated":"2015-11-17 09:58:22.000000000","message":"ditto","commit_id":"a4b023a825c10aff49e960de4590810573686dfc"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"84da2eaf4dd550edce6f87fc6bc60cc15c08955a","unresolved":false,"context_lines":[{"line_number":83,"context_line":"                                              admin, **kwargs)"},{"line_number":84,"context_line":"        yield addr_scope"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def _test_create_address_scope(self, ip_version, admin\u003dFalse,"},{"line_number":87,"context_line":"                                   expected\u003dNone, **kwargs):"},{"line_number":88,"context_line":"        keys \u003d kwargs.copy()"},{"line_number":89,"context_line":"        keys.setdefault(\u0027tenant_id\u0027, self._tenant_id)"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba8a016a_28ed6325","line":86,"updated":"2015-11-17 09:58:22.000000000","message":"ditto","commit_id":"a4b023a825c10aff49e960de4590810573686dfc"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"d75915c71ba54e3c4dea6aaa39f32297fd9d0ab0","unresolved":false,"context_lines":[{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    def test_create_address_scope_shared_admin(self):"},{"line_number":157,"context_line":"        expected_addr_scope \u003d {\u0027name\u0027: \u0027foo-address-scope\u0027, \u0027shared\u0027: True}"},{"line_number":158,"context_line":"        self._test_create_address_scope(name\u003d\u0027foo-address-scope\u0027,"},{"line_number":159,"context_line":"                                        admin\u003dTrue, shared\u003dTrue,"},{"line_number":160,"context_line":"                                        expected\u003dexpected_addr_scope)"},{"line_number":161,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9a8ffd7b_a7710c0e","line":158,"updated":"2015-12-03 05:13:47.000000000","message":"You actually don\u0027t change this line, so it is better to keep it as it used to be. That might make life easier for merging and cherry-pick(if any).","commit_id":"804dd97bc0401deb5a5f7a8819064e4effd9be15"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"656d7df1c436783fc4ca6d31127bdeaf44d2c348","unresolved":false,"context_lines":[{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    def test_create_address_scope_shared_admin(self):"},{"line_number":157,"context_line":"        expected_addr_scope \u003d {\u0027name\u0027: \u0027foo-address-scope\u0027, \u0027shared\u0027: True}"},{"line_number":158,"context_line":"        self._test_create_address_scope(name\u003d\u0027foo-address-scope\u0027,"},{"line_number":159,"context_line":"                                        admin\u003dTrue, shared\u003dTrue,"},{"line_number":160,"context_line":"                                        expected\u003dexpected_addr_scope)"},{"line_number":161,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9a8ffd7b_767e73b0","line":158,"in_reply_to":"9a8ffd7b_a7710c0e","updated":"2015-12-03 06:19:19.000000000","message":"Oooh, yes.  Trying to make ip_version default and didn\u0027t look closely enough at the diff here and below.","commit_id":"804dd97bc0401deb5a5f7a8819064e4effd9be15"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"d75915c71ba54e3c4dea6aaa39f32297fd9d0ab0","unresolved":false,"context_lines":[{"line_number":160,"context_line":"                                        expected\u003dexpected_addr_scope)"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"    def test_created_address_scope_shared_non_admin(self):"},{"line_number":163,"context_line":"        res \u003d self._create_address_scope(self.fmt,"},{"line_number":164,"context_line":"                                         name\u003d\u0027foo-address-scope\u0027,"},{"line_number":165,"context_line":"                                         tenant_id\u003dself._tenant_id,"},{"line_number":166,"context_line":"                                         admin\u003dFalse, shared\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a8ffd7b_a7f6ec5a","line":163,"updated":"2015-12-03 05:13:47.000000000","message":"ditto","commit_id":"804dd97bc0401deb5a5f7a8819064e4effd9be15"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"5756ffaf538a13a39495f33a20150f43feaf1b6c","unresolved":false,"context_lines":[{"line_number":160,"context_line":"                                        expected\u003dexpected_addr_scope)"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"    def test_created_address_scope_shared_non_admin(self):"},{"line_number":163,"context_line":"        res \u003d self._create_address_scope(self.fmt,"},{"line_number":164,"context_line":"                                         name\u003d\u0027foo-address-scope\u0027,"},{"line_number":165,"context_line":"                                         tenant_id\u003dself._tenant_id,"},{"line_number":166,"context_line":"                                         admin\u003dFalse, shared\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a740942_b17484cf","line":163,"in_reply_to":"9a8ffd7b_a7f6ec5a","updated":"2015-12-03 21:37:42.000000000","message":"Done","commit_id":"804dd97bc0401deb5a5f7a8819064e4effd9be15"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"d75915c71ba54e3c4dea6aaa39f32297fd9d0ab0","unresolved":false,"context_lines":[{"line_number":167,"context_line":"        self.assertEqual(webob.exc.HTTPForbidden.code, res.status_int)"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    def test_created_address_scope_specify_id(self):"},{"line_number":170,"context_line":"        res \u003d self._create_address_scope(self.fmt,"},{"line_number":171,"context_line":"                                         name\u003d\u0027foo-address-scope\u0027,"},{"line_number":172,"context_line":"                                         id\u003d\u0027foo-id\u0027)"},{"line_number":173,"context_line":"        self.assertEqual(webob.exc.HTTPClientError.code, res.status_int)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a8ffd7b_479620f1","line":170,"updated":"2015-12-03 05:13:47.000000000","message":"ditto","commit_id":"804dd97bc0401deb5a5f7a8819064e4effd9be15"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"5756ffaf538a13a39495f33a20150f43feaf1b6c","unresolved":false,"context_lines":[{"line_number":167,"context_line":"        self.assertEqual(webob.exc.HTTPForbidden.code, res.status_int)"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    def test_created_address_scope_specify_id(self):"},{"line_number":170,"context_line":"        res \u003d self._create_address_scope(self.fmt,"},{"line_number":171,"context_line":"                                         name\u003d\u0027foo-address-scope\u0027,"},{"line_number":172,"context_line":"                                         id\u003d\u0027foo-id\u0027)"},{"line_number":173,"context_line":"        self.assertEqual(webob.exc.HTTPClientError.code, res.status_int)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a740942_d16cb00a","line":170,"in_reply_to":"9a8ffd7b_479620f1","updated":"2015-12-03 21:37:42.000000000","message":"Done","commit_id":"804dd97bc0401deb5a5f7a8819064e4effd9be15"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"d75915c71ba54e3c4dea6aaa39f32297fd9d0ab0","unresolved":false,"context_lines":[{"line_number":235,"context_line":"                         res[\u0027address_scope\u0027][\u0027id\u0027])"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"    def test_list_address_scopes(self):"},{"line_number":238,"context_line":"        self._test_create_address_scope(name\u003d\u0027foo-addressscope\u0027)"},{"line_number":239,"context_line":"        self._test_create_address_scope(constants.IP_VERSION_6,"},{"line_number":240,"context_line":"                                        name\u003d\u0027bar-addressscope\u0027)"},{"line_number":241,"context_line":"        res \u003d self._list(\u0027address-scopes\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a8ffd7b_a78d8cd4","line":238,"updated":"2015-12-03 05:13:47.000000000","message":"ditto","commit_id":"804dd97bc0401deb5a5f7a8819064e4effd9be15"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"5756ffaf538a13a39495f33a20150f43feaf1b6c","unresolved":false,"context_lines":[{"line_number":235,"context_line":"                         res[\u0027address_scope\u0027][\u0027id\u0027])"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"    def test_list_address_scopes(self):"},{"line_number":238,"context_line":"        self._test_create_address_scope(name\u003d\u0027foo-addressscope\u0027)"},{"line_number":239,"context_line":"        self._test_create_address_scope(constants.IP_VERSION_6,"},{"line_number":240,"context_line":"                                        name\u003d\u0027bar-addressscope\u0027)"},{"line_number":241,"context_line":"        res \u003d self._list(\u0027address-scopes\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a740942_91b0688d","line":238,"in_reply_to":"9a8ffd7b_a78d8cd4","updated":"2015-12-03 21:37:42.000000000","message":"Done","commit_id":"804dd97bc0401deb5a5f7a8819064e4effd9be15"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"d75915c71ba54e3c4dea6aaa39f32297fd9d0ab0","unresolved":false,"context_lines":[{"line_number":242,"context_line":"        self.assertEqual(2, len(res[\u0027address_scopes\u0027]))"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"    def test_list_address_scopes_different_tenants_shared(self):"},{"line_number":245,"context_line":"        self._test_create_address_scope(name\u003d\u0027foo-addressscope\u0027,"},{"line_number":246,"context_line":"                                        shared\u003dTrue, admin\u003dTrue)"},{"line_number":247,"context_line":"        admin_res \u003d self._list(\u0027address-scopes\u0027)"},{"line_number":248,"context_line":"        mortal_res \u003d self._list("}],"source_content_type":"text/x-python","patch_set":8,"id":"9a8ffd7b_47bdc066","line":245,"updated":"2015-12-03 05:13:47.000000000","message":"ditto","commit_id":"804dd97bc0401deb5a5f7a8819064e4effd9be15"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"5756ffaf538a13a39495f33a20150f43feaf1b6c","unresolved":false,"context_lines":[{"line_number":242,"context_line":"        self.assertEqual(2, len(res[\u0027address_scopes\u0027]))"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"    def test_list_address_scopes_different_tenants_shared(self):"},{"line_number":245,"context_line":"        self._test_create_address_scope(name\u003d\u0027foo-addressscope\u0027,"},{"line_number":246,"context_line":"                                        shared\u003dTrue, admin\u003dTrue)"},{"line_number":247,"context_line":"        admin_res \u003d self._list(\u0027address-scopes\u0027)"},{"line_number":248,"context_line":"        mortal_res \u003d self._list("}],"source_content_type":"text/x-python","patch_set":8,"id":"7a740942_f1ba0c6e","line":245,"in_reply_to":"9a8ffd7b_47bdc066","updated":"2015-12-03 21:37:42.000000000","message":"Done","commit_id":"804dd97bc0401deb5a5f7a8819064e4effd9be15"}]}
