Class: Shell::DoppelGangerClient

Inherits:
Chef::Client show all
Defined in:
lib/chef/shell/shell_session.rb

Constant Summary

Constants inherited from Chef::Client

Chef::Client::STDERR_FD, Chef::Client::STDOUT_FD

Instance Attribute Summary collapse

Attributes inherited from Chef::Client

#events, #json_attribs, #ohai, #rest, #rest_clean, #run_status, #runner

Instance Method Summary collapse

Methods inherited from Chef::Client

clear_notifications, #configure_event_loggers, #configure_formatters, #converge, #converge_and_save, #default_formatter, #do_windows_admin_check, #expanded_run_list, #formatters_for_run, #load_node, #load_required_recipe, #node, #node=, #policy_builder, #register_reporters, #run, #run_audits, #run_completed_successfully, run_completed_successfully_notifications, #run_failed, run_failed_notifications, run_start_notifications, #run_started, #save_updated_node, #setup_run_context, #sync_cookbooks, when_run_completes_successfully, when_run_fails, when_run_starts

Methods included from Chef::Mixin::Deprecation

#deprecated_attr, #deprecated_attr_reader, #deprecated_attr_writer, #deprecated_ivar

Methods included from Chef::Mixin::PathSanity

#enforce_path_sanity, #sanitized_path

Constructor Details

#initialize(node_name) ⇒ DoppelGangerClient


240
241
242
243
# File 'lib/chef/shell/shell_session.rb', line 240

def initialize(node_name)
  @node_name = node_name
  @ohai = Ohai::System.new
end

Instance Attribute Details

#node_nameObject (readonly)

Returns the value of attribute node_name


238
239
240
# File 'lib/chef/shell/shell_session.rb', line 238

def node_name
  @node_name
end

Instance Method Details

#build_nodeObject

DoppelGanger implementation of build_node. preserves as many of the node's attributes, and does not save updates to the server


253
254
255
256
257
258
259
260
261
262
263
# File 'lib/chef/shell/shell_session.rb', line 253

def build_node
  Chef::Log.debug("Building node object for #{@node_name}")
  @node = Chef::Node.find_or_create(node_name)
  ohai_data = @ohai.data.merge(@node.automatic_attrs)
  @node.consume_external_attrs(ohai_data, nil)
  @run_list_expansion = @node.expand!("server")
  @expanded_run_list_with_versions = @run_list_expansion.recipes.with_version_constraints_strings
  Chef::Log.info("Run List is [#{@node.run_list}]")
  Chef::Log.info("Run List expands to [#{@expanded_run_list_with_versions.join(', ')}]")
  @node
end

#registerObject


265
266
267
268
# File 'lib/chef/shell/shell_session.rb', line 265

def register
  @rest = Chef::ServerAPI.new(Chef::Config[:chef_server_url], :client_name => Chef::Config[:node_name],
                                                              :signing_key_filename => Chef::Config[:client_key])
end

#run_ohaiObject

Run the very smallest amount of ohai we can get away with and still hope to have things work. Otherwise we're not very good doppelgangers


247
248
249
# File 'lib/chef/shell/shell_session.rb', line 247

def run_ohai
  @ohai.require_plugin("os")
end