Project

General

Profile

Download (3.91 KB) Statistics
| Branch: | Tag: | Revision:
334d0359 Amos Benari
class ComputeResourcesController < ApplicationController
include Foreman::Controller::AutoCompleteSearch
c6e02bd3 Joseph Magen
AJAX_REQUESTS = %w{template_selected cluster_selected}
334d0359 Amos Benari
before_filter :ajax_request, :only => AJAX_REQUESTS
805358df Jason Montleon
before_filter :find_by_id, :only => [:show, :edit, :update, :destroy, :ping, :associate] + AJAX_REQUESTS
334d0359 Amos Benari
def index
e170c321 Olivier Favre
begin
values = ComputeResource.my_compute_resources.search_for(params[:search], :order => params[:order])
rescue => e
error e.to_s
values = ComputeResource.my_compute_resources.search_for ""
end
76e5dd41 Joseph Mitchell Magen
@compute_resources = values.paginate :page => params[:page]
334d0359 Amos Benari
end

def new
@compute_resource = ComputeResource.new
end

e170c321 Olivier Favre
def show
end

334d0359 Amos Benari
def create
if params[:compute_resource].present? && params[:compute_resource][:provider].present?
@compute_resource = ComputeResource.new_provider params[:compute_resource]
if @compute_resource.save
e170c321 Olivier Favre
# Add the new compute resource to the user's filters
@compute_resource.users << User.current
dd42df0a Ohad Levy
process_success :success_redirect => @compute_resource
334d0359 Amos Benari
else
process_error
end
else
@compute_resource = ComputeResource.new params[:compute_resource]
@compute_resource.valid?
process_error
end
end

def edit
end

805358df Jason Montleon
def associate
count = 0
if @compute_resource.respond_to?(:associated_host)
2ddd6b2c Martin Matuska
@compute_resource.vms(:eager_loading => true).each do |vm|
805358df Jason Montleon
if Host.where(:uuid => vm.identity).empty?
host = @compute_resource.associated_host(vm)
if host.present?
host.uuid = vm.identity
host.compute_resource_id = @compute_resource.id
host.save!(:validate => false) # don't want to trigger callbacks
count += 1
end
end
end
end
process_success(:success_msg => n_("%s VM associated to a host", "%s VMs associated to hosts", count) % count)
end

334d0359 Amos Benari
def update
5bdc1930 Joseph Mitchell Magen
params[:compute_resource].except!(:password) if params[:compute_resource][:password].blank?
334d0359 Amos Benari
if @compute_resource.update_attributes(params[:compute_resource])
process_success
else
process_error
end
end

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

#ajax methods
def provider_selected
@compute_resource = ComputeResource.new_provider :provider => params[:provider]
render :partial => "compute_resources/form", :locals => { :compute_resource => @compute_resource }
end

8b80115c Amos Benari
def ping
respond_to do |format|
format.json {render :json => errors_hash(@compute_resource.ping)}
end
end

334d0359 Amos Benari
def test_connection
1eaac1c6 Joseph Mitchell Magen
# cr_id is posted from AJAX function. cr_id is nil if new
Rails.logger.info "CR_ID IS #{params[:cr_id]}"
if params[:cr_id].present? && params[:cr_id] != 'null'
@compute_resource = ComputeResource.find(params[:cr_id])
params[:compute_resource].delete(:password) if params[:compute_resource][:password].blank?
@compute_resource.attributes = params[:compute_resource]
else
@compute_resource = ComputeResource.new_provider(params[:compute_resource])
end
617ee75f Amos Benari
@compute_resource.test_connection :force => true
334d0359 Amos Benari
render :partial => "compute_resources/form", :locals => { :compute_resource => @compute_resource }
end

c6e02bd3 Joseph Magen
def template_selected
compute = @compute_resource.template(params[:template_id])
334d0359 Amos Benari
compute.interfaces
96ede451 Amos Benari
compute.volumes
334d0359 Amos Benari
respond_to do |format|
format.json { render :json => compute }
end
end

def cluster_selected
networks = @compute_resource.networks(:cluster_id => params[:cluster_id])
respond_to do |format|
format.json { render :json => networks }
end
end

private

def find_by_id
@compute_resource = ComputeResource.find(params[:id])
e170c321 Olivier Favre
not_found and return unless @compute_resource
deny_access and return unless ComputeResource.my_compute_resources.include?(@compute_resource)
334d0359 Amos Benari
end
end