miasma 0.2.6 → 0.2.8

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: aebc0393d265e3f5dfa814404af11e3668e2bb82
4
- data.tar.gz: d72c1b1bd1d3727a0693c9e81c50d14ac502bd0d
3
+ metadata.gz: 4a74043b0719d34f3ad9967c6345ad9f26175336
4
+ data.tar.gz: f58390eaca85d115434f260d6db8cf47869942f2
5
5
  SHA512:
6
- metadata.gz: b09ca540d448dfbb34d93abfc431bf96165dc44e237dd96e7eb3f6a2899c54ca5c537edba9be292e9f34c5e05dc725d024055de4e5bcff172dea33cffb0f8afd
7
- data.tar.gz: 00b056a517c7dfb837c2c68874ed343ca3c9c25604d7a75d7a03101105a4dbfbd665891c84dfa46162a389ce18dafc3c5b72c78c167cff15d43dae3fbb41f122
6
+ metadata.gz: 25776c602dc8f1b1d2b8815fe8cb2b313ba1a7eada1f64918888a9668b309cc6853ea31de11932159f13ff9782b090c14558425d85bdd0e97a598198e69a3596
7
+ data.tar.gz: 3c9e161d83a4c092e9fc62bd401245509013bf1c29dd47ca8840f1fe947ec6c9995d3fc175e2182f748f8d1cfc463546b0ca7b71337d32d5322aa4197d94acf3
@@ -1,3 +1,9 @@
1
+ # v0.2.8
2
+ * Allow multiple expected response codes
3
+ * Fix API type provided when building server instance from ASG
4
+ * Remove automatic key sorting on Smash conversions
5
+ * Allow name based matching for data loading within AWS orchestration
6
+
1
7
  # v0.2.6
2
8
  * Add default filter implementation on collection
3
9
  * Allow disable of automatic body extraction
@@ -89,20 +89,21 @@ module Miasma
89
89
  request(:path => '/', :params => options.merge('Action' => 'DescribeInstances'))
90
90
  end
91
91
  results.map do |srv|
92
- srv = srv[:instancesSet][:item]
93
- Server.new(
94
- self,
95
- :id => srv[:instanceId],
96
- :name => srv.fetch(:tagSet, :item, []).map{|tag| tag[:value] if tag.is_a?(Hash) && tag[:key] == 'Name'}.compact.first,
97
- :image_id => srv[:imageId],
98
- :flavor_id => srv[:instanceType],
99
- :state => SERVER_STATE_MAP.fetch(srv.get(:instanceState, :name), :pending),
100
- :addresses_private => [Server::Address.new(:version => 4, :address => srv[:privateIpAddress])],
101
- :addresses_public => [Server::Address.new(:version => 4, :address => srv[:ipAddress])],
102
- :status => srv.get(:instanceState, :name),
103
- :key_name => srv[:keyName]
104
- ).valid_state
105
- end
92
+ [srv[:instancesSet][:item]].flatten.compact.map do |srv|
93
+ Server.new(
94
+ self,
95
+ :id => srv[:instanceId],
96
+ :name => srv.fetch(:tagSet, :item, []).map{|tag| tag[:value] if tag.is_a?(Hash) && tag[:key] == 'Name'}.compact.first,
97
+ :image_id => srv[:imageId],
98
+ :flavor_id => srv[:instanceType],
99
+ :state => SERVER_STATE_MAP.fetch(srv.get(:instanceState, :name), :pending),
100
+ :addresses_private => [Server::Address.new(:version => 4, :address => srv[:privateIpAddress])],
101
+ :addresses_public => [Server::Address.new(:version => 4, :address => srv[:ipAddress])],
102
+ :status => srv.get(:instanceState, :name),
103
+ :key_name => srv[:keyName]
104
+ ).valid_state
105
+ end
106
+ end.flatten
106
107
  end
107
108
 
108
109
  end
@@ -67,7 +67,9 @@ module Miasma
67
67
  d_stk['StackId'] == stk['StackId']
68
68
  end || Smash.new
69
69
  stk.merge!(desc)
70
- next if stack && stack.id != stk['StackId']
70
+ if(stack)
71
+ next if stack.id != stk['StackId'] && stk['StackId'].split('/')[1] != stack.id
72
+ end
71
73
  new_stack = stack || Stack.new(self)
