Skip to content

Commit

Permalink
fixes #3134 - disable vSphere fields on host edit, fix clone behavior
Browse files Browse the repository at this point in the history
  • Loading branch information
mmatuska authored and Dominic Cleal committed Oct 8, 2013
1 parent 409d7f1 commit 29769a4
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 20 deletions.
16 changes: 12 additions & 4 deletions app/models/compute_resources/foreman/model/vmware.rb
Expand Up @@ -58,8 +58,8 @@ def networks

def nictypes
{
"E1000" => RbVmomi::VIM::VirtualE1000,
"VMXNET 3" => RbVmomi::VIM::VirtualVmxnet3
"VirtualE1000" => "E1000",
"VirtualVmxnet3" => "VMXNET 3"
}
end

Expand Down Expand Up @@ -94,9 +94,17 @@ def new_vm attr={ }
end

def create_vm args = { }
# Convert interface type to RbVmomi class
dc_networks = networks
args["interfaces_attributes"].each do |key, interface|
interface["type"] = nictypes[interface["type"]] || raise("Unknown NIC type: #{interface["type"]}")
# Convert interface type to RbVmomi class
unless nictypes.has_key? interface["type"]
raise "Unknown NIC type: #{interface["type"]}"
end
interface["type"] = ("RbVmomi::VIM::" + interface["type"]).constantize
# Convert network id into name
net = dc_networks.find { |n| n.id == interface["network"] }
raise "Unknown Network ID: #{interface["network"]}" if net.nil?
interface["network"] = net.name
end

vm = new_vm(args)
Expand Down
18 changes: 11 additions & 7 deletions app/views/compute_resources_vms/form/_vmware.html.erb
@@ -1,4 +1,4 @@
<% new = f.object && f.object.new? -%>
<% new = @host ? @host.created_at.nil? : true -%>
<%= text_f f, :name, :disabled => !new if controller_name != "hosts" %>
<%= selectable_f f, :cpus, 1..compute_resource.max_cpu_count, { }, :class => "input-mini", :disabled => !new %>
<%= text_f f, :memory_mb, :class => "span2", :disabled => !new, :label => _("Memory (MB)") %>
Expand All @@ -10,25 +10,29 @@
<div class="children_fields">
<%= new_child_fields_template(f, :interfaces, {
:object => compute_resource.new_interface,
:partial => 'compute_resources_vms/form/vmware/network', :form_builder_attrs => { :compute_resource => compute_resource } }) %>
:partial => 'compute_resources_vms/form/vmware/network', :form_builder_attrs => { :compute_resource => compute_resource, :new => new } }) %>
<%= field_set_tag _("Network interfaces"), :id => "network_interfaces", :title => _('Networks') do -%>
<%= f.fields_for :interfaces do |i| %>
<%= render 'compute_resources_vms/form/vmware/network', :f => i, :compute_resource => compute_resource %>
<%= render 'compute_resources_vms/form/vmware/network', :f => i, :compute_resource => compute_resource, :new => new %>
<% end -%>
<%= add_child_link '+ ' + _("Add Interface"), :interfaces, { :class => "info", :title => _('add new network interface') } %>
<% if new %>
<%= add_child_link '+ ' + _("Add Interface"), :interfaces, { :class => "info", :title => _('add new network interface') } %>
<% end %>
<% end -%>
</div>

<!--Storage-->
<div class="children_fields">
<%= new_child_fields_template(f, :volumes, {
:object => compute_resource.new_volume,
:partial => 'compute_resources_vms/form/vmware/volume', :form_builder_attrs => { :compute_resource => compute_resource } }) %>
:partial => 'compute_resources_vms/form/vmware/volume', :form_builder_attrs => { :compute_resource => compute_resource, :new => new } }) %>
<%= field_set_tag _("Storage"), :id => "storage_volumes", :title => _('Storage') do -%>
<%= f.fields_for :volumes do |i| %>
<%= render 'compute_resources_vms/form/vmware/volume', :f => i, :compute_resource => compute_resource %>
<%= render 'compute_resources_vms/form/vmware/volume', :f => i, :compute_resource => compute_resource, :new => new %>
<% end -%>
<%= add_child_link '+ ' + _("Add Volume"), :volumes, { :class => "info", :title => _('add new storage volume') } %>
<% if new %>
<%= add_child_link '+ ' + _("Add Volume"), :volumes, { :class => "info", :title => _('add new storage volume') } %>
<% end %>
<% end -%>
</div>

Expand Down
11 changes: 7 additions & 4 deletions app/views/compute_resources_vms/form/vmware/_network.html.erb
@@ -1,12 +1,15 @@
<div class="fields">
<% if (networks = compute_resource.networks).any? -%>
<%= selectable_f f, :type, compute_resource.nictypes.keys, { },
<%= select_f f, :type, compute_resource.nictypes, :first, :last, { },
:class => "span2",
:label => _('NIC type')
:label => _('NIC type'),
:disabled => !new
%>
<%= selectable_f f, :network, networks, { },
<%= select_f f, :network, networks, :id, :name, { },
:class => "span2",
:label => _('Network'),
:help_inline => remove_child_link("X", f, { :method => :'_delete', :title => _('remove network interface'), :class => 'label label-important' }) %>
:disabled => !new,
:help_inline => !new ? nil : remove_child_link("X", f, { :method => :'_delete', :title => _('remove network interface'), :class => 'label label-important' })
%>
<% end -%>
</div>
11 changes: 6 additions & 5 deletions app/views/compute_resources_vms/form/vmware/_volume.html.erb
@@ -1,13 +1,14 @@
<div class="fields">
<%= selectable_f f, :datastore, compute_resource.datastores, { }, :class => "span2", :label => _("Data Store") %>
<%= text_f f, :name, :class => "input-mini", :label => "Name" %>
<%= selectable_f f, :datastore, compute_resource.datastores, { }, :class => "span2", :label => _("Data Store"), :disabled => !new %>
<%= text_f f, :name, :class => "input-mini", :label => "Name", :disabled => !new %>
<%= text_f f, :size_gb,
:class => "input-mini",
:label => _("Size (GB)") %>
:label => _("Size (GB)"),
:disabled => !new %>
<%= checkbox_f f, :thin, {
:checked => true,
:label => _("Thin provision"),
:help_inline => remove_child_link("X", f, { :method => :'_delete', :title => _('remove volume'), :class => 'label label-important' }) },
:disabled => !new,
:help_inline => !new ? nil : remove_child_link("X", f, { :method => :'_delete', :title => _('remove volume'), :class => 'label label-important', :disabled => !new })},
true,
false %>
</div>

0 comments on commit 29769a4

Please sign in to comment.