# File lib/deltacloud/drivers/mock/mock_client.rb, line 29 def initialize(storage_root) @storage_root = storage_root @collections = [] if ! File::directory?(File::join(@storage_root, "images")) data = Dir[File::join(File::dirname(__FILE__), "data", "*")] FileUtils::mkdir_p(@storage_root, :verbose => true) FileUtils::cp_r(data, @storage_root) end end
Return the object with id id
of class klass
from
the collection derived from the classes name
# File lib/deltacloud/drivers/mock/mock_client.rb, line 78 def build(klass, id) klass.new(load_collection(collection_name(klass), id)) end
Return an array of model objects of the resources in the collection corresponding to class. The name of the collection is derived from the name of the class
# File lib/deltacloud/drivers/mock/mock_client.rb, line 90 def build_all(klass) load_all(collection_name(klass)).map { |hash| klass.new(hash) } end
# File lib/deltacloud/drivers/mock/mock_client.rb, line 123 def cimi_dir(collection) File::join(@storage_root, "cimi", collection.to_s) end
# File lib/deltacloud/drivers/mock/mock_client.rb, line 119 def cimi_file(collection, id) File::join(cimi_dir(collection), "#{id}.json") end
# File lib/deltacloud/drivers/mock/mock_client.rb, line 94 def destroy(collection, id) fname = file(collection, id) FileUtils.rm(fname) if File::exists?(fname) end
# File lib/deltacloud/drivers/mock/mock_client.rb, line 104 def destroy_cimi(collection, id) fname = cimi_file(collection, id) raise "No such object: #{id} in #{collection} collection" unless File::exists?(fname) FileUtils.rm(fname) end
# File lib/deltacloud/drivers/mock/mock_client.rb, line 39 def dir(collection) result = File::join(@storage_root, collection.to_s) unless @collections.include?(collection) FileUtils::mkdir_p(result, :mode => 0750) unless File::directory?(result) @collections << collection end result end
# File lib/deltacloud/drivers/mock/mock_client.rb, line 48 def file(collection, id) File::join(dir(collection), "#{id}.yml") end
# File lib/deltacloud/drivers/mock/mock_client.rb, line 52 def files(collection) Dir[File::join(dir(collection), "*.yml")] end
Return an array of hashes of all the resources in the collection
# File lib/deltacloud/drivers/mock/mock_client.rb, line 83 def load_all(collection) members(collection).map { |id| load_collection(collection, id) } end
# File lib/deltacloud/drivers/mock/mock_client.rb, line 110 def load_all_cimi(model_name) model_files = Dir[File::join(cimi_dir(model_name), "*.json")] model_files.map{|f| File.read(f)} end
# File lib/deltacloud/drivers/mock/mock_client.rb, line 115 def load_cimi(model_name, id) File.read(cimi_file(model_name, id)) end
# File lib/deltacloud/drivers/mock/mock_client.rb, line 61 def load_collection(collection, id) fname = file(collection, id) begin YAML.load_file(fname) rescue Errno::ENOENT nil end end
Return the ID's of all members of collection
# File lib/deltacloud/drivers/mock/mock_client.rb, line 57 def members(collection) files(collection).map { |f| File::basename(f, ".yml") } end
# File lib/deltacloud/drivers/mock/mock_client.rb, line 70 def store(collection, obj) raise "Why no obj[:id] ?" unless obj[:id] File::open(file(collection, obj[:id]), "w") { |f| YAML.dump(obj, f) } obj end
# File lib/deltacloud/drivers/mock/mock_client.rb, line 99 def store_cimi(collection, obj) raise "Why no obj.name?" unless obj.name File::open(cimi_file(collection, obj.name), "w") { |f| f.write(obj.to_json) } end