)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":22524,"name":"Mohit Malik","email":"mohit.malik@intel.com","username":"mmalik4"},"change_message_id":"7dcda54a2bb095b9a8a32221328099b4a2c0aed3","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add OVO for dns Objects"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch will introduce ovo for PortDNS, NetworkDNS and"},{"line_number":10,"context_line":"FloatingipDNS. It also integrates the ovo use for PortDNS"},{"line_number":11,"context_line":"and NetworkDNS"},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"1a95cdbc_0a954ce3","line":9,"updated":"2016-10-04 23:51:50.000000000","message":"fix the commit message - PortDNS is already done in another patch","commit_id":"d2d0ccee4b3a6243d362c500bd36c7357baa1c34"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"9b72ef056d5f21446ebf5f3f07ec8156a8e08b84","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add OVO for dns Objects"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch will introduce ovo for PortDNS, NetworkDNS and"},{"line_number":10,"context_line":"FloatingipDNS. It also integrates the ovo use for PortDNS"},{"line_number":11,"context_line":"and NetworkDNS"},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"fa6399be_4744f4b5","line":9,"range":{"start_line":9,"start_character":43,"end_line":9,"end_character":53},"updated":"2016-10-14 15:55:25.000000000","message":"s/NetworkDNS/NetworkDNSDomain","commit_id":"88a09eca459d2ccb6dc821c0eb3bb341d0ea86c7"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"9b72ef056d5f21446ebf5f3f07ec8156a8e08b84","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch will introduce ovo for PortDNS, NetworkDNS and"},{"line_number":10,"context_line":"FloatingipDNS. It also integrates the ovo use for PortDNS"},{"line_number":11,"context_line":"and NetworkDNS"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Co-Authored-By: Brandon Logan \u003cbrandon.logan@rackspace.com\u003e"},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"fa6399be_a70b107c","line":11,"range":{"start_line":11,"start_character":4,"end_line":11,"end_character":14},"updated":"2016-10-14 15:55:25.000000000","message":"s/NetworkDNS/NetworkDNSDomain","commit_id":"88a09eca459d2ccb6dc821c0eb3bb341d0ea86c7"}],"neutron/db/dns_db.py":[{"author":{"_account_id":22524,"name":"Mohit Malik","email":"mohit.malik@intel.com","username":"mmalik4"},"change_message_id":"29f49f0a8b0ca2ef77c3036d4f4ed9a0a3996e66","unresolved":false,"context_lines":[{"line_number":203,"context_line":"            raise n_exc.BadRequest(resource\u003d\u0027floatingip\u0027, msg\u003dmsg)"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"    def _get_internal_port_dns_data(self, context, floatingip_data):"},{"line_number":206,"context_line":"        port_dns \u003d dns_obj.PortDNS.get_object("},{"line_number":207,"context_line":"            context,"},{"line_number":208,"context_line":"            port_id\u003dfloatingip_data[\u0027port_id\u0027])"},{"line_number":209,"context_line":"        if not (port_dns and port_dns[\u0027dns_name\u0027]):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a95cdbc_01529c13","line":206,"updated":"2016-10-04 19:45:46.000000000","message":"Confused here: Isn\u0027t PortDNS already merged in to objects/port.py ? Also I dont see you have PortDNS in objects/dns.py ?","commit_id":"d57538c11da3a22b590ff99953168ffd02592464"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"785c46eaf1b36b00597bd82403bbf64591d4a4c1","unresolved":false,"context_lines":[{"line_number":203,"context_line":"            raise n_exc.BadRequest(resource\u003d\u0027floatingip\u0027, msg\u003dmsg)"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"    def _get_internal_port_dns_data(self, context, floatingip_data):"},{"line_number":206,"context_line":"        port_dns \u003d dns_obj.PortDNS.get_object("},{"line_number":207,"context_line":"            context,"},{"line_number":208,"context_line":"            port_id\u003dfloatingip_data[\u0027port_id\u0027])"},{"line_number":209,"context_line":"        if not (port_dns and port_dns[\u0027dns_name\u0027]):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a95cdbc_41e2e404","line":206,"in_reply_to":"1a95cdbc_01529c13","updated":"2016-10-04 19:52:41.000000000","message":"if you followed the introduction port ovo patch, I initially added PortDNS in (object definition + OVO intro) in the same patch but upgrades team decided to consolidate all port related object into one file so object definition is there but its use of ovo is done in this patch.","commit_id":"d57538c11da3a22b590ff99953168ffd02592464"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"ad0663d16674888c44e61c0ab33693b464c71fa9","unresolved":false,"context_lines":[{"line_number":203,"context_line":"            raise n_exc.BadRequest(resource\u003d\u0027floatingip\u0027, msg\u003dmsg)"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"    def _get_internal_port_dns_data(self, context, floatingip_data):"},{"line_number":206,"context_line":"        port_dns \u003d dns_obj.PortDNS.get_object("},{"line_number":207,"context_line":"            context,"},{"line_number":208,"context_line":"            port_id\u003dfloatingip_data[\u0027port_id\u0027])"},{"line_number":209,"context_line":"        if not (port_dns and port_dns[\u0027dns_name\u0027]):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a95cdbc_e74ce078","line":206,"in_reply_to":"1a95cdbc_017e1ce4","updated":"2016-10-04 20:42:24.000000000","message":"I know what is going on here. There is a patchset in flight with unit tests for floating ips with dns functionality: https://review.openstack.org/#/c/301809/. Those unit tests check this path. We need to fix this","commit_id":"d57538c11da3a22b590ff99953168ffd02592464"},{"author":{"_account_id":22524,"name":"Mohit Malik","email":"mohit.malik@intel.com","username":"mmalik4"},"change_message_id":"841192832a41d14421a99d346195401b51fd3713","unresolved":false,"context_lines":[{"line_number":203,"context_line":"            raise n_exc.BadRequest(resource\u003d\u0027floatingip\u0027, msg\u003dmsg)"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"    def _get_internal_port_dns_data(self, context, floatingip_data):"},{"line_number":206,"context_line":"        port_dns \u003d dns_obj.PortDNS.get_object("},{"line_number":207,"context_line":"            context,"},{"line_number":208,"context_line":"            port_id\u003dfloatingip_data[\u0027port_id\u0027])"},{"line_number":209,"context_line":"        if not (port_dns and port_dns[\u0027dns_name\u0027]):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a95cdbc_61a3609f","line":206,"in_reply_to":"1a95cdbc_41e2e404","updated":"2016-10-04 19:56:30.000000000","message":"okay but then shouldnt you be using it this way -\u003e port_obj.PortDNS is my question ?","commit_id":"d57538c11da3a22b590ff99953168ffd02592464"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"7c48af89b9f14229a28485e592a4081c7922adc6","unresolved":false,"context_lines":[{"line_number":203,"context_line":"            raise n_exc.BadRequest(resource\u003d\u0027floatingip\u0027, msg\u003dmsg)"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"    def _get_internal_port_dns_data(self, context, floatingip_data):"},{"line_number":206,"context_line":"        port_dns \u003d dns_obj.PortDNS.get_object("},{"line_number":207,"context_line":"            context,"},{"line_number":208,"context_line":"            port_id\u003dfloatingip_data[\u0027port_id\u0027])"},{"line_number":209,"context_line":"        if not (port_dns and port_dns[\u0027dns_name\u0027]):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a95cdbc_017e1ce4","line":206,"in_reply_to":"1a95cdbc_61a3609f","updated":"2016-10-04 20:02:26.000000000","message":"may be it is because of messing while cherry picking but I wonder how UT passed","commit_id":"d57538c11da3a22b590ff99953168ffd02592464"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"6e29c192b6092d0ccf056992390ef49a7d319b68","unresolved":false,"context_lines":[{"line_number":203,"context_line":"            raise n_exc.BadRequest(resource\u003d\u0027floatingip\u0027, msg\u003dmsg)"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"    def _get_internal_port_dns_data(self, context, floatingip_data):"},{"line_number":206,"context_line":"        port_dns \u003d dns_obj.PortDNS.get_object("},{"line_number":207,"context_line":"            context,"},{"line_number":208,"context_line":"            port_id\u003dfloatingip_data[\u0027port_id\u0027])"},{"line_number":209,"context_line":"        if not (port_dns and port_dns[\u0027dns_name\u0027]):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a95cdbc_a71ad815","line":206,"in_reply_to":"1a95cdbc_e74ce078","updated":"2016-10-04 20:48:40.000000000","message":"fixed !!!","commit_id":"d57538c11da3a22b590ff99953168ffd02592464"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"9b72ef056d5f21446ebf5f3f07ec8156a8e08b84","unresolved":false,"context_lines":[{"line_number":205,"context_line":"    def _get_internal_port_dns_data(self, context, floatingip_data):"},{"line_number":206,"context_line":"        port_dns \u003d port_obj.PortDNS.get_object("},{"line_number":207,"context_line":"            context,"},{"line_number":208,"context_line":"            port_id\u003dfloatingip_data[\u0027port_id\u0027])"},{"line_number":209,"context_line":"        if not (port_dns and port_dns[\u0027dns_name\u0027]):"},{"line_number":210,"context_line":"            return None, None"},{"line_number":211,"context_line":"        net_dns \u003d context.session.query("}],"source_content_type":"text/x-python","patch_set":8,"id":"fa6399be_2720e0f6","line":208,"range":{"start_line":208,"start_character":12,"end_line":208,"end_character":47},"updated":"2016-10-14 15:55:25.000000000","message":"nit: this line can fit in the previous line","commit_id":"88a09eca459d2ccb6dc821c0eb3bb341d0ea86c7"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"c816c6ec6eb9673e31669b7d392823e456e9e6cb","unresolved":false,"context_lines":[{"line_number":205,"context_line":"    def _get_internal_port_dns_data(self, context, floatingip_data):"},{"line_number":206,"context_line":"        port_dns \u003d port_obj.PortDNS.get_object("},{"line_number":207,"context_line":"            context,"},{"line_number":208,"context_line":"            port_id\u003dfloatingip_data[\u0027port_id\u0027])"},{"line_number":209,"context_line":"        if not (port_dns and port_dns[\u0027dns_name\u0027]):"},{"line_number":210,"context_line":"            return None, None"},{"line_number":211,"context_line":"        net_dns \u003d context.session.query("}],"source_content_type":"text/x-python","patch_set":8,"id":"fa6399be_072f4ba1","line":208,"range":{"start_line":208,"start_character":12,"end_line":208,"end_character":47},"in_reply_to":"fa6399be_2720e0f6","updated":"2016-10-15 01:18:16.000000000","message":"Done","commit_id":"88a09eca459d2ccb6dc821c0eb3bb341d0ea86c7"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"9b72ef056d5f21446ebf5f3f07ec8156a8e08b84","unresolved":false,"context_lines":[{"line_number":208,"context_line":"            port_id\u003dfloatingip_data[\u0027port_id\u0027])"},{"line_number":209,"context_line":"        if not (port_dns and port_dns[\u0027dns_name\u0027]):"},{"line_number":210,"context_line":"            return None, None"},{"line_number":211,"context_line":"        net_dns \u003d context.session.query("},{"line_number":212,"context_line":"            dns_models.NetworkDNSDomain).join("},{"line_number":213,"context_line":"                models_v2.Port, dns_models.NetworkDNSDomain.network_id \u003d\u003d"},{"line_number":214,"context_line":"                models_v2.Port.network_id).filter_by("},{"line_number":215,"context_line":"                    id\u003dfloatingip_data[\u0027port_id\u0027]).one_or_none()"},{"line_number":216,"context_line":"        if not net_dns:"},{"line_number":217,"context_line":"            return port_dns[\u0027dns_name\u0027], None"},{"line_number":218,"context_line":"        return port_dns[\u0027dns_name\u0027], net_dns[\u0027dns_domain\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa6399be_190b442b","line":215,"range":{"start_line":211,"start_character":8,"end_line":215,"end_character":64},"updated":"2016-10-14 15:55:25.000000000","message":"Do you have plans for this?","commit_id":"88a09eca459d2ccb6dc821c0eb3bb341d0ea86c7"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"c816c6ec6eb9673e31669b7d392823e456e9e6cb","unresolved":false,"context_lines":[{"line_number":208,"context_line":"            port_id\u003dfloatingip_data[\u0027port_id\u0027])"},{"line_number":209,"context_line":"        if not (port_dns and port_dns[\u0027dns_name\u0027]):"},{"line_number":210,"context_line":"            return None, None"},{"line_number":211,"context_line":"        net_dns \u003d context.session.query("},{"line_number":212,"context_line":"            dns_models.NetworkDNSDomain).join("},{"line_number":213,"context_line":"                models_v2.Port, dns_models.NetworkDNSDomain.network_id \u003d\u003d"},{"line_number":214,"context_line":"                models_v2.Port.network_id).filter_by("},{"line_number":215,"context_line":"                    id\u003dfloatingip_data[\u0027port_id\u0027]).one_or_none()"},{"line_number":216,"context_line":"        if not net_dns:"},{"line_number":217,"context_line":"            return port_dns[\u0027dns_name\u0027], None"},{"line_number":218,"context_line":"        return port_dns[\u0027dns_name\u0027], net_dns[\u0027dns_domain\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa6399be_7c7c2eec","line":215,"range":{"start_line":211,"start_character":8,"end_line":215,"end_character":64},"in_reply_to":"fa6399be_190b442b","updated":"2016-10-15 01:18:16.000000000","message":"not in this patch, but once the solution is finalized, I\u0027ll update it","commit_id":"88a09eca459d2ccb6dc821c0eb3bb341d0ea86c7"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"3810db0a85065ab30f452741768b5262d8bc6767","unresolved":false,"context_lines":[{"line_number":207,"context_line":"            context, port_id\u003dfloatingip_data[\u0027port_id\u0027])"},{"line_number":208,"context_line":"        if not (port_dns and port_dns[\u0027dns_name\u0027]):"},{"line_number":209,"context_line":"            return None, None"},{"line_number":210,"context_line":"        net_dns \u003d context.session.query("},{"line_number":211,"context_line":"            dns_models.NetworkDNSDomain).join("},{"line_number":212,"context_line":"                models_v2.Port, dns_models.NetworkDNSDomain.network_id \u003d\u003d"},{"line_number":213,"context_line":"                models_v2.Port.network_id).filter_by("},{"line_number":214,"context_line":"                    id\u003dfloatingip_data[\u0027port_id\u0027]).one_or_none()"},{"line_number":215,"context_line":"        if not net_dns:"},{"line_number":216,"context_line":"            return port_dns[\u0027dns_name\u0027], None"},{"line_number":217,"context_line":"        return port_dns[\u0027dns_name\u0027], net_dns[\u0027dns_domain\u0027]"}],"source_content_type":"text/x-python","patch_set":9,"id":"da6895a0_8e17c7ec","line":214,"range":{"start_line":210,"start_character":8,"end_line":214,"end_character":64},"updated":"2016-10-20 22:03:10.000000000","message":"This needs conversion too. Can you either add a port_id\u003d extra filter to NetworkDNS.get_object, or add a new method NetworkDNS.get_by_port_id?","commit_id":"549d2a0463eda7a9234fd8b107ae417d7b5e5bc2"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"05638090ca839355892fdef3b7ce84aa7966d4a7","unresolved":false,"context_lines":[{"line_number":207,"context_line":"            context, port_id\u003dfloatingip_data[\u0027port_id\u0027])"},{"line_number":208,"context_line":"        if not (port_dns and port_dns[\u0027dns_name\u0027]):"},{"line_number":209,"context_line":"            return None, None"},{"line_number":210,"context_line":"        net_dns \u003d context.session.query("},{"line_number":211,"context_line":"            dns_models.NetworkDNSDomain).join("},{"line_number":212,"context_line":"                models_v2.Port, dns_models.NetworkDNSDomain.network_id \u003d\u003d"},{"line_number":213,"context_line":"                models_v2.Port.network_id).filter_by("},{"line_number":214,"context_line":"                    id\u003dfloatingip_data[\u0027port_id\u0027]).one_or_none()"},{"line_number":215,"context_line":"        if not net_dns:"},{"line_number":216,"context_line":"            return port_dns[\u0027dns_name\u0027], None"},{"line_number":217,"context_line":"        return port_dns[\u0027dns_name\u0027], net_dns[\u0027dns_domain\u0027]"}],"source_content_type":"text/x-python","patch_set":9,"id":"da6895a0_2a53e7e2","line":214,"range":{"start_line":210,"start_character":8,"end_line":214,"end_character":64},"in_reply_to":"da6895a0_8e17c7ec","updated":"2016-10-21 16:16:57.000000000","message":"what I did to get this is, I did get_object on port using portid (primary_key) and from that object use network_id to get_object on NetworkDNSDomain, (net_id is primary key in networkDNSDomain),","commit_id":"549d2a0463eda7a9234fd8b107ae417d7b5e5bc2"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"aa7b93fcf3200188f683987374951318f3e87a84","unresolved":false,"context_lines":[{"line_number":202,"context_line":"            msg \u003d _(\"dns_name cannot be specified without a dns_domain\")"},{"line_number":203,"context_line":"            raise n_exc.BadRequest(resource\u003d\u0027floatingip\u0027, msg\u003dmsg)"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"    def _get_internal_port_dns_data(self, context, floatingip_data):"},{"line_number":206,"context_line":"        port_dns \u003d port_obj.PortDNS.get_object("},{"line_number":207,"context_line":"            context, port_id\u003dfloatingip_data[\u0027port_id\u0027])"},{"line_number":208,"context_line":"        if not (port_dns and port_dns[\u0027dns_name\u0027]):"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba5da102_0409d32c","line":205,"updated":"2016-10-26 14:45:04.000000000","message":"Once you are done fixing this method, please run the unit tests that are being added in this patchset: https://review.openstack.org/#/c/301809/. Let\u0027s make sure we don\u0027t introduce a regression. Even though that patchset has a -1 from Carl, the unit tests in there work fine","commit_id":"e88d03119c2bc8856a0ecd5a8f08e2c93af2447f"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"a42432660efccc61aa744eb0d24ae2c8469d6983","unresolved":false,"context_lines":[{"line_number":204,"context_line":""},{"line_number":205,"context_line":"    def _get_internal_port_dns_data(self, context, floatingip_data):"},{"line_number":206,"context_line":"        port_dns \u003d port_obj.PortDNS.get_object("},{"line_number":207,"context_line":"            context, port_id\u003dfloatingip_data[\u0027port_id\u0027])"},{"line_number":208,"context_line":"        if not (port_dns and port_dns[\u0027dns_name\u0027]):"},{"line_number":209,"context_line":"            return None, None"},{"line_number":210,"context_line":"        port_data \u003d port_obj.Port.get_object(context,"}],"source_content_type":"text/x-python","patch_set":10,"id":"da6895a0_d48ac8be","line":207,"updated":"2016-10-25 23:49:04.000000000","message":"get_object uses query.first(), the query this replaces uses one_or_none().  Good thing port_id is the primary key eh?","commit_id":"e88d03119c2bc8856a0ecd5a8f08e2c93af2447f"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"277760d52a52c53e9d4eef082b17521446a77c7a","unresolved":false,"context_lines":[{"line_number":204,"context_line":""},{"line_number":205,"context_line":"    def _get_internal_port_dns_data(self, context, floatingip_data):"},{"line_number":206,"context_line":"        port_dns \u003d port_obj.PortDNS.get_object("},{"line_number":207,"context_line":"            context, port_id\u003dfloatingip_data[\u0027port_id\u0027])"},{"line_number":208,"context_line":"        if not (port_dns and port_dns[\u0027dns_name\u0027]):"},{"line_number":209,"context_line":"            return None, None"},{"line_number":210,"context_line":"        port_data \u003d port_obj.Port.get_object(context,"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba5da102_19821501","line":207,"in_reply_to":"ba5da102_4ad675c6","updated":"2016-10-26 20:12:54.000000000","message":"@miguel I ran tests on top of ps 11 381333 and this was the result\n\nhttp://paste.openstack.org/show/587146/","commit_id":"e88d03119c2bc8856a0ecd5a8f08e2c93af2447f"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"34fab2a5088d6d3328d88c002443f2e426c37792","unresolved":false,"context_lines":[{"line_number":204,"context_line":""},{"line_number":205,"context_line":"    def _get_internal_port_dns_data(self, context, floatingip_data):"},{"line_number":206,"context_line":"        port_dns \u003d port_obj.PortDNS.get_object("},{"line_number":207,"context_line":"            context, port_id\u003dfloatingip_data[\u0027port_id\u0027])"},{"line_number":208,"context_line":"        if not (port_dns and port_dns[\u0027dns_name\u0027]):"},{"line_number":209,"context_line":"            return None, None"},{"line_number":210,"context_line":"        port_data \u003d port_obj.Port.get_object(context,"}],"source_content_type":"text/x-python","patch_set":10,"id":"da6895a0_dfabc1d4","line":207,"in_reply_to":"da6895a0_d48ac8be","updated":"2016-10-26 00:12:01.000000000","message":"get_object serves the case for one_or_none, it make sure query is on primary key if entry is there it would be always exactly one result if it is not there then it will return None","commit_id":"e88d03119c2bc8856a0ecd5a8f08e2c93af2447f"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"34fab2a5088d6d3328d88c002443f2e426c37792","unresolved":false,"context_lines":[{"line_number":204,"context_line":""},{"line_number":205,"context_line":"    def _get_internal_port_dns_data(self, context, floatingip_data):"},{"line_number":206,"context_line":"        port_dns \u003d port_obj.PortDNS.get_object("},{"line_number":207,"context_line":"            context, port_id\u003dfloatingip_data[\u0027port_id\u0027])"},{"line_number":208,"context_line":"        if not (port_dns and port_dns[\u0027dns_name\u0027]):"},{"line_number":209,"context_line":"            return None, None"},{"line_number":210,"context_line":"        port_data \u003d port_obj.Port.get_object(context,"}],"source_content_type":"text/x-python","patch_set":10,"id":"da6895a0_3f759d97","line":207,"in_reply_to":"da6895a0_d48ac8be","updated":"2016-10-26 00:12:01.000000000","message":"that\u0027s the reason it does not matter, primary key is enough to make sure it is always one result and if according to api definition it would be exactly one or none.","commit_id":"e88d03119c2bc8856a0ecd5a8f08e2c93af2447f"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"34fab2a5088d6d3328d88c002443f2e426c37792","unresolved":false,"context_lines":[{"line_number":204,"context_line":""},{"line_number":205,"context_line":"    def _get_internal_port_dns_data(self, context, floatingip_data):"},{"line_number":206,"context_line":"        port_dns \u003d port_obj.PortDNS.get_object("},{"line_number":207,"context_line":"            context, port_id\u003dfloatingip_data[\u0027port_id\u0027])"},{"line_number":208,"context_line":"        if not (port_dns and port_dns[\u0027dns_name\u0027]):"},{"line_number":209,"context_line":"            return None, None"},{"line_number":210,"context_line":"        port_data \u003d port_obj.Port.get_object(context,"}],"source_content_type":"text/x-python","patch_set":10,"id":"da6895a0_5f78918f","line":207,"in_reply_to":"da6895a0_d48ac8be","updated":"2016-10-26 00:12:01.000000000","message":"that\u0027s the reason it does not matter, primary key is enough to make sure it is always one result and if according to api definition it would be exactly one or none.","commit_id":"e88d03119c2bc8856a0ecd5a8f08e2c93af2447f"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"9660be12a8791d18ec1afb4a6986092f1e2cb300","unresolved":false,"context_lines":[{"line_number":204,"context_line":""},{"line_number":205,"context_line":"    def _get_internal_port_dns_data(self, context, floatingip_data):"},{"line_number":206,"context_line":"        port_dns \u003d port_obj.PortDNS.get_object("},{"line_number":207,"context_line":"            context, port_id\u003dfloatingip_data[\u0027port_id\u0027])"},{"line_number":208,"context_line":"        if not (port_dns and port_dns[\u0027dns_name\u0027]):"},{"line_number":209,"context_line":"            return None, None"},{"line_number":210,"context_line":"        port_data \u003d port_obj.Port.get_object(context,"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba5da102_4ad675c6","line":207,"in_reply_to":"da6895a0_dfabc1d4","updated":"2016-10-26 16:08:48.000000000","message":"actually get_object uses first() and not one_or_none.\n\nhttps://github.com/openstack/neutron/blob/master/neutron/objects/db/api.py#L33\n\nEither way though, my comment was more just highlighting the fact that port_id being the primary key is what allows this to not matter that we are going from one_or_none() to first()","commit_id":"e88d03119c2bc8856a0ecd5a8f08e2c93af2447f"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"a42432660efccc61aa744eb0d24ae2c8469d6983","unresolved":false,"context_lines":[{"line_number":207,"context_line":"            context, port_id\u003dfloatingip_data[\u0027port_id\u0027])"},{"line_number":208,"context_line":"        if not (port_dns and port_dns[\u0027dns_name\u0027]):"},{"line_number":209,"context_line":"            return None, None"},{"line_number":210,"context_line":"        port_data \u003d port_obj.Port.get_object(context,"},{"line_number":211,"context_line":"            id\u003dfloatingip_data[\u0027port_id\u0027])"},{"line_number":212,"context_line":"        if port_data.network_id:"},{"line_number":213,"context_line":"            net_dns \u003d network.NetworkDNSDomain.get_object("},{"line_number":214,"context_line":"                context, network_id\u003dport_data.network_id)"},{"line_number":215,"context_line":"        if not net_dns:"},{"line_number":216,"context_line":"            return port_dns[\u0027dns_name\u0027], None"},{"line_number":217,"context_line":"        return port_dns[\u0027dns_name\u0027], net_dns[\u0027dns_domain\u0027]"}],"source_content_type":"text/x-python","patch_set":10,"id":"da6895a0_74673c25","line":214,"range":{"start_line":210,"start_character":8,"end_line":214,"end_character":57},"updated":"2016-10-25 23:49:04.000000000","message":"i wonder what the performance hit is by going from one trip to the db to two that this does.  Another option would be to just move the join query into a classmethod on the NetworkDNSDomain object and call that method here.  But that might be a bit heavy handed for this.","commit_id":"e88d03119c2bc8856a0ecd5a8f08e2c93af2447f"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"fa75a7ee74668f9adbc4c9226f917b6b8b3784a4","unresolved":false,"context_lines":[{"line_number":207,"context_line":"            context, port_id\u003dfloatingip_data[\u0027port_id\u0027])"},{"line_number":208,"context_line":"        if not (port_dns and port_dns[\u0027dns_name\u0027]):"},{"line_number":209,"context_line":"            return None, None"},{"line_number":210,"context_line":"        port_data \u003d port_obj.Port.get_object(context,"},{"line_number":211,"context_line":"            id\u003dfloatingip_data[\u0027port_id\u0027])"},{"line_number":212,"context_line":"        if port_data.network_id:"},{"line_number":213,"context_line":"            net_dns \u003d network.NetworkDNSDomain.get_object("},{"line_number":214,"context_line":"                context, network_id\u003dport_data.network_id)"},{"line_number":215,"context_line":"        if not net_dns:"},{"line_number":216,"context_line":"            return port_dns[\u0027dns_name\u0027], None"},{"line_number":217,"context_line":"        return port_dns[\u0027dns_name\u0027], net_dns[\u0027dns_domain\u0027]"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba5da102_3009ae2d","line":214,"range":{"start_line":210,"start_character":8,"end_line":214,"end_character":57},"in_reply_to":"ba5da102_2a6dc104","updated":"2016-10-26 16:45:53.000000000","message":"i\u0027ll move it to object class method","commit_id":"e88d03119c2bc8856a0ecd5a8f08e2c93af2447f"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"9660be12a8791d18ec1afb4a6986092f1e2cb300","unresolved":false,"context_lines":[{"line_number":207,"context_line":"            context, port_id\u003dfloatingip_data[\u0027port_id\u0027])"},{"line_number":208,"context_line":"        if not (port_dns and port_dns[\u0027dns_name\u0027]):"},{"line_number":209,"context_line":"            return None, None"},{"line_number":210,"context_line":"        port_data \u003d port_obj.Port.get_object(context,"},{"line_number":211,"context_line":"            id\u003dfloatingip_data[\u0027port_id\u0027])"},{"line_number":212,"context_line":"        if port_data.network_id:"},{"line_number":213,"context_line":"            net_dns \u003d network.NetworkDNSDomain.get_object("},{"line_number":214,"context_line":"                context, network_id\u003dport_data.network_id)"},{"line_number":215,"context_line":"        if not net_dns:"},{"line_number":216,"context_line":"            return port_dns[\u0027dns_name\u0027], None"},{"line_number":217,"context_line":"        return port_dns[\u0027dns_name\u0027], net_dns[\u0027dns_domain\u0027]"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba5da102_2a6dc104","line":214,"range":{"start_line":210,"start_character":8,"end_line":214,"end_character":57},"in_reply_to":"ba5da102_69226abb","updated":"2016-10-26 16:08:48.000000000","message":"oh yeah it will, im just not sure if in this particular case its worth it...but making sure we\u0027re not introducing possible performance hits is probably a worthy goal.","commit_id":"e88d03119c2bc8856a0ecd5a8f08e2c93af2447f"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"34fab2a5088d6d3328d88c002443f2e426c37792","unresolved":false,"context_lines":[{"line_number":207,"context_line":"            context, port_id\u003dfloatingip_data[\u0027port_id\u0027])"},{"line_number":208,"context_line":"        if not (port_dns and port_dns[\u0027dns_name\u0027]):"},{"line_number":209,"context_line":"            return None, None"},{"line_number":210,"context_line":"        port_data \u003d port_obj.Port.get_object(context,"},{"line_number":211,"context_line":"            id\u003dfloatingip_data[\u0027port_id\u0027])"},{"line_number":212,"context_line":"        if port_data.network_id:"},{"line_number":213,"context_line":"            net_dns \u003d network.NetworkDNSDomain.get_object("},{"line_number":214,"context_line":"                context, network_id\u003dport_data.network_id)"},{"line_number":215,"context_line":"        if not net_dns:"},{"line_number":216,"context_line":"            return port_dns[\u0027dns_name\u0027], None"},{"line_number":217,"context_line":"        return port_dns[\u0027dns_name\u0027], net_dns[\u0027dns_domain\u0027]"}],"source_content_type":"text/x-python","patch_set":10,"id":"da6895a0_7fa63511","line":214,"range":{"start_line":210,"start_character":8,"end_line":214,"end_character":57},"in_reply_to":"da6895a0_74673c25","updated":"2016-10-26 00:12:01.000000000","message":"would join be less expensive ? than two separate queries ?","commit_id":"e88d03119c2bc8856a0ecd5a8f08e2c93af2447f"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"aa7b93fcf3200188f683987374951318f3e87a84","unresolved":false,"context_lines":[{"line_number":207,"context_line":"            context, port_id\u003dfloatingip_data[\u0027port_id\u0027])"},{"line_number":208,"context_line":"        if not (port_dns and port_dns[\u0027dns_name\u0027]):"},{"line_number":209,"context_line":"            return None, None"},{"line_number":210,"context_line":"        port_data \u003d port_obj.Port.get_object(context,"},{"line_number":211,"context_line":"            id\u003dfloatingip_data[\u0027port_id\u0027])"},{"line_number":212,"context_line":"        if port_data.network_id:"},{"line_number":213,"context_line":"            net_dns \u003d network.NetworkDNSDomain.get_object("},{"line_number":214,"context_line":"                context, network_id\u003dport_data.network_id)"},{"line_number":215,"context_line":"        if not net_dns:"},{"line_number":216,"context_line":"            return port_dns[\u0027dns_name\u0027], None"},{"line_number":217,"context_line":"        return port_dns[\u0027dns_name\u0027], net_dns[\u0027dns_domain\u0027]"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba5da102_69226abb","line":214,"range":{"start_line":210,"start_character":8,"end_line":214,"end_character":57},"in_reply_to":"da6895a0_7fa63511","updated":"2016-10-26 14:45:04.000000000","message":"Yes, a join will be less expensive than two separate queries","commit_id":"e88d03119c2bc8856a0ecd5a8f08e2c93af2447f"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"a42432660efccc61aa744eb0d24ae2c8469d6983","unresolved":false,"context_lines":[{"line_number":212,"context_line":"        if port_data.network_id:"},{"line_number":213,"context_line":"            net_dns \u003d network.NetworkDNSDomain.get_object("},{"line_number":214,"context_line":"                context, network_id\u003dport_data.network_id)"},{"line_number":215,"context_line":"        if not net_dns:"},{"line_number":216,"context_line":"            return port_dns[\u0027dns_name\u0027], None"},{"line_number":217,"context_line":"        return port_dns[\u0027dns_name\u0027], net_dns[\u0027dns_domain\u0027]"},{"line_number":218,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"da6895a0_b4bab46c","line":215,"range":{"start_line":215,"start_character":8,"end_line":215,"end_character":23},"updated":"2016-10-25 23:49:04.000000000","message":"this will cause an error if the if statement on L212 returns False bc net_dns will not exist.","commit_id":"e88d03119c2bc8856a0ecd5a8f08e2c93af2447f"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"fa75a7ee74668f9adbc4c9226f917b6b8b3784a4","unresolved":false,"context_lines":[{"line_number":212,"context_line":"        if port_data.network_id:"},{"line_number":213,"context_line":"            net_dns \u003d network.NetworkDNSDomain.get_object("},{"line_number":214,"context_line":"                context, network_id\u003dport_data.network_id)"},{"line_number":215,"context_line":"        if not net_dns:"},{"line_number":216,"context_line":"            return port_dns[\u0027dns_name\u0027], None"},{"line_number":217,"context_line":"        return port_dns[\u0027dns_name\u0027], net_dns[\u0027dns_domain\u0027]"},{"line_number":218,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"ba5da102_0d365703","line":215,"range":{"start_line":215,"start_character":8,"end_line":215,"end_character":23},"in_reply_to":"ba5da102_0a7e3de4","updated":"2016-10-26 16:45:53.000000000","message":"ill remove L212","commit_id":"e88d03119c2bc8856a0ecd5a8f08e2c93af2447f"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"9660be12a8791d18ec1afb4a6986092f1e2cb300","unresolved":false,"context_lines":[{"line_number":212,"context_line":"        if port_data.network_id:"},{"line_number":213,"context_line":"            net_dns \u003d network.NetworkDNSDomain.get_object("},{"line_number":214,"context_line":"                context, network_id\u003dport_data.network_id)"},{"line_number":215,"context_line":"        if not net_dns:"},{"line_number":216,"context_line":"            return port_dns[\u0027dns_name\u0027], None"},{"line_number":217,"context_line":"        return port_dns[\u0027dns_name\u0027], net_dns[\u0027dns_domain\u0027]"},{"line_number":218,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"ba5da102_0a7e3de4","line":215,"range":{"start_line":215,"start_character":8,"end_line":215,"end_character":23},"in_reply_to":"ba5da102_29407256","updated":"2016-10-26 16:08:48.000000000","message":"yep thats what i meant...of course i\u0027m not sure port_data will ever not have network_id since it\u0027s a non null value in the DB...so maybe that if statement is useless anyway.","commit_id":"e88d03119c2bc8856a0ecd5a8f08e2c93af2447f"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"aa7b93fcf3200188f683987374951318f3e87a84","unresolved":false,"context_lines":[{"line_number":212,"context_line":"        if port_data.network_id:"},{"line_number":213,"context_line":"            net_dns \u003d network.NetworkDNSDomain.get_object("},{"line_number":214,"context_line":"                context, network_id\u003dport_data.network_id)"},{"line_number":215,"context_line":"        if not net_dns:"},{"line_number":216,"context_line":"            return port_dns[\u0027dns_name\u0027], None"},{"line_number":217,"context_line":"        return port_dns[\u0027dns_name\u0027], net_dns[\u0027dns_domain\u0027]"},{"line_number":218,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"ba5da102_29407256","line":215,"range":{"start_line":215,"start_character":8,"end_line":215,"end_character":23},"in_reply_to":"da6895a0_9f806948","updated":"2016-10-26 14:45:04.000000000","message":"@Manjeet.\n\nBrandon meant L212. In the case that if statement is false, you are not executing L213. As a consequence, when you get to line 215, net_dns doesn\u0027t exist.","commit_id":"e88d03119c2bc8856a0ecd5a8f08e2c93af2447f"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"34fab2a5088d6d3328d88c002443f2e426c37792","unresolved":false,"context_lines":[{"line_number":212,"context_line":"        if port_data.network_id:"},{"line_number":213,"context_line":"            net_dns \u003d network.NetworkDNSDomain.get_object("},{"line_number":214,"context_line":"                context, network_id\u003dport_data.network_id)"},{"line_number":215,"context_line":"        if not net_dns:"},{"line_number":216,"context_line":"            return port_dns[\u0027dns_name\u0027], None"},{"line_number":217,"context_line":"        return port_dns[\u0027dns_name\u0027], net_dns[\u0027dns_domain\u0027]"},{"line_number":218,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"da6895a0_9f806948","line":215,"range":{"start_line":215,"start_character":8,"end_line":215,"end_character":23},"in_reply_to":"da6895a0_b4bab46c","updated":"2016-10-26 00:12:01.000000000","message":"i suppose you mean L213, again its on primary key, net_dns will be one result or none which will be handle here. if it is none","commit_id":"e88d03119c2bc8856a0ecd5a8f08e2c93af2447f"}],"neutron/objects/base.py":[{"author":{"_account_id":20378,"name":"Trevor McCasland","email":"TM2086@att.com","username":"twm2016"},"change_message_id":"0a194b735e20ebe37a4ebfcba988f03dc6c3f751","unresolved":false,"context_lines":[{"line_number":464,"context_line":"            return [cls._load_object(context, db_obj) for db_obj in db_objs]"},{"line_number":465,"context_line":""},{"line_number":466,"context_line":"    @classmethod"},{"line_number":467,"context_line":"    def get_one_object(cls, context, **kwargs):"},{"line_number":468,"context_line":"        \"\"\""},{"line_number":469,"context_line":"        Fetch one object from DB and convert to OVO."},{"line_number":470,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"fa6399be_04433e43","line":467,"range":{"start_line":467,"start_character":8,"end_line":467,"end_character":22},"updated":"2016-10-12 16:52:31.000000000","message":"how is this different than get_object()? The inputs and outputs are the same. I see you are using obj_db_api.get_one_object() but why not modify the old method to do this instead?","commit_id":"6a5f3c0bb752f4f9cf85d6614086fa8b350dff76"},{"author":{"_account_id":14611,"name":"dasm","display_name":"dasm","email":"dsmigiel@redhat.com","username":"dasm"},"change_message_id":"d484e5c557393ca09ae145b42a6f42247f712cd3","unresolved":false,"context_lines":[{"line_number":464,"context_line":"            return [cls._load_object(context, db_obj) for db_obj in db_objs]"},{"line_number":465,"context_line":""},{"line_number":466,"context_line":"    @classmethod"},{"line_number":467,"context_line":"    def get_one_object(cls, context, **kwargs):"},{"line_number":468,"context_line":"        \"\"\""},{"line_number":469,"context_line":"        Fetch one object from DB and convert to OVO."},{"line_number":470,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"fa6399be_9b27a863","line":467,"range":{"start_line":467,"start_character":8,"end_line":467,"end_character":22},"in_reply_to":"fa6399be_04433e43","updated":"2016-10-12 20:24:55.000000000","message":"I can answer for that. I\u0027ve investigated it too.\nMain difference between these two is:\nget_object fetches first element from table. If nothing exists, then returns None [1]. In the case of get_one_object, you\u0027ll have exactly one record [2] or will be raised an exception.\n\n[1] http://docs.sqlalchemy.org/en/latest/orm/query.html#sqlalchemy.orm.query.Query.first\n[2] http://docs.sqlalchemy.org/en/latest/orm/query.html#sqlalchemy.orm.query.Query.one","commit_id":"6a5f3c0bb752f4f9cf85d6614086fa8b350dff76"},{"author":{"_account_id":14611,"name":"dasm","display_name":"dasm","email":"dsmigiel@redhat.com","username":"dasm"},"change_message_id":"7a9428405b6727a899a8274c30ad42083a1e6dbd","unresolved":false,"context_lines":[{"line_number":464,"context_line":"            return [cls._load_object(context, db_obj) for db_obj in db_objs]"},{"line_number":465,"context_line":""},{"line_number":466,"context_line":"    @classmethod"},{"line_number":467,"context_line":"    def get_one_object(cls, context, **kwargs):"},{"line_number":468,"context_line":"        \"\"\""},{"line_number":469,"context_line":"        Fetch one object from DB and convert to OVO."},{"line_number":470,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"fa6399be_d945a817","line":467,"range":{"start_line":467,"start_character":8,"end_line":467,"end_character":22},"in_reply_to":"fa6399be_5e96def0","updated":"2016-10-12 21:14:34.000000000","message":"True. @Miguel, I\u0027ve updated my patch with corresponding changes.","commit_id":"6a5f3c0bb752f4f9cf85d6614086fa8b350dff76"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"2dd391bfe76d14799c10a473707c6f40c3e4130d","unresolved":false,"context_lines":[{"line_number":464,"context_line":"            return [cls._load_object(context, db_obj) for db_obj in db_objs]"},{"line_number":465,"context_line":""},{"line_number":466,"context_line":"    @classmethod"},{"line_number":467,"context_line":"    def get_one_object(cls, context, **kwargs):"},{"line_number":468,"context_line":"        \"\"\""},{"line_number":469,"context_line":"        Fetch one object from DB and convert to OVO."},{"line_number":470,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"fa6399be_2aac8033","line":467,"range":{"start_line":467,"start_character":8,"end_line":467,"end_character":22},"in_reply_to":"fa6399be_5e96def0","updated":"2016-10-12 22:57:41.000000000","message":"added the raises in docstring","commit_id":"6a5f3c0bb752f4f9cf85d6614086fa8b350dff76"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"e9d745f08adbd26b70bf3e2f571bc6c36930731e","unresolved":false,"context_lines":[{"line_number":464,"context_line":"            return [cls._load_object(context, db_obj) for db_obj in db_objs]"},{"line_number":465,"context_line":""},{"line_number":466,"context_line":"    @classmethod"},{"line_number":467,"context_line":"    def get_one_object(cls, context, **kwargs):"},{"line_number":468,"context_line":"        \"\"\""},{"line_number":469,"context_line":"        Fetch one object from DB and convert to OVO."},{"line_number":470,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"fa6399be_5e96def0","line":467,"range":{"start_line":467,"start_character":8,"end_line":467,"end_character":22},"in_reply_to":"fa6399be_9b27a863","updated":"2016-10-12 21:05:11.000000000","message":"Given Darek\u0027s explanation, I think the docstring of this method should be updated to indicate that an exception will be raised if the result of the get is not exactly one object. This clarification in the docstring is important because this behavior is not evident just by reading the method.\n\nConversely, I think the docstrings in https://review.openstack.org/#/c/384786/2 should be improved to highlight how get_one_object is different to get_object. Again, the behavior is not evident from reading the method","commit_id":"6a5f3c0bb752f4f9cf85d6614086fa8b350dff76"},{"author":{"_account_id":14611,"name":"dasm","display_name":"dasm","email":"dsmigiel@redhat.com","username":"dasm"},"change_message_id":"e52425c3daf09a5e15f0e53431d39c3f9a5239b7","unresolved":false,"context_lines":[{"line_number":471,"context_line":"        :param context:"},{"line_number":472,"context_line":"        :param kwargs: multiple keys defined by key\u003dvalue pairs"},{"line_number":473,"context_line":"        :return: exactly one object of NeutronDbObject class"},{"line_number":474,"context_line":"        :raises: multiple or no result found exception"},{"line_number":475,"context_line":"        \"\"\""},{"line_number":476,"context_line":"        cls.validate_filters(**kwargs)"},{"line_number":477,"context_line":"        with db_api.autonested_transaction(context.session):"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa6399be_32b6b63d","line":474,"range":{"start_line":474,"start_character":0,"end_line":474,"end_character":54},"updated":"2016-10-13 00:13:57.000000000","message":"Could you be more specific, like\n\n :raises sqlalchemy.orm.exc.NoResultFound: if the query selects no rows\n :raises sqlalchemy.orm.exc.MultipleResultsFound: if multiple object identities are returned, or if multiple rows\n\nYou would need to double check if it\u0027s not hidden by some other layers.","commit_id":"88a09eca459d2ccb6dc821c0eb3bb341d0ea86c7"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"0bd6526e0345775073b9151c91b9f4f45524bc5c","unresolved":false,"context_lines":[{"line_number":471,"context_line":"        :param context:"},{"line_number":472,"context_line":"        :param kwargs: multiple keys defined by key\u003dvalue pairs"},{"line_number":473,"context_line":"        :return: exactly one object of NeutronDbObject class"},{"line_number":474,"context_line":"        :raises: multiple or no result found exception"},{"line_number":475,"context_line":"        \"\"\""},{"line_number":476,"context_line":"        cls.validate_filters(**kwargs)"},{"line_number":477,"context_line":"        with db_api.autonested_transaction(context.session):"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa6399be_d7da8f4a","line":474,"range":{"start_line":474,"start_character":0,"end_line":474,"end_character":54},"in_reply_to":"fa6399be_32b6b63d","updated":"2016-10-14 04:37:33.000000000","message":"I deployed this patchset in my test environment and added after https://review.openstack.org/#/c/381333/8/neutron/plugins/ml2/extensions/dns_integration.py@70 the following lines:\n\n            net_dns_domain.delete()\n            net_dns_domain \u003d dns_obj.NetworkDNSDomain.get_one_object(\n                plugin_context,\n                network_id\u003dnet_id)\n\nThis way I was able to force an error when updating a network\u0027s dns_domain where the record doesn\u0027t exist in the DB. I get a loooong traceback in the q-svc screen. The last few lines of this traceback are: http://paste.openstack.org/show/585672/. As you can see, if the record doesn\u0027t exist, the exception is orm_exc.NoResultFound(\"No row was found for one()\").\n\nNow, since the traceback points to /usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/query.py, I look there and find the following: http://paste.openstack.org/show/585673/, where exc is imported as orm_exc.\n\nSo your exceptions are:\n\nsqlalchemy.orm.exc.NoResultFound\nsqlalchemy.orm.exc.MultipleResultsFound","commit_id":"88a09eca459d2ccb6dc821c0eb3bb341d0ea86c7"},{"author":{"_account_id":14611,"name":"dasm","display_name":"dasm","email":"dsmigiel@redhat.com","username":"dasm"},"change_message_id":"f3867207ded1cbcfed02095ec0c1de2aed583f41","unresolved":false,"context_lines":[{"line_number":471,"context_line":"        :param context:"},{"line_number":472,"context_line":"        :param kwargs: multiple keys defined by key\u003dvalue pairs"},{"line_number":473,"context_line":"        :return: exactly one object of NeutronDbObject class"},{"line_number":474,"context_line":"        :raises: multiple or no result found exception"},{"line_number":475,"context_line":"        \"\"\""},{"line_number":476,"context_line":"        cls.validate_filters(**kwargs)"},{"line_number":477,"context_line":"        with db_api.autonested_transaction(context.session):"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa6399be_6f770ea0","line":474,"range":{"start_line":474,"start_character":0,"end_line":474,"end_character":54},"in_reply_to":"fa6399be_d7da8f4a","updated":"2016-10-14 16:24:28.000000000","message":"Thanks Miguel for checking that.","commit_id":"88a09eca459d2ccb6dc821c0eb3bb341d0ea86c7"}],"neutron/objects/dns.py":[{"author":{"_account_id":20378,"name":"Trevor McCasland","email":"TM2086@att.com","username":"twm2016"},"change_message_id":"0a194b735e20ebe37a4ebfcba988f03dc6c3f751","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    primary_keys \u003d [\u0027network_id\u0027]"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    foreign_keys \u003d {\u0027Network\u0027: {\u0027network_id\u0027: \u0027id\u0027}}"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    fields \u003d {"},{"line_number":34,"context_line":"        \u0027network_id\u0027: obj_fields.UUIDField(),"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa6399be_7ede4d12","line":31,"range":{"start_line":31,"start_character":20,"end_line":31,"end_character":30},"updated":"2016-10-12 16:52:31.000000000","message":"Just trying to learn here, why did you specify Network here and not FloatingIP on Line 48? Is it because FloatingIP doesn\u0027t have OVO implemented yet?","commit_id":"6a5f3c0bb752f4f9cf85d6614086fa8b350dff76"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"802a010f3aa3f05904a7def99f44f28d2c5889f3","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    primary_keys \u003d [\u0027network_id\u0027]"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    foreign_keys \u003d {\u0027Network\u0027: {\u0027network_id\u0027: \u0027id\u0027}}"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    fields \u003d {"},{"line_number":34,"context_line":"        \u0027network_id\u0027: obj_fields.UUIDField(),"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa6399be_a4a532b6","line":31,"range":{"start_line":31,"start_character":20,"end_line":31,"end_character":30},"in_reply_to":"fa6399be_7ede4d12","updated":"2016-10-12 20:27:03.000000000","message":"that needs to be in done on line 48 as well l31 is new way of specifying foreign field and l48 was old way which no longer used,","commit_id":"6a5f3c0bb752f4f9cf85d6614086fa8b350dff76"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"9b72ef056d5f21446ebf5f3f07ec8156a8e08b84","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    primary_keys \u003d [\u0027network_id\u0027]"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    foreign_keys \u003d {\u0027Network\u0027: {\u0027network_id\u0027: \u0027id\u0027}}"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    fields \u003d {"},{"line_number":34,"context_line":"        \u0027network_id\u0027: obj_fields.UUIDField(),"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa6399be_87660c4f","line":31,"range":{"start_line":31,"start_character":4,"end_line":31,"end_character":52},"updated":"2016-10-14 15:55:25.000000000","message":"Given the current definition of Network OVO this foreign key is not needed.  Foreing keys are the mechanism to populate synthetic fields in OVO, usually they are the same as DB foreign keys but it\u0027s not a rule.","commit_id":"88a09eca459d2ccb6dc821c0eb3bb341d0ea86c7"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"9b72ef056d5f21446ebf5f3f07ec8156a8e08b84","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    primary_keys \u003d [\u0027floatingip_id\u0027]"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    foreign_keys \u003d {\u0027FloatingIP\u0027: {\u0027floatingip_id\u0027: \u0027id\u0027}}"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    fields \u003d {"},{"line_number":51,"context_line":"        \u0027floatingip_id\u0027: obj_fields.UUIDField(),"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa6399be_f94210ad","line":48,"range":{"start_line":48,"start_character":4,"end_line":48,"end_character":58},"updated":"2016-10-14 15:55:25.000000000","message":"Same thing here","commit_id":"88a09eca459d2ccb6dc821c0eb3bb341d0ea86c7"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"3810db0a85065ab30f452741768b5262d8bc6767","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"@obj_base.VersionedObjectRegistry.register"},{"line_number":23,"context_line":"class NetworkDNSDomain(base.NeutronDbObject):"},{"line_number":24,"context_line":"    # Version 1.0: Initial version"},{"line_number":25,"context_line":"    VERSION \u003d \u00271.0\u0027"},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"da6895a0_0eec97c6","line":23,"updated":"2016-10-20 22:03:10.000000000","message":"I believe this object belongs to network.py.","commit_id":"549d2a0463eda7a9234fd8b107ae417d7b5e5bc2"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"05638090ca839355892fdef3b7ce84aa7966d4a7","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"@obj_base.VersionedObjectRegistry.register"},{"line_number":23,"context_line":"class NetworkDNSDomain(base.NeutronDbObject):"},{"line_number":24,"context_line":"    # Version 1.0: Initial version"},{"line_number":25,"context_line":"    VERSION \u003d \u00271.0\u0027"},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"da6895a0_2a8e8778","line":23,"in_reply_to":"da6895a0_0eec97c6","updated":"2016-10-21 16:16:57.000000000","message":"Done","commit_id":"549d2a0463eda7a9234fd8b107ae417d7b5e5bc2"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"3810db0a85065ab30f452741768b5262d8bc6767","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    primary_keys \u003d [\u0027network_id\u0027]"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    foreign_keys \u003d {\u0027Network\u0027: {\u0027network_id\u0027: \u0027id\u0027}}"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    fields \u003d {"},{"line_number":34,"context_line":"        \u0027network_id\u0027: obj_fields.UUIDField(),"}],"source_content_type":"text/x-python","patch_set":9,"id":"da6895a0_ee98436d","line":31,"range":{"start_line":31,"start_character":4,"end_line":31,"end_character":52},"updated":"2016-10-20 22:03:10.000000000","message":"I don\u0027t see you attaching the object through an ObjectField to Network object. (I actually think you should).\n\nAlso, please update neutron/objects/network.py to use the new object for DNS data. (f.e. in _set_dns_domain).","commit_id":"549d2a0463eda7a9234fd8b107ae417d7b5e5bc2"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"3810db0a85065ab30f452741768b5262d8bc6767","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    fields \u003d {"},{"line_number":34,"context_line":"        \u0027network_id\u0027: obj_fields.UUIDField(),"},{"line_number":35,"context_line":"        \u0027dns_domain\u0027: obj_fields.StringField(),"},{"line_number":36,"context_line":"    }"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"da6895a0_0e9e5756","line":35,"updated":"2016-10-20 22:03:10.000000000","message":"common_types.DomainNameField?","commit_id":"549d2a0463eda7a9234fd8b107ae417d7b5e5bc2"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"64a0b0370d72688437a4ffdb0af92b2cfc22c468","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    fields \u003d {"},{"line_number":34,"context_line":"        \u0027network_id\u0027: obj_fields.UUIDField(),"},{"line_number":35,"context_line":"        \u0027dns_domain\u0027: obj_fields.StringField(),"},{"line_number":36,"context_line":"    }"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"da6895a0_ce4e1f96","line":35,"in_reply_to":"da6895a0_0e9e5756","updated":"2016-10-20 22:12:15.000000000","message":"Done","commit_id":"549d2a0463eda7a9234fd8b107ae417d7b5e5bc2"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"3810db0a85065ab30f452741768b5262d8bc6767","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"@obj_base.VersionedObjectRegistry.register"},{"line_number":40,"context_line":"class FloatingIPDNS(base.NeutronDbObject):"},{"line_number":41,"context_line":"    # Version 1.0: Initial version"},{"line_number":42,"context_line":"    VERSION \u003d \u00271.0\u0027"},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"da6895a0_2ed15bfc","line":40,"updated":"2016-10-20 22:03:10.000000000","message":"this probably should live in floatingip.py file.","commit_id":"549d2a0463eda7a9234fd8b107ae417d7b5e5bc2"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"05638090ca839355892fdef3b7ce84aa7966d4a7","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"@obj_base.VersionedObjectRegistry.register"},{"line_number":40,"context_line":"class FloatingIPDNS(base.NeutronDbObject):"},{"line_number":41,"context_line":"    # Version 1.0: Initial version"},{"line_number":42,"context_line":"    VERSION \u003d \u00271.0\u0027"},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"da6895a0_42266317","line":40,"in_reply_to":"da6895a0_2ed15bfc","updated":"2016-10-21 16:16:57.000000000","message":"Done","commit_id":"549d2a0463eda7a9234fd8b107ae417d7b5e5bc2"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"3810db0a85065ab30f452741768b5262d8bc6767","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    primary_keys \u003d [\u0027floatingip_id\u0027]"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    foreign_keys \u003d {\u0027FloatingIP\u0027: {\u0027floatingip_id\u0027: \u0027id\u0027}}"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    fields \u003d {"},{"line_number":51,"context_line":"        \u0027floatingip_id\u0027: obj_fields.UUIDField(),"}],"source_content_type":"text/x-python","patch_set":9,"id":"da6895a0_eeaf637b","line":48,"updated":"2016-10-20 22:03:10.000000000","message":"not needed while we don\u0027t have FloatingIP object in the tree.","commit_id":"549d2a0463eda7a9234fd8b107ae417d7b5e5bc2"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"05638090ca839355892fdef3b7ce84aa7966d4a7","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    primary_keys \u003d [\u0027floatingip_id\u0027]"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    foreign_keys \u003d {\u0027FloatingIP\u0027: {\u0027floatingip_id\u0027: \u0027id\u0027}}"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    fields \u003d {"},{"line_number":51,"context_line":"        \u0027floatingip_id\u0027: obj_fields.UUIDField(),"}],"source_content_type":"text/x-python","patch_set":9,"id":"da6895a0_22116fad","line":48,"in_reply_to":"da6895a0_eeaf637b","updated":"2016-10-21 16:16:57.000000000","message":"Done","commit_id":"549d2a0463eda7a9234fd8b107ae417d7b5e5bc2"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"3810db0a85065ab30f452741768b5262d8bc6767","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    fields \u003d {"},{"line_number":51,"context_line":"        \u0027floatingip_id\u0027: obj_fields.UUIDField(),"},{"line_number":52,"context_line":"        \u0027dns_name\u0027: obj_fields.StringField(),"},{"line_number":53,"context_line":"        \u0027dns_domain\u0027: obj_fields.StringField(),"},{"line_number":54,"context_line":"        \u0027published_dns_name\u0027: obj_fields.StringField(),"},{"line_number":55,"context_line":"        \u0027published_dns_domain\u0027: obj_fields.StringField(),"}],"source_content_type":"text/x-python","patch_set":9,"id":"da6895a0_6ead1388","line":52,"range":{"start_line":52,"start_character":25,"end_line":52,"end_character":26},"updated":"2016-10-20 22:03:10.000000000","message":"common_types.DomainNameField?","commit_id":"549d2a0463eda7a9234fd8b107ae417d7b5e5bc2"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"05638090ca839355892fdef3b7ce84aa7966d4a7","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    fields \u003d {"},{"line_number":51,"context_line":"        \u0027floatingip_id\u0027: obj_fields.UUIDField(),"},{"line_number":52,"context_line":"        \u0027dns_name\u0027: obj_fields.StringField(),"},{"line_number":53,"context_line":"        \u0027dns_domain\u0027: obj_fields.StringField(),"},{"line_number":54,"context_line":"        \u0027published_dns_name\u0027: obj_fields.StringField(),"},{"line_number":55,"context_line":"        \u0027published_dns_domain\u0027: obj_fields.StringField(),"}],"source_content_type":"text/x-python","patch_set":9,"id":"da6895a0_a2465fbd","line":52,"range":{"start_line":52,"start_character":25,"end_line":52,"end_character":26},"in_reply_to":"da6895a0_6ead1388","updated":"2016-10-21 16:16:57.000000000","message":"Done","commit_id":"549d2a0463eda7a9234fd8b107ae417d7b5e5bc2"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"3810db0a85065ab30f452741768b5262d8bc6767","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    fields \u003d {"},{"line_number":51,"context_line":"        \u0027floatingip_id\u0027: obj_fields.UUIDField(),"},{"line_number":52,"context_line":"        \u0027dns_name\u0027: obj_fields.StringField(),"},{"line_number":53,"context_line":"        \u0027dns_domain\u0027: obj_fields.StringField(),"},{"line_number":54,"context_line":"        \u0027published_dns_name\u0027: obj_fields.StringField(),"},{"line_number":55,"context_line":"        \u0027published_dns_domain\u0027: obj_fields.StringField(),"},{"line_number":56,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":9,"id":"da6895a0_4ea04f91","line":53,"updated":"2016-10-20 22:03:10.000000000","message":"common_types.DomainNameField?","commit_id":"549d2a0463eda7a9234fd8b107ae417d7b5e5bc2"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"05638090ca839355892fdef3b7ce84aa7966d4a7","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    fields \u003d {"},{"line_number":51,"context_line":"        \u0027floatingip_id\u0027: obj_fields.UUIDField(),"},{"line_number":52,"context_line":"        \u0027dns_name\u0027: obj_fields.StringField(),"},{"line_number":53,"context_line":"        \u0027dns_domain\u0027: obj_fields.StringField(),"},{"line_number":54,"context_line":"        \u0027published_dns_name\u0027: obj_fields.StringField(),"},{"line_number":55,"context_line":"        \u0027published_dns_domain\u0027: obj_fields.StringField(),"},{"line_number":56,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":9,"id":"da6895a0_c21193b1","line":53,"in_reply_to":"da6895a0_4ea04f91","updated":"2016-10-21 16:16:57.000000000","message":"Done","commit_id":"549d2a0463eda7a9234fd8b107ae417d7b5e5bc2"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"3810db0a85065ab30f452741768b5262d8bc6767","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        \u0027floatingip_id\u0027: obj_fields.UUIDField(),"},{"line_number":52,"context_line":"        \u0027dns_name\u0027: obj_fields.StringField(),"},{"line_number":53,"context_line":"        \u0027dns_domain\u0027: obj_fields.StringField(),"},{"line_number":54,"context_line":"        \u0027published_dns_name\u0027: obj_fields.StringField(),"},{"line_number":55,"context_line":"        \u0027published_dns_domain\u0027: obj_fields.StringField(),"},{"line_number":56,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":9,"id":"da6895a0_aeb56bd1","line":54,"updated":"2016-10-20 22:03:10.000000000","message":"common_types.DomainNameField?","commit_id":"549d2a0463eda7a9234fd8b107ae417d7b5e5bc2"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"05638090ca839355892fdef3b7ce84aa7966d4a7","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        \u0027floatingip_id\u0027: obj_fields.UUIDField(),"},{"line_number":52,"context_line":"        \u0027dns_name\u0027: obj_fields.StringField(),"},{"line_number":53,"context_line":"        \u0027dns_domain\u0027: obj_fields.StringField(),"},{"line_number":54,"context_line":"        \u0027published_dns_name\u0027: obj_fields.StringField(),"},{"line_number":55,"context_line":"        \u0027published_dns_domain\u0027: obj_fields.StringField(),"},{"line_number":56,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":9,"id":"da6895a0_e21697a6","line":54,"in_reply_to":"da6895a0_aeb56bd1","updated":"2016-10-21 16:16:57.000000000","message":"Done","commit_id":"549d2a0463eda7a9234fd8b107ae417d7b5e5bc2"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"3810db0a85065ab30f452741768b5262d8bc6767","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        \u0027dns_name\u0027: obj_fields.StringField(),"},{"line_number":53,"context_line":"        \u0027dns_domain\u0027: obj_fields.StringField(),"},{"line_number":54,"context_line":"        \u0027published_dns_name\u0027: obj_fields.StringField(),"},{"line_number":55,"context_line":"        \u0027published_dns_domain\u0027: obj_fields.StringField(),"},{"line_number":56,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":9,"id":"da6895a0_ceba9fc0","line":55,"updated":"2016-10-20 22:03:10.000000000","message":"common_types.DomainNameField?","commit_id":"549d2a0463eda7a9234fd8b107ae417d7b5e5bc2"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"05638090ca839355892fdef3b7ce84aa7966d4a7","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        \u0027dns_name\u0027: obj_fields.StringField(),"},{"line_number":53,"context_line":"        \u0027dns_domain\u0027: obj_fields.StringField(),"},{"line_number":54,"context_line":"        \u0027published_dns_name\u0027: obj_fields.StringField(),"},{"line_number":55,"context_line":"        \u0027published_dns_domain\u0027: obj_fields.StringField(),"},{"line_number":56,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":9,"id":"da6895a0_020c6b93","line":55,"in_reply_to":"da6895a0_ceba9fc0","updated":"2016-10-21 16:16:57.000000000","message":"Done","commit_id":"549d2a0463eda7a9234fd8b107ae417d7b5e5bc2"}],"neutron/objects/floatingip.py":[{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"a42432660efccc61aa744eb0d24ae2c8469d6983","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    primary_keys \u003d [\u0027floatingip_id\u0027]"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    # TODO(manjeets) add foreign key once floating ip object"},{"line_number":33,"context_line":"    # is in tree"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    fields \u003d {"},{"line_number":36,"context_line":"        \u0027floatingip_id\u0027: obj_fields.UUIDField(),"}],"source_content_type":"text/x-python","patch_set":10,"id":"da6895a0_b43f14d5","line":33,"updated":"2016-10-25 23:49:04.000000000","message":"and floatingip synthetic field correct?","commit_id":"e88d03119c2bc8856a0ecd5a8f08e2c93af2447f"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"61d87df8bf1f6e414b57df5769ee96f705c98f9f","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    primary_keys \u003d [\u0027floatingip_id\u0027]"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    # TODO(manjeets) add foreign key once floating ip object"},{"line_number":33,"context_line":"    # is in tree"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    fields \u003d {"},{"line_number":36,"context_line":"        \u0027floatingip_id\u0027: obj_fields.UUIDField(),"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba5da102_69041115","line":33,"range":{"start_line":32,"start_character":4,"end_line":33,"end_character":16},"updated":"2016-10-27 14:50:59.000000000","message":"There is no synthetic field in Floating IP OVO that requires this foreign key, therefore is not required to modify this object later.","commit_id":"1c73cd3ec1d9fc3959cfaf9af462a354865bca3a"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"15f4cec3d24282489fcbf0cd8e37880fb0fff19d","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    primary_keys \u003d [\u0027floatingip_id\u0027]"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    # TODO(manjeets) add foreign key once floating ip object"},{"line_number":33,"context_line":"    # is in tree"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    fields \u003d {"},{"line_number":36,"context_line":"        \u0027floatingip_id\u0027: obj_fields.UUIDField(),"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba5da102_691b2773","line":33,"range":{"start_line":32,"start_character":4,"end_line":33,"end_character":16},"in_reply_to":"ba5da102_69041115","updated":"2016-10-27 19:58:18.000000000","message":"Done","commit_id":"1c73cd3ec1d9fc3959cfaf9af462a354865bca3a"}],"neutron/objects/network.py":[{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"a42432660efccc61aa744eb0d24ae2c8469d6983","unresolved":false,"context_lines":[{"line_number":167,"context_line":"        self.obj_reset_changes([\u0027qos_policy_id\u0027])"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    def _set_dns_domain(self, dns_domain):"},{"line_number":170,"context_line":"        obj_db_api.delete_objects(self.obj_context,"},{"line_number":171,"context_line":"            dns_models.NetworkDNSDomain, network_id\u003dself.id)"},{"line_number":172,"context_line":"        if dns_domain:"},{"line_number":173,"context_line":"            NetworkDNSDomain(self.obj_context,"},{"line_number":174,"context_line":"                network_id\u003dself.id, dns_domain\u003ddns_domain).create()"}],"source_content_type":"text/x-python","patch_set":10,"id":"da6895a0_9413f065","line":171,"range":{"start_line":170,"start_character":8,"end_line":171,"end_character":60},"updated":"2016-10-25 23:49:04.000000000","message":"shouldn\u0027t you instead do\n\nNetworkDNSDomain.get_objects(self.obj_context, network_id\u003dself.id)\n\nand then loop through all of them calling .delete() on them?","commit_id":"e88d03119c2bc8856a0ecd5a8f08e2c93af2447f"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"34fab2a5088d6d3328d88c002443f2e426c37792","unresolved":false,"context_lines":[{"line_number":167,"context_line":"        self.obj_reset_changes([\u0027qos_policy_id\u0027])"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    def _set_dns_domain(self, dns_domain):"},{"line_number":170,"context_line":"        obj_db_api.delete_objects(self.obj_context,"},{"line_number":171,"context_line":"            dns_models.NetworkDNSDomain, network_id\u003dself.id)"},{"line_number":172,"context_line":"        if dns_domain:"},{"line_number":173,"context_line":"            NetworkDNSDomain(self.obj_context,"},{"line_number":174,"context_line":"                network_id\u003dself.id, dns_domain\u003ddns_domain).create()"}],"source_content_type":"text/x-python","patch_set":10,"id":"da6895a0_ff91659a","line":171,"range":{"start_line":170,"start_character":8,"end_line":171,"end_character":60},"in_reply_to":"da6895a0_9413f065","updated":"2016-10-26 00:12:01.000000000","message":"I can recall that\u0027s being done somewhere in this file, I\u0027ll look onto it and do that if needed","commit_id":"e88d03119c2bc8856a0ecd5a8f08e2c93af2447f"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"a42432660efccc61aa744eb0d24ae2c8469d6983","unresolved":false,"context_lines":[{"line_number":227,"context_line":""},{"line_number":228,"context_line":"    primary_keys \u003d [\u0027network_id\u0027]"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    foreign_keys \u003d {\u0027Network\u0027: {\u0027network_id\u0027: \u0027id\u0027}}"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    fields \u003d {"},{"line_number":233,"context_line":"        \u0027network_id\u0027: obj_fields.UUIDField(),"}],"source_content_type":"text/x-python","patch_set":10,"id":"da6895a0_b4163453","line":230,"updated":"2016-10-25 23:49:04.000000000","message":"no network synthetic field?","commit_id":"e88d03119c2bc8856a0ecd5a8f08e2c93af2447f"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"61d87df8bf1f6e414b57df5769ee96f705c98f9f","unresolved":false,"context_lines":[{"line_number":244,"context_line":""},{"line_number":245,"context_line":"    primary_keys \u003d [\u0027network_id\u0027]"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"    foreign_keys \u003d {\u0027Network\u0027: {\u0027network_id\u0027: \u0027id\u0027}}"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"    fields \u003d {"},{"line_number":250,"context_line":"        \u0027network_id\u0027: obj_fields.UUIDField(),"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba5da102_69eed123","line":247,"range":{"start_line":247,"start_character":4,"end_line":247,"end_character":52},"updated":"2016-10-27 14:50:59.000000000","message":"Given that there is no synthetic field in Network OVO, this foreign key is not required.","commit_id":"1c73cd3ec1d9fc3959cfaf9af462a354865bca3a"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"15f4cec3d24282489fcbf0cd8e37880fb0fff19d","unresolved":false,"context_lines":[{"line_number":244,"context_line":""},{"line_number":245,"context_line":"    primary_keys \u003d [\u0027network_id\u0027]"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"    foreign_keys \u003d {\u0027Network\u0027: {\u0027network_id\u0027: \u0027id\u0027}}"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"    fields \u003d {"},{"line_number":250,"context_line":"        \u0027network_id\u0027: obj_fields.UUIDField(),"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba5da102_8926bbb8","line":247,"range":{"start_line":247,"start_character":4,"end_line":247,"end_character":52},"in_reply_to":"ba5da102_69eed123","updated":"2016-10-27 19:58:18.000000000","message":"Done","commit_id":"1c73cd3ec1d9fc3959cfaf9af462a354865bca3a"}],"neutron/plugins/ml2/extensions/dns_integration.py":[{"author":{"_account_id":14611,"name":"dasm","display_name":"dasm","email":"dsmigiel@redhat.com","username":"dasm"},"change_message_id":"648c648971892c11109b18205277f0b7bceb95c3","unresolved":false,"context_lines":[{"line_number":79,"context_line":"            net_dns_domain \u003d dns_obj.NetworkDNSDomain(plugin_context,"},{"line_number":80,"context_line":"                                                      network_id\u003dnet_id,"},{"line_number":81,"context_line":"                                                      dns_domain\u003dnew_value)"},{"line_number":82,"context_line":"            net_dns_domain.create()"},{"line_number":83,"context_line":"            db_data[dns.DNSDOMAIN] \u003d new_value"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def process_create_port(self, plugin_context, request_data, db_data):"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa6399be_d5878b10","line":82,"updated":"2016-10-11 02:26:38.000000000","message":"Could you move this line below @83, just for consistency with 72-74?","commit_id":"6a5f3c0bb752f4f9cf85d6614086fa8b350dff76"},{"author":{"_account_id":14611,"name":"dasm","display_name":"dasm","email":"dsmigiel@redhat.com","username":"dasm"},"change_message_id":"8d1607177434821f1a8391dd11d49ceef0274453","unresolved":false,"context_lines":[{"line_number":79,"context_line":"            net_dns_domain \u003d dns_obj.NetworkDNSDomain(plugin_context,"},{"line_number":80,"context_line":"                                                      network_id\u003dnet_id,"},{"line_number":81,"context_line":"                                                      dns_domain\u003dnew_value)"},{"line_number":82,"context_line":"            net_dns_domain.create()"},{"line_number":83,"context_line":"            db_data[dns.DNSDOMAIN] \u003d new_value"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def process_create_port(self, plugin_context, request_data, db_data):"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa6399be_648fc123","line":82,"in_reply_to":"fa6399be_51360f04","updated":"2016-10-11 22:58:38.000000000","message":"ack","commit_id":"6a5f3c0bb752f4f9cf85d6614086fa8b350dff76"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"21732bda84c8b6184d58e3a2e89f35239ae2285c","unresolved":false,"context_lines":[{"line_number":79,"context_line":"            net_dns_domain \u003d dns_obj.NetworkDNSDomain(plugin_context,"},{"line_number":80,"context_line":"                                                      network_id\u003dnet_id,"},{"line_number":81,"context_line":"                                                      dns_domain\u003dnew_value)"},{"line_number":82,"context_line":"            net_dns_domain.create()"},{"line_number":83,"context_line":"            db_data[dns.DNSDOMAIN] \u003d new_value"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def process_create_port(self, plugin_context, request_data, db_data):"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa6399be_51360f04","line":82,"in_reply_to":"fa6399be_d5878b10","updated":"2016-10-11 16:08:41.000000000","message":"I think i\u0027ll keep as it is. before setting db_data[dns_domain] to new value session.add was called so which will be done on create call","commit_id":"6a5f3c0bb752f4f9cf85d6614086fa8b350dff76"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"9b72ef056d5f21446ebf5f3f07ec8156a8e08b84","unresolved":false,"context_lines":[{"line_number":48,"context_line":"            return"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        if dns_domain:"},{"line_number":51,"context_line":"            net_dns_domain \u003d dns_obj.NetworkDNSDomain(plugin_context,"},{"line_number":52,"context_line":"                                                      network_id\u003ddb_data[\u0027id\u0027],"},{"line_number":53,"context_line":"                                                      dns_domain\u003ddns_domain)"},{"line_number":54,"context_line":"            net_dns_domain.create()"},{"line_number":55,"context_line":"        db_data[dns.DNSDOMAIN] \u003d dns_domain"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def process_update_network(self, plugin_context, request_data, db_data):"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa6399be_59721c12","line":54,"range":{"start_line":51,"start_character":12,"end_line":54,"end_character":35},"updated":"2016-10-14 15:55:25.000000000","message":"Usually Trevor makes this suggestion, so you don\u0027t need to keep a reference to delete it.","commit_id":"88a09eca459d2ccb6dc821c0eb3bb341d0ea86c7"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"c816c6ec6eb9673e31669b7d392823e456e9e6cb","unresolved":false,"context_lines":[{"line_number":48,"context_line":"            return"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        if dns_domain:"},{"line_number":51,"context_line":"            net_dns_domain \u003d dns_obj.NetworkDNSDomain(plugin_context,"},{"line_number":52,"context_line":"                                                      network_id\u003ddb_data[\u0027id\u0027],"},{"line_number":53,"context_line":"                                                      dns_domain\u003ddns_domain)"},{"line_number":54,"context_line":"            net_dns_domain.create()"},{"line_number":55,"context_line":"        db_data[dns.DNSDOMAIN] \u003d dns_domain"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def process_update_network(self, plugin_context, request_data, db_data):"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa6399be_6a2c4e99","line":54,"range":{"start_line":51,"start_character":12,"end_line":54,"end_character":35},"in_reply_to":"fa6399be_59721c12","updated":"2016-10-15 01:18:16.000000000","message":"Done","commit_id":"88a09eca459d2ccb6dc821c0eb3bb341d0ea86c7"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"9b72ef056d5f21446ebf5f3f07ec8156a8e08b84","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        net_id \u003d db_data[\u0027id\u0027]"},{"line_number":67,"context_line":"        if current_dns_domain:"},{"line_number":68,"context_line":"            net_dns_domain \u003d dns_obj.NetworkDNSDomain.get_one_object("},{"line_number":69,"context_line":"                plugin_context,"},{"line_number":70,"context_line":"                network_id\u003dnet_id)"},{"line_number":71,"context_line":"            if new_value:"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa6399be_9966744f","line":68,"range":{"start_line":68,"start_character":54,"end_line":68,"end_character":68},"updated":"2016-10-14 15:55:25.000000000","message":"If this method can raise an exception where the criteria is not meet, should be need to keep it in a try/except block?","commit_id":"88a09eca459d2ccb6dc821c0eb3bb341d0ea86c7"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"8b531bcc5ecf8ae62bef97c0ba4931bf773cd032","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        net_id \u003d db_data[\u0027id\u0027]"},{"line_number":67,"context_line":"        if current_dns_domain:"},{"line_number":68,"context_line":"            net_dns_domain \u003d dns_obj.NetworkDNSDomain.get_one_object("},{"line_number":69,"context_line":"                plugin_context,"},{"line_number":70,"context_line":"                network_id\u003dnet_id)"},{"line_number":71,"context_line":"            if new_value:"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa6399be_3c5556c5","line":68,"range":{"start_line":68,"start_character":54,"end_line":68,"end_character":68},"in_reply_to":"fa6399be_9966744f","updated":"2016-10-14 16:02:23.000000000","message":"In my opinion no. If we get that exception, something broke in the code and we should let the exception bubble up","commit_id":"88a09eca459d2ccb6dc821c0eb3bb341d0ea86c7"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"9b72ef056d5f21446ebf5f3f07ec8156a8e08b84","unresolved":false,"context_lines":[{"line_number":76,"context_line":"                net_dns_domain.delete()"},{"line_number":77,"context_line":"                db_data[dns.DNSDOMAIN] \u003d \u0027\u0027"},{"line_number":78,"context_line":"        elif new_value:"},{"line_number":79,"context_line":"            net_dns_domain \u003d dns_obj.NetworkDNSDomain(plugin_context,"},{"line_number":80,"context_line":"                                                      network_id\u003dnet_id,"},{"line_number":81,"context_line":"                                                      dns_domain\u003dnew_value)"},{"line_number":82,"context_line":"            net_dns_domain.create()"},{"line_number":83,"context_line":"            db_data[dns.DNSDOMAIN] \u003d new_value"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def process_create_port(self, plugin_context, request_data, db_data):"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa6399be_1953446c","line":82,"range":{"start_line":79,"start_character":12,"end_line":82,"end_character":35},"updated":"2016-10-14 15:55:25.000000000","message":"ditto: line 51","commit_id":"88a09eca459d2ccb6dc821c0eb3bb341d0ea86c7"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"c816c6ec6eb9673e31669b7d392823e456e9e6cb","unresolved":false,"context_lines":[{"line_number":76,"context_line":"                net_dns_domain.delete()"},{"line_number":77,"context_line":"                db_data[dns.DNSDOMAIN] \u003d \u0027\u0027"},{"line_number":78,"context_line":"        elif new_value:"},{"line_number":79,"context_line":"            net_dns_domain \u003d dns_obj.NetworkDNSDomain(plugin_context,"},{"line_number":80,"context_line":"                                                      network_id\u003dnet_id,"},{"line_number":81,"context_line":"                                                      dns_domain\u003dnew_value)"},{"line_number":82,"context_line":"            net_dns_domain.create()"},{"line_number":83,"context_line":"            db_data[dns.DNSDOMAIN] \u003d new_value"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def process_create_port(self, plugin_context, request_data, db_data):"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa6399be_4a294a89","line":82,"range":{"start_line":79,"start_character":12,"end_line":82,"end_character":35},"in_reply_to":"fa6399be_1953446c","updated":"2016-10-15 01:18:16.000000000","message":"Done","commit_id":"88a09eca459d2ccb6dc821c0eb3bb341d0ea86c7"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"9b72ef056d5f21446ebf5f3f07ec8156a8e08b84","unresolved":false,"context_lines":[{"line_number":98,"context_line":"            current_dns_name \u003d dns_name"},{"line_number":99,"context_line":"            current_dns_domain \u003d network[dns.DNSDOMAIN]"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        dns_data_obj \u003d port_obj.PortDNS(plugin_context,"},{"line_number":102,"context_line":"                                        port_id\u003ddb_data[\u0027id\u0027],"},{"line_number":103,"context_line":"                                        current_dns_name\u003dcurrent_dns_name,"},{"line_number":104,"context_line":"                                        current_dns_domain\u003dcurrent_dns_domain,"},{"line_number":105,"context_line":"                                        previous_dns_name\u003d\u0027\u0027,"},{"line_number":106,"context_line":"                                        previous_dns_domain\u003d\u0027\u0027,"},{"line_number":107,"context_line":"                                        dns_name\u003ddns_name)"},{"line_number":108,"context_line":"        dns_data_obj.create()"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def _update_dns_db(self, dns_name, dns_domain, db_data,"},{"line_number":111,"context_line":"                      plugin_context, has_fixed_ips):"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa6399be_79ca801c","line":108,"range":{"start_line":101,"start_character":8,"end_line":108,"end_character":29},"updated":"2016-10-14 15:55:25.000000000","message":"ditto: line 51","commit_id":"88a09eca459d2ccb6dc821c0eb3bb341d0ea86c7"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"c816c6ec6eb9673e31669b7d392823e456e9e6cb","unresolved":false,"context_lines":[{"line_number":98,"context_line":"            current_dns_name \u003d dns_name"},{"line_number":99,"context_line":"            current_dns_domain \u003d network[dns.DNSDOMAIN]"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        dns_data_obj \u003d port_obj.PortDNS(plugin_context,"},{"line_number":102,"context_line":"                                        port_id\u003ddb_data[\u0027id\u0027],"},{"line_number":103,"context_line":"                                        current_dns_name\u003dcurrent_dns_name,"},{"line_number":104,"context_line":"                                        current_dns_domain\u003dcurrent_dns_domain,"},{"line_number":105,"context_line":"                                        previous_dns_name\u003d\u0027\u0027,"},{"line_number":106,"context_line":"                                        previous_dns_domain\u003d\u0027\u0027,"},{"line_number":107,"context_line":"                                        dns_name\u003ddns_name)"},{"line_number":108,"context_line":"        dns_data_obj.create()"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def _update_dns_db(self, dns_name, dns_domain, db_data,"},{"line_number":111,"context_line":"                      plugin_context, has_fixed_ips):"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa6399be_2a189674","line":108,"range":{"start_line":101,"start_character":8,"end_line":108,"end_character":29},"in_reply_to":"fa6399be_79ca801c","updated":"2016-10-15 01:18:16.000000000","message":"Done","commit_id":"88a09eca459d2ccb6dc821c0eb3bb341d0ea86c7"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"9b72ef056d5f21446ebf5f3f07ec8156a8e08b84","unresolved":false,"context_lines":[{"line_number":354,"context_line":"    port \u003d kwargs[\u0027port\u0027]"},{"line_number":355,"context_line":"    dns_data_db \u003d port_obj.PortDNS.get_object("},{"line_number":356,"context_line":"        context,"},{"line_number":357,"context_line":"        port_id\u003dport[\u0027id\u0027])"},{"line_number":358,"context_line":"    if not (dns_data_db and dns_data_db[\u0027current_dns_name\u0027]):"},{"line_number":359,"context_line":"        return"},{"line_number":360,"context_line":"    records \u003d [ip[\u0027ip_address\u0027] for ip in port[\u0027fixed_ips\u0027]]"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa6399be_39e568a7","line":357,"range":{"start_line":357,"start_character":8,"end_line":357,"end_character":27},"updated":"2016-10-14 15:55:25.000000000","message":"nit: this line can easily fits in the previous one","commit_id":"88a09eca459d2ccb6dc821c0eb3bb341d0ea86c7"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"c816c6ec6eb9673e31669b7d392823e456e9e6cb","unresolved":false,"context_lines":[{"line_number":354,"context_line":"    port \u003d kwargs[\u0027port\u0027]"},{"line_number":355,"context_line":"    dns_data_db \u003d port_obj.PortDNS.get_object("},{"line_number":356,"context_line":"        context,"},{"line_number":357,"context_line":"        port_id\u003dport[\u0027id\u0027])"},{"line_number":358,"context_line":"    if not (dns_data_db and dns_data_db[\u0027current_dns_name\u0027]):"},{"line_number":359,"context_line":"        return"},{"line_number":360,"context_line":"    records \u003d [ip[\u0027ip_address\u0027] for ip in port[\u0027fixed_ips\u0027]]"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa6399be_0a1d9265","line":357,"range":{"start_line":357,"start_character":8,"end_line":357,"end_character":27},"in_reply_to":"fa6399be_39e568a7","updated":"2016-10-15 01:18:16.000000000","message":"Done","commit_id":"88a09eca459d2ccb6dc821c0eb3bb341d0ea86c7"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"9b72ef056d5f21446ebf5f3f07ec8156a8e08b84","unresolved":false,"context_lines":[{"line_number":411,"context_line":"        return"},{"line_number":412,"context_line":"    dns_data_db \u003d port_obj.PortDNS.get_object("},{"line_number":413,"context_line":"        context,"},{"line_number":414,"context_line":"        port_id\u003dupdated_port[\u0027id\u0027])"},{"line_number":415,"context_line":"    if not (dns_data_db and (dns_data_db[\u0027previous_dns_name\u0027] or dns_data_db["},{"line_number":416,"context_line":"        \u0027current_dns_name\u0027])):"},{"line_number":417,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa6399be_39fc883d","line":414,"range":{"start_line":414,"start_character":8,"end_line":414,"end_character":35},"updated":"2016-10-14 15:55:25.000000000","message":"ditto: line 357","commit_id":"88a09eca459d2ccb6dc821c0eb3bb341d0ea86c7"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"c816c6ec6eb9673e31669b7d392823e456e9e6cb","unresolved":false,"context_lines":[{"line_number":411,"context_line":"        return"},{"line_number":412,"context_line":"    dns_data_db \u003d port_obj.PortDNS.get_object("},{"line_number":413,"context_line":"        context,"},{"line_number":414,"context_line":"        port_id\u003dupdated_port[\u0027id\u0027])"},{"line_number":415,"context_line":"    if not (dns_data_db and (dns_data_db[\u0027previous_dns_name\u0027] or dns_data_db["},{"line_number":416,"context_line":"        \u0027current_dns_name\u0027])):"},{"line_number":417,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa6399be_ea113e53","line":414,"range":{"start_line":414,"start_character":8,"end_line":414,"end_character":35},"in_reply_to":"fa6399be_39fc883d","updated":"2016-10-15 01:18:16.000000000","message":"Done","commit_id":"88a09eca459d2ccb6dc821c0eb3bb341d0ea86c7"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"9b72ef056d5f21446ebf5f3f07ec8156a8e08b84","unresolved":false,"context_lines":[{"line_number":434,"context_line":"    port_id \u003d kwargs[\u0027port_id\u0027]"},{"line_number":435,"context_line":"    dns_data_db \u003d port_obj.PortDNS.get_object("},{"line_number":436,"context_line":"        context,"},{"line_number":437,"context_line":"        port_id\u003dport_id)"},{"line_number":438,"context_line":"    if not dns_data_db:"},{"line_number":439,"context_line":"        return"},{"line_number":440,"context_line":"    if dns_data_db[\u0027current_dns_name\u0027]:"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa6399be_999bd417","line":437,"range":{"start_line":437,"start_character":8,"end_line":437,"end_character":24},"updated":"2016-10-14 15:55:25.000000000","message":"ditto: line 357","commit_id":"88a09eca459d2ccb6dc821c0eb3bb341d0ea86c7"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"c816c6ec6eb9673e31669b7d392823e456e9e6cb","unresolved":false,"context_lines":[{"line_number":434,"context_line":"    port_id \u003d kwargs[\u0027port_id\u0027]"},{"line_number":435,"context_line":"    dns_data_db \u003d port_obj.PortDNS.get_object("},{"line_number":436,"context_line":"        context,"},{"line_number":437,"context_line":"        port_id\u003dport_id)"},{"line_number":438,"context_line":"    if not dns_data_db:"},{"line_number":439,"context_line":"        return"},{"line_number":440,"context_line":"    if dns_data_db[\u0027current_dns_name\u0027]:"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa6399be_aa0bc622","line":437,"range":{"start_line":437,"start_character":8,"end_line":437,"end_character":24},"in_reply_to":"fa6399be_999bd417","updated":"2016-10-15 01:18:16.000000000","message":"Done","commit_id":"88a09eca459d2ccb6dc821c0eb3bb341d0ea86c7"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"0db73bfa0ab0b9ee32d23cafc636d16cac8889f4","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        net_id \u003d db_data[\u0027id\u0027]"},{"line_number":66,"context_line":"        if current_dns_domain:"},{"line_number":67,"context_line":"            net_dns_domain \u003d dns_obj.NetworkDNSDomain.get_one_object("},{"line_number":68,"context_line":"                plugin_context,"},{"line_number":69,"context_line":"                network_id\u003dnet_id)"},{"line_number":70,"context_line":"            if new_value:"}],"source_content_type":"text/x-python","patch_set":9,"id":"da6895a0_d38c0c38","line":67,"range":{"start_line":67,"start_character":54,"end_line":67,"end_character":69},"updated":"2016-10-20 21:25:00.000000000","message":"I don\u0027t follow why we can\u0027t use existing get_object here? I think that if we reached here, meaning current_dns_domain is not empty, then the needed object is in the database.","commit_id":"549d2a0463eda7a9234fd8b107ae417d7b5e5bc2"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"800bc2475da4333e8bfeed6b2d39229d52bee754","unresolved":false,"context_lines":[{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    def _update_dns_db(self, dns_name, dns_domain, db_data,"},{"line_number":108,"context_line":"                      plugin_context, has_fixed_ips):"},{"line_number":109,"context_line":"        dns_data_db \u003d port_obj.PortDNS.get_object("},{"line_number":110,"context_line":"            plugin_context,"},{"line_number":111,"context_line":"            port_id\u003ddb_data[\u0027id\u0027])"},{"line_number":112,"context_line":"        if dns_data_db:"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa6399be_d153e637","line":109,"range":{"start_line":109,"start_character":39,"end_line":109,"end_character":49},"updated":"2016-10-18 22:59:20.000000000","message":"The way this method translates in the objects db layer (https://github.com/openstack/neutron/blob/master/neutron/objects/db/api.py#L33) is not same as what we are replacing here, i.e. sqlalchemy session method one_or_none. The former returns the first result of many whereas the latter returns one or none and if many are found, it generates an exception. In this case, it doesn\u0027t really matter, since we are querying the DB by port_id, which is the primary key for this table. So, it effectively behaves as one_or_none anyway. However, since you are adding this https://review.openstack.org/#/c/386875, it got me thinking if we should add a one_or_none method to objects for other cases. Just thinking aloud","commit_id":"549d2a0463eda7a9234fd8b107ae417d7b5e5bc2"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"6936534e88462fc8923fcb3991d4d0aad3e0f7da","unresolved":false,"context_lines":[{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    def _update_dns_db(self, dns_name, dns_domain, db_data,"},{"line_number":108,"context_line":"                      plugin_context, has_fixed_ips):"},{"line_number":109,"context_line":"        dns_data_db \u003d port_obj.PortDNS.get_object("},{"line_number":110,"context_line":"            plugin_context,"},{"line_number":111,"context_line":"            port_id\u003ddb_data[\u0027id\u0027])"},{"line_number":112,"context_line":"        if dns_data_db:"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa6399be_bc580958","line":109,"range":{"start_line":109,"start_character":39,"end_line":109,"end_character":49},"in_reply_to":"fa6399be_d153e637","updated":"2016-10-18 23:41:41.000000000","message":"i can do that, the primary key was the reason i didn\u0027t do that, it made me lazy but i\u0027ll add in the other patch where i added one ()","commit_id":"549d2a0463eda7a9234fd8b107ae417d7b5e5bc2"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"a42432660efccc61aa744eb0d24ae2c8469d6983","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        if current_dns_domain:"},{"line_number":67,"context_line":"            net_dns_domain \u003d net_obj.NetworkDNSDomain.get_object("},{"line_number":68,"context_line":"                plugin_context,"},{"line_number":69,"context_line":"                network_id\u003dnet_id)"},{"line_number":70,"context_line":"            if new_value:"},{"line_number":71,"context_line":"                net_dns_domain[\u0027dns_domain\u0027] \u003d new_value"},{"line_number":72,"context_line":"                db_data[dns.DNSDOMAIN] \u003d new_value"}],"source_content_type":"text/x-python","patch_set":10,"id":"da6895a0_f408ac2f","line":69,"updated":"2016-10-25 23:49:04.000000000","message":"previous query used one(), which mean it would throw an exception if no result is found.  Should the code check if net_dns_domain is None and if so throw an exception?","commit_id":"e88d03119c2bc8856a0ecd5a8f08e2c93af2447f"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"d669ff25f1f32de359067b09ad70e55b486ac8ce","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        if current_dns_domain:"},{"line_number":67,"context_line":"            net_dns_domain \u003d net_obj.NetworkDNSDomain.get_object("},{"line_number":68,"context_line":"                plugin_context,"},{"line_number":69,"context_line":"                network_id\u003dnet_id)"},{"line_number":70,"context_line":"            if new_value:"},{"line_number":71,"context_line":"                net_dns_domain[\u0027dns_domain\u0027] \u003d new_value"},{"line_number":72,"context_line":"                db_data[dns.DNSDOMAIN] \u003d new_value"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba5da102_3e17bf52","line":69,"in_reply_to":"da6895a0_1f8d397b","updated":"2016-10-26 19:45:43.000000000","message":"If nothing in the call stack handles the NoResultFound exception, then I don\u0027t see a need to add the code to raise it.","commit_id":"e88d03119c2bc8856a0ecd5a8f08e2c93af2447f"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"34fab2a5088d6d3328d88c002443f2e426c37792","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        if current_dns_domain:"},{"line_number":67,"context_line":"            net_dns_domain \u003d net_obj.NetworkDNSDomain.get_object("},{"line_number":68,"context_line":"                plugin_context,"},{"line_number":69,"context_line":"                network_id\u003dnet_id)"},{"line_number":70,"context_line":"            if new_value:"},{"line_number":71,"context_line":"                net_dns_domain[\u0027dns_domain\u0027] \u003d new_value"},{"line_number":72,"context_line":"                db_data[dns.DNSDOMAIN] \u003d new_value"}],"source_content_type":"text/x-python","patch_set":10,"id":"da6895a0_1f8d397b","line":69,"in_reply_to":"da6895a0_f408ac2f","updated":"2016-10-26 00:12:01.000000000","message":"i\u0027ll add code for it","commit_id":"e88d03119c2bc8856a0ecd5a8f08e2c93af2447f"},{"author":{"_account_id":15518,"name":"Artur Korzeniewski","email":"artur.korzen@wp.pl","username":"akorzeni"},"change_message_id":"73223ec5fe8c6ecca732bc9ad7d9ef965223e1b6","unresolved":false,"context_lines":[{"line_number":165,"context_line":"        else:"},{"line_number":166,"context_line":"            dns_data_db \u003d self._update_dns_db(dns_name, dns_domain, db_data,"},{"line_number":167,"context_line":"                                              plugin_context, has_fixed_ips)"},{"line_number":168,"context_line":"        self._extend_port_dict(plugin_context.session, db_data, db_data,"},{"line_number":169,"context_line":"                               dns_data_db)"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"    def _process_only_dns_name_update(self, plugin_context, db_data, dns_name):"},{"line_number":172,"context_line":"        dns_data_db \u003d port_obj.PortDNS.get_object("}],"source_content_type":"text/x-python","patch_set":13,"id":"9a629dbe_f202dc71","line":169,"range":{"start_line":168,"start_character":8,"end_line":169,"end_character":43},"updated":"2016-11-14 10:10:20.000000000","message":"We are here passing PortDNS OVO into extension function. Should we pass dns_data_db.db_obj?","commit_id":"837abf5d4d4ce7cf1c0d120bdd15de877106e698"}],"neutron/tests/unit/objects/test_dns.py":[{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"9b72ef056d5f21446ebf5f3f07ec8156a8e08b84","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"class FloatingIPDNSDbObjectTestcase(object):"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    # TODO(manjeets): Add Dbobjecttests after create_external"},{"line_number":51,"context_line":"    # network is added in test_base.py."},{"line_number":52,"context_line":"    pass"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa6399be_598e9cd0","line":52,"range":{"start_line":50,"start_character":4,"end_line":52,"end_character":8},"updated":"2016-10-14 15:55:25.000000000","message":"You\u0027re completing this TODO in another patch[1], why don\u0027t you squash them there.\n\n[1] https://review.openstack.org/#/c/369744/12/neutron/tests/unit/objects/test_dns.py","commit_id":"88a09eca459d2ccb6dc821c0eb3bb341d0ea86c7"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"c816c6ec6eb9673e31669b7d392823e456e9e6cb","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"class FloatingIPDNSDbObjectTestcase(object):"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    # TODO(manjeets): Add Dbobjecttests after create_external"},{"line_number":51,"context_line":"    # network is added in test_base.py."},{"line_number":52,"context_line":"    pass"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa6399be_8a560204","line":52,"range":{"start_line":50,"start_character":4,"end_line":52,"end_character":8},"in_reply_to":"fa6399be_598e9cd0","updated":"2016-10-15 01:18:16.000000000","message":"i\u0027ll remove it from this patch","commit_id":"88a09eca459d2ccb6dc821c0eb3bb341d0ea86c7"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"3810db0a85065ab30f452741768b5262d8bc6767","unresolved":false,"context_lines":[{"line_number":42,"context_line":"class FloatingIPDNSIfaceObjectTestcase("},{"line_number":43,"context_line":"        obj_test_base.BaseObjectIfaceTestCase):"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    _test_class \u003d dns.FloatingIPDNS"}],"source_content_type":"text/x-python","patch_set":9,"id":"da6895a0_2e3f9b26","line":45,"updated":"2016-10-20 22:03:10.000000000","message":"where is db test class for the object?","commit_id":"549d2a0463eda7a9234fd8b107ae417d7b5e5bc2"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"64a0b0370d72688437a4ffdb0af92b2cfc22c468","unresolved":false,"context_lines":[{"line_number":42,"context_line":"class FloatingIPDNSIfaceObjectTestcase("},{"line_number":43,"context_line":"        obj_test_base.BaseObjectIfaceTestCase):"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    _test_class \u003d dns.FloatingIPDNS"}],"source_content_type":"text/x-python","patch_set":9,"id":"da6895a0_8e90a7ee","line":45,"in_reply_to":"da6895a0_2e3f9b26","updated":"2016-10-20 22:12:15.000000000","message":"https://review.openstack.org/#/c/369744/14/neutron/tests/unit/objects/test_dns.py, I can squash, Initially I implemented port and network dns and did floatingip separately and committed on top of this","commit_id":"549d2a0463eda7a9234fd8b107ae417d7b5e5bc2"}],"neutron/tests/unit/objects/test_floatingip.py":[{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"61d87df8bf1f6e414b57df5769ee96f705c98f9f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"ba5da102_9ed196fe","line":24,"updated":"2016-10-27 14:50:59.000000000","message":"I think that you can include the DbObjectTescase here\n\nhttps://review.openstack.org/#/c/369744/14/neutron/tests/unit/objects/test_dns.py@46","commit_id":"1c73cd3ec1d9fc3959cfaf9af462a354865bca3a"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"15f4cec3d24282489fcbf0cd8e37880fb0fff19d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"ba5da102_a92b7f81","line":24,"in_reply_to":"ba5da102_9ed196fe","updated":"2016-10-27 19:58:18.000000000","message":"squeezed into one patch","commit_id":"1c73cd3ec1d9fc3959cfaf9af462a354865bca3a"}]}
