barking_iguana-compound 0.1.7 → 0.1.8

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: 55218a14a32ab786c26f03952b737b3bf039e4a5
4
- data.tar.gz: b10b1caa7dbbdd447a45f0c102526ccaa484235c
3
+ metadata.gz: 782a866b326abf184c9162aa9bdc809eccac06ec
4
+ data.tar.gz: c687db95a7f2f3e6b27319f1f984f630764eefb0
5
5
  SHA512:
6
- metadata.gz: 070671c7769c4bdd9f8201a84f809e98345c0a02293ad70b5908d12bc0ef723bab2edadf01a2db57b292b53f71601394ca5c3c24967d1e5bcdd134c1d5607fe0
7
- data.tar.gz: 9e3ba4a7c22672c2aff704aa3d291b29caf46624981d763a2bc589a96acd4eec391f0a1923cdabbc865931edc44616742a0c8f3af9a976f301be1e96ada22441
6
+ metadata.gz: 3ccb56d7df5ea74e60c6d6d75212d7961c38933e1fa526b2b6efee21a8b06952fcd4e65dd4f40ee1f786b3547c1f37c90e6d330f073b1db9b22427cc73272f3a
7
+ data.tar.gz: 783f362384a91262ea0a08166b24bf3b3233790473e92816a7ebdbf8f6a133b556f3bd804f04c6d1b7e09539b69434ef45a1acd822b0d97c347e84fe3374b0d9
data/docs/CHANGELOG.md CHANGED
@@ -2,10 +2,20 @@
2
2
 
3
3
  Entries are in reverse chronological order.
4
4
 
5
- ## *0.1.8* (Current Development)
5
+ ## *0.1.9* (Current Development)
6
6
 
7
7
  Add release notes here, as things are added to the project.
8
8
 
9
+ ## *0.1.8* (2017-01-08)
10
+
11
+ * Clean up the generated inventory after the test has run.
12
+
13
+ * Add a simple example in lieu of tests.
14
+
15
+ * Code clean-up including using `Forwardable` to avoid lots of tiny
16
+ forwarding methods, and correctly namespacing the `ServerSpec` and
17
+ `Vagrant` classes. Sorry for polluting your programmes!
18
+
9
19
  ## *0.1.7* (2017-01-06)
10
20
 
11
21
  * Allow setting the Vagrantfile.erb template in the root of the test suite to
data/docs/TODO.md CHANGED
@@ -7,6 +7,4 @@
7
7
 
8
8
  * Tests. So ironic that a testing tool has no tests. For release 1.0.0 we need tests.
9
9
 
10
- * A host doesn't have a `uri`, it's got an IP address.
11
-
12
10
  * We should support the ansible remote user attributes in the inventory, for each host.
