miasma 0.3.2 → 0.3.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +4 -0
  3. data/LICENSE +1 -1
  4. data/README.md +5 -2
  5. data/lib/miasma.rb +14 -15
  6. data/lib/miasma/error.rb +17 -10
  7. data/lib/miasma/models.rb +9 -9
  8. data/lib/miasma/models/auto_scale.rb +5 -7
  9. data/lib/miasma/models/auto_scale/group.rb +8 -13
  10. data/lib/miasma/models/auto_scale/groups.rb +2 -4
  11. data/lib/miasma/models/block_storage.rb +1 -0
  12. data/lib/miasma/models/compute.rb +4 -6
  13. data/lib/miasma/models/compute/server.rb +5 -6
  14. data/lib/miasma/models/compute/servers.rb +2 -4
  15. data/lib/miasma/models/dns.rb +1 -0
  16. data/lib/miasma/models/load_balancer.rb +5 -7
  17. data/lib/miasma/models/load_balancer/balancer.rb +9 -11
  18. data/lib/miasma/models/load_balancer/balancers.rb +2 -4
  19. data/lib/miasma/models/monitoring.rb +1 -0
  20. data/lib/miasma/models/orchestration.rb +37 -7
  21. data/lib/miasma/models/orchestration/event.rb +2 -5
  22. data/lib/miasma/models/orchestration/events.rb +5 -7
  23. data/lib/miasma/models/orchestration/plan.rb +87 -0
  24. data/lib/miasma/models/orchestration/plans.rb +52 -0
  25. data/lib/miasma/models/orchestration/resource.rb +8 -10
  26. data/lib/miasma/models/orchestration/resources.rb +3 -5
  27. data/lib/miasma/models/orchestration/stack.rb +106 -20
  28. data/lib/miasma/models/orchestration/stacks.rb +3 -5
  29. data/lib/miasma/models/queues.rb +1 -0
  30. data/lib/miasma/models/queuing.rb +72 -0
  31. data/lib/miasma/models/queuing/queue.rb +77 -0
  32. data/lib/miasma/models/queuing/queues.rb +32 -0
  33. data/lib/miasma/models/storage.rb +8 -9
  34. data/lib/miasma/models/storage/bucket.rb +4 -7
  35. data/lib/miasma/models/storage/buckets.rb +2 -4
  36. data/lib/miasma/models/storage/file.rb +13 -16
  37. data/lib/miasma/models/storage/files.rb +3 -5
  38. data/lib/miasma/specs.rb +4 -4
  39. data/lib/miasma/specs/compute_abstract.rb +24 -33
  40. data/lib/miasma/specs/load_balancer_abstract.rb +17 -27
  41. data/lib/miasma/specs/orchestration_abstract.rb +26 -37
  42. data/lib/miasma/specs/storage_abstract.rb +21 -27
  43. data/lib/miasma/types.rb +6 -8
  44. data/lib/miasma/types/api.rb +28 -31
  45. data/lib/miasma/types/collection.rb +8 -10
  46. data/lib/miasma/types/data.rb +2 -5
  47. data/lib/miasma/types/model.rb +13 -16
  48. data/lib/miasma/types/thin_model.rb +7 -10
  49. data/lib/miasma/utils.rb +7 -7
  50. data/lib/miasma/utils/animal_strings.rb +1 -3
  51. data/lib/miasma/utils/api_methoding.rb +2 -5
  52. data/lib/miasma/utils/immutable.rb +2 -6
  53. data/lib/miasma/utils/lazy.rb +2 -2
  54. data/lib/miasma/utils/memoization.rb +1 -1
  55. data/lib/miasma/utils/smash.rb +1 -1
  56. data/lib/miasma/version.rb +1 -1
  57. data/miasma.gemspec +21 -19
  58. metadata +44 -12
@@ -1,11 +1,10 @@
1
- require 'miasma'
1
+ require "miasma"
2
2
 
3
3
  module Miasma
4
4
  module Types
5
5
 
6
6
  # Base data container
7
7
  class Data
8
-
9
8
  include Miasma::Utils::Lazy
10
9
 
11
10
  attribute :id, [String, Numeric]
@@ -14,7 +13,7 @@ module Miasma
14
13
  #
15
14
  # @param args [Hash] attribute values
