summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Smith <tsmith@chef.io>2021-10-14 10:52:03 -0700
committerGitHub <noreply@github.com>2021-10-14 10:52:03 -0700
commit3ce0bef5abb97593b8c42fbadc3f07240b047fae (patch)
tree3242821762be5a2aff024f6bd6059c4cf2a7e5c9
parentb798363675254473e1f222af820aa5996fbb9fa2 (diff)
parent4aad39c3c41f5a0a4459fc43c376dc33f00446d6 (diff)
downloadchef-3ce0bef5abb97593b8c42fbadc3f07240b047fae.tar.gz
Merge pull request #12151 from tecracer-theinen/theinen/target-protocol-in-credentials
Allow specifying transport protocol in RFC099 credential files
-rw-r--r--chef-config/lib/chef-config/mixin/train_transport.rb10
1 files changed, 6 insertions, 4 deletions
diff --git a/chef-config/lib/chef-config/mixin/train_transport.rb b/chef-config/lib/chef-config/mixin/train_transport.rb
index 942f0ab3b7..3bd56650b2 100644
--- a/chef-config/lib/chef-config/mixin/train_transport.rb
+++ b/chef-config/lib/chef-config/mixin/train_transport.rb
@@ -108,12 +108,14 @@ module ChefConfig
# Load the target_mode config context from config, and place any valid settings into the train configuration
tm_config = config.target_mode
- protocol = tm_config.protocol
- train_config = tm_config.to_hash.select { |k| Train.options(protocol).key?(k) }
- logger.trace("Using target mode options from #{ChefUtils::Dist::Infra::PRODUCT} config file: #{train_config.keys.join(", ")}") if train_config
# Load the credentials file, and place any valid settings into the train configuration
credentials = load_credentials(tm_config.host)
+
+ protocol = credentials[:transport_protocol] || tm_config.protocol
+ train_config = tm_config.to_hash.select { |k| Train.options(protocol).key?(k) }
+ logger.trace("Using target mode options from #{ChefUtils::Dist::Infra::PRODUCT} config file: #{train_config.keys.join(", ")}") if train_config
+
if credentials
valid_settings = credentials.select { |k| Train.options(protocol).key?(k) }
valid_settings[:enable_password] = credentials[:enable_password] if credentials.key?(:enable_password)
@@ -126,7 +128,7 @@ module ChefConfig
# Train handles connection retries for us
Train.create(protocol, train_config)
rescue SocketError => e # likely a dns failure, not caught by train
- e.message.replace "Error connecting to #{train_config[:target]} - #{e.message}"
+ e.message.replace "Error connecting to #{train_config[:target]} via #{protocol} - #{e.message}"
raise e
rescue Train::PluginLoadError
logger.error("Invalid target mode protocol: #{protocol}")