aws-cache 0.0.09 → 0.0.10

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: 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