kitchen-nodes 0.3.2 → 0.3.3

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: 0d5fbc28eea9b0f2814f5cb89766c40e7cdfa491
4
- data.tar.gz: 181b4f8d573a26988d91ebd80765a8a33abf6e5f
3
+ metadata.gz: 32559c20845947bc1b2c40d2fd7393841da83db5
4
+ data.tar.gz: df3c3bd467f8adabab15aaf89d4a94997d679e32
5
5
  SHA512:
6
- metadata.gz: dd24b6af6573a856e0a31a199d7fb4bf992cd763912f08724f704556f60c6a1652de8ee6fdc1d1193c897c79caed3a680196fb78b997dcebe872e921c667c173
7
- data.tar.gz: 690eb6fe3656d9c1974551406b0c64e142794dcaa03bf714fd0d4c86ef2c0771dd910f56578ac1640f68411a16a8341e885ee12d8507e50552f13e1d84e472cd
6
+ metadata.gz: c0c555909d3ac750086b938136841209d03a3915f63b70a61fcd11004defcf2efa9b977e11abbfce19f23a48a09cf0e2c94138e658e58136f4ebb10713f74b12
7
+ data.tar.gz: 5ca523f6854c4a6c913d2b7e98dcd985e2b8c5b556f0c8adbe3816056623c677d4ec7048e97c4f869876583f827e5035deed6453c1452ca9589ce6dbc20df785
data/.rubocop.yml ADDED
@@ -0,0 +1,2 @@
1
+ Metrics/MethodLength:
2
+ Max: 20
@@ -51,6 +51,7 @@ module Kitchen
51
51
  module IpFinder
52
52
  # SSH implementation for returning active non-localhost IPs
53
53
  class Ssh
