virtengine_api 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +21 -0
  3. data/.travis.yml +11 -0
  4. data/Gemfile +5 -0
  5. data/LICENSE +21 -0
  6. data/README.md +27 -0
  7. data/Rakefile +10 -0
  8. data/lib/megam/api.rb +329 -0
  9. data/lib/megam/api/accounts.rb +96 -0
  10. data/lib/megam/api/addons.rb +27 -0
  11. data/lib/megam/api/assemblies.rb +49 -0
  12. data/lib/megam/api/assembly.rb +56 -0
  13. data/lib/megam/api/backups.rb +57 -0
  14. data/lib/megam/api/balances.rb +45 -0
  15. data/lib/megam/api/billedhistories.rb +35 -0
  16. data/lib/megam/api/billingtransactions.rb +25 -0
  17. data/lib/megam/api/components.rb +24 -0
  18. data/lib/megam/api/credits.rb +34 -0
  19. data/lib/megam/api/disks.rb +44 -0
  20. data/lib/megam/api/domains.rb +25 -0
  21. data/lib/megam/api/errors.rb +29 -0
  22. data/lib/megam/api/eventsall.rb +36 -0
  23. data/lib/megam/api/eventsbilling.rb +35 -0
  24. data/lib/megam/api/eventscontainer.rb +35 -0
  25. data/lib/megam/api/eventsmarketplace.rb +35 -0
  26. data/lib/megam/api/eventsstorage.rb +24 -0
  27. data/lib/megam/api/eventsvm.rb +35 -0
  28. data/lib/megam/api/flavors.rb +56 -0
  29. data/lib/megam/api/license.rb +26 -0
  30. data/lib/megam/api/marketplaces.rb +68 -0
  31. data/lib/megam/api/organizations.rb +50 -0
  32. data/lib/megam/api/promos.rb +18 -0
  33. data/lib/megam/api/quotas.rb +47 -0
  34. data/lib/megam/api/rawimages.rb +36 -0
  35. data/lib/megam/api/reports.rb +24 -0
  36. data/lib/megam/api/requests.rb +36 -0
  37. data/lib/megam/api/sensors.rb +35 -0
  38. data/lib/megam/api/snapshots.rb +46 -0
  39. data/lib/megam/api/sshkeys.rb +35 -0
  40. data/lib/megam/api/subscriptions.rb +26 -0
  41. data/lib/megam/api/version.rb +6 -0
  42. data/lib/megam/core/account.rb +245 -0
  43. data/lib/megam/core/account_collection.rb +122 -0
  44. data/lib/megam/core/addons.rb +169 -0
  45. data/lib/megam/core/addons_collection.rb +121 -0
  46. data/lib/megam/core/assemblies.rb +191 -0
  47. data/lib/megam/core/assemblies_collection.rb +122 -0
  48. data/lib/megam/core/assembly.rb +226 -0
  49. data/lib/megam/core/assembly_collection.rb +122 -0
  50. data/lib/megam/core/backups.rb +259 -0
  51. data/lib/megam/core/backups_collection.rb +122 -0
  52. data/lib/megam/core/balances.rb +187 -0
  53. data/lib/megam/core/balances_collection.rb +121 -0
  54. data/lib/megam/core/billedhistories.rb +190 -0
  55. data/lib/megam/core/billedhistories_collection.rb +121 -0
  56. data/lib/megam/core/billingtransactions.rb +214 -0
  57. data/lib/megam/core/billingtransactions_collection.rb +122 -0
  58. data/lib/megam/core/components.rb +326 -0
  59. data/lib/megam/core/components_collection.rb +123 -0
  60. data/lib/megam/core/credits.rb +146 -0
  61. data/lib/megam/core/credits_collection.rb +121 -0
  62. data/lib/megam/core/disks.rb +199 -0
  63. data/lib/megam/core/disks_collection.rb +122 -0
  64. data/lib/megam/core/domain_collection.rb +122 -0
  65. data/lib/megam/core/domains.rb +118 -0
  66. data/lib/megam/core/error.rb +70 -0
  67. data/lib/megam/core/eventsall.rb +186 -0
  68. data/lib/megam/core/eventsall_collection.rb +122 -0
  69. data/lib/megam/core/eventsbilling.rb +174 -0
  70. data/lib/megam/core/eventsbilling_collection.rb +122 -0
  71. data/lib/megam/core/eventscontainer.rb +187 -0
  72. data/lib/megam/core/eventscontainer_collection.rb +122 -0
  73. data/lib/megam/core/eventsmarketplace.rb +187 -0
  74. data/lib/megam/core/eventsmarketplace_collection.rb +122 -0
  75. data/lib/megam/core/eventsstorage.rb +156 -0
  76. data/lib/megam/core/eventsstorage_collection.rb +122 -0
  77. data/lib/megam/core/eventsvm.rb +187 -0
  78. data/lib/megam/core/eventsvm_collection.rb +122 -0
  79. data/lib/megam/core/flavors.rb +294 -0
  80. data/lib/megam/core/flavors_collection.rb +121 -0
  81. data/lib/megam/core/json_compat.rb +289 -0
  82. data/lib/megam/core/konipai.rb +42 -0
  83. data/lib/megam/core/license.rb +101 -0
  84. data/lib/megam/core/license_collection.rb +122 -0
  85. data/lib/megam/core/log.rb +19 -0
  86. data/lib/megam/core/marketplace.rb +308 -0
  87. data/lib/megam/core/marketplace_collection.rb +123 -0
  88. data/lib/megam/core/monologger.rb +89 -0
  89. data/lib/megam/core/organizations.rb +142 -0
  90. data/lib/megam/core/organizations_collection.rb +121 -0
  91. data/lib/megam/core/promos.rb +145 -0
  92. data/lib/megam/core/quotas.rb +215 -0
  93. data/lib/megam/core/quotas_collection.rb +121 -0
  94. data/lib/megam/core/rawimages.rb +194 -0
  95. data/lib/megam/core/rawimages_collection.rb +121 -0
  96. data/lib/megam/core/reports.rb +176 -0
  97. data/lib/megam/core/reports_collection.rb +121 -0
  98. data/lib/megam/core/request.rb +197 -0
  99. data/lib/megam/core/request_collection.rb +121 -0
  100. data/lib/megam/core/rest_adapter.rb +44 -0
  101. data/lib/megam/core/sensors.rb +141 -0
  102. data/lib/megam/core/sensors_collection.rb +121 -0
  103. data/lib/megam/core/snapshots.rb +268 -0
  104. data/lib/megam/core/snapshots_collection.rb +122 -0
  105. data/lib/megam/core/sshkey.rb +173 -0
  106. data/lib/megam/core/sshkey_collection.rb +122 -0
  107. data/lib/megam/core/stuff.rb +22 -0
  108. data/lib/megam/core/subscriptions.rb +167 -0
  109. data/lib/megam/core/subscriptions_collection.rb +121 -0
  110. data/lib/megam/core/text.rb +87 -0
  111. data/lib/megam/core/text_formatter.rb +64 -0
  112. data/lib/megam/mixins/assemblies.rb +16 -0
  113. data/lib/megam/mixins/assembly.rb +59 -0
  114. data/lib/megam/mixins/common_deployable.rb +78 -0
  115. data/lib/megam/mixins/components.rb +182 -0
  116. data/lib/megam/mixins/megam_attributes.rb +30 -0
  117. data/lib/megam/mixins/outputs.rb +23 -0
  118. data/lib/megam/mixins/policies.rb +27 -0
  119. data/lib/megam_api.rb +1 -0
  120. data/megam_api.gemspec +26 -0
  121. data/test/mixins/test_assemblies.rb +113 -0
  122. data/test/mixins/test_assembly.rb +74 -0
  123. data/test/mixins/test_component.rb +19 -0
  124. data/test/test_accounts.rb +127 -0
  125. data/test/test_addons.rb +26 -0
  126. data/test/test_assemblies.rb +88 -0
  127. data/test/test_assembly.rb +37 -0
  128. data/test/test_backups.rb +29 -0
  129. data/test/test_balances.rb +38 -0
  130. data/test/test_billedhistories.rb +30 -0
  131. data/test/test_billingtranscations.rb +35 -0
  132. data/test/test_components.rb +42 -0
  133. data/test/test_credits.rb +28 -0
  134. data/test/test_disks.rb +25 -0
  135. data/test/test_domains.rb +29 -0
  136. data/test/test_eventsbilling.rb +30 -0
  137. data/test/test_eventscontainer.rb +26 -0
  138. data/test/test_eventsstorage.rb +12 -0
  139. data/test/test_eventsvm.rb +26 -0
  140. data/test/test_helper.rb +77 -0
  141. data/test/test_marketplaces.rb +38 -0
  142. data/test/test_organizations.rb +45 -0
  143. data/test/test_promos.rb +11 -0
  144. data/test/test_quotas.rb +33 -0
  145. data/test/test_reports.rb +32 -0
  146. data/test/test_requests.rb +95 -0
  147. data/test/test_sensors.rb +50 -0
  148. data/test/test_snapshots.rb +30 -0
  149. data/test/test_sshkeys.rb +50 -0
  150. data/test/test_subscriptions.rb +22 -0
  151. metadata +325 -0
