A Test Kitchen Provisioner that generates searchable Nodes.
The nodes provisioner extends the chef-zero
provisioner along with all of its functionality and configuration. chef-zero
can support chef searches by querying against node data stored in json files inside of the kitchen nodes
folder. The kitchen-nodes
plugin automatically generates a node file when a test instance is provisioned by test-kitchen.
{
"id": "server-community-ubuntu-1204",
"automatic": {
"ipaddress": "172.17.0.8",
"platform": "ubuntu"
},
"run_list": [
"recipe[apt]",
"recipe[couchbase-tests::ipaddress]",
"recipe[couchbase::server]",
"recipe[export-node]"
]
}
{
"id": "second-node-ubuntu-1204",
"automatic": {
"ipaddress": "172.17.0.9",
"platform": "ubuntu"
},
"run_list": [
"recipe[apt]",
"recipe[couchbase-tests::ipaddress]",
"recipe[couchbase-tests::default]",
"recipe[export-node]"
]
}
Please read the Driver usage page for more details.
Use nodes
instead of chef-zero
for the kitchen provisioner name.
provisioner:
name: nodes
Using kitchen-nodes
one can expect all previously converged nodes to be represented in a node file and be searchable. For example consider this scenario looking for a primary node in a cluster in order to add a node to join:
require 'timeout'
def search_for_nodes(query, timeout = 120)
nodes = []
Timeout::timeout(timeout) do
nodes = search(:node, query)
until nodes.count > 0 && nodes[0].has_key?('ipaddress')
sleep 5
nodes = search(:node, query)
end
end
if nodes.count == 0 || !nodes[0].has_key?('ipaddress')
raise "Unable to find nodes!"
end
nodes
end
primary = search_for_nodes("run_list:*couchbase??server* AND platform:#{node['platform']}")
node.normal["couchbase-tests"]["primary_ip"] = primary[0]['ipaddress']
- Source hosted at GitHub
- Report issues/questions/feature requests on GitHub Issues
Pull requests are very welcome! Make sure your patches are well tested. Ideally create a topic branch for every separate change you make. For example:
- Fork the repo
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Added some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request
Created and maintained by Matt Wrock ([email protected])
Apache 2.0 (see LICENSE)