Skip to content

Commit

Permalink
Create dialog for provisioning physical servers
Browse files Browse the repository at this point in the history
  • Loading branch information
skovic committed Oct 31, 2017
1 parent eb16d72 commit a1ca989
Show file tree
Hide file tree
Showing 6 changed files with 132 additions and 10 deletions.
30 changes: 21 additions & 9 deletions app/controllers/application_controller/miq_request_methods.rb
Expand Up @@ -292,14 +292,20 @@ def _build_whatever_grid(what, list, headers, sort_order, sort_by, integer_field
def build_configured_system_grid(configured_systems, sort_order = nil, sort_by = nil)
sort_by ||= "hostname"
sort_order ||= "ASC"

headers = {
"hostname" => _("Hostname"),
"configuration_location_name" => _("Configuration Location"),
"configuration_organization_name" => _("Configuration Organization"),
"operating_system_flavor_name" => _("Operating System"),
"provider_name" => _("Provider"),
}
headers = {}
if @edit[:wf].kind_of?(PhysicalServerProvisionWorkflow)
headers = {
"name" => _("Server Name")
}
else
headers = {
"hostname" => _("Hostname"),
"configuration_location_name" => _("Configuration Location"),
"configuration_organization_name" => _("Configuration Organization"),
"operating_system_flavor_name" => _("Operating System"),
"provider_name" => _("Provider"),
}
end

@configured_systems = _build_whatever_grid('configured_system', configured_systems, headers, sort_order, sort_by)
end
Expand Down Expand Up @@ -513,6 +519,7 @@ def dialog_partial_for_workflow
when ManageIQ::Providers::Foreman::ConfigurationManager::ProvisionWorkflow then "prov_configured_system_foreman_dialog"
when MiqHostProvisionWorkflow then "prov_host_dialog"
when VmMigrateWorkflow then "prov_vm_migrate_dialog"
when PhysicalServerProvisionWorkflow then "prov_physical_server_dialog"
end
end

Expand Down Expand Up @@ -845,7 +852,8 @@ def prov_set_form_vars(req = nil)
@edit[:new] = @edit[:new].merge pre_prov_values.select { |k| !@edit[:new].keys.include?(k) }
end

if @edit[:wf].kind_of?(ManageIQ::Providers::Foreman::ConfigurationManager::ProvisionWorkflow)
if @edit[:wf].kind_of?(ManageIQ::Providers::Foreman::ConfigurationManager::ProvisionWorkflow) ||
@edit[:wf].kind_of?(PhysicalServerProvisionWorkflow)
# BD TODO
else
@edit[:ds_sortdir] ||= "DESC"
Expand Down Expand Up @@ -944,6 +952,10 @@ def workflow_instance_from_vars(req)
@edit[:prov_type] = "ConfiguredSystem"
@edit[:new][:src_configured_system_ids] = params[:prov_id].kind_of?(Array) ? params[:prov_id] : [params[:prov_id]]
wf_type = ManageIQ::Providers::Foreman::ConfigurationManager::ProvisionWorkflow
elsif @edit[:org_controller] == "physical_server"
@edit[:prov_type] = "PhysicalServer"
@edit[:new][:src_configured_system_ids] = params[:prov_id].kind_of?(Array) ? params[:prov_id] : [params[:prov_id]]
wf_type = PhysicalServerProvisionWorkflow
else
@edit[:prov_type] = "Host"
if @edit[:new].empty?
Expand Down
13 changes: 12 additions & 1 deletion app/controllers/physical_server_controller.rb
Expand Up @@ -39,7 +39,7 @@ def textual_group_list
%i(properties networks relationships power_management assets firmware_details network_adapters smart_management),
]
end
helper_method :textual_group_list
helper_method(:textual_group_list)

def button
assign_policies(PhysicalServer) if params[:pressed] == "physical_server_protect"
Expand All @@ -53,4 +53,15 @@ def button
javascript_redirect(:action => 'show', :id => @record.id, :display => 'timeline')
end
end

def provision
provisioning_ids = find_checked_ids_with_rbac(PhysicalServer)
provisioning_ids.push(find_id_with_rbac(PhysicalServer, params[:id])) if provisioning_ids.empty?

