megam_api 0.18 → 0.19

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6626dcb2360e7260a1bddd92c57e1845345d2356
4
- data.tar.gz: 7b1c22613192558107ebf6794e39b60061183bfc
3
+ metadata.gz: 4ce34e26cf345435dd7f7525248d06e6f39f8ce5
4
+ data.tar.gz: fe0189ff7e1b6c6150d9dba00e247f3e0037dfed
5
5
  SHA512:
6
- metadata.gz: 8f631bd0d105ba5859328c7ba165749ca66916fb09ed5e9f34eefc2d7ac35b674aee9bcc195931eab2b464dc6aec04db95d2d199ee5d3bb85544c08c08b80cda
7
- data.tar.gz: e01d71f735758230e7e28c9f7f2b7abe50c8c2d707414f877d8e913bc406213e974e22ae8528e17a89f57206c57a48915c2c5b464c55f31d502749cbe734931f
6
+ metadata.gz: 7d68e3d04b97e4de2aeab4aacd0f772f4fafdc95ba9a16d1d9244820d9ff73e81ec4ba903766ccb96c4774ee998827474e34b6c98d39faf27855079fdc6032a9
7
+ data.tar.gz: d2d5c151fae29057a4e7ebd576e562036e1b0600836ca2019f6070754a013618607bdef5129bbc67f1da0d0142c197e51f97b3b64ce7f34bb15951179ae31004
@@ -1,6 +1,5 @@
1
1
  module Megam
2
2
  class API
3
-
4
3
  # GET /nodes
5
4
  def get_assemblies
6
5
  @options = {:path => '/assemblies',:body => ""}.merge(@options)
@@ -12,7 +11,7 @@ module Megam
12
11
  )
13
12
  end
14
13
 
15
- def get_assemblies(asm_id)
14
+ def get_one_assemblies(asm_id)
16
15
  @options = {:path => "/assemblies/#{asm_id}",:body => ""}.merge(@options)
17
16
 