@@ -0,0 +1,141 @@
1
+ module Megam
2
+ class Sensors < Megam::RestAdapter
3
+ def initialize(email = nil, api_key = nil, host = nil)
4
+ @id = nil
5
+ @sensor_type = nil
6
+ @payload = {}
7
+ @created_at = nil
8
+ super(email, api_key, host)
9
+ end
10
+
11
+ def sensors
12
+ self
13
+ end
14
+
15
+ def id(arg = nil)
16
+ if !arg.nil?
17
+ @id = arg
18
+ else
19
+ @id
20
+ end
21
+ end
22
+
23
+ def sensor_type(arg = nil)
24
+ if !arg.nil?
25
+ @sensor_type = arg
26
+ else
27
+ @sensor_type
28
+ end
29
+ end
30
+
31
+ def payload(arg = nil)
32
+ if !arg.nil?
33
+ @payload = arg
34
+ else
35
+ @payload
36
+ end
37
+ end
38
+
39
+ def created_at(arg = nil)
40
+ if !arg.nil?
41
+ @created_at = arg
42
+ else
43
+ @created_at
44
+ end
45
+ end
46
+
47
+ def error?
48
+ crocked = true if some_msg.key?(:msg_type) && some_msg[:msg_type] == 'error'
49
+ end
50
+
51
+ # Transform the ruby obj -> to a Hash
52
+ def to_hash
53
+ index_hash = {}
54
+ index_hash['json_claz'] = self.class.name
55
+ index_hash['id'] = id
56
+
57
+ index_hash['sensor_type'] = sensor_type
58
+ index_hash['payload'] = payload
59
+ index_hash['created_at'] = created_at
60
+ index_hash
61
+ end
62
+
63
+ # Serialize this object as a hash: called from JsonCompat.
64
+ # Verify if this called from JsonCompat during testing.
65
+ def to_json(*a)
66
+ for_json.to_json(*a)
67
+ end
68
+
69
+ def for_json
70
+ result = {
71
+ 'id' => id,
72
+ 'sensor_type' => sensor_type,
73
+ 'payload' => payload,
74
+ 'created_at' => created_at
75
+ }
76
+ result
77
+ end
78
+
79
+ def self.json_create(o)
80
+ asm = new
81
+ asm.id(o['id']) if o.key?('id')
82
+ asm.sensor_type(o['sensor_type']) if o.key?('sensor_type')
83
+ asm.payload(o['payload']) if o.key?('payload')
84
+ asm.created_at(o['created_at']) if o.key?('created_at')
85
+ asm
86
+ end
87
+
88
+ def self.from_hash(o, tmp_email = nil, tmp_api_key = nil, tmp_host = nil)
89
+ asm = new(tmp_email, tmp_api_key, tmp_host)
90
+ asm.from_hash(o)
91
+ asm
92
+ end
93
+
94
+ def from_hash(o)
95
+ @id = o['id'] if o.key?('id')
96
+ @sensor_type = o['sensor_type'] if o.key?('sensor_type')
97
+ @payload = o['payload'] if o.key?('payload')
98
+ @created_at = o['created_at'] if o.key?('created_at')
99
+ self
100
+ end
101
+
102
+ def self.create(params)
103
+ sensors = from_hash(params, params['email'], params['api_key'], params['host'])
104
+ sensors.create
105
+ end
106
+
107
+ # Load a account by email_p
108
+ def self.show(params)
109
+ sensors = new(params['email'], params['api_key'], params['host'])
110
+ sensors.megam_rest.get_sensor(params['id'])
111
+ end
112
+
113
+ def self.list(params)
114
+ sensors = self.new(params["email"], params["api_key"], params["host"])
115
+ sensors.megam_rest.get_sensors
116
+ end
117
+
118
+ def self.update(params)
119
+ sensors = from_hash(params, params['email'] || params[:email], params['api_key'] || params[:api_key], params['host'] || params[:host])
120
+ sensors.update
121
+ end
122
+
123
+ def self.list(o)
124
+ app = self.new(o["email"], o["api_key"], o["host"])
125
+ app.megam_rest.get_sensors
126
+ end
127
+
128
+ # Create the node via the REST API
129
+ def update
130
+ megam_rest.update_(to_hash)
131
+ end
132
+
133
+ def create
134
+ megam_rest.post_sensors(to_hash)
135
+ end
136
+
137
+ def to_s
138
+ Megam::Stuff.styled_hash(to_hash)
139
+ end
140
+ end
141
+ end
@@ -0,0 +1,121 @@
1
+ module Megam
2
+ class SensorsCollection
3
+ include Enumerable
4
+
5
+ attr_reader :iterator
6
+ def initialize
7
+ @sensors = []
8
+ @sensors_by_name = {}
9
+ @insert_after_idx = nil
10
+ end
11
+
12
+ def all_sensor
13
+ @sensors
14
+ end
15
+
16
+ def [](index)
17
+ @sensors[index]
18
+ end
19
+
20
+ def []=(index, arg)
21
+ is_megam_sensors(arg)
22
+ @sensors[index] = arg
23
+ @sensors_by_name[arg.id] = index
24
+ end
25
+
26
+ def <<(*args)
27
+ args.flatten.each do |a|
28
+ is_megam_sensors(a)
29
+ @sensors << a
30
+ @sensors_by_name[a.id] = @sensors.length - 1
31
+ end
32
+ self
33
+ end
34
+
35
+ # 'push' is an alias method to <<s
36
+ alias_method :push, :<<
37
+
38
+ def insert(sensors)
39
+ is_megam_sensors(sensors)
40
+ if @insert_after_idx
41
+ # in the middle of executing a run, so any predefs inserted now should
42
+ # be placed after the most recent addition done by the currently executing
43
+ # sensors
44
+ @sensors.insert(@insert_after_idx + 1, sensors)
45
+ # update name -> location mappings and register new sensors
46
+ @sensors_by_name.each_key do |key|
47
+ @sensors_by_name[key] += 1 if@sensors_by_name[key] > @insert_after_idx
48
+ end
49
+ @sensors_by_name[sensors.id] = @insert_after_idx + 1
50
+ @insert_after_idx += 1
51
+ else
52
+ @sensors << sensors
53
+ @sensors_by_name[sensors.id] = @sensors.length - 1
54
+ end
55
+ end
56
+
57
+ def each
58
+ @sensors.each do |sensors|
59
+ yield sensors
60
+ end
61
+ end
62
+
63
+ def each_index
64
+ @sensors.each_index do |i|
65
+ yield i
66
+ end
67
+ end
68
+
69
+ def empty?
70
+ @sensors.empty?
71
+ end
72
+
73
+ def lookup(sensors)
74
+ lookup_by = nil
75
+ if sensors.is_a?(Megam.sensors)
76
+ lookup_by = sensors.id
77
+ elsif sensors.is_a?(String)
78
+ lookup_by = sensors
79
+ else
80
+ fail ArgumentError, 'Must pass a Megam::sensors or String to lookup'
81
+ end
82
+ res = @sensors_by_name[lookup_by]
83
+ unless res
84
+ fail ArgumentError, "Cannot find a sensors matching #{lookup_by} (did you define it first?)"
85
+ end
86
+ @sensors[res]
87
+ end
88
+
89
+ def to_s
90
+ @sensors.join(", ")
91
+ end
92
+
93
+ def for_json
94
+ to_a.map { |item| item.to_s }
95
+ end
96
+
97
+ def to_json(*a)
98
+ Megam::JSONCompat.to_json(for_json, *a)
99
+ end
100
+
101
+ def self.json_create(o)
102
+ collection = new
103
+ o['results'].each do |sensors_list|
104
+ sensors_array = sensors_list.is_a?(Array) ? sensors_list : [sensors_list]
105
+ sensors_array.each do |sensors|
106
+ collection.insert(sensors)
107
+ end
108
+ end
109
+ collection
110
+ end
111
+
112
+ private
113
+
114
+ def is_megam_sensors(arg)
115
+ unless arg.is_a?(Megam::Sensors)
116
+ fail ArgumentError, "Members must be Megam::sensors's"
117
+ end
118
+ true
119
+ end
120
+ end
121
+ end
@@ -0,0 +1,268 @@
1
+ module Megam
2
+ class Snapshots < Megam::RestAdapter
3
+ def initialize(o)
4
+ @id = nil
5
+ @account_id = nil
6
+ @asm_id = nil
7
+ @org_id = nil
8
+ @tosca_type = nil
9
+ @inputs = []
10
+ @outputs = []
11
+ @name= nil
12
+ @status=nil
13
+ @disk_id=nil
14
+ @snap_id=nil
15
+ @created_at = nil
16
+ @updated_at = nil
17
+ @some_msg = {}
18
+ super(o)
19
+ end
20
+
21
+ def snapshots
22
+ self
23
+ end
24
+ def id(arg=nil)
25
+ if arg != nil
26
+ @id = arg
27
+ else
28
+ @id
29
+ end
30
+ end
31
+
32
+ def account_id(arg=nil)
33
+ if arg != nil
34
+ @account_id = arg
35
+ else
36
+ @account_id
37
+ end
38
+ end
39
+
40
+ def asm_id(arg=nil)
41
+ if arg != nil
42
+ @asm_id = arg
43
+ else
44
+ @asm_id
45
+ end
46
+ end
47
+
48
+ def org_id(arg=nil)
49
+ if arg != nil
50
+ @org_id = arg
51
+ else
52
+ @org_id
53
+ end
54
+ end
55
+
56
+ def tosca_type(arg = nil)
57
+ if !arg.nil?
58
+ @tosca_type = arg
59
+ else
60
+ @tosca_type
61
+ end
62
+ end
63
+
64
+ def inputs(arg = [])
65
+ if arg != []
66
+ @inputs = arg
67
+ else
68
+ @inputs
69
+ end
70
+ end
71
+
72
+ def outputs(arg = [])
73
+ if arg != []
74
+ @outputs = arg
75
+ else
76
+ @outputs
77
+ end
78
+ end
79
+
80
+ def name(arg=nil)
81
+ if arg != nil
82
+ @name = arg
83
+ else
84
+ @name
85
+ end
86
+ end
87
+
88
+ def status(arg=nil)
89
+ if arg != nil
90
+ @status = arg
91
+ else
92
+ @status
93
+ end
94
+ end
95
+
96
+ def disk_id(arg=nil)
97
+ if arg != nil
98
+ @disk_id = arg
99
+ else
100
+ @disk_id
101
+ end
102
+ end
103
+
104
+ def snap_id(arg=nil)
105
+ if arg != nil
106
+ @snap_id = arg
107
+ else
108
+ @snap_id
109
+ end
110
+ end
111
+
112
+ def created_at(arg=nil)
113
+ if arg != nil
114
+ @created_at = arg
115
+ else
116
+ @created_at
117
+ end
118
+ end
119
+
120
+ def updated_at(arg=nil)
121
+ if arg != nil
122
+ @updated_at = arg
123
+ else
124
+ @updated_at
125
+ end
126
+ end
127
+
128
+ def error?
129
+ crocked = true if (some_msg.has_key?(:msg_type) && some_msg[:msg_type] == "error")
130
+ end
131
+
132
+
133
+ def some_msg(arg=nil)
134
+ if arg != nil
135
+ @some_msg = arg
136
+ else
137
+ @some_msg
138
+ end
139
+ end
140
+
141
+
142
+ # Transform the ruby obj -> to a Hash
143
+ def to_hash
144
+ index_hash = Hash.new
145
+ index_hash["json_claz"] = self.class.name
146
+ index_hash["id"] = id
147
+ index_hash["account_id"] = account_id
148
+ index_hash["asm_id"] = asm_id
149
+ index_hash["org_id"] = org_id
150
+ index_hash["tosca_type"] = tosca_type
151
+ index_hash["inputs"] = inputs
152
+ index_hash["outputs"] = outputs
153
+ index_hash["name"] = name
154
+ index_hash["status"] = status
155
+ index_hash["disk_id"] = disk_id
156
+ index_hash["snap_id"] = snap_id
157
+ index_hash["created_at"] = created_at
158
+ index_hash["updated_at"] = updated_at
159
+ index_hash["some_msg"] = some_msg
160
+ index_hash
161
+ end
162
+
163
+ # Serialize this object as a hash: called from JsonCompat.
164
+ # Verify if this called from JsonCompat during testing.
165
+ def to_json(*a)
166
+ for_json.to_json(*a)
167
+ end
168
+
169
+ def for_json
170
+ result = {
171
+ "id" => id,
172
+ "account_id" => account_id,
173
+ "asm_id" => asm_id,
174
+ "org_id" => org_id,
175
+ "tosca_type" => tosca_type,
176
+ "inputs" => inputs,
177
+ "outputs" => outputs,
178
+ "name" => name,
179
+ "status" => status,
180
+ "disk_id" => disk_id,
181
+ "snap_id" => snap_id,
182
+ "created_at" => created_at,
183
+ "updated_at" => updated_at
184
+ }
185
+ result
186
+ end
187
+
188
+ def self.json_create(o)
189
+ sps = new({})
190
+ sps.id(o["id"]) if o.has_key?("id")
191
+ sps.account_id(o["account_id"]) if o.has_key?("account_id")
192
+ sps.asm_id(o["asm_id"]) if o.has_key?("asm_id")
193
+ sps.org_id(o["org_id"]) if o.has_key?("org_id") #this will be an array? can hash store array?
194
+ sps.tosca_type(o['tosca_type']) if o.key?('tosca_type')
195
+ sps.inputs(o['inputs']) if o.key?('inputs')
196
+ sps.outputs(o['outputs']) if o.key?('outputs')
197
+ sps.name(o["name"]) if o.has_key?("name")
198
+ sps.status(o["status"]) if o.has_key?("status")
199
+ sps.disk_id(o["disk_id"]) if o.has_key?("disk_id")
200
+ sps.snap_id(o["snap_id"]) if o.has_key?("snap_id")
201
+ sps.created_at(o["created_at"]) if o.has_key?("created_at")
202
+ sps.created_at(o["updated_at"]) if o.has_key?("updated_at")
203
+ sps.some_msg[:code] = o["code"] if o.has_key?("code")
204
+ sps.some_msg[:msg_type] = o["msg_type"] if o.has_key?("msg_type")
205
+ sps.some_msg[:msg]= o["msg"] if o.has_key?("msg")
206
+ sps.some_msg[:links] = o["links"] if o.has_key?("links")
207
+ sps
208
+ end
209
+
210
+ def self.from_hash(o)
211
+ sps = self.new(o)
212
+ sps.from_hash(o)
213
+ sps
214
+ end
215
+
216
+ def from_hash(o)
217
+ @id = o[:id] if o.has_key?(:id)
218
+ @account_id = o[:account_id] if o.has_key?(:account_id)
219
+ @asm_id = o[:asm_id] if o.has_key?(:asm_id)
220
+ @org_id = o[:org_id] if o.has_key?(:org_id)
221
+ @tosca_type = o[:tosca_type] if o.key?(:tosca_type)
222
+ @inputs = o[:inputs] if o.key?(:inputs)
223
+ @outputs = o[:outputs] if o.key?(:outputs)
224
+ @name = o[:name] if o.has_key?(:name)
225
+ @status = o[:status] if o.has_key?(:status)
226
+ @disk_id = o[:disk_id] if o.has_key?(:disk_id)
227
+ @snap_id = o[:snap_id] if o.has_key?(:snap_id)
228
+ @created_at = o[:created_at] if o.has_key?(:created_at)
229
+ @updated_at = o[:updated_at] if o.has_key?(:updated_at)
230
+ self
231
+ end
232
+
233
+ def self.create(params)
234
+ sps = from_hash(params)
235
+ sps.create
236
+ end
237
+
238
+ def self.update(params)
239
+ sps = from_hash(params)
240
+ sps.update
241
+ end
242
+
243
+ # Create the node via the REST API
244
+ def create
245
+ megam_rest.post_snapshots(to_hash)
246
+ end
247
+
248
+ # Load a account by email_p
249
+ def self.show(o)
250
+ sps = self.new(o)
251
+ sps.megam_rest.get_snapshots(o[:id])
252
+ end
253
+
254
+ def self.list(params)
255
+ sps = self.new(params)
256
+ sps.megam_rest.list_snapshots
257
+ end
258
+
259
+ def update
260
+ megam_rest.update_snapshots(to_hash)
261
+ end
262
+
263
+ def to_s
264
+ Megam::Stuff.styled_hash(to_hash)
265
+ end
266
+
267
+ end
268
+ end