16
15
  # @return [self]
17
- def initialize(args={})
16
+ def initialize(args = {})
18
17
  load_data(args)
19
18
  valid_state
20
19
  end
@@ -45,9 +44,7 @@ module Miasma
45
44
  def from_json(json)
46
45
  self.new(MultiJson.load(json).to_smash)
47
46
  end
48
-
49
47
  end
50
-
51
48
  end
52
49
  end
53
50
  end
@@ -1,15 +1,14 @@
1
- require 'miasma'
1
+ require "miasma"
2
2
 
3
3
  module Miasma
4
4
  module Types
5
5
 
6
6
  # Base model
7
7
  class Model < Data
8
-
9
8
  include Utils::Memoization
10
9
  include Utils::ApiMethoding
11
10
 
12
- attribute :custom, Smash, :coerce => lambda{|v| v.to_smash}, :default => Smash.new
11
+ attribute :custom, Smash, :coerce => lambda { |v| v.to_smash }, :default => Smash.new
13
12
 
14
13
  # @return [Miasma::Types::Api] underlying service API
15
14
  attr_reader :api
@@ -26,7 +25,6 @@ module Miasma
26
25
  instance.from_json(json)
27
26
  instance
28
27
  end
29
-
30
28
  end
31
29
 
32
30
  # Build new model
@@ -34,12 +32,12 @@ module Miasma
34
32
  # @param api [Miasma::Types::Api] service API
35
33
  # @param model_data [Smash] load model data if provided
36
34
  # @return [self]
37
- def initialize(api, model_data=nil)
35
+ def initialize(api, model_data = nil)
38
36
  @api = api
39
37
  @data = Smash.new
40
38
  @dirty = Smash.new
41
- if(model_data)
42
- if(model_data.is_a?(Hash))
39
+ if model_data
40
+ if model_data.is_a?(Hash)
43
41
  load_data(model_data) unless model_data.empty?
44
42
  else
45
43
  raise TypeError.new "Expecting `model_data` to be of type `Hash`. Received: `#{model_data.class}`"
@@ -53,7 +51,7 @@ module Miasma
53
51
  # @return [TrueClass, FalseClass] save was performed
54
52
  # @raises [Miasma::Error::Save]
55
53
  def save
56
- if(dirty?)
54
+ if dirty?
57
55
  perform_save
58
56
  reload
59
57
  else
@@ -66,7 +64,7 @@ module Miasma
66
64
  # @return [TrueClass, FalseClass] destruction was performed
67
65
  # @raises [Miasma::Error::Destroy]
68
66
  def destroy
69
- if(persisted?)
67
+ if persisted?
70
68
  perform_destroy
71
69
  reload
72
70
  true
@@ -101,10 +99,10 @@ module Miasma
101
99
  # @return [TrueClass, FalseClass] performed remote action
102
100
  # @raises [Miasma::Error::Save]
103
101
  def perform_save
104
- if(m_name = api_method_for(:save))
102
+ if m_name = api_method_for(:save)
105
103
  api.send(m_name, self)
106
104
  else
107
- raise NotImplementedError.new 'Remote API save has not been implemented'
105
+ raise NotImplementedError.new "Remote API save has not been implemented"
108
106
  end
109
107
  end
110
108
 
@@ -113,10 +111,10 @@ module Miasma
113
111
  # @return [TrueClass, FalseClass] performed remote action
114
112
  # @raises [Miasma::Error::Save]
115
113
  def perform_reload
116
- if(m_name = api_method_for(:reload))
114
+ if m_name = api_method_for(:reload)
117
115
  api.send(m_name, self)
118
116
  else
119
- raise NotImplementedError.new 'Remote API reload has not been implemented'
117
+ raise NotImplementedError.new "Remote API reload has not been implemented"
120
118
  end
121
119
  end
122
120
 
@@ -125,13 +123,12 @@ module Miasma
125
123
  # @return [TrueClass, FalseClass] performed remote action
126
124
  # @raises [Miasma::Error::Save]
127
125
  def perform_destroy
128
- if(m_name = api_method_for(:destroy))
126
+ if m_name = api_method_for(:destroy)
129
127
  api.send(m_name, self)
130
128
  else
131
- raise NotImplementedError.new 'Remote API destroy has not been implemented'
129
+ raise NotImplementedError.new "Remote API destroy has not been implemented"
132
130
  end