@@ -0,0 +1,4 @@
1
+ source 'http://rubygems.org'
2
+
3
+ gem "barking_iguana-compound", path: "../../"
4
+ gem "rake"
@@ -0,0 +1,102 @@
1
+ PATH
2
+ remote: ../../
3
+ specs:
4
+ barking_iguana-compound (0.1.7)
5
+ ansible_spec
6
+ barking_iguana-benchmark
7
+ barking_iguana-logging
8
+ colorize
9
+ hostlist_expression
10
+ mixlib-shellout
11
+ oj
12
+ rspec-wait
13
+
14
+ GEM
15
+ remote: http://rubygems.org/
16
+ specs:
17
+ ansible_spec (0.2.16)
18
+ hostlist_expression
19
+ oj
20
+ serverspec (>= 2.0.0)
21
+ winrm
22
+ barking_iguana-benchmark (0.1.0)
23
+ barking_iguana-logging (0.1.5)
24
+ barking_iguana-otk
25
+ term-ansicolor
26
+ barking_iguana-otk (0.1.0)
27
+ builder (3.2.2)
28
+ colorize (0.8.1)
29
+ diff-lcs (1.2.5)
30
+ erubis (2.7.0)
31
+ ffi (1.9.14)
32
+ gssapi (1.2.0)
33
+ ffi (>= 1.0.1)
34
+ gyoku (1.3.1)
35
+ builder (>= 2.1.2)
36
+ hostlist_expression (0.2.1)
37
+ httpclient (2.8.3)
38
+ little-plugger (1.1.4)
39
+ logging (2.1.0)
40
+ little-plugger (~> 1.1)
41
+ multi_json (~> 1.10)
42
+ mixlib-shellout (2.2.7)
43
+ multi_json (1.12.1)
44
+ net-scp (1.2.1)
45
+ net-ssh (>= 2.6.5)
46
+ net-ssh (3.2.0)
47
+ net-telnet (0.1.1)
48
+ nori (2.6.0)
49
+ oj (2.18.0)
50
+ rake (12.0.0)
51
+ rspec (3.5.0)
52
+ rspec-core (~> 3.5.0)
53
+ rspec-expectations (~> 3.5.0)
54
+ rspec-mocks (~> 3.5.0)
55
+ rspec-core (3.5.4)
56
+ rspec-support (~> 3.5.0)
57
+ rspec-expectations (3.5.0)
58
+ diff-lcs (>= 1.2.0, < 2.0)
59
+ rspec-support (~> 3.5.0)
60
+ rspec-its (1.2.0)
61
+ rspec-core (>= 3.0.0)
62
+ rspec-expectations (>= 3.0.0)
63
+ rspec-mocks (3.5.0)
64
+ diff-lcs (>= 1.2.0, < 2.0)
65
+ rspec-support (~> 3.5.0)
66
+ rspec-support (3.5.0)
67
+ rspec-wait (0.0.9)
68
+ rspec (>= 3, < 4)
69
+ rubyntlm (0.6.1)
70
+ serverspec (2.37.2)
71
+ multi_json
72
+ rspec (~> 3.0)
73
+ rspec-its
74
+ specinfra (~> 2.53)
75
+ sfl (2.3)
76
+ specinfra (2.66.3)
77
+ net-scp
78
+ net-ssh (>= 2.7, < 4.0)
79
+ net-telnet
80
+ sfl
81
+ term-ansicolor (1.4.0)
82
+ tins (~> 1.0)
83
+ tins (1.13.0)
84
+ winrm (2.1.1)
85
+ builder (>= 2.1.2)
86
+ erubis (~> 2.7)
87
+ gssapi (~> 1.2)
88
+ gyoku (~> 1.0)
89
+ httpclient (~> 2.2, >= 2.2.0.2)
90
+ logging (>= 1.6.1, < 3.0)
91
+ nori (~> 2.0)
92
+ rubyntlm (~> 0.6.0, >= 0.6.1)
93
+
94
+ PLATFORMS
95
+ ruby
96
+
97
+ DEPENDENCIES
98
+ barking_iguana-compound!
99
+ rake
100
+
101
+ BUNDLED WITH
102
+ 1.13.6
@@ -0,0 +1,3 @@
1
+ require 'barking_iguana/compound'
2
+
3
+ BarkingIguana::Compound::TestSuite.define_rake_tasks
@@ -0,0 +1,5 @@
1
+ describe file('/tmp/example-file') do
2
+ it "exists" do
3
+ expect(subject).to exist
4
+ end
5
+ end
@@ -0,0 +1,11 @@
1
+ ---
2
+ - name: Example Playbook
3
+ hosts: example-host
4
+ tasks:
5
+ - name: Create a file
6
+ become: yes
7
+ file:
8
+ path: /tmp/example-file
9
+ owner: root
10
+ group: root
11
+ state: touch
@@ -0,0 +1,18 @@
1
+ Vagrant.configure(2) do |config|
2
+ config.vm.box = "bento/ubuntu-16.10"
3
+ config.vm.box_check_update = false
4
+ config.vm.provider "virtualbox" do |vb|
5
+ vb.memory = "512"
6
+ end
7
+
8
+
9
+ config.vm.define "example-host" do |this|
10
+ this.vm.hostname = "example-host"
11
+ this.vm.network "private_network", ip: "10.8.42.10"
12
+ end
13
+
14
+
15
+ config.ssh.username = "vagrant"
16
+ config.ssh.password = "vagrant"
17
+ config.ssh.insert_key = false
18
+ end
@@ -0,0 +1,2 @@
1
+ [example]
2
+ example-host
@@ -66,8 +66,6 @@ module BarkingIguana
66
66
  FileUtils.remove_file wrapper_playbook, true
