)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7962,"name":"Ronak Shah","email":"ronak.malav.shah@gmail.com","username":"ronak"},"change_message_id":"7c7bae75fd64159e6b72ffe87fedb3ca5e163a33","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Adding support of DNS nameserver and Host routes for the Nuage Plugin"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Implements: blueprint dhcp-host-routes-and-dns-support-for-nuage-plugin"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"This commit will implement the following DHCP options:"},{"line_number":12,"context_line":" - DNS nameserver"},{"line_number":13,"context_line":" - Host routes"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"1abeadc6_c37b0279","line":10,"updated":"2014-08-22 19:23:04.000000000","message":"This link is not working. Please fix it. Also, This statement should be just before or after Change-Id. Not here.","commit_id":"4f985e5b996a69da05bbd08c0e55e67c8eacab90"}],"neutron/plugins/nuage/common/constants.py":[{"author":{"_account_id":7962,"name":"Ronak Shah","email":"ronak.malav.shah@gmail.com","username":"ronak"},"change_message_id":"08e8db8b7a0ba46fd88f315d948747ffc6e20d84","unresolved":false,"context_lines":[{"line_number":10,"context_line":"#    distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT"},{"line_number":11,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":12,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from neutron.common import constants"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"7ac7a964_3df481f1","line":13,"updated":"2014-08-14 22:15:42.000000000","message":"No need for this change","commit_id":"3f0a19284a0d450e1bac1be080e4eeaade018891"},{"author":{"_account_id":9932,"name":"Franck Yelles","email":"franck110@gmail.com","username":"fyelles"},"change_message_id":"bda18b7c2ed31b60b05b3128118bb74db683a815","unresolved":false,"context_lines":[{"line_number":10,"context_line":"#    distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT"},{"line_number":11,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":12,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from neutron.common import constants"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"7ac7a964_1d950533","line":13,"in_reply_to":"7ac7a964_3df481f1","updated":"2014-08-14 22:28:17.000000000","message":"Done","commit_id":"3f0a19284a0d450e1bac1be080e4eeaade018891"}],"neutron/plugins/nuage/common/exceptions.py":[{"author":{"_account_id":7962,"name":"Ronak Shah","email":"ronak.malav.shah@gmail.com","username":"ronak"},"change_message_id":"08e8db8b7a0ba46fd88f315d948747ffc6e20d84","unresolved":false,"context_lines":[{"line_number":12,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":"#"},{"line_number":15,"context_line":"# @author: Ronak Shah, Aniket Dandekar, Nuage Networks, Alcatel-Lucent USA Inc."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"\u0027\u0027\u0027 Nuage specific exceptions \u0027\u0027\u0027"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"7ac7a964_9ddaf576","line":15,"updated":"2014-08-14 22:15:42.000000000","message":"No need for this change.","commit_id":"3f0a19284a0d450e1bac1be080e4eeaade018891"},{"author":{"_account_id":9932,"name":"Franck Yelles","email":"franck110@gmail.com","username":"fyelles"},"change_message_id":"bda18b7c2ed31b60b05b3128118bb74db683a815","unresolved":false,"context_lines":[{"line_number":12,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":"#"},{"line_number":15,"context_line":"# @author: Ronak Shah, Aniket Dandekar, Nuage Networks, Alcatel-Lucent USA Inc."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"\u0027\u0027\u0027 Nuage specific exceptions \u0027\u0027\u0027"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"7ac7a964_5d9f7d52","line":15,"in_reply_to":"7ac7a964_9ddaf576","updated":"2014-08-14 22:28:17.000000000","message":"Done","commit_id":"3f0a19284a0d450e1bac1be080e4eeaade018891"},{"author":{"_account_id":704,"name":"Edgar Magana","email":"emagana@gmail.com","username":"emagana"},"change_message_id":"2cb7cf0760b3e862bee4e3f4c8561e8f53eb3fe8","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class NuageBadRequest(n_exc.BadRequest):"},{"line_number":27,"context_line":"    message \u003d _(\"Bad request: %(msg)s\")"}],"source_content_type":"text/x-python","patch_set":17,"id":"1abeadc6_222b5eec","line":27,"updated":"2014-08-26 21:35:52.000000000","message":"This class will need to be removed after the first Nuage patch gets merged!","commit_id":"c7c3e0292ecc661e19b4ca9339cddabbbff630a1"}],"neutron/plugins/nuage/plugin.py":[{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"11a094a229398358aff23541ff40d22ff461b05b","unresolved":false,"context_lines":[{"line_number":350,"context_line":"        return net_partition"},{"line_number":351,"context_line":""},{"line_number":352,"context_line":"    def _validate_create_subnet(self, subnet):"},{"line_number":353,"context_line":"        if attributes.is_attr_set(subnet[\u0027gateway_ip\u0027]) \\"},{"line_number":354,"context_line":"                and netaddr.IPAddress(subnet[\u0027gateway_ip\u0027]) \\"},{"line_number":355,"context_line":"                not in netaddr.IPNetwork(subnet[\u0027cidr\u0027]):"},{"line_number":356,"context_line":"                msg \u003d \"Gateway IP outside of the subnet CIDR \""}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_d340fc08","line":353,"updated":"2014-08-13 00:42:06.000000000","message":"Use parens, instead of backslashes for continuation.","commit_id":"f8c63034715942a6374e1fddecf0399a27a2d974"},{"author":{"_account_id":9932,"name":"Franck Yelles","email":"franck110@gmail.com","username":"fyelles"},"change_message_id":"434ba347377c4ca10e0d630e845c5490ea674bfa","unresolved":false,"context_lines":[{"line_number":350,"context_line":"        return net_partition"},{"line_number":351,"context_line":""},{"line_number":352,"context_line":"    def _validate_create_subnet(self, subnet):"},{"line_number":353,"context_line":"        if attributes.is_attr_set(subnet[\u0027gateway_ip\u0027]) \\"},{"line_number":354,"context_line":"                and netaddr.IPAddress(subnet[\u0027gateway_ip\u0027]) \\"},{"line_number":355,"context_line":"                not in netaddr.IPNetwork(subnet[\u0027cidr\u0027]):"},{"line_number":356,"context_line":"                msg \u003d \"Gateway IP outside of the subnet CIDR \""}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_27f00fda","line":353,"in_reply_to":"baada198_d340fc08","updated":"2014-08-13 05:56:05.000000000","message":"Done","commit_id":"f8c63034715942a6374e1fddecf0399a27a2d974"},{"author":{"_account_id":7962,"name":"Ronak Shah","email":"ronak.malav.shah@gmail.com","username":"ronak"},"change_message_id":"c1daa99b5d66fb5e74be21d4eb4a6b85b6d0b7ec","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#"},{"line_number":15,"context_line":"# @author: Ronak Shah, Nuage Networks, Alcatel-Lucent USA Inc."},{"line_number":16,"context_line":"# @author: Franck Yelles, Nuage Networks, Alcatel-Lucent USA Inc."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import re"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_a6eb21dc","line":17,"updated":"2014-08-13 18:29:44.000000000","message":"Not sure if this is a norm :)","commit_id":"5d8a32c120c1b1fe239d2dbb4f284766b3df0fd4"},{"author":{"_account_id":7962,"name":"Ronak Shah","email":"ronak.malav.shah@gmail.com","username":"ronak"},"change_message_id":"c1daa99b5d66fb5e74be21d4eb4a6b85b6d0b7ec","unresolved":false,"context_lines":[{"line_number":354,"context_line":"                and netaddr.IPAddress(subnet[\u0027gateway_ip\u0027])"},{"line_number":355,"context_line":"                not in netaddr.IPNetwork(subnet[\u0027cidr\u0027])):"},{"line_number":356,"context_line":"                msg \u003d \"Gateway IP outside of the subnet CIDR \""},{"line_number":357,"context_line":"                raise n_exc.BadRequest(resource\u003d\u0027subnet\u0027, msg\u003dmsg)"},{"line_number":358,"context_line":""},{"line_number":359,"context_line":"    def _delete_nuage_sharedresource(self, net_id):"},{"line_number":360,"context_line":"        self.nuageclient.delete_nuage_sharedresource(net_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_c6bf35c9","line":357,"updated":"2014-08-13 18:29:44.000000000","message":"This is a good check. However, lets throw nuage specific bad request. Please take a look at nuage\u0027s exception file and use one of those.","commit_id":"5d8a32c120c1b1fe239d2dbb4f284766b3df0fd4"},{"author":{"_account_id":7962,"name":"Ronak Shah","email":"ronak.malav.shah@gmail.com","username":"ronak"},"change_message_id":"c1daa99b5d66fb5e74be21d4eb4a6b85b6d0b7ec","unresolved":false,"context_lines":[{"line_number":412,"context_line":"    def _create_nuage_subnet(self, context, neutron_subnet, netpart_id):"},{"line_number":413,"context_line":"        net \u003d netaddr.IPNetwork(neutron_subnet[\u0027cidr\u0027])"},{"line_number":414,"context_line":"        last_address \u003d neutron_subnet[\u0027allocation_pools\u0027][0][\u0027end\u0027]"},{"line_number":415,"context_line":"        ip \u003d self._create_port_gateway(context, neutron_subnet, last_address)"},{"line_number":416,"context_line":"        params \u003d {"},{"line_number":417,"context_line":"            \u0027netpart_id\u0027: netpart_id,"},{"line_number":418,"context_line":"            \u0027tenant_id\u0027: neutron_subnet[\u0027tenant_id\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_661ae91a","line":415,"updated":"2014-08-13 18:29:44.000000000","message":"What if gw_ip is actually pass from CLI as an option. Shouldnt that be used as per the logic in _create_port_gateway? Here it seems it will always use last_address as fixed_ip in that method.","commit_id":"5d8a32c120c1b1fe239d2dbb4f284766b3df0fd4"},{"author":{"_account_id":7962,"name":"Ronak Shah","email":"ronak.malav.shah@gmail.com","username":"ronak"},"change_message_id":"c1daa99b5d66fb5e74be21d4eb4a6b85b6d0b7ec","unresolved":false,"context_lines":[{"line_number":429,"context_line":"                    \u0027device_owner\u0027: [os_constants.DEVICE_OWNER_DHCP]"},{"line_number":430,"context_line":"                }"},{"line_number":431,"context_line":"                gw_ports \u003d self.get_ports(context, filters\u003dfilters)"},{"line_number":432,"context_line":"                self._delete_port_gateway(context, gw_ports)"},{"line_number":433,"context_line":"                super(NuagePlugin, self).delete_subnet(context,"},{"line_number":434,"context_line":"                                                       neutron_subnet[\u0027id\u0027])"},{"line_number":435,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_e66ef9ca","line":432,"updated":"2014-08-13 18:29:44.000000000","message":"Since you are creating the port in the same method, I think it is better to have a pointer to that port handy and call _delete_port_gateway directly rather than performing search on it.\n\nThat is the only port that you intend to delete here.","commit_id":"5d8a32c120c1b1fe239d2dbb4f284766b3df0fd4"},{"author":{"_account_id":10980,"name":"Doug Wiegley","email":"dougwig@parkside.io","username":"dougw"},"change_message_id":"cb41f1342cc80810e68c4e17c8600c4282be79e5","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":"#"},{"line_number":15,"context_line":"# @author: Ronak Shah, Nuage Networks, Alcatel-Lucent USA Inc."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import re"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7ac7a964_4ba0c5f4","side":"PARENT","line":16,"updated":"2014-08-14 00:35:26.000000000","message":"@author is getting yanked everywhere (see another review that does it en masse.)  change to HACKING","commit_id":"18a10fae3049cd09f5c8709ea7d7ab13b4f0efa2"},{"author":{"_account_id":9932,"name":"Franck Yelles","email":"franck110@gmail.com","username":"fyelles"},"change_message_id":"8e81cd201a11635f3117138b5749fd652d890aa1","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":"#"},{"line_number":15,"context_line":"# @author: Ronak Shah, Nuage Networks, Alcatel-Lucent USA Inc."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import re"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7ac7a964_cc7b0828","side":"PARENT","line":16,"in_reply_to":"7ac7a964_4ba0c5f4","updated":"2014-08-14 05:09:38.000000000","message":"Done","commit_id":"18a10fae3049cd09f5c8709ea7d7ab13b4f0efa2"},{"author":{"_account_id":10980,"name":"Doug Wiegley","email":"dougwig@parkside.io","username":"dougw"},"change_message_id":"cb41f1342cc80810e68c4e17c8600c4282be79e5","unresolved":false,"context_lines":[{"line_number":356,"context_line":"                not in netaddr.IPNetwork(subnet[\u0027cidr\u0027])):"},{"line_number":357,"context_line":"                msg \u003d \"Gateway IP outside of the subnet CIDR \""},{"line_number":358,"context_line":"                raise nuage_exc.NuageBadRequest(msg\u003dmsg)"},{"line_number":359,"context_line":"                #raise n_exc.BadRequest(resource\u003d\u0027subnet\u0027, msg\u003dmsg)"},{"line_number":360,"context_line":""},{"line_number":361,"context_line":"    def _delete_nuage_sharedresource(self, net_id):"},{"line_number":362,"context_line":"        self.nuageclient.delete_nuage_sharedresource(net_id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7ac7a964_8baaddd2","line":359,"updated":"2014-08-14 00:35:26.000000000","message":"Do you still need the commented line?","commit_id":"accaa5a6cdce2b6021124d2d34f0373d7ff90170"},{"author":{"_account_id":9932,"name":"Franck Yelles","email":"franck110@gmail.com","username":"fyelles"},"change_message_id":"8e81cd201a11635f3117138b5749fd652d890aa1","unresolved":false,"context_lines":[{"line_number":356,"context_line":"                not in netaddr.IPNetwork(subnet[\u0027cidr\u0027])):"},{"line_number":357,"context_line":"                msg \u003d \"Gateway IP outside of the subnet CIDR \""},{"line_number":358,"context_line":"                raise nuage_exc.NuageBadRequest(msg\u003dmsg)"},{"line_number":359,"context_line":"                #raise n_exc.BadRequest(resource\u003d\u0027subnet\u0027, msg\u003dmsg)"},{"line_number":360,"context_line":""},{"line_number":361,"context_line":"    def _delete_nuage_sharedresource(self, net_id):"},{"line_number":362,"context_line":"        self.nuageclient.delete_nuage_sharedresource(net_id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7ac7a964_6cbf54d1","line":359,"in_reply_to":"7ac7a964_8baaddd2","updated":"2014-08-14 05:09:38.000000000","message":"Thanks for noticing!\nIt has been removed","commit_id":"accaa5a6cdce2b6021124d2d34f0373d7ff90170"},{"author":{"_account_id":7962,"name":"Ronak Shah","email":"ronak.malav.shah@gmail.com","username":"ronak"},"change_message_id":"8f7e19eae1e9f9eeee45652b1de5f78792ed531a","unresolved":false,"context_lines":[{"line_number":11,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":12,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import re"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import copy"}],"source_content_type":"text/x-python","patch_set":6,"id":"7ac7a964_71d708c2","line":14,"updated":"2014-08-14 21:29:07.000000000","message":"Didnt mean that you should remove the original author.","commit_id":"fc7e5acf360562c69cc4832f13e78811326a0a35"},{"author":{"_account_id":7962,"name":"Ronak Shah","email":"ronak.malav.shah@gmail.com","username":"ronak"},"change_message_id":"8f7e19eae1e9f9eeee45652b1de5f78792ed531a","unresolved":false,"context_lines":[{"line_number":423,"context_line":"                                                          params)"},{"line_number":424,"context_line":"        except Exception:"},{"line_number":425,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":426,"context_line":"                self._delete_port_gateway(context, gw_port)"},{"line_number":427,"context_line":"                super(NuagePlugin, self).delete_subnet(context,"},{"line_number":428,"context_line":"                                                       neutron_subnet[\u0027id\u0027])"},{"line_number":429,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"7ac7a964_d731aced","line":426,"updated":"2014-08-14 21:29:07.000000000","message":"[gw_port]? \nsecond param to _delete_port_gateway is a list","commit_id":"fc7e5acf360562c69cc4832f13e78811326a0a35"},{"author":{"_account_id":7962,"name":"Ronak Shah","email":"ronak.malav.shah@gmail.com","username":"ronak"},"change_message_id":"08e8db8b7a0ba46fd88f315d948747ffc6e20d84","unresolved":false,"context_lines":[{"line_number":10,"context_line":"#    distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT"},{"line_number":11,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":12,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import re"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"7ac7a964_1dd6e54f","line":13,"updated":"2014-08-14 22:15:42.000000000","message":"Please put back original author string.","commit_id":"3f0a19284a0d450e1bac1be080e4eeaade018891"},{"author":{"_account_id":9932,"name":"Franck Yelles","email":"franck110@gmail.com","username":"fyelles"},"change_message_id":"bda18b7c2ed31b60b05b3128118bb74db683a815","unresolved":false,"context_lines":[{"line_number":10,"context_line":"#    distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT"},{"line_number":11,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":12,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import re"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"7ac7a964_fdb689db","line":13,"in_reply_to":"7ac7a964_1dd6e54f","updated":"2014-08-14 22:28:17.000000000","message":"Done","commit_id":"3f0a19284a0d450e1bac1be080e4eeaade018891"},{"author":{"_account_id":704,"name":"Edgar Magana","email":"emagana@gmail.com","username":"emagana"},"change_message_id":"f087bf55a4bfa211cb1cf47e3e9e917536ceb711","unresolved":false,"context_lines":[{"line_number":349,"context_line":""},{"line_number":350,"context_line":"    @staticmethod"},{"line_number":351,"context_line":"    def _validate_create_subnet(subnet):"},{"line_number":352,"context_line":"        if (attributes.is_attr_set(subnet[\u0027gateway_ip\u0027])"},{"line_number":353,"context_line":"                and netaddr.IPAddress(subnet[\u0027gateway_ip\u0027])"},{"line_number":354,"context_line":"                not in netaddr.IPNetwork(subnet[\u0027cidr\u0027])):"},{"line_number":355,"context_line":"                msg \u003d \"Gateway IP outside of the subnet CIDR \""}],"source_content_type":"text/x-python","patch_set":10,"id":"1abeadc6_e90e1d8b","line":352,"updated":"2014-08-22 20:55:36.000000000","message":"Is there a test cases covering this function? If not, please add one.","commit_id":"b059a166a220324bc52900e6f0b505864af22654"},{"author":{"_account_id":704,"name":"Edgar Magana","email":"emagana@gmail.com","username":"emagana"},"change_message_id":"f087bf55a4bfa211cb1cf47e3e9e917536ceb711","unresolved":false,"context_lines":[{"line_number":386,"context_line":"            self._add_nuage_sharedresource(subn, net_id, type)"},{"line_number":387,"context_line":"            return subn"},{"line_number":388,"context_line":""},{"line_number":389,"context_line":"    def _create_port_gateway(self, context, subnet, gw_ip\u003dNone):"},{"line_number":390,"context_line":"        if gw_ip is not None:"},{"line_number":391,"context_line":"            fixed_ip \u003d [{\u0027ip_address\u0027: gw_ip, \u0027subnet_id\u0027: subnet[\u0027id\u0027]}]"},{"line_number":392,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":10,"id":"1abeadc6_092999e5","line":389,"updated":"2014-08-22 20:55:36.000000000","message":"There should be a tests case for this function","commit_id":"b059a166a220324bc52900e6f0b505864af22654"},{"author":{"_account_id":1923,"name":"Mohammad Banikazemi","email":"mbanikazemi@gmail.com","username":"mb-s"},"change_message_id":"9c3258632ec5b82c9032f76357c2aa2a761abe30","unresolved":false,"context_lines":[{"line_number":525,"context_line":"        port \u003d super(NuagePlugin, self).create_port(context, port_dict)"},{"line_number":526,"context_line":"        return port"},{"line_number":527,"context_line":""},{"line_number":528,"context_line":"    def _delete_port_gateway(self, context, ports):"},{"line_number":529,"context_line":"        for port in ports:"},{"line_number":530,"context_line":"            super(NuagePlugin, self).delete_port(context, port[\u0027id\u0027])"},{"line_number":531,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"1abeadc6_1349ac8e","line":528,"updated":"2014-08-24 19:12:44.000000000","message":"Isn\u0027t this simply a method for deleting ports whether they are gateway ports or not? The name makes it a bit confusing. _delete_ports() with the \"s\" at the end may be more appropriate.","commit_id":"e53e0baad404c55de1328b45310e174008e63956"},{"author":{"_account_id":9932,"name":"Franck Yelles","email":"franck110@gmail.com","username":"fyelles"},"change_message_id":"64d46c1e99cfd73ec187d47ba9c49f7334416f10","unresolved":false,"context_lines":[{"line_number":525,"context_line":"        port \u003d super(NuagePlugin, self).create_port(context, port_dict)"},{"line_number":526,"context_line":"        return port"},{"line_number":527,"context_line":""},{"line_number":528,"context_line":"    def _delete_port_gateway(self, context, ports):"},{"line_number":529,"context_line":"        for port in ports:"},{"line_number":530,"context_line":"            super(NuagePlugin, self).delete_port(context, port[\u0027id\u0027])"},{"line_number":531,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"1abeadc6_b64f06be","line":528,"in_reply_to":"1abeadc6_1349ac8e","updated":"2014-08-24 20:59:33.000000000","message":"Hi Mohammad,\nI understand the confusion, however, this method will only be used to delete_gateway_port.","commit_id":"e53e0baad404c55de1328b45310e174008e63956"},{"author":{"_account_id":12737,"name":"Jacek Swiderski","email":"jacek.swiderski@codilime.com","username":"Altran"},"change_message_id":"868fad06a11d7aa92f87c7ca4792c05cfab19c68","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import re"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import copy"},{"line_number":20,"context_line":"import netaddr"},{"line_number":21,"context_line":"from oslo.config import cfg"},{"line_number":22,"context_line":"from sqlalchemy.orm import exc"}],"source_content_type":"text/x-python","patch_set":15,"id":"1abeadc6_4ec7e464","line":19,"updated":"2014-08-25 14:55:48.000000000","message":"nit: copy is part of stdlib\n http://docs.openstack.org/developer/hacking/#import-order-template","commit_id":"bce2045b2fb313e2d41761ab87cc52b4c2694a72"},{"author":{"_account_id":12737,"name":"Jacek Swiderski","email":"jacek.swiderski@codilime.com","username":"Altran"},"change_message_id":"868fad06a11d7aa92f87c7ca4792c05cfab19c68","unresolved":false,"context_lines":[{"line_number":474,"context_line":"                and netaddr.IPAddress(subnet[\u0027gateway_ip\u0027])"},{"line_number":475,"context_line":"                not in netaddr.IPNetwork(subnet[\u0027cidr\u0027])):"},{"line_number":476,"context_line":"                msg \u003d \"Gateway IP outside of the subnet CIDR \""},{"line_number":477,"context_line":"                raise nuage_exc.NuageBadRequest(msg\u003dmsg)"},{"line_number":478,"context_line":""},{"line_number":479,"context_line":"    def _delete_nuage_sharedresource(self, net_id):"},{"line_number":480,"context_line":"        self.nuageclient.delete_nuage_sharedresource(net_id)"}],"source_content_type":"text/x-python","patch_set":15,"id":"1abeadc6_4eac448d","line":477,"updated":"2014-08-25 14:55:48.000000000","message":"those 2 lines have double indentation and blend in with if condition","commit_id":"bce2045b2fb313e2d41761ab87cc52b4c2694a72"},{"author":{"_account_id":704,"name":"Edgar Magana","email":"emagana@gmail.com","username":"emagana"},"change_message_id":"5113970cc33875feb4e2d63d51b7f9dafcec40b3","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import re"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import copy"},{"line_number":20,"context_line":"import netaddr"},{"line_number":21,"context_line":"from oslo.config import cfg"},{"line_number":22,"context_line":"from sqlalchemy.orm import exc"}],"source_content_type":"text/x-python","patch_set":16,"id":"1abeadc6_d38362a7","line":19,"updated":"2014-08-26 19:30:55.000000000","message":"Let\u0027s do it right, there are still no +2 in this commit. So, let\u0027s remove this.\nThanks!","commit_id":"954e7b01c1e7a1d6d1c650a514b907782283c7d1"},{"author":{"_account_id":12737,"name":"Jacek Swiderski","email":"jacek.swiderski@codilime.com","username":"Altran"},"change_message_id":"7b05f29f0341caeee4c5c8d437bab38d550ff507","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import re"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import copy"},{"line_number":20,"context_line":"import netaddr"},{"line_number":21,"context_line":"from oslo.config import cfg"},{"line_number":22,"context_line":"from sqlalchemy.orm import exc"}],"source_content_type":"text/x-python","patch_set":16,"id":"1abeadc6_b625f40b","line":19,"updated":"2014-08-26 19:46:19.000000000","message":"Paul - I didn\u0027t say this import is not needed - its used in L584 - just that its in wrong place according to \n http://docs.openstack.org/developer/hacking/#import-order-template\n:)","commit_id":"954e7b01c1e7a1d6d1c650a514b907782283c7d1"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"d4f032f5b737e213d4617762f26cd3687f0045f0","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import re"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import copy"},{"line_number":20,"context_line":"import netaddr"},{"line_number":21,"context_line":"from oslo.config import cfg"},{"line_number":22,"context_line":"from sqlalchemy.orm import exc"}],"source_content_type":"text/x-python","patch_set":16,"id":"1abeadc6_10ccfa60","line":19,"updated":"2014-08-26 14:47:27.000000000","message":"So what Jacek was stating was that this import is not needed, and can be removed.","commit_id":"954e7b01c1e7a1d6d1c650a514b907782283c7d1"},{"author":{"_account_id":9932,"name":"Franck Yelles","email":"franck110@gmail.com","username":"fyelles"},"change_message_id":"6bf7b6068717266ef20c4c1e82f6332e3e09887e","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import re"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import copy"},{"line_number":20,"context_line":"import netaddr"},{"line_number":21,"context_line":"from oslo.config import cfg"},{"line_number":22,"context_line":"from sqlalchemy.orm import exc"}],"source_content_type":"text/x-python","patch_set":16,"id":"1abeadc6_5666602a","line":19,"in_reply_to":"1abeadc6_b601743b","updated":"2014-08-26 19:53:31.000000000","message":"Oh I see, sorry for the confusion. I will fix that right away. Sorry for the confusion","commit_id":"954e7b01c1e7a1d6d1c650a514b907782283c7d1"},{"author":{"_account_id":704,"name":"Edgar Magana","email":"emagana@gmail.com","username":"emagana"},"change_message_id":"d2e3abe11a391e66d4261d0c5b089bc3654e9bc7","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import re"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import copy"},{"line_number":20,"context_line":"import netaddr"},{"line_number":21,"context_line":"from oslo.config import cfg"},{"line_number":22,"context_line":"from sqlalchemy.orm import exc"}],"source_content_type":"text/x-python","patch_set":16,"id":"1abeadc6_b601743b","line":19,"in_reply_to":"1abeadc6_b625f40b","updated":"2014-08-26 19:50:14.000000000","message":"Thanks for ponting out this fact Jacek. @Franck, could you make this fix?","commit_id":"954e7b01c1e7a1d6d1c650a514b907782283c7d1"}],"neutron/tests/unit/nuage/test_nuage_plugin.py":[{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"11a094a229398358aff23541ff40d22ff461b05b","unresolved":false,"context_lines":[{"line_number":18,"context_line":"import contextlib"},{"line_number":19,"context_line":"import mock"},{"line_number":20,"context_line":"import netaddr"},{"line_number":21,"context_line":"import os"},{"line_number":22,"context_line":"from webob import exc"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from neutron import context"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_33a778aa","line":21,"updated":"2014-08-13 00:42:06.000000000","message":"system imports (os) should be listed first, then third part, then neutron imports. Please rearrange and make sure ones within a group are in alpha order w/o any blank lines (like L26)","commit_id":"f8c63034715942a6374e1fddecf0399a27a2d974"},{"author":{"_account_id":9932,"name":"Franck Yelles","email":"franck110@gmail.com","username":"fyelles"},"change_message_id":"434ba347377c4ca10e0d630e845c5490ea674bfa","unresolved":false,"context_lines":[{"line_number":18,"context_line":"import contextlib"},{"line_number":19,"context_line":"import mock"},{"line_number":20,"context_line":"import netaddr"},{"line_number":21,"context_line":"import os"},{"line_number":22,"context_line":"from webob import exc"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from neutron import context"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_de7003de","line":21,"in_reply_to":"baada198_33a778aa","updated":"2014-08-13 05:56:05.000000000","message":"Done","commit_id":"f8c63034715942a6374e1fddecf0399a27a2d974"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"11a094a229398358aff23541ff40d22ff461b05b","unresolved":false,"context_lines":[{"line_number":35,"context_line":"from neutron.tests.unit import test_extension_extraroute as extraroute_test"},{"line_number":36,"context_line":"from neutron.tests.unit import test_l3_plugin"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"from oslo.config import cfg"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"API_EXT_PATH \u003d os.path.dirname(extensions.__file__)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_53a4eca2","line":38,"updated":"2014-08-13 00:42:06.000000000","message":"Should be with third party imports.","commit_id":"f8c63034715942a6374e1fddecf0399a27a2d974"},{"author":{"_account_id":9932,"name":"Franck Yelles","email":"franck110@gmail.com","username":"fyelles"},"change_message_id":"434ba347377c4ca10e0d630e845c5490ea674bfa","unresolved":false,"context_lines":[{"line_number":35,"context_line":"from neutron.tests.unit import test_extension_extraroute as extraroute_test"},{"line_number":36,"context_line":"from neutron.tests.unit import test_l3_plugin"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"from oslo.config import cfg"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"API_EXT_PATH \u003d os.path.dirname(extensions.__file__)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_ea089e29","line":38,"in_reply_to":"baada198_53a4eca2","updated":"2014-08-13 05:56:05.000000000","message":"Done","commit_id":"f8c63034715942a6374e1fddecf0399a27a2d974"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"11a094a229398358aff23541ff40d22ff461b05b","unresolved":false,"context_lines":[{"line_number":182,"context_line":"                                     body_2[\u0027floatingip\u0027][\u0027fixed_ip_address\u0027])"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"    def _test_floatingip_create_different_fixed_ip_same_port(self):"},{"line_number":185,"context_line":"        \u0027\u0027\u0027This tests that it is possible to delete a port that has"},{"line_number":186,"context_line":"        multiple floating ip addresses associated with it (each floating"},{"line_number":187,"context_line":"        address associated with a unique fixed address)."},{"line_number":188,"context_line":"        \u0027\u0027\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_b3aaa86b","line":185,"updated":"2014-08-13 00:42:06.000000000","message":"See PEP8/PEP257 for docstrings (triple double quotes, summary line with period, blank line, and additional detail lines.","commit_id":"f8c63034715942a6374e1fddecf0399a27a2d974"},{"author":{"_account_id":9932,"name":"Franck Yelles","email":"franck110@gmail.com","username":"fyelles"},"change_message_id":"434ba347377c4ca10e0d630e845c5490ea674bfa","unresolved":false,"context_lines":[{"line_number":182,"context_line":"                                     body_2[\u0027floatingip\u0027][\u0027fixed_ip_address\u0027])"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"    def _test_floatingip_create_different_fixed_ip_same_port(self):"},{"line_number":185,"context_line":"        \u0027\u0027\u0027This tests that it is possible to delete a port that has"},{"line_number":186,"context_line":"        multiple floating ip addresses associated with it (each floating"},{"line_number":187,"context_line":"        address associated with a unique fixed address)."},{"line_number":188,"context_line":"        \u0027\u0027\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_aa25c6ae","line":185,"in_reply_to":"baada198_b3aaa86b","updated":"2014-08-13 05:56:05.000000000","message":"This test is coming from the neutron/tests/unit folder. It has been altered to accommodate the creation of the Nuage gateway port","commit_id":"f8c63034715942a6374e1fddecf0399a27a2d974"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"11a094a229398358aff23541ff40d22ff461b05b","unresolved":false,"context_lines":[{"line_number":221,"context_line":"                        # Test that floating ips are assigned successfully."},{"line_number":222,"context_line":"                        body \u003d self._show(\u0027floatingips\u0027,"},{"line_number":223,"context_line":"                                          fip1[\u0027floatingip\u0027][\u0027id\u0027])"},{"line_number":224,"context_line":"                        self.assertEqual("},{"line_number":225,"context_line":"                            body[\u0027floatingip\u0027][\u0027port_id\u0027],"},{"line_number":226,"context_line":"                            fip1[\u0027floatingip\u0027][\u0027port_id\u0027])"},{"line_number":227,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_33be98b0","line":224,"updated":"2014-08-13 00:42:06.000000000","message":"For asserts, convention is to have the expected value first, and then the actual second. I think some of these are reversed?","commit_id":"f8c63034715942a6374e1fddecf0399a27a2d974"},{"author":{"_account_id":9932,"name":"Franck Yelles","email":"franck110@gmail.com","username":"fyelles"},"change_message_id":"434ba347377c4ca10e0d630e845c5490ea674bfa","unresolved":false,"context_lines":[{"line_number":221,"context_line":"                        # Test that floating ips are assigned successfully."},{"line_number":222,"context_line":"                        body \u003d self._show(\u0027floatingips\u0027,"},{"line_number":223,"context_line":"                                          fip1[\u0027floatingip\u0027][\u0027id\u0027])"},{"line_number":224,"context_line":"                        self.assertEqual("},{"line_number":225,"context_line":"                            body[\u0027floatingip\u0027][\u0027port_id\u0027],"},{"line_number":226,"context_line":"                            fip1[\u0027floatingip\u0027][\u0027port_id\u0027])"},{"line_number":227,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_ca1afa6a","line":224,"in_reply_to":"baada198_33be98b0","updated":"2014-08-13 05:56:05.000000000","message":"This test is coming from the neutron/tests/unit folder. It has been altered to accommodate the creation of the Nuage gateway port","commit_id":"f8c63034715942a6374e1fddecf0399a27a2d974"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"11a094a229398358aff23541ff40d22ff461b05b","unresolved":false,"context_lines":[{"line_number":294,"context_line":"            # self.subnet(cidr\u003d\u002717.129.122.5/32\u0027, gateway_ip\u003dNone)"},{"line_number":295,"context_line":"        ) as subs:"},{"line_number":296,"context_line":"            # the API should accept and correct these for users"},{"line_number":297,"context_line":"            self.assertEqual(subs[0][\u0027subnet\u0027][\u0027cidr\u0027], \u002710.0.0.0/8\u0027)"},{"line_number":298,"context_line":"            self.assertEqual(subs[1][\u0027subnet\u0027][\u0027cidr\u0027], \u002711.128.0.0/15\u0027)"},{"line_number":299,"context_line":"            self.assertEqual(subs[2][\u0027subnet\u0027][\u0027cidr\u0027], \u002712.129.0.0/16\u0027)"},{"line_number":300,"context_line":"            self.assertEqual(subs[3][\u0027subnet\u0027][\u0027cidr\u0027], \u002713.129.64.0/18\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_93dcc419","line":297,"updated":"2014-08-13 00:42:06.000000000","message":"Reversed...","commit_id":"f8c63034715942a6374e1fddecf0399a27a2d974"},{"author":{"_account_id":9932,"name":"Franck Yelles","email":"franck110@gmail.com","username":"fyelles"},"change_message_id":"434ba347377c4ca10e0d630e845c5490ea674bfa","unresolved":false,"context_lines":[{"line_number":294,"context_line":"            # self.subnet(cidr\u003d\u002717.129.122.5/32\u0027, gateway_ip\u003dNone)"},{"line_number":295,"context_line":"        ) as subs:"},{"line_number":296,"context_line":"            # the API should accept and correct these for users"},{"line_number":297,"context_line":"            self.assertEqual(subs[0][\u0027subnet\u0027][\u0027cidr\u0027], \u002710.0.0.0/8\u0027)"},{"line_number":298,"context_line":"            self.assertEqual(subs[1][\u0027subnet\u0027][\u0027cidr\u0027], \u002711.128.0.0/15\u0027)"},{"line_number":299,"context_line":"            self.assertEqual(subs[2][\u0027subnet\u0027][\u0027cidr\u0027], \u002712.129.0.0/16\u0027)"},{"line_number":300,"context_line":"            self.assertEqual(subs[3][\u0027subnet\u0027][\u0027cidr\u0027], \u002713.129.64.0/18\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_ea1fbe58","line":297,"in_reply_to":"baada198_93dcc419","updated":"2014-08-13 05:56:05.000000000","message":"This test is coming from the neutron/tests/unit folder. It has been altered to accommodate the creation of the Nuage gateway port","commit_id":"f8c63034715942a6374e1fddecf0399a27a2d974"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"11a094a229398358aff23541ff40d22ff461b05b","unresolved":false,"context_lines":[{"line_number":318,"context_line":"        with contextlib.nested(self.port(), self.port()):"},{"line_number":319,"context_line":"            ctx \u003d context.get_admin_context()"},{"line_number":320,"context_line":"            ports \u003d plugin.get_ports(ctx)"},{"line_number":321,"context_line":"            self.assertEqual(len(ports), 4)"},{"line_number":322,"context_line":"            for port in ports:"},{"line_number":323,"context_line":"                self._check_response_portbindings(port)"},{"line_number":324,"context_line":"            # By default user is admin - now test non admin user"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_d3e63ce7","line":321,"updated":"2014-08-13 00:42:06.000000000","message":"reverse args. Here and below.","commit_id":"f8c63034715942a6374e1fddecf0399a27a2d974"},{"author":{"_account_id":9932,"name":"Franck Yelles","email":"franck110@gmail.com","username":"fyelles"},"change_message_id":"434ba347377c4ca10e0d630e845c5490ea674bfa","unresolved":false,"context_lines":[{"line_number":318,"context_line":"        with contextlib.nested(self.port(), self.port()):"},{"line_number":319,"context_line":"            ctx \u003d context.get_admin_context()"},{"line_number":320,"context_line":"            ports \u003d plugin.get_ports(ctx)"},{"line_number":321,"context_line":"            self.assertEqual(len(ports), 4)"},{"line_number":322,"context_line":"            for port in ports:"},{"line_number":323,"context_line":"                self._check_response_portbindings(port)"},{"line_number":324,"context_line":"            # By default user is admin - now test non admin user"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_2a31b6ee","line":321,"in_reply_to":"baada198_d3e63ce7","updated":"2014-08-13 05:56:05.000000000","message":"This test is coming from the neutron/tests/unit folder. It has been altered to accommodate the creation of the Nuage gateway port","commit_id":"f8c63034715942a6374e1fddecf0399a27a2d974"},{"author":{"_account_id":7962,"name":"Ronak Shah","email":"ronak.malav.shah@gmail.com","username":"ronak"},"change_message_id":"c1daa99b5d66fb5e74be21d4eb4a6b85b6d0b7ec","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#"},{"line_number":15,"context_line":"# @author: Ronak Shah, Aniket Dandekar, Franck Yelles,"},{"line_number":16,"context_line":"# Nuage Networks, Alcatel-Lucent USA Inc."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import os"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"import contextlib"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_c6965549","line":17,"updated":"2014-08-13 18:29:44.000000000","message":"Not sure if this is the norm :)","commit_id":"5d8a32c120c1b1fe239d2dbb4f284766b3df0fd4"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"477cfb744088d0c006208db125f2e5ee59237732","unresolved":false,"context_lines":[{"line_number":180,"context_line":"                    self.assertEqual(str(ip_range[-2]),"},{"line_number":181,"context_line":"                                     body_2[\u0027floatingip\u0027][\u0027fixed_ip_address\u0027])"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    def _test_floatingip_create_different_fixed_ip_same_port(self):"},{"line_number":184,"context_line":"        \u0027\u0027\u0027This tests that it is possible to delete a port that has"},{"line_number":185,"context_line":"        multiple floating ip addresses associated with it (each floating"},{"line_number":186,"context_line":"        address associated with a unique fixed address)."}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_693811cc","line":183,"updated":"2014-08-13 11:06:05.000000000","message":"Not sure I follow your replies from patch set 2. Do you mean it is an existing test moved here, or an adaptation of a similar tests? In either case, I think it\u0027s appropriate to follow the coding guidelines for added code (even if other places have it wrong). We should use the opportunity to make the code better, IMHO.","commit_id":"5d8a32c120c1b1fe239d2dbb4f284766b3df0fd4"},{"author":{"_account_id":7962,"name":"Ronak Shah","email":"ronak.malav.shah@gmail.com","username":"ronak"},"change_message_id":"c1daa99b5d66fb5e74be21d4eb4a6b85b6d0b7ec","unresolved":false,"context_lines":[{"line_number":329,"context_line":""},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"class TestNuageExtrarouteTestCase(NuagePluginV2TestCase,"},{"line_number":332,"context_line":"                       test_db_plugin.TestPortsV2):"},{"line_number":333,"context_line":"    def test_no_more_port_exception(self):"},{"line_number":334,"context_line":"        self.skipTest(\"Plugin need at least one IP address\")"},{"line_number":335,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_a629619e","line":332,"updated":"2014-08-13 18:29:44.000000000","message":"I see two class with the same name (TestNuageExtrarouteTestCase) here. Typo?","commit_id":"5d8a32c120c1b1fe239d2dbb4f284766b3df0fd4"},{"author":{"_account_id":7962,"name":"Ronak Shah","email":"ronak.malav.shah@gmail.com","username":"ronak"},"change_message_id":"c1daa99b5d66fb5e74be21d4eb4a6b85b6d0b7ec","unresolved":false,"context_lines":[{"line_number":415,"context_line":"                body \u003d self._show(\u0027routers\u0027, r[\u0027router\u0027][\u0027id\u0027])"},{"line_number":416,"context_line":"                gw_info \u003d body[\u0027router\u0027][\u0027external_gateway_info\u0027]"},{"line_number":417,"context_line":"                self.assertIsNone(gw_info)"},{"line_number":418,"context_line":""},{"line_number":419,"context_line":"    def test_floatingip_create_different_fixed_ip_same_port(self):"},{"line_number":420,"context_line":"        self._test_floatingip_create_different_fixed_ip_same_port()"},{"line_number":421,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_41414f09","line":418,"updated":"2014-08-13 18:29:44.000000000","message":"Can the code from line 382:418 be put in separate method within this file? Similar to other test methods below?","commit_id":"5d8a32c120c1b1fe239d2dbb4f284766b3df0fd4"},{"author":{"_account_id":10980,"name":"Doug Wiegley","email":"dougwig@parkside.io","username":"dougw"},"change_message_id":"cb41f1342cc80810e68c4e17c8600c4282be79e5","unresolved":false,"context_lines":[{"line_number":15,"context_line":"# @author: Aniket Dandekar, Nuage Networks, Alcatel-Lucent USA Inc."},{"line_number":16,"context_line":"# @author: Ronak Shah, Nuage Networks, Alcatel-Lucent USA Inc."},{"line_number":17,"context_line":"# @author: Franck Yelles, Nuage Networks, Alcatel-Lucent USA Inc."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import os"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"import contextlib"}],"source_content_type":"text/x-python","patch_set":4,"id":"7ac7a964_8bcf3db0","line":18,"updated":"2014-08-14 00:35:26.000000000","message":"Same here.","commit_id":"accaa5a6cdce2b6021124d2d34f0373d7ff90170"},{"author":{"_account_id":7962,"name":"Ronak Shah","email":"ronak.malav.shah@gmail.com","username":"ronak"},"change_message_id":"8f7e19eae1e9f9eeee45652b1de5f78792ed531a","unresolved":false,"context_lines":[{"line_number":10,"context_line":"#    distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT"},{"line_number":11,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":12,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import os"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"7ac7a964_376f40c7","line":13,"updated":"2014-08-14 21:29:07.000000000","message":"Please put back the original author comment","commit_id":"fc7e5acf360562c69cc4832f13e78811326a0a35"},{"author":{"_account_id":7962,"name":"Ronak Shah","email":"ronak.malav.shah@gmail.com","username":"ronak"},"change_message_id":"8f7e19eae1e9f9eeee45652b1de5f78792ed531a","unresolved":false,"context_lines":[{"line_number":407,"context_line":"                body \u003d self._show(\u0027routers\u0027, r[\u0027router\u0027][\u0027id\u0027])"},{"line_number":408,"context_line":"                gw_info \u003d body[\u0027router\u0027][\u0027external_gateway_info\u0027]"},{"line_number":409,"context_line":"                self.assertIsNone(gw_info)"},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"    def test_floatingip_create_different_fixed_ip_same_port(self):"},{"line_number":412,"context_line":"        self._test_floatingip_create_different_fixed_ip_same_port()"},{"line_number":413,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"7ac7a964_d78d2c7d","line":410,"updated":"2014-08-14 21:29:07.000000000","message":"Please consider my comment in patchset-3 on this block of code.","commit_id":"fc7e5acf360562c69cc4832f13e78811326a0a35"},{"author":{"_account_id":7962,"name":"Ronak Shah","email":"ronak.malav.shah@gmail.com","username":"ronak"},"change_message_id":"08e8db8b7a0ba46fd88f315d948747ffc6e20d84","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":"#"},{"line_number":15,"context_line":"# @author: Ronak Shah, Nuage Networks, Alcatel-Lucent USA Inc."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import os"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import contextlib"}],"source_content_type":"text/x-python","patch_set":7,"id":"7ac7a964_ddbb8d0c","line":16,"updated":"2014-08-14 22:15:42.000000000","message":"No need to change the original author string.","commit_id":"3f0a19284a0d450e1bac1be080e4eeaade018891"},{"author":{"_account_id":9932,"name":"Franck Yelles","email":"franck110@gmail.com","username":"fyelles"},"change_message_id":"bda18b7c2ed31b60b05b3128118bb74db683a815","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":"#"},{"line_number":15,"context_line":"# @author: Ronak Shah, Nuage Networks, Alcatel-Lucent USA Inc."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import os"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import contextlib"}],"source_content_type":"text/x-python","patch_set":7,"id":"7ac7a964_ddc1cd2f","line":16,"in_reply_to":"7ac7a964_ddbb8d0c","updated":"2014-08-14 22:28:17.000000000","message":"Done","commit_id":"3f0a19284a0d450e1bac1be080e4eeaade018891"},{"author":{"_account_id":7962,"name":"Ronak Shah","email":"ronak.malav.shah@gmail.com","username":"ronak"},"change_message_id":"8823763cb87db078af71e2d827c3bd5fe53814ee","unresolved":false,"context_lines":[{"line_number":313,"context_line":"            res \u003d subnet_req.get_response(self.api)"},{"line_number":314,"context_line":"            self.assertEqual(res.status_int, exc.HTTPClientError.code)"},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"    def test_create_subnet(self):"},{"line_number":317,"context_line":"        nuage_dhcp_port \u003d \u002710.0.0.254\u0027"},{"line_number":318,"context_line":"        with self.network() as network:"},{"line_number":319,"context_line":"            keys \u003d {"}],"source_content_type":"text/x-python","patch_set":11,"id":"1abeadc6_6cecd62a","line":316,"updated":"2014-08-23 01:02:46.000000000","message":"I think that it is important to rename this test rather than overriding it. It is always good to run test_create_subnet of test_db_plugin; it passes as well. This is a nuage specific behaviour and it would be good if you can rename it to something else. May be test_create_subnet_with_dhcp_port?","commit_id":"34a222489b05cffc23025bdd5c1fc6783d455a83"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"a0d2f3ca81c10bd4d3f1b7f1817817bfc61108b2","unresolved":false,"context_lines":[{"line_number":311,"context_line":"                    \u0027gateway_ip\u0027: \u002710.0.3.1\u0027}}"},{"line_number":312,"context_line":"            subnet_req \u003d self.new_create_request(\u0027subnets\u0027, data)"},{"line_number":313,"context_line":"            res \u003d subnet_req.get_response(self.api)"},{"line_number":314,"context_line":"            self.assertEqual(res.status_int, exc.HTTPClientError.code)"},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"    def test_create_subnet_with_dhcp_port(self):"},{"line_number":317,"context_line":"        nuage_dhcp_port \u003d \u002710.0.0.254\u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"1abeadc6_63a4d707","line":314,"updated":"2014-08-24 01:45:26.000000000","message":"should have expected first, and actual second.","commit_id":"e2341d1701a2c88f3bc64486eafc3001d0f177b1"},{"author":{"_account_id":1923,"name":"Mohammad Banikazemi","email":"mbanikazemi@gmail.com","username":"mb-s"},"change_message_id":"9c3258632ec5b82c9032f76357c2aa2a761abe30","unresolved":false,"context_lines":[{"line_number":182,"context_line":"                                     body_2[\u0027floatingip\u0027][\u0027fixed_ip_address\u0027])"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"    def _test_floatingip_create_different_fixed_ip_same_port(self):"},{"line_number":185,"context_line":"        \"\"\"Test to create fixed IPs using the same port."},{"line_number":186,"context_line":"        This tests that it is possible to delete a port that has"},{"line_number":187,"context_line":"        multiple floating ip addresses associated with it (each floating"},{"line_number":188,"context_line":"        address associated with a unique fixed address)."}],"source_content_type":"text/x-python","patch_set":14,"id":"1abeadc6_b60e2631","line":185,"updated":"2014-08-24 19:12:44.000000000","message":"Please follow the preferred style for multi line doc strings as specified here: http://docs.openstack.org/developer/hacking/#docstrings","commit_id":"e53e0baad404c55de1328b45310e174008e63956"},{"author":{"_account_id":9932,"name":"Franck Yelles","email":"franck110@gmail.com","username":"fyelles"},"change_message_id":"64d46c1e99cfd73ec187d47ba9c49f7334416f10","unresolved":false,"context_lines":[{"line_number":182,"context_line":"                                     body_2[\u0027floatingip\u0027][\u0027fixed_ip_address\u0027])"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"    def _test_floatingip_create_different_fixed_ip_same_port(self):"},{"line_number":185,"context_line":"        \"\"\"Test to create fixed IPs using the same port."},{"line_number":186,"context_line":"        This tests that it is possible to delete a port that has"},{"line_number":187,"context_line":"        multiple floating ip addresses associated with it (each floating"},{"line_number":188,"context_line":"        address associated with a unique fixed address)."}],"source_content_type":"text/x-python","patch_set":14,"id":"1abeadc6_568232c9","line":185,"in_reply_to":"1abeadc6_b60e2631","updated":"2014-08-24 20:59:33.000000000","message":"Done","commit_id":"e53e0baad404c55de1328b45310e174008e63956"},{"author":{"_account_id":1923,"name":"Mohammad Banikazemi","email":"mbanikazemi@gmail.com","username":"mb-s"},"change_message_id":"9c3258632ec5b82c9032f76357c2aa2a761abe30","unresolved":false,"context_lines":[{"line_number":292,"context_line":"            self.subnet(cidr\u003d\u002714.129.122.5/22\u0027),"},{"line_number":293,"context_line":"            self.subnet(cidr\u003d\u002715.129.122.5/24\u0027),"},{"line_number":294,"context_line":"            self.subnet(cidr\u003d\u002716.129.122.5/28\u0027),"},{"line_number":295,"context_line":"            # self.subnet(cidr\u003d\u002717.129.122.5/32\u0027, gateway_ip\u003dNone)"},{"line_number":296,"context_line":"        ) as subs:"},{"line_number":297,"context_line":"            # the API should accept and correct these for users"},{"line_number":298,"context_line":"            self.assertEqual(\u002710.0.0.0/8\u0027, subs[0][\u0027subnet\u0027][\u0027cidr\u0027])"}],"source_content_type":"text/x-python","patch_set":14,"id":"1abeadc6_76248eaf","line":295,"updated":"2014-08-24 19:12:44.000000000","message":"Why are these commented out? Please explain why and \nremove them here and elsewhere if the tests are not necessary.","commit_id":"e53e0baad404c55de1328b45310e174008e63956"},{"author":{"_account_id":9932,"name":"Franck Yelles","email":"franck110@gmail.com","username":"fyelles"},"change_message_id":"64d46c1e99cfd73ec187d47ba9c49f7334416f10","unresolved":false,"context_lines":[{"line_number":292,"context_line":"            self.subnet(cidr\u003d\u002714.129.122.5/22\u0027),"},{"line_number":293,"context_line":"            self.subnet(cidr\u003d\u002715.129.122.5/24\u0027),"},{"line_number":294,"context_line":"            self.subnet(cidr\u003d\u002716.129.122.5/28\u0027),"},{"line_number":295,"context_line":"            # self.subnet(cidr\u003d\u002717.129.122.5/32\u0027, gateway_ip\u003dNone)"},{"line_number":296,"context_line":"        ) as subs:"},{"line_number":297,"context_line":"            # the API should accept and correct these for users"},{"line_number":298,"context_line":"            self.assertEqual(\u002710.0.0.0/8\u0027, subs[0][\u0027subnet\u0027][\u0027cidr\u0027])"}],"source_content_type":"text/x-python","patch_set":14,"id":"1abeadc6_966bea1e","line":295,"in_reply_to":"1abeadc6_76248eaf","updated":"2014-08-24 20:59:33.000000000","message":"I will remove it, I did put the information on the top.\nThe plugin requires at least 2 IP addresses if the gateway is set a /32 will not work","commit_id":"e53e0baad404c55de1328b45310e174008e63956"},{"author":{"_account_id":1923,"name":"Mohammad Banikazemi","email":"mbanikazemi@gmail.com","username":"mb-s"},"change_message_id":"9c3258632ec5b82c9032f76357c2aa2a761abe30","unresolved":false,"context_lines":[{"line_number":462,"context_line":"                req \u003d self.new_list_request(\u0027ports\u0027)"},{"line_number":463,"context_line":"                res \u003d req.get_response(self.api)"},{"line_number":464,"context_line":"                ports \u003d self.deserialize(self.fmt, res)"},{"line_number":465,"context_line":"                #The Nuage plugin reserve the first port"},{"line_number":466,"context_line":"                port \u003d ports[\u0027ports\u0027][1]"},{"line_number":467,"context_line":"                self.assertEqual(1, len(port[ext_sg.SECURITYGROUPS]))"},{"line_number":468,"context_line":"                self._delete(\u0027ports\u0027, port[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":14,"id":"1abeadc6_b63546dd","line":465,"updated":"2014-08-24 19:12:44.000000000","message":"Missing space after #","commit_id":"e53e0baad404c55de1328b45310e174008e63956"},{"author":{"_account_id":9932,"name":"Franck Yelles","email":"franck110@gmail.com","username":"fyelles"},"change_message_id":"64d46c1e99cfd73ec187d47ba9c49f7334416f10","unresolved":false,"context_lines":[{"line_number":462,"context_line":"                req \u003d self.new_list_request(\u0027ports\u0027)"},{"line_number":463,"context_line":"                res \u003d req.get_response(self.api)"},{"line_number":464,"context_line":"                ports \u003d self.deserialize(self.fmt, res)"},{"line_number":465,"context_line":"                #The Nuage plugin reserve the first port"},{"line_number":466,"context_line":"                port \u003d ports[\u0027ports\u0027][1]"},{"line_number":467,"context_line":"                self.assertEqual(1, len(port[ext_sg.SECURITYGROUPS]))"},{"line_number":468,"context_line":"                self._delete(\u0027ports\u0027, port[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":14,"id":"1abeadc6_b668e622","line":465,"in_reply_to":"1abeadc6_b63546dd","updated":"2014-08-24 20:59:33.000000000","message":"Done","commit_id":"e53e0baad404c55de1328b45310e174008e63956"}]}