133
131
  end
134
-
135
132
  end
136
133
  end
137
134
  end
@@ -1,20 +1,19 @@
1
- require 'miasma'
1
+ require "miasma"
2
2
 
3
3
  module Miasma
4
4
  module Types
5
5
 
6
6
  # Base data container
7
7
  class ThinModel < Data
8
-
9
8
  class << self
10
9
 
11
10
  # Get/Set fat model
12
11
  #
13
12
  # @param klass [Class] fat model class
14
13
  # @return [Class] fat model class
15
- def model(klass=nil)
16
- if(klass)
17
- unless(klass.ancestors.include?(Miasma::Types::Model))
14
+ def model(klass = nil)
15
+ if klass
16
+ unless klass.ancestors.include?(Miasma::Types::Model)
18
17
  raise TypeError.new "Expecting `Miasma::Types::Model` subclass! (got #{klass})"
19
18
  else
20
19
  self._model = klass
@@ -27,7 +26,6 @@ module Miasma
27
26
 
28
27
  # @return [Class] fat model class
29
28
  attr_accessor :_model
30
-
31
29
  end
32
30
 
33
31
  # @return [Miasma::Types::Api] service API
@@ -37,7 +35,7 @@ module Miasma
37
35
  #
38
36
  # @param api [Miasma::Types::Api] service API
39
37
  # @param args [Hash] model data
40
- def initialize(api, args={})
38
+ def initialize(api, args = {})
41
39
  @api = api
42
40
  super args
43
41
  end
@@ -53,7 +51,7 @@ module Miasma
53
51
  # @return [Class] of type Miasma::Types::Model
54
52
  # @note will deconstruct namespace and rebuild using provider
55
53
  def model
56
- if(self.class.model)
54
+ if self.class.model
57
55
  self.class.model
58
56
  else
59
57
  raise NotImplementedError.new "No associated model for this thin model type (#{self.class})"
@@ -68,9 +66,8 @@ module Miasma
68
66
  inst.data[:id] = self.id
69
67
  inst.reload
70
68
  end
71
- alias_method :instance, :expand
72
69
 
70
+ alias_method :instance, :expand
73
71
  end
74
-
75
72
  end
76
73
  end
@@ -1,13 +1,13 @@
1
- require 'miasma'
1
+ require "miasma"
2
2
 
3
3
  module Miasma
4
4
  module Utils
5
- autoload :ApiMethoding, 'miasma/utils/api_methoding'
6
- autoload :Lazy, 'miasma/utils/lazy'
7
- autoload :Memoization, 'miasma/utils/memoization'
8
- autoload :Immutable, 'miasma/utils/immutable'
5
+ autoload :ApiMethoding, "miasma/utils/api_methoding"
6
+ autoload :Lazy, "miasma/utils/lazy"
7
+ autoload :Memoization, "miasma/utils/memoization"
8
+ autoload :Immutable, "miasma/utils/immutable"
9
9
  end
10
10
  end
11
11
 
12
- require 'miasma/utils/animal_strings'
13
- require 'miasma/utils/smash'
12
+ require "miasma/utils/animal_strings"
13
+ require "miasma/utils/smash"
@@ -1,11 +1,9 @@
1
- require 'miasma'
1
+ require "miasma"
2
2
 
3
3
  module Miasma
4
-
5
4
  module Utils
6
5
  # Animal stylings on strings
7
6
  AnimalStrings = Bogo::AnimalStrings
8
7
  extend AnimalStrings
9
8
  end
10
-
11
9
  end
@@ -1,19 +1,16 @@
1
- require 'miasma'
1
+ require "miasma"
2
2
 
3
3
  module Miasma
4
4
  module Utils
5
-
6
5
  module ApiMethoding
7
6
 
8
7
  # Generate the supported API method for
9
8
  # a given action
10
9
  def api_method_for(action)
11
10
  klass = self.respond_to?(:model) ? model : self.class
12
- m_name = "#{Bogo::Utility.snake(klass.name.split('::').last)}_#{action}"
11
+ m_name = "#{Bogo::Utility.snake(klass.name.split("::").last)}_#{action}"
13
12
  self.api.respond_to?(m_name) ? m_name : nil
