megam_api 0.66 → 0.67

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: e5b945f249259961bea808c3a02e6de6ea9ec9e8
4
- data.tar.gz: b64b704bb8ad8840111bad0360d215a6dc0294e3
3
+ metadata.gz: 4e00bb71803aef7d8bdb70e6bd34bb3905063198
4
+ data.tar.gz: 8c3ffaf027aef6644cda60ba0b3c5d5d80a78912
5
5
  SHA512:
6
- metadata.gz: 0c61ab1d6fbeed1840991d11465a87af95ca4c3cf4819320d2668e6c633a4a57b1dac909c33c3cb2d6a916fca4823e823f97257d048a9dba73f8d1f754f68304
7
- data.tar.gz: 42a1759ed0a1f4d6829ce445123df551f6dc733cdd35612c229fd13d827b7f03dc1fb2987dbef6e16dab3d72df17de8613310674326f8f586ef05f3c5cd19e0b
6
+ metadata.gz: 30100983eb3bb08b74fb597e38930d0fbd065cdcf892094ca21e80b5c2d13daf69c9c79c49df9634cbceee8663e7942d4b2ada17330ca8bbf3fb887bf159c7d9
7
+ data.tar.gz: acca1e4576c358f672f1275064329a0500203e2f7792391db72cea1203d78c789609ba8fbbbd271cb371dfc4f0a0b693b81b0f94966ef14f657b70f0f7f4d6e1
data/lib/megam/api.rb CHANGED
@@ -14,8 +14,6 @@ require 'megam/api/errors'
14
14
  require 'megam/api/version'
15
15
  require 'megam/api/accounts'
16
16
  require 'megam/api/requests'
17
- require 'megam/api/cat_requests'
18
- require 'megam/api/predef_clouds'
19
17
  require 'megam/api/cloud_tool_settings'
20
18
  require 'megam/api/sshkeys'
21
19
  require 'megam/api/marketplaces'
@@ -47,8 +45,6 @@ require 'megam/core/error'
47
45
  require 'megam/core/account'
48
46
  require 'megam/core/request'
49
47
  require 'megam/core/request_collection'
50
- require 'megam/core/predefcloud'
51
- require 'megam/core/predefcloud_collection'
52
48
  require 'megam/core/cloudtoolsetting'
53
49
  require 'megam/core/cloudtoolsetting_collection'
54
50
  require 'megam/core/sshkey'
@@ -69,8 +65,6 @@ require 'megam/core/assembly'
69
65
  require 'megam/core/assembly_collection'
70
66
  require 'megam/core/components'
71
67
  require 'megam/core/components_collection'
72
- require 'megam/core/cat_requests'
73
- require 'megam/core/cat_requests_collection'
74
68
  require 'megam/core/event'
75
69
 
76
70
  require 'megam/core/availableunits_collection'
@@ -129,7 +123,7 @@ module Megam
129
123
  # 2. The options as passed via the instantiation of API will override global options. The ones that are passed are :email and :api_key and will
130
124
  # be merged into a class variable @options
131
125
  # 3. Upon merge of the options, the api_key, email as available in the @options is deleted.
132
- def initialize(options = {})
126
+ def initialize(options = {})
133
127
  @options = OPTIONS.merge(options)
134
128
  puts @options
135
129
  @api_key = @options.delete(:api_key) || ENV['MEGAM_API_KEY']
@@ -1,5 +1,5 @@
1
1
  module Megam
2
2
  class API
3
- VERSION = "0.66"
3
+ VERSION = "0.67"
4
4
  end
5
5
  end
@@ -36,8 +36,6 @@ module Megam
36
36
  MEGAM_BILLINGHISTORIESCOLLECTION = "Megam::BillinghistoriesCollection".freeze
37
37
  MEGAM_BILLINGS = "Megam::Billings".freeze
38
38
  MEGAM_BILLINGSCOLLECTION = "Megam::BillingsCollection".freeze
39
- MEGAM_CATREQUESTS = "Megam::CatRequests".freeze
40
- MEGAM_CATREQUESTSCOLLECTION = "Megam::CatRequestsCollection".freeze
41
39
  MEGAM_CLOUDTOOLSETTING = "Megam::CloudToolSetting".freeze
42
40
  MEGAM_CLOUDTOOLSETTINGCOLLECTION = "Megam::CloudToolSettingCollection".freeze
43
41
  MEGAM_COMPONENTS = "Megam::Components".freeze
