code: def disk_clone(hypervisor, identifier, storage_pool, configuration, image, logger):
      
      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)
docs: 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