Project

General

Profile

Download (2.96 KB) Statistics
| Branch: | Tag: | Revision:
class TemplateKind < ApplicationRecord
extend FriendlyId
friendly_id :name
validates_lengths_from_database
has_many :provisioning_templates, :inverse_of => :template_kind
has_many :os_default_templates
validates :name, :presence => true, :uniqueness => true
scoped_search :on => :id, :complete_enabled => false, :only_explicit => true, :validator => ScopedSearch::Validators::INTEGER
scoped_search :on => :name

PXE = Foreman::Provision::PXE_TEMPLATE_KINDS

def self.default_template_labels
{
"PXELinux" => N_("PXELinux template"),
"PXEGrub" => N_("PXEGrub template"),
"PXEGrub2" => N_("PXEGrub2 template"),
"iPXE" => N_("iPXE template"),
"provision" => N_("Provisioning template"),
"finish" => N_("Finish template"),
"script" => N_("Script template"),
"user_data" => N_("User data template"),
"ZTP" => N_("ZTP PXE template"),
"POAP" => N_("POAP PXE template"),
"cloud-init" => N_("Cloud-init template"),
"host_init_config" => N_("Host initial configuration template"),
"registration" => N_("Registration template"),
"kexec" => N_("Discovery Kexec"),
"Bootdisk" => N_("Boot disk"),
}
end

def self.default_template_descriptions
@@template_description ||= {
"PXELinux" => N_("Used when PXELinux loader is set, loads pxelinux.0 which loads content generated by this template."),
"PXEGrub" => N_("Used when Grub2 loader is set, loads grub/bootx64.efi which loads content generated by this template."),
"PXEGrub2" => N_("Used when PXELinux loader is set, loads grub/grubx64.efi which loads content generated by this template."),
"iPXE" => N_("Used in iPXE environments."),
"provision" => N_("Template for OS installer, for example kickstart, preseed or jumpstart. Depends on the operating system."),
"finish" => N_("Post-install script for preseed-based or cloud instance. Connection is made via SSH, credentials or key must exist and inventory IP address must match. Only used when 'user data' is not set."),
"script" => N_("An arbitrary script, must be manually downloaded using wget/curl."),
"user_data" => N_("Template with seed data for virtual or cloud instances when 'user data' flag is set, typically cloud-init or ignition format."),
"ZTP" => N_("Provisioning Junos devices (Junos 12.2+)."),
"POAP" => N_("Provisioning for switches running NX-OS."),
"cloud-init" => N_("Template for cloud-init unattended endpoint."),
"host_init_config" => N_("Contains the instructions in form of a bash script for the initial host configuration, after the host is registered in Foreman"),
}
end

def self.plugin_template_labels
Foreman::Plugin.all.map(&:get_template_labels).inject({}, :merge)
end

def humanized_name
[self.class.default_template_labels[name], self.class.plugin_template_labels[name]].detect(&:present?)
end

def to_label
return _(humanized_name) if humanized_name.present?
name
end
end
(61-61/69)