miasma-aws 0.1.2 → 0.1.4

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: 4c0c6ca7e79700a4062548c7c16393c315346b15
4
- data.tar.gz: ac667b1d7c150e6f601aabd4dc5fbf0bc4c234bc
3
+ metadata.gz: a36b7462b9d20c66ddf295b05ebdf6e040347506
4
+ data.tar.gz: 0f5d54d5fe39d9875113c9780129bf00b5ecfa10
5
5
  SHA512:
6
- metadata.gz: 07cfe373155d1416623386a7447661b6f1a65de1e8c0fc00d33a9329906f3775374786e129ad6207a1ad633dc144a99eb12e393ed68eb02c1bfe6e247615a992
7
- data.tar.gz: df3a5cb492b0fd378af53baaa32e3008eef47541f915c60feda39e21e8359196bcee1e223b4cb8c14d1976062fa929e920de48b28f5d5320b9a6844ebb5e4e91
6
+ metadata.gz: 8e3d201264bee490fb391aa998fc57590d270543f4d82556444fcc875f2838b61eb2187a2f29e859a0a8279865bf278c99be651a93f554428a3692c808bc6683
7
+ data.tar.gz: 9ff5d373105120f4ecc53a94cb0cb3847c1d426b5bf845edd1774b91cad1d917a51d045a0fe4a327400e083c71512c5d57c1dae6d9e363123dd8718aeb1a32e4
@@ -1,3 +1,8 @@
1
+ ## v0.1.4
2
+ * Fix values set within load balancer reload
3
+ * Ensure state is valid for orchestration stack prior to set
4
+ * Load health status of instances attached to load balancers
5
+
1
6
  ## v0.1.2
2
7
  * Migrate spec coverage
3
8
  * Update storage behavior to use streamable helper
@@ -1,4 +1,4 @@
1
1
  module MiasmaAws
2
2
  # Current library version
3
- VERSION = Gem::Version.new('0.1.2')
3
+ VERSION = Gem::Version.new('0.1.4')
4
4
  end
@@ -103,7 +103,7 @@ module Miasma
103
103
  def load_balancer_data(balancer=nil)
104
104
  params = Smash.new('Action' => 'DescribeLoadBalancers')
105
105
  if(balancer)
106
- params.merge('LoadBalancerNames.member.1' => balancer.id || balancer.name)
106
+ params.merge!('LoadBalancerNames.member.1' => balancer.id || balancer.name)
107
107
  end
108
108
  result = all_result_pages(nil, :body, 'DescribeLoadBalancersResponse', 'DescribeLoadBalancersResult', 'LoadBalancerDescriptions', 'member') do |options|
109
109
  request(
@@ -111,23 +111,42 @@ module Miasma
111
111
  :params => options.merge(params)
112
112
  )
113
113
  end
114
+ if(balancer)
115
+ health_result = all_result_pages(nil, :body, 'DescribeInstanceHealthResponse', 'DescribeInstanceHealthResult', 'InstanceStates', 'member') do |options|
116
+ request(
117
+ :path => '/',
118
+ :params => options.merge(
119
+ 'LoadBalancerName' => balancer.id || balancer.name,
120
+ 'Action' => 'DescribeInstanceHealth'
121
+ )
122
+ )
123
+ end
124
+ end
114
125
  result.map do |blr|
115
126
  (balancer || Balancer.new(self)).load_data(
116
- :id => blr['LoadBalancerName'],
117
- :name => blr['LoadBalancerName'],
118
- :state => :active,
119
- :status => 'ACTIVE',
120
- :created => blr['CreatedTime'],
121
- :updated => blr['CreatedTime'],
122
- :public_addresses => [
123
- Balancer::Address.new(
124
- :address => blr['DNSName'],
125
- :version => 4
127
+ Smash.new(
128
+ :id => blr['LoadBalancerName'],
129
+ :name => blr['LoadBalancerName'],
130
+ :state => :active,
131
+ :status => 'ACTIVE',
132
+ :created => blr['CreatedTime'],
133
+ :updated => blr['CreatedTime'],
134
+ :public_addresses => [
135
+ Balancer::Address.new(
136
+ :address => blr['DNSName'],
137
+ :version => 4
138
+ )
139
+ ],
140
+ :servers => [blr.get('Instances', 'member')].flatten(1).compact.map{|i|
141
+ Balancer::Server.new(self.api_for(:compute), :id => i['InstanceId'])
142
+ }
143
+ ).merge(
144
+ health_result.nil? ? {} : Smash.new(
145
+ :server_states => health_result.nil? ? nil : health_result.map{|i|
146
+ Balancer::ServerState.new(self.api_for(:compute), :id => i['InstanceId'], :status => i['State'], :reason => i['ReasonCode'], :state => i['State'] == 'InService' ? :up : :down)
147
+ }
126
148
  )
127
- ],
128
- :servers => [blr.get('Instances', 'member')].flatten(1).compact.map{|i|
129
- Balancer::Server.new(self.api_for(:compute), :id => i['InstanceId'])
130
- }
149
+ )
131
150
  ).valid_state
132
151
  end
133
152
  end
@@ -72,6 +72,14 @@ module Miasma
72
72
  if(stack)
73
73
  next if stack.id != stk['StackId'] && stk['StackId'].split('/')[1] != stack.id
74
74
  end
75
+ state = stk['StackStatus'].downcase.to_sym
76
+ unless(Miasma::Models::Orchestration::VALID_RESOURCE_STATES.include?(state))
77
+ parts = state.to_s.split('_')
78
+ state = [state.first, *state.slice(-2, state.size)].join('_').to_sym
79
+ unless(Miasma::Models::Orchestration::VALID_RESOURCE_STATES.include?(state))
80
+ state = :unknown
81
+ end
82
+ end
75
83
  new_stack = stack || Stack.new(self)
76
84
  new_stack.load_data(
77
85
  :id => stk['StackId'],
@@ -84,7 +92,7 @@ module Miasma
84
92
  :timeout_in_minutes => stk['TimeoutInMinutes'] ? stk['TimeoutInMinutes'].to_i : nil,
85
93
  :status => stk['StackStatus'],
86
94
  :status_reason => stk['StackStatusReason'],
87
- :state => stk['StackStatus'].downcase.to_sym,
95
+ :state => state,
88
96
  :template_description => stk['TemplateDescription'],
89
97
  :disable_rollback => !!stk['DisableRollback'],
90
98
  :outputs => [stk.get('Outputs', 'member')].flatten(1).compact.map{|o|
@@ -10,7 +10,7 @@ Gem::Specification.new do |s|
10
10
  s.description = 'Smoggy AWS API'
11
11
  s.license = 'Apache 2.0'
12
12
  s.require_path = 'lib'
13
- s.add_development_dependency 'miasma', '>= 0.2.12'
13
+ s.add_development_dependency 'miasma', '>= 0.2.16'
14
14
  s.add_development_dependency 'pry'
15
15
  s.add_development_dependency 'minitest'
16
16
  s.add_development_dependency 'vcr'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: miasma-aws
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Roberts
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-11 00:00:00.000000000 Z
11
+ date: 2015-02-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: miasma
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 0.2.12
19
+ version: 0.2.16
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 0.2.12
26
+ version: 0.2.16
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: pry
29
29
  requirement: !ruby/object:Gem::Requirement