def vdp_vlan_change_internal(self, vsw_cb_data, vdp_vlan, fail_reason):
LOG.debug("<STR_LIT>", vdp_vlan)<EOL>if not vsw_cb_data:<EOL><INDENT>LOG.error("<STR_LIT>")<EOL>return<EOL><DEDENT>net_uuid = vsw_cb_data.get('<STR_LIT>')<EOL>port_uuid = vsw_cb_data.get('<STR_LIT>')<EOL>lvm = self.local_vlan_map.get(net_uuid)<EOL>if not lvm:<EOL><INDENT>LOG.error("<STR_LIT>", net_uuid)<EOL>return<EOL><DEDENT>lldpad_port = self.lldpad_info<EOL>if not lldpad_port:<EOL><INDENT>LOG.error("<STR_LIT>")<EOL>return<EOL><DEDENT>exist_vdp_vlan = lvm.late_binding_vlan<EOL>lvid = lvm.vlan<EOL>LOG.debug("<STR_LIT>",<EOL>{'<STR_LIT>': lvid, '<STR_LIT>': exist_vdp_vlan})<EOL>lvm.decr_reset_vlan(port_uuid, vdp_vlan)<EOL>lvm.set_fail_reason(port_uuid, fail_reason)<EOL>self.vdp_vlan_cb(port_uuid, lvid, vdp_vlan, fail_reason)<EOL>if vdp_vlan == exist_vdp_vlan:<EOL><INDENT>LOG.debug("<STR_LIT>", vdp_vlan)<EOL>return<EOL><DEDENT>if not ovs_lib.is_valid_vlan_tag(vdp_vlan):<EOL><INDENT>if ovs_lib.is_valid_vlan_tag(exist_vdp_vlan) and not (<EOL>lvm.any_valid_vlan()):<EOL><INDENT>LOG.debug("<STR_LIT>")<EOL>self.program_vm_ovs_flows(lvid, exist_vdp_vlan, <NUM_LIT:0>)<EOL>lvm.late_binding_vlan = <NUM_LIT:0><EOL><DEDENT>lvm.vdp_nego_req = False<EOL><DEDENT>else:<EOL><INDENT>if vdp_vlan != exist_vdp_vlan and (<EOL>ovs_lib.is_valid_vlan_tag(vdp_vlan)):<EOL><INDENT>LOG.warning("<STR_LIT>" %<EOL>(vdp_vlan, exist_vdp_vlan))<EOL>self.program_vm_ovs_flows(lvid, exist_vdp_vlan, vdp_vlan)<EOL>lvm.late_binding_vlan = vdp_vlan<EOL>lvm.vdp_nego_req = False<EOL><DEDENT>else:<EOL><INDENT>LOG.error("<STR_LIT>"<EOL>"<STR_LIT>",<EOL>{'<STR_LIT>': exist_vdp_vlan, '<STR_LIT>': vdp_vlan})<EOL><DEDENT><DEDENT>
Callback Function from VDP when provider VLAN changes.

        This will be called only during error cases when switch
        reloads or when compute reloads.