module ForemanSalt::Concerns::HostManagedExtensions
def accept_salt_key
def accept_salt_key begin Rails.logger.info("Host #{fqdn} is built, accepting Salt key") key = ForemanSalt::SmartProxies::SaltKeys.find(salt_proxy, fqdn) key&.accept rescue Foreman::Exception => e Rails.logger.warn("Unable to accept key for #{fqdn}: #{e}") end end
def all_salt_modules
def all_salt_modules return [] unless salt_environment modules = salt_modules + (hostgroup ? hostgroup.all_salt_modules : []) ForemanSalt::SaltModule.in_environment(salt_environment).where(:id => modules) end
def delete_salt_key
def delete_salt_key begin key = ForemanSalt::SmartProxies::SaltKeys.find(salt_proxy, fqdn) key&.delete rescue Foreman::Exception => e Rails.logger.warn("Unable to delete key for #{fqdn}: #{e}") end end
def salt_master
def salt_master salt_proxy.to_s end
def salt_modules_for_enc
def salt_modules_for_enc all_salt_modules.collect(&:name).uniq end
def salt_modules_in_host_environment
def salt_modules_in_host_environment return unless self.salt_modules.any? if self.salt_environment errors.add(:base, _('Salt states must be in the environment of the host')) unless (self.salt_modules - self.salt_environment.salt_modules).empty? else errors.add(:base, _('Host must have an environment in order to set salt states')) end end
def salt_params
def salt_params variables = ForemanSalt::SaltVariable.where(:salt_module_id => all_salt_modules.pluck(:id), :override => true) values = variables.values_hash(self) variables.each_with_object({}) do |var, memo| value = values[var] memo[var.key] = value if value memo end end
def saltrun!
def saltrun! unless salt_proxy.present? errors.add(:base, _("No Salt master defined - can't continue")) logger.warn 'Unable to execute salt run, no salt proxies defined' return false end ProxyAPI::Salt.new(:url => salt_proxy.url).highstate name rescue => e errors.add(:base, _('Failed to execute state.highstate: %s') % e) false end