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 +4 -4
- data/lib/backport_refinements.rb +36 -0
- data/lib/vm_shepherd.rb +1 -0
- data/lib/vm_shepherd/shepherd.rb +2 -0
- data/lib/vm_shepherd/version.rb +1 -1
- data/spec/backport_refinements_spec.rb +55 -0
- data/spec/vm_shepherd/shepherd_spec.rb +3 -0
- metadata +4 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2614911bfd1c14008866807113973c8f46839042
|
4
|
+
data.tar.gz: 531b81862421564f022975b2dce1d2b33cf7c0a2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
data/lib/vm_shepherd.rb
CHANGED
data/lib/vm_shepherd/shepherd.rb
CHANGED
data/lib/vm_shepherd/version.rb
CHANGED
@@ -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.
|
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
|