67
67
  end
68
68
 
69
- # TODO: Symlink the playbook to wrapper_playbook.path
70
- # so we can use the group_vars, host_vars, etc.
71
69
  def playbook_paths
72
70
  return file unless run_from
73
71
  tempfile = wrapper_playbook
@@ -1,6 +1,8 @@
1
1
  module BarkingIguana
2
2
  module Compound
3
3
  class Host
4
+ extend Forwardable
5
+
4
6
  attr_accessor :inventory_name, :ip_address, :state
5
7
 
6
8
  def initialize(name:, ip_address:)
@@ -33,6 +35,12 @@ module BarkingIguana
33
35
  def ssh_extra_args
34
36
  '-o StrictHostKeyChecking=no'
35
37
  end
38
+
39
+ def_delegator :inventory_name, :hash
40
+
41
+ def eql? other
42
+ inventory_name == other.inventory_name
43
+ end
36
44
  end
37
45
  end
38
46
  end
@@ -1,66 +1,64 @@
1
- class ServerSpec
2
- attr_accessor :stage
1
+ module BarkingIguana
2
+ module Compound
3
+ class ServerSpec
4
+ extend Forwardable
5
+ attr_accessor :stage
3
6
 
4
- def initialize stage
5
- self.stage = stage
6
- end
7
-
8
- include BarkingIguana::Logging::Helper
9
- include BarkingIguana::Benchmark
10
-
11
- def run
12
- logger.debug { "Host tests: #{host_tests.inspect}" }
13
- host_tests.each do |host_name, test_files|
14
- command = "bundle exec ruby -S rspec -r #{control_repo_dir}/library/spec_helper.rb #{test_files.join(' ')}"
15
- c = Mixlib::ShellOut.new command, live_stream: logger, cwd: control_repo_dir, env: env_for(host_name)
16
- benchmark command do
17
- c.run_command
7
+ def initialize stage
8
+ self.stage = stage
18
9
  end
19
- c.error!
20
- end
21
- end
22
-
23
- def control_repo_dir
24
- stage.test.suite.control_directory
25
- end
26
-
27
- def host_for host_test
28
- stage.test.host_manager.find_by_name host_test['name']
29
- end
30
10
 
31
- def env_for host_test
32
- host = host_for host_test
33
- raise "Could not find host #{host_test} in inventory #{hosts.inspect}" unless host
34
- # TODO: Keep these in the host object
35
- {
36
- TARGET_HOST: host['uri'],
37
- TARGET_SSH_USER: 'vagrant',
38
- TARGET_SSH_KEY: "#{ENV['HOME']}/.vagrant.d/insecure_private_key"
39
- }
40
- end
11
+ include BarkingIguana::Logging::Helper
12
+ include BarkingIguana::Benchmark
41
13
 
42
- def root_dir
43
- stage.directory
44
- end
14
+ def run
15
+ logger.debug { "Host tests: #{host_tests.inspect}" }
16
+ host_tests.each do |host, test_files|
17
+ command = "bundle exec ruby -S rspec -r #{spec_helper} #{test_files.join(' ')}"
18
+ c = Mixlib::ShellOut.new command, live_stream: logger, cwd: control_repo_dir, env: env_for(host)
19
+ benchmark command do
20
+ c.run_command
21
+ end
22
+ logger.info { "#{host.name} tests exited with status #{c.exitstatus}" }
23
+ c.error!
24
+ end
25
+ end
45
26
 
46
- def hosts
47
- stage.test.host_manager.all
48
- end
27
+ def env_for host
28
+ {
29
+ TARGET_HOST: host.ip_address,
30
+ TARGET_SSH_USER: host.ssh_username,
31
+ TARGET_SSH_KEY: host.ssh_key
32
+ }
33
+ end
49
34
 
