summaryrefslogtreecommitdiff
path: root/lib/chef
diff options
context:
space:
mode:
authordanielsdeleo <dan@getchef.com>2015-03-31 14:33:19 -0700
committerdanielsdeleo <dan@getchef.com>2015-04-01 13:35:01 -0700
commit8157fdea21c913dfb99ee4f8c285d2d64557d4bc (patch)
tree3d4d3998276f92411cc61cac8135befd3de714e2 /lib/chef
parentf066fef19be99ba1b857ecaaabc4c70c9201f1d4 (diff)
downloadchef-8157fdea21c913dfb99ee4f8c285d2d64557d4bc.tar.gz
Add --no-listen option to disable zero binding to port
Diffstat (limited to 'lib/chef')
-rw-r--r--lib/chef/application/client.rb5
-rw-r--r--lib/chef/application/knife.rb6
-rw-r--r--lib/chef/config.rb8
-rw-r--r--lib/chef/http.rb1
-rw-r--r--lib/chef/knife.rb3
-rw-r--r--lib/chef/local_mode.rb6
6 files changed, 27 insertions, 2 deletions
diff --git a/lib/chef/application/client.rb b/lib/chef/application/client.rb
index 9984ad5b9d..a5faee9d35 100644
--- a/lib/chef/application/client.rb
+++ b/lib/chef/application/client.rb
@@ -258,6 +258,11 @@ class Chef::Application::Client < Chef::Application
:description => "Only run the bare minimum ohai plugins chef needs to function",
:boolean => true
+ option :listen,
+ :long => "--[no-]listen",
+ :description => "Whether a local mode (-z) server binds to a port",
+ :boolean => true
+
IMMEDIATE_RUN_SIGNAL = "1".freeze
attr_reader :chef_client_json
diff --git a/lib/chef/application/knife.rb b/lib/chef/application/knife.rb
index 1a19a45598..af5216ae00 100644
--- a/lib/chef/application/knife.rb
+++ b/lib/chef/application/knife.rb
@@ -121,6 +121,11 @@ class Chef::Application::Knife < Chef::Application
:long => "--chef-zero-port PORT",
:description => "Port (or port range) to start chef-zero on. Port ranges like 1000,1010 or 8889-9999 will try all given ports until one works."
+ option :listen,
+ :long => "--[no-]listen",
+ :description => "Whether a local mode (-z) server binds to a port",
+ :boolean => true
+
option :version,
:short => "-v",
:long => "--version",
@@ -129,7 +134,6 @@ class Chef::Application::Knife < Chef::Application
:proc => lambda {|v| puts "Chef: #{::Chef::VERSION}"},
:exit => 0
-
# Run knife
def run
Mixlib::Log::Formatter.show_time = false
diff --git a/lib/chef/config.rb b/lib/chef/config.rb
index b897f9fdbd..25557b077f 100644
--- a/lib/chef/config.rb
+++ b/lib/chef/config.rb
@@ -305,6 +305,14 @@ class Chef
default :pid_file, nil
+ # Whether Chef Zero local mode should bind to a port. All internal requests
+ # will go through the socketless code path regardless, so the socket is
+ # only needed if other processes will connect to the local mode server.
+ #
+ # For compatibility this is set to true but it will be changed to false in
+ # the future.
+ default :listen, true
+
config_context :chef_zero do
config_strict_mode true
default(:enabled) { Chef::Config.local_mode }
diff --git a/lib/chef/http.rb b/lib/chef/http.rb
index bfdc2b5e42..16a826a3db 100644
--- a/lib/chef/http.rb
+++ b/lib/chef/http.rb
@@ -25,6 +25,7 @@ require 'tempfile'
require 'net/https'
require 'uri'
require 'chef/http/basic_client'
+require 'chef/http/socketless_chef_zero_client'
require 'chef/monkey_patches/net_http'
require 'chef/config'
require 'chef/platform/query_helpers'
diff --git a/lib/chef/knife.rb b/lib/chef/knife.rb
index e13f80b5a8..2e0694aebc 100644
--- a/lib/chef/knife.rb
+++ b/lib/chef/knife.rb
@@ -373,6 +373,9 @@ class Chef
Chef::Config[:environment] = config[:environment] if config[:environment]
Chef::Config.local_mode = config[:local_mode] if config.has_key?(:local_mode)
+
+ Chef::Config.listen = config[:listen] if config.has_key?(:listen)
+
if Chef::Config.local_mode && !Chef::Config.has_key?(:cookbook_path) && !Chef::Config.has_key?(:chef_repo_path)
Chef::Config.chef_repo_path = Chef::Config.find_chef_repo_path(Dir.pwd)
end
diff --git a/lib/chef/local_mode.rb b/lib/chef/local_mode.rb
index c6c5685e3f..79fb750dd8 100644
--- a/lib/chef/local_mode.rb
+++ b/lib/chef/local_mode.rb
@@ -65,7 +65,11 @@ class Chef
server_options[:port] = parse_port(Chef::Config.chef_zero.port)
@chef_zero_server = ChefZero::Server.new(server_options)
- @chef_zero_server.start_background
+ if Chef::Config[:listen]
+ @chef_zero_server.start_background
+ else
+ @chef_zero_server.start_socketless
+ end
local_mode_url = @chef_zero_server.local_mode_url