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 +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
|