50
- def host_tests
51
- hosts.inject({}) do |a,e|
52
- name = e.name
53
- glob = "#{root_dir}/{#{name}/**/*_,}spec.rb"
54
- logger.debug { "Host glob for #{name.inspect} = #{glob.inspect}" }
55
- tests = Dir.glob glob
56
- logger.debug { "Host tests for #{name.inspect} = #{tests.inspect}" }
57
- if !tests.empty?
58
- if e.state != 'running'
59
- raise "There are tests for #{name} in #{stage.stage_directory}, but the host is #{e.state}"
35
+ def host_tests
36
+ hosts.inject({}) do |a,e|
37
+ name = e.name
38
+ glob = "#{root_dir}/{#{name}/**/*_,}spec.rb"
39
+ logger.debug { "Host glob for #{name.inspect} = #{glob.inspect}" }
40
+ tests = Dir.glob glob
41
+ logger.debug { "Host tests for #{name.inspect} = #{tests.inspect}" }
42
+ if !tests.empty?
43
+ if e.state != 'running'
44
+ raise "There are tests for #{name} in #{stage.stage_directory}, but the host is #{e.state}"
45
+ end
46
+ a[e] = tests
47
+ end
48
+ a
60
49
  end
61
- a[e] = tests
62
50
  end
63
- a
51
+
52
+ def spec_helper
53
+ File.expand_path '../../../../resources/spec_helper.rb', __FILE__
54
+ end
55
+
56
+ def_delegator :stage, :test
57
+ def_delegator :stage, :stage_directory, :root_dir
58
+ def_delegator :test, :suite
59
+ def_delegator :suite, :control_directory, :control_repo_dir
60
+ def_delegator :test, :host_manager
61
+ def_delegator :host_manager, :all, :hosts
64
62
  end
65
63
  end
66
64
  end
@@ -1,6 +1,8 @@
1
1
  module BarkingIguana
2
2
  module Compound
3
3
  class Test
4
+ extend Forwardable
5
+
4
6
  attr_accessor :suite
5
7
  private :suite=
6
8
 
@@ -57,8 +59,7 @@ module BarkingIguana
57
59
 
58
60
  def host_manager
59
61
  @host_manger ||= begin
60
- # FIXME: Implement uniqueness operators on Host
61
- hosts = stages.map(&:hosts).flatten.uniq(&:ip_address).sort
62
+ hosts = stages.map(&:hosts).flatten.uniq.sort
62
63
  HostManager.new(hosts, driver_options)
63
64
  end
64
65
  end
@@ -97,9 +98,7 @@ module BarkingIguana
97
98
  test_file_with_fallback 'Vagrantfile.erb'
98
99
  end
99
100
 
100
- def hosts
101
- host_manager.all
102
- end
101
+ def_delegator :host_manager, :all, :hosts
103
102
  end
104
103
  end
105
104
  end
@@ -1,6 +1,8 @@
1
1
  module BarkingIguana
2
2
  module Compound
3
3
  class TestStage
4
+ extend Forwardable
5
+
4
6
  attr_accessor :test, :directory
5
7
 
6
8
  def initialize test, directory
@@ -88,14 +90,6 @@ module BarkingIguana
88
90
  end
89
91
  end
90
92
 
91
- def hosts
92
- original_inventory.hosts
93
- end
94
-
95
- def control_directory
96
- test.suite.control_directory
97
- end
98
-
99
93
  def ansible_verbosity
100
94
  return 2 unless ENV['ANSIBLE_VERBOSITY']
101
95
  ENV['ANSIBLE_VERBOSITY'].to_i
@@ -105,10 +99,6 @@ module BarkingIguana
105
99
  Ansible.playbook(playbook_path, run_from: control_directory).inventory(generated_inventory).stream_to(logger).verbosity(ansible_verbosity).diff
106
100
  end
107
101
 
108
- def suite
109
- test.suite
110
- end
111
-
112
102
  def setup
113
103
  desired_hosts = hosts.sort.map(&:name)
114
104
  logger.debug { "Desired hosts for #{display_name}: #{desired_hosts.join(', ')}" }
