From 604bacd21306f3cea02b21e235f25153a272cc41 Mon Sep 17 00:00:00 2001 From: Aparna Karve Date: Mon, 22 May 2017 14:05:39 -0700 Subject: [PATCH] Removed _verify references in ems_common Also removed all the related `@edit` references --- app/controllers/ems_common.rb | 421 ---------------------------------- 1 file changed, 421 deletions(-) diff --git a/app/controllers/ems_common.rb b/app/controllers/ems_common.rb index 5e7e0fdf08e4..8bec6070c0e2 100644 --- a/app/controllers/ems_common.rb +++ b/app/controllers/ems_common.rb @@ -111,46 +111,6 @@ def new :url => "/#{controller_name}/new") end - def create - assert_privileges("#{permission_prefix}_new") - return unless load_edit("ems_edit__new") - get_form_vars - case params[:button] - when "add" - if @edit[:new][:emstype].blank? - add_flash(_("Type is required"), :error) - end - - if @edit[:new][:emstype] == "scvmm" && @edit[:new][:default_security_protocol] == "kerberos" && @edit[:new][:realm].blank? - add_flash(_("Realm is required"), :error) - end - - unless @flash_array - add_ems = model.model_from_emstype(@edit[:new][:emstype]).new - set_record_vars(add_ems) - end - if !@flash_array && valid_record?(add_ems) && add_ems.save - AuditEvent.success(build_created_audit(add_ems, @edit)) - session[:edit] = nil # Clear the edit object from the session object - javascript_redirect :action => 'show_list', :flash_msg => _("%{model} \"%{name}\" was saved") % {:model => ui_lookup(:tables => @table_name), :name => add_ems.name} - else - @in_a_form = true - unless @flash_array - @edit[:errors].each { |msg| add_flash(msg, :error) } - add_ems.errors.each do |field, msg| - add_flash("#{add_ems.class.human_attribute_name(field)} #{msg}", :error) - end - end - drop_breadcrumb(:name => _("Add New %{table}") % {:table => ui_lookup(:table => @table_name)}, - :url => "/#{controller_name}/new") - javascript_flash - end - when "validate" - verify_ems = model.model_from_emstype(@edit[:new][:emstype]).new - validate_credentials verify_ems - end - end - def edit assert_privileges("#{permission_prefix}_edit") begin @@ -167,107 +127,6 @@ def edit :url => "/#{controller_name}/#{@ems.id}/edit") end - def update - assert_privileges("#{permission_prefix}_edit") - return unless load_edit("ems_edit__#{params[:id]}") - get_form_vars - case params[:button] - when "cancel" then update_button_cancel - when "save" then update_button_save - when "reset" then update_button_reset - when "validate" then - @changed = session[:changed] - update_button_validate - end - end - - def update_button_cancel - session[:edit] = nil # clean out the saved info - _model = model - flash = _("Edit of %{model} \"%{name}\" was cancelled by the user") % - {:model => ui_lookup(:model => _model.to_s), :name => @ems.name} - js_args = {:action => @lastaction, - :id => @ems.id, - :display => session[:ems_display], - :flash_msg => flash, - :record => @ems - } - javascript_redirect(javascript_process_redirect_args(js_args)) - end - private :update_button_cancel - - def edit_changed? - @edit[:new] != @edit[:current] - end - - def update_button_save - changed = edit_changed? - update_ems = find_record_with_rbac(model, params[:id]) - set_record_vars(update_ems) - if valid_record?(update_ems) && update_ems.save - update_ems.reload - flash = _("%{model} \"%{name}\" was saved") % - {:model => ui_lookup(:model => model.to_s), :name => update_ems.name} - AuditEvent.success(build_saved_audit(update_ems, @edit)) - session[:edit] = nil # clean out the saved info - js_args = {:action => 'show', :id => @ems.id.to_s, :flash_msg => flash, :record => @ems} - javascript_redirect(javascript_process_redirect_args(js_args)) - return - else - @edit[:errors].each { |msg| add_flash(msg, :error) } - update_ems.errors.each do |field, msg| - add_flash("#{field.to_s.capitalize} #{msg}", :error) - end - - breadcrumb_url = "/#{controller_name}/edit/#{@ems.id}" - - breadcrumb_url = "/#{controller_name}/#{@ems.id}/edit" if restful_routed?(model) - - drop_breadcrumb(:name => _("Edit %{table} '%{name}'") % {:table => ui_lookup(:table => @table_name), - :name => @ems.name}, - :url => breadcrumb_url) - @in_a_form = true - session[:changed] = changed - @changed = true - render_flash - end - end - private :update_button_save - - def update_button_reset - params[:edittype] = @edit[:edittype] # remember the edit type - add_flash(_("All changes have been reset"), :warning) - @in_a_form = true - set_verify_status - session[:flash_msgs] = @flash_array.dup # Put msgs in session for next transaction - javascript_redirect :action => 'edit', :id => @ems.id.to_s - end - private :update_button_reset - - def update_button_validate - verify_ems = find_record_with_rbac(model, params[:id]) - validate_credentials verify_ems - end - private :update_button_validate - - def validate_credentials(verify_ems) - set_record_vars(verify_ems, :validate) - @in_a_form = true - @changed = session[:changed] - - # validate button should say "revalidate" if the form is unchanged - revalidating = !edit_changed? - result, details = verify_ems.authentication_check(params[:type], :save => revalidating) - if result - add_flash(_("Credential validation was successful")) - else - add_flash(_("Credential validation was not successful: %{details}") % {:details => details}, :error) - end - - render_flash - end - private :validate_credentials - # handle buttons pressed on the button bar def button @edit = session[:edit] # Restore @edit for adv search box @@ -533,167 +392,9 @@ def generate_breadcrumb(name, url, replace = false) drop_breadcrumb({:name => name, :url => url}, replace) end - def set_verify_status - edit_new = @edit[:new] - if edit_new[:emstype] == "ec2" - if edit_new[:default_userid].blank? || edit_new[:provider_region].blank? - @edit[:default_verify_status] = false - else - @edit[:default_verify_status] = (edit_new[:default_password] == edit_new[:default_verify]) - end - else - if edit_new[:default_userid].blank? || edit_new[:hostname].blank? || edit_new[:emstype].blank? - @edit[:default_verify_status] = false - else - @edit[:default_verify_status] = (edit_new[:default_password] == edit_new[:default_verify]) - end - end - - if edit_new[:metrics_userid].blank? || edit_new[:hostname].blank? || edit_new[:emstype].blank? - @edit[:metrics_verify_status] = false - else - @edit[:metrics_verify_status] = (edit_new[:metrics_password] == edit_new[:metrics_verify]) - end - - if edit_new[:bearer_token].blank? || edit_new[:hostname].blank? || edit_new[:emstype].blank? - @edit[:bearer_verify_status] = false - else - @edit[:bearer_verify_status] = true - end - - # check if any of amqp_userid, amqp_password, amqp_verify, :hostname, :emstype are blank - if any_blank_fields?(edit_new, [:amqp_userid, :amqp_password, :amqp_verify, :hostname, :emstype]) - @edit[:amqp_verify_status] = false - else - @edit[:amqp_verify_status] = (edit_new[:amqp_password] == edit_new[:amqp_verify]) - end - end - - # Validate the ems record fields - def valid_record?(ems) - @edit[:errors] = [] - if ems.emstype == "scvmm" && ems.security_protocol == "kerberos" && ems.realm.blank? - add_flash(_("Realm is required"), :error) - end - if !ems.authentication_password.blank? && ems.authentication_userid.blank? - @edit[:errors].push(_("Username must be entered if Password is entered")) - end - if @edit[:new][:password] != @edit[:new][:verify] - @edit[:errors].push(_("Password/Verify Password do not match")) - end - if ems.supports_authentication?(:metrics) && @edit[:new][:metrics_password] != @edit[:new][:metrics_verify] - @edit[:errors].push(_("C & U Database Login Password and Verify Password fields do not match")) - end - if ems.kind_of?(ManageIQ::Providers::Vmware::InfraManager) - unless @edit[:new][:host_default_vnc_port_start] =~ /^\d+$/ || @edit[:new][:host_default_vnc_port_start].blank? - @edit[:errors].push(_("Default Host VNC Port Range Start must be numeric")) - end - unless @edit[:new][:host_default_vnc_port_end] =~ /^\d+$/ || @edit[:new][:host_default_vnc_port_end].blank? - @edit[:errors].push(_("Default Host VNC Port Range End must be numeric")) - end - unless (@edit[:new][:host_default_vnc_port_start].blank? && - @edit[:new][:host_default_vnc_port_end].blank?) || - (!@edit[:new][:host_default_vnc_port_start].blank? && - !@edit[:new][:host_default_vnc_port_end].blank?) - @edit[:errors].push(_("To configure the Host Default VNC Port Range, both start and end ports are required")) - end - if !@edit[:new][:host_default_vnc_port_start].blank? && - !@edit[:new][:host_default_vnc_port_end].blank? - if @edit[:new][:host_default_vnc_port_end].to_i < @edit[:new][:host_default_vnc_port_start].to_i - @edit[:errors].push(_("The Host Default VNC Port Range ending port must be equal to or higher than the starting point")) - end - end - end - @edit[:errors].empty? - end - # Set form variables for edit def set_form_vars form_instance_vars - - @edit = {} - @edit[:ems_id] = @ems.id - @edit[:key] = "ems_edit__#{@ems.id || "new"}" - @edit[:new] = {} - @edit[:current] = {} - - @edit[:new][:name] = @ems.name - @edit[:new][:provider_region] = @ems.provider_region - @edit[:new][:hostname] = @ems.hostname - @edit[:new][:emstype] = @ems.emstype - @edit[:new][:port] = @ems.port - @edit[:new][:api_version] = @ems.api_version - @edit[:new][:provider_id] = @ems.provider_id - - if @ems.kind_of?(ManageIQ::Providers::Openstack::CloudManager) || - @ems.kind_of?(ManageIQ::Providers::Openstack::InfraManager) - # Special behaviour for OpenStack while keeping it backwards compatible for the rest - @edit[:protocols] = retrieve_openstack_security_protocols - else - @edit[:protocols] = [['Basic (SSL)', 'ssl'], ['Kerberos', 'kerberos']] - end - - if @ems.kind_of?(ManageIQ::Providers::Openstack::CloudManager) || - @ems.kind_of?(ManageIQ::Providers::Openstack::InfraManager) - # Special behaviour for OpenStack while keeping it backwards compatible for the rest - @edit[:new][:default_security_protocol] = @ems.security_protocol ? @ems.security_protocol : 'ssl' - else - if @ems.id - # for existing provider before this fix, set default to ssl - @edit[:new][:default_security_protocol] = @ems.security_protocol ? @ems.security_protocol : 'ssl' - else - @edit[:new][:default_security_protocol] = 'kerberos' - end - end - - @edit[:new][:realm] = @ems.realm if @edit[:new][:emstype] == "scvmm" - if @ems.zone.nil? || @ems.my_zone == "" - @edit[:new][:zone] = "default" - else - @edit[:new][:zone] = @ems.my_zone - end - - @edit[:server_zones] = Zone.order('lower(description)').collect { |z| [z.description, z.name] } - - @edit[:openstack_infra_providers] = ManageIQ::Providers::Openstack::Provider.order('lower(name)').each_with_object([["---", nil]]) do |openstack_infra_provider, x| - x.push([openstack_infra_provider.name, openstack_infra_provider.id]) - end - - @edit[:openstack_api_versions] = retrieve_openstack_api_versions - @edit[:nuage_api_versions] = retrieve_nuage_api_versions - @edit[:vmware_cloud_api_versions] = retrieve_vmware_cloud_api_versions - - @edit[:new][:default_userid] = @ems.authentication_userid - @edit[:new][:default_password] = @ems.authentication_password - @edit[:new][:default_verify] = @ems.authentication_password - - @edit[:new][:metrics_userid] = @ems.has_authentication_type?(:metrics) ? @ems.authentication_userid(:metrics).to_s : "" - @edit[:new][:metrics_password] = @ems.has_authentication_type?(:metrics) ? @ems.authentication_password(:metrics).to_s : "" - @edit[:new][:metrics_verify] = @ems.has_authentication_type?(:metrics) ? @ems.authentication_password(:metrics).to_s : "" - - @edit[:new][:amqp_userid] = @ems.has_authentication_type?(:amqp) ? @ems.authentication_userid(:amqp).to_s : "" - @edit[:new][:amqp_password] = @ems.has_authentication_type?(:amqp) ? @ems.authentication_password(:amqp).to_s : "" - @edit[:new][:amqp_verify] = @ems.has_authentication_type?(:amqp) ? @ems.authentication_password(:amqp).to_s : "" - - @edit[:new][:ssh_keypair_userid] = @ems.has_authentication_type?(:ssh_keypair) ? @ems.authentication_userid(:ssh_keypair).to_s : "" - @edit[:new][:ssh_keypair_password] = @ems.has_authentication_type?(:ssh_keypair) ? @ems.authentication_key(:ssh_keypair).to_s : "" - - @edit[:new][:bearer_token] = @ems.has_authentication_type?(:bearer) ? @ems.authentication_token(:bearer).to_s : "" - @edit[:new][:bearer_verify] = @ems.has_authentication_type?(:bearer) ? @ems.authentication_token(:bearer).to_s : "" - - if @ems.kind_of?(ManageIQ::Providers::Vmware::InfraManager) - @edit[:new][:host_default_vnc_port_start] = @ems.host_default_vnc_port_start.to_s - @edit[:new][:host_default_vnc_port_end] = @ems.host_default_vnc_port_end.to_s - end - @edit[:ems_types] = model.supported_types_and_descriptions_hash - @edit[:saved_default_verify_status] = nil - @edit[:saved_metrics_verify_status] = nil - @edit[:saved_bearer_verify_status] = nil - @edit[:saved_amqp_verify_status] = nil - set_verify_status - - @edit[:current] = @edit[:new].dup - session[:edit] = @edit end def form_instance_vars @@ -775,113 +476,6 @@ def retrieve_hawkular_security_protocols [_('Non-SSL'), 'non-ssl']] end - # Get variables from edit form - def get_form_vars - @ems = @edit[:ems_id] ? model.find_by_id(@edit[:ems_id]) : model.new - - @edit[:new][:name] = params[:name] if params[:name] - @edit[:new][:ipaddress] = @edit[:new][:hostname] = "" if params[:server_emstype] - @edit[:new][:provider_region] = params[:provider_region] if params[:provider_region] - @edit[:new][:hostname] = params[:hostname] if params[:hostname] - if params[:server_emstype] - @edit[:new][:provider_region] = @ems.provider_region - @edit[:new][:emstype] = params[:server_emstype] - if ["openstack", "openstack_infra"].include?(params[:server_emstype]) - @edit[:new][:port] = @ems.port ? @ems.port : 5000 - @edit[:new][:api_version] = @ems.api_version ? @ems.api_version : 'v2' - @edit[:new][:default_security_protocol] = @ems.security_protocol ? @ems.security_protocol : 'ssl' - elsif params[:server_emstype] == ManageIQ::Providers::Kubernetes::ContainerManager.ems_type - @edit[:new][:port] = @ems.port ? @ems.port : ManageIQ::Providers::Kubernetes::ContainerManager::DEFAULT_PORT - elsif params[:server_emstype] == ManageIQ::Providers::Openshift::ContainerManager.ems_type - @edit[:new][:port] = @ems.port ? @ems.port : ManageIQ::Providers::Openshift::ContainerManager::DEFAULT_PORT - else - @edit[:new][:port] = nil - end - - if ["openstack", "openstack_infra"].include?(params[:server_emstype]) - @edit[:protocols] = retrieve_openstack_security_protocols - else - @edit[:protocols] = [[_('Basic (SSL)'), 'ssl'], ['Kerberos', 'kerberos']] - end - end - @edit[:new][:port] = params[:port] if params[:port] - @edit[:new][:api_version] = params[:api_version] if params[:api_version] - @edit[:new][:provider_id] = params[:provider_id] if params[:provider_id] - @edit[:new][:zone] = params[:server_zone] if params[:server_zone] - - @edit[:new][:default_userid] = params[:default_userid] if params[:default_userid] - @edit[:new][:default_password] = params[:default_password] if params[:default_password] - @edit[:new][:default_verify] = params[:default_verify] if params[:default_verify] - - @edit[:new][:metrics_userid] = params[:metrics_userid] if params[:metrics_userid] - @edit[:new][:metrics_password] = params[:metrics_password] if params[:metrics_password] - @edit[:new][:metrics_verify] = params[:metrics_verify] if params[:metrics_verify] - - @edit[:new][:amqp_userid] = params[:amqp_userid] if params[:amqp_userid] - @edit[:new][:amqp_password] = params[:amqp_password] if params[:amqp_password] - @edit[:new][:amqp_verify] = params[:amqp_verify] if params[:amqp_verify] - - @edit[:new][:ssh_keypair_userid] = params[:ssh_keypair_userid] if params[:ssh_keypair_userid] - @edit[:new][:ssh_keypair_password] = params[:ssh_keypair_password] if params[:ssh_keypair_password] - - @edit[:new][:bearer_token] = params[:bearer_token] if params[:bearer_token] - @edit[:new][:bearer_verify] = params[:bearer_verify] if params[:bearer_verify] - - @edit[:new][:host_default_vnc_port_start] = params[:host_default_vnc_port_start] if params[:host_default_vnc_port_start] - @edit[:new][:host_default_vnc_port_end] = params[:host_default_vnc_port_end] if params[:host_default_vnc_port_end] - @edit[:new][:default_security_protocol] = params[:default_security_protocol] if params[:default_security_protocol] - # TODO: (julian) Silly hack until we move Infra over to Angular to be consistant with Cloud - @edit[:new][:default_security_protocol] = params[:security_protocol] if params[:security_protocol] - @edit[:new][:amqp_security_protocol] = params[:amqp_security_protocol] if params[:amqp_security_protocol] - @edit[:new][:realm] = nil if params[:default_security_protocol] - @edit[:new][:realm] = params[:realm] if params[:realm] - restore_password if params[:restore_password] - set_verify_status - end - - # Set record variables to new values - def set_record_vars(ems, mode = nil) - ems.name = @edit[:new][:name] - ems.provider_region = @edit[:new][:provider_region] - ems.hostname = @edit[:new][:hostname].strip unless @edit[:new][:hostname].nil? - ems.port = @edit[:new][:port] if ems.supports_port? - ems.api_version = @edit[:new][:api_version] if ems.supports_api_version? - ems.security_protocol = @edit[:new][:default_security_protocol] if ems.supports_security_protocol? - ems.provider_id = @edit[:new][:provider_id] if ems.supports_provider_id? - ems.zone = Zone.find_by_name(@edit[:new][:zone]) - - if ems.kind_of?(ManageIQ::Providers::Microsoft::InfraManager) - # TODO should be refactored to support methods, although there seems to be no UI for Microsoft provider - # TODO: (julian) Silly hack until we move Infra over to Angular to be consistant with Cloud - ems.security_protocol = @edit[:new][:default_security_protocol] - ems.realm = @edit[:new][:realm] - end - - if ems.kind_of?(ManageIQ::Providers::Vmware::InfraManager) - ems.host_default_vnc_port_start = @edit[:new][:host_default_vnc_port_start].blank? ? nil : @edit[:new][:host_default_vnc_port_start].to_i - ems.host_default_vnc_port_end = @edit[:new][:host_default_vnc_port_end].blank? ? nil : @edit[:new][:host_default_vnc_port_end].to_i - end - - creds = {} - creds[:default] = {:userid => @edit[:new][:default_userid], :password => @edit[:new][:default_password]} unless @edit[:new][:default_userid].blank? - if ems.supports_authentication?(:metrics) && !@edit[:new][:metrics_userid].blank? - creds[:metrics] = {:userid => @edit[:new][:metrics_userid], :password => @edit[:new][:metrics_password]} - end - if ems.supports_authentication?(:amqp) && !@edit[:new][:amqp_userid].blank? - creds[:amqp] = {:userid => @edit[:new][:amqp_userid], :password => @edit[:new][:amqp_password]} - end - if ems.supports_authentication?(:ssh_keypair) && !@edit[:new][:ssh_keypair_userid].blank? - creds[:ssh_keypair] = {:userid => @edit[:new][:ssh_keypair_userid], :auth_key => @edit[:new][:ssh_keypair_password]} - end - if ems.supports_authentication?(:bearer) && !@edit[:new][:bearer_token].blank? - creds[:bearer] = {:auth_key => @edit[:new][:bearer_token]} - end - if ems.supports_authentication?(:auth_key) && !@edit[:new][:service_account].blank? - creds[:default] = {:auth_key => @edit[:new][:service_account], :userid => "_"} - end - ems.update_authentication(creds, :save => (mode != :validate)) - end - def process_emss(emss, task) emss, _emss_out_region = filter_ids_in_region(emss, "Provider") assert_rbac(model, emss) @@ -1068,19 +662,4 @@ def show_list_link(ems, options = {}) :action => "show_list", :id => ems.id)) end - - def restore_password - if params[:default_password] - @edit[:new][:default_password] = @edit[:new][:default_verify] = @ems.authentication_password - end - if params[:amqp_password] - @edit[:new][:amqp_password] = @edit[:new][:amqp_verify] = @ems.authentication_password(:amqp) - end - if params[:metrics_password] - @edit[:new][:metrics_password] = @edit[:new][:metrics_verify] = @ems.authentication_password(:metrics) - end - if params[:bearer_token] - @edit[:new][:bearer_token] = @edit[:new][:bearer_verify] = @ems.authentication_token(:bearer) - end - end end