# frozen_string_literal: true require 'uri' module Uricp::Strategy class RbdCacheClone include Uricp::Strategy::Common include Uricp::Strategy::CacheCommon def appropriate? unless from.scheme == 'rbd' debug "#{self.class.name}: not appropriate" return false end with_active_cache do options['cache_name'] = File.basename(options['to_uri'].path) cache_target = rbd_cache_image_spec(from) if rbd_cache_image_exists?(cache_target) || in_rbd_cache(cache_target) debug "#{self.class.name}: Unexpected existing cache entry for #{options['to_uri']}" unsupported_transfer end proposal(cache_target) end end def command ':;' end def proposal(cache_check) @proposed_options = options.dup @proposed_options['rbd_cache_target'] = rbd_uri(cache_check) @proposed_options.delete('cache') @proposed_options.delete('cache_name') @proposed_options.delete('dry-cache') self end end end