@@ -122,10 +112,6 @@ module BarkingIguana
122
112
  host_manager.shutdown *hosts_to_stop
123
113
  end
124
114
 
125
- def host_manager
126
- test.host_manager
127
- end
128
-
129
115
  def converge
130
116
  unless File.exists? playbook_path
131
117
  logger.debug { "Not running anything because #{playbook_path.inspect} does not exist" }
@@ -134,16 +120,18 @@ module BarkingIguana
134
120
  playbook.run
135
121
  ensure
136
122
  logger.debug { "Removing generated inventory from #{generated_inventory}" }
137
- # FileUtils.rm_r generated_inventory
138
- end
139
-
140
- def verify
141
- server_spec.run
123
+ FileUtils.rm_r generated_inventory
142
124
  end
143
125
 
144
126
  def server_spec
145
127
  @server_spec ||= ServerSpec.new(self)
146
128
  end
129
+
130
+ def_delegator :original_inventory, :hosts
131
+ def_delegator :test, :suite
132
+ def_delegator :test, :host_manager
133
+ def_delegator :suite, :control_directory
134
+ def_delegator :server_spec, :run, :verify
147
135
  end
148
136
  end
149
137
  end
@@ -1,111 +1,114 @@
1
- class Vagrant
2
- attr_accessor :manager
3
- private :manager=, :manager
4
-
5
- attr_accessor :vagrant_file_template_path
6
- private :vagrant_file_template_path=, :vagrant_file_template_path
7
-
8
- attr_accessor :root
9
- private :root=, :root
10
-
11
- attr_accessor :environment
12
- private :environment=, :environment
13
-
14
- def initialize manager, options = {}
15
- self.manager = manager
16
- self.vagrant_file_template_path = options[:vagrant_file_template_path] || File.expand_path('../../../../resources/Vagrantfile.erb', __FILE__)
17
- self.root = options[:root] || Dir.pwd
18
- self.environment = options[:environment] || {}
19
- end
1
+ module BarkingIguana
2
+ module Compound
3
+ class Vagrant
4
+ extend Forwardable
5
+ attr_accessor :manager
6
+ private :manager=, :manager
7
+
8
+ attr_accessor :vagrant_file_template_path
9
+ private :vagrant_file_template_path=, :vagrant_file_template_path
10
+
11
+ attr_accessor :root
12
+ private :root=, :root
13
+
14
+ attr_accessor :environment
15
+ private :environment=, :environment
16
+
17
+ def initialize manager, options = {}
18
+ self.manager = manager
19
+ self.vagrant_file_template_path = options[:vagrant_file_template_path] || File.expand_path('../../../../resources/Vagrantfile.erb', __FILE__)
20
+ self.root = options[:root] || Dir.pwd
21
+ self.environment = options[:environment] || {}
22
+ end
20
23
 
21
- include BarkingIguana::Logging::Helper
22
- include BarkingIguana::Benchmark
23
-
24
- {
25
- up: "",
26
- status: "",
27
- halt: "-f",
28
- destroy: "-f"
29
- }.each_pair do |command, always_args|
30
- define_method command do |*passed_args|
31
- logger.debug { "COMMAND: #{command.inspect}, PASSED_ARGS: #{passed_args.inspect}, ALWAYS_ARGS: #{always_args.inspect}" }
32
- merged_args = ([always_args] + passed_args).flatten.join(' ').strip
33
- logger.debug { "MERGED ARGS: #{merged_args.inspect}" }
34
- command_line = "/usr/local/bin/vagrant #{command} #{merged_args}".strip
35
- logger.debug { "COMMAND LINE: #{command_line.inspect}" }
36
- logger.debug { "COMMAND ENV: #{environment.inspect}" }
37
- c = Mixlib::ShellOut.new command_line, cwd: root, env: environment.to_h, live_stream: logger
38
- benchmark "running command #{command_line.inspect} in #{root.inspect} with env #{environment.to_h.inspect}" do
39
- c.run_command
24
+ include BarkingIguana::Logging::Helper
25
+ include BarkingIguana::Benchmark
26
+
27
+ {
28
+ up: "",
29
+ status: "",
30
+ halt: "-f",
31
+ destroy: "-f"
32
+ }.each_pair do |command, always_args|
33
+ define_method command do |*passed_args|
34
+ logger.debug { "COMMAND: #{command.inspect}, PASSED_ARGS: #{passed_args.inspect}, ALWAYS_ARGS: #{always_args.inspect}" }
35
+ merged_args = ([always_args] + passed_args).flatten.join(' ').strip
36
+ logger.debug { "MERGED ARGS: #{merged_args.inspect}" }
37
+ command_line = "/usr/local/bin/vagrant #{command} #{merged_args}".strip
38
+ logger.debug { "COMMAND LINE: #{command_line.inspect}" }
39
+ logger.debug { "COMMAND ENV: #{environment.inspect}" }
40
+ c = Mixlib::ShellOut.new command_line, cwd: root, env: environment.to_h, live_stream: logger
41
+ benchmark "running command #{command_line.inspect} in #{root.inspect} with env #{environment.to_h.inspect}" do
42
+ c.run_command
43
+ end
44
+ c.error!
45
+ c.stdout
46
+ end
40
47
  end
