Sha256: 70172d34c716df7b5ca388877e212639cf0cd8d36f7d0f489df59d6cf4206d3e

Contents?: true

Size: 1.71 KB

Versions: 30

Compression:

Stored size: 1.71 KB

Contents

module Actions
  module Foreman
    module Host
      class ImportFacts < Actions::EntryAction
        def resource_locks
          :import_facts
        end

        def plan(_host_type, host_name, facts, certname, proxy_id)
          facts['domain'].try(:downcase!)
          host = ::Host::Managed.import_host(host_name, certname)
          host.save(:validate => false) if host.new_record?
          action_subject(host, :facts => facts.to_unsafe_h, :proxy_id => proxy_id)
          if host.build?
            ::Foreman::Logging.logger('foreman-tasks').info "Skipping importing of facts for #{host.name} because it's in build mode"
          else
            plan_self
          end
        end

        def run
          ::User.as :admin do
            host           = ::Host.find(input[:host][:id])
            state          = ::HostFactImporter.new(host).import_facts(input[:facts], proxy)
            output[:state] = state
          end
        rescue ::Foreman::Exception => e
          # This error is what is thrown by Host#ImportHostAndFacts when
          # the Host is in the build state. This can be refactored once
          # issue #3959 is fixed.
          raise e unless e.code == 'ERF51-9911'
        end

        def proxy
          SmartProxy.find_by(id: input[:proxy_id]) if input[:proxy_id].present?
        end

        def rescue_strategy
          ::Dynflow::Action::Rescue::Skip
        end

        def humanized_name
          _('Import facts')
        end

        def humanized_input
          input[:host] && input[:host][:name]
        end

        # default value for cleaning up the tasks, it can be overriden by settings
        def self.cleanup_after
          '30d'
        end
      end
    end
  end
end

Version data entries

30 entries across 30 versions & 1 rubygems

Version Path
foreman-tasks-10.0.2 app/lib/actions/foreman/host/import_facts.rb
foreman-tasks-10.0.1 app/lib/actions/foreman/host/import_facts.rb
foreman-tasks-10.0.0 app/lib/actions/foreman/host/import_facts.rb
foreman-tasks-9.2.3 app/lib/actions/foreman/host/import_facts.rb
foreman-tasks-9.2.2 app/lib/actions/foreman/host/import_facts.rb
foreman-tasks-9.2.1 app/lib/actions/foreman/host/import_facts.rb
foreman-tasks-9.2.0 app/lib/actions/foreman/host/import_facts.rb
foreman-tasks-9.1.1 app/lib/actions/foreman/host/import_facts.rb
foreman-tasks-9.0.4 app/lib/actions/foreman/host/import_facts.rb
foreman-tasks-9.1.0 app/lib/actions/foreman/host/import_facts.rb
foreman-tasks-9.0.2 app/lib/actions/foreman/host/import_facts.rb
foreman-tasks-9.0.1 app/lib/actions/foreman/host/import_facts.rb
foreman-tasks-8.3.3 app/lib/actions/foreman/host/import_facts.rb
foreman-tasks-9.0.0 app/lib/actions/foreman/host/import_facts.rb
foreman-tasks-8.2.1 app/lib/actions/foreman/host/import_facts.rb
foreman-tasks-8.1.4 app/lib/actions/foreman/host/import_facts.rb
foreman-tasks-8.3.2 app/lib/actions/foreman/host/import_facts.rb
foreman-tasks-8.3.1 app/lib/actions/foreman/host/import_facts.rb
foreman-tasks-8.1.3 app/lib/actions/foreman/host/import_facts.rb
foreman-tasks-8.3.0 app/lib/actions/foreman/host/import_facts.rb