@@ -57,8 +55,6 @@ module Megam
57
55
  MEGAM_MARKETPLACEADDONCOLLECTION = "Megam::MarketPlaceAddonsCollection".freeze
58
56
  MEGAM_ORGANIZATION = "Megam::Organizations".freeze
59
57
  MEGAM_ORGANIZATIONSCOLLECTION = "Megam::OrganizationsCollection".freeze
60
- MEGAM_PREDEFCLOUD = "Megam::PredefCloud".freeze
61
- MEGAM_PREDEFCLOUDCOLLECTION = "Megam::PredefCloudCollection".freeze
62
58
  MEGAM_REQUEST = "Megam::Request".freeze
63
59
  MEGAM_REQUESTCOLLECTION = "Megam::RequestCollection".freeze
64
60
  MEGAM_SSHKEY = "Megam::SshKey".freeze
@@ -166,10 +162,6 @@ module Megam
166
162
  Megam::Request
167
163
  when MEGAM_REQUESTCOLLECTION
168
164
  Megam::RequestCollection
169
- when MEGAM_PREDEFCLOUD
170
- Megam::PredefCloud
171
- when MEGAM_PREDEFCLOUDCOLLECTION
172
- Megam::PredefCloudCollection
173
165
  when MEGAM_SSHKEY
174
166
  Megam::SshKey
175
167
  when MEGAM_SSHKEYCOLLECTION
@@ -192,10 +184,6 @@ module Megam
192
184
  Megam::CSARCollection
193
185
  when MEGAM_DOMAIN
194
186
  Megam::Domains
195
- when MEGAM_CATREQUESTS
196
- Megam::CatRequests
197
- when MEGAM_CATREQUESTSCOLLECTION
198
- Megam::CatRequestsCollection
199
187
  when MEGAM_EVENT
200
188
  Megam::Event
201
189
  when MEGAM_AVAILABLEUNITS
@@ -21,6 +21,8 @@ module Megam
21
21
  @name = nil
22
22
  @cattype = nil
23
23
  @command =nil
24
+ @action = nil
25
+ @category = nil
24
26
  @some_msg = {}
25
27
  @created_at = nil
26
28
  super(email, api_key, host)
@@ -30,7 +32,7 @@ module Megam
30
32
  self
31
33
  end
32
34
 
33
-
35
+
34
36
  def id(arg=nil)
35
37
  if arg != nil
36
38
  @id = arg
@@ -61,6 +63,25 @@ module Megam
61
63
  @cattype
62
64
  end
63
65
  end
66
+
67
+ def action(arg=nil)
68
+ if arg != nil
69
+ @action = arg
70
+ else
71
+ @action
72
+ end
73
+ end
74
+
75
+
76
+ def category(arg=nil)
77
+ if arg != nil
78
+ @category = arg
79
+ else
80
+ @category
81
+ end
82
+ end
83
+
84
+
64
85
  def created_at(arg=nil)
65
86
  if arg != nil
66
87
  @created_at = arg
@@ -97,6 +118,8 @@ module Megam
97
118
  index_hash["cat_id"] = cat_id
98
119
  index_hash["name"] = name
99
120
  index_hash["cattype"] = cattype
121
+ index_hash["action"] = action
122
+ index_hash["category"] = category
100
123
  index_hash["command"] = command
101
124
  index_hash["created_at"] = created_at
102
125
  index_hash
@@ -114,6 +137,8 @@ module Megam
114
137
  "cat_id" => cat_id,
115
138
  "name" => name,
116
139
  "cattype" => cattype,
140
+ "action" => action,
141
+ "category" => category,
117
142
  "command" => command,
118
143
  "created_at" => created_at
119
144
  }
@@ -127,6 +152,8 @@ module Megam
127
152
  node.cat_id(o["cat_id"]) if o.has_key?("cat_id")
128
153
  node.name(o["name"]) if o.has_key?("name")
129
154
  node.cattype(o["cattype"]) if o.has_key?("cattype")
155
+ node.action(o["action"]) if o.has_key?("action")
156
+ node.category(o["category"]) if o.has_key?("category")
130
157
  node.command(o["command"]) if o.has_key?("command")
131
158
  node.created_at(o["created_at"]) if o.has_key?("created_at")
132
159
  #success or error
@@ -148,6 +175,8 @@ module Megam
148
175
  @cat_id = o[:cat_id] if o.has_key?(:cat_id)
149
176
  @name = o[:name] if o.has_key?(:name)
150
177
  @cattype = o[:cattype] if o.has_key?(:cattype)