54
+ IP4REGEX = /(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/
54
55
  def initialize(connection)
55
56
  @connection = connection
56
57
  end
@@ -66,6 +67,7 @@ module Kitchen
66
67
  return ips unless ips.empty?
67
68
  sleep 0.5
68
69
  end
70
+ ips
69
71
  end
70
72
 
71
73
  def run_ifconfig
@@ -73,7 +75,7 @@ module Kitchen
73
75
  ips = []
74
76
  response.split(/^\S+/).each do |device|
75
77
  next if !device.include?('RUNNING') || device.include?('LOOPBACK')
76
- ips << parse_ip(device, 'inet addr:', ' ')
78
+ ips << IP4REGEX.match(device)[1]
77
79
  end
78
80
  ips.compact
79
81
  end
@@ -81,19 +83,13 @@ module Kitchen
81
83
  def run_ip_addr
82
84
  response = @connection.node_execute('/sbin/ip -4 addr show')
83
85
  ips = []
84
- response.split(/[0-9]+: /).each do |device|
86
+ response.split(/^[0-9]+: /).each do |device|
85
87
  next if device.include?('LOOPBACK') || device.include?('NO-CARRIER')
86
- ips << parse_ip(device, 'inet ', '/')
88
+ next if device == ''
89
+ ips << IP4REGEX.match(device)[1]
87
90
  end
88
91
  ips.compact
89
92
  end
90
-
91
- def parse_ip(device, start_token, delimiter)
92
- start_idx = device.index(start_token)
93
- start_idx += start_token.length unless start_idx.nil?
94
- end_idx = device.index(delimiter, start_idx) unless start_idx.nil?
95
- device[start_idx, end_idx - start_idx] unless end_idx.nil?
96
- end
97
93
  end
98
94
  end
99
95
  end
@@ -84,7 +84,9 @@ module Kitchen
84
84
  [:username, :password].each do |prop|
85
85
  state[prop] = instance.driver[prop] if instance.driver[prop]
86
86
  end
87
- IpFinder.for_transport(transport, state).find_ips
87
+ ips = IpFinder.for_transport(transport, state).find_ips
88
+ fail 'Unable to retrieve IPs' if ips.empty?
89
+ ips
88
90
  end
89
91
  end
90
92
  end
@@ -19,6 +19,6 @@
19
19
  module Kitchen
20
20
  # Version string for Nodes Kitchen driver
21
21
  module Provisioner
22
- NODES_VERSION = '0.3.2'
22
+ NODES_VERSION = '0.3.3'
23
23
  end
24
24
  end
@@ -85,6 +85,28 @@ describe Kitchen::Provisioner::Nodes do
85
85
  allow(transport).to receive(:connection)
86
86
  .and_return(Kitchen::Transport::Base::Connection.new)
87
87
  end
88
+
89
+ context 'cannot find an ip' do
90
+ let(:ifconfig_response) do
91
+ FakeFS.deactivate!
92
+ template = File.read('spec/unit/stubs/ifconfig.txt')
93
+ FakeFS.activate!
94
+ template.gsub!('', machine_ips[0])
95
+ template.gsub!('', machine_ips[1])
96
+ template.gsub!('', machine_ips[2])
97
+ end
98
+ let(:transport) { Kitchen::Transport::Ssh.new }
99
+
100
+ before do
101
+ allow_any_instance_of(Kitchen::Transport::Base::Connection)
102
+ .to receive(:node_execute).and_return(ifconfig_response)
103
+ end
104
+
105
+ it 'fails' do
106
+ expect { subject.create_node }.to raise_error('Unable to retrieve IPs')
107
+ end
108
+ end
109
+
88
110
  context 'platform is windows' do
89
111
  let(:transport) { Kitchen::Transport::Winrm.new }
90
112
 
@@ -125,6 +147,7 @@ describe Kitchen::Provisioner::Nodes do
125
147
  FakeFS.activate!
126
148
  template.gsub!('1.1.1.1', machine_ips[0])
127
149
  template.gsub!('2.2.2.2', machine_ips[1])
150
+ template.gsub!('3.3.3.3', machine_ips[2])
128
151
  end
129
152
  let(:transport) { Kitchen::Transport::Ssh.new }
130
153
 
@@ -146,6 +169,7 @@ describe Kitchen::Provisioner::Nodes do
146
169
  FakeFS.activate!
147
170
  template.gsub!('1.1.1.1', machine_ips[0])
148
171
  template.gsub!('2.2.2.2', machine_ips[1])
172
+ template.gsub!('3.3.3.3', machine_ips[2])
149
173
  end
150
174
 
151
175
  before do
@@ -24,3 +24,12 @@ lo Link encap:Local Loopback
24
24
  collisions:0 txqueuelen:0
25
25
  RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
26
26
 
27
+ # The following represents the format of ifconfig from CentOS 7.1
28
+ enp0s8: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
29
+ inet 3.3.3.3 netmask 255.255.255.0 broadcast 3.3.3.0
30
+ inet6 fe80::a00:27ff:fe5e:e9b0 prefixlen 64 scopeid 0x20<link>
31
+ ether 08:00:27:5e:e9:b0 txqueuelen 1000 (Ethernet)
32
+ RX packets 7961 bytes 823710 (804.4 KiB)
33
+ RX errors 0 dropped 0 overruns 0 frame 0
34
+ TX packets 263 bytes 50868 (49.6 KiB)
35
+ TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
@@ -7,3 +7,8 @@
7
7
  5: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
8
8
  inet 2.2.2.2/16 scope global docker0
9
9
  valid_lft forever preferred_lft forever
10
+ # The following represents the format of ipaddr from CentOS 7.1 (which is the same in this case, but
11
+ # adding for completeness)
12
+ 6: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
13
+ inet 3.3.3.3/24 brd 3.3.3.255 scope global dynamic enp0s8
14
+ valid_lft 966sec preferred_lft 966sec
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kitchen-nodes
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Wrock
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-26 00:00:00.000000000 Z
11
+ date: 2015-07-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: net-ping
@@ -130,6 +130,7 @@ extensions: []
130
130
  extra_rdoc_files: []
131
131
  files:
132
132
  - ".gitignore"
133
+ - ".rubocop.yml"
133
134
  - ".travis.yml"
134
135
  - CHANGELOG.md
135
136
  - Gemfile