41
- c.error!
42
- c.stdout
43
- end
44
- end
45
48
 
46
- def write_vagrant_file
47
- logger.debug { "Writing Vagrantfile to #{vagrant_file_path}" }
48
- File.open vagrant_file_path, 'w' do |f|
49
- f.puts vagrant_file_content
50
- end
51
- end
49
+ def write_vagrant_file
50
+ logger.debug { "Writing Vagrantfile to #{vagrant_file_path}" }
51
+ File.open vagrant_file_path, 'w' do |f|
52
+ f.puts vagrant_file_content
53
+ end
54
+ end
52
55
 
53
- def assign_ip_addresses
54
- hosts.each do |h|
55
- next if valid_ip_address? h.ip_address
56
- ip_address = next_available_ip_address
57
- logger.debug { "Assigning #{h.name} an IP address: #{ip_address}" }
58
- h.assign_ip_address ip_address
59
- end
60
- end
56
+ def assign_ip_addresses
57
+ hosts.each do |h|
58
+ next if valid_ip_address? h.ip_address
59
+ ip_address = next_available_ip_address
60
+ logger.debug { "Assigning #{h.name} an IP address: #{ip_address}" }
61
+ h.assign_ip_address ip_address
62
+ end
63
+ end
61
64
 
62
- def prepare
63
- assign_ip_addresses
64
- write_vagrant_file
65
- end
65
+ def prepare
66
+ assign_ip_addresses
67
+ write_vagrant_file
68
+ end
66
69
 
67
- def vagrant_file_content
68
- ERB.new(vagrant_file_template).result binding
69
- end
70
+ def vagrant_file_content
71
+ ERB.new(vagrant_file_template).result binding
72
+ end
70
73
 
71
- def vagrant_file_template
72
- File.read vagrant_file_template_path
73
- end
74
+ def vagrant_file_template
75
+ File.read vagrant_file_template_path
76
+ end
74
77
 
75
- def vagrant_file_path
76
- File.join root, 'Vagrantfile'
77
- end
78
+ def vagrant_file_path
79
+ File.join root, 'Vagrantfile'
80
+ end
78
81
 
79
- def refresh_status
80
- current_status = status.split(/\n/)
81
- hosts.each do |host|
82
- current_status.each do |line|
83
- if line =~ /^#{host.name}\b/
84
- host.state = line.sub(host.name, '').sub('(virtualbox)', '').strip
82
+ def refresh_status
83
+ current_status = status.split(/\n/)
84
+ hosts.each do |host|
85
+ current_status.each do |line|
86
+ if line =~ /^#{host.name}\b/
87
+ host.state = line.sub(host.name, '').sub('(virtualbox)', '').strip
88
+ end
89
+ end
85
90
  end
86
91
  end
87
- end
88
- end
89
92
 
90
- private
93
+ private
91
94
 
92
- def hosts
93
- manager.hosts
94
- end
95
+ def_delegator :manager, :hosts
95
96
 
