foreman_chef 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 57d753bf6cad20e4c8f3f0e42d4cb54c2ea512e2
4
- data.tar.gz: 7e475417097bdde646e155490805d0aa7ea3a944
3
+ metadata.gz: bed7f43a8fda06fdc85e6e6d2e6059dad4a0b3e2
4
+ data.tar.gz: 01c9bc5cd705a62dc4ec7ce017b40446c5ee5974
5
5
  SHA512:
6
- metadata.gz: 3e320c37bb73d8cbee67781de5ee4eef0d17d21812c5600fb5de76402f6cb891ca906d7c0b1080182d5d848477904689e99dd8149ee5cc00d470072f12abc0f0
7
- data.tar.gz: 10665df2e4facabc26657275d43da9c530f8df3d8cc541acba54a639cd02b81bc7147b163f68c7dc3701e0a18607fbfb37fcb40c3456e71ae00f04eeb6a769e2
6
+ metadata.gz: 59b5c3e2e49bcf6b1e86902995fc14b5ca152f541c84f4f82e7d2529c6c65a9315fad4a59e1f94717f5eb4dfff68fae4aedde4fb0779a408ab0f0b9adf084f0e
7
+ data.tar.gz: b3f03e1b028a868bb6ea788b9e59dcf89e592b70632736381da589057242617c3e2cae98c4fde8ba5fe22aaf289fbf96c9d9d186cc98e370bba655de93e657dd
@@ -12,11 +12,16 @@ module ForemanChef
12
12
  end
13
13
 
14
14
  def chef_proxy_form_chef_environment_select(f, environments)
15
- if f.object.is_a?(Host::Base) &&f.object.persisted? && f.object.chef_environment_differs?
16
- help = content_tag(:span, ' ', :class => 'pficon pficon-warning-triangle-o') + ' ' + _('Chef environment is set to %s on Chef server, submitting will override it') % f.object.fresh_chef_environment
15
+ begin
16
+ if f.object.is_a?(Host::Base) && f.object.persisted? && f.object.chef_environment_differs?
17
+ help = content_tag(:span, ' ', :class => 'pficon pficon-warning-triangle-o') + ' ' + _('Chef environment is set to %s on Chef server, submitting will override it') % f.object.fresh_chef_environment
18
+ help = help.html_safe
19
+ else
20
+ help = nil
21
+ end
22
+ rescue => e # chef server communication issue
23
+ help = content_tag(:span, ' ', :class => 'pficon pficon-warning-triangle-o') + ' ' + _('Unable to communicate with Chef server - %s.') % e.message
17
24
  help = help.html_safe
18
- else
19
- help = nil
20
25
  end
21
26
 