18
17
  request(
@@ -0,0 +1,15 @@
1
+ module Megam
2
+ class API
3
+ def get_one_assembly(asm_id)
4
+
5
+ @options = {:path => "/assembly/#{asm_id}",:body => ""}.merge(@options)
6
+
7
+ request(
8
+ :expects => 200,
9
+ :method => :get,
10
+ :body => @options[:body]
11
+ )
12
+ end
13
+
14
+ end
15
+ end
@@ -0,0 +1,14 @@
1
+ module Megam
2
+ class API
3
+ def get_components(comp_id)
4
+ @options = {:path => "/components/#{comp_id}",:body => ""}.merge(@options)
5
+
6
+ request(
7
+ :expects => 200,
8
+ :method => :get,
9
+ :body => @options[:body]
10
+ )
11
+ end
12
+
13
+ end
14
+ end
@@ -1,5 +1,5 @@
1
1
  module Megam
2
2
  class API
3
- VERSION = "0.18"
3
+ VERSION = "0.19"
4
4
  end
5
5
  end
data/lib/megam/api.rb CHANGED
@@ -28,6 +28,8 @@ require "megam/api/organizations"
28
28
  require "megam/api/domains"
29
29
  require "megam/api/csars"
30
30
  require "megam/api/assemblies"
31
+ require "megam/api/assembly"
32
+ require "megam/api/components"
31
33
 
32
34
  require "megam/core/server_api"
33
35
  require "megam/core/config"
@@ -57,6 +59,11 @@ require "megam/core/assemblies_collection"
57
59
  require "megam/core/csar"
58
60
  require "megam/core/csar_collection"
59
61
  require "megam/core/konipai"
62
+ require "megam/core/assembly"
63
+ require "megam/core/assembly_collection"
64
+ require "megam/core/components"
65
+ require "megam/core/components_collection"
66
+
60
67
 
61
68
 
62
69
 
@@ -162,12 +162,12 @@ module Megam
162
162
  end
163
163
 
164
164
  # Load a account by email_p
165
- def self.show(node_name, tmp_email=nil, tmp_api_key=nil)
165
+ def self.show(one_assemblies_id, tmp_email=nil, tmp_api_key=nil)
166
166
  asm = self.new(tmp_email, tmp_api_key)
167
- asm.megam_rest.get_assemblies(node_name)
167
+ asm.megam_rest.get_one_assemblies(one_assemblies_id)
168
168
  end
169
169
 
170
- def self.list(tmp_email=nil, tmp_api_key=nil)
170
+ def self.list(tmp_email=nil, tmp_api_key=nil, inflated=false)
171
171
  asm = self.new(tmp_email, tmp_api_key)
172
172
  asm.megam_rest.get_assemblies
173
173
  end
@@ -177,4 +177,4 @@ module Megam
177
177
  end
178
178
 
179
179
  end
180
- end
180
+ end
@@ -0,0 +1,172 @@
1
+ # Copyright:: Copyright (c) 2012, 2014 Megam Systems
2
+ # License:: Apache License, Version 2.0
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+
17
+ module Megam
18
+ class Assembly < Megam::ServerAPI
19
+ def initialize(email=nil, api_key=nil)
20
+ @id = nil
21
+ @name = nil
22
+ @components = []
23
+ @policies={}
24
+ @inputs = {}
25
+ @operations = nil
26
+ @created_at = nil
27
+ super(email, api_key)
28
+ end
29
+
30
+ def assembly
31
+ self
32
+ end
33
+
34
+ def id(arg=nil)
35
+ if arg != nil
36
+ @id = arg
37
+ else
38
+ @id
39
+ end
40
+ end
41
+
42
+ def name(arg=nil)
43
+ if arg != nil
44
+ @name = arg
45
+ else
46
+ @name
47
+ end
48
+ end
49
+
50
+ def components(arg=[])
51
+ if arg != []
52
+ @components = arg
53
+ else
54
+ @components
55
+ end
56
+ end
57
+
58
+ def policies(arg=[])
59
+ if arg != []
60
+ @policies = arg
61
+ else
62
+ @policies
63
+ end
64
+ end
65
+
66
+ def inputs(arg=[])
67
+ if arg != []
68
+ @inputs = arg
69
+ else
70
+ @inputs
71
+ end
72
+ end
73
+
74
+ def operations(arg=nil)
75
+ if arg != nil
76
+ @operations = arg
77
+ else
78
+ @operations
79
+ end
80
+ end
81
+
82
+ def created_at(arg=nil)
83
+ if arg != nil
84
+ @created_at = arg
85
+ else
86
+ @created_at
87
+ end
88
+ end
89
+
90
+ def error?
91
+ crocked = true if (some_msg.has_key?(:msg_type) && some_msg[:msg_type] == "error")
92
+ end
93
+
94
+ # Transform the ruby obj -> to a Hash
95
+ def to_hash
96
+ index_hash = Hash.new
97
+ index_hash["json_claz"] = self.class.name
98
+ index_hash["id"] = id
99
+ index_hash["name"] = name
100
+ index_hash["components"] = components
101
+ index_hash["policies"] = policies
102
+ index_hash["inputs"] = inputs
103
+ index_hash["operations"] = operations
104
+ index_hash["created_at"] = created_at
105
+ index_hash
106
+ end
107
+
108
+ # Serialize this object as a hash: called from JsonCompat.
109
+ # Verify if this called from JsonCompat during testing.
110
+ def to_json(*a)
111
+ for_json.to_json(*a)
112
+ end
113
+
114
+ def for_json
115
+ result = {
116
+ "id" => id,
117
+ "name" => name,
118
+ "components" => components,
119
+ "policies" => policies,
120
+ "inputs" => inputs,
121
+ "operations" => operations,
122
+ "created_at" => created_at
123
+ }
124
+
125
+ result
126
+ end
127
+
128
+ def self.json_create(o)
129
+ asm = new
130
+ asm.id(o["id"]) if o.has_key?("id")
131
+ asm.name(o["name"]) if o.has_key?("name")
132
+ asm.components(o["components"]) if o.has_key?("components")
133
+ asm.policies(o["policies"]) if o.has_key?("policies") #this will be an array? can hash store array?
134
+ asm.inputs(o["inputs"]) if o.has_key?("inputs")
135
+ asm.operations(o["operations"]) if o.has_key?("operations")
136
+ asm.created_at(o["created_at"]) if o.has_key?("created_at")
137
+ asm
138
+ end
139
+
140
+ def self.from_hash(o,tmp_email=nil, tmp_api_key=nil)
141
+ asm = self.new(tmp_email, tmp_api_key)
142
+ asm.from_hash(o)
143
+ asm
144
+ end
145
+
146
+ def from_hash(o)
147
+ @id = o["id"] if o.has_key?("id")
148
+ @name = o["name"] if o.has_key?("name")
149
+ @components = o["components"] if o.has_key?("components")
150
+ @policies = o["policies"] if o.has_key?("policies")
151
+ @inputs = o["inputs"] if o.has_key?("inputs")
152
+ @operations = o["operations"] if o.has_key?("operations")
153
+ @created_at = o["created_at"] if o.has_key?("created_at")
154
+ self
155
+ end
156
+
157
+
158
+ def self.show(assembly_id, tmp_email=nil, tmp_api_key=nil)
159
+ asm = self.new(tmp_email, tmp_api_key)
160
+ puts "---->>>> "
161
+ puts #{assembly_id}
162
+ puts "----------->>>"
163
+ asm.megam_rest.get_one_assembly(assembly_id)
164
+ end
165
+
166
+
167
+ def to_s
168
+ Megam::Stuff.styled_hash(to_hash)
169
+ end
170
+
171
+ end
172
+ end
@@ -0,0 +1,145 @@
1
+ # Copyright:: Copyright (c) 2012, 2014 Megam Systems
2
+ # License:: Apache License, Version 2.0
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+ module Megam
17
+ class AssemblyCollection
18
+ include Enumerable
19
+
20
+ attr_reader :iterator
21
+ def initialize
22
+ @assemblys = Array.new
23
+ @assemblys_by_name = Hash.new
24
+ @insert_after_idx = nil
25
+ end
26
+
27
+ def all_assemblys
28
+ @assemblys
29
+ end
30
+
31
+ def [](index)
32
+ @assemblys[index]
33
+ end
34
+
35
+ def []=(index, arg)
36
+ is_megam_assemblys(arg)
37
+ @assemblys[index] = arg
38
+ @assemblys_by_name[arg.name] = index
39
+ end
40
+
41
+ def <<(*args)
42
+ args.flatten.each do |a|
43
+ is_megam_assemblys(a)
44
+ @assemblys << a
45
+ @assemblys_by_name[a.name] = @assemblys.length - 1
46
+ end
47
+ self
48
+ end
49
+
50
+ # 'push' is an alias method to <<
51
+ alias_method :push, :<<
52
+
53
+ def insert(assemblys)
54
+ is_megam_assemblys(assemblys)
55
+ if @insert_after_idx
56
+ # in the middle of executing a run, so any nodes inserted now should
57
+ # be placed after the most recent addition done by the currently executing
58
+ # node
59
+ @assemblys.insert(@insert_after_idx + 1, assemblys)
60
+ # update name -> location mappings and register new node
61
+ @assemblys_by_name.each_key do |key|
62
+ @assemblys_by_name[key] += 1 if @assemblys_by_name[key] > @insert_after_idx
63
+ end
64
+ @assemblys_by_name[assemblys.name] = @insert_after_idx + 1
65
+ @insert_after_idx += 1
66
+ else
67
+ @assemblys << assemblys
68
+ @assemblys_by_name[assemblys.name] = @assemblys.length - 1
69
+ end
70
+ end
71
+
72
+ def each
73
+ @assemblys.each do |assemblys|
74
+ yield assemblys
75
+ end
76
+ end
77
+
78
+ def each_index
79
+ @assemblys.each_index do |i|
80
+ yield i
81
+ end
82
+ end
83
+
84
+ def empty?
85
+ @assemblys.empty?
86
+ end
87
+
88
+ def lookup(assemblys)
89
+ lookup_by = nil
90
+ if assemblys.kind_of?(Megam::Assembly)
91
+ lookup_by = assemblys.name
92
+ elsif assemblys.kind_of?(String)
93
+ lookup_by = assemblys
94
+ else
95
+ raise ArgumentError, "Must pass a Megam::Assemblies or String to lookup"
96
+ end
97
+ res = @assemblys_by_name[lookup_by]
98
+ unless res
99
+ raise ArgumentError, "Cannot find a node matching #{lookup_by} (did you define it first?)"
100
+ end
101
+ @assemblys[res]
102
+ end
103
+
104
+ # Transform the ruby obj -> to a Hash
105
+ def to_hash
106
+ index_hash = Hash.new
107
+ self.each do |assemblys|
108
+ index_hash[assemblys.name] = assemblys.to_s
109
+ end
110
+ index_hash
111
+ end
112
+
113
+ # Serialize this object as a hash: called from JsonCompat.
114
+ # Verify if this called from JsonCompat during testing.
115
+ def to_json(*a)
116
+ for_json.to_json(*a)
117
+ end
118
+
119
+ def self.json_create(o)
120
+ collection = self.new()
121
+ o["results"].each do |assemblys_list|
122
+ assemblys_array = assemblys_list.kind_of?(Array) ? assemblys_list : [ assemblys_list ]
123
+ assemblys_array.each do |assemblys|
124
+ collection.insert(assemblys)
125
+
126
+ end
127
+ end
128
+ collection
129
+ end
130
+
131
+ private
132
+
133
+ def is_megam_assemblys(arg)
134
+ unless arg.kind_of?(Megam::Assembly)
135
+ raise ArgumentError, "Members must be Megam::Assembly's"
136
+ end
137
+ true
138
+ end
139
+
140
+ def to_s
141
+ Megam::Stuff.styled_hash(to_hash)
142
+ end
143
+
144
+ end
145
+ end
@@ -0,0 +1,433 @@
1
+ # Copyright:: Copyright (c) 2012, 2014 Megam Systems
2
+ # License:: Apache License, Version 2.0
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+
17
+ module Megam
18
+ class Components < Megam::ServerAPI
19
+ def initialize(email=nil, api_key=nil)
20
+ @id = nil
21
+ @name =nil
22
+ @tosca_type = nil
23
+ @requirements = {}
24
+ @host = nil
25
+ @dummy = nil
26
+ @inputs = {}
27
+ @domain = nil
28
+ @port = nil
29
+ @username = nil
30
+ @password = nil
31
+ @version = nil
32
+ @source = nil
33
+ @design_inputs = nil
34
+ @x = nil
35
+ @y = nil
36
+ @z = nil
37
+ @wires = []
38
+ @service_inputs = nil
39
+ @dbname = nil
40
+ @dbpassword = nil
41
+ @external_management_resource = nil
42
+ @artifacts = {}
43
+ @artifact_type = nil
44
+ @content = nil
45
+ @artifact_requirements = nil
46
+ @related_components = nil
47
+ @operations = {}
48
+ @operation_type = nil
49
+ @target_resource = nil
50
+ @created_at = nil
51
+
52
+ super(email, api_key)
53
+ end
54
+
55
+ def components
56
+ self
57
+ end
58
+
59
+ def id(arg=nil)
60
+ if arg != nil
61
+ @id = arg
62
+ else
63
+ @id
64
+ end
65
+ end
66
+
67
+ def name(arg=nil)
68
+ if arg != nil
69
+ @name = arg
70
+ else
71
+ @name
72
+ end
73
+ end
74
+
75
+ def tosca_type(arg=nil)
76
+ if arg != nil
77
+ @tosca_type = arg
78
+ else
79
+ @tosca_type
80
+ end
81
+ end
82
+
83
+ def requirements(arg=nil)
84
+ if arg != nil
85
+ @requirements = arg
86
+ else
87
+ @requirements
88
+ end
89
+ end
90
+
91
+ def host(arg=nil)
92
+ if arg != nil
93
+ @host = arg
94
+ else
95
+ @host
96
+ end
97
+ end
98
+
99
+ def dummy(arg=nil)
100
+ if arg != nil
101
+ @dummy = arg
102
+ else
103
+ @dummy
104
+ end
105
+ end
106
+
107
+ def inputs(arg=[])
108
+ if arg != []
109
+ @inputs = arg
110
+ else
111
+ @inputs
112
+ end
113
+ end
114
+
115
+ def domain(arg=nil)
116
+ if arg != nil
117
+ @domain = arg
118
+ else
119
+ @domain
120
+ end
121
+ end
122
+
123
+ def port(arg=nil)
124
+ if arg != nil
125
+ @port = arg
126
+ else
127
+ @port
128
+ end
129
+ end
130
+
131
+ def username(arg=nil)
132
+ if arg != nil
133
+ @username = arg
134
+ else
135
+ @username
136
+ end
137
+ end
138
+
139
+ def password(arg=nil)
140
+ if arg != nil
141
+ @password = arg
142
+ else
143
+ @password
144
+ end
145
+ end
146
+
147
+ def version(arg=nil)
148
+ if arg != nil
149
+ @version = arg
150
+ else
151
+ @version
152
+ end
153
+ end
154
+
155
+ def source(arg=nil)
156
+ if arg != nil
157
+ @source = arg
158
+ else
159
+ @source
160
+ end
161
+ end
162
+
163
+ def design_inputs(arg=nil)
164
+ if arg != nil
165
+ @design_inputs = arg
166
+ else
167
+ @design_inputs
168
+ end
169
+ end
170
+
171
+ def x(arg=nil)
172
+ if arg != nil
173
+ @x = arg
174
+ else
175
+ @x
176
+ end
177
+ end
178
+
179
+ def y(arg=nil)
180
+ if arg != nil
181
+ @y = arg
182
+ else
183
+ @y
184
+ end
185
+ end
186
+
187
+ def z(arg=nil)
188
+ if arg != nil
189
+ @z = arg
190
+ else
191
+ @z
192
+ end
193
+ end
194
+
195
+ def wires(arg=nil)
196
+ if arg != nil
197
+ @wires = arg
198
+ else
199
+ @wires
200
+ end
201
+ end
202
+
203
+ def service_inputs(arg=nil)
204
+ if arg != nil
205
+ @service_inputs = arg
206
+ else
207
+ @service_inputs
208
+ end
209
+ end
210
+
211
+ def dbname(arg=nil)
212
+ if arg != nil
213
+ @dbname = arg
214
+ else
215
+ @dbname
216
+ end
217
+ end
218
+
219
+ def dbpassword(arg=nil)
220
+ if arg != nil
221
+ @dbpassword = arg
222
+ else
223
+ @dbpassword
224
+ end
225
+ end
226
+
227
+ def external_management_resource(arg=nil)
228
+ if arg != nil
229
+ @external_management_resource = arg
230
+ else
231
+ @external_management_resource
232
+ end
233
+ end
234
+
235
+ def artifacts(arg=nil)
236
+ if arg != nil
237
+ @artifacts = arg
238
+ else
239
+ @artifacts
240
+ end
241
+ end
242
+
243
+ def artifact_type(arg=nil)
244
+ if arg != nil
245
+ @artifact_type = arg
246
+ else
247
+ @artifact_type
248
+ end
249
+ end
250
+
251
+ def content(arg=nil)
252
+ if arg != nil
253
+ @content = arg
254
+ else
255
+ @content
256
+ end
257
+ end
258
+
259
+ def artifact_requirements(arg=nil)
260
+ if arg != nil
261
+ @artifact_requirements = arg
262
+ else
263
+ @artifact_requirements
264
+ end
265
+ end
266
+
267
+ def related_components(arg=nil)
268
+ if arg != nil
269
+ @related_components = arg
270
+ else
271
+ @related_components
272
+ end
273
+ end
274
+
275
+ def operations(arg=nil)
276
+ if arg != nil
277
+ @operations = arg
278
+ else
279
+ @operations
280
+ end
281
+ end
282
+
283
+ def operation_type(arg=nil)
284
+ if arg != nil
285
+ @operation_type = arg
286
+ else
287
+ @operation_type
288
+ end
289
+ end
290
+
291
+ def target_resource(arg=nil)
292
+ if arg != nil
293
+ @target_resource = arg
294
+ else
295
+ @target_resource
296
+ end
297
+ end
298
+
299
+ def created_at(arg=nil)
300
+ if arg != nil
301
+ @created_at = arg
302
+ else
303
+ @created_at
304
+ end
305
+ end
306
+
307
+ def error?
308
+ crocked = true if (some_msg.has_key?(:msg_type) && some_msg[:msg_type] == "error")
309
+ end
310
+
311
+ # Transform the ruby obj -> to a Hash
312
+ def to_hash
313
+ index_hash = Hash.new
314
+ index_hash["json_claz"] = self.class.name
315
+ index_hash["id"] = id
316
+ index_hash["name"] = name
317
+ index_hash["tosca_type"] = tosca_type
318
+ index_hash["requirements"] = requirements
319
+ index_hash["inputs"] = inputs
320
+ index_hash["external_management_resource"] = external_management_resource
321
+ index_hash["artifacts"] = artifacts
322
+ index_hash["related_components"] = related_components
323
+ index_hash["operations"] = operations
324
+ index_hash["created_at"] = created_at
325
+ index_hash
326
+ end
327
+
328
+ # Serialize this object as a hash: called from JsonCompat.
329
+ # Verify if this called from JsonCompat during testing.
330
+ def to_json(*a)
331
+ for_json.to_json(*a)
332
+ end
333
+
334
+ def for_json
335
+ result = {
336
+ "id" => id,
337
+ "name" => name,
338
+ "tosca_type" => tosca_type,
339
+ "requirements" => requirements,
340
+ "inputs" => inputs,
341
+ "external_management_resource" => external_management_resource,
342
+ "artifacts" => artifacts,
343
+ "related_components" => related_components,
344
+ "operations" => operations,
345
+ "created_at" => created_at
346
+ }
347
+ result
348
+ end
349
+
350
+ def self.json_create(o)
351
+ asm = new
352
+ asm.id(o["id"]) if o.has_key?("id")
353
+ asm.name(o["name"]) if o.has_key?("name")
354
+ asm.tosca_type(o["tosca_type"]) if o.has_key?("tosca_type")
355
+
356
+ oq = o["requirements"]
357
+ asm.requirements[:host] = oq["host"] if oq && oq.has_key?("host")
358
+ asm.requirements[:dummy] = oq["dummy"] if oq && oq.has_key?("dummy")
359
+
360
+ inp = o["inputs"]
361
+ asm.inputs[:domain] = inp["domain"] if inp && inp.has_key?("domain")
362
+ asm.inputs[:port] = inp["port"] if inp && inp.has_key?("port")
363
+ asm.inputs[:username] = inp["username"] if inp && inp.has_key?("username")
364
+ asm.inputs[:password] = inp["password"] if inp && inp.has_key?("password")
365
+ asm.inputs[:version] = inp["version"] if inp && inp.has_key?("version")
366
+ asm.inputs[:source] = inp["source"] if inp && inp.has_key?("source")
367
+ asm.inputs[:design_inputs] = inp["design_inputs"] if inp && inp.has_key?("design_inputs")
368
+ asm.inputs[:service_inputs] = inp["service_inputs"] if inp && inp.has_key?("service_inputs")
369
+ # ind = inp["design_inputs"]
370
+ # asm.inputs["design_inputs"][:did] = ind["did"] if ind && ind.has_key?("did")
371
+ # asm.inputs[:design_inputs][:x] = ind["x"] if ind && ind.has_key?("x")
372
+ # asm.inputs[:design_inputs][:y] = ind["y"] if ind && ind.has_key?("y")
373
+ # asm.inputs[:design_inputs][:z] = ind["z"] if ind && ind.has_key?("z")
374
+ # asm.inputs[:design_inputs][:wires] = ind["wires"] if ind && ind.has_key?("wires")
375
+ # ins = o["inputs"]["service_inputs"]
376
+ # asm.inputs[:service_inputs][:dbname] = ins["dbname"] if ins && ins.has_key?("dbname")
377
+ # asm.inputs[:service_inputs][:dbpassword] = ins["dbpassword"] if ins && ins.has_key?("dbpassword")
378
+
379
+ asm.external_management_resource(o["external_management_resource"]) if o.has_key?("external_management_resource")
380
+
381
+ ar = o["artifacts"]
382
+ asm.artifacts[:artifact_type] = ar["artifact_type"] if ar && ar.has_key?("artifact_type")
383
+ asm.artifacts[:content] = ar["content"] if ar && ar.has_key?("content")
384
+ asm.artifacts[:artifact_requirements] = ar["artifact_requirements"] if ar && ar.has_key?("artifact_requirements")
385
+
386
+ asm.related_components(o["related_components"]) if o.has_key?("related_components")
387
+
388
+ ope = o["operations"]
389
+ asm.operations[:operation_type] = ope["operation_type"] if ope && ope.has_key?("operation_type")
390
+ asm.operations[:target_resource] = ope["target_resource"] if ope && ope.has_key?("target_resource")
391
+
392
+ asm.created_at(o["created_at"]) if o.has_key?("created_at")
393
+ asm
394
+ end
395
+
396
+ def self.from_hash(o,tmp_email=nil, tmp_api_key=nil)
397
+ asm = self.new(tmp_email, tmp_api_key)
398
+ asm.from_hash(o)
399
+ asm
400
+ end
401
+
402
+ def from_hash(o)
403
+ @id = o["id"] if o.has_key?("id")
404
+ @name = o["name"] if o.has_key?("name")
405
+ @tosca_type = o["tosca_type"] if o.has_key?("tosca_type")
406
+ @inputs = o["inputs"] if o.has_key?("inputs")
407
+ @external_management_resource = o["external_management_resource"] if o.has_key?("external_management_resource")
408
+ @artifacts = o["artifacts"] if o.has_key?("artifacts")
409
+ @related_components = o["related_components"] if o.has_key?("related_components")
410
+ @operations = o["operations"] if o.has_key?("operations")
411
+ @created_at = o["created_at"] if o.has_key?("created_at")
412
+ self
413
+ end
414
+
415
+ def self.create(o,tmp_email=nil, tmp_api_key=nil)
416
+ asm = from_hash(o, tmp_email, tmp_api_key)
417
+ asm.create
418
+ end
419
+
420
+
421
+ # Load a account by email_p
422
+ def self.show(comp_id, tmp_email=nil, tmp_api_key=nil)
423
+ asm = self.new(tmp_email, tmp_api_key)
424
+ asm.megam_rest.get_components(comp_id)
425
+ end
426
+
427
+
428
+ def to_s
429
+ Megam::Stuff.styled_hash(to_hash)
430
+ end
431
+
432
+ end
433
+ end
@@ -0,0 +1,145 @@
1
+ # Copyright:: Copyright (c) 2012, 2014 Megam Systems
2
+ # License:: Apache License, Version 2.0
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+ module Megam
17
+ class ComponentsCollection
18
+ include Enumerable
19
+
20
+ attr_reader :iterator
21
+ def initialize
22
+ @components = Array.new
23
+ @components_by_name = Hash.new
24
+ @insert_after_idx = nil
25
+ end
26
+
27
+ def all_components
28
+ @components
29
+ end
30
+
31
+ def [](index)
32
+ @components[index]
33
+ end
34
+
35
+ def []=(index, arg)
36
+ is_megam_components(arg)
37
+ @components[index] = arg
38
+ @components_by_name[arg.name] = index
39
+ end
40
+
41
+ def <<(*args)
42
+ args.flatten.each do |a|
43
+ is_megam_components(a)
44
+ @components << a
45
+ @components_by_name[a.name] = @components.length - 1
46
+ end
47
+ self
48
+ end
49
+
50
+ # 'push' is an alias method to <<
51
+ alias_method :push, :<<
52
+
53
+ def insert(components)
54
+ is_megam_components(components)
55
+ if @insert_after_idx
56
+ # in the middle of executing a run, so any nodes inserted now should
57
+ # be placed after the most recent addition done by the currently executing
58
+ # node
59
+ @components.insert(@insert_after_idx + 1, components)
60
+ # update name -> location mappings and register new node
61
+ @components_by_name.each_key do |key|
62
+ @components_by_name[key] += 1 if @components_by_name[key] > @insert_after_idx
63
+ end
64
+ @components_by_name[components.name] = @insert_after_idx + 1
65
+ @insert_after_idx += 1
66
+ else
67
+ @components << components
68
+ @components_by_name[components.name] = @components.length - 1
69
+ end
70
+ end
71
+
72
+ def each
73
+ @components.each do |components|
74
+ yield components
75
+ end
76
+ end
77
+
78
+ def each_index
79
+ @components.each_index do |i|
80
+ yield i
81
+ end
82
+ end
83
+
84
+ def empty?
85
+ @components.empty?
86
+ end
87
+
88
+ def lookup(components)
89
+ lookup_by = nil
90
+ if components.kind_of?(Megam::Components)
91
+ lookup_by = components.name
92
+ elsif components.kind_of?(String)
93
+ lookup_by = components
94
+ else
95
+ raise ArgumentError, "Must pass a Megam::components or String to lookup"
96
+ end
97
+ res = @components_by_name[lookup_by]
98
+ unless res
99
+ raise ArgumentError, "Cannot find a node matching #{lookup_by} (did you define it first?)"
100
+ end
101
+ @components[res]
102
+ end
103
+
104
+ # Transform the ruby obj -> to a Hash
105
+ def to_hash
106
+ index_hash = Hash.new
107
+ self.each do |components|
108
+ index_hash[components.name] = components.to_s
109
+ end
110
+ index_hash
111
+ end
112
+
113
+ # Serialize this object as a hash: called from JsonCompat.
114
+ # Verify if this called from JsonCompat during testing.
115
+ def to_json(*a)
116
+ for_json.to_json(*a)
117
+ end
118
+
119
+ def self.json_create(o)
120
+ collection = self.new()
121
+ o["results"].each do |components_list|
122
+ components_array = components_list.kind_of?(Array) ? components_list : [ components_list ]
123
+ components_array.each do |components|
124
+ collection.insert(components)
125
+
126
+ end
127
+ end
128
+ collection
129
+ end
130
+
131
+ private
132
+
133
+ def is_megam_components(arg)
134
+ unless arg.kind_of?(Megam::Components)
135
+ raise ArgumentError, "Members must be Megam::components"
136
+ end
137
+ true
138
+ end
139
+
140
+ def to_s
141
+ Megam::Stuff.styled_hash(to_hash)
142
+ end
143
+
144
+ end
145
+ end
@@ -22,47 +22,33 @@ module Megam
22
22
 
23
23
  JSON_CLAZ = "json_claz".freeze
24
24
 
25
- MEGAM_AUTH = "Megam::Auth".freeze
26
- MEGAM_ERROR = "Megam::Error".freeze
27
- MEGAM_ACCOUNT = "Megam::Account".freeze
28
- MEGAM_NODE = "Megam::Node".freeze
29
- MEGAM_NODECOLLECTION = "Megam::NodeCollection".freeze
30
- MEGAM_APPDEFNS = "Megam::AppDefns".freeze
31
- MEGAM_APPREQUEST = "Megam::AppRequest".freeze
32
- MEGAM_BOLTREQUEST = "Megam::BoltRequest".freeze
33
- MEGAM_BOLTDEFNS = "Megam::BoltDefns".freeze
34
- MEGAM_APPDEFNSCOLLECTION = "Megam::AppDefnCollection".freeze
35
- MEGAM_APPREQUESTCOLLECTION = "Megam::AppRequestCollection".freeze
36
- MEGAM_BOLTREQUESTCOLLECTION = "Megam::BoltRequestCollection".freeze
37
- MEGAM_BOLTDEFNSCOLLECTION = "Megam::BoltDefnCollection".freeze
38
- MEGAM_REQUEST = "Megam::Request".freeze
39
- MEGAM_REQUESTCOLLECTION = "Megam::RequestCollection".freeze
40
- MEGAM_ORGANIZATION = "Megam::Organizations".freeze
41
- MEGAM_DOMAIN = "Megam::Domains".freeze
42
- MEGAM_ASSEMBLIES = "Megam::Assemblies".freeze
43
- MEGAM_ASSEMBLIESCOLLECTION = "Megam::AssembliesCollection".freeze
44
-
45
- MEGAM_PREDEF = "Megam::Predef".freeze
46
- MEGAM_PREDEFCOLLECTION = "Megam::PredefCollection".freeze
47
- MEGAM_PREDEFCLOUD = "Megam::PredefCloud".freeze
48
- MEGAM_PREDEFCLOUDCOLLECTION = "Megam::PredefCloudCollection".freeze
49
- MEGAM_CLOUDTOOL = "Megam::CloudTool".freeze
50
- MEGAM_CLOUDTOOLCOLLECTION = "Megam::CloudToolCollection".freeze
51
- MEGAM_CLOUDTOOLSETTING = "Megam::CloudToolSetting".freeze
52
- MEGAM_CLOUDTOOLSETTINGCOLLECTION = "Megam::CloudToolSettingCollection".freeze
53
- MEGAM_CLOUDTEMPLATE = "Megam::CloudTemplate".freeze
54
- MEGAM_CLOUDTEMPLATECOLLECTION = "Megam::CloudTemplateCollection".freeze
55
- MEGAM_CLOUDINSTRUCTION = "Megam::CloudInstruction".freeze
56
- MEGAM_CLOUDINSTRUCTIONCOLLECTION = "Megam::CloudInstructionCollection".freeze
57
- MEGAM_CLOUDINSTRUCTIONGROUP = "Megam::CloudInstructionGroup".freeze
58
- MEGAM_SSHKEY = "Megam::SshKey".freeze
59
- MEGAM_SSHKEYCOLLECTION = "Megam::SshKeyCollection".freeze
60
- MEGAM_MARKETPLACE = "Megam::MarketPlace".freeze
61
- MEGAM_MARKETPLACECOLLECTION = "Megam::MarketPlaceCollection".freeze
62
- MEGAM_MARKETPLACEADDON = "Megam::MarketPlaceAddons".freeze
63
- MEGAM_MARKETPLACEADDONCOLLECTION = "Megam::MarketPlaceAddonsCollection".freeze
64
- MEGAM_CSAR = "Megam::CSAR".freeze
65
- MEGAM_CSARCOLLECTION = "Megam::CSARCollection".freeze
25
+ MEGAM_AUTH = "Megam::Auth".freeze
26
+ MEGAM_ERROR = "Megam::Error".freeze
27
+ MEGAM_ACCOUNT = "Megam::Account".freeze
28
+ MEGAM_ASSEMBLIES = "Megam::Assemblies".freeze
29
+ MEGAM_ASSEMBLIESCOLLECTION = "Megam::AssembliesCollection".freeze
30
+ MEGAM_ASSEMBLY = "Megam::Assembly".freeze
31
+ MEGAM_ASSEMBLYCOLLECTION = "Megam::AssemblyCollection".freeze
32
+ MEGAM_COMPONENTS = "Megam::Components".freeze
33
+ MEGAM_COMPONENTSCOLLECTION = "Megam::ComponentsCollection".freeze
34
+ MEGAM_REQUEST = "Megam::Request".freeze
35
+ MEGAM_REQUESTCOLLECTION = "Megam::RequestCollection".freeze
36
+ MEGAM_ORGANIZATION = "Megam::Organizations".freeze
37
+ MEGAM_DOMAIN = "Megam::Domains".freeze
38
+
39
+ MEGAM_PREDEFCLOUD = "Megam::PredefCloud".freeze
40
+ MEGAM_PREDEFCLOUDCOLLECTION = "Megam::PredefCloudCollection".freeze
41
+ MEGAM_CLOUDTOOLSETTING = "Megam::CloudToolSetting".freeze
42
+ MEGAM_CLOUDTOOLSETTINGCOLLECTION= "Megam::CloudToolSettingCollection".freeze
43
+ MEGAM_SSHKEY = "Megam::SshKey".freeze
44
+ MEGAM_SSHKEYCOLLECTION = "Megam::SshKeyCollection".freeze
45
+ MEGAM_MARKETPLACE = "Megam::MarketPlace".freeze
46
+ MEGAM_MARKETPLACECOLLECTION = "Megam::MarketPlaceCollection".freeze
47
+ MEGAM_MARKETPLACEADDON = "Megam::MarketPlaceAddons".freeze
48
+ MEGAM_MARKETPLACEADDONCOLLECTION= "Megam::MarketPlaceAddonsCollection".freeze
49
+ MEGAM_CSAR = "Megam::CSAR".freeze
50
+ MEGAM_CSARCOLLECTION = "Megam::CSARCollection".freeze
51
+
66
52
  class <<self
67
53
  # Increase the max nesting for JSON, which defaults
68
54
  # to 19, and isn't enough for some (for example, a Node within a Node)
@@ -145,56 +131,26 @@ module Megam
145
131
  Megam::Auth
146
132
  when MEGAM_ACCOUNT
147
133
  Megam::Account
148
- when MEGAM_NODE
149
- Megam::Node
150
- when MEGAM_APPDEFNS
151
- Megam::Appdefns
152
- when MEGAM_APPREQUEST
153
- Megam::AppRequest
154
- when MEGAM_BOLTREQUEST
155
- Megam::BoltRequest
156
- when MEGAM_BOLTDEFNS
157
- Megam::Boltdefns
158
- when MEGAM_NODECOLLECTION
159
- Megam::NodeCollection
160
- when MEGAM_APPDEFNSCOLLECTION
161
- Megam::AppdefnsCollection
162
- when MEGAM_APPREQUESTCOLLECTION
163
- Megam::AppRequestCollection
164
- when MEGAM_BOLTREQUESTCOLLECTION
165
- Megam::BoltRequestCollection
166
- when MEGAM_BOLTDEFNSCOLLECTION
167
- Megam::BoltdefnsCollection
134
+ when MEGAM_ASSEMBLIES
135
+ Megam::Assemblies
136
+ when MEGAM_ASSEMBLIESCOLLECTION
137
+ Megam::AssembliesCollection
138
+ when MEGAM_ASSEMBLY
139
+ Megam::Assembly
140
+ when MEGAM_ASSEMBLYCOLLECTION
141
+ Megam::AssemblyCollection
142
+ when MEGAM_COMPONENTS
143
+ Megam::Components
144
+ when MEGAM_COMPONENTSCOLLECTION
145
+ Megam::ComponentsCollection
168
146
  when MEGAM_REQUEST
169
147
  Megam::Request
170
148
  when MEGAM_REQUESTCOLLECTION
171
149
  Megam::RequestCollection
172
- when MEGAM_PREDEF
173
- Megam::Predef
174
- when MEGAM_PREDEFCOLLECTION
175
- Megam::PredefCollection
176
150
  when MEGAM_PREDEFCLOUD
177
151
  Megam::PredefCloud
178
152
  when MEGAM_PREDEFCLOUDCOLLECTION
179
153
  Megam::PredefCloudCollection
180
- when MEGAM_CLOUDTOOL
181
- Megam::CloudTool
182
- when MEGAM_CLOUDTOOLCOLLECTION
183
- Megam::CloudToolCollection
184
- when MEGAM_CLOUDTOOLSETTING
185
- Megam::CloudToolSetting
186
- when MEGAM_CLOUDTOOLSETTINGCOLLECTION
187
- Megam::CloudToolSettingCollection
188
- when MEGAM_CLOUDTEMPLATE
189
- Megam::CloudTemplate
190
- when MEGAM_CLOUDTEMPLATECOLLECTION
191
- Megam::CloudTemplateCollection
192
- when MEGAM_CLOUDINSTRUCTION
193
- Megam::CloudInstruction
194
- when MEGAM_CLOUDINSTRUCTIONGROUP
195
- Megam::CloudInstructionGroup
196
- when MEGAM_CLOUDINSTRUCTIONCOLLECTION
197
- Megam::CloudInstructionCollection
198
154
  when MEGAM_SSHKEY
199
155
  Megam::SshKey
200
156
  when MEGAM_SSHKEYCOLLECTION
@@ -214,11 +170,7 @@ module Megam
214
170
  when MEGAM_CSARCOLLECTION
215
171
  Megam::CSARCollection
216
172
  when MEGAM_DOMAIN
217
- Megam::Organizations
218
- when MEGAM_ASSEMBLIES
219
- Megam::Assemblies
220
- when MEGAM_ASSEMBLIESCOLLECTION
221
- Megam::AssembliesCollection
173
+ Megam::Domains
222
174
  else
223
175
  raise JSON::ParserError, "Unsupported `json_class` type '#{json_class}'"
224
176
  end
@@ -19,6 +19,7 @@ module Megam
19
19
  def initialize(email=nil, api_key=nil)
20
20
  @id = nil
21
21
  @name = nil
22
+ @accounts_id = nil
22
23
  @created_at = nil
23
24
  super(email, api_key)
24
25
  end
@@ -36,7 +37,13 @@ def id(arg=nil)
36
37
  end
37
38
  end
38
39
 
39
-
40
+ def accounts_id(arg=nil)
41
+ if arg != nil
42
+ @accounts_id = arg
43
+ else
44
+ @accounts_id
45
+ end
46
+ end
40
47
 
41
48
  def name(arg=nil)
42
49
  if arg != nil
@@ -64,6 +71,7 @@ end
64
71
  index_hash["json_claz"] = self.class.name
65
72
  index_hash["id"] = id
66
73
  index_hash["name"] = name
74
+ index_hash["accounts_id"] = accounts_id
67
75
  index_hash["created_at"] = created_at
68
76
  index_hash
69
77
  end
@@ -76,6 +84,7 @@ def for_json
76
84
  result = {
77
85
  "id" => id,
78
86
  "name" => name,
87
+ "accounts_id" => accounts_id,
79
88
  "created_at" => created_at
80
89
  }
81
90
  result
@@ -86,6 +95,7 @@ def self.json_create(o)
86
95
  org = new
87
96
  org.id(o["id"]) if o.has_key?("id")
88
97
  org.name(o["name"]) if o.has_key?("name")
98
+ org.accounts_id(o["accounts_id"]) if o.has_key?("accounts_id")
89
99
  org.created_at(o["created_at"]) if o.has_key?("created_at")
90
100
  org
91
101
  end
@@ -99,6 +109,7 @@ end
99
109
  def from_hash(o)
100
110
  @id = o[:id] if o.has_key?(:id)
101
111
  @name = o[:name] if o.has_key?(:name)
112
+ @accounts_id = o[:accounts_id] if o.has_key?(:accounts_id)
102
113
  @created_at = o[:created_at] if o.has_key?(:created_at)
103
114
  self
104
115
  end
@@ -3,8 +3,13 @@ require File.expand_path("#{File.dirname(__FILE__)}/test_helper")
3
3
  class TestApps < MiniTest::Unit::TestCase
4
4
 
5
5
 
6
- def test_get_assemblies
7
- response = megams.get_assemblies("AMS1133263480544165888")
6
+ def test_get_assemblies
7
+ response = megams.get_assemblies
8
+ assert_equal(200, response.status)
9
+ end
10
+
11
+ def test_get_assembly
12
+ response = megams.get_one_assemblies("AMS1133263480544165888")
8
13
  assert_equal(200, response.status)
9
14
  end
10
15
  end
@@ -0,0 +1,10 @@
1
+ require File.expand_path("#{File.dirname(__FILE__)}/test_helper")
2
+
3
+ class TestApps < MiniTest::Unit::TestCase
4
+
5
+
6
+ def test_get_assembly
7
+ response = megams.get_one_assembly("ASM1133747830209511424")
8
+ assert_equal(200, response.status)
9
+ end
10
+ end
@@ -0,0 +1,8 @@
1
+ require File.expand_path("#{File.dirname(__FILE__)}/test_helper")
2
+
3
+ class TestApps < MiniTest::Unit::TestCase
4
+ def test_get_component
5
+ response = megams.get_components("COM519839138036318208")
6
+ assert_equal(200, response.status)
7
+ end
8
+ end
data/test/test_domains.rb CHANGED
@@ -6,7 +6,7 @@ class TestDomains < MiniTest::Unit::TestCase
6
6
  $normal = "normal-tom"
7
7
  $tom_email = "tom@gomegam.com"
8
8
  $bob_email = "bob@gomegam.com"
9
-
9
+
10
10
 
11
11
  def test_get_domains_good
12
12
  response =megams.get_domains(domain_name)
@@ -17,7 +17,7 @@ class TestDomains < MiniTest::Unit::TestCase
17
17
 
18
18
  def test_post_domains_good
19
19
  tmp_hash = {
20
- "name" => "dmnname"}
20
+ "name" => "dmnname1"}
21
21
 