14
13
  end
15
-
16
14
  end
17
-
18
15
  end
19
16
  end
@@ -1,7 +1,6 @@
1
- require 'miasma'
1
+ require "miasma"
2
2
 
3
3
  module Miasma
4
-
5
4
  module Utils
6
5
  # Make best effort to make model immutable
7
6
  # @note this should be included at end of model definition
@@ -17,20 +16,17 @@ module Miasma
17
16
 
18
17
  # @raises [Error::ImmutableError]
19
18
  def save
20
- raise Error::ImmutableError.new 'Resource information cannot be mutated!'
19
+ raise Error::ImmutableError.new "Resource information cannot be mutated!"
21
20
  end
22
21
 
23
22
  class << self
24
-
25
23
  def included(klass)
26
24
  klass.class_eval do
27
25
  alias_method :unfrozen_valid_state, :valid_state
28
26
  alias_method :valid_state, :frozen_valid_state
29
27
  end
30
28
  end
31
-
32
29
  end
33
-
34
30
  end
35
31
  end
36
32
  end
@@ -1,5 +1,5 @@
1
- require 'miasma'
2
- require 'digest/sha2'
1
+ require "miasma"
2
+ require "digest/sha2"
3
3
 
4
4
  module Miasma
5
5
  module Utils
@@ -1,4 +1,4 @@
1
- require 'miasma'
1
+ require "miasma"
2
2
 
3
3
  module Miasma
4
4
  module Utils
@@ -1,4 +1,4 @@
1
- require 'miasma'
1
+ require "miasma"
2
2
 
3
3
  module Miasma
4
4
  module Utils
@@ -1,4 +1,4 @@
1
1
  module Miasma
2
2
  # current library version
3
- VERSION = Gem::Version.new('0.3.2')
3
+ VERSION = Gem::Version.new("0.3.4")
4
4
  end
@@ -1,22 +1,24 @@
1
- $LOAD_PATH.unshift File.expand_path(File.dirname(__FILE__)) + '/lib/'
2
- require 'miasma/version'
1
+ $LOAD_PATH.unshift File.expand_path(File.dirname(__FILE__)) + "/lib/"
2
+ require "miasma/version"
3
3
  Gem::Specification.new do |s|
4
- s.name = 'miasma'
4
+ s.name = "miasma"
5
5
  s.version = Miasma::VERSION.version
6
- s.summary = 'Smoggy API'
7
- s.author = 'Chris Roberts'
8
- s.email = 'code@chrisroberts.org'
9
- s.homepage = 'https://github.com/miasma-rb/miasma'
10
- s.description = 'Smoggy API'
11
- s.license = 'Apache 2.0'
12
- s.require_path = 'lib'
13
- s.add_runtime_dependency 'http', '>= 0.8.12', '< 1.1'
14
- s.add_runtime_dependency 'multi_json'
15
- s.add_runtime_dependency 'multi_xml'
16
- s.add_runtime_dependency 'xml-simple'
17
- s.add_runtime_dependency 'bogo', '>= 0.2.2', '< 1.0'
18
- s.add_development_dependency 'pry'
19
- s.add_development_dependency 'rake'
20
- s.add_development_dependency 'minitest'
21
- s.files = Dir['{bin,lib}/**/*'] + %w(miasma.gemspec README.md CHANGELOG.md LICENSE)
6
+ s.summary = "Smoggy API"
7
+ s.author = "Chris Roberts"
8
+ s.email = "code@chrisroberts.org"
9
+ s.homepage = "https://github.com/miasma-rb/miasma"
10
+ s.description = "Smoggy API"
11
+ s.license = "Apache 2.0"
12
+ s.require_path = "lib"
13
+ s.add_runtime_dependency "http", ">= 0.8.12", "< 2.0"
14
+ s.add_runtime_dependency "multi_json"
15
+ s.add_runtime_dependency "multi_xml"
16
+ s.add_runtime_dependency "xml-simple"
17
+ s.add_runtime_dependency "bogo", ">= 0.2.2", "< 1.0"
18
+ s.add_development_dependency "pry"
19
+ s.add_development_dependency "minitest"
20
+ s.add_development_dependency "rspec", "~> 3.5"
21
+ s.add_development_dependency "rake", "~> 10"
22
+ s.add_development_dependency "rufo", "~> 0.3.0"
23
+ s.files = Dir["{bin,lib}/**/*"] + %w(miasma.gemspec README.md CHANGELOG.md LICENSE)
22
24
  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.3.2
