<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def ReplaceInstanceDisks(r, instance, disks=None, mode=REPLACE_DISK_AUTO, remote_node=None, iallocator=None, dry_run=False):
 """ Replaces disks on an instance. @type instance: str @param instance: instance whose disks to replace @type disks: list of ints @param disks: Indexes of disks to replace @type mode: str @param mode: replacement mode to use (defaults to replace_auto) @type remote_node: str or None @param remote_node: new secondary node to use (for use with replace_new_secondary mode) @type iallocator: str or None @param iallocator: instance allocator plugin to use (for use with replace_auto mode) @type dry_run: bool @param dry_run: whether to perform a dry run @rtype: int @return: job id """


    if mode not in REPLACE_DISK:
        raise GanetiApiError("Invalid mode %r not one of %r" % (mode,
                                                                REPLACE_DISK))

    query = {
        "mode": mode,
        "dry-run": dry_run,
    }

    if disks:
        query["disks"] = ",".join(str(idx) for idx in disks)

    if remote_node:
        query["remote_node"] = remote_node

    if iallocator:
        query["iallocator"] = iallocator

    return r.request("post", "/2/instances/%s/replace-disks" % instance,
                     query=query)