22
22
  response =megams.post_domains(tmp_hash)
23
23
  response.body.to_s
data/test/test_helper.rb CHANGED
@@ -65,7 +65,7 @@ def domain_name
65
65
  end
66
66
 
67
67
  def sandbox_name
68
- "Default_Org"
68
+ "Megam6"
69
69
  end
70
70
 
71
71
  def sandbox_apikey
@@ -6,21 +6,21 @@ class TestOrganizations < MiniTest::Unit::TestCase
6
6
  $normal = "normal-tom"
7
7
  $tom_email = "tom@gomegam.com"
8
8
  $bob_email = "bob@gomegam.com"
9
-
9
+
10
10
 
11
11
  def test_get_organizations_good
12
12
  response =megams.get_organizations(sandbox_name)
13
13
  response.body.to_s
14
14
  assert_equal(200, response.status)
15
15
  end
16
-
16
+ =begin
17
17
 
18
18
  def test_post_organizations_good
19
19
  tmp_hash = {
20
- "name" => "orgname"}
20
+ "name" => "orgname3"}
21
21
  response =megams.post_organizations(tmp_hash)
22
22
  response.body.to_s
23
23
  assert_equal(201, response.status)
24
24
  end
25
-
25
+ =end
26
26
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: megam_api
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.18'
4
+ version: '0.19'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kishorekumar Neelamegam, Thomas Alrin, Subash Sethurajan, Rajthilak
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-13 00:00:00.000000000 Z
11
+ date: 2014-10-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: excon
@@ -131,7 +131,9 @@ files:
131
131
  - lib/megam/api.rb