178
+ @action = o[:action] if o.has_key?(:action)
179
+ @category = o[:category] if o.has_key?(:category)
151
180
  @command = o[:command] if o.has_key?(:command)
152
181
  @created_at = o[:created_at] if o.has_key?(:created_at)
153
182
  self
@@ -166,7 +195,7 @@ module Megam
166
195
  megam_rest.post_request(to_hash)
167
196
  end
168
197
 
169
-
198
+
170
199
  def self.show(params)
171
200
  prede = self.new(params["email"] || params[:email], params["api_key"] || params[:api_key], params["host"] || params[:host])
172
201
  prede.megam_rest.get_requests
@@ -1,7 +1,7 @@
1
1
  require File.expand_path("#{File.dirname(__FILE__)}/test_helper")
2
2
 
3
3
  class TestApps < MiniTest::Unit::TestCase
4
- #=begin
4
+ =begin
5
5
  def test_get_requests
6
6
  response = megams.get_requests
7
7
  assert_equal(200, response.status)
@@ -66,19 +66,30 @@ class TestApps < MiniTest::Unit::TestCase
66
66
  "appreq" => {},
67
67
  "boltreq" => {}
68
68
  }
69
+ =end
70
+
71
+ @@tmp_hash = {
72
+
73
+ "cat_id" => "ASM",
74
+ "cattype" => "app",
75
+ "name" => "yeshapp",
76
+ "action" => "delete",
77
+ "category" => "normal" #normal(create, delete), state, control, policy
78
+ }
79
+
69
80
 
70
81
  def test_request_node_delete
71
82
 
72
83
  response = megams.post_request(@@tmp_hash)
73
84
  assert_equal(201, response.status)
74
85
  end
75
-
86
+ =begin
76
87
  def test_request_node_stop
77
88
  @@tmp_hash["req_type"] = "stop"
78
89
  @@tmp_hash["command"]["cloudtool"]["chef"]["plugin"] = "ec2 server stop"
79
90
  response = megams.post_request(@@tmp_hash)
80
91
  assert_equal(201, response.status)
81
92
  end
82
- #=end
93
+ =end
83
94
 
84
95
  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.66'
4
+ version: '0.67'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rajthilak, Kishorekumar Neelamegam, Thomas Alrin, Yeshwanth Kumar, Subash Sethurajan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-09-02 00:00:00.000000000 Z
11
+ date: 2015-09-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: excon
@@ -137,7 +137,6 @@ files:
137
137
  - lib/megam/api/balances.rb
138
138
  - lib/megam/api/billinghistories.rb
139
139
  - lib/megam/api/billings.rb
140
- - lib/megam/api/cat_requests.rb
141
140
  - lib/megam/api/cloud_tool_settings.rb
142
141
  - lib/megam/api/components.rb
143
142
  - lib/megam/api/credithistories.rb
@@ -150,7 +149,6 @@ files:
150
149
  - lib/megam/api/marketplace_addons.rb
151
150
  - lib/megam/api/marketplaces.rb
152
151
  - lib/megam/api/organizations.rb
153
- - lib/megam/api/predef_clouds.rb
154
152
  - lib/megam/api/promos.rb
155
153
  - lib/megam/api/requests.rb
156
154
  - lib/megam/api/sshkeys.rb
@@ -170,8 +168,6 @@ files:
170
168
  - lib/megam/core/billinghistories_collection.rb
171
169
  - lib/megam/core/billings.rb
172
170
  - lib/megam/core/billings_collection.rb
173
- - lib/megam/core/cat_requests.rb
174
- - lib/megam/core/cat_requests_collection.rb
175
171
  - lib/megam/core/cloudtoolsetting.rb
176
172
  - lib/megam/core/cloudtoolsetting_collection.rb
177
173
  - lib/megam/core/components.rb
@@ -196,8 +192,6 @@ files:
196
192
  - lib/megam/core/monologger.rb
197
193
  - lib/megam/core/organizations.rb
198
194
  - lib/megam/core/organizations_collection.rb
199
- - lib/megam/core/predefcloud.rb
200
- - lib/megam/core/predefcloud_collection.rb
201
195
  - lib/megam/core/promos.rb
202
196
  - lib/megam/core/request.rb
203
197
  - lib/megam/core/request_collection.rb
