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,146 @@
1
+ module Megam
2
+ class Credits < Megam::RestAdapter
3
+ def initialize(o)
4
+ @id = nil
5
+ @account_id = nil
6
+ @credit = nil
7
+ @created_at = nil
8
+ @some_msg = {}
9
+ super(o)
10
+ end
11
+
12
+ def credit
13
+ self
14
+ end
15
+
16
+ def id(arg=nil)
17
+ if arg != nil
18
+ @id = arg
19
+ else
20
+ @id
21
+ end
22
+ end
23
+
24
+ def account_id(arg=nil)
25
+ if arg != nil
26
+ @account_id= arg
27
+ else
28
+ @account_id
29
+ end
30
+ end
31
+
32
+
33
+ def credit(arg=nil)
34
+ if arg != nil
35
+ @credit = arg
36
+ else
37
+ @credit
38
+ end
39
+ end
40
+
41
+ def created_at(arg=nil)
42
+ if arg != nil
43
+ @created_at = arg
44
+ else
45
+ @created_at
46
+ end
47
+ end
48
+
49
+ def some_msg(arg=nil)
50
+ if arg != nil
51
+ @some_msg = arg
52
+ else
53
+ @some_msg
54
+ end
55
+ end
56
+
57
+ def error?
58
+ crocked = true if (some_msg.has_key?(:msg_type) && some_msg[:msg_type] == "error")
59
+ end
60
+
61
+ # Transform the ruby obj -> to a Hash
62
+ def to_hash
63
+ index_hash = Hash.new
64
+ index_hash["json_claz"] = self.class.name
65
+ index_hash["id"] = id
66
+ index_hash["account_id"] = account_id
67
+ index_hash["credit"] = credit
68
+ index_hash["created_at"] = created_at
69
+ index_hash
70
+ end
71
+
72
+ # Serialize this object as a hash: called from JsonCompat.
73
+ # Verify if this called from JsonCompat during testing.
74
+ def to_json(*a)
75
+ for_json.to_json(*a)
76
+ end
77
+
78
+ def for_json
79
+ result = {
80
+ "id" => id,
81
+ "account_id" => account_id,
82
+ "credit" => credit,
83
+ "created_at" => created_at,
84
+ }
85
+ result
86
+ end
87
+
88
+ def self.json_create(o)
89
+ cr = new({})
90
+ cr.id(o["id"]) if o.has_key?("id")
91
+ cr.account_id(o["account_id"]) if o.has_key?("account_id")
92
+ cr.credit(o["credit"]) if o.has_key?("credit")
93
+ cr.created_at(o["created_at"]) if o.has_key?("created_at")
94
+ #success or error
95
+ cr.some_msg[:code] = o["code"] if o.has_key?("code")
96
+ cr.some_msg[:msg_type] = o["msg_type"] if o.has_key?("msg_type")
97
+ cr.some_msg[:msg]= o["msg"] if o.has_key?("msg")
98
+ cr.some_msg[:links] = o["links"] if o.has_key?("links")
99
+ cr
100
+ end
101
+
102
+ def self.from_hash(o)
103
+ cr = self.new(o)
104
+ cr.from_hash(o)
105
+ cr
106
+ end
107
+
108
+ def from_hash(o)
109
+ @id = o[:id] if o.has_key?(:id)
110
+ @account_id = o[:account_id] if o.has_key?(:account_id)
111
+ @credit = o[:credit] if o.has_key?(:credit)
112
+ @created_at = o[:created_at] if o.has_key?(:created_at)
113
+ self
114
+ end
115
+
116
+ def self.create(params)
117
+ acct = from_hash(params)
118
+ acct.create
119
+ end
120
+
121
+ # Create the predef via the REST API
122
+ def create
123
+ megam_rest.post_credits(to_hash)
124
+ end
125
+
126
+ # Load all credit -
127
+ # returns a creditCollection
128
+ # don't return self. check if the Megam::CreditCollection is returned.
129
+ def self.list(params)
130
+ cr = self.new(params)
131
+ cr.megam_rest.list_credits
132
+ end
133
+
134
+ # Show a particular balance by name,
135
+ # Megam::Balance
136
+ def self.show(params)
137
+ pre = self.new(params)
138
+ pre.megam_rest.get_credits(params["account_id"])
139
+ end
140
+
141
+ def to_s
142
+ Megam::Stuff.styled_hash(to_hash)
143
+ end
144
+
145
+ end
146
+ end
@@ -0,0 +1,121 @@
1
+ module Megam
2
+ class CreditsCollection
3
+ include Enumerable
4
+
5
+ attr_reader :iterator
6
+ def initialize
7
+ @credits = Array.new
8
+ @credits_by_name = Hash.new
9
+ @insert_after_idx = nil
10
+ end
11
+
12
+ def all_credits
13
+ @credits
14
+ end
15
+
16
+ def [](index)
17
+ @credits[index]
18
+ end
19
+
20
+ def []=(index, arg)
21
+ is_megam_credits(arg)
22
+ @credits[index] = arg
23
+ @credits_by_name[arg.id] = index
24
+ end
25
+
26
+ def <<(*args)
27
+ args.flatten.each do |a|
28
+ is_megam_credits(a)
29
+ @credits << a
30
+ @credits_by_name[a.id] =@credits.length - 1
31
+ end
32
+ self
33
+ end
34
+
35
+ # 'push' is an alias method to <<
36
+ alias_method :push, :<<
37
+
38
+ def insert(credits)
39
+ is_megam_credits(credits)
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
+ # credit
44
+ @credits.insert(@insert_after_idx + 1, credits)
45
+ # update id -> location mappings and register new credit
46
+ @credits_by_name.each_key do |key|
47
+ @credits_by_name[key] += 1 if@credits_by_name[key] > @insert_after_idx
48
+ end
49
+ @credits_by_name[credits.account_id] = @insert_after_idx + 1
50
+ @insert_after_idx += 1
51
+ else
52
+ @credits << credits
53
+ @credits_by_name[credits.account_id] =@credits.length - 1
54
+ end
55
+ end
56
+
57
+ def each
58
+ @credits.each do |credits|
59
+ yield credits
60
+ end
61
+ end
62
+
63
+ def each_index
64
+ @credits.each_index do |i|
65
+ yield i
66
+ end
67
+ end
68
+
69
+ def empty?
70
+ @credits.empty?
71
+ end
72
+
73
+ def lookup(credits)
74
+ lookup_by = nil
75
+ if credits.kind_of?(Megam::Credits)
76
+ lookup_by = credits.account_id
77
+ elsif credits.kind_of?(String)
78
+ lookup_by = credits
79
+ else
80
+ raise ArgumentError, "Must pass a Megam::Credits or String to lookup"
81
+ end
82
+ res =@credits_by_name[lookup_by]
83
+ unless res
84
+ raise ArgumentError, "Cannot find a credits matching #{lookup_by} (did you define it first?)"
85
+ end
86
+ @credits[res]
87
+ end
88
+
89
+ def to_s
90
+ @credits.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 = self.new()
103
+ o["results"].each do |credits_list|
104
+ credits_array = credits_list.kind_of?(Array) ? credits_list : [ credits_list ]
105
+ credits_array.each do |credits|
106
+ collection.insert(credits)
107
+ end
108
+ end
109
+ collection
110
+ end
111
+
112
+ private
113
+
114
+ def is_megam_credits(arg)
115
+ unless arg.kind_of?(Megam::Credits)
116
+ raise ArgumentError, "Members must be Megam::credits's"
117
+ end
118
+ true
119
+ end
120
+ end
121
+ end
@@ -0,0 +1,199 @@
1
+ module Megam
2
+ class Disks < Megam::RestAdapter
3
+ def initialize(o)
4
+ @id = nil
5
+ @account_id = nil
6
+ @asm_id = nil
7
+ @org_id = nil
8
+ @disk_id= nil
9
+ @size= nil
10
+ @status= nil
11
+ @created_at = nil
12
+ @some_msg = {}
13
+ super(o)
14
+ end
15
+
16
+ def disks
17
+ self
18
+ end
19
+ def id(arg=nil)
20
+ if arg != nil
21
+ @id = arg
22
+ else
23
+ @id
24
+ end
25
+ end
26
+
27
+ def account_id(arg=nil)
28
+ if arg != nil
29
+ @account_id = arg
30
+ else
31
+ @account_id
32
+ end
33
+ end
34
+
35
+ def asm_id(arg=nil)
36
+ if arg != nil
37
+ @asm_id = arg
38
+ else
39
+ @asm_id
40
+ end
41
+ end
42
+
43
+ def org_id(arg=nil)
44
+ if arg != nil
45
+ @org_id = arg
46
+ else
47
+ @org_id
48
+ end
49
+ end
50
+
51
+ def disk_id(arg=nil)
52
+ if arg != nil
53
+ @disk_id = arg
54
+ else
55
+ @disk_id
56
+ end
57
+ end
58
+
59
+ def status(arg=nil)
60
+ if arg != nil
61
+ @status = arg
62
+ else
63
+ @status
64
+ end
65
+ end
66
+
67
+ def size(arg=nil)
68
+ if arg != nil
69
+ @size = arg
70
+ else
71
+ @size
72
+ end
73
+ end
74
+
75
+ def created_at(arg=nil)
76
+ if arg != nil
77
+ @created_at = arg
78
+ else
79
+ @created_at
80
+ end
81
+ end
82
+
83
+ def error?
84
+ crocked = true if (some_msg.has_key?(:msg_type) && some_msg[:msg_type] == "error")
85
+ end
86
+
87
+
88
+ def some_msg(arg=nil)
89
+ if arg != nil
90
+ @some_msg = arg
91
+ else
92
+ @some_msg
93
+ end
94
+ end
95
+
96
+
97
+ # Transform the ruby obj -> to a Hash
98
+ def to_hash
99
+ index_hash = Hash.new
100
+ index_hash["json_claz"] = self.class.name
101
+ index_hash["id"] = id
102
+ index_hash["account_id"] = account_id
103
+ index_hash["asm_id"] = asm_id
104
+ index_hash["org_id"] = org_id
105
+ index_hash["disk_id"] = disk_id
106
+ index_hash["size"] = size
107
+ index_hash["status"] = status
108
+ index_hash["created_at"] = created_at
109
+ index_hash["some_msg"] = some_msg
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 for_json
120
+ result = {
121
+ "id" => id,
122
+ "account_id" => account_id,
123
+ "asm_id" => asm_id,
124
+ "org_id" => org_id,
125
+ "disk_id" => disk_id,
126
+ "size" => size,
127
+ "status" => status,
128
+ "created_at" => created_at
129
+ }
130
+ result
131
+ end
132
+
133
+ def self.json_create(o)
134
+ sps = new({})
135
+ sps.id(o["id"]) if o.has_key?("id")
136
+ sps.account_id(o["account_id"]) if o.has_key?("account_id")
137
+ sps.asm_id(o["asm_id"]) if o.has_key?("asm_id")
138
+ sps.org_id(o["org_id"]) if o.has_key?("org_id") #this will be an array? can hash store array?
139
+ sps.disk_id(o["disk_id"]) if o.has_key?("disk_id")
140
+ sps.size(o["size"]) if o.has_key?("size")
141
+ sps.status(o["status"]) if o.has_key?("status")
142
+ sps.created_at(o["created_at"]) if o.has_key?("created_at")
143
+ sps.some_msg[:code] = o["code"] if o.has_key?("code")
144
+ sps.some_msg[:msg_type] = o["msg_type"] if o.has_key?("msg_type")
145
+ sps.some_msg[:msg]= o["msg"] if o.has_key?("msg")
146
+ sps.some_msg[:links] = o["links"] if o.has_key?("links")
147
+ sps
148
+ end
149
+
150
+ def self.from_hash(o)
151
+ dks = self.new(o)
152
+ dks.from_hash(o)
153
+ dks
154
+ end
155
+
156
+ def from_hash(o)
157
+ @id = o[:id] if o.has_key?(:id)
158
+ @account_id = o[:account_id] if o.has_key?(:account_id)
159
+ @asm_id = o[:asm_id] if o.has_key?(:asm_id)
160
+ @org_id = o[:org_id] if o.has_key?(:org_id)
161
+ @disk_id = o[:disk_id] if o.has_key?(:disk_id)
162
+ @size = o[:size] if o.has_key?(:size)
163
+ @status = o[:status] if o.has_key?(:status)
164
+ @created_at = o[:created_at] if o.has_key?(:created_at)
165
+ self
166
+ end
167
+
168
+ def self.create(params)
169
+ dks = from_hash(params)
170
+ dks.create
171
+ end
172
+
173
+ # Create the node via the REST API
174
+ def create
175
+ megam_rest.post_disks(to_hash)
176
+ end
177
+
178
+ # Load a account by email_p
179
+ def self.show(o)
180
+ dks = self.new(o)
181
+ dks.megam_rest.get_disks(o[:id])
182
+ end
183
+
184
+ def self.list(params)
185
+ dks = self.new(params)
186
+ dks.megam_rest.list_disks
187
+ end
188
+
189
+ def self.remove(o)
190
+ dks = self.new(o)
191
+ dks.megam_rest.remove_disks(o[:id], o[:disk_id])
192
+ end
193
+
194
+ def to_s
195
+ Megam::Stuff.styled_hash(to_hash)
196
+ end
197
+
198
+ end
199
+ end