cloudster 2.6.1 → 2.7.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +0 -1
- data/VERSION +1 -1
- data/cloudster.gemspec +2 -2
- data/lib/cloudster/cloud.rb +109 -3
- metadata +3 -3
data/README.md
CHANGED
@@ -22,7 +22,6 @@ Create AWS resources :
|
|
22
22
|
:validation_key => 'asd3e33880889098asdnmnnasd8900890a8sdmasdjna9s880808asdnmnasd90-a',
|
23
23
|
:server_url => 'http://10.50.60.70:4000',
|
24
24
|
:node_name => 'project.environment.appserver_1',
|
25
|
-
:environment => 'production',
|
26
25
|
:interval => 1800
|
27
26
|
)
|
28
27
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.
|
1
|
+
2.7.0
|
data/cloudster.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "cloudster"
|
8
|
-
s.version = "2.
|
8
|
+
s.version = "2.7.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Emil Soman"]
|
12
|
-
s.date = "2012-11-
|
12
|
+
s.date = "2012-11-18"
|
13
13
|
s.description = "Cloudster is a Ruby gem that was born to cut the learning curve involved \n in writing your own CloudFormation templates. If you don't know what a CloudFormation template is, \n but know about the AWS Cloud offerings, you can still use cloudster to provision your stack. \n Still in infancy , cloudster can create a very basic stack like a breeze. All kinds of contribution welcome !"
|
14
14
|
s.email = "emil.soman@gmail.com"
|
15
15
|
s.extra_rdoc_files = [
|
data/lib/cloudster/cloud.rb
CHANGED
@@ -20,9 +20,9 @@ module Cloudster
|
|
20
20
|
# )
|
21
21
|
def initialize(options = {})
|
22
22
|
require_options(options, [:access_key_id, :secret_access_key])
|
23
|
-
access_key_id = options[:access_key_id]
|
24
|
-
secret_access_key = options[:secret_access_key]
|
25
|
-
@cloud_formation = Fog::AWS::CloudFormation.new(:aws_access_key_id => access_key_id, :aws_secret_access_key => secret_access_key)
|
23
|
+
@access_key_id = options[:access_key_id]
|
24
|
+
@secret_access_key = options[:secret_access_key]
|
25
|
+
@cloud_formation = Fog::AWS::CloudFormation.new(:aws_access_key_id => @access_key_id, :aws_secret_access_key => @secret_access_key)
|
26
26
|
end
|
27
27
|
|
28
28
|
# Generates CloudFormation Template for the stack
|
@@ -164,5 +164,111 @@ module Cloudster
|
|
164
164
|
return @cloud_formation.delete_stack(options[:stack_name])
|
165
165
|
end
|
166
166
|
|
167
|
+
# Returns all RDS(database) endpoints in a stack
|
168
|
+
#
|
169
|
+
# ==== Examples
|
170
|
+
# cloud = Cloudster::Cloud.new(
|
171
|
+
# :access_key_id => 'aws_access_key_id'
|
172
|
+
# :secret_access_key => 'aws_secret_access_key',
|
173
|
+
# )
|
174
|
+
# cloud.get_database_endpoints(:stack_name => 'ShittyStack')
|
175
|
+
#
|
176
|
+
# ==== Parameters
|
177
|
+
# * options<~Hash>
|
178
|
+
# * :stack_name : A string which will contain the name of the stack
|
179
|
+
#
|
180
|
+
# ==== Returns
|
181
|
+
# * Array of hashes, example: [{:address => 'simcoprod01.cu7u2t4uz396.us-east-1.rds.amazonaws.com', :port => '3306'}]
|
182
|
+
def get_database_endpoints(options = {})
|
183
|
+
rds_physical_ids = get_rds_resource_ids(resources(options))
|
184
|
+
return [] if rds_physical_ids.empty?
|
185
|
+
rds = Fog::AWS::RDS.new(:aws_access_key_id => @access_key_id, :aws_secret_access_key => @secret_access_key)
|
186
|
+
endpoints = []
|
187
|
+
rds_physical_ids.each do |rds_physical_id|
|
188
|
+
endpoint = rds.describe_db_instances(rds_physical_id).body["DescribeDBInstancesResult"]["DBInstances"][0]["Endpoint"] rescue nil
|
189
|
+
endpoints << {:address => endpoint["Address"], :port => endpoint["Port"]} unless endpoint.nil?
|
190
|
+
end
|
191
|
+
return endpoints
|
192
|
+
end
|
193
|
+
|
194
|
+
# Returns an array containing a list of Resources in a stack
|
195
|
+
#
|
196
|
+
# ==== Examples
|
197
|
+
# cloud = Cloudster::Cloud.new(
|
198
|
+
# :access_key_id => 'aws_access_key_id'
|
199
|
+
# :secret_access_key => 'aws_secret_access_key',
|
200
|
+
# )
|
201
|
+
# cloud.resources(:stack_name => 'RDSStack')
|
202
|
+
#
|
203
|
+
# ==== Parameters
|
204
|
+
# * options<~Hash>
|
205
|
+
# * :stack_name : A string which will contain the name of the stack
|
206
|
+
#
|
207
|
+
# ==== Returns
|
208
|
+
# * Array of hashes, example: [{"Timestamp"=>2012-11-16 14:31:55 UTC, "ResourceStatus"=>"CREATE_COMPLETE", "StackId"=>"arn:aws::asd", "LogicalResourceId"=>"TestDB", "StackName"=>"RDSStack", "PhysicalResourceId"=>"rtad", "ResourceType"=>"AWS::RDS::DBInstance"}]
|
209
|
+
def resources(options = {})
|
210
|
+
require_options(options, [:stack_name])
|
211
|
+
return @cloud_formation.describe_stack_resources('StackName' => options[:stack_name]).body["StackResources"] rescue []
|
212
|
+
end
|
213
|
+
|
214
|
+
# Describes the attributes of a Stack
|
215
|
+
#
|
216
|
+
# ==== Examples
|
217
|
+
# cloud = Cloudster::Cloud.new(
|
218
|
+
# :access_key_id => 'aws_access_key_id'
|
219
|
+
# :secret_access_key => 'aws_secret_access_key',
|
220
|
+
# )
|
221
|
+
# cloud.describe(:stack_name => 'RDSStack')
|
222
|
+
#
|
223
|
+
# ==== Parameters
|
224
|
+
# * options<~Hash>
|
225
|
+
# * :stack_name : A string which will contain the name of the stack
|
226
|
+
#
|
227
|
+
# ==== Returns
|
228
|
+
# * Hash containing description of the stack
|
229
|
+
def describe(options = {})
|
230
|
+
require_options(options, [:stack_name])
|
231
|
+
return @cloud_formation.describe_stacks('StackName' => options[:stack_name]).body["Stacks"][0] rescue nil
|
232
|
+
end
|
233
|
+
|
234
|
+
# Returns the status of the stack
|
235
|
+
#
|
236
|
+
# ==== Examples
|
237
|
+
# cloud = Cloudster::Cloud.new(
|
238
|
+
# :access_key_id => 'aws_access_key_id'
|
239
|
+
# :secret_access_key => 'aws_secret_access_key',
|
240
|
+
# )
|
241
|
+
# cloud.status(:stack_name => 'RDSStack')
|
242
|
+
#
|
243
|
+
# ==== Parameters
|
244
|
+
# * options<~Hash>
|
245
|
+
# * :stack_name : A string which will contain the name of the stack
|
246
|
+
#
|
247
|
+
# ==== Returns
|
248
|
+
# * One of these strings :
|
249
|
+
# * CREATE_IN_PROGRESS
|
250
|
+
# * CREATE_FAILED
|
251
|
+
# * CREATE_COMPLETE
|
252
|
+
# * ROLLBACK_IN_PROGRESS
|
253
|
+
# * ROLLBACK_FAILED
|
254
|
+
# * ROLLBACK_COMPLETE
|
255
|
+
# * DELETE_IN_PROGRESS
|
256
|
+
# * DELETE_FAILED
|
257
|
+
def status(options = {})
|
258
|
+
require_options(options, [:stack_name])
|
259
|
+
description = describe(options)
|
260
|
+
return description["StackStatus"] rescue nil
|
261
|
+
end
|
262
|
+
|
263
|
+
private
|
264
|
+
#Returns an array containing the Physical Resource Id's of RDS resources
|
265
|
+
def get_rds_resource_ids(resources)
|
266
|
+
rds_physical_ids = []
|
267
|
+
resources.each do |resource|
|
268
|
+
rds_physical_ids << resource["PhysicalResourceId"] if resource["ResourceType"] == "AWS::RDS::DBInstance"
|
269
|
+
end
|
270
|
+
return rds_physical_ids
|
271
|
+
end
|
272
|
+
|
167
273
|
end
|
168
274
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cloudster
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.7.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-11-
|
12
|
+
date: 2012-11-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: fog
|
@@ -158,7 +158,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
158
158
|
version: '0'
|
159
159
|
segments:
|
160
160
|
- 0
|
161
|
-
hash:
|
161
|
+
hash: 991965789
|
162
162
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
163
163
|
none: false
|
164
164
|
requirements:
|