Class: Deltacloud::Drivers::Mock::Client
- Inherits:
-
Object
- Object
- Deltacloud::Drivers::Mock::Client
show all
- Includes:
- Deltacloud
- Defined in:
- lib/deltacloud/drivers/mock/mock_client.rb
Constant Summary
Constants included
from Deltacloud
API_VERSION, CIMI_API_VERSION
Instance Method Summary
collapse
Methods included from Deltacloud
[], config, configure, connect, database, default_frontend, drivers, enabled_frontends, frontend_required?, frontends, generate_routes, initialize_database, need_database?, new, require_frontend!
#collection_exists?, #collection_names, #collections
Constructor Details
#initialize(storage_root) ⇒ Client
Returns a new instance of Client.
29
30
31
32
33
34
35
36
37
|
# 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
|
Instance Method Details
#build(klass, id) ⇒ Object
Return the object with id id
of class klass
from the collection derived from the classes name
78
79
80
|
# File 'lib/deltacloud/drivers/mock/mock_client.rb', line 78
def build(klass, id)
klass.new(load_collection(collection_name(klass), id))
end
|
#build_all(klass) ⇒ Object
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
90
91
92
|
# 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
|
#cimi_dir(collection) ⇒ Object
123
124
125
|
# File 'lib/deltacloud/drivers/mock/mock_client.rb', line 123
def cimi_dir(collection)
File::join(@storage_root, "cimi", collection.to_s)
end
|
#cimi_file(collection, id) ⇒ Object
119
120
121
|
# File 'lib/deltacloud/drivers/mock/mock_client.rb', line 119
def cimi_file(collection, id)
File::join(cimi_dir(collection), "#{id}.json")
end
|
#destroy(collection, id) ⇒ Object
94
95
96
97
|
# 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
|
#destroy_cimi(collection, id) ⇒ Object
104
105
106
107
108
|
# 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
|
#dir(collection) ⇒ Object
39
40
41
42
43
44
45
46
|
# 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(collection, id) ⇒ Object
48
49
50
|
# File 'lib/deltacloud/drivers/mock/mock_client.rb', line 48
def file(collection, id)
File::join(dir(collection), "#{id}.yml")
end
|
#files(collection) ⇒ Object
52
53
54
|
# File 'lib/deltacloud/drivers/mock/mock_client.rb', line 52
def files(collection)
Dir[File::join(dir(collection), "*.yml")]
end
|
#load_all(collection) ⇒ Object
Return an array of hashes of all the resources in the collection
83
84
85
|
# File 'lib/deltacloud/drivers/mock/mock_client.rb', line 83
def load_all(collection)
members(collection).map { |id| load_collection(collection, id) }
end
|
#load_all_cimi(model_name) ⇒ Object
110
111
112
113
|
# 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
|
#load_cimi(model_name, id) ⇒ Object
115
116
117
|
# File 'lib/deltacloud/drivers/mock/mock_client.rb', line 115
def load_cimi(model_name, id)
File.read(cimi_file(model_name, id))
end
|
#load_collection(collection, id) ⇒ Object
61
62
63
64
65
66
67
68
|
# 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
|
#members(collection) ⇒ Object
Return the ID’s of all members of collection
57
58
59
|
# File 'lib/deltacloud/drivers/mock/mock_client.rb', line 57
def members(collection)
files(collection).map { |f| File::basename(f, ".yml") }
end
|
#store(collection, obj) ⇒ Object
70
71
72
73
74
|
# 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
|
#store_cimi(collection, obj) ⇒ Object
99
100
101
102
|
# 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
|