96
- def next_available_ip_address
97
- unassigned_ip_addresses.shift
98
- end
97
+ def next_available_ip_address
98
+ unassigned_ip_addresses.shift
99
+ end
99
100
 
100
- def valid_ip_address? ip_address
101
- ip_address =~ /^10\.8\./
102
- end
101
+ def valid_ip_address? ip_address
102
+ ip_address =~ /^10\.8\./
103
+ end
103
104
 
104
- def unassigned_ip_addresses
105
- @unassigned_ip_addresses ||= begin
106
- assignable_ip_addresses = (10..200).to_a.map { |dd| "10.8.42.#{dd}" }
107
- assigned_ip_addresses = hosts.map(&:ip_address)
108
- assignable_ip_addresses - assigned_ip_addresses
109
- end
105
+ def unassigned_ip_addresses
106
+ @unassigned_ip_addresses ||= begin
107
+ assignable_ip_addresses = (10..200).to_a.map { |dd| "10.8.42.#{dd}" }
108
+ assigned_ip_addresses = hosts.map(&:ip_address)
109
+ assignable_ip_addresses - assigned_ip_addresses
110
+ end
111
+ end
112
+ end
110
113
  end
111
114
  end
@@ -1,5 +1,5 @@
1
1
  module BarkingIguana
2
2
  module Compound
3
- VERSION = "0.1.7"
3
+ VERSION = "0.1.8"
4
4
  end
5
5
  end
@@ -2,6 +2,7 @@ require 'barking_iguana/logging'
2
2
  require 'barking_iguana/benchmark'
3
3
 
4
4
  require 'erb'
5
+ require 'forwardable'
5
6
  require 'mixlib/shellout'
6
7
  require 'hostlist_expression'
7
8
  require 'oj'
@@ -8,7 +8,7 @@ Vagrant.configure(2) do |config|
8
8
  <% hosts.each do |host| %>
9
9
  config.vm.define "<%= host.name %>" do |this|
10
10
  this.vm.hostname = "<%= host.name %>"
11
- this.vm.network "private_network", ip: "<%= host.uri %>"
11
+ this.vm.network "private_network", ip: "<%= host.ip_address %>"
12
12
  end
13
13
  <% end %>
14
14
 
@@ -0,0 +1,6 @@
1
+ require 'serverspec'
2
+ require 'rspec/wait'
3
+
4
+ set :backend, :ssh
5
+ set :host, ENV['TARGET_HOST']
6
+ set :ssh_options, user: ENV['TARGET_SSH_USER'], keys: [ENV['TARGET_SSH_KEY']]
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: barking_iguana-compound
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Craig R Webster
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-01-06 00:00:00.000000000 Z
11
+ date: 2017-01-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -184,6 +184,13 @@ files:
184
184
  - docs/TODO.md
185
185
  - docs/_config.yml
186
186
  - docs/index.md
187
+ - examples/simple/Gemfile
188
+ - examples/simple/Gemfile.lock
189
+ - examples/simple/Rakefile
190
+ - examples/simple/test/compound/simple/000-setup/example-host/example_spec.rb
191
+ - examples/simple/test/compound/simple/000-setup/playbook.yml
192
+ - examples/simple/test/compound/simple/Vagrantfile
193
+ - examples/simple/test/compound/simple/inventory
187
194
  - exe/compound
188
195
  - lib/barking_iguana/compound.rb
189
196
  - lib/barking_iguana/compound/ansible.rb
@@ -203,6 +210,7 @@ files:
203
210
  - lib/barking_iguana/compound/vagrant.rb
204
211
  - lib/barking_iguana/compound/version.rb
205
212
  - resources/Vagrantfile.erb
213
+ - resources/spec_helper.rb
206
214
  homepage: https://github.com/barkingiguana/compound
207
215
  licenses: []
208
216
  metadata:
@@ -223,7 +231,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
223
231
  version: '0'
224
232
  requirements: []
225
233
  rubyforge_project:
226
- rubygems_version: 2.5.2
234
+ rubygems_version: 2.4.5.1
227
235
  signing_key:
228
236
  specification_version: 4
229
237
  summary: Compound testing of Ansible playbooks