<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def disk_clone(hypervisor, identifier, storage_pool, configuration, image, logger):
 """Disk image cloning. Given an original disk image it clones it into a new one, the clone will be created within the storage pool. The following values are set into the disk XML configuration: * name * target/path * target/permission/label * backingStore/path if copy on write is enabled """

    cow = configuration.get('copy_on_write', False)

    try:
        volume = hypervisor.storageVolLookupByPath(image)
    except libvirt.libvirtError:
        if os.path.exists(image):
            pool_path = os.path.dirname(image)
            logger.info("LibVirt pool does not exist, creating {} pool".format(
                pool_path.replace('/', '_')))
            pool = hypervisor.storagePoolDefineXML(BASE_POOL_CONFIG.format(
                pool_path.replace('/', '_'), pool_path))
            pool.setAutostart(True)
            pool.create()
            pool.refresh()
            volume = hypervisor.storageVolLookupByPath(image)
        else:
            raise RuntimeError(
                "%s disk does not exist." % image)

    xml = disk_xml(identifier, storage_pool.XMLDesc(0), volume.XMLDesc(0), cow)

    if cow:
        storage_pool.createXML(xml, 0)
    else:
        storage_pool.createXMLFrom(xml, volume, 0)