4
+ version: 0.3.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: 2016-03-10 00:00:00.000000000 Z
11
+ date: 2018-06-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: http
@@ -19,7 +19,7 @@ dependencies:
19
19
  version: 0.8.12
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: '1.1'
22
+ version: '2.0'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -29,7 +29,7 @@ dependencies:
29
29
  version: 0.8.12
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: '1.1'
32
+ version: '2.0'
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: multi_json
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -107,7 +107,7 @@ dependencies:
107
107
  - !ruby/object:Gem::Version
108
108
  version: '0'
109
109
  - !ruby/object:Gem::Dependency
110
- name: rake
110
+ name: minitest
111
111
  requirement: !ruby/object:Gem::Requirement
112
112
  requirements:
113
113
  - - ">="
@@ -121,19 +121,47 @@ dependencies:
121
121
  - !ruby/object:Gem::Version
122
122
  version: '0'
123
123
  - !ruby/object:Gem::Dependency
124
- name: minitest
124
+ name: rspec
125
125
  requirement: !ruby/object:Gem::Requirement
126
126
  requirements:
127
- - - ">="
127
+ - - "~>"
128
128
  - !ruby/object:Gem::Version
129
- version: '0'
129
+ version: '3.5'
130
130
  type: :development
131
131
  prerelease: false
132
132
  version_requirements: !ruby/object:Gem::Requirement
133
133
  requirements:
134
- - - ">="
134
+ - - "~>"
135
135
  - !ruby/object:Gem::Version
136
- version: '0'
136
+ version: '3.5'
137
+ - !ruby/object:Gem::Dependency
138
+ name: rake
139
+ requirement: !ruby/object:Gem::Requirement
140
+ requirements:
141
+ - - "~>"
142
+ - !ruby/object:Gem::Version
143
+ version: '10'
144
+ type: :development
145
+ prerelease: false
146
+ version_requirements: !ruby/object:Gem::Requirement
147
+ requirements:
148
+ - - "~>"
149
+ - !ruby/object:Gem::Version
150
+ version: '10'
151
+ - !ruby/object:Gem::Dependency
152
+ name: rufo
153
+ requirement: !ruby/object:Gem::Requirement
154
+ requirements:
155
+ - - "~>"
156
+ - !ruby/object:Gem::Version
157
+ version: 0.3.0
158
+ type: :development
159
+ prerelease: false
160
+ version_requirements: !ruby/object:Gem::Requirement
161
+ requirements:
162
+ - - "~>"
163
+ - !ruby/object:Gem::Version
164
+ version: 0.3.0
137
165
  description: Smoggy API
138
166
  email: code@chrisroberts.org
139
167
  executables: []
@@ -161,11 +189,16 @@ files:
161
189
  - lib/miasma/models/orchestration.rb
162
190
  - lib/miasma/models/orchestration/event.rb
163
191
  - lib/miasma/models/orchestration/events.rb
192
+ - lib/miasma/models/orchestration/plan.rb
193
+ - lib/miasma/models/orchestration/plans.rb
164
194
  - lib/miasma/models/orchestration/resource.rb
165
195
  - lib/miasma/models/orchestration/resources.rb
166
196
  - lib/miasma/models/orchestration/stack.rb
167
197
  - lib/miasma/models/orchestration/stacks.rb
168
198
  - lib/miasma/models/queues.rb
199
+ - lib/miasma/models/queuing.rb
200
+ - lib/miasma/models/queuing/queue.rb
201
+ - lib/miasma/models/queuing/queues.rb
169
202
  - lib/miasma/models/storage.rb
170
203
  - lib/miasma/models/storage/bucket.rb
171
204
  - lib/miasma/models/storage/buckets.rb
@@ -211,9 +244,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
211
244
  version: '0'
212
245
  requirements: []
213
246
  rubyforge_project:
214
- rubygems_version: 2.4.8
247
+ rubygems_version: 2.7.6
215
248
  signing_key:
216
249
  specification_version: 4
217
250
  summary: Smoggy API
218
251
  test_files: []
219
- has_rdoc: