aws-cache 0.0.09 → 0.0.10

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0193293e5f591d8bd2dde800a0506967de79a54b
4
- data.tar.gz: db79cb14c8c6644c8c9d1ba9937953f8defa44ec
3
+ metadata.gz: 074f3e44e9c0408c2628efb4cd1759b9c7f3204f
4
+ data.tar.gz: 621bf372a11bb8185d6f9f3bf515931de610277c
5
5
  SHA512:
6
- metadata.gz: 8fd5816357f989d8a0321fd2887b0a3abad2fe7b0ae792be45881371450ab50231d62f19c420cfb2fa9de25d47f3031a9845eb1ec112809c12b8ebedda0b4ad2
7
- data.tar.gz: bd3be258ad61fd3d104c515a173c1b54dd398929914ad90bfe3ac6e9aaf7c87a8bc83bf7b9f2a788c36750419a1cf30d069cca155746e2cc4662f03a49bd06b2
6
+ metadata.gz: 91188cf3cc8479beb07b8fcfdfddb1fa7c49a3f516e3852bf694592032a36c4876fee53fbf185c8045b388fdb755fcd21b8175d6a3293ae9ae643be4ee130c97
7
+ data.tar.gz: 841119d4bd4da1a18ee7e741957a103295f841ae1ee115dbf25d18e1007a8cc82837bc11d32cb9e52fa98346c24b4a76c6694640848c55283ed0eaab7d92a60b
@@ -1,4 +1,4 @@
1
1
  module AwsCacheVersion
2
2
  # Please follow semantic versioning (semver.org).
3
- VERSION = '0.0.09'
3
+ VERSION = '0.0.10'
4
4
  end
@@ -21,16 +21,16 @@ class AwsCache
21
21
  @region = optional_element(opts, ['region'], 'us-east-1')
22
22
  end
23
23
 
24
+ #Returns a hash describing the instance requested.
24
25
  def describe_instance( instance_id)
25
26
  instances = self.describe_instances()
26
- instances.each do |instance|
27
- if instance[:instances][0][:instance_id] == instance_id then
28
- return instance[:instances][0]
29
- end
27
+ instance = instances.select do |entry|
28
+ entry[:instances][0][:instance_id] == instance_id
30
29
  end
31
- return nil
30
+ return instance[0]
32
31
  end
33
32
 
33
+ #Returns an array of hashes describing the autoscaling groups for the selected stack.
34
34
  def stack_auto_scaling_groups(stack_name)
35
35
  autoscaling_groups = Array.new()
36
36
  output = self.list_stack_resources(stack_name)
@@ -42,16 +42,7 @@ class AwsCache
42
42
  return autoscaling_groups
43
43
  end
44
44
 
45
- def list_stack_resources( stack_name)
46
- output = cache_get_2("list_stack_resources-#{stack_name}", 300) do
47
- aws_object = Aws::CloudFormation::Client.new(region: @region)
48
- pages = aws_object.list_stack_resources(stack_name: stack_name)
49
- output = process_page( 'stack_resource_summaries', pages)
50
- end
51
- return output
52
- end
53
-
54
-
45
+ #Returns an array of hashes describing the substacks for the selected stack.
55
46
  def get_sub_stacks( stack_name)
56
47
  substacks = Array.new()
57
48
  stacks = self.list_stack_resources(stack_name)
@@ -66,7 +57,8 @@ class AwsCache
66
57
  end
67
58
  return substacks
68
59
  end
69
-
60
+
61
+ #Returns a hash describing the stack requested.
70
62
  def describe_stack(stack_name)
71
63
  stacks = self.describe_stacks
72
64
  stacks.each do |stack|
@@ -77,17 +69,30 @@ class AwsCache
77
69
  return nil
78
70
  end
79
71
 
80
- def describe_stacks()
81
- output = cache_get_2('get_stacks', 300) do
82
- aws_object = Aws::CloudFormation::Client.new(region: @region)
83
- pages = aws_object.describe_stacks
84
- output = process_page( 'stacks', pages)
72
+ #Returns an array of hashes of instances.
73
+ def get_asg_instances(asg)
74
+ instances = Array.new()
75
+ asg_instances = self.describe_auto_scaling_group(asg)
76
+ asg_instances[:instances].each do |instance|
77
+ instances.push(instance)
85
78
  end
86
- return output
79
+ return instances
80
+ end
81
+
82
+ #Returns Aws::AutoScaling::Types::AutoScalingGroup
83
+ def describe_auto_scaling_group(asg)
84
+ asgroups = self.describe_autoscaling_groups()
85
+ target_asg = asgroups.select do |record|
86
+ record[:auto_scaling_group_name] == asg
87
+ end
88
+ if target_asg then
89
+ return target_asg[0]
90
+ end
91
+ return nil
87
92
  end
88
93
 
89
94
  def describe_snapshots()
