module Chef::LocalMode
Public Class Methods
chef_fs()
click to toggle source
Return the chef_fs
object for the current chef-zero server.
# File lib/chef/local_mode.rb, line 93 def self.chef_fs @chef_fs end
chef_zero_server()
click to toggle source
Return the current chef-zero server set up by setup_server_connectivity.
# File lib/chef/local_mode.rb, line 88 def self.chef_zero_server @chef_zero_server end
destroy_server_connectivity()
click to toggle source
If chef_zero_server
is non-nil, stop it and remove references to it.
# File lib/chef/local_mode.rb, line 98 def self.destroy_server_connectivity if @chef_zero_server @chef_zero_server.stop @chef_zero_server = nil end end
parse_port(port)
click to toggle source
# File lib/chef/local_mode.rb, line 105 def self.parse_port(port) if port.is_a?(String) parts = port.split(",") if parts.size == 1 a, b = parts[0].split("-", 2) if b a.to_i.upto(b.to_i) else [ a.to_i ] end else array = [] parts.each do |part| array += parse_port(part).to_a end array end else port end end
setup_server_connectivity()
click to toggle source
If Chef::Config.chef_zero.enabled is true, sets up a chef-zero server according to the Chef::Config.chef_zero and path options, and sets chef_server_url to point at it.
# File lib/chef/local_mode.rb, line 51 def self.setup_server_connectivity if Chef::Config.chef_zero.enabled destroy_server_connectivity require "chef_zero/server" require_relative "chef_fs/chef_fs_data_store" require_relative "chef_fs/config" @chef_fs = Chef::ChefFS::Config.new.local_fs @chef_fs.write_pretty_json = true data_store = Chef::ChefFS::ChefFSDataStore.new(@chef_fs) data_store = ChefZero::DataStore::V1ToV2Adapter.new(data_store, "chef") server_options = {} server_options[:data_store] = data_store server_options[:log_level] = Chef::Log.level server_options[:osc_compat] = Chef::Config.chef_zero.osc_compat server_options[:single_org] = Chef::Config.chef_zero.single_org server_options[:host] = Chef::Config.chef_zero.host server_options[:port] = parse_port(Chef::Config.chef_zero.port) @chef_zero_server = ChefZero::Server.new(server_options) if Chef::Config[:listen] Chef.deprecated(:local_listen, "Starting local-mode server in deprecated socket mode") @chef_zero_server.start_background else @chef_zero_server.start_socketless end local_mode_url = @chef_zero_server.local_mode_url Chef::Log.info("Started #{Chef::Dist::ZERO} at #{local_mode_url} with #{@chef_fs.fs_description}") Chef::Config.chef_server_url = local_mode_url end end
with_server_connectivity() { || ... }
click to toggle source
Create a chef local server (if the configuration requires one) for the duration of the given block.
# This ... with_server_connectivity { stuff } # Is exactly equivalent to this ... Chef::LocalMode.setup_server_connectivity begin stuff ensure Chef::LocalMode.destroy_server_connectivity end
# File lib/chef/local_mode.rb, line 39 def self.with_server_connectivity setup_server_connectivity begin yield ensure destroy_server_connectivity end end