Class: ForemanAcd::AppDefinitionsController
- Inherits:
-
ApplicationController
- Object
- ApplicationController
- ApplicationController
- ForemanAcd::AppDefinitionsController
- Includes:
- Foreman::Controller::AutoCompleteSearch, Concerns::AppDefinitionParameters
- Defined in:
- app/controllers/foreman_acd/app_definitions_controller.rb
Overview
Application Definition Controller
Instance Method Summary collapse
- #action_permission ⇒ Object
- #create ⇒ Object
- #destroy ⇒ Object
- #edit ⇒ Object
- #export ⇒ Object
- #handle_file_upload ⇒ Object
- #import ⇒ Object
- #index ⇒ Object
- #new ⇒ Object
- #read_ansible_playbooks ⇒ Object
- #read_hostgroups ⇒ Object
- #update ⇒ Object
Methods included from Concerns::AppDefinitionParameters
Methods inherited from ApplicationController
Instance Method Details
#action_permission ⇒ Object
64 65 66 67 68 69 70 71 72 73 |
# File 'app/controllers/foreman_acd/app_definitions_controller.rb', line 64 def case params[:action] when 'export' :export when 'import' :import else super end end |
#create ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'app/controllers/foreman_acd/app_definitions_controller.rb', line 31 def create @app_definition = AppDefinition.new(app_definition_params) begin if @app_definition.save! process_success else process_error end rescue StandardError, ValidationError => e AnsiblePlaybook.find(params[:foreman_acd_app_definition][:acd_ansible_playbook_id]).delete if params[:foreman_acd_app_definition_import].present? && params[:foreman_acd_app_definition][:acd_ansible_playbook_id].present? redirect_to new_app_definition_path, :flash => { :error => _(e.) } end end |
#destroy ⇒ Object
56 57 58 59 60 61 62 |
# File 'app/controllers/foreman_acd/app_definitions_controller.rb', line 56 def destroy if @app_definition.destroy process_success else process_error end end |
#edit ⇒ Object
45 46 |
# File 'app/controllers/foreman_acd/app_definitions_controller.rb', line 45 def edit end |
#export ⇒ Object
79 80 81 82 83 84 85 86 87 |
# File 'app/controllers/foreman_acd/app_definitions_controller.rb', line 79 def export dir_path = "#{Dir.mktmpdir}/#{@app_definition.name}.tar" `tar -cvf "#{dir_path}" "#{@app_definition.ansible_playbook.path}" #{export_app_template_data.path}` logger.info("Successfully created application template tar file for #{@app_definition.name}") send_file dir_path rescue StandardError => e logger.info("Export of #{@app_definition.name} failed with the error: #{e}") redirect_to app_definitions_path, :flash => { :error => _(e.) } end |
#handle_file_upload ⇒ Object
89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
# File 'app/controllers/foreman_acd/app_definitions_controller.rb', line 89 def handle_file_upload return unless params[:app_definition_file] && (raw_directory = params[:app_definition_file]) begin dir = Dir.mktmpdir untar_import_directory(raw_directory, dir) ansible_file = Dir.glob("#{dir}/tmp/*.yaml") data = JSON.parse(YAML.load_file(ansible_file[0]).to_json) if ansible_file ansible_playbook_import = data.find { |d| d if d['ansible_playbook'] } session[:ansible_playbook_params] = { :dir => dir, :ansible_playbook => ansible_playbook_import['ansible_playbook'] } render :json => { :ansible_services => create_ansible_services(data, ansible_playbook_import) }, :status => :ok rescue StandardError => e render :json => { :status => 'error', :message => e }, :status => :internal_server_error end end |
#import ⇒ Object
75 76 77 |
# File 'app/controllers/foreman_acd/app_definitions_controller.rb', line 75 def import @app_definition = AppDefinition.new end |
#index ⇒ Object
14 15 16 |
# File 'app/controllers/foreman_acd/app_definitions_controller.rb', line 14 def index @app_definitions = resource_base.search_for(params[:search], :order => params[:order]).paginate(:page => params[:page]) end |
#new ⇒ Object
27 28 29 |
# File 'app/controllers/foreman_acd/app_definitions_controller.rb', line 27 def new @app_definition = AppDefinition.new end |
#read_ansible_playbooks ⇒ Object
18 19 20 21 |
# File 'app/controllers/foreman_acd/app_definitions_controller.rb', line 18 def read_ansible_playbooks # Only use ansible playbooks for which the user pressed import group vars once. @ansible_playbooks = AnsiblePlaybook.where.not(:vars => nil).map { |elem| { elem.id => elem.name } }.reduce({}) { |h, v| h.merge v } end |
#read_hostgroups ⇒ Object
23 24 25 |
# File 'app/controllers/foreman_acd/app_definitions_controller.rb', line 23 def read_hostgroups @hostgroups = Hostgroup.all.map { |elem| { elem.id => elem.name } }.reduce({}) { |h, v| h.merge v } end |
#update ⇒ Object
48 49 50 51 52 53 54 |
# File 'app/controllers/foreman_acd/app_definitions_controller.rb', line 48 def update if @app_definition.update(app_definition_params) process_success else process_error end end |