72
74
  new_stack.load_data(
73
75
  :id => stk['StackId'],
@@ -228,6 +230,17 @@ module Miasma
228
230
  end
229
231
  end
230
232
 
233
+ # Return single stack
234
+ #
235
+ # @param ident [String] name or ID
236
+ # @return [Stack]
237
+ def stack_get(ident)
238
+ i = Stack.new(self)
239
+ i.id = ident
240
+ i.reload
241
+ i.name ? i : nil
242
+ end
243
+
231
244
  # Return all stacks
232
245
  #
233
246
  # @param options [Hash] filter
@@ -37,7 +37,7 @@ module Miasma
37
37
  attribute :desired_size, Integer, :coerce => lambda{|v| v.to_i}
38
38
  attribute :current_size, Integer, :coerce => lambda{|v| v.to_i}
39
39
  attribute :state, Symbol, :allowed_values => []
40
- attribute :servers, Server, :multiple => true, :coerce => lambda{|v,obj| Server.new(obj.api, v)}
40
+ attribute :servers, Server, :multiple => true, :coerce => lambda{|v,obj| Server.new(obj.api_for(:compute), v)}
41
41
 
42
42
  on_missing :reload
43
43
 
@@ -7,17 +7,6 @@ module Miasma
7
7
  # Abstract stack collection
8
8
  class Stacks < Types::Collection
9
9
 
10
- # Locate stack by name or ID
11
- #
12
- # @param ident [String, Numeric] name or ID
13
- # @return [Stack]
14
- def get(ident)
15
- all.detect do |stack|
16
- stack.id.to_s == ident.to_s ||
17
- stack.name.to_s == ident.to_s
18
- end
19
- end
20
-
21
10
  # Return stacks matching given filter
22
11
  #
23
12
  # @param options [Hash] filter options
@@ -39,6 +28,15 @@ module Miasma
39
28
  api.stack_all
40
29
  end
41
30
 
31
+ # @return [Stack]
32
+ def perform_get(ident)
33
+ if(api.respond_to?(:stack_get))
34
+ api.stack_get(ident)
35
+ else
36
+ super
37
+ end
38
+ end
39
+
42
40
  end
43
41
 
44
42
  end
@@ -65,7 +65,7 @@ module Miasma
65
65
  # @param args [Hash] options
66
66
  # @option args [String, Symbol] :method HTTP request method
67
67
  # @option args [String] :path request path
68
- # @option args [Integer] :expects expected response status code
68
+ # @option args [Integer, Array<Integer>] :expects expected response status code
69
69
  # @option args [TrueClass, FalseClass] :disable_body_extraction do not auto-parse response body
70
70
  # @return [Smash] {:result => HTTP::Response, :headers => Smash, :body => Object}
71
71
  # @raises [Error::ApiError::RequestError]
@@ -94,7 +94,7 @@ module Miasma
94
94
  _connection = connection
95
95
  end
96
96
  result = make_request(_connection, http_method, request_args)
97
- unless(result.code == args.fetch(:expects, 200).to_i)
97
+ unless([args.fetch(:expects, 200)].flatten.compact.map(&:to_i).include?(result.code))
98
98
  raise Error::ApiError::RequestError.new(result.reason, :response => result)
99
99
  end
100
100
  format_response(result, !args[:disable_body_extraction])
@@ -97,7 +97,7 @@ module Miasma
97
97
 
98
98
  protected
99
99
 
100
- # Return model with given name or ID
100
+ # Return model with given ID or name
101
101
  #
102
102
  # @param ident [String, Symbol] model identifier
103
103
  # @return [Model, NilClass]
@@ -80,15 +80,15 @@ module Miasma
80
80
  # Convert to Hash
81
81
  #
82
82
  # @return [Hash]
83
- def to_hash
84
- self.to_type_converter(::Hash, :to_hash)
83
+ def to_hash(*args)
84
+ self.to_type_converter(::Hash, :to_hash, *args)
85
85
  end
86
86
 
87
87
  # Calculate checksum of hash (sha256)
88
88
  #
89
89
  # @return [String] checksum
90
90
  def checksum
91
- Digest::SHA256.hexdigest(self.to_smash.to_s)
91
+ Digest::SHA256.hexdigest(self.to_smash(:sorted).to_s)
92
92
  end
93
93
 
94
94
  end
@@ -102,8 +102,8 @@ class Hash
102
102
  # Convert to Smash
103
103
  #
104
104
  # @return [Smash]
105
- def to_smash
106
- self.to_type_converter(::Smash, :to_smash)
105
+ def to_smash(*args)
106
+ self.to_type_converter(::Smash, :to_smash, *args)
107
107
  end
108
108
  alias_method :hulk_smash, :to_smash
109
109
 
@@ -114,12 +114,17 @@ class Hash
114
114
  # @param type [Class] hash type
115
115
  # @param convert_call [Symbol] builtin hash convert
116
116
  # @return [Smash]
117
- def to_type_converter(type, convert_call)
117
+ def to_type_converter(type, convert_call, *args)
118
118
  type.new.tap do |smash|
119
- self.sort_by do |entry|
120
- entry.first.to_s
121
- end.each do |k,v|
122
- smash[k.is_a?(Symbol) ? k.to_s : k] = smash_conversion(v, convert_call)
119
+ if(args.include?(:sorted))
120
+ process = self.sort_by do |entry|
121
+ entry.first.to_s
122
+ end
123
+ else
124
+ process = self
125
+ end
126
+ process.each do |k,v|
127
+ smash[k.is_a?(Symbol) ? k.to_s : k] = smash_conversion(v, convert_call, *args)
123
128
  end
124
129
  end
125
130
  end
@@ -129,13 +134,13 @@ class Hash
129
134
  # @param obj [Object]
130
135
  # @param convert_call [Symbol] builtin hash convert
131
136
  # @return [Smash, Object]
132
- def smash_conversion(obj, convert_call)
137
+ def smash_conversion(obj, convert_call, *args)
133
138
  case obj
134
139
  when Hash
135
- obj.send(convert_call)
140
+ obj.send(convert_call, *args)
136
141
  when Array
137
142
  obj.map do |i|
138
- smash_conversion(i, convert_call)
143
+ smash_conversion(i, convert_call, *args)
139
144
  end
140
145
  else
141
146
  obj
@@ -1,4 +1,4 @@
1
1
  module Miasma
2
2
  # current library version
3
- VERSION = Gem::Version.new('0.2.6')
3
+ VERSION = Gem::Version.new('0.2.8')
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: miasma
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.6
4
+ version: 0.2.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Roberts
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-09 00:00:00.000000000 Z
11
+ date: 2014-12-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: hashie