def METHOD_NAME(ceph_cluster, **kw):
    try:
        fs_util = FsUtils(ceph_cluster)
        config = kw.get("config")
        clients = ceph_cluster.get_ceph_objects("client")
        build = config.get("build", config.get("rhbuild"))
        fs_util.prepare_clients(clients, build)
        fs_util.auth_list(clients)
        log.info("checking Pre-requisites")
        client1 = clients[0]
        admin = CephAdmin(cluster=ceph_cluster, **config)
        cephfs = {
            "fill_data": 20,
            "io_tool": "smallfile",
            "mount": "fuse",
            "filesystem": "cephfs",
            "mount_dir": "/mnt/mycephfs1",
        }
        fs_io(client=clients[0], fs_config=cephfs, fs_util=fs_util)
        mounting_dir = "".join(
            random.choice(string.ascii_lowercase + string.digits)
            for _ in list(range(10))
        )
        kernel_mounting_dir_1 = f"/mnt/cephfs_kernel{mounting_dir}/"
        fuse_mounting_dir_1 = f"/mnt/cephfs_fuse{mounting_dir}/"
        mon_node_ips = fs_util.get_mon_node_ips()
        default_fs = "cephfs"
        fs_util.kernel_mount(
            [clients[0]],
            kernel_mounting_dir_1,
            ",".join(mon_node_ips),
            extra_params=f",fs={default_fs}",
        )
        fs_util.fuse_mount(
            [clients[0]],
            fuse_mounting_dir_1,
            extra_params=f" --client_fs {default_fs}",
        )
        fs_util.run_ios(client1, fuse_mounting_dir_1, ["dd"])
        fs_util.run_ios(client1, kernel_mounting_dir_1, ["smallfile"])
        out1, _ = admin.installer.exec_command(
            sudo=True, cmd="cephadm shell ceph orch host ls --format json-pretty"
        )
        output1 = json.loads(out1)
        candidate_host = []
        for host in output1:
            if "osd" not in host["labels"] and "mds" in host["labels"]:
                candidate_host.append(host["hostname"])
        print("Candidate host for removing / Adding MDS node")
        print(candidate_host)
        target_node = candidate_host[-1]
        drain_node_cmd = f"cephadm shell ceph orch host drain {target_node}"
        remove_node_cmd = f"cephadm shell ceph orch host rm {target_node}"
        check_node_cmd = f"cephadm shell ceph orch ps {target_node}"
        admin.installer.exec_command(sudo=True, cmd=drain_node_cmd)
        time.sleep(20)
        admin.installer.exec_command(sudo=True, cmd=remove_node_cmd)
        time.sleep(20)
        check_nodes(admin, target_node, check_node_cmd)
        add_node_cmd = f"cephadm shell ceph orch host add {target_node} --labels mds"
        admin.installer.exec_command(sudo=True, cmd=add_node_cmd)
        time.sleep(10)
        check_ps_cmd = f"cephadm shell ceph orch ps {target_node} --format json-pretty"
        out3, ec3 = admin.installer.exec_command(sudo=True, cmd=check_ps_cmd)
        output3 = json.loads(out3)
        if output3[0]["hostname"] == target_node and output3[0]["daemon_type"] == "mds":
            log.info("The Target mds node added")
        else:
            raise CommandFailed("Added node is not added properly")
        return 0
    except Exception as e:
        log.error(e)
        log.error(traceback.format_exc())
        return 1
    finally:
        log.info("Cleaning up")
        fs_util.client_clean_up(
            "umount", fuse_clients=[clients[0]], mounting_dir=fuse_mounting_dir_1
        )
        fs_util.client_clean_up(
            "umount", fuse_clients=[clients[0]], mounting_dir=kernel_mounting_dir_1
        )