@@ -1,16 +0,0 @@
1
- module Megam
2
- class API
3
-
4
- def post_catrequest(new_req)
5
- @options = {:path => '/catrequests/content',
6
- :body => Megam::JSONCompat.to_json(new_req)}.merge(@options)
7
-
8
- request(
9
- :expects => 201,
10
- :method => :post,
11
- :body => @options[:body]
12
- )
13
- end
14
-
15
- end
16
- end
@@ -1,45 +0,0 @@
1
- module Megam
2
- class API
3
- def get_predefclouds
4
- @options = {:path => '/predefclouds',:body => ""}.merge(@options)
5
-
6
- request(
7
- :expects => 200,
8
- :method => :get,
9
- :body => @options[:body]
10
- )
11
- end
12
-
13
- def get_predefcloud(predefcloud_name)
14
- @options = {:path => "/predefclouds/#{predefcloud_name}",:body => ""}.merge(@options)
15
-
16
- request(
17
- :expects => 200,
18
- :method => :get,
19
- :body => @options[:body]
20
- )
21
- end
22
-
23
- def delete_predefcloud(predefcloud_name)
24
- @options = {:path => "/predefclouds/#{predefcloud_name}",:body => ""}.merge(@options)
25
-
26
- request(
27
- :expects => 200,
28
- :method => :delete,
29
- :body => @options[:body]
30
- )
31
- end
32
-
33
- def post_predefcloud(new_predefcloud)
34
- @options = {:path => '/predefclouds/content',
35
- :body => Megam::JSONCompat.to_json(new_predefcloud)}.merge(@options)
36
-
37
- request(
38
- :expects => 201,
39
- :method => :post,
40
- :body => @options[:body]
41
- )
42
- end
43
-
44
- end
45
- end
@@ -1,193 +0,0 @@
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 CatRequests < Megam::ServerAPI
18
-
19
- def initialize(email=nil, api_key=nil, host=nil)
20
- @id = nil
21
- @cat_id = nil
22
- @cattype = nil
23
- @name = nil
24
- @action = nil
25
- @category = nil
26
- @some_msg = {}
27
- @created_at = nil
28
- super(email, api_key, host)
29
- end
30
-
31
- def cat_request
32
- self
33
- end
34
-
35
-
36
- def id(arg=nil)
37
- if arg != nil
38
- @id = arg
39
- else
40
- @id
41
- end
42
- end
43
-
44
- def cat_id(arg=nil)
45
- if arg != nil
46
- @cat_id = arg
47
- else
48
- @cat_id
49
- end
50
- end
51
-
52
-
53
- def cattype(arg=nil)
54
- if arg != nil
55
- @cattype = arg
56
- else
57
- @cattype
58
- end
59
- end
60
-
61
-
62
- def name(arg=nil)
63
- if arg != nil
64
- @name = arg
65
- else
66
- @name
67
- end
68
- end
69
-
70
- def action(arg=nil)
71
- if arg != nil
72
- @action = arg
73
- else
74
- @action
75
- end
76
- end
77
-
78
- def category(arg=nil)
79
- if arg != nil
80
- @category = arg
81
- else
82
- @category
83
- end
84
- end
85
-
86
-
87
-
88
- def created_at(arg=nil)
89
- if arg != nil
90
- @created_at = arg
91
- else
92
- @created_at
93
- end
94
- end
95
-
96
- def some_msg(arg=nil)
97
- if arg != nil
98
- @some_msg = arg
99
- else
100
- @some_msg
101
- end
102
- end
103
-
104
- def error?
105
- crocked = true if (some_msg.has_key?(:msg_type) && some_msg[:msg_type] == "error")
106
- end
107
-
108
- # Transform the ruby obj -> to a Hash
109
- def to_hash
110
- index_hash = Hash.new
111
- index_hash["json_claz"] = self.class.name
112
- index_hash["id"] = id
113
- index_hash["cat_id"] = cat_id
114
- index_hash["cattype"] = cattype
115
- index_hash["name"] = name
116
- index_hash["action"] = action
117
- index_hash["category"] = category
118
- index_hash["created_at"] = created_at
119
- index_hash
120
- end
121
-
122
- # Serialize this object as a hash: called from JsonCompat.
123
- # Verify if this called from JsonCompat during testing.
124
- def to_json(*a)
125
- for_json.to_json(*a)
126
- end
127
-
128
- def for_json
129
- result = {
130
- "id" => id,
131
- "cat_id" => cat_id,
132
- "cattype" => cattype,
133
- "name" => name,
134
- "action" => action,
135
- "category" => category,
136
- "created_at" => created_at
137
- }
138
- result
139
- end
140
-
141
- #
142
- def self.json_create(o)
143
- node = new
144
- node.id(o["id"]) if o.has_key?("id")
145
- node.cat_id(o["cat_id"]) if o.has_key?("cat_id")
146
- node.cattype(o["cattype"]) if o.has_key?("cattype")
147
- node.name(o["name"]) if o.has_key?("name")
148
- node.action(o["action"]) if o.has_key?("action")
149
- node.action(o["category"]) if o.has_key?("category")
150
- node.created_at(o["created_at"]) if o.has_key?("created_at")
151
- #success or error
152
- node.some_msg[:code] = o["code"] if o.has_key?("code")
153
- node.some_msg[:msg_type] = o["msg_type"] if o.has_key?("msg_type")
154
- node.some_msg[:msg]= o["msg"] if o.has_key?("msg")
155
- node.some_msg[:links] = o["links"] if o.has_key?("links")
156
- node
157
- end
158
-
159
- def self.from_hash(o,tmp_email=nil, tmp_api_key=nil, tmp_host=nil)
160
- node = self.new(tmp_email, tmp_api_key, tmp_host)
161
- node.from_hash(o)
162
- node
163
- end
164
-
165
- def from_hash(o)
166
- @id = o[:id] if o.has_key?(:id)
167
- @cat_id = o[:cat_id] if o.has_key?(:cat_id)
168
- @cattype = o[:cattype] if o.has_key?(:cattype)
169
- @name = o[:name] if o.has_key?(:name)
170
- @action = o[:action] if o.has_key?(:action)
171
- @category = o[:category] if o.has_key?(:category)
172
- @created_at = o[:created_at] if o.has_key?(:created_at)
173
- self
174
- end
175
-
176
-
177
- def self.create(o)
178
- acct = from_hash(o, o["email"], o["api_key"], o["host"])
179
- acct.create
180
- end
181
-
182
- # Create the node via the REST API
183
- def create
184
- megam_rest.post_catrequest(to_hash)
185
- end
186
-
187
-
188
- def to_s
189
- Megam::Stuff.styled_hash(to_hash)
190
- end
191
-
192
- end
193
- end
@@ -1,145 +0,0 @@
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 CatRequestsCollection
18
- include Enumerable
19
-
20
- attr_reader :iterator
21
- def initialize
22
- @catrequests = Array.new
23
- @catrequests_by_name = Hash.new
24
- @insert_after_idx = nil
25
- end
26
-
27
- def all_requests
28
- @catrequests
29
- end
30
-
31
- def [](index)
32
- @catrequests[index]
33
- end
34
-
35
- def []=(index, arg)
36
- is_megam_request(arg)
37
- @catrequests[index] = arg
38
- @catrequests_by_name[arg.cat_id] = index
39
- end
40
-
41
- def <<(*args)
42
- args.flatten.each do |a|
43
- is_megam_request(a)
44
- @catrequests << a
45
- @catrequests_by_name[a.cat_id] = @catrequests.length - 1
46
- end
47
- self
48
- end
49
-
50
- # 'push' is an alias method to <<
51
- alias_method :push, :<<
52
-
53
- def insert(request)
54
- is_megam_request(request)
55
- if @insert_after_idx
56
- # in the middle of executing a run, so any requests inserted now should
57
- # be placed after the most recent addition done by the currently executing
58
- # request
59
- @catrequests.insert(@insert_after_idx + 1, request)
60
- # update name -> location mappings and register new request
61
- @catrequests_by_name.each_key do |key|
62
- @catrequests_by_name[key] += 1 if @catrequests_by_name[key] > @insert_after_idx
63
- end
64
- @catrequests_by_name[request.cat_id] = @insert_after_idx + 1
65
- @insert_after_idx += 1
66
- else
67
- @catrequests << request
68
- @catrequests_by_name[request.cat_id] = @catrequests.length - 1
69
- end
70
- end
71
-
72
- def each
73
- @catrequests.each do |request|
74
- yield request
75
- end
76
- end
77
-
78
- def each_index
79
- @catrequests.each_index do |i|
80
- yield i
81
- end
82
- end
83
-
84
- def empty?
85
- @catrequests.empty?
86
- end
87
-
88
- def lookup(request)
89
- lookup_by = nil
90
- if request.kind_of?(Megam::CatRequests)
91
- lookup_by = request.cat_id
92
- elsif request.kind_of?(String)
93
- lookup_by = request
94
- else
95
- raise ArgumentError, "Must pass a Megam::CatRequests or String to lookup"
96
- end
97
- res = @catrequests_by_name[lookup_by]
98
- unless res
99
- raise ArgumentError, "Cannot find a request matching #{lookup_by} (did you define it first?)"
100
- end
101
- @catrequests[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 |request|
108
- index_hash[request.cat_id] = request.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
-
120
- def self.json_create(o)
121
- collection = self.new()
122
- o["results"].each do |requests_list|
123
- requests_array = requests_list.kind_of?(Array) ? requests_list : [ requests_list ]
124
- requests_array.each do |request|
125
- collection.insert(request)
126
- end
127
- end
128
- collection
129
- end
130
-
131
- private
132
-
133
- def is_megam_request(arg)
134
- unless arg.kind_of?(Megam::CatRequests)
135
- raise ArgumentError, "Members must be Megam::CatRequests'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
@@ -1,234 +0,0 @@
1
-
2
- # Copyright:: Copyright (c) 2012, 2014 Megam Systems
3
- # License:: Apache License, Version 2.0
4
- #
5
- # Licensed under the Apache License, Version 2.0 (the "License");
6
- # you may not use this file except in compliance with the License.
7
- # You may obtain a copy of the License at
8
- #
9
- # http://www.apache.org/licenses/LICENSE-2.0
10
- #
11
- # Unless required by applicable law or agreed to in writing, software
12
- # distributed under the License is distributed on an "AS IS" BASIS,
13
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- # See the License for the specific language governing permissions and
15
- # limitations under the License.
16
- #
17
- module Megam
18
- class PredefCloud < Megam::ServerAPI
19
- def initialize(email=nil, api_key=nil, host=nil)
20
- @id = nil
21
- @name = nil
22
- @accounts_id = nil
23
- @spec = {}
24
- @access = {}
25
- #@ideal=nil
26
- #@performance = nil
27
- @created_at = nil
28
- @some_msg = {}
29
- super(email, api_key, host)
30
- end
31
-
32
- def predef_cloud
33
- self
34
- end
35
-
36
-
37
- def id(arg=nil)
38
- if arg != nil
39
- @id = arg
40
- else
41
- @id
42
- end
43
- end
44
-
45
- def name(arg=nil)
46
- if arg != nil
47
- @name = arg
48
- else
49
- @name
50
- end
51
- end
52
-
53
- def accounts_id(arg=nil)
54
- if arg != nil
55
- @accounts_id= arg
56
- else
57
- @accounts_id
58
- end
59
- end
60
-
61
- def spec(arg=nil)
62
- if arg != nil
63
- @spec = arg
64
- else
65
- @spec
66
- end
67
- end
68
-
69
- def access(arg=nil)
70
- if arg != nil
71
- @access = arg
72
- else
73
- @access
74
- end
75
- end
76
-
77
- def ideal(arg=nil)
78
- if arg != nil
79
- @ideal= arg
80
- else
81
- @ideal
82
- end
83
- end
84
-
85
- def performance(arg=nil)
86
- if arg != nil
87
- @performance= arg
88
- else
89
- @performance
90
- end
91
- end
92
-
93
- def created_at(arg=nil)
94
- if arg != nil
95
- @created_at = arg
96
- else
97
- @created_at
98
- end
99
- end
100
-
101
- def some_msg(arg=nil)
102
- if arg != nil
103
- @some_msg = arg
104
- else
105
- @some_msg
106
- end
107
- end
108
-
109
- def error?
110
- crocked = true if (some_msg.has_key?(:msg_type) && some_msg[:msg_type] == "error")
111
- end
112
-
113
- # Transform the ruby obj -> to a Hash
114
- def to_hash
115
- index_hash = Hash.new
116
- index_hash["json_claz"] = self.class.name
117
- index_hash["id"] = id
118
- index_hash["name"] = name
119
- index_hash["accounts_id"] = accounts_id
120
- index_hash["spec"] = spec
121
- index_hash["access"] = access
122
- # index_hash["ideal"] = ideal
123
- # index_hash["performance"] = performance
124
- index_hash["created_at"] = created_at
125
- index_hash
126
- end
127
-
128
- # Serialize this object as a hash: called from JsonCompat.
129
- # Verify if this called from JsonCompat during testing.
130
- def to_json(*a)
131
- for_json.to_json(*a)
132
- end
133
-
134
- def for_json
135
- result = {
136
- "id" => id,
137
- "name" => name,
138
- "accounts_id" => accounts_id,
139
- "spec" => spec,
140
- "access" => access,
141
- # "ideal" => ideal,
142
- # "performance" => performance,
143
- "created_at" => created_at
144
- }
145
- result
146
- end
147
-
148
- #
149
- def self.json_create(o)
150
- predefcd = new
151
- predefcd.id(o["id"]) if o.has_key?("id")
152
- predefcd.name(o["name"]) if o.has_key?("name")
153
- #requests
154
- oq = o["spec"]
155
- predefcd.spec[:type_name] = oq["type_name"] if oq && oq.has_key?("type_name")
156
- predefcd.spec[:groups] = oq["groups"] if oq && oq.has_key?("groups")
157
- predefcd.spec[:image] = oq["image"] if oq && oq.has_key?("image")
158
- predefcd.spec[:flavor] = oq["flavor"] if oq && oq.has_key?("flavor")
159
- predefcd.spec[:tenant_id] = oq["tenant_id"] if oq && oq.has_key?("tenant_id")
160
- #predef
161
- op = o["access"]
162
- predefcd.access[:ssh_key] = op["ssh_key"] if op && op.has_key?("ssh_key")
163
- predefcd.access[:identity_file] = op["identity_file"] if op && op.has_key?("identity_file")
164
- predefcd.access[:ssh_user]= op["ssh_user"] if op && op.has_key?("ssh_user")
165
- predefcd.access[:vault_location]= op["vault_location"] if op && op.has_key?("vault_location")
166
- predefcd.access[:sshpub_location]= op["sshpub_location"] if op && op.has_key?("sshpub_location")
167
- predefcd.access[:zone]= op["zone"] if op && op.has_key?("zone")
168
- predefcd.access[:region]= op["region"] if op && op.has_key?("region")
169
- #access
170
- # predefcd.ideal(o["ideal"]) if o.has_key?("ideal")
171
- # predefcd.performance(o["performance"]) if o.has_key?("performance")
172
- predefcd.created_at(o["created_at"]) if o.has_key?("created_at")
173
- #success or error
174
- predefcd.some_msg[:code] = o["code"] if o.has_key?("code")
175
- predefcd.some_msg[:msg_type] = o["msg_type"] if o.has_key?("msg_type")
176
- predefcd.some_msg[:msg]= o["msg"] if o.has_key?("msg")
177
- predefcd.some_msg[:links] = o["links"] if o.has_key?("links")
178
- predefcd
179
- end
180
-
181
- def self.from_hash(o,tmp_email=nil, tmp_api_key=nil, tmp_host=nil)
182
- predefcd = self.new(tmp_email, tmp_api_key, tmp_host)
183
- predefcd.from_hash(o)
184
- predefcd
185
- end
186
-
187
- def from_hash(o)
188
- @id = o[:id] if o.has_key?(:id)
189
- @name = o[:name] if o.has_key?(:name)
190
- @spec = o[:spec] if o.has_key?(:spec)
191
- @access = o[:access] if o.has_key?(:access)
192
- # @ideal = o[:ideal] if o.has_key?(:ideal)
193
- # @performance = o[:performance] if o.has_key?(:performance)
194
- @created_at = o[:created_at] if o.has_key?(:created_at)
195
- self
196
- end
197
-
198
- def self.create(o,tmp_email=nil, tmp_api_key=nil, tmp_host=nil)
199
- acct = from_hash(o,tmp_email, tmp_api_key, tmp_host)
200
- acct.create
201
- end
202
-
203
- # Create the predef via the REST API
204
- def create
205
- megam_rest.post_predefcloud(to_hash)
206
- end
207
-
208
- # Load all predefs -
209
- # returns a PredefsCollection
210
- # don't return self. check if the Megam::PredefCollection is returned.
211
- def self.list(tmp_email=nil, tmp_api_key=nil, tmp_host=nil)
212
- predef = self.new(tmp_email,tmp_api_key,tmp_host)
213
- predef.megam_rest.get_predefclouds
214
- end
215
-
216
- # Show a particular predef by name,
217
- # Megam::Predef
218
- def self.show(p_name,tmp_email=nil, tmp_api_key=nil, tmp_host=nil)
219
- pre = self.new(tmp_email,tmp_api_key,tmp_host)
220
- pre.megam_rest.get_predefcloud(p_name)
221
- end
222
-
223
- def self.delete(p_name,tmp_email=nil, tmp_api_key=nil, tmp_host=nil)
224
- pre = self.new(tmp_email,tmp_api_key,tmp_host)
225
- pre.megam_rest.delete_predefcloud(p_name)
226
- end
227
-
228
- def to_s
229
- Megam::Stuff.styled_hash(to_hash)
230
- #"---> Megam::Account:[error=#{error?}]\n"+
231
- end
232
-
233
- end
234
- end
@@ -1,168 +0,0 @@
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 PredefCloudCollection
18
- include Enumerable
19
-
20
- attr_reader :iterator
21
- def initialize
22
- @predefclouds = Array.new
23
- @predefclouds_by_name = Hash.new
24
- @insert_after_idx = nil
25
- end
26
-
27
- def all_predefclouds
28
- @predefclouds
29
- end
30
-
31
- def [](index)
32
- @predefclouds[index]
33
- end
34
-
35
- def []=(index, arg)
36
- is_megam_predefclouds(arg)
37
- @predefclouds[index] = arg
38
- @predefclouds_by_name[arg.name] = index
39
- end
40
-
41
- def <<(*args)
42
- args.flatten.each do |a|
43
- is_megam_predefclouds(a)
44
- @predefclouds << a
45
- @predefclouds_by_name[a.name] =@predefclouds.length - 1
46
- end
47
- self
48
- end
49
-
50
- # 'push' is an alias method to <<
51
- alias_method :push, :<<
52
-
53
- def insert(predefclouds)
54
- is_megam_predefclouds(predefclouds)
55
- if @insert_after_idx
56
- # in the middle of executing a run, so any predefs inserted now should
57
- # be placed after the most recent addition done by the currently executing
58
- # predefclouds
59
- @predefclouds.insert(@insert_after_idx + 1, predefclouds)
60
- # update name -> location mappings and register new predefclouds
61
- @predefclouds_by_name.each_key do |key|
62
- @predefclouds_by_name[key] += 1 if@predefclouds_by_name[key] > @insert_after_idx
63
- end
64
- @predefclouds_by_name[predefclouds.name] = @insert_after_idx + 1
65
- @insert_after_idx += 1
66
- else
67
- @predefclouds << predefclouds
68
- @predefclouds_by_name[predefclouds.name] =@predefclouds.length - 1
69
- end
70
- end
71
-
72
- def each
73
- @predefclouds.each do |predefclouds|
74
- yield predefclouds
75
- end
76
- end
77
-
78
- def each_index
79
- @predefclouds.each_index do |i|
80
- yield i
81
- end
82
- end
83
-
84
- def empty?
85
- @predefclouds.empty?
86
- end
87
-
88
- def lookup(predefclouds)
89
- lookup_by = nil
90
- if predefclouds.kind_of?(Megam::PredefCloud)
91
- lookup_by = predefclouds.name
92
- elsif predefclouds.kind_of?(String)
93
- lookup_by = predefclouds
94
- else
95
- raise ArgumentError, "Must pass a Megam::PredefClouds or String to lookup"
96
- end
97
- res =@predefclouds_by_name[lookup_by]
98
- unless res
99
- raise ArgumentError, "Cannot find a predefclouds matching #{lookup_by} (did you define it first?)"
100
- end
101
- @predefclouds[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 |predefclouds|
108
- index_hash[predefclouds.name] = predefclouds.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
- =begin
120
- {
121
- "json_claz":"Megam::PredefCloudCollection",
122
- "results":[{
123
- "id":"NOD362554470640386048",
124
- "name":"ec2_rails",
125
- "account_id":"ACT362544229488001024",
126
- "json_claz":"Megam::PredefCloud",
127
- "spec":{
128
- "type_name":"sensor-type",
129
- "groups":"sens-group",
130
- "image":"sens-image",
131
- "flavor":"sens-flvr"
132
- },
133
- "access":{
134
- "ssh_key":"sens-ssh",
135
- "identity_file":"sens-identity-file",
136
- "ssh_user":"sens-sshuser"
137
- },
138
- "ideal":"",
139
- "performance":""
140
- }]
141
- }
142
- =end
143
- def self.json_create(o)
144
- collection = self.new()
145
- o["results"].each do |predefclouds_list|
146
- predefclouds_array = predefclouds_list.kind_of?(Array) ? predefclouds_list : [ predefclouds_list ]
147
- predefclouds_array.each do |predefclouds|
148
- collection.insert(predefclouds)
149
- end
150
- end
151
- collection
152
- end
153
-
154
- private
155
-
156
- def is_megam_predefclouds(arg)
157
- unless arg.kind_of?(Megam::PredefCloud)
158
- raise ArgumentError, "Members must be Megam::PredefClouds's"
159
- end
160
- true
161
- end
162
-
163
- def to_s
164
- Megam::Stuff.styled_hash(to_hash)
165
- end
166
-
167
- end
168
- end