megam_api 0.92 → 0.93
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/megam/api.rb +13 -6
- data/lib/megam/api/marketplaces.rb +0 -1
- data/lib/megam/api/organizations.rb +15 -21
- data/lib/megam/api/version.rb +1 -1
- data/lib/megam/core/account.rb +13 -7
- data/lib/megam/core/assemblies.rb +22 -15
- data/lib/megam/core/assembly.rb +11 -10
- data/lib/megam/core/availableunits.rb +2 -1
- data/lib/megam/core/balances.rb +1 -0
- data/lib/megam/core/billedhistories.rb +1 -0
- data/lib/megam/core/components.rb +8 -8
- data/lib/megam/core/config.rb +1 -0
- data/lib/megam/core/marketplace.rb +37 -24
- data/lib/megam/core/marketplace_collection.rb +9 -10
- data/lib/megam/core/organizations.rb +18 -20
- data/lib/megam/core/server_api.rb +9 -6
- data/lib/megam/core/sshkey.rb +37 -22
- data/test/test_accounts.rb +10 -36
- data/test/test_assemblies.rb +71 -75
- data/test/test_assembly.rb +6 -25
- data/test/test_components.rb +6 -6
- data/test/test_helper.rb +9 -10
- data/test/test_marketplaces.rb +6 -4
- data/test/test_organizations.rb +7 -13
- data/test/test_sshkeys.rb +38 -5
- metadata +3 -3
data/lib/megam/core/config.rb
CHANGED
@@ -17,28 +17,29 @@ require 'hashie'
|
|
17
17
|
|
18
18
|
module Megam
|
19
19
|
class MarketPlace < Megam::ServerAPI
|
20
|
-
def initialize(
|
20
|
+
def initialize(o)
|
21
21
|
@id = nil
|
22
|
-
@
|
22
|
+
@settings_name = nil
|
23
23
|
@cattype = nil
|
24
|
-
@
|
24
|
+
@flavor = nil
|
25
25
|
@image = nil
|
26
|
+
@catorder = nil
|
26
27
|
@url = nil
|
27
28
|
@envs = []
|
28
29
|
@plans = nil
|
29
30
|
@created_at = nil
|
30
|
-
super(
|
31
|
+
super(o)
|
31
32
|
end
|
32
33
|
|
33
34
|
def market_place
|
34
35
|
self
|
35
36
|
end
|
36
37
|
|
37
|
-
def
|
38
|
+
def settings_name(arg = nil)
|
38
39
|
if !arg.nil?
|
39
|
-
@
|
40
|
+
@settings_name = arg
|
40
41
|
else
|
41
|
-
@
|
42
|
+
@settings_name
|
42
43
|
end
|
43
44
|
end
|
44
45
|
|
@@ -66,11 +67,19 @@ module Megam
|
|
66
67
|
end
|
67
68
|
end
|
68
69
|
|
69
|
-
def
|
70
|
+
def flavor(arg = nil)
|
70
71
|
if !arg.nil?
|
71
|
-
@
|
72
|
+
@flavor = arg
|
72
73
|
else
|
73
|
-
@
|
74
|
+
@flavor
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
def catorder(arg = nil)
|
79
|
+
if !arg.nil?
|
80
|
+
@catorder = arg
|
81
|
+
else
|
82
|
+
@catorder
|
74
83
|
end
|
75
84
|
end
|
76
85
|
|
@@ -124,10 +133,11 @@ module Megam
|
|
124
133
|
index_hash = {}
|
125
134
|
index_hash['json_claz'] = self.class.name
|
126
135
|
index_hash['id'] = id
|
127
|
-
index_hash['
|
136
|
+
index_hash['settings_name'] = settings_name
|
128
137
|
index_hash['cattype'] = cattype
|
129
|
-
index_hash['
|
138
|
+
index_hash['flavor'] = flavor
|
130
139
|
index_hash['image'] = image
|
140
|
+
index_hash['catorder'] = catorder
|
131
141
|
index_hash['url'] = url
|
132
142
|
index_hash['envs'] = envs
|
133
143
|
index_hash['plans'] = plans
|
@@ -144,10 +154,11 @@ module Megam
|
|
144
154
|
def for_json
|
145
155
|
result = {
|
146
156
|
'id' => id,
|
147
|
-
'
|
157
|
+
'settings_name' => settings_name,
|
148
158
|
'cattype' => cattype,
|
149
|
-
'
|
159
|
+
'flavor' => flavor,
|
150
160
|
'image' => image,
|
161
|
+
'catorder' => catorder,
|
151
162
|
'url' => url,
|
152
163
|
'envs' => envs,
|
153
164
|
'plans' => plans,
|
@@ -157,12 +168,13 @@ module Megam
|
|
157
168
|
end
|
158
169
|
|
159
170
|
def self.json_create(o)
|
160
|
-
app = new
|
171
|
+
app = new({})
|
161
172
|
app.id(o['id']) if o.key?('id')
|
162
|
-
app.
|
173
|
+
app.settings_name(o['settings_name']) if o.key?('settings_name')
|
163
174
|
app.cattype(o['cattype']) if o.key?('cattype')
|
164
|
-
app.
|
175
|
+
app.flavor(o['flavor']) if o.key?('flavor')
|
165
176
|
app.image(o['image']) if o.key?('image')
|
177
|
+
app.catorder(o['catorder']) if o.key?('catorder')
|
166
178
|
app.url(o['url']) if o.key?('url')
|
167
179
|
app.envs(o['envs']) if o.key?('envs')
|
168
180
|
app.plans(o['plans']) if o.key?('plans')
|
@@ -171,18 +183,19 @@ module Megam
|
|
171
183
|
app
|
172
184
|
end
|
173
185
|
|
174
|
-
def self.from_hash(o
|
175
|
-
app = new(
|
186
|
+
def self.from_hash(o)
|
187
|
+
app = new(o)
|
176
188
|
app.from_hash(o)
|
177
189
|
app
|
178
190
|
end
|
179
191
|
|
180
192
|
def from_hash(o)
|
181
|
-
@
|
193
|
+
@settings_name = o['settings_name'] if o.key?('settings_name')
|
182
194
|
@id = o['id'] if o.key?('id')
|
183
195
|
@cattype = o['cattype'] if o.key?('cattype')
|
184
|
-
@
|
196
|
+
@flavor = o['flavor'] if o.key?('flavor')
|
185
197
|
@image = o['image'] if o.key?('image')
|
198
|
+
@catorder = o['catorder'] if o.key?('catorder')
|
186
199
|
@url = o['url'] if o.key?('url')
|
187
200
|
@envs = o['envs'] if o.key?('envs')
|
188
201
|
@plans = o['plans'] if o.key?('plans')
|
@@ -191,7 +204,7 @@ module Megam
|
|
191
204
|
end
|
192
205
|
|
193
206
|
def self.create(params)
|
194
|
-
acct = from_hash(params
|
207
|
+
acct = from_hash(params)
|
195
208
|
acct.create
|
196
209
|
end
|
197
210
|
|
@@ -202,12 +215,12 @@ module Megam
|
|
202
215
|
|
203
216
|
# Load a account by email_p
|
204
217
|
def self.show(params)
|
205
|
-
app = new(params
|
218
|
+
app = new(params)
|
206
219
|
app.megam_rest.get_marketplaceapp(params['id'])
|
207
220
|
end
|
208
221
|
|
209
222
|
def self.list(params)
|
210
|
-
app = new(params
|
223
|
+
app = new(params)
|
211
224
|
app.megam_rest.get_marketplaceapps
|
212
225
|
end
|
213
226
|
|
@@ -17,7 +17,6 @@ module Megam
|
|
17
17
|
class MarketPlaceCollection
|
18
18
|
include Enumerable
|
19
19
|
|
20
|
-
|
21
20
|
attr_reader :iterator
|
22
21
|
def initialize
|
23
22
|
@apps = Array.new
|
@@ -36,14 +35,14 @@ module Megam
|
|
36
35
|
def []=(index, arg)
|
37
36
|
is_megam_app(arg)
|
38
37
|
@apps[index] = arg
|
39
|
-
@apps_by_name[arg.
|
38
|
+
@apps_by_name[arg.flavor] = index
|
40
39
|
end
|
41
40
|
|
42
41
|
def <<(*args)
|
43
42
|
args.flatten.each do |a|
|
44
43
|
is_megam_app(a)
|
45
44
|
@apps << a
|
46
|
-
@apps_by_name[a.
|
45
|
+
@apps_by_name[a.flavor] = @apps.length - 1
|
47
46
|
end
|
48
47
|
self
|
49
48
|
end
|
@@ -62,11 +61,11 @@ module Megam
|
|
62
61
|
@apps_by_name.each_key do |key|
|
63
62
|
@apps_by_name[key] += 1 if @apps_by_name[key] > @insert_after_idx
|
64
63
|
end
|
65
|
-
@apps_by_name[app.
|
64
|
+
@apps_by_name[app.flavor] = @insert_after_idx + 1
|
66
65
|
@insert_after_idx += 1
|
67
66
|
else
|
68
67
|
@apps << app
|
69
|
-
@apps_by_name[app.
|
68
|
+
@apps_by_name[app.flavor] = @apps.length - 1
|
70
69
|
end
|
71
70
|
end
|
72
71
|
|
@@ -89,7 +88,7 @@ module Megam
|
|
89
88
|
def lookup(app)
|
90
89
|
lookup_by = nil
|
91
90
|
if app.kind_of?(Megam::MarketPlace)
|
92
|
-
lookup_by = app.
|
91
|
+
lookup_by = app.flavor
|
93
92
|
elsif app.kind_of?(String)
|
94
93
|
lookup_by = app
|
95
94
|
else
|
@@ -101,12 +100,12 @@ module Megam
|
|
101
100
|
end
|
102
101
|
@apps[res]
|
103
102
|
end
|
104
|
-
|
103
|
+
|
105
104
|
# Transform the ruby obj -> to a Hash
|
106
105
|
def to_hash
|
107
106
|
index_hash = Hash.new
|
108
107
|
self.each do |app|
|
109
|
-
index_hash[app.
|
108
|
+
index_hash[app.flavor] = app.to_s
|
110
109
|
end
|
111
110
|
index_hash
|
112
111
|
end
|
@@ -131,8 +130,8 @@ module Megam
|
|
131
130
|
|
132
131
|
private
|
133
132
|
|
134
|
-
|
135
|
-
|
133
|
+
|
134
|
+
|
136
135
|
def is_megam_app(arg)
|
137
136
|
unless arg.kind_of?(Megam::MarketPlace)
|
138
137
|
raise ArgumentError, "Members must be Megam::MarketPlace's"
|
@@ -16,13 +16,13 @@
|
|
16
16
|
|
17
17
|
module Megam
|
18
18
|
class Organizations < Megam::ServerAPI
|
19
|
-
def initialize(
|
19
|
+
def initialize(o)
|
20
20
|
@id = nil
|
21
21
|
@name = nil
|
22
22
|
@accounts_id = nil
|
23
23
|
@related_orgs = []
|
24
24
|
@created_at = nil
|
25
|
-
super(
|
25
|
+
super(o)
|
26
26
|
end
|
27
27
|
|
28
28
|
def organization
|
@@ -53,14 +53,13 @@ module Megam
|
|
53
53
|
end
|
54
54
|
end
|
55
55
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
end
|
56
|
+
def related_orgs(arg=[])
|
57
|
+
if arg != []
|
58
|
+
@related_orgs = arg
|
59
|
+
else
|
60
|
+
@related_orgs
|
61
|
+
end
|
62
|
+
end
|
64
63
|
|
65
64
|
def created_at(arg=nil)
|
66
65
|
if arg != nil
|
@@ -99,7 +98,7 @@ module Megam
|
|
99
98
|
|
100
99
|
# Create a Megam::Organization from JSON (used by the backgroud job workers)
|
101
100
|
def self.json_create(o)
|
102
|
-
org = new
|
101
|
+
org = new({})
|
103
102
|
org.id(o["id"]) if o.has_key?("id")
|
104
103
|
org.name(o["name"]) if o.has_key?("name")
|
105
104
|
org.accounts_id(o["accounts_id"]) if o.has_key?("accounts_id")
|
@@ -109,7 +108,7 @@ module Megam
|
|
109
108
|
end
|
110
109
|
|
111
110
|
def self.from_hash(o)
|
112
|
-
org = self.new(o
|
111
|
+
org = self.new(o)
|
113
112
|
org.from_hash(o)
|
114
113
|
org
|
115
114
|
end
|
@@ -135,15 +134,14 @@ module Megam
|
|
135
134
|
end
|
136
135
|
|
137
136
|
def self.update(o)
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
# Create the node via the REST API
|
143
|
-
def update
|
144
|
-
megam_rest.update_organization(to_hash)
|
145
|
-
end
|
137
|
+
org = from_hash(o)
|
138
|
+
org.update
|
139
|
+
end
|
146
140
|
|
141
|
+
# Create the node via the REST API
|
142
|
+
def update
|
143
|
+
megam_rest.update_organization(to_hash)
|
144
|
+
end
|
147
145
|
|
148
146
|
def self.list(o)
|
149
147
|
org = from_hash(o)
|
@@ -22,16 +22,19 @@ module Megam
|
|
22
22
|
attr_reader :email
|
23
23
|
attr_reader :api_key
|
24
24
|
attr_reader :host
|
25
|
-
|
25
|
+
attr_reader :password
|
26
|
+
attr_reader :org_id
|
26
27
|
|
27
28
|
# Create a Megam REST object. The supplied email and api_key is used as the base for
|
28
29
|
# all subsequent requests. For example, when initialized with an email, api_key url
|
29
30
|
# https://api.megam.io, a call to +get+ with 'accounts' will make an
|
30
31
|
# HTTP GET request to https://api.megam.io/accounts using the email, api_key
|
31
|
-
def initialize(
|
32
|
-
@email = email
|
33
|
-
@api_key = api_key
|
34
|
-
@host = host
|
32
|
+
def initialize(o)
|
33
|
+
@email = o[:email]
|
34
|
+
@api_key = o[:api_key] || nil
|
35
|
+
@host = o[:host]
|
36
|
+
@password = o[:password] || nil
|
37
|
+
@org_id = o[:org_id]
|
35
38
|
end
|
36
39
|
|
37
40
|
# Build a megam api client
|
@@ -39,7 +42,7 @@ module Megam
|
|
39
42
|
# === Parameters
|
40
43
|
# api:: The Megam::API client
|
41
44
|
def megam_rest
|
42
|
-
options = { :email =>email || Megam::Config[:email], :api_key => api_key || Megam::Config[:api_key], :host => host || Megam::Config[:host]}
|
45
|
+
options = { :email => email || Megam::Config[:email], :api_key => api_key || Megam::Config[:api_key], :org_id => org_id || Megam::Config[:org_id], :password => password || Megam::Config[:password], :host => host || Megam::Config[:host]}
|
43
46
|
Megam::API.new(options)
|
44
47
|
end
|
45
48
|
|
data/lib/megam/core/sshkey.rb
CHANGED
@@ -15,14 +15,15 @@
|
|
15
15
|
#
|
16
16
|
module Megam
|
17
17
|
class SshKey < Megam::ServerAPI
|
18
|
-
def initialize(
|
18
|
+
def initialize(o)
|
19
19
|
@id = nil
|
20
20
|
@name = nil
|
21
|
-
@
|
22
|
-
@
|
21
|
+
@org_id = nil
|
22
|
+
@privatekey=nil
|
23
|
+
@publickey=nil
|
23
24
|
@created_at = nil
|
24
25
|
@some_msg = {}
|
25
|
-
super(
|
26
|
+
super(o)
|
26
27
|
end
|
27
28
|
|
28
29
|
def sshkey
|
@@ -45,22 +46,31 @@ module Megam
|
|
45
46
|
end
|
46
47
|
end
|
47
48
|
|
48
|
-
def
|
49
|
+
def org_id(arg=nil)
|
49
50
|
if arg != nil
|
50
|
-
@
|
51
|
+
@org_id= arg
|
51
52
|
else
|
52
|
-
@
|
53
|
+
@org_id
|
53
54
|
end
|
54
55
|
end
|
55
56
|
|
56
|
-
def
|
57
|
+
def privatekey(arg=nil)
|
57
58
|
if arg != nil
|
58
|
-
@
|
59
|
+
@privatekey = arg
|
59
60
|
else
|
60
|
-
@
|
61
|
+
@privatekey
|
61
62
|
end
|
62
63
|
end
|
63
64
|
|
65
|
+
def publickey(arg=nil)
|
66
|
+
if arg != nil
|
67
|
+
@publickey = arg
|
68
|
+
else
|
69
|
+
@publikey
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
|
64
74
|
def created_at(arg=nil)
|
65
75
|
if arg != nil
|
66
76
|
@created_at = arg
|
@@ -87,8 +97,9 @@ module Megam
|
|
87
97
|
index_hash["json_claz"] = self.class.name
|
88
98
|
index_hash["id"] = id
|
89
99
|
index_hash["name"] = name
|
90
|
-
index_hash["
|
91
|
-
index_hash["
|
100
|
+
index_hash["org_id"] = org_id
|
101
|
+
index_hash["privatekey"] = privatekey
|
102
|
+
index_hash["publickey"] = publickey
|
92
103
|
index_hash["created_at"] = created_at
|
93
104
|
index_hash
|
94
105
|
end
|
@@ -103,8 +114,9 @@ module Megam
|
|
103
114
|
result = {
|
104
115
|
"id" => id,
|
105
116
|
"name" => name,
|
106
|
-
"
|
107
|
-
"
|
117
|
+
"org_id" => org_id,
|
118
|
+
"privatekey" => privatekey,
|
119
|
+
"publickey" => publickey,
|
108
120
|
"created_at" => created_at
|
109
121
|
}
|
110
122
|
result
|
@@ -112,10 +124,11 @@ module Megam
|
|
112
124
|
|
113
125
|
#
|
114
126
|
def self.json_create(o)
|
115
|
-
sshKey = new
|
127
|
+
sshKey = new({})
|
116
128
|
sshKey.id(o["id"]) if o.has_key?("id")
|
117
129
|
sshKey.name(o["name"]) if o.has_key?("name")
|
118
|
-
sshKey.
|
130
|
+
sshKey.privatekey(o["privatekey"]) if o.has_key?("privatekey")
|
131
|
+
sshKey.publickey(o["publickey"]) if o.has_key?("publickey")
|
119
132
|
sshKey.created_at(o["created_at"]) if o.has_key?("created_at")
|
120
133
|
#success or error
|
121
134
|
sshKey.some_msg[:code] = o["code"] if o.has_key?("code")
|
@@ -125,8 +138,8 @@ module Megam
|
|
125
138
|
sshKey
|
126
139
|
end
|
127
140
|
|
128
|
-
def self.from_hash(o
|
129
|
-
sshKey = self.new(
|
141
|
+
def self.from_hash(o)
|
142
|
+
sshKey = self.new(o)
|
130
143
|
sshKey.from_hash(o)
|
131
144
|
sshKey
|
132
145
|
end
|
@@ -134,13 +147,15 @@ module Megam
|
|
134
147
|
def from_hash(o)
|
135
148
|
@id = o[:id] if o.has_key?(:id)
|
136
149
|
@name = o[:name] if o.has_key?(:name)
|
137
|
-
@
|
150
|
+
@org_id = o[:org_id] if o.has_key?(:org_id)
|
151
|
+
@privatekey = o[:privatekey] if o.has_key?(:privatekey)
|
152
|
+
@publickey = o[:publickey] if o.has_key?(:publickey)
|
138
153
|
@created_at = o[:created_at] if o.has_key?(:created_at)
|
139
154
|
self
|
140
155
|
end
|
141
156
|
|
142
157
|
def self.create(params)
|
143
|
-
acct = from_hash(params
|
158
|
+
acct = from_hash(params)
|
144
159
|
acct.create
|
145
160
|
end
|
146
161
|
|
@@ -153,14 +168,14 @@ module Megam
|
|
153
168
|
# returns a sshkeysCollection
|
154
169
|
# don't return self. check if the Megam::SshKeyCollection is returned.
|
155
170
|
def self.list(params)
|
156
|
-
sshKey = self.new(params
|
171
|
+
sshKey = self.new(params)
|
157
172
|
sshKey.megam_rest.get_sshkeys
|
158
173
|
end
|
159
174
|
|
160
175
|
# Show a particular sshKey by name,
|
161
176
|
# Megam::SshKey
|
162
177
|
def self.show(params)
|
163
|
-
pre = self.new(params
|
178
|
+
pre = self.new(params)
|
164
179
|
pre.megam_rest.get_sshkey(params["name"])
|
165
180
|
end
|
166
181
|
|