Class: TestLab::Provisioner::Chef::RubyGemClient
- Inherits:
-
Object
- Object
- TestLab::Provisioner::Chef::RubyGemClient
- Defined in:
- lib/testlab/provisioners/chef/ruby_gem_client.rb
Overview
RubyGemClient Provisioner Class
Instance Method Summary collapse
-
#initialize(config = {}, ui = nil) ⇒ RubyGemClient
constructor
A new instance of RubyGemClient.
-
#on_container_deprovision(container) ⇒ Boolean
RubyGemClient: Container Deprovision.
-
#on_container_provision(container) ⇒ Boolean
RubyGemClient: Container Provision.
Constructor Details
#initialize(config = {}, ui = nil) ⇒ RubyGemClient
Returns a new instance of RubyGemClient.
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/testlab/provisioners/chef/ruby_gem_client.rb', line 13 def initialize(config={}, ui=nil) @config = (config || Hash.new) @ui = (ui || TestLab.ui) @config[:chef] ||= Hash.new @config[:chef][:client] ||= Hash.new @config[:chef][:client][:attach_to_container] ||= %(chef-server) @config[:chef][:client][:version] ||= %(10.24.0) @config[:chef][:client][:log_level] ||= :info @config[:chef][:client][:attributes] ||= Hash.new @chef_server = TestLab::Container.first(@config[:chef][:client][:attach_to_container]) @config[:chef][:client][:server_url] ||= %(https://#{@chef_server.ip}) @ui.logger.debug { "config(#{@config.inspect})" } end |
Instance Method Details
#on_container_deprovision(container) ⇒ Boolean
RubyGemClient: Container Deprovision
62 63 64 65 66 67 68 69 |
# File 'lib/testlab/provisioners/chef/ruby_gem_client.rb', line 62 def on_container_deprovision(container) if @chef_server.state == :running @chef_server.exec(%(knife node delete #{container.id} --yes), :ignore_exit_status => true) @chef_server.exec(%(knife client delete #{container.id} --yes), :ignore_exit_status => true) end true end |
#on_container_provision(container) ⇒ Boolean
RubyGemClient: Container Provision
Renders the defined script to a temporary file on the target container and proceeds to execute said script as root via lxc-attach.
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/testlab/provisioners/chef/ruby_gem_client.rb', line 39 def on_container_provision(container) @config[:chef][:client][:node_name] ||= container.id rubygem_client_template = File.join(TestLab::Provisioner::Chef.template_dir, 'ruby_gem_client.erb') config = {}.merge!({ :chef_client_cli => chef_client_cli(container), :chef_client_rb => chef_client_rb(container), :validation_pem => validation_pem, :sudo_user => container.primary_user.username, :sudo_uid => container.primary_user.uid, :sudo_gid => container.primary_user.gid, :home_dir => container.primary_user.home_dir }).merge!(@config) container.bootstrap(ZTK::Template.render(rubygem_client_template, config)) true end |