app/controllers/ems_cloud_controller.rb
class EmsCloudController < ApplicationController
include Mixins::GenericListMixin
include Mixins::GenericShowMixin
include Mixins::EmsCommon # common methods for EmsInfra/Cloud controllers
include Mixins::GenericSessionMixin
include Mixins::DashboardViewMixin
include Mixins::BreadcrumbsMixin
before_action :check_privileges
before_action :get_session_data
after_action :cleanup_action
after_action :set_session_data
# when methods are evaluated from this constant and return true that means: column is displayed
DISPLAY_GTL_METHODS = [
:user_super_admin?
].freeze
def user_super_admin?
current_user.super_admin_user?
end
def self.model
ManageIQ::Providers::CloudManager
end
def self.table_name
@table_name ||= "ems_cloud"
end
def show
@breadcrumbs = [{:name => _('Cloud Providers'), :url => '/ems_cloud/show_list'}]
super
end
# Special EmsCloud link builder for restful routes
def show_link(ems, options = {})
ems_cloud_path(ems.id, options)
end
def restful?
true
end
def launch_console
open_console('ems_native_console')
end
menu_section :clo
feature_for_actions "#{controller_name}_show_list", *ADV_SEARCH_ACTIONS
has_custom_buttons
def sync_users
assert_privileges('ems_cloud_user_sync')
ems = find_record_with_rbac(model, params[:id])
@in_a_form = true
drop_breadcrumb(:name => _("Sync Users"), :url => "/ems_cloud/sync_users")
selected_admin_role = params[:admin_role]
selected_member_role = params[:member_role]
selected_password = params[:password]
selected_verify = params[:verify]
if params[:cancel]
redirect_to(ems_cloud_path(params[:id]))
return
end
if params[:sync]
has_error = false
if selected_password != selected_verify
add_flash(_("Password/Confirm Password do not match"), :error)
has_error = true
end
if selected_admin_role.blank?
add_flash(_("An admin role must be selected."), :error)
has_error = true
end
if selected_member_role.blank?
add_flash(_("A member role must be selected."), :error)
has_error = true
end
if has_error
render_sync_page(ems, selected_admin_role, selected_member_role, selected_password, selected_verify)
else
password_digest = nil
password_digest = BCrypt::Password.create(selected_password) if selected_password.present?
ems.sync_users_queue(session[:userid], selected_admin_role, selected_member_role, password_digest)
flash_to_session(_("Sync users queued."))
redirect_to(ems_cloud_path(params[:id]))
end
else
render_sync_page(ems, selected_admin_role, selected_member_role, selected_password, selected_verify)
end
end
def render_sync_page(ems, selected_admin_role, selected_member_role, selected_password, selected_verify)
admin_roles = Rbac::Filterer.filtered(MiqUserRole).pluck(:name, :id).to_h
member_roles = admin_roles.dup
admin_roles["Choose Admin Role"] = nil
member_roles["Choose Member Role"] = nil
render(:locals => {:selected_admin_role => selected_admin_role,
:selected_member_role => selected_member_role,
:selected_password => selected_password,
:selected_verify => selected_verify,
:admin_roles => admin_roles,
:member_roles => member_roles,
:ems => ems})
end
def download_data
assert_privileges('ems_cloud_show_list')
super
end
def download_summary_pdf
assert_privileges('ems_cloud_show')
super
end
def breadcrumbs_options
{
:breadcrumbs => [
{:title => _("Compute")},
{:title => _("Clouds")},
{:title => _("Providers"), :url => controller_url},
],
:record_info => @ems,
}.compact
end
end