Project

General

Profile

Download (2.54 KB) Statistics
| Branch: | Tag: | Revision:
class ConfigTemplatesController < ApplicationController
include Foreman::Controller::AutoCompleteSearch
include Foreman::Renderer

before_filter :find_by_id, :only => [:show, :edit, :update, :destroy]
before_filter :load_history, :only => :edit
before_filter :handle_template_upload, :only => [:create, :update]

def index
begin
values = ConfigTemplate.search_for(params[:search], :order => params[:order])
rescue => e
error e.to_s
values = ConfigTemplate.search_for ""
end

respond_to do |format|
format.html do
@config_templates = values.paginate(:page => params[:page]).includes(:template_kind, :template_combinations => [:hostgroup, :environment])
end
format.json { render :json => values}
end
end

def new
@config_template = ConfigTemplate.new
end

def show
respond_to do |format|
format.html { return not_found }
format.json { render :json => @config_template }
end
end

def create
@config_template = ConfigTemplate.new(params[:config_template])
if @config_template.save
process_success
else
process_error
end
end

def edit
end

def update
if @config_template.update_attributes(params[:config_template])
process_success
else
load_history
process_error
end
end

def revision
audit = Audit.find(params[:version])
render :json => audit.revision.template
end

def destroy
if @config_template.destroy
process_success
else
process_error
end
end

def build_pxe_default
status, msg = ConfigTemplate.build_pxe_default(self)

respond_to do |format|
format.html do
status == 200 ? notice(msg) : error(msg)
redirect_to :back
end
format.json do
render :json => msg, :status => status
end
end
end

private

# convert the file upload into a simple string to save in our db.
def handle_template_upload
return unless params[:config_template] and (t=params[:config_template][:template])
params[:config_template][:template] = t.read if t.respond_to?(:read)
end

def load_history
return unless @config_template
@history = Audit.descending.where(:auditable_id => @config_template.id, :auditable_type => 'ConfigTemplate')
end

def default_template_url template, hostgroup
url_for :only_path => false, :action => :template, :controller => '/unattended',
:id => template.name, :hostgroup => hostgroup.name
end

def find_by_id
@config_template = ConfigTemplate.find(params[:id])
end
end
(9-9/40)