132
132
  - lib/megam/api/accounts.rb
133
133
  - lib/megam/api/assemblies.rb
134
+ - lib/megam/api/assembly.rb
134
135
  - lib/megam/api/cloud_tool_settings.rb
136
+ - lib/megam/api/components.rb
135
137
  - lib/megam/api/csars.rb
136
138
  - lib/megam/api/domains.rb
137
139
  - lib/megam/api/errors.rb
@@ -146,9 +148,13 @@ files:
146
148
  - lib/megam/core/account.rb
147
149
  - lib/megam/core/assemblies.rb
148
150
  - lib/megam/core/assemblies_collection.rb
151
+ - lib/megam/core/assembly.rb
152
+ - lib/megam/core/assembly_collection.rb
149
153
  - lib/megam/core/auth.rb
150
154
  - lib/megam/core/cloudtoolsetting.rb
151
155
  - lib/megam/core/cloudtoolsetting_collection.rb
156
+ - lib/megam/core/components.rb
157
+ - lib/megam/core/components_collection.rb
152
158
  - lib/megam/core/config.rb
153
159
  - lib/megam/core/csar.rb
154
160
  - lib/megam/core/csar_collection.rb
@@ -177,7 +183,9 @@ files:
177
183
  - megam_api.gemspec
178
184
  - test/test_accounts.rb
179
185
  - test/test_assemblies.rb
186
+ - test/test_assembly.rb
180
187
  - test/test_cloudtoolsettings.rb
188
+ - test/test_components.rb
181
189
  - test/test_csars.rb
182
190
  - test/test_domains.rb
183
191
  - test/test_helper.rb