vm_shepherd 2.0.1 → 2.0.2

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: f2ec2812d65de401f4a75e0231500740b2e4a876
4
- data.tar.gz: 51537e8fc0e866193160819e8341f151168a7619
3
+ metadata.gz: 2614911bfd1c14008866807113973c8f46839042
4
+ data.tar.gz: 531b81862421564f022975b2dce1d2b33cf7c0a2
5
5
  SHA512:
6
- metadata.gz: 9e1b8e82805557390405832ba23f2cbfa803b897deff275f1810963688e3b28964a37860b53a9a7e5c796a6b20ec479d902f5d3cd495bc6cec0c1e6b7b13b6c3
7
- data.tar.gz: c31158a2e130412af7b96bcab1d3240fe235ce69686b58a7981ffb6f5b198d0f0b6200e5454b8b3c1634a37ca73cfbd88382e8fb1e01798f5a3b2bd33e1786fa
6
+ metadata.gz: 77f4da512e62010a6d86dfdea15c0128ed9237d417dad03bfb0f1edfebc698ac873a49fdd37070891484c841e1a2b670391602178c3f0ae28489873a16a847c6
7
+ data.tar.gz: 8cae091e767439f798b9453bb722d8d9e311ea488f931e0860c894b903ca54cfcc5ab881ba23feb3ddbf352f3451f327891444f40f68b833334490804fa66a1f
@@ -0,0 +1,36 @@
1
+ module VmShepherd
2
+ module BackportRefinements
3
+ def self.should_refine?
4
+ Gem::Version.new(RUBY_VERSION) < Gem::Version.new("2.3.0")
5
+ end
6
+
7
+ def self.ported_dig(obj, indices)
8
+ head = indices.first
9
+ new_obj = obj[head]
10
+ if indices.count == 1
11
+ new_obj
12
+ elsif new_obj == nil
13
+ return nil
14
+ else
15
+ tail = indices[1..-1]
16
+ ported_dig(new_obj, tail)
17
+ end
18
+ end
19
+
20
+ refine Array do
21
+ next unless BackportRefinements.should_refine?
22
+
23
+ def dig(*indices)
24
+ BackportRefinements.ported_dig(self, indices)
25
+ end
26
+ end
27
+
28
+ refine Hash do
29
+ next unless BackportRefinements.should_refine?
30
+
31
+ def dig(*indices)
32
+ BackportRefinements.ported_dig(self, indices)
33
+ end
34
+ end
35
+ end
36
+ end
@@ -7,6 +7,7 @@ require 'vm_shepherd/vcloud/deployer'
7
7
  require 'vm_shepherd/vcloud/destroyer'
8
8
  require 'vm_shepherd/vcloud/vapp_config'
9
9
  require 'vm_shepherd/vsphere_manager'
10
+ require 'backport_refinements'
10
11
 
11
12
  module VmShepherd
12
13
  AWS_IAAS_TYPE = 'aws'.freeze
@@ -1,3 +1,5 @@
1
+ using VmShepherd::BackportRefinements
2
+
1
3
  module VmShepherd
2
4
  class Shepherd
3
5
  class InvalidIaas < StandardError;
@@ -1,3 +1,3 @@
1
1
  module VmShepherd
2
- VERSION = '2.0.1'.freeze
2
+ VERSION = '2.0.2'.freeze
3
3
  end
@@ -0,0 +1,55 @@
1
+ require 'spec_helper'
2
+ require 'backport_refinements'
3
+
4
+ module VmShepherd
5
+ RSpec.describe BackportRefinements do
6
+
7
+ describe '.should_refine?' do
8
+ context 'Ruby < 2.3' do
9
+ before { stub_const("RUBY_VERSION", '2.1.0') }
10
+
11
+ it 'returns true' do
12
+ expect(BackportRefinements.should_refine?).to eq(true)
13
+ end
14
+ end
15
+
16
+ context 'Ruby >= 2.3' do
17
+ before { stub_const("RUBY_VERSION", '2.3.0') }
18
+
19
+ it 'returns false' do
20
+ expect(BackportRefinements.should_refine?).to eq(false)
21
+ end
22
+ end
23
+ end
24
+
25
+ describe 'Array#dig and Hash#dig' do
26
+ using BackportRefinements
27
+
28
+ it 'monkey patches dig for Array' do
29
+ ary = ['a', 'b', 'c', 'd']
30
+ expect(ary.dig(0)).to eq('a')
31
+ expect(ary.dig(1)).to eq('b')
32
+ expect(ary.dig(2)).to eq('c')
33
+ expect(ary.dig(3)).to eq('d')
34
+ end
35
+
36
+ it 'monkey patches dig for Hash' do
37
+ hsh = {foo: {bar: :baz}}
38
+
39
+ expect(hsh.dig(:foo, :bar)).to eq(:baz)
40
+ end
41
+
42
+ it 'monkey patches dig for arbitrarily nested Arrays / Hashes' do
43
+ hsh = {foo: ['nope', {'foo' => 'bar'}]}
44
+
45
+ expect(hsh.dig(:foo, 1, 'foo')).to eq('bar')
46
+ end
47
+
48
+ it 'returns nil when unable to find a matching object while traversing' do
49
+ hsh = {foo: ['nope', {'foo' => 'bar'}]}
50
+
51
+ expect(hsh.dig(0, 'sure', 2, 'not_gonna_happen')).to be_nil
52
+ end
53
+ end
54
+ end
55
+ end
@@ -1,6 +1,9 @@
1
+ require 'backport_refinements'
1
2
  require 'vm_shepherd'
2
3
 
3
4
  module VmShepherd
5
+ using BackportRefinements
6
+
4
7
  RSpec.describe Shepherd do
5
8
  subject(:manager) { Shepherd.new(settings: settings) }
6
9
  let(:first_config) { settings.dig('vm_shepherd', 'vm_configs').first }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vm_shepherd
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 2.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ops Manager Team
@@ -166,6 +166,7 @@ files:
166
166
  - README.md
167
167
  - Rakefile
168
168
  - ci/run_specs.sh
169
+ - lib/backport_refinements.rb
169
170
  - lib/vm_shepherd.rb
170
171
  - lib/vm_shepherd/aws_manager.rb
171
172
  - lib/vm_shepherd/data_object.rb
@@ -178,6 +179,7 @@ files:
178
179
  - lib/vm_shepherd/vcloud_manager.rb
179
180
  - lib/vm_shepherd/version.rb
180
181
  - lib/vm_shepherd/vsphere_manager.rb
182
+ - spec/backport_refinements_spec.rb
181
183
  - spec/fixtures/ova_manager/foo.ova
182
184
  - spec/fixtures/shepherd/aws-no-elb.yml
183
185
  - spec/fixtures/shepherd/aws.yml
@@ -222,6 +224,7 @@ signing_key:
222
224
  specification_version: 4
223
225
  summary: A tool for booting and tearing down Ops Manager VMs on various Infrastructures.
224
226
  test_files:
227
+ - spec/backport_refinements_spec.rb
225
228
  - spec/fixtures/ova_manager/foo.ova
226
229
  - spec/fixtures/shepherd/aws-no-elb.yml
227
230
  - spec/fixtures/shepherd/aws.yml