app/models/miq_provision_workflow.rb
class MiqProvisionWorkflow < MiqRequestWorkflow
def self.base_model
MiqProvisionWorkflow
end
# Find the appropriate workflow class for the given 'platform' string.
#
# @example openstack
# "ManageIQ::Providers::Openstack::CloudManager::ProvisionWorkflow"
#
# @param platform [String]
# A string of the one of the ManageIQ providers. The case of this
# string is ignored.
#
# @return [Constant] A scoped provider constant name.
#
def self.class_for_platform(platform)
classy = find_matching_constant("ManageIQ::Providers::#{platform}") ? platform : platform.classify
find_matching_constant("MiqProvision#{classy}Workflow") ||
find_matching_constant("ManageIQ::Providers::#{classy}::CloudManager::ProvisionWorkflow") ||
find_matching_constant("ManageIQ::Providers::#{classy}::InfraManager::ProvisionWorkflow")
end
def self.find_matching_constant(string)
const = string.safe_constantize
const if const.try(:name) == string
end
private_class_method :find_matching_constant
def self.class_for_source(source_or_id)
source = case source_or_id
when ActiveRecord::Base then source_or_id
else VmOrTemplate.find_by(:id => source_or_id)
end
return nil if source.nil?
source.class.manager_class.provision_workflow_class
end
def self.encrypted_options_fields
[:root_password]
end
def self.request_class
MiqProvisionRequest
end
def self.automate_dialog_request
'UI_PROVISION_INFO'
end
def self.default_dialog_file
'miq_provision_dialogs'
end
def supports_pxe?
false
end
def supports_iso?
false
end
def supports_cloud_init?
false
end
def supports_sysprep?
false
end
def supports_customization_template?
supports_pxe? || supports_iso? || supports_cloud_init? || supports_sysprep?
end
def continue_request(values)
return false unless validate(values)
exit_pre_dialog if @running_pre_dialog
password_helper(@values, false) # Decrypt passwords in the hash for the UI
@dialogs = get_dialogs
@last_vm_id = get_value(@values[:src_vm_id])
@tags = nil # Force tags to reload
set_default_values
true
end
end