fhcap-cli 0.4.9 → 0.4.10
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/CHANGELOG.md +13 -0
- data/Dockerfile +37 -0
- data/entrypoint.sh +11 -0
- data/fhcap-cli.gemspec +9 -4
- data/lib/cookbooks/provision/libraries/provision.rb +16 -2
- data/lib/cookbooks/provision/recipes/ssh.rb +25 -0
- data/lib/cookbooks/provision/recipes/ssh_cluster_create.rb +4 -0
- data/lib/cookbooks/provision/recipes/ssh_cluster_destroy.rb +4 -0
- data/lib/extensions/thor/actions.rb +33 -0
- data/lib/fhcap.rb +2 -2
- data/lib/fhcap/dns.rb +3 -3
- data/lib/fhcap/kitchen.rb +65 -16
- data/lib/fhcap/knife_helper.rb +1 -2
- data/lib/fhcap/providers_helper.rb +1 -0
- data/lib/fhcap/repos_helper.rb +1 -1
- data/lib/fhcap/tasks/chef/cookbook/update_config.rb +0 -1
- data/lib/fhcap/tasks/dns/aws/create_record.rb +81 -0
- data/lib/fhcap/tasks/dns/aws/delete_record.rb +57 -0
- data/lib/fhcap/tasks/dns/aws/list_records.rb +34 -0
- data/lib/fhcap/tasks/dns/{route53_helper.rb → aws/route53_helper.rb} +1 -1
- data/lib/fhcap/tasks/dns/create_record.rb +5 -67
- data/lib/fhcap/tasks/dns/delete_record.rb +5 -43
- data/lib/fhcap/tasks/dns/list_records.rb +25 -0
- data/lib/fhcap/thor_base.rb +5 -0
- data/lib/fhcap/version.rb +1 -1
- data/spec/fhcap/tasks/dns/{create_record_spec.rb → aws/create_record_spec.rb} +4 -4
- data/spec/fhcap/tasks/dns/{delete_record_spec.rb → aws/delete_record_spec.rb} +4 -4
- data/templates/chef/environment_mbaas.json.erb +32 -2
- data/templates/chef/environment_single.json.erb +8 -0
- data/templates/cluster/aws/farm-5node.json.erb +245 -0
- data/templates/cluster/farm-5node.json.erb +8 -0
- data/templates/cluster/openstack/farm-5node.json.erb +20 -0
- data/templates/kitchen/Dockerfile-rhel +23 -0
- data/templates/kitchen/Vagrantfile-osx.rb +10 -0
- data/templates/kitchen/docker_id_rsa +27 -0
- data/templates/kitchen/docker_id_rsa.pub +1 -0
- data/templates/kitchen/kitchen.aws.yml.erb +37 -14
- data/templates/kitchen/kitchen.docker.yml.erb +34 -1
- data/templates/kitchen/kitchen.vagrant.yml.erb +39 -3
- metadata +86 -14
- data/lib/fhcap/tasks/dns/list.rb +0 -37
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1b016a16a0016627aec93bbdfc076803d288ee32
|
4
|
+
data.tar.gz: d33df34b6a28e16b580c6399f1a748295a0e9a8a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2926b8a7452e6faac59e8559e91189f37950a34138abeb258623898ec934d6beb91fbb23f4b12dfb72fa779244f636b321fcd7e2204a0331e7a050fd7d49074b
|
7
|
+
data.tar.gz: d1b00a5098e14a1fdea3284a0a3d47f72a2254699763a63dc8692c826eca3b4f75eda6e85eb447546a63477f5a6980101968f7660390aa637d076b45b90797a7
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,19 @@
|
|
1
1
|
|
2
2
|
## Unreleased
|
3
3
|
|
4
|
+
## 0.4.10
|
5
|
+
|
6
|
+
* Disable the dynovm bind9 cache in all single node environments by default.
|
7
|
+
* [RHMAP-11771] - Fix kitchen generate using a role (fhcap kitchen generate -r fhcap -d vagrant).
|
8
|
+
* Add ability to override test suite directory via an env var (TEST_SUITE_DIR=/tmp fhcap kitchen generate).
|
9
|
+
* Use purge option on knife download command and stop manually deleting local files.
|
10
|
+
* Pin nokogiri gem to version 1.6.8.1 (Can be removed when we require a ruby version >= 2.1.0)
|
11
|
+
* [RHMAP-11675] - Add low level chef provisioning ssh provider. Note: This does not include generate support for the 'ssh' provider type.
|
12
|
+
* [RHMAP-11546] - Update kitchen config templates to include additional platforms (centos-6.5 and macosx-10.10 ).
|
13
|
+
* Ensure all thor errors result in a non zero exit status. Optionally allow run commands to exit on failure and update kitchen commands to exit on failure with non zero status.
|
14
|
+
* [RHMAP-11003] - Update kitchen config templates to include all supported platforms (rhel-7.2, centos-7 and ubuntu-12.04 ).
|
15
|
+
* [RHMAP-11001] - Updated test kitchen generation task to use the contents of the cookbook under tests kitchen.yml when generating the platforms section of the kitchen config.
|
16
|
+
|
4
17
|
## 0.4.9
|
5
18
|
|
6
19
|
* [RHMAP-9021] - Add support for longer AWS Instance and ELB Ids (Patched with upstream changes made in chef-provisioning-aws gem)
|
data/Dockerfile
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
FROM ruby:2.3
|
2
|
+
|
3
|
+
# Consumed by atomic cli: http://www.projectatomic.io/docs/usr-bin-atomic/
|
4
|
+
# E.g. atomic run tools/fhcap cluster list # where the image name is tools/fhcap
|
5
|
+
LABEL RUN="docker run -ti --rm -e LOCAL_USER_ID=\$SUDO_UID -v "\$HOME"/fhcapd:/home/fh/fhcap -v "\$HOME"/fhcap/repos:/home/fh/fhcap/repos -v "\$HOME"/src/fheng:/home/fh/fhcap/src -v "\$HOME"/.ssh:/home/fh/.ssh IMAGE"
|
6
|
+
|
7
|
+
WORKDIR /usr/src/app
|
8
|
+
|
9
|
+
RUN curl -sSL https://get.docker.com/ | sh
|
10
|
+
|
11
|
+
RUN apt-get update && apt-get -y --no-install-recommends install \
|
12
|
+
ca-certificates \
|
13
|
+
curl
|
14
|
+
|
15
|
+
RUN gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4
|
16
|
+
RUN curl -o /usr/local/bin/gosu -SL "https://github.com/tianon/gosu/releases/download/1.4/gosu-$(dpkg --print-architecture)" \
|
17
|
+
&& curl -o /usr/local/bin/gosu.asc -SL "https://github.com/tianon/gosu/releases/download/1.4/gosu-$(dpkg --print-architecture).asc" \
|
18
|
+
&& gpg --verify /usr/local/bin/gosu.asc \
|
19
|
+
&& rm /usr/local/bin/gosu.asc \
|
20
|
+
&& chmod +x /usr/local/bin/gosu
|
21
|
+
|
22
|
+
COPY Gemfile* fhcap-cli.gemspec /usr/src/app/
|
23
|
+
COPY bin/fhcap /usr/src/app/bin/
|
24
|
+
COPY lib/fhcap/version.rb /usr/src/app/lib/fhcap/
|
25
|
+
|
26
|
+
RUN gem install bundler && \
|
27
|
+
bundle install
|
28
|
+
|
29
|
+
COPY . /usr/src/app
|
30
|
+
|
31
|
+
RUN chmod 777 /usr/src/app/Gemfile.lock
|
32
|
+
|
33
|
+
VOLUME /home/fh/fhcap /home/fh/fhcap/repos /home/fh/fhcap/src /home/fh/.ssh
|
34
|
+
|
35
|
+
COPY entrypoint.sh /usr/local/bin/entrypoint.sh
|
36
|
+
|
37
|
+
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
|
data/entrypoint.sh
ADDED
data/fhcap-cli.gemspec
CHANGED
@@ -16,10 +16,12 @@ Gem::Specification.new do |spec|
|
|
16
16
|
spec.required_rubygems_version = '>= 2.6.3'
|
17
17
|
|
18
18
|
spec.files = `git ls-files -z`.split("\x0")
|
19
|
-
spec.
|
19
|
+
spec.bindir = "bin"
|
20
|
+
spec.executables = %w{fhcap}
|
20
21
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
21
22
|
spec.require_paths = ["lib"]
|
22
23
|
|
24
|
+
spec.add_dependency 'nokogiri', '= 1.6.8.1'
|
23
25
|
spec.add_dependency 'thor', '= 0.19.1'
|
24
26
|
spec.add_dependency 'sshkey', '= 1.6.1'
|
25
27
|
spec.add_dependency 'public_suffix', '= 1.5.2'
|
@@ -33,16 +35,19 @@ Gem::Specification.new do |spec|
|
|
33
35
|
spec.add_dependency 'java_properties', '= 0.0.4'
|
34
36
|
spec.add_dependency 'archive-tar-minitar', '= 0.5.2'
|
35
37
|
spec.add_dependency 'aws-sdk', '= 2.1.35'
|
38
|
+
spec.add_dependency 'ffi-yajl', '= 2.2.3'
|
39
|
+
spec.add_dependency 'rack', '= 1.6.4'
|
36
40
|
spec.add_dependency 'chef', '= 12.4.3'
|
37
41
|
spec.add_dependency 'chef-provisioning', '= 1.4.1'
|
38
42
|
spec.add_dependency 'chef-provisioning-aws', '= 1.4.1'
|
39
43
|
spec.add_dependency 'chef-provisioning-vagrant', '= 0.10.0'
|
40
44
|
spec.add_dependency 'chef-provisioning-fog', '= 0.15.0'
|
45
|
+
spec.add_dependency 'chef-provisioning-ssh', '= 0.0.9'
|
41
46
|
spec.add_dependency 'test-kitchen', '= 1.4.2'
|
42
47
|
spec.add_dependency 'kitchen-sync', '= 2.1.1'
|
43
|
-
spec.add_dependency 'kitchen-vagrant', '= 0.
|
44
|
-
spec.add_dependency 'kitchen-ec2', '=
|
45
|
-
spec.add_dependency 'kitchen-docker', '= 2.
|
48
|
+
spec.add_dependency 'kitchen-vagrant', '= 0.16.0'
|
49
|
+
spec.add_dependency 'kitchen-ec2', '= 1.2.0'
|
50
|
+
spec.add_dependency 'kitchen-docker', '= 2.6.0'
|
46
51
|
spec.add_dependency 'kitchen-openstack','= 1.8.1'
|
47
52
|
|
48
53
|
spec.add_development_dependency "rake", "~> 10.0"
|
@@ -88,7 +88,21 @@ def openstack_bootstrap_options(org_name, environment, instance_options)
|
|
88
88
|
end
|
89
89
|
|
90
90
|
def openstack_converge_options(org_name, environment, instance_options)
|
91
|
-
{:chef_version => '11.10.4', :ohai_hints => {
|
91
|
+
{:chef_version => '11.10.4', :ohai_hints => {:openstack => {}}}
|
92
|
+
end
|
93
|
+
|
94
|
+
#SSH
|
95
|
+
|
96
|
+
def ssh_machine_options(org_name, environment, instance_name, instance_options)
|
97
|
+
{}
|
98
|
+
end
|
99
|
+
|
100
|
+
def ssh_bootstrap_options(org_name, environment, instance_options)
|
101
|
+
{}
|
102
|
+
end
|
103
|
+
|
104
|
+
def ssh_converge_options(org_name, environment, instance_options)
|
105
|
+
{:chef_version => '11.10.4'}
|
92
106
|
end
|
93
107
|
|
94
108
|
def key_pair_name_for(name)
|
@@ -146,7 +160,7 @@ def with_cluster_config(node, &block)
|
|
146
160
|
block.call cluster_config
|
147
161
|
end
|
148
162
|
|
149
|
-
def with_cluster_instances(node,
|
163
|
+
def with_cluster_instances(node, &block)
|
150
164
|
env_regexp = node[:'env-regexp'] || '.'
|
151
165
|
node_regexp = node[:'node-regexp'] || '.'
|
152
166
|
with_cluster_config(node) do |cluster_config|
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'chef/provisioning/ssh_driver'
|
2
|
+
|
3
|
+
cluster_config = cluster_config_for(node)
|
4
|
+
org_name = cluster_config[:id]
|
5
|
+
|
6
|
+
repo_dir_name = File.basename(node[:local_repo_path])
|
7
|
+
tmp_repo_dir = File.join('/tmp', repo_dir_name)
|
8
|
+
|
9
|
+
link tmp_repo_dir do
|
10
|
+
to node[:local_repo_path]
|
11
|
+
end
|
12
|
+
|
13
|
+
node.override[:local_repo_path] = tmp_repo_dir
|
14
|
+
|
15
|
+
repo_ssh_nodes_dir = File.join(node[:local_repo_path], node[:local_repo_clusters_dir], 'ssh_nodes')
|
16
|
+
local_key_pairs_dir = File.join(node[:local_repo_path], node[:local_repo_clusters_dir], 'key_pairs')
|
17
|
+
key_pair_name = key_pair_name_for(org_name)
|
18
|
+
|
19
|
+
node.default[:machine_options][:transport_options]['ssh_options']['keys'] = [File.join(local_key_pairs_dir, "#{key_pair_name}.pem")]
|
20
|
+
|
21
|
+
directory repo_ssh_nodes_dir do
|
22
|
+
recursive true
|
23
|
+
end
|
24
|
+
|
25
|
+
with_driver "ssh:#{repo_ssh_nodes_dir}"
|
@@ -0,0 +1,33 @@
|
|
1
|
+
class Thor
|
2
|
+
module Actions
|
3
|
+
def run(command, config = {})
|
4
|
+
return unless behavior == :invoke
|
5
|
+
|
6
|
+
destination = relative_to_original_destination_root(destination_root, false)
|
7
|
+
desc = "#{command} from #{destination.inspect}"
|
8
|
+
|
9
|
+
if config[:with]
|
10
|
+
desc = "#{File.basename(config[:with].to_s)} #{desc}"
|
11
|
+
command = "#{config[:with]} #{command}"
|
12
|
+
end
|
13
|
+
|
14
|
+
say_status :run, desc, config.fetch(:verbose, true)
|
15
|
+
|
16
|
+
unless options[:pretend]
|
17
|
+
if config[:capture]
|
18
|
+
result = `#{command}`
|
19
|
+
status = $?.exitstatus
|
20
|
+
else
|
21
|
+
result = system("#{command}")
|
22
|
+
status = result ? 0 : 1
|
23
|
+
end
|
24
|
+
|
25
|
+
if config[:exit_on_failure]
|
26
|
+
status == 0 or exit status
|
27
|
+
end
|
28
|
+
|
29
|
+
result
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
data/lib/fhcap.rb
CHANGED
@@ -3,7 +3,7 @@ require "pathname"
|
|
3
3
|
|
4
4
|
module Fhcap
|
5
5
|
GEM_DIR = File.expand_path '..', File.dirname(__FILE__)
|
6
|
-
TEMPLATE_NAMES = %w{single core-3node mbaas-3node core-mbaas-6node core-small-9node nginx-test single-blank farm-3node farm-single ose-single}.sort
|
6
|
+
TEMPLATE_NAMES = %w{single core-3node mbaas-3node core-mbaas-6node core-small-9node nginx-test single-blank farm-3node farm-5node farm-single ose-single}.sort
|
7
7
|
|
8
8
|
class << self
|
9
9
|
def source_root
|
@@ -11,4 +11,4 @@ module Fhcap
|
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
14
|
-
end
|
14
|
+
end
|
data/lib/fhcap/dns.rb
CHANGED
@@ -51,10 +51,10 @@ module Fhcap
|
|
51
51
|
desc "list", "List DNS Records"
|
52
52
|
|
53
53
|
def list
|
54
|
-
require "fhcap/tasks/dns/
|
55
|
-
Tasks::Dns::
|
54
|
+
require "fhcap/tasks/dns/list_records"
|
55
|
+
Tasks::Dns::ListRecords.new(task_options(options.dup)).run
|
56
56
|
end
|
57
57
|
|
58
58
|
end
|
59
59
|
end
|
60
|
-
end
|
60
|
+
end
|
data/lib/fhcap/kitchen.rb
CHANGED
@@ -3,6 +3,7 @@ require 'fhcap/thor_base'
|
|
3
3
|
|
4
4
|
require 'pathname'
|
5
5
|
require 'yaml'
|
6
|
+
require 'deep_merge'
|
6
7
|
|
7
8
|
module Fhcap
|
8
9
|
module CLI
|
@@ -29,7 +30,7 @@ module Fhcap
|
|
29
30
|
|
30
31
|
def generate
|
31
32
|
require 'chef'
|
32
|
-
cookbooks = get_cookbooks(options,
|
33
|
+
cookbooks = get_cookbooks(options, [], repo_cookbook_paths('-cookbooks'))
|
33
34
|
roles = options[:roles] || []
|
34
35
|
driver = options[:driver]
|
35
36
|
provisioner = options[:provisioner]
|
@@ -53,6 +54,15 @@ module Fhcap
|
|
53
54
|
cookbook_kitchen_yaml = File.join(meta.root_dir, ".kitchen.yml")
|
54
55
|
if File.exists? cookbook_kitchen_yaml
|
55
56
|
cookbook_kitchen_config = YAML.load_file(cookbook_kitchen_yaml)
|
57
|
+
|
58
|
+
if cookbook_kitchen_config['platforms']
|
59
|
+
cookbook_kitchen_config['platforms'].map! do |platform|
|
60
|
+
default_values = kitchen_config['platforms'].detect {|f| f["name"] == platform['name']} || {}
|
61
|
+
default_values.merge(platform)
|
62
|
+
end
|
63
|
+
kitchen_config['platforms'] = cookbook_kitchen_config['platforms']
|
64
|
+
end
|
65
|
+
|
56
66
|
cookbook_kitchen_config['suites'].each do |suite|
|
57
67
|
suite['name'] = "#{suite['name']}_#{cookbook}"
|
58
68
|
suite['run_list'].unshift 'recipe[feedhenry_utils::kitchen_docker]' if driver == 'docker'
|
@@ -87,22 +97,46 @@ module Fhcap
|
|
87
97
|
if File.exists? role_file
|
88
98
|
::Chef::Config[:role_path] = File.join(repo_dir(:fhcap), 'roles')
|
89
99
|
role = ::Chef::Role.from_disk r
|
90
|
-
run_list = role.run_list.expand('development')
|
100
|
+
run_list = role.run_list.expand('development', 'disk')
|
91
101
|
|
92
102
|
role_cookbooks = run_list.recipes.collect do |recipe|
|
93
103
|
recipe.split('::').first
|
94
104
|
end.compact.uniq
|
95
105
|
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
106
|
+
suite_attributes = {}
|
107
|
+
suite_run_list = []
|
108
|
+
suite_run_list << 'recipe[feedhenry_utils::kitchen_docker]' if driver == 'docker'
|
109
|
+
suite_run_list << 'recipe[apt::default]'
|
110
|
+
suite_run_list << 'recipe[chef-solo-search]' if provisioner == 'chef_solo'
|
111
|
+
suite_run_list << 'role[test-kitchen_server]'
|
112
|
+
suite_run_list << "role[#{r}]"
|
100
113
|
|
101
114
|
role_cookbooks.each do |c|
|
102
115
|
get_cookbook_deps(c, cookbook_dependencies, {cwd: test_suite_dir})
|
116
|
+
meta = cookbook_loader.cookbooks_by_name[c]
|
117
|
+
if meta
|
118
|
+
cookbook_kitchen_yaml = File.join(meta.root_dir, ".kitchen.yml")
|
119
|
+
if File.exists? cookbook_kitchen_yaml
|
120
|
+
cookbook_kitchen_config = YAML.load_file(cookbook_kitchen_yaml)
|
121
|
+
default_values = cookbook_kitchen_config['suites'].detect {|f| f["name"] == 'default'} || {}
|
122
|
+
default_attributes = default_values['attributes'] || {}
|
123
|
+
suite_attributes.deep_merge!(default_attributes)
|
124
|
+
end
|
125
|
+
end
|
103
126
|
end
|
104
127
|
|
105
|
-
|
128
|
+
# The env overrides in some of the wrapper cookbooks cause issues when using roles, for now we will just remove them entirely.
|
129
|
+
if suite_attributes['feedhenry_common']
|
130
|
+
suite_attributes['feedhenry_common'].delete('env')
|
131
|
+
end
|
132
|
+
|
133
|
+
suite = {}
|
134
|
+
suite['name'] = "default_#{r}"
|
135
|
+
suite['run_list'] = suite_run_list
|
136
|
+
suite['attributes'] = suite_attributes
|
137
|
+
kitchen_config['suites'] << suite
|
138
|
+
|
139
|
+
link_cookbook_tests(role_cookbooks, options, r, 'default')
|
106
140
|
|
107
141
|
else
|
108
142
|
say "Unknown Role #{role_file}"
|
@@ -117,6 +151,15 @@ module Fhcap
|
|
117
151
|
|
118
152
|
#3. Configure tests
|
119
153
|
link_cookbook_tests(cookbooks, options)
|
154
|
+
|
155
|
+
#4. Add custom driver config
|
156
|
+
if driver == 'docker'
|
157
|
+
template(File.join("templates", "kitchen", "Dockerfile-rhel"), File.join(test_suite_dir, "Dockerfile-rhel"), {}, :force => true)
|
158
|
+
template(File.join("templates", "kitchen", "docker_id_rsa"), File.join(test_suite_dir, "docker_id_rsa"), {}, :force => true)
|
159
|
+
template(File.join("templates", "kitchen", "docker_id_rsa.pub"), File.join(test_suite_dir, "docker_id_rsa.pub"), {}, :force => true)
|
160
|
+
elsif driver == 'vagrant'
|
161
|
+
template(File.join("templates", "kitchen", "Vagrantfile-osx.rb"), File.join(test_suite_dir, "Vagrantfile-osx.rb"), {}, :force => true)
|
162
|
+
end
|
120
163
|
end
|
121
164
|
|
122
165
|
desc "clean", "Clean"
|
@@ -137,10 +180,11 @@ module Fhcap
|
|
137
180
|
kitchen_options = options[:'kitchen-options'] || {}
|
138
181
|
Fhcap::CLI::Kitchen.new.invoke(:generate, [], options) if options[:cookbooks] || options[:modified] || options[:roles]
|
139
182
|
if is_kitchen_generated?
|
140
|
-
|
183
|
+
tsd = test_suite_dir
|
184
|
+
Dir.chdir tsd do
|
141
185
|
cmd_options = options.dup
|
142
186
|
cmd_options['instance'] = instance
|
143
|
-
cmd_options['kitchen-yaml'] = test_suite_kitchen_yml
|
187
|
+
cmd_options['kitchen-yaml'] = test_suite_kitchen_yml(tsd)
|
144
188
|
cmd_options['kitchen-options'] = kitchen_options_for(
|
145
189
|
default_kitchen_options.merge(
|
146
190
|
{:'log-level' => options[:'log-level']}
|
@@ -173,11 +217,11 @@ module Fhcap
|
|
173
217
|
end
|
174
218
|
|
175
219
|
def test_suite_dir
|
176
|
-
File.join(config.default_dir, 'tmp', 'kitchen')
|
220
|
+
ENV['TEST_SUITE_DIR'] ? File.expand_path(ENV['TEST_SUITE_DIR']) : File.join(config.default_dir, 'tmp', 'kitchen')
|
177
221
|
end
|
178
222
|
|
179
|
-
def test_suite_kitchen_yml
|
180
|
-
File.join(
|
223
|
+
def test_suite_kitchen_yml(tsd=test_suite_dir)
|
224
|
+
File.join(tsd, 'kitchen.yml')
|
181
225
|
end
|
182
226
|
|
183
227
|
def is_kitchen_generated?
|
@@ -194,7 +238,7 @@ module Fhcap
|
|
194
238
|
end
|
195
239
|
end
|
196
240
|
|
197
|
-
def link_cookbook_tests(cookbooks, options, role=nil)
|
241
|
+
def link_cookbook_tests(cookbooks, options, role=nil, suite='.', type='.')
|
198
242
|
tests_parent_dir = File.join(test_suite_dir, 'test', 'integration')
|
199
243
|
test_helpers_dir = File.join(repo_dir(:fhcap), 'test', 'helpers')
|
200
244
|
|
@@ -205,10 +249,15 @@ module Fhcap
|
|
205
249
|
cookbook_test_suite_dir = File.join(cookbook_dir, '/test/integration')
|
206
250
|
|
207
251
|
if Dir.exists? cookbook_test_suite_dir
|
208
|
-
|
252
|
+
#feedhenry_common/test/integration
|
253
|
+
|
254
|
+
Dir.entries(cookbook_test_suite_dir).select { |f| !File.directory? f }.select { |f| f =~ /#{suite}/ }.each() do |test_suite|
|
255
|
+
#default
|
209
256
|
|
210
257
|
cookbook_test_dir = File.join(cookbook_test_suite_dir, test_suite)
|
211
|
-
Dir.entries(cookbook_test_dir).select { |f| !File.directory? f }.each() do |test_type|
|
258
|
+
Dir.entries(cookbook_test_dir).select { |f| !File.directory? f }.select { |f| f =~ /#{type}/ }.each() do |test_type|
|
259
|
+
#serverspec
|
260
|
+
|
212
261
|
tests_dir = File.join(tests_parent_dir, "#{test_suite}_#{role || cookbook}")
|
213
262
|
|
214
263
|
test_type_dir = "#{tests_dir}/#{test_type}"
|
@@ -250,7 +299,7 @@ module Fhcap
|
|
250
299
|
end
|
251
300
|
|
252
301
|
def run_cmd(cmd, options)
|
253
|
-
run(cmd)
|
302
|
+
run(cmd, exit_on_failure: true)
|
254
303
|
end
|
255
304
|
|
256
305
|
end
|
data/lib/fhcap/knife_helper.rb
CHANGED
@@ -80,8 +80,6 @@ module Fhcap
|
|
80
80
|
block.call
|
81
81
|
ensure
|
82
82
|
thor.say "[Chef Zero Server] - Syncing nodes to #{local_repo}"
|
83
|
-
FileUtils.rm_rf(File.join(local_repo, 'nodes'))
|
84
|
-
FileUtils.rm_rf Dir.glob(File.join(local_repo, 'data_bags/aws_*'))
|
85
83
|
knife_download(local_repo, 'local', ['/nodes'])
|
86
84
|
knife_download(local_repo, 'local', ['/data_bags/aws_*'])
|
87
85
|
end
|
@@ -116,6 +114,7 @@ module Fhcap
|
|
116
114
|
knife_command.config[:chef_repo_path] = repo
|
117
115
|
knife_command.configure_chef
|
118
116
|
knife_command.config[:recurse] = true
|
117
|
+
knife_command.config[:purge] = true
|
119
118
|
knife_command.run
|
120
119
|
end
|
121
120
|
end
|