90
- output = cache_get_2('get_snapshots', 300) do
95
+ output = cache_get('get_snapshots', 300) do
91
96
  aws_object = Aws::EC2::Client.new(region: @region)
92
97
  pages = aws_object.describe_snapshots
93
98
  output = process_page( 'snapshots', pages)
@@ -95,27 +100,38 @@ class AwsCache
95
100
  return output
96
101
  end
97
102
 
98
- def get_asg_instances(asg)
99
- instances = Array.new()
100
- asg = self.describe_auto_scaling_group(asg)
101
- asg[:instances].each do |instance|
102
- instances.push(instance)
103
+ def list_stack_resources( stack_name)
104
+ output = cache_get("list_stack_resources-#{stack_name}", 300) do
105
+ aws_object = Aws::CloudFormation::Client.new(region: @region)
106
+ pages = aws_object.list_stack_resources(stack_name: stack_name)
107
+ output = process_page( 'stack_resource_summaries', pages)
103
108
  end
104
- return instances
109
+ return output
105
110
  end
106
111
 
107
- def describe_auto_scaling_group(asg)
108
- asgroups = self.describe_autoscaling_groups()
109
- asgroups.each do |asgroup|
110
- if asgroup[:auto_scaling_group_name] == asg then
111
- return asgroup
112
- end
112
+ def describe_stacks()
113
+ output = cache_get('get_stacks', 300) do
114
+ aws_object = Aws::CloudFormation::Client.new(region: @region)
115
+ pages = aws_object.describe_stacks
116
+ output = process_page( 'stacks', pages)
113
117
  end
114
- return nil
118
+ return output
115
119
  end
116
120
 
121
+
122
+ def describe_auto_scaling_instances()
123
+ output = cache_get("describe_auto_scaling_instances", 300) do
124
+ aws_object = Aws::AutoScaling::Client.new(region: @region)
125
+ pages = aws_object.describe_auto_scaling_instances()
126
+ output = process_page( 'auto_scaling_instances', pages)
127
+ end
128
+ return output
129
+ end
130
+
131
+
132
+ #Returns an Array of Hashes containing auto scaling group structures
117
133
  def describe_autoscaling_groups()
118
- output = cache_get_2('get_autoscaling_groups', 300) do
134
+ output = cache_get('get_autoscaling_groups', 300) do
119
135
  aws_object = Aws::AutoScaling::Client.new(region: @region)
120
136
  pages = aws_object.describe_auto_scaling_groups
121
137
  output = process_page( 'auto_scaling_groups', pages)
@@ -123,8 +139,9 @@ class AwsCache
123
139
  return output
124
140
  end
125
141
 
142
+ #Returns an Array of Hashes containing instance structures
126
143
  def describe_instances()
127
- output = cache_get_2('describe_instances', 300) do
144
+ output = cache_get('describe_instances', 300) do
128
145
  aws_object = Aws::EC2::Client.new(region: @region)
129
146
  pages = aws_object.describe_instances
130
147
  output = process_page( 'reservations', pages)
@@ -135,10 +152,9 @@ class AwsCache
135
152
  def process_page( key, pages)
136
153
  output = Array.new()
137
154
  pages.each do |page|
138
- page.each do |data|
139
- data.data[key].each do |entry|
140
- output.push(entry)
141
- end
155
+ data = page.send( key)
156
+ data.each do |asg|
157
+ output.push(asg)
142
158
  end
143
159
  end
144
160
  return output
@@ -166,37 +182,18 @@ class AwsCache
166
182
  return false
167
183
  end
168
184
 
169
- def cache_get_2(key, ttl)
185
+ def cache_get(key, ttl)
170
186
  vkey = "#{key}_#{@keyspace}"
171
187
  output = @redis.get(vkey)
172
188
  if output.nil?
173
189
  output = yield
174
- output = YAML.dump(output)
190
+ output = Psych.dump(output)
175
191
  @redis.setex(vkey, ttl, output )
176
192
  end
177
- return YAML.load(output)
193
+ return Psych.load(output)
178
194
  end
179
195
 
180
196
 
181
- def cache_get(key, ttl)
182
- vkey = "#{key}_#{@keyspace}"
183
- hash = @redis.get(vkey)
184
- ap hash.class.name
185
- unless hash.nil?
186
- hash = YAML.load(hash)
187
- end
188
-
189
- if hash.nil?
190
- hash = yield
191
-
192
- hash = hash.to_yaml
193
- @redis.setex(vkey, ttl, hash)
194
- hash = YAML.load(hash)
195
- end
196
-
197
- return hash
198
- end
199
-
200
197
  def list_to_hash!(src, keys, by_key)
201
198
  hash = {}
202
199
  last_key = keys.pop
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aws-cache
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.09
4
+ version: 0.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stephen J. Smith
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-06-26 00:00:00.000000000 Z
12
+ date: 2015-07-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: aws-sdk