22
27
  select_f(f, :chef_environment_id, environments, :id, :name,
@@ -35,8 +40,12 @@ module ForemanChef
35
40
  def chef_tab_menu(host)
36
41
  if SmartProxy.with_features("Chef").count > 0
37
42
  warning = ''
38
- if chef_run_list_differs?(host)
39
- warning = content_tag(:span, ' '.html_safe, :class => "pficon pficon-warning-triangle-o")
43
+ begin
44
+ if chef_run_list_differs?(host)
45
+ warning = chef_warning_icon
46
+ end
47
+ rescue => e
48
+ warning = chef_warning_icon
40
49
  end
41
50
  content_tag :li do
42
51
  link_to(warning + _('Chef'), '#chef', :data => { :toggle => 'tab'})
@@ -44,6 +53,10 @@ module ForemanChef
44
53
  end
45
54
  end
46
55
 
56
+ def chef_warning_icon
57
+ content_tag(:span, ' '.html_safe, :class => "pficon pficon-warning-triangle-o")
58
+ end
59
+
47
60
  def chef_tab_content(f)
48
61
  render 'foreman_chef/hosts/chef_tab', :f => f
49
62
  end
@@ -13,13 +13,12 @@ module Actions
13
13
  plan_self :chef_proxy_id => proxy.id, :name => name
14
14
  end
15
15
  rescue => e
16
- Rails.logger.debug "Unable to communicate with Chef proxy, #{e.message}"
17
- Rails.logger.debug e.backtrace.join("\n")
16
+ ::Foreman::Logging.exception("Unable to communicate with Chef proxy", e)
18
17
  raise ::ForemanChef::ProxyException.new(N_('CLIENT Unable to communicate with Chef proxy, %s' % e.message))
19
18
  end
20
19
 
21
20
  def run
22
- proxy = ::SmartProxy.find_by_id(input[:chef_proxy_id])
21
+ proxy = ::SmartProxy.unscoped.find_by_id(input[:chef_proxy_id])
23
22
  action_logger.debug "Creating client #{input[:name]} on proxy #{proxy.name} at #{proxy.url}"
24
23
  self.output = proxy.create_client(input[:name])
25
24
  end
@@ -4,19 +4,19 @@ module Actions
4
4
  class Destroy < Actions::EntryAction
5
5
 
6
6
  def plan(fqdn, proxy)
7
- if ::Setting::ForemanChef.auto_deletion && proxy.present?
7
+ if ::Setting[:auto_deletion] && proxy.present?
8
8
  client_exists_in_chef = proxy.show_client(fqdn)
9
9
  if client_exists_in_chef
10
10
  plan_self :chef_proxy_id => proxy.id, :fqdn => fqdn
11
11
  end
12
12
  end
13
13
  rescue => e
14
- ::Foreman::Logging.exception('Unable to communicate with Chef proxy', e, :logger => 'foreman_chef')
14
+ ::Foreman::Logging.exception('Unable to communicate with Chef proxy', e)
15
15
  raise ::ForemanChef::ProxyException.new(N_('Unable to communicate with Chef proxy, %s' % e.message))
16
16
  end
17
17
 
18
18
  def run
19
- proxy = ::SmartProxy.find_by_id(input[:chef_proxy_id])
19
+ proxy = ::SmartProxy.unscoped.find_by_id(input[:chef_proxy_id])
20
20
  action_logger.debug "Deleting client #{input[:fqdn]} on proxy #{proxy.name} at #{proxy.url}"
21
21
  self.output = proxy.delete_client(input[:fqdn])
22
22
  end
@@ -11,7 +11,7 @@ module Actions
11
11
 
12
12
  def plan(host)
13
13
  action_subject(host)
14
- if (::Setting::ForemanChef.auto_deletion && proxy = host.chef_proxy)
14
+ if (::Setting[:auto_deletion] && proxy = host.chef_proxy)
15
15
  node_exists_in_chef = proxy.show_node(host.name)
16
16
  if node_exists_in_chef
17
17
  plan_self :chef_proxy_id => host.chef_proxy_id
@@ -20,12 +20,12 @@ module Actions
20
20
  plan_action Actions::ForemanChef::Client::Destroy, host.name, proxy
21
21
  end
22
22
  rescue => e
23
- ::Foreman::Logging.exception('Unable to communicate with Chef proxy', e, :logger => 'foreman_chef')
23
+ ::Foreman::Logging.exception('Unable to communicate with Chef proxy', e)
24
24
  raise ::ForemanChef::ProxyException.new(N_('Unable to communicate with Chef proxy, %s' % e.message))
25
25
  end
26
26
 
27
27
  def run
28
- proxy = ::SmartProxy.find_by_id(input[:chef_proxy_id])
28
+ proxy = ::SmartProxy.unscoped.find_by_id(input[:chef_proxy_id])
29
29
  action_logger.debug "Deleting #{input[:host][:name]} on proxy #{proxy.name} at #{proxy.url}"
30
30
  self.output = proxy.delete_node(input[:host][:name])
31
31
  end
@@ -18,10 +18,7 @@ module Actions
18
18
  end
19
19
  end
20
20
  rescue => e
21
- Rails.logger.debug "Unable to communicate with Chef proxy, #{e.message}"
22
- Rails.logger.debug e.backtrace.join("\n")
23
- raise ::ForemanChef::ProxyException.new(N_('Unable to communicate with Chef proxy, %s' % e.message))
24
- # TODO these errors causing form not to display anything and double traces, we need reraise
21
+ ::Foreman::Logging.exception("Unable to communicate with Chef proxy", e)
25
22
  end
26
23
 
27
24
  def humanized_name
@@ -19,14 +19,13 @@ module Actions
19
19
  raise ::ForemanChef::ObjectDoesNotExistException.new(N_('Node with name %s does not exist on this Chef proxy' % name))
20
20
  end
21
21
  rescue => e
22
- Rails.logger.debug "Unable to communicate with Chef proxy, #{e.message}"
23
- Rails.logger.debug e.backtrace.join("\n")
22
+ ::Foreman::Logging.exception("Unable to communicate with Chef proxy", e)
24
23
  raise ::ForemanChef::ProxyException.new(N_('Unable to communicate with Chef proxy, %s' % e.message))
25
24
  end
26
25
 
27
26
  def run
28
- proxy = ::SmartProxy.find_by_id(input[:chef_proxy_id])
29
- host = ::Host.find(input[:host_id])
27
+ proxy = ::SmartProxy.unscoped.find_by_id(input[:chef_proxy_id])
28
+ host = ::Host.unscoped.find(input[:host_id])
30
29
  action_logger.debug "Updating node #{input[:name]} on proxy #{proxy.name} at #{proxy.url}"
31
30
  proxy.update_node(host.name, host.run_list.as_chef_json.merge(:chef_environment => host.chef_environment.name))
32
31
  end
@@ -5,11 +5,6 @@ module ForemanChef
5
5
  include ForemanTasks::Concerns::ActionSubject
6
6
  include ForemanTasks::Concerns::ActionTriggering
7
7
 
8
- def create_action
9
- sync_action!
10
- ::Actions::ForemanChef::Host::Create
11
- end
12
-
13
8
  def update_action
14
9
  sync_action!
15
10
  ::Actions::ForemanChef::Host::Update
@@ -13,7 +13,7 @@ module ForemanChef
13
13
  # private key is no longer valid
14
14
  host.chef_private_key = nil
15
15
 
16
- if !::Setting.validation_bootstrap_method
16
+ if !::Setting[:validation_bootstrap_method]
17
17
  new_client = ::ForemanTasks.sync_task ::Actions::ForemanChef::Client::Create, host.name, host.chef_proxy
18
18
  host.chef_private_key = new_client.output[:private_key]
19
19
  end
@@ -27,7 +27,7 @@ module ForemanChef
27
27
  # private key is no longer valid
28
28
  self.chef_private_key = nil
29
29
 
30
- if !::Setting.validation_bootstrap_method
30
+ if !::Setting[:validation_bootstrap_method]
31
31
  new_client = ::ForemanTasks.sync_task ::Actions::ForemanChef::Client::Create, self.name, self.chef_proxy
32
32
  self.chef_private_key = new_client.output[:private_key]
33
33
  end
@@ -11,7 +11,7 @@ module ForemanChef
11
11
  end
12
12
 
13
13
  def validation_bootstrap_method?
14
- ::Setting.validation_bootstrap_method
14
+ ::Setting[:validation_bootstrap_method]
15
15
  end
16
16
  end
17
17
  end
@@ -7,9 +7,9 @@ module ForemanChef
7
7
 
8
8
  has_many :hosts, :class_name => '::Host::Managed'
9
9
  has_many :hostgroups, :class_name => '::Hostgroup'
10
- belongs_to :chef_proxy, :class_name => '::SmartProxy'
10
+ belongs_to :chef_proxy, -> { unscope(:where) }, :class_name => '::SmartProxy'
11
11
 
12
- validates :name, :uniqueness => true, :presence => true, :format => { :with => /\A[\w\d\.]+\z/, :message => N_('is alphanumeric and cannot contain spaces') }
12
+ validates :name, :uniqueness => true, :presence => true, :format => { :with => /\A[-_\w\d]+\Z/, :message => N_('must be alphanumeric with dashes and hyphens and cannot contain spaces') }
13
13
 
14
14
  scoped_search :on => :name, :complete_value => true
15
15
  scoped_search :in => :hostgroups, :on => :name, :complete_value => true, :rename => :hostgroup
@@ -5,7 +5,7 @@ mkdir /etc/chef
5
5
  chmod 600 /etc/chef/validation.pem
6
6
 
7
7
  cat << 'EOF' > /etc/chef/validation.pem
8
- <%= @host.params['chef_validation_private_key'] %>
8
+ <%= host_param('chef_validation_private_key') %>
9
9
  EOF
10
10
  <% else -%>
11
11
  echo "Creating client.pem"
@@ -18,7 +18,7 @@ EOF
18
18
  <% end -%>
19
19
 
20
20
  ## If chef_server_certificate is present, install it into /etc/chef/trusted_certs
21
- <% chef_server_certificate = @host.params['chef_server_certificate'] -%>
21
+ <% chef_server_certificate = host_param('chef_server_certificate') -%>
22
22
  <% if !chef_server_certificate.nil? && !chef_server_certificate.empty? -%>
23
23
  mkdir -p /etc/chef/trusted_certs
24
24
  chmod 0755 /etc/chef/trusted_certs
@@ -31,14 +31,14 @@ echo "Configuring chef client.rb"
31
31
  cat << 'EOF' > /etc/chef/client.rb
32
32
  log_level :info
33
33
  log_location STDOUT
34
- chef_server_url "<%= @host.params['chef_server_url'] %>"
35
- validation_client_name "<%= @host.params['chef_validator_name'] -%>"
34
+ chef_server_url "<%= host_param('chef_server_url') %>"
35
+ validation_client_name "<%= host_param('chef_validator_name') -%>"
36
36
  file_backup_path "/var/lib/chef"
37
37
  file_cache_path "/var/cache/chef"
38
38
  pid_file "/var/run/chef/client.pid"
39
39
 
40
40
  require 'chef_handler_foreman'
41
- foreman_server_options :url => "<%= @host.params['chef_handler_foreman_url'] %>"
41
+ foreman_server_options :url => "<%= host_param('chef_handler_foreman_url') %>"
42
42
  foreman_facts_upload true
43
43
  foreman_reports_upload true
44
44
  foreman_enc true
@@ -1,4 +1,5 @@
1
1
  echo "Installing chef and chef_handler_foreman"
2
- gem install chef chef_handler_foreman
2
+ gem install chef <%= host_param('chef_bootstrap_version') ? '-v ' + host_param('chef_bootstrap_version') : '' %>
3
+ gem install chef_handler_foreman
3
4
 
4
5
  <%= snippet 'chef-client bootstrap' %>
@@ -3,11 +3,12 @@
3
3
  apt-get -y install ca-certificates
4
4
  <% end -%>
5
5
 
6
- # install.sh will install latest chef client version
6
+ # run install.sh with specific version if set
7
+ <% version = host_param('chef_bootstrap_version') ? '-v ' + host_param('chef_bootstrap_version') : '' -%>
7
8
  if [ -f /usr/bin/curl ]; then
8
- curl -L https://www.chef.io/chef/install.sh | bash
9
+ curl -L https://www.chef.io/chef/install.sh | bash -s -- <%= version %>
9
10
  else
10
- wget https://www.chef.io/chef/install.sh -O- | bash
11
+ wget https://www.chef.io/chef/install.sh -O- | bash -s -- <%= version %>
11
12
  fi
12
13
 
13
14
  # if you want specific version you can use something like this instead of install.sh
@@ -2,13 +2,24 @@
2
2
 
3
3
  <div class="tab-pane" id="chef">
4
4
 
5
- <% if chef_run_list_differs?(f.object) %>
5
+ <% communication_error = nil
6
+ begin
7
+ differs = chef_run_list_differs?(f.object)
8
+ rescue => e
9
+ communication_problem = e
10
+ end -%>
11
+ <% if differs %>
6
12
  <%= alert(:class => 'alert-warning', :header => 'Warning',
7
13
  :text => _('Run list on chef server differs, by submitting the form, you will override the run list there. ').html_safe +
8
14
  link_to(_('Reset'), '#', :class => 'refresh_run_list', :'data-run-list' => (f.object.fresh_run_list.try(:to_form_json) || '[]')) +
9
15
  _(' to run list from chef-server').html_safe) %>
10
16
  <% end %>
11
17
 
18
+ <% if communication_problem %>
19
+ <%= alert(:class => 'alert-warning', :header => 'Warning',
20
+ :text => (_('Unable to fetch data from Chef server - %s. Any changes to environment or runlist will not be persisted in Chef server. To fix it, save the host again when communication with Chef server is restored.') % e.message).html_safe) %>
21
+ <% end %>
22
+
12
23
  <div id="runlist-editor" data-default="<%= f.object.run_list.to_form_json %>">
13
24
 
14
25
  </div>
@@ -0,0 +1,25 @@
1
+ <%#
2
+ name: Run chef-client once
3
+ job_category: Chef
4
+ description_format: "%{template_name}"
5
+ snippet: false
6
+ template_inputs:
7
+ - name: log-level
8
+ required: true
9
+ input_type: user
10
+ description: Set the log level (auto, debug, info, warn, error, fatal)
11
+ options: "auto\r\ndebug\r\ninfo\r\nwarn\r\nerror\r\nfatal"
12
+ advanced: true
13
+ - name: why-run
14
+ required: true
15
+ input_type: user
16
+ description: Enable whyrun mode
17
+ options: "no\r\nyes"
18
+ advanced: true
19
+ provider_type: SSH
20
+ kind: job_template
21
+ %>
22
+
23
+ chef-client --once \
24
+ <%= ' --why-run' if input('why-run') == 'yes' -%>
25
+ <%= " --log_level #{input('log-level')}" if input('log-level') && input('log-level') != 'auto' -%>
@@ -0,0 +1,10 @@
1
+ <%#
2
+ name: Run chef-client wrapper
3
+ job_category: Chef
4
+ description_format: Run chef-client once
5
+ snippet: false
6
+ provider_type: SSH
7
+ kind: job_template
8
+ %>
9
+
10
+ <%= render_template 'Run chef-client once', :log_level => 'auto', :why_run => 'no' %>
data/db/seeds.rb CHANGED
@@ -14,9 +14,25 @@ templates.each do |template|
14
14
  ProvisioningTemplate.where(:name => template[:name]).first_or_create.update_attributes(defaults.merge(template))
15
15
  end
16
16
 
17
+ if ForemanChef.with_remote_execution?
18
+ User.as_anonymous_admin do
19
+ JobTemplate.without_auditing do
20
+ Dir[File.join("#{ForemanChef::Engine.root}/app/views/job_templates/**/*.erb")].each do |template|
21
+ sync = !Rails.env.test? && Setting[:remote_execution_sync_templates]
22
+ # import! was renamed to import_raw! around 1.3.1
23
+ if JobTemplate.respond_to?('import_raw!')
24
+ JobTemplate.import_raw!(File.read(template), :default => true, :locked => true, :update => sync)
25
+ else
26
+ JobTemplate.import!(File.read(template), :default => true, :locked => true, :update => sync)
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+
17
33
  # Global parameters used in configuration snippets
18
34
  parameters = [
19
- { :name => 'chef_handler_foreman_url', :value => SmartProxy.with_features('Chef').first.try(:url) || Setting.foreman_url },
35
+ { :name => 'chef_handler_foreman_url', :value => SmartProxy.with_features('Chef').first.try(:url) || Setting[:foreman_url] },
20
36
  { :name => 'chef_server_url', :value => "https://#{Socket.gethostbyname(Socket.gethostname).first}" },
21
37
  { :name => 'chef_validation_private_key', :value => 'UNSPECIFIED, you must upload your validation key here' },
22
38
  { :name => 'chef_bootstrap_template', :value => 'chef-client omnibus bootstrap' },
@@ -47,7 +47,7 @@ module ForemanChef
47
47
 
48
48
  initializer 'foreman_chef.register_plugin', :before => :finisher_hook do |app|
49
49
  Foreman::Plugin.register :foreman_chef do
50
- requires_foreman '>= 1.14'
50
+ requires_foreman '>= 1.15'
51
51
  extend_template_helpers ForemanChef::Concerns::Renderer
52
52
 
53
53
  permission :import_chef_environments, { :environments => [:import, :synchronize] }, :resource_type => 'ForemanChef::Environment'
@@ -65,6 +65,10 @@ module ForemanChef
65
65
  parameter_filter ForemanChef::CachedRunList, :type, :name
66
66
  parameter_filter Host::Managed, :chef_private_key, :chef_proxy_id, :override_chef_attributes, :chef_environment_id, :run_list => [ parameter_filters(ForemanChef::CachedRunList) ]
67
67
  parameter_filter Hostgroup, :chef_proxy_id, :chef_environment_id
68
+
69
+ if ForemanChef.with_remote_execution? && Gem::Version.new(ForemanRemoteExecution::VERSION) >= Gem::Version.new('1.2.3')
70
+ RemoteExecutionFeature.register(:foreman_chef_run_chef_client, N_("Run chef-client Once"), :description => N_("Run chef-client once"), :host_action_button => true)
71
+ end
68
72
  end
69
73
  end
70
74
 
@@ -102,4 +106,9 @@ module ForemanChef
102
106
  def use_relative_model_naming
103
107
  true
104
108
  end
109
+
110
+ # check whether foreman_remote_execution to integrate is available in the system
111
+ def self.with_remote_execution?
112
+ (RemoteExecutionFeature rescue false) ? true : false
113
+ end
105
114
  end
@@ -1,3 +1,3 @@
1
1
  module ForemanChef
2
- VERSION = "0.5.0"
2
+ VERSION = "0.6.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foreman_chef
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marek Hulan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-02-02 00:00:00.000000000 Z
11
+ date: 2017-12-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: deface
@@ -74,7 +74,6 @@ files:
74
74
  - app/helpers/foreman_chef/chef_proxy_form.rb
75
75
  - app/lib/actions/foreman_chef/client/create.rb
76
76
  - app/lib/actions/foreman_chef/client/destroy.rb
77
- - app/lib/actions/foreman_chef/host/create.rb
78
77
  - app/lib/actions/foreman_chef/host/destroy.rb
79
78
  - app/lib/actions/foreman_chef/host/update.rb
80
79
  - app/lib/actions/foreman_chef/node/update.rb
@@ -109,6 +108,8 @@ files:
109
108
  - app/views/foreman_chef/environments/index.html.erb
110
109
  - app/views/foreman_chef/environments/new.html.erb
111
110
  - app/views/foreman_chef/hosts/_chef_tab.html.erb
111
+ - app/views/job_templates/run_chefclient_once.erb
112
+ - app/views/job_templates/run_chefclient_wrapper.erb
112
113
  - config/routes.rb
113
114
  - db/migrate/20140220145827_add_chef_proxy_id_to_host.rb
114
115
  - db/migrate/20140513144804_add_chef_proxy_id_to_hostgroup.rb
@@ -139,7 +140,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
139
140
  version: '0'
140
141
  requirements: []
141
142
  rubyforge_project:
142
- rubygems_version: 2.4.5
143
+ rubygems_version: 2.6.8
143
144
  signing_key:
144
145
  specification_version: 4
145
146
  summary: Plugin for Chef integration with Foreman
@@ -1,53 +0,0 @@
1
- module Actions
2
- module ForemanChef
3
- module Host
4
- class Create < Actions::EntryAction
5
-
6
- def resource_locks
7
- :link
8
- end
9
-
10
- def plan(host)
11
- action_subject(host)
12
-
13
- if host.chef_proxy
14
- client_exists_in_chef = host.chef_proxy.show_client(host.name)
15
-
16
- sequence do
17
- if client_exists_in_chef
18
- plan_action Actions::ForemanChef::Client::Destroy, host.name, host.chef_proxy
19
- end
20
-
21
- unless ::Setting::ForemanChef.validate_bootstrap_method
22
- client_creation = plan_action Actions::ForemanChef::Client::Create, host.name, host.chef_proxy
23
- end
24
-
25
- plan_self(:create_action_output => client_creation.output)
26
- end
27
- end
28
- rescue => e
29
- Rails.logger.debug "Unable to communicate with Chef proxy, #{e.message}"
30
- Rails.logger.debug e.backtrace.join("\n")
31
- raise ::ForemanChef::ProxyException.new(N_('Unable to communicate with Chef proxy, %s' % e.message))
32
- end
33
-
34
- def finalize
35
- if input[:create_action_output][:private_key].present? && !Setting.validation_bootstrap_method
36
- host = ::Host.find(self.input[:host][:id])
37
- host.chef_private_key = input[:create_action_output][:private_key]
38
- host.disable_dynflow_hooks { |h| h.save! }
39
- end
40
- end
41
-
42
- def humanized_name
43
- _("Create host")
44
- end
45
-
46
- def humanized_input
47
- input[:host][:name]
48
- end
49
- end
50
- end
51
- end
52
- end
53
-