foreman_chef 0.5.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
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
-