vm_shepherd 2.0.1 → 2.0.2

Sign up to get free protection for your applications and to get access to all the features.
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