javascript_redirect(:controller => "miq_request",
:action => "prov_edit",
:prov_id => provisioning_ids,
:org_controller => "physical_server",
:escape => false)
end
end
20 changes: 20 additions & 0 deletions app/helpers/application_helper/toolbar/physical_server_center.rb
Expand Up @@ -193,6 +193,26 @@ class ApplicationHelper::Toolbar::PhysicalServerCenter < ApplicationHelper::Tool
),
]
),
select(
:physical_server_lifecycle_choice,
'fa fa-recycle fa-lg',
t = N_('Lifecycle'),
t,
:enabled => true,
:items => [
button(
:physical_server_provision,
'pficon pficon-add-circle-o fa-lg',
t = N_('Provision Physical Server'),
t,
:url => "provision",
:url_parms => "main_div",
:enabled => true,
:onwhen => "0+",
:klass => ApplicationHelper::Button::ConfiguredSystemProvision
)
]
)
]
)

Expand Down
20 changes: 20 additions & 0 deletions app/helpers/application_helper/toolbar/physical_servers_center.rb
Expand Up @@ -217,6 +217,26 @@ class ApplicationHelper::Toolbar::PhysicalServersCenter < ApplicationHelper::Too
),
]
),
select(
:physical_server_lifecycle_choice,
'fa fa-recycle fa-lg',
t = N_('Lifecycle'),
t,
:enabled => true,
:items => [
button(
:physical_server_provision,
'pficon pficon-add-circle-o fa-lg',
t = N_('Provision Physical Server'),
t,
:url => "provision",
:url_parms => "main_div",
:enabled => true,
:onwhen => "0+",
:klass => ApplicationHelper::Button::ConfiguredSystemProvision
)
]
)
]
)
end
58 changes: 58 additions & 0 deletions app/views/miq_request/_prov_physical_server_dialog.html.haml
@@ -0,0 +1,58 @@
-# wf The workflow object currently in use
-# dialog The name (symbol) of the selected dialog
- current_tab = @edit && @edit[:new] ? @edit[:new][:current_tab_key] : @options[:current_tab_key]
%br

- if dialog == current_tab
- case current_tab
- when :requester
- keys = [:owner_email, :owner_first_name, :owner_last_name, :owner_address, :owner_city, :owner_state, :owner_zip, :owner_country, :owner_title, :owner_company, :owner_department, :owner_office, :owner_phone, :owner_phone_mobile, :request_notes]
= render(:partial => "prov_dialog_fieldset",
:locals => {:workflow => wf,
:dialog => dialog,
:label => _("Request Information"),
:keys => keys})
- keys = [:owner_manager, :owner_manager_mail, :owner_manager_mail]
= render(:partial => "prov_dialog_fieldset",
:locals => {:workflow => wf,
:dialog => dialog,
:label => _("Manager"),
:keys => keys})
- when :purpose
- keys = [:tag_ids]
= render(:partial => "prov_dialog_fieldset",
:locals => {:workflow => wf,
:dialog => dialog,
:label => _("Select Tags to apply"),
:keys => keys})
- when :service
- keys = [:src_configured_system_ids, :src_configuration_profile_id]
= render(:partial => "prov_dialog_fieldset",
:locals => {:workflow => wf,
:dialog => dialog,
:label => _("Physical Servers"),
:keys => keys})
- when :customize
- keys = [:root_password]
= render(:partial => "prov_dialog_fieldset",
:locals => {:workflow => wf,
:dialog => dialog,
:label => _("Credentials"),
:prefix => "miq_request/",
:keys => keys})
- keys = [:hostname, :ip_addr]
= render(:partial => "prov_dialog_fieldset",
:locals => {:workflow => wf,
:dialog => dialog,
:label => _("IP Address Information"),
:prefix => "miq_request/",
:keys => keys})
- when :schedule
- has_schedule_time = (@edit && @edit[:new] && @edit[:new][:schedule_type] && @edit[:new][:schedule_type][0] == "schedule") || (@options && @options[:schedule_type] && @options[:schedule_type][0] == "schedule")
- keys = [:schedule_type, has_schedule_time ? :schedule_time : nil, :stateless].compact
= render(:partial => "prov_dialog_fieldset",
:locals => {:workflow => wf,
:dialog => dialog,
:label => _("Schedule Info"),
:keys => keys})
1 change: 1 addition & 0 deletions config/routes.rb
Expand Up @@ -1335,6 +1335,7 @@
quick_search
tl_chooser
wait_for_task
provision
) +
adv_search_post +
exp_post +
Expand Down

0 comments on commit a1ca989

Please sign in to comment.