)]}'
{"neutron/plugins/ml2/extensions/dns_integration.py":[{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"1c50a0612d73612aa019f16087f5e912bb08f190","unresolved":false,"context_lines":[{"line_number":291,"context_line":"    original_ip \u003d [ip[\u0027ip_address\u0027] for ip in original_port[\u0027fixed_ips\u0027]]"},{"line_number":292,"context_line":"    updated_ip \u003d [ip[\u0027ip_address\u0027] for ip in updated_port[\u0027fixed_ips\u0027]]"},{"line_number":293,"context_line":"    if (updated_port[dns.DNSNAME] \u003d\u003d original_port[dns.DNSNAME] and"},{"line_number":294,"context_line":"            original_ip \u003d\u003d updated_ip):"},{"line_number":295,"context_line":"        return"},{"line_number":296,"context_line":"    dns_data_db \u003d context.session.query(dns_db.PortDNS).filter_by("},{"line_number":297,"context_line":"        port_id\u003dupdated_port[\u0027id\u0027]).one_or_none()"}],"source_content_type":"text/x-python","patch_set":1,"id":"5aef4532_6fc98b78","line":294,"updated":"2016-03-07 22:14:45.000000000","message":"Lists are ordered sequences. This means that [\u00271\u0027, \u00274\u0027] !\u003d [\u00274\u0027, \u00271\u0027]. Sets are unordered, so set([\u00271\u0027, \u00274\u0027]) \u003d\u003d set([\u00274\u0027, \u00271\u0027]). This line should be:\n\nset(original_ip) \u003d\u003d set(updated_ip)\n\nI don\u0027t think it is safe to assume we are getting original_port[\u0027fixed_ips\u0027] and updated_port[\u0027fixed_ips\u0027] in the same order when the ip addresses are the same","commit_id":"f1230b3c14aa529ab4c5e0cde4fdf19c1516b5f0"},{"author":{"_account_id":20277,"name":"James Anziano","email":"janzian@us.ibm.com","username":"janzian"},"change_message_id":"63372115b77653f4d2a7a485d9a5628d78c7ebce","unresolved":false,"context_lines":[{"line_number":291,"context_line":"    original_ip \u003d [ip[\u0027ip_address\u0027] for ip in original_port[\u0027fixed_ips\u0027]]"},{"line_number":292,"context_line":"    updated_ip \u003d [ip[\u0027ip_address\u0027] for ip in updated_port[\u0027fixed_ips\u0027]]"},{"line_number":293,"context_line":"    if (updated_port[dns.DNSNAME] \u003d\u003d original_port[dns.DNSNAME] and"},{"line_number":294,"context_line":"            original_ip \u003d\u003d updated_ip):"},{"line_number":295,"context_line":"        return"},{"line_number":296,"context_line":"    dns_data_db \u003d context.session.query(dns_db.PortDNS).filter_by("},{"line_number":297,"context_line":"        port_id\u003dupdated_port[\u0027id\u0027]).one_or_none()"}],"source_content_type":"text/x-python","patch_set":1,"id":"5aef4532_725694d3","line":294,"in_reply_to":"5aef4532_6fc98b78","updated":"2016-03-07 22:32:46.000000000","message":"Done","commit_id":"f1230b3c14aa529ab4c5e0cde4fdf19c1516b5f0"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"34c689666b258ad70bafb995c5640d81a42de0f3","unresolved":false,"context_lines":[{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def process_update_port(self, plugin_context, request_data, db_data):"},{"line_number":92,"context_line":"        dns_name \u003d request_data.get(dns.DNSNAME)"},{"line_number":93,"context_line":"        if \u0027fixed_ips\u0027 in request_data:"},{"line_number":94,"context_line":"            ip_address \u003d [ip[\u0027ip_address\u0027] for ip in request_data[\u0027fixed_ips\u0027]]"},{"line_number":95,"context_line":"        else:"},{"line_number":96,"context_line":"            ip_address \u003d None"},{"line_number":97,"context_line":"        if dns_name is None and ip_address is None:"}],"source_content_type":"text/x-python","patch_set":2,"id":"5aef4532_63c4e85e","line":94,"range":{"start_line":93,"start_character":0,"end_line":94,"end_character":79},"updated":"2016-03-08 13:28:59.000000000","message":"What if I just update the port\u0027s fixed ip by subnet_id, without fixed_ip?","commit_id":"de4635fa8d26c05de5716e07e420724ecadd90e9"},{"author":{"_account_id":20277,"name":"James Anziano","email":"janzian@us.ibm.com","username":"janzian"},"change_message_id":"445e4e886f002bb765ac957a93d149908f78f1d5","unresolved":false,"context_lines":[{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def process_update_port(self, plugin_context, request_data, db_data):"},{"line_number":92,"context_line":"        dns_name \u003d request_data.get(dns.DNSNAME)"},{"line_number":93,"context_line":"        if \u0027fixed_ips\u0027 in request_data:"},{"line_number":94,"context_line":"            ip_address \u003d [ip[\u0027ip_address\u0027] for ip in request_data[\u0027fixed_ips\u0027]]"},{"line_number":95,"context_line":"        else:"},{"line_number":96,"context_line":"            ip_address \u003d None"},{"line_number":97,"context_line":"        if dns_name is None and ip_address is None:"}],"source_content_type":"text/x-python","patch_set":2,"id":"5aef4532_e2d73bbd","line":94,"range":{"start_line":93,"start_character":0,"end_line":94,"end_character":79},"in_reply_to":"5aef4532_63c4e85e","updated":"2016-03-08 21:25:38.000000000","message":"That\u0027s a good catch, thanks!","commit_id":"de4635fa8d26c05de5716e07e420724ecadd90e9"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"4ad4d563e9c087d2611a5c5506252fcd55b8706b","unresolved":false,"context_lines":[{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def process_update_port(self, plugin_context, request_data, db_data):"},{"line_number":92,"context_line":"        dns_name \u003d request_data.get(dns.DNSNAME)"},{"line_number":93,"context_line":"        if \u0027fixed_ips\u0027 in request_data:"},{"line_number":94,"context_line":"            ip_address \u003d [ip[\u0027ip_address\u0027] for ip in request_data[\u0027fixed_ips\u0027]]"},{"line_number":95,"context_line":"        else:"},{"line_number":96,"context_line":"            ip_address \u003d None"},{"line_number":97,"context_line":"        if dns_name is None and ip_address is None:"}],"source_content_type":"text/x-python","patch_set":2,"id":"5aef4532_f629cb38","line":94,"range":{"start_line":93,"start_character":0,"end_line":94,"end_character":79},"in_reply_to":"5aef4532_63c4e85e","updated":"2016-03-08 17:44:42.000000000","message":"You raised an excellent point. We should change lines 93 to 96 to:\n\nfixed_ips \u003d \u0027fixed_ips\u0027 in request_data","commit_id":"de4635fa8d26c05de5716e07e420724ecadd90e9"},{"author":{"_account_id":20277,"name":"James Anziano","email":"janzian@us.ibm.com","username":"janzian"},"change_message_id":"445e4e886f002bb765ac957a93d149908f78f1d5","unresolved":false,"context_lines":[{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def process_update_port(self, plugin_context, request_data, db_data):"},{"line_number":92,"context_line":"        dns_name \u003d request_data.get(dns.DNSNAME)"},{"line_number":93,"context_line":"        if \u0027fixed_ips\u0027 in request_data:"},{"line_number":94,"context_line":"            ip_address \u003d [ip[\u0027ip_address\u0027] for ip in request_data[\u0027fixed_ips\u0027]]"},{"line_number":95,"context_line":"        else:"},{"line_number":96,"context_line":"            ip_address \u003d None"},{"line_number":97,"context_line":"        if dns_name is None and ip_address is None:"}],"source_content_type":"text/x-python","patch_set":2,"id":"5aef4532_62cb2b1f","line":94,"range":{"start_line":93,"start_character":0,"end_line":94,"end_character":79},"in_reply_to":"5aef4532_f629cb38","updated":"2016-03-08 21:25:38.000000000","message":"Done","commit_id":"de4635fa8d26c05de5716e07e420724ecadd90e9"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"4ad4d563e9c087d2611a5c5506252fcd55b8706b","unresolved":false,"context_lines":[{"line_number":94,"context_line":"            ip_address \u003d [ip[\u0027ip_address\u0027] for ip in request_data[\u0027fixed_ips\u0027]]"},{"line_number":95,"context_line":"        else:"},{"line_number":96,"context_line":"            ip_address \u003d None"},{"line_number":97,"context_line":"        if dns_name is None and ip_address is None:"},{"line_number":98,"context_line":"            return"},{"line_number":99,"context_line":"        network \u003d self._get_network(plugin_context, db_data[\u0027network_id\u0027])"},{"line_number":100,"context_line":"        if not network[dns.DNSDOMAIN]:"}],"source_content_type":"text/x-python","patch_set":2,"id":"5aef4532_56cfdf7e","line":97,"updated":"2016-03-08 17:44:42.000000000","message":"Change to: if dns_name is None and not fixed_ips:","commit_id":"de4635fa8d26c05de5716e07e420724ecadd90e9"},{"author":{"_account_id":20277,"name":"James Anziano","email":"janzian@us.ibm.com","username":"janzian"},"change_message_id":"445e4e886f002bb765ac957a93d149908f78f1d5","unresolved":false,"context_lines":[{"line_number":94,"context_line":"            ip_address \u003d [ip[\u0027ip_address\u0027] for ip in request_data[\u0027fixed_ips\u0027]]"},{"line_number":95,"context_line":"        else:"},{"line_number":96,"context_line":"            ip_address \u003d None"},{"line_number":97,"context_line":"        if dns_name is None and ip_address is None:"},{"line_number":98,"context_line":"            return"},{"line_number":99,"context_line":"        network \u003d self._get_network(plugin_context, db_data[\u0027network_id\u0027])"},{"line_number":100,"context_line":"        if not network[dns.DNSDOMAIN]:"}],"source_content_type":"text/x-python","patch_set":2,"id":"5aef4532_42e70fb0","line":97,"in_reply_to":"5aef4532_56cfdf7e","updated":"2016-03-08 21:25:38.000000000","message":"Done","commit_id":"de4635fa8d26c05de5716e07e420724ecadd90e9"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"4ad4d563e9c087d2611a5c5506252fcd55b8706b","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        dns_data_db \u003d plugin_context.session.query(dns_db.PortDNS).filter_by("},{"line_number":106,"context_line":"            port_id\u003ddb_data[\u0027id\u0027]).one_or_none()"},{"line_number":107,"context_line":"        if dns_data_db:"},{"line_number":108,"context_line":"            if dns_name !\u003d \u0027\u0027:"},{"line_number":109,"context_line":"                if dns_data_db[\u0027current_dns_name\u0027] !\u003d dns_name or ip_address:"},{"line_number":110,"context_line":"                    dns_data_db[\u0027previous_dns_name\u0027] \u003d (dns_data_db["},{"line_number":111,"context_line":"                        \u0027current_dns_name\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"5aef4532_56407fa5","line":108,"updated":"2016-03-08 17:44:42.000000000","message":"This should only be:\n\nif dns_name:\n\notherwise you are going to execute the indented block when dns_name has a non-value string or it is None. That is why you are getting. That is why you are getting an error complaining that current_dns_name can\u0027t be none","commit_id":"de4635fa8d26c05de5716e07e420724ecadd90e9"},{"author":{"_account_id":20277,"name":"James Anziano","email":"janzian@us.ibm.com","username":"janzian"},"change_message_id":"445e4e886f002bb765ac957a93d149908f78f1d5","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        dns_data_db \u003d plugin_context.session.query(dns_db.PortDNS).filter_by("},{"line_number":106,"context_line":"            port_id\u003ddb_data[\u0027id\u0027]).one_or_none()"},{"line_number":107,"context_line":"        if dns_data_db:"},{"line_number":108,"context_line":"            if dns_name !\u003d \u0027\u0027:"},{"line_number":109,"context_line":"                if dns_data_db[\u0027current_dns_name\u0027] !\u003d dns_name or ip_address:"},{"line_number":110,"context_line":"                    dns_data_db[\u0027previous_dns_name\u0027] \u003d (dns_data_db["},{"line_number":111,"context_line":"                        \u0027current_dns_name\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"5aef4532_22e2c39f","line":108,"in_reply_to":"5aef4532_56407fa5","updated":"2016-03-08 21:25:38.000000000","message":"Done","commit_id":"de4635fa8d26c05de5716e07e420724ecadd90e9"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"4ad4d563e9c087d2611a5c5506252fcd55b8706b","unresolved":false,"context_lines":[{"line_number":106,"context_line":"            port_id\u003ddb_data[\u0027id\u0027]).one_or_none()"},{"line_number":107,"context_line":"        if dns_data_db:"},{"line_number":108,"context_line":"            if dns_name !\u003d \u0027\u0027:"},{"line_number":109,"context_line":"                if dns_data_db[\u0027current_dns_name\u0027] !\u003d dns_name or ip_address:"},{"line_number":110,"context_line":"                    dns_data_db[\u0027previous_dns_name\u0027] \u003d (dns_data_db["},{"line_number":111,"context_line":"                        \u0027current_dns_name\u0027])"},{"line_number":112,"context_line":"                    dns_data_db[\u0027previous_dns_domain\u0027] \u003d (dns_data_db["}],"source_content_type":"text/x-python","patch_set":2,"id":"5aef4532_f6aeeb96","line":109,"updated":"2016-03-08 17:44:42.000000000","message":"Change to:\n\nif dns_data_db[\u0027current_dns_name\u0027] !\u003d dns_name or fixed_ips:","commit_id":"de4635fa8d26c05de5716e07e420724ecadd90e9"},{"author":{"_account_id":20277,"name":"James Anziano","email":"janzian@us.ibm.com","username":"janzian"},"change_message_id":"445e4e886f002bb765ac957a93d149908f78f1d5","unresolved":false,"context_lines":[{"line_number":106,"context_line":"            port_id\u003ddb_data[\u0027id\u0027]).one_or_none()"},{"line_number":107,"context_line":"        if dns_data_db:"},{"line_number":108,"context_line":"            if dns_name !\u003d \u0027\u0027:"},{"line_number":109,"context_line":"                if dns_data_db[\u0027current_dns_name\u0027] !\u003d dns_name or ip_address:"},{"line_number":110,"context_line":"                    dns_data_db[\u0027previous_dns_name\u0027] \u003d (dns_data_db["},{"line_number":111,"context_line":"                        \u0027current_dns_name\u0027])"},{"line_number":112,"context_line":"                    dns_data_db[\u0027previous_dns_domain\u0027] \u003d (dns_data_db["}],"source_content_type":"text/x-python","patch_set":2,"id":"5aef4532_82ef5786","line":109,"in_reply_to":"5aef4532_f6aeeb96","updated":"2016-03-08 21:25:38.000000000","message":"Done","commit_id":"de4635fa8d26c05de5716e07e420724ecadd90e9"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"4ad4d563e9c087d2611a5c5506252fcd55b8706b","unresolved":false,"context_lines":[{"line_number":114,"context_line":"                    dns_data_db[\u0027current_dns_name\u0027] \u003d dns_name"},{"line_number":115,"context_line":"                    dns_data_db[\u0027current_dns_domain\u0027] \u003d dns_domain"},{"line_number":116,"context_line":"                return"},{"line_number":117,"context_line":"            if ip_address:"},{"line_number":118,"context_line":"                dns_data_db[\u0027previous_dns_name\u0027] \u003d (dns_data_db["},{"line_number":119,"context_line":"                    \u0027current_dns_name\u0027])"},{"line_number":120,"context_line":"                dns_data_db[\u0027previous_dns_domain\u0027] \u003d (dns_data_db["}],"source_content_type":"text/x-python","patch_set":2,"id":"5aef4532_f69c2b5f","line":117,"updated":"2016-03-08 17:44:42.000000000","message":"Change to:\n\nif fixed_ips:","commit_id":"de4635fa8d26c05de5716e07e420724ecadd90e9"},{"author":{"_account_id":20277,"name":"James Anziano","email":"janzian@us.ibm.com","username":"janzian"},"change_message_id":"445e4e886f002bb765ac957a93d149908f78f1d5","unresolved":false,"context_lines":[{"line_number":114,"context_line":"                    dns_data_db[\u0027current_dns_name\u0027] \u003d dns_name"},{"line_number":115,"context_line":"                    dns_data_db[\u0027current_dns_domain\u0027] \u003d dns_domain"},{"line_number":116,"context_line":"                return"},{"line_number":117,"context_line":"            if ip_address:"},{"line_number":118,"context_line":"                dns_data_db[\u0027previous_dns_name\u0027] \u003d (dns_data_db["},{"line_number":119,"context_line":"                    \u0027current_dns_name\u0027])"},{"line_number":120,"context_line":"                dns_data_db[\u0027previous_dns_domain\u0027] \u003d (dns_data_db["}],"source_content_type":"text/x-python","patch_set":2,"id":"5aef4532_62f20b71","line":117,"in_reply_to":"5aef4532_f69c2b5f","updated":"2016-03-08 21:25:38.000000000","message":"Done","commit_id":"de4635fa8d26c05de5716e07e420724ecadd90e9"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"4ad4d563e9c087d2611a5c5506252fcd55b8706b","unresolved":false,"context_lines":[{"line_number":129,"context_line":"                dns_data_db[\u0027current_dns_name\u0027] \u003d \u0027\u0027"},{"line_number":130,"context_line":"                dns_data_db[\u0027current_dns_domain\u0027] \u003d \u0027\u0027"},{"line_number":131,"context_line":"            return"},{"line_number":132,"context_line":"        if dns_name !\u003d \u0027\u0027:"},{"line_number":133,"context_line":"            plugin_context.session.add(dns_db.PortDNS("},{"line_number":134,"context_line":"                port_id\u003ddb_data[\u0027id\u0027],"},{"line_number":135,"context_line":"                current_dns_name\u003ddns_name,"}],"source_content_type":"text/x-python","patch_set":2,"id":"5aef4532_160d5790","line":132,"updated":"2016-03-08 17:44:42.000000000","message":"Same here. This should just be:\n\nif dns_name:","commit_id":"de4635fa8d26c05de5716e07e420724ecadd90e9"},{"author":{"_account_id":20277,"name":"James Anziano","email":"janzian@us.ibm.com","username":"janzian"},"change_message_id":"445e4e886f002bb765ac957a93d149908f78f1d5","unresolved":false,"context_lines":[{"line_number":129,"context_line":"                dns_data_db[\u0027current_dns_name\u0027] \u003d \u0027\u0027"},{"line_number":130,"context_line":"                dns_data_db[\u0027current_dns_domain\u0027] \u003d \u0027\u0027"},{"line_number":131,"context_line":"            return"},{"line_number":132,"context_line":"        if dns_name !\u003d \u0027\u0027:"},{"line_number":133,"context_line":"            plugin_context.session.add(dns_db.PortDNS("},{"line_number":134,"context_line":"                port_id\u003ddb_data[\u0027id\u0027],"},{"line_number":135,"context_line":"                current_dns_name\u003ddns_name,"}],"source_content_type":"text/x-python","patch_set":2,"id":"5aef4532_c2e95f82","line":132,"in_reply_to":"5aef4532_160d5790","updated":"2016-03-08 21:25:38.000000000","message":"Done","commit_id":"de4635fa8d26c05de5716e07e420724ecadd90e9"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"34c689666b258ad70bafb995c5640d81a42de0f3","unresolved":false,"context_lines":[{"line_number":288,"context_line":"    original_port \u003d kwargs.get(\u0027original_port\u0027)"},{"line_number":289,"context_line":"    if not original_port:"},{"line_number":290,"context_line":"        return"},{"line_number":291,"context_line":"    original_ip \u003d [ip[\u0027ip_address\u0027] for ip in original_port[\u0027fixed_ips\u0027]]"},{"line_number":292,"context_line":"    updated_ip \u003d [ip[\u0027ip_address\u0027] for ip in updated_port[\u0027fixed_ips\u0027]]"},{"line_number":293,"context_line":"    if (updated_port[dns.DNSNAME] \u003d\u003d original_port[dns.DNSNAME] and"},{"line_number":294,"context_line":"            set(original_ip) \u003d\u003d set(updated_ip)):"},{"line_number":295,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":2,"id":"5aef4532_2332e110","line":292,"range":{"start_line":291,"start_character":0,"end_line":292,"end_character":71},"updated":"2016-03-08 13:28:59.000000000","message":"Why not create set at the first place, instead of converting list to set at line 294?","commit_id":"de4635fa8d26c05de5716e07e420724ecadd90e9"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"4ad4d563e9c087d2611a5c5506252fcd55b8706b","unresolved":false,"context_lines":[{"line_number":288,"context_line":"    original_port \u003d kwargs.get(\u0027original_port\u0027)"},{"line_number":289,"context_line":"    if not original_port:"},{"line_number":290,"context_line":"        return"},{"line_number":291,"context_line":"    original_ip \u003d [ip[\u0027ip_address\u0027] for ip in original_port[\u0027fixed_ips\u0027]]"},{"line_number":292,"context_line":"    updated_ip \u003d [ip[\u0027ip_address\u0027] for ip in updated_port[\u0027fixed_ips\u0027]]"},{"line_number":293,"context_line":"    if (updated_port[dns.DNSNAME] \u003d\u003d original_port[dns.DNSNAME] and"},{"line_number":294,"context_line":"            set(original_ip) \u003d\u003d set(updated_ip)):"},{"line_number":295,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":2,"id":"5aef4532_f686ebd9","line":292,"range":{"start_line":291,"start_character":0,"end_line":292,"end_character":71},"in_reply_to":"5aef4532_2332e110","updated":"2016-03-08 17:44:42.000000000","message":"Because the external dns driver expects a list","commit_id":"de4635fa8d26c05de5716e07e420724ecadd90e9"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"f7f3597d9749f74ce893b68e1d8e01736d552fc4","unresolved":false,"context_lines":[{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def process_update_port(self, plugin_context, request_data, db_data):"},{"line_number":92,"context_line":"        dns_name \u003d request_data.get(dns.DNSNAME)"},{"line_number":93,"context_line":"        fixed_ips \u003d \u0027fixed_ips\u0027 in request_data"},{"line_number":94,"context_line":"        if dns_name is None and not fixed_ips:"},{"line_number":95,"context_line":"            return"},{"line_number":96,"context_line":"        network \u003d self._get_network(plugin_context, db_data[\u0027network_id\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_36a7a550","line":93,"range":{"start_line":93,"start_character":8,"end_line":93,"end_character":17},"updated":"2016-03-08 23:06:29.000000000","message":"Please rename this to \u0027has_fixed_ips\u0027 to make it clear it is a boolean where it is used below.","commit_id":"95b77db29352d97ecba9f20691806fbccf598724"},{"author":{"_account_id":20277,"name":"James Anziano","email":"janzian@us.ibm.com","username":"janzian"},"change_message_id":"a31c786c2472cd2bb3f45f774a033296ea3b3d15","unresolved":false,"context_lines":[{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def process_update_port(self, plugin_context, request_data, db_data):"},{"line_number":92,"context_line":"        dns_name \u003d request_data.get(dns.DNSNAME)"},{"line_number":93,"context_line":"        fixed_ips \u003d \u0027fixed_ips\u0027 in request_data"},{"line_number":94,"context_line":"        if dns_name is None and not fixed_ips:"},{"line_number":95,"context_line":"            return"},{"line_number":96,"context_line":"        network \u003d self._get_network(plugin_context, db_data[\u0027network_id\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_01bb380f","line":93,"range":{"start_line":93,"start_character":8,"end_line":93,"end_character":17},"in_reply_to":"5aef4532_36a7a550","updated":"2016-03-09 04:51:30.000000000","message":"Done","commit_id":"95b77db29352d97ecba9f20691806fbccf598724"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"dcb72171e19812c495da333e14a74f4dd1df5d68","unresolved":false,"context_lines":[{"line_number":91,"context_line":"    def process_update_port(self, plugin_context, request_data, db_data):"},{"line_number":92,"context_line":"        dns_name \u003d request_data.get(dns.DNSNAME)"},{"line_number":93,"context_line":"        fixed_ips \u003d \u0027fixed_ips\u0027 in request_data"},{"line_number":94,"context_line":"        if dns_name is None and not fixed_ips:"},{"line_number":95,"context_line":"            return"},{"line_number":96,"context_line":"        network \u003d self._get_network(plugin_context, db_data[\u0027network_id\u0027])"},{"line_number":97,"context_line":"        if not network[dns.DNSDOMAIN]:"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_4d51f70d","line":94,"updated":"2016-03-09 04:25:03.000000000","message":"change fixed_ips to has_fixed_ips here","commit_id":"95b77db29352d97ecba9f20691806fbccf598724"},{"author":{"_account_id":20277,"name":"James Anziano","email":"janzian@us.ibm.com","username":"janzian"},"change_message_id":"a31c786c2472cd2bb3f45f774a033296ea3b3d15","unresolved":false,"context_lines":[{"line_number":91,"context_line":"    def process_update_port(self, plugin_context, request_data, db_data):"},{"line_number":92,"context_line":"        dns_name \u003d request_data.get(dns.DNSNAME)"},{"line_number":93,"context_line":"        fixed_ips \u003d \u0027fixed_ips\u0027 in request_data"},{"line_number":94,"context_line":"        if dns_name is None and not fixed_ips:"},{"line_number":95,"context_line":"            return"},{"line_number":96,"context_line":"        network \u003d self._get_network(plugin_context, db_data[\u0027network_id\u0027])"},{"line_number":97,"context_line":"        if not network[dns.DNSDOMAIN]:"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_61383ca1","line":94,"in_reply_to":"5aef4532_4d51f70d","updated":"2016-03-09 04:51:30.000000000","message":"Done","commit_id":"95b77db29352d97ecba9f20691806fbccf598724"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"f7f3597d9749f74ce893b68e1d8e01736d552fc4","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        dns_data_db \u003d plugin_context.session.query(dns_db.PortDNS).filter_by("},{"line_number":103,"context_line":"            port_id\u003ddb_data[\u0027id\u0027]).one_or_none()"},{"line_number":104,"context_line":"        if dns_data_db:"},{"line_number":105,"context_line":"            if dns_name:"},{"line_number":106,"context_line":"                if dns_data_db[\u0027current_dns_name\u0027] !\u003d dns_name or fixed_ips:"},{"line_number":107,"context_line":"                    dns_data_db[\u0027previous_dns_name\u0027] \u003d (dns_data_db["},{"line_number":108,"context_line":"                        \u0027current_dns_name\u0027])"},{"line_number":109,"context_line":"                    dns_data_db[\u0027previous_dns_domain\u0027] \u003d (dns_data_db["},{"line_number":110,"context_line":"                        \u0027current_dns_domain\u0027])"},{"line_number":111,"context_line":"                    dns_data_db[\u0027current_dns_name\u0027] \u003d dns_name"},{"line_number":112,"context_line":"                    dns_data_db[\u0027current_dns_domain\u0027] \u003d dns_domain"},{"line_number":113,"context_line":"                return"},{"line_number":114,"context_line":"            if fixed_ips:"},{"line_number":115,"context_line":"                dns_data_db[\u0027previous_dns_name\u0027] \u003d (dns_data_db["},{"line_number":116,"context_line":"                    \u0027current_dns_name\u0027])"},{"line_number":117,"context_line":"                dns_data_db[\u0027previous_dns_domain\u0027] \u003d (dns_data_db["},{"line_number":118,"context_line":"                    \u0027current_dns_domain\u0027])"},{"line_number":119,"context_line":"                return"},{"line_number":120,"context_line":"            # If we are here, dns_name must be the empty string"},{"line_number":121,"context_line":"            if dns_data_db[\u0027current_dns_name\u0027]:"},{"line_number":122,"context_line":"                dns_data_db[\u0027previous_dns_name\u0027] \u003d (dns_data_db["},{"line_number":123,"context_line":"                    \u0027current_dns_name\u0027])"},{"line_number":124,"context_line":"                dns_data_db[\u0027previous_dns_domain\u0027] \u003d (dns_data_db["},{"line_number":125,"context_line":"                    \u0027current_dns_domain\u0027])"},{"line_number":126,"context_line":"                dns_data_db[\u0027current_dns_name\u0027] \u003d \u0027\u0027"},{"line_number":127,"context_line":"                dns_data_db[\u0027current_dns_domain\u0027] \u003d \u0027\u0027"},{"line_number":128,"context_line":"            return"},{"line_number":129,"context_line":"        if dns_name:"},{"line_number":130,"context_line":"            plugin_context.session.add(dns_db.PortDNS("},{"line_number":131,"context_line":"                port_id\u003ddb_data[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_9664b922","line":128,"range":{"start_line":105,"start_character":0,"end_line":128,"end_character":18},"updated":"2016-03-08 23:06:29.000000000","message":"Is this equivalent?  (Did I understand it right?)\n\n  is_dns_name_changed \u003d dns_name and dns_data_db[\u0027current_dns_name\u0027] !\u003d dns_name\n\n  if is_dns_name_changed or has_fixed_ips or dns_data_db[\u0027current_dns_name\u0027]:\n      dns_data_db[\u0027previous_dns_name\u0027] \u003d (dns_data_db[\u0027current_dns_name\u0027])\n      dns_data_db[\u0027previous_dns_domain\u0027] \u003d (dns_data_db[\u0027current_dns_domain\u0027])\n      if is_dns_name_changed:\n          dns_data_db[\u0027current_dns_name\u0027] \u003d dns_name\n          dns_data_db[\u0027current_dns_domain\u0027] \u003d dns_domain\n          return\n      if not has_fixed_ips and dns_data_db[\u0027current_dns_name\u0027]:\n          dns_data_db[\u0027current_dns_name\u0027] \u003d \u0027\u0027\n          dns_data_db[\u0027current_dns_domain\u0027] \u003d \u0027\u0027\n      return","commit_id":"95b77db29352d97ecba9f20691806fbccf598724"},{"author":{"_account_id":20277,"name":"James Anziano","email":"janzian@us.ibm.com","username":"janzian"},"change_message_id":"a31c786c2472cd2bb3f45f774a033296ea3b3d15","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        dns_data_db \u003d plugin_context.session.query(dns_db.PortDNS).filter_by("},{"line_number":103,"context_line":"            port_id\u003ddb_data[\u0027id\u0027]).one_or_none()"},{"line_number":104,"context_line":"        if dns_data_db:"},{"line_number":105,"context_line":"            if dns_name:"},{"line_number":106,"context_line":"                if dns_data_db[\u0027current_dns_name\u0027] !\u003d dns_name or fixed_ips:"},{"line_number":107,"context_line":"                    dns_data_db[\u0027previous_dns_name\u0027] \u003d (dns_data_db["},{"line_number":108,"context_line":"                        \u0027current_dns_name\u0027])"},{"line_number":109,"context_line":"                    dns_data_db[\u0027previous_dns_domain\u0027] \u003d (dns_data_db["},{"line_number":110,"context_line":"                        \u0027current_dns_domain\u0027])"},{"line_number":111,"context_line":"                    dns_data_db[\u0027current_dns_name\u0027] \u003d dns_name"},{"line_number":112,"context_line":"                    dns_data_db[\u0027current_dns_domain\u0027] \u003d dns_domain"},{"line_number":113,"context_line":"                return"},{"line_number":114,"context_line":"            if fixed_ips:"},{"line_number":115,"context_line":"                dns_data_db[\u0027previous_dns_name\u0027] \u003d (dns_data_db["},{"line_number":116,"context_line":"                    \u0027current_dns_name\u0027])"},{"line_number":117,"context_line":"                dns_data_db[\u0027previous_dns_domain\u0027] \u003d (dns_data_db["},{"line_number":118,"context_line":"                    \u0027current_dns_domain\u0027])"},{"line_number":119,"context_line":"                return"},{"line_number":120,"context_line":"            # If we are here, dns_name must be the empty string"},{"line_number":121,"context_line":"            if dns_data_db[\u0027current_dns_name\u0027]:"},{"line_number":122,"context_line":"                dns_data_db[\u0027previous_dns_name\u0027] \u003d (dns_data_db["},{"line_number":123,"context_line":"                    \u0027current_dns_name\u0027])"},{"line_number":124,"context_line":"                dns_data_db[\u0027previous_dns_domain\u0027] \u003d (dns_data_db["},{"line_number":125,"context_line":"                    \u0027current_dns_domain\u0027])"},{"line_number":126,"context_line":"                dns_data_db[\u0027current_dns_name\u0027] \u003d \u0027\u0027"},{"line_number":127,"context_line":"                dns_data_db[\u0027current_dns_domain\u0027] \u003d \u0027\u0027"},{"line_number":128,"context_line":"            return"},{"line_number":129,"context_line":"        if dns_name:"},{"line_number":130,"context_line":"            plugin_context.session.add(dns_db.PortDNS("},{"line_number":131,"context_line":"                port_id\u003ddb_data[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_a142440e","line":128,"range":{"start_line":105,"start_character":0,"end_line":128,"end_character":18},"in_reply_to":"5aef4532_27480d5b","updated":"2016-03-09 04:51:30.000000000","message":"Done","commit_id":"95b77db29352d97ecba9f20691806fbccf598724"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"f12b84e3836191742b1db9a4d6f414e1816a911f","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        dns_data_db \u003d plugin_context.session.query(dns_db.PortDNS).filter_by("},{"line_number":103,"context_line":"            port_id\u003ddb_data[\u0027id\u0027]).one_or_none()"},{"line_number":104,"context_line":"        if dns_data_db:"},{"line_number":105,"context_line":"            if dns_name:"},{"line_number":106,"context_line":"                if dns_data_db[\u0027current_dns_name\u0027] !\u003d dns_name or fixed_ips:"},{"line_number":107,"context_line":"                    dns_data_db[\u0027previous_dns_name\u0027] \u003d (dns_data_db["},{"line_number":108,"context_line":"                        \u0027current_dns_name\u0027])"},{"line_number":109,"context_line":"                    dns_data_db[\u0027previous_dns_domain\u0027] \u003d (dns_data_db["},{"line_number":110,"context_line":"                        \u0027current_dns_domain\u0027])"},{"line_number":111,"context_line":"                    dns_data_db[\u0027current_dns_name\u0027] \u003d dns_name"},{"line_number":112,"context_line":"                    dns_data_db[\u0027current_dns_domain\u0027] \u003d dns_domain"},{"line_number":113,"context_line":"                return"},{"line_number":114,"context_line":"            if fixed_ips:"},{"line_number":115,"context_line":"                dns_data_db[\u0027previous_dns_name\u0027] \u003d (dns_data_db["},{"line_number":116,"context_line":"                    \u0027current_dns_name\u0027])"},{"line_number":117,"context_line":"                dns_data_db[\u0027previous_dns_domain\u0027] \u003d (dns_data_db["},{"line_number":118,"context_line":"                    \u0027current_dns_domain\u0027])"},{"line_number":119,"context_line":"                return"},{"line_number":120,"context_line":"            # If we are here, dns_name must be the empty string"},{"line_number":121,"context_line":"            if dns_data_db[\u0027current_dns_name\u0027]:"},{"line_number":122,"context_line":"                dns_data_db[\u0027previous_dns_name\u0027] \u003d (dns_data_db["},{"line_number":123,"context_line":"                    \u0027current_dns_name\u0027])"},{"line_number":124,"context_line":"                dns_data_db[\u0027previous_dns_domain\u0027] \u003d (dns_data_db["},{"line_number":125,"context_line":"                    \u0027current_dns_domain\u0027])"},{"line_number":126,"context_line":"                dns_data_db[\u0027current_dns_name\u0027] \u003d \u0027\u0027"},{"line_number":127,"context_line":"                dns_data_db[\u0027current_dns_domain\u0027] \u003d \u0027\u0027"},{"line_number":128,"context_line":"            return"},{"line_number":129,"context_line":"        if dns_name:"},{"line_number":130,"context_line":"            plugin_context.session.add(dns_db.PortDNS("},{"line_number":131,"context_line":"                port_id\u003ddb_data[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_ab2dd1a9","line":128,"range":{"start_line":105,"start_character":0,"end_line":128,"end_character":18},"in_reply_to":"5aef4532_40f7cc8a","updated":"2016-03-09 17:50:28.000000000","message":"Your are right. Your simplification allowed us to see the additional case","commit_id":"95b77db29352d97ecba9f20691806fbccf598724"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"dcb72171e19812c495da333e14a74f4dd1df5d68","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        dns_data_db \u003d plugin_context.session.query(dns_db.PortDNS).filter_by("},{"line_number":103,"context_line":"            port_id\u003ddb_data[\u0027id\u0027]).one_or_none()"},{"line_number":104,"context_line":"        if dns_data_db:"},{"line_number":105,"context_line":"            if dns_name:"},{"line_number":106,"context_line":"                if dns_data_db[\u0027current_dns_name\u0027] !\u003d dns_name or fixed_ips:"},{"line_number":107,"context_line":"                    dns_data_db[\u0027previous_dns_name\u0027] \u003d (dns_data_db["},{"line_number":108,"context_line":"                        \u0027current_dns_name\u0027])"},{"line_number":109,"context_line":"                    dns_data_db[\u0027previous_dns_domain\u0027] \u003d (dns_data_db["},{"line_number":110,"context_line":"                        \u0027current_dns_domain\u0027])"},{"line_number":111,"context_line":"                    dns_data_db[\u0027current_dns_name\u0027] \u003d dns_name"},{"line_number":112,"context_line":"                    dns_data_db[\u0027current_dns_domain\u0027] \u003d dns_domain"},{"line_number":113,"context_line":"                return"},{"line_number":114,"context_line":"            if fixed_ips:"},{"line_number":115,"context_line":"                dns_data_db[\u0027previous_dns_name\u0027] \u003d (dns_data_db["},{"line_number":116,"context_line":"                    \u0027current_dns_name\u0027])"},{"line_number":117,"context_line":"                dns_data_db[\u0027previous_dns_domain\u0027] \u003d (dns_data_db["},{"line_number":118,"context_line":"                    \u0027current_dns_domain\u0027])"},{"line_number":119,"context_line":"                return"},{"line_number":120,"context_line":"            # If we are here, dns_name must be the empty string"},{"line_number":121,"context_line":"            if dns_data_db[\u0027current_dns_name\u0027]:"},{"line_number":122,"context_line":"                dns_data_db[\u0027previous_dns_name\u0027] \u003d (dns_data_db["},{"line_number":123,"context_line":"                    \u0027current_dns_name\u0027])"},{"line_number":124,"context_line":"                dns_data_db[\u0027previous_dns_domain\u0027] \u003d (dns_data_db["},{"line_number":125,"context_line":"                    \u0027current_dns_domain\u0027])"},{"line_number":126,"context_line":"                dns_data_db[\u0027current_dns_name\u0027] \u003d \u0027\u0027"},{"line_number":127,"context_line":"                dns_data_db[\u0027current_dns_domain\u0027] \u003d \u0027\u0027"},{"line_number":128,"context_line":"            return"},{"line_number":129,"context_line":"        if dns_name:"},{"line_number":130,"context_line":"            plugin_context.session.add(dns_db.PortDNS("},{"line_number":131,"context_line":"                port_id\u003ddb_data[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_27480d5b","line":128,"range":{"start_line":105,"start_character":0,"end_line":128,"end_character":18},"in_reply_to":"5aef4532_9664b922","updated":"2016-03-09 04:25:03.000000000","message":"Great simplification. Thanks!. But it is missing the case where we the user is clearing dns_name and and changing ip addresses and I can simplify it a little more. Building on Carl\u0027s suggestion:\n \nis_dns_name_changed \u003d (dns_name or dns_name \u003d\u003d \u0027\u0027) and dns_data_db[\u0027current_dns_name\u0027] !\u003d dns_name\n\nif is_dns_name_changed or (has_fixed_ips and dns_data_db[\u0027current_dns_name\u0027]):\n      dns_data_db[\u0027previous_dns_name\u0027] \u003d (dns_data_db[\u0027current_dns_name\u0027])\n      dns_data_db[\u0027previous_dns_domain\u0027] \u003d (dns_data_db[\u0027current_dns_domain\u0027])\n      if is_dns_name_changed:\n          dns_data_db[\u0027current_dns_name\u0027] \u003d dns_name\n          if dns_name:\n              dns_data_db[\u0027current_dns_domain\u0027] \u003d dns_domain\n          else:\n              dns_data_db[\u0027current_dns_domain\u0027] \u003d \u0027\u0027\nreturn","commit_id":"95b77db29352d97ecba9f20691806fbccf598724"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"56bb1ba2e9ddc863672477f05cd6b2a297f738ef","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        dns_data_db \u003d plugin_context.session.query(dns_db.PortDNS).filter_by("},{"line_number":103,"context_line":"            port_id\u003ddb_data[\u0027id\u0027]).one_or_none()"},{"line_number":104,"context_line":"        if dns_data_db:"},{"line_number":105,"context_line":"            if dns_name:"},{"line_number":106,"context_line":"                if dns_data_db[\u0027current_dns_name\u0027] !\u003d dns_name or fixed_ips:"},{"line_number":107,"context_line":"                    dns_data_db[\u0027previous_dns_name\u0027] \u003d (dns_data_db["},{"line_number":108,"context_line":"                        \u0027current_dns_name\u0027])"},{"line_number":109,"context_line":"                    dns_data_db[\u0027previous_dns_domain\u0027] \u003d (dns_data_db["},{"line_number":110,"context_line":"                        \u0027current_dns_domain\u0027])"},{"line_number":111,"context_line":"                    dns_data_db[\u0027current_dns_name\u0027] \u003d dns_name"},{"line_number":112,"context_line":"                    dns_data_db[\u0027current_dns_domain\u0027] \u003d dns_domain"},{"line_number":113,"context_line":"                return"},{"line_number":114,"context_line":"            if fixed_ips:"},{"line_number":115,"context_line":"                dns_data_db[\u0027previous_dns_name\u0027] \u003d (dns_data_db["},{"line_number":116,"context_line":"                    \u0027current_dns_name\u0027])"},{"line_number":117,"context_line":"                dns_data_db[\u0027previous_dns_domain\u0027] \u003d (dns_data_db["},{"line_number":118,"context_line":"                    \u0027current_dns_domain\u0027])"},{"line_number":119,"context_line":"                return"},{"line_number":120,"context_line":"            # If we are here, dns_name must be the empty string"},{"line_number":121,"context_line":"            if dns_data_db[\u0027current_dns_name\u0027]:"},{"line_number":122,"context_line":"                dns_data_db[\u0027previous_dns_name\u0027] \u003d (dns_data_db["},{"line_number":123,"context_line":"                    \u0027current_dns_name\u0027])"},{"line_number":124,"context_line":"                dns_data_db[\u0027previous_dns_domain\u0027] \u003d (dns_data_db["},{"line_number":125,"context_line":"                    \u0027current_dns_domain\u0027])"},{"line_number":126,"context_line":"                dns_data_db[\u0027current_dns_name\u0027] \u003d \u0027\u0027"},{"line_number":127,"context_line":"                dns_data_db[\u0027current_dns_domain\u0027] \u003d \u0027\u0027"},{"line_number":128,"context_line":"            return"},{"line_number":129,"context_line":"        if dns_name:"},{"line_number":130,"context_line":"            plugin_context.session.add(dns_db.PortDNS("},{"line_number":131,"context_line":"                port_id\u003ddb_data[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_40f7cc8a","line":128,"range":{"start_line":105,"start_character":0,"end_line":128,"end_character":18},"in_reply_to":"5aef4532_a142440e","updated":"2016-03-09 17:34:10.000000000","message":"Good catch Miguel.  The original I was working with also seems to have been missing that case.","commit_id":"95b77db29352d97ecba9f20691806fbccf598724"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"f7f3597d9749f74ce893b68e1d8e01736d552fc4","unresolved":false,"context_lines":[{"line_number":285,"context_line":"    original_port \u003d kwargs.get(\u0027original_port\u0027)"},{"line_number":286,"context_line":"    if not original_port:"},{"line_number":287,"context_line":"        return"},{"line_number":288,"context_line":"    original_ip \u003d [ip[\u0027ip_address\u0027] for ip in original_port[\u0027fixed_ips\u0027]]"},{"line_number":289,"context_line":"    updated_ip \u003d [ip[\u0027ip_address\u0027] for ip in updated_port[\u0027fixed_ips\u0027]]"},{"line_number":290,"context_line":"    if (updated_port[dns.DNSNAME] \u003d\u003d original_port[dns.DNSNAME] and"},{"line_number":291,"context_line":"            set(original_ip) \u003d\u003d set(updated_ip)):"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_f6737de5","line":288,"range":{"start_line":288,"start_character":4,"end_line":288,"end_character":15},"updated":"2016-03-08 23:06:29.000000000","message":"*original_ips or original_ip_list to make it clear it is a container of multiple ips.","commit_id":"95b77db29352d97ecba9f20691806fbccf598724"},{"author":{"_account_id":20277,"name":"James Anziano","email":"janzian@us.ibm.com","username":"janzian"},"change_message_id":"a31c786c2472cd2bb3f45f774a033296ea3b3d15","unresolved":false,"context_lines":[{"line_number":285,"context_line":"    original_port \u003d kwargs.get(\u0027original_port\u0027)"},{"line_number":286,"context_line":"    if not original_port:"},{"line_number":287,"context_line":"        return"},{"line_number":288,"context_line":"    original_ip \u003d [ip[\u0027ip_address\u0027] for ip in original_port[\u0027fixed_ips\u0027]]"},{"line_number":289,"context_line":"    updated_ip \u003d [ip[\u0027ip_address\u0027] for ip in updated_port[\u0027fixed_ips\u0027]]"},{"line_number":290,"context_line":"    if (updated_port[dns.DNSNAME] \u003d\u003d original_port[dns.DNSNAME] and"},{"line_number":291,"context_line":"            set(original_ip) \u003d\u003d set(updated_ip)):"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_81458818","line":288,"range":{"start_line":288,"start_character":4,"end_line":288,"end_character":15},"in_reply_to":"5aef4532_f6737de5","updated":"2016-03-09 04:51:30.000000000","message":"Done","commit_id":"95b77db29352d97ecba9f20691806fbccf598724"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"f7f3597d9749f74ce893b68e1d8e01736d552fc4","unresolved":false,"context_lines":[{"line_number":286,"context_line":"    if not original_port:"},{"line_number":287,"context_line":"        return"},{"line_number":288,"context_line":"    original_ip \u003d [ip[\u0027ip_address\u0027] for ip in original_port[\u0027fixed_ips\u0027]]"},{"line_number":289,"context_line":"    updated_ip \u003d [ip[\u0027ip_address\u0027] for ip in updated_port[\u0027fixed_ips\u0027]]"},{"line_number":290,"context_line":"    if (updated_port[dns.DNSNAME] \u003d\u003d original_port[dns.DNSNAME] and"},{"line_number":291,"context_line":"            set(original_ip) \u003d\u003d set(updated_ip)):"},{"line_number":292,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_964b1987","line":289,"range":{"start_line":289,"start_character":4,"end_line":289,"end_character":14},"updated":"2016-03-08 23:06:29.000000000","message":"*updated_ips","commit_id":"95b77db29352d97ecba9f20691806fbccf598724"},{"author":{"_account_id":20277,"name":"James Anziano","email":"janzian@us.ibm.com","username":"janzian"},"change_message_id":"a31c786c2472cd2bb3f45f774a033296ea3b3d15","unresolved":false,"context_lines":[{"line_number":286,"context_line":"    if not original_port:"},{"line_number":287,"context_line":"        return"},{"line_number":288,"context_line":"    original_ip \u003d [ip[\u0027ip_address\u0027] for ip in original_port[\u0027fixed_ips\u0027]]"},{"line_number":289,"context_line":"    updated_ip \u003d [ip[\u0027ip_address\u0027] for ip in updated_port[\u0027fixed_ips\u0027]]"},{"line_number":290,"context_line":"    if (updated_port[dns.DNSNAME] \u003d\u003d original_port[dns.DNSNAME] and"},{"line_number":291,"context_line":"            set(original_ip) \u003d\u003d set(updated_ip)):"},{"line_number":292,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_e14c4c44","line":289,"range":{"start_line":289,"start_character":4,"end_line":289,"end_character":14},"in_reply_to":"5aef4532_964b1987","updated":"2016-03-09 04:51:30.000000000","message":"Done","commit_id":"95b77db29352d97ecba9f20691806fbccf598724"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"f7f3597d9749f74ce893b68e1d8e01736d552fc4","unresolved":false,"context_lines":[{"line_number":288,"context_line":"    original_ip \u003d [ip[\u0027ip_address\u0027] for ip in original_port[\u0027fixed_ips\u0027]]"},{"line_number":289,"context_line":"    updated_ip \u003d [ip[\u0027ip_address\u0027] for ip in updated_port[\u0027fixed_ips\u0027]]"},{"line_number":290,"context_line":"    if (updated_port[dns.DNSNAME] \u003d\u003d original_port[dns.DNSNAME] and"},{"line_number":291,"context_line":"            set(original_ip) \u003d\u003d set(updated_ip)):"},{"line_number":292,"context_line":"        return"},{"line_number":293,"context_line":"    dns_data_db \u003d context.session.query(dns_db.PortDNS).filter_by("},{"line_number":294,"context_line":"        port_id\u003dupdated_port[\u0027id\u0027]).one_or_none()"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_764e4d97","line":291,"range":{"start_line":291,"start_character":16,"end_line":291,"end_character":27},"updated":"2016-03-08 23:06:29.000000000","message":"Consider creating sets up front and convert to a list for the external drivers.    It might help with my next comment...","commit_id":"95b77db29352d97ecba9f20691806fbccf598724"},{"author":{"_account_id":20277,"name":"James Anziano","email":"janzian@us.ibm.com","username":"janzian"},"change_message_id":"a31c786c2472cd2bb3f45f774a033296ea3b3d15","unresolved":false,"context_lines":[{"line_number":288,"context_line":"    original_ip \u003d [ip[\u0027ip_address\u0027] for ip in original_port[\u0027fixed_ips\u0027]]"},{"line_number":289,"context_line":"    updated_ip \u003d [ip[\u0027ip_address\u0027] for ip in updated_port[\u0027fixed_ips\u0027]]"},{"line_number":290,"context_line":"    if (updated_port[dns.DNSNAME] \u003d\u003d original_port[dns.DNSNAME] and"},{"line_number":291,"context_line":"            set(original_ip) \u003d\u003d set(updated_ip)):"},{"line_number":292,"context_line":"        return"},{"line_number":293,"context_line":"    dns_data_db \u003d context.session.query(dns_db.PortDNS).filter_by("},{"line_number":294,"context_line":"        port_id\u003dupdated_port[\u0027id\u0027]).one_or_none()"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_215754cf","line":291,"range":{"start_line":291,"start_character":16,"end_line":291,"end_character":27},"in_reply_to":"5aef4532_0a1d15bd","updated":"2016-03-09 04:51:30.000000000","message":"I agree with Miguel. Seeing as this is the only set operation for now, I think it makes the most sense to keep it in the format other modules will expect.","commit_id":"95b77db29352d97ecba9f20691806fbccf598724"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"dcb72171e19812c495da333e14a74f4dd1df5d68","unresolved":false,"context_lines":[{"line_number":288,"context_line":"    original_ip \u003d [ip[\u0027ip_address\u0027] for ip in original_port[\u0027fixed_ips\u0027]]"},{"line_number":289,"context_line":"    updated_ip \u003d [ip[\u0027ip_address\u0027] for ip in updated_port[\u0027fixed_ips\u0027]]"},{"line_number":290,"context_line":"    if (updated_port[dns.DNSNAME] \u003d\u003d original_port[dns.DNSNAME] and"},{"line_number":291,"context_line":"            set(original_ip) \u003d\u003d set(updated_ip)):"},{"line_number":292,"context_line":"        return"},{"line_number":293,"context_line":"    dns_data_db \u003d context.session.query(dns_db.PortDNS).filter_by("},{"line_number":294,"context_line":"        port_id\u003dupdated_port[\u0027id\u0027]).one_or_none()"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_0a1d15bd","line":291,"range":{"start_line":291,"start_character":16,"end_line":291,"end_character":27},"in_reply_to":"5aef4532_764e4d97","updated":"2016-03-09 04:25:03.000000000","message":"Given my comment to line 298, this doesn\u0027t hurt, but it doesn\u0027t pay off in my opinion","commit_id":"95b77db29352d97ecba9f20691806fbccf598724"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"dcb72171e19812c495da333e14a74f4dd1df5d68","unresolved":false,"context_lines":[{"line_number":289,"context_line":"    updated_ip \u003d [ip[\u0027ip_address\u0027] for ip in updated_port[\u0027fixed_ips\u0027]]"},{"line_number":290,"context_line":"    if (updated_port[dns.DNSNAME] \u003d\u003d original_port[dns.DNSNAME] and"},{"line_number":291,"context_line":"            set(original_ip) \u003d\u003d set(updated_ip)):"},{"line_number":292,"context_line":"        return"},{"line_number":293,"context_line":"    dns_data_db \u003d context.session.query(dns_db.PortDNS).filter_by("},{"line_number":294,"context_line":"        port_id\u003dupdated_port[\u0027id\u0027]).one_or_none()"},{"line_number":295,"context_line":"    if not dns_data_db:"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_165a604f","line":292,"updated":"2016-03-09 04:25:03.000000000","message":"After this line, add the following:\n\nif (updated_port[dns.DNSNAME] \u003d\u003d original_port[dns.DNSNAME] and not original_port[dns.DNSNAME]):\n    return","commit_id":"95b77db29352d97ecba9f20691806fbccf598724"},{"author":{"_account_id":20277,"name":"James Anziano","email":"janzian@us.ibm.com","username":"janzian"},"change_message_id":"a31c786c2472cd2bb3f45f774a033296ea3b3d15","unresolved":false,"context_lines":[{"line_number":289,"context_line":"    updated_ip \u003d [ip[\u0027ip_address\u0027] for ip in updated_port[\u0027fixed_ips\u0027]]"},{"line_number":290,"context_line":"    if (updated_port[dns.DNSNAME] \u003d\u003d original_port[dns.DNSNAME] and"},{"line_number":291,"context_line":"            set(original_ip) \u003d\u003d set(updated_ip)):"},{"line_number":292,"context_line":"        return"},{"line_number":293,"context_line":"    dns_data_db \u003d context.session.query(dns_db.PortDNS).filter_by("},{"line_number":294,"context_line":"        port_id\u003dupdated_port[\u0027id\u0027]).one_or_none()"},{"line_number":295,"context_line":"    if not dns_data_db:"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_015218dd","line":292,"in_reply_to":"5aef4532_165a604f","updated":"2016-03-09 04:51:30.000000000","message":"Done","commit_id":"95b77db29352d97ecba9f20691806fbccf598724"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"f7f3597d9749f74ce893b68e1d8e01736d552fc4","unresolved":false,"context_lines":[{"line_number":295,"context_line":"    if not dns_data_db:"},{"line_number":296,"context_line":"        return"},{"line_number":297,"context_line":"    if dns_data_db[\u0027previous_dns_name\u0027]:"},{"line_number":298,"context_line":"        _remove_data_from_external_dns_service("},{"line_number":299,"context_line":"            context, dns_driver, dns_data_db[\u0027previous_dns_domain\u0027],"},{"line_number":300,"context_line":"            dns_data_db[\u0027previous_dns_name\u0027], original_ip)"},{"line_number":301,"context_line":"    if dns_data_db[\u0027current_dns_name\u0027]:"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_b63f35d5","line":298,"range":{"start_line":298,"start_character":8,"end_line":298,"end_character":46},"updated":"2016-03-08 23:06:29.000000000","message":"If the dns_name has not changed, we probably should exclude the common IPs from each set.\n\n  remove_ips \u003d original_ips - updated_ips\n  add_ips \u003d updated_ips - original_ips","commit_id":"95b77db29352d97ecba9f20691806fbccf598724"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"56bb1ba2e9ddc863672477f05cd6b2a297f738ef","unresolved":false,"context_lines":[{"line_number":295,"context_line":"    if not dns_data_db:"},{"line_number":296,"context_line":"        return"},{"line_number":297,"context_line":"    if dns_data_db[\u0027previous_dns_name\u0027]:"},{"line_number":298,"context_line":"        _remove_data_from_external_dns_service("},{"line_number":299,"context_line":"            context, dns_driver, dns_data_db[\u0027previous_dns_domain\u0027],"},{"line_number":300,"context_line":"            dns_data_db[\u0027previous_dns_name\u0027], original_ip)"},{"line_number":301,"context_line":"    if dns_data_db[\u0027current_dns_name\u0027]:"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_c053dc15","line":298,"range":{"start_line":298,"start_character":8,"end_line":298,"end_character":46},"in_reply_to":"5aef4532_47bb9927","updated":"2016-03-09 17:34:10.000000000","message":"Ah, that makes sense.  Thanks for the clarification.","commit_id":"95b77db29352d97ecba9f20691806fbccf598724"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"dcb72171e19812c495da333e14a74f4dd1df5d68","unresolved":false,"context_lines":[{"line_number":295,"context_line":"    if not dns_data_db:"},{"line_number":296,"context_line":"        return"},{"line_number":297,"context_line":"    if dns_data_db[\u0027previous_dns_name\u0027]:"},{"line_number":298,"context_line":"        _remove_data_from_external_dns_service("},{"line_number":299,"context_line":"            context, dns_driver, dns_data_db[\u0027previous_dns_domain\u0027],"},{"line_number":300,"context_line":"            dns_data_db[\u0027previous_dns_name\u0027], original_ip)"},{"line_number":301,"context_line":"    if dns_data_db[\u0027current_dns_name\u0027]:"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_47bb9927","line":298,"range":{"start_line":298,"start_character":8,"end_line":298,"end_character":46},"in_reply_to":"5aef4532_b63f35d5","updated":"2016-03-09 04:25:03.000000000","message":"No, please don\u0027t do this. In the Designate interface we don\u0027t create a record for each ip address. We create one \u0027A\u0027 recordset for all the ipv4 addresses and one \u0027AAAA\u0027 recorset for all the ipv6 addresses. So we need to remove each recordset as a whole","commit_id":"95b77db29352d97ecba9f20691806fbccf598724"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"cdddae73f7fb4fe0889e3769c96b1108d1b4662c","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        dns_data_db \u003d plugin_context.session.query(dns_db.PortDNS).filter_by("},{"line_number":103,"context_line":"            port_id\u003ddb_data[\u0027id\u0027]).one_or_none()"},{"line_number":104,"context_line":"        if dns_data_db:"},{"line_number":105,"context_line":"            is_dns_name_changed \u003d (dns_name or dns_name \u003d\u003d \u0027\u0027) and\\"},{"line_number":106,"context_line":"                    dns_data_db[\u0027current_dns_name\u0027] !\u003d dns_name"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"            if is_dns_name_changed or (has_fixed_ips and"}],"source_content_type":"text/x-python","patch_set":5,"id":"5aef4532_80e2742d","line":105,"range":{"start_line":105,"start_character":35,"end_line":105,"end_character":61},"updated":"2016-03-09 17:35:13.000000000","message":"\"dns_name is not None\", maybe?  Or, attributes.is_attr_specified(dns_name) if ATTR_NOT_SPECIFIED is a possibility.","commit_id":"a682380c7eac6244e90904fdd8c38eaa4b524943"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"cdddae73f7fb4fe0889e3769c96b1108d1b4662c","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        dns_data_db \u003d plugin_context.session.query(dns_db.PortDNS).filter_by("},{"line_number":103,"context_line":"            port_id\u003ddb_data[\u0027id\u0027]).one_or_none()"},{"line_number":104,"context_line":"        if dns_data_db:"},{"line_number":105,"context_line":"            is_dns_name_changed \u003d (dns_name or dns_name \u003d\u003d \u0027\u0027) and\\"},{"line_number":106,"context_line":"                    dns_data_db[\u0027current_dns_name\u0027] !\u003d dns_name"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"            if is_dns_name_changed or (has_fixed_ips and"}],"source_content_type":"text/x-python","patch_set":5,"id":"5aef4532_20072019","line":105,"range":{"start_line":105,"start_character":66,"end_line":105,"end_character":67},"updated":"2016-03-09 17:35:13.000000000","message":"We don\u0027t use \\ to continue lines except in some specific cases.  It sounds like a nit but someone went through and took all of these out and I don\u0027t really want to see that happen again.  :)\n\nUse parenthesis to allow line continuation.","commit_id":"a682380c7eac6244e90904fdd8c38eaa4b524943"},{"author":{"_account_id":20277,"name":"James Anziano","email":"janzian@us.ibm.com","username":"janzian"},"change_message_id":"cbee5294824a35a6d789b6bdba37c0491f52a2dd","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        dns_data_db \u003d plugin_context.session.query(dns_db.PortDNS).filter_by("},{"line_number":103,"context_line":"            port_id\u003ddb_data[\u0027id\u0027]).one_or_none()"},{"line_number":104,"context_line":"        if dns_data_db:"},{"line_number":105,"context_line":"            is_dns_name_changed \u003d (dns_name or dns_name \u003d\u003d \u0027\u0027) and\\"},{"line_number":106,"context_line":"                    dns_data_db[\u0027current_dns_name\u0027] !\u003d dns_name"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"            if is_dns_name_changed or (has_fixed_ips and"}],"source_content_type":"text/x-python","patch_set":5,"id":"5aef4532_2b39c1f2","line":105,"range":{"start_line":105,"start_character":66,"end_line":105,"end_character":67},"in_reply_to":"5aef4532_20072019","updated":"2016-03-09 17:50:30.000000000","message":"Done. Thanks for letting me know :)","commit_id":"a682380c7eac6244e90904fdd8c38eaa4b524943"},{"author":{"_account_id":20277,"name":"James Anziano","email":"janzian@us.ibm.com","username":"janzian"},"change_message_id":"cbee5294824a35a6d789b6bdba37c0491f52a2dd","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        dns_data_db \u003d plugin_context.session.query(dns_db.PortDNS).filter_by("},{"line_number":103,"context_line":"            port_id\u003ddb_data[\u0027id\u0027]).one_or_none()"},{"line_number":104,"context_line":"        if dns_data_db:"},{"line_number":105,"context_line":"            is_dns_name_changed \u003d (dns_name or dns_name \u003d\u003d \u0027\u0027) and\\"},{"line_number":106,"context_line":"                    dns_data_db[\u0027current_dns_name\u0027] !\u003d dns_name"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"            if is_dns_name_changed or (has_fixed_ips and"}],"source_content_type":"text/x-python","patch_set":5,"id":"5aef4532_6b2749ca","line":105,"range":{"start_line":105,"start_character":35,"end_line":105,"end_character":61},"in_reply_to":"5aef4532_80e2742d","updated":"2016-03-09 17:50:30.000000000","message":"Done","commit_id":"a682380c7eac6244e90904fdd8c38eaa4b524943"}]}
