)]}'
{"networking_ovn/ml2/mech_driver.py":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"8b89d5b5f65ce496df7e6611d73c7636143cca28","unresolved":false,"context_lines":[{"line_number":799,"context_line":"                dhcpv6_options \u003d txn.add(ovn_port_info.dhcpv6_options[\u0027cmd\u0027])"},{"line_number":800,"context_line":"            else:"},{"line_number":801,"context_line":"                dhcpv6_options \u003d [ovn_port_info.dhcpv6_options[\u0027uuid\u0027]]"},{"line_number":802,"context_line":""},{"line_number":803,"context_line":"            # NOTE(lizk): Fail port updating if port doesn\u0027t exist. This"},{"line_number":804,"context_line":"            # prevents any new inserted resources to be orphan, such as port"},{"line_number":805,"context_line":"            # dhcp options or ACL rules for port, e.g. a port was created"}],"source_content_type":"text/x-python","patch_set":1,"id":"7ffa3b31_a8b542cf","line":802,"updated":"2017-04-19 11:56:43.000000000","message":"unrelated change, will remove","commit_id":"b4584d01a6c159afe2fcc7e679ceaa8581fc1bd1"},{"author":{"_account_id":23458,"name":"Dong Jun","email":"dongjun.01@bytedance.com","username":"Dongj"},"change_message_id":"40037315dff758b4531bf0b08dc791cea7ec2265","unresolved":false,"context_lines":[{"line_number":767,"context_line":"        ovn_port_info \u003d self.get_ovn_port_options(port, qos_options)"},{"line_number":768,"context_line":"        self._update_port_in_ovn(original_port, port, ovn_port_info)"},{"line_number":769,"context_line":"        # Acknowledge Neutron that DHCP has been updated"},{"line_number":770,"context_line":"        provisioning_blocks.provisioning_complete("},{"line_number":771,"context_line":"            n_context.get_admin_context(), port[\u0027id\u0027], resources.PORT,"},{"line_number":772,"context_line":"            provisioning_blocks.DHCP_ENTITY)"},{"line_number":773,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7ffa3b31_d902a209","line":770,"range":{"start_line":770,"start_character":8,"end_line":770,"end_character":49},"updated":"2017-04-19 13:08:30.000000000","message":"I suggest adding this to create_port_postcommit and update_port_postcommit","commit_id":"f2e052192c75e12bf1d75b43b4ea8b1ab87b3347"},{"author":{"_account_id":23458,"name":"Dong Jun","email":"dongjun.01@bytedance.com","username":"Dongj"},"change_message_id":"40037315dff758b4531bf0b08dc791cea7ec2265","unresolved":false,"context_lines":[{"line_number":767,"context_line":"        ovn_port_info \u003d self.get_ovn_port_options(port, qos_options)"},{"line_number":768,"context_line":"        self._update_port_in_ovn(original_port, port, ovn_port_info)"},{"line_number":769,"context_line":"        # Acknowledge Neutron that DHCP has been updated"},{"line_number":770,"context_line":"        provisioning_blocks.provisioning_complete("},{"line_number":771,"context_line":"            n_context.get_admin_context(), port[\u0027id\u0027], resources.PORT,"},{"line_number":772,"context_line":"            provisioning_blocks.DHCP_ENTITY)"},{"line_number":773,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7ffa3b31_3e816c90","line":770,"range":{"start_line":770,"start_character":8,"end_line":770,"end_character":49},"updated":"2017-04-19 13:08:30.000000000","message":"_setup_dhcp_agent_provisioning_component is called in both creating port and updating port.","commit_id":"f2e052192c75e12bf1d75b43b4ea8b1ab87b3347"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"fe4b87d3ffa248718517506680538927be73ffc9","unresolved":false,"context_lines":[{"line_number":767,"context_line":"        ovn_port_info \u003d self.get_ovn_port_options(port, qos_options)"},{"line_number":768,"context_line":"        self._update_port_in_ovn(original_port, port, ovn_port_info)"},{"line_number":769,"context_line":"        # Acknowledge Neutron that DHCP has been updated"},{"line_number":770,"context_line":"        provisioning_blocks.provisioning_complete("},{"line_number":771,"context_line":"            n_context.get_admin_context(), port[\u0027id\u0027], resources.PORT,"},{"line_number":772,"context_line":"            provisioning_blocks.DHCP_ENTITY)"},{"line_number":773,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7ffa3b31_b93b56e9","line":770,"range":{"start_line":770,"start_character":8,"end_line":770,"end_character":49},"in_reply_to":"7ffa3b31_d902a209","updated":"2017-04-19 13:25:15.000000000","message":"Hi Dong,\n\nThanks for the suggestion... I will give it a go and see if works.","commit_id":"f2e052192c75e12bf1d75b43b4ea8b1ab87b3347"},{"author":{"_account_id":23458,"name":"Dong Jun","email":"dongjun.01@bytedance.com","username":"Dongj"},"change_message_id":"7fa770c2f4eb4f06a0b4250ff2230087869e554b","unresolved":false,"context_lines":[{"line_number":603,"context_line":"        port \u003d context.current"},{"line_number":604,"context_line":"        ovn_port_info \u003d self.get_ovn_port_options(port)"},{"line_number":605,"context_line":"        self.create_port_in_ovn(port, ovn_port_info)"},{"line_number":606,"context_line":"        if self._is_port_provisioning_required(port, context.host,"},{"line_number":607,"context_line":"                                               context.original_host):"},{"line_number":608,"context_line":"            self._notify_dhcp_updated(port[\u0027id\u0027])"},{"line_number":609,"context_line":""},{"line_number":610,"context_line":"    def _get_allowed_addresses_from_port(self, port):"}],"source_content_type":"text/x-python","patch_set":3,"id":"7ffa3b31_7b1b3b72","line":607,"range":{"start_line":606,"start_character":0,"end_line":607,"end_character":70},"updated":"2017-04-21 12:09:23.000000000","message":"_is_port_provisioning_required is used for ovn mech driver to add L2 provisioning component, the condition scope is different to that ml2 plugin used to add DHCP provisioning component. Seems that some completing would lost.","commit_id":"581c04ccab6ef7ed852afaac55b9e5024c79b7c3"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"270202daea789e780f9f3c7110eab3d9fad30273","unresolved":false,"context_lines":[{"line_number":603,"context_line":"        port \u003d context.current"},{"line_number":604,"context_line":"        ovn_port_info \u003d self.get_ovn_port_options(port)"},{"line_number":605,"context_line":"        self.create_port_in_ovn(port, ovn_port_info)"},{"line_number":606,"context_line":"        if self._is_port_provisioning_required(port, context.host,"},{"line_number":607,"context_line":"                                               context.original_host):"},{"line_number":608,"context_line":"            self._notify_dhcp_updated(port[\u0027id\u0027])"},{"line_number":609,"context_line":""},{"line_number":610,"context_line":"    def _get_allowed_addresses_from_port(self, port):"}],"source_content_type":"text/x-python","patch_set":3,"id":"5ff73747_5f45bd16","line":607,"range":{"start_line":606,"start_character":0,"end_line":607,"end_character":70},"in_reply_to":"7ffa3b31_7b1b3b72","updated":"2017-04-24 08:46:49.000000000","message":"Thanks Dong,\n\nI see it now, I thought I had to verify the is_port_provisioning_required() due to some checks (e.g: supported vnic type) prior to trying to update the provisioning block.","commit_id":"581c04ccab6ef7ed852afaac55b9e5024c79b7c3"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"944dcad9313a067574209363455dc93e60914d4d","unresolved":false,"context_lines":[{"line_number":694,"context_line":"            else:"},{"line_number":695,"context_line":"                dhcpv6_options \u003d [ovn_port_info.dhcpv6_options[\u0027uuid\u0027]]"},{"line_number":696,"context_line":""},{"line_number":697,"context_line":"            dhcp_has_changed \u003d any((dhcpv4_options, dhcpv6_options))"},{"line_number":698,"context_line":""},{"line_number":699,"context_line":"            # The lport_name *must* be neutron port[\u0027id\u0027].  It must match the"},{"line_number":700,"context_line":"            # iface-id set in the Interfaces table of the Open_vSwitch"}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_840f6c2d","line":697,"range":{"start_line":697,"start_character":31,"end_line":697,"end_character":68},"updated":"2017-04-24 14:36:25.000000000","message":"so if that doesn\u0027t match, we won\u0027t provision the block in neutron db, which will leave the port DOWN? Shouldn\u0027t we always provision the block once we handled the dhcp piece?","commit_id":"09ffba6fb0ee5c3757b0aea737b47d6238bff97e"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"9dc0575f9e295c4882edad478045df32b75006c2","unresolved":false,"context_lines":[{"line_number":694,"context_line":"            else:"},{"line_number":695,"context_line":"                dhcpv6_options \u003d [ovn_port_info.dhcpv6_options[\u0027uuid\u0027]]"},{"line_number":696,"context_line":""},{"line_number":697,"context_line":"            dhcp_has_changed \u003d any((dhcpv4_options, dhcpv6_options))"},{"line_number":698,"context_line":""},{"line_number":699,"context_line":"            # The lport_name *must* be neutron port[\u0027id\u0027].  It must match the"},{"line_number":700,"context_line":"            # iface-id set in the Interfaces table of the Open_vSwitch"}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_c7b696da","line":697,"range":{"start_line":697,"start_character":31,"end_line":697,"end_character":68},"in_reply_to":"5ff73747_840f6c2d","updated":"2017-04-24 15:16:11.000000000","message":"Oh that\u0027s for pointing this out, I think I misunderstood how it works I thought we only need to acknowledge if/when we made a DHCP change...\n\nBut looking more into it seems that we should always notify neutron.\n\nI will update the patch","commit_id":"09ffba6fb0ee5c3757b0aea737b47d6238bff97e"},{"author":{"_account_id":10237,"name":"Numan Siddique","email":"nusiddiq@redhat.com","username":"numansiddique"},"change_message_id":"37e7870b6ef15a5e64b5377122e4d1eedbeea9f8","unresolved":false,"context_lines":[{"line_number":770,"context_line":"        port \u003d context.current"},{"line_number":771,"context_line":"        original_port \u003d context.original"},{"line_number":772,"context_line":"        self.update_port(port, original_port)"},{"line_number":773,"context_line":"        self._notify_dhcp_updated(port[\u0027id\u0027])"},{"line_number":774,"context_line":""},{"line_number":775,"context_line":"    def update_port(self, port, original_port, qos_options\u003dNone):"},{"line_number":776,"context_line":"        ovn_port_info \u003d self.get_ovn_port_options(port, qos_options)"}],"source_content_type":"text/x-python","patch_set":5,"id":"5ff73747_b073c280","line":773,"updated":"2017-04-24 16:29:47.000000000","message":"You think this is required here ?\nAlthough no harm in having it.\n\nThe reason is that neutron would add the provisioning block when the port is created (in _create_port_db function).","commit_id":"d4d4c0a5b2b9f8c10f04a9a732fd4832d17b00ad"},{"author":{"_account_id":23458,"name":"Dong Jun","email":"dongjun.01@bytedance.com","username":"Dongj"},"change_message_id":"036c4c6ea4fe9b0a8e53bdfbf41e551da49e40bc","unresolved":false,"context_lines":[{"line_number":770,"context_line":"        port \u003d context.current"},{"line_number":771,"context_line":"        original_port \u003d context.original"},{"line_number":772,"context_line":"        self.update_port(port, original_port)"},{"line_number":773,"context_line":"        self._notify_dhcp_updated(port[\u0027id\u0027])"},{"line_number":774,"context_line":""},{"line_number":775,"context_line":"    def update_port(self, port, original_port, qos_options\u003dNone):"},{"line_number":776,"context_line":"        ovn_port_info \u003d self.get_ovn_port_options(port, qos_options)"}],"source_content_type":"text/x-python","patch_set":5,"id":"5ff73747_550a22d2","line":773,"in_reply_to":"5ff73747_b073c280","updated":"2017-04-25 02:07:06.000000000","message":"I think it\u0027s required, the provisioning block will be removed in provisioning_complete called by port up.","commit_id":"d4d4c0a5b2b9f8c10f04a9a732fd4832d17b00ad"}]}
