foreman_fog_proxmox 0.15.0 → 0.15.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b41c2a927bcce7383e1fd55c588247e935e0c6e11ba967fe6628db72a80730df
4
- data.tar.gz: ce7634ce750c8317bc28906e4394888d50b66931b9c77586f3af90c339ca07c2
3
+ metadata.gz: 7fb26099667e555c1234f7a330cf9914f6efc3c874b22cd2dbff180f1e544ebc
4
+ data.tar.gz: 4c7dc234f8e677f91c898cd9bb1fa52bd5d074998481aeeee7fde0c64a6ef4d5
5
5
  SHA512:
6
- metadata.gz: 65a3b9ac47bb382cc0c2b30430151a9db92bf64dcc9c64ed6c9fffb1fbb5dc525316d3475a7c5d88c21d30e3ffb8ad8eaf6ef5d6676cff53cfbd43dd5a086378
7
- data.tar.gz: e210dad89239964322d0dc1b5f3a326a11f449ada2ad61d23f87f2047d421454020aa4b14ffed1efc173f31fd7cb0c68d92a76a9df0757133c810993a49a5a85
6
+ metadata.gz: 4c1585871bc12fd7b7d6a806dc42c1ae975e4c79765d0a753a9823a2a7c0919e3e7a5b4997217b441f98b208d025166a0ce7f25411c9b058bc874dfd2786a4cb
7
+ data.tar.gz: 0b6d569fb3dfb400f65caf1fedf74e03d7044a3158c98ad9daee258860b9080362431e250ddd49fa79d2e75f7a852ab0dd972029a45e54bcfc20b59eb8dacd19
@@ -15,8 +15,6 @@
15
15
  // You should have received a copy of the GNU General Public License
16
16
  // along with ForemanFogProxmox. If not, see <http://www.gnu.org/licenses/>.
17
17
 
18
- //= require jquery-ui/widgets/accordion
19
-
20
18
  $(document).ready(vmTypeSelected);
21
19
 
22
20
  function vmTypeSelected() {
@@ -25,13 +23,21 @@ function vmTypeSelected() {
25
23
  var host_uuid = $("input[id='host_uuid']").val();
26
24
  var new_vm = host_uuid == undefined;
27
25
  var fieldsets = [];
26
+ var fieldconfig = [];
28
27
  fieldsets.push({id: 'config_advanced_options', toggle: true, new_vm: new_vm, selected: selected});
29
28
  fieldsets.push({id: 'config_ext', toggle: true, new_vm: new_vm, selected: selected});
30
29
  fieldsets.push({id: 'volume', toggle: true, new_vm: new_vm, selected: selected});
31
30
  fieldsets.push({id: 'network', toggle: true, new_vm: true, selected: selected});
31
+ fieldconfig.push({id: 'config_options', new_vm: new_vm, selected: selected});
32
+ fieldconfig.push({id: 'config_cpu', new_vm: new_vm, selected: selected});
33
+ fieldconfig.push({id: 'config_memory', new_vm: new_vm, selected: selected});
34
+ fieldconfig.push({id: 'config_cdrom', new_vm: new_vm, selected: selected});
35
+ fieldconfig.push({id: 'config_os', new_vm: new_vm, selected: selected});
36
+ fieldconfig.push({id: 'config_dns', new_vm: new_vm, selected: selected});
32
37
  fieldsets.forEach(toggleFieldsets);
33
- toggleAccordion(selected);
34
38
  toggleVolumes(selected);
39
+ fieldconfig.forEach(toggleConfigs);
40
+ toggleAccordions();
35
41
  return false;
36
42
  }
37
43
 
@@ -131,7 +137,7 @@ function enableFieldset(fieldsetId, fieldset) {
131
137
  input_hidden_id(fieldsetId).removeAttr('disabled');
132
138
  }
133
139
 
134
- function disableFieldset(fieldsetId, fieldset) {
140
+ function disableFieldset(fieldsetId, fieldset) {
135
141
  if (fieldset.toggle && fieldset.new_vm){
136
142
  fieldset_id(fieldsetId, fieldset).hide();
137
143
  }
@@ -139,57 +145,72 @@ function disableFieldset(fieldsetId, fieldset) {
139
145
  input_hidden_id(fieldsetId).attr('disabled','disabled');
140
146
  }
141
147
 
142
- function enableConfigOptions(fieldsetId) {
143
- var field = $("#" + fieldsetId + "_advanced_options");
144
- field.accordion({collapsible : true, heightStyle: "content"});
145
- field.removeClass('disabled').find("*").prop("disabled", false);
146
- field.removeClass('hide');
148
+ function toggleFieldset(fieldsetId, fieldset, type1, type2) {
149
+ type1 === type2 ? enableFieldset(fieldsetId, fieldset) : disableFieldset(fieldsetId, fieldset);
147
150
  }
148
151
 
149
- function disableConfigOptions(fieldsetId) {
150
- var field = $("#" + fieldsetId + "_advanced_options");
151
- field.addClass('disabled').find("*").prop("disabled", true);
152
- field.addClass('hide');
152
+ function input_hidden_id(volume_id){
153
+ return $("div[id^='"+ volume_id +"_volumes']" + " + input:hidden");
153
154
  }
154
155
 
155
- function toggleConfigOptions(fieldsetId, type1, type2) {
156
- if (type1 === type2) {
157
- enableConfigOptions(fieldsetId);
158
- } else {
159
- disableConfigOptions(fieldsetId);
160
- }
156
+ function fieldset_id(fieldsetId, fieldset){
157
+ return $("fieldset[id^='" + fieldsetId + "_"+fieldset.id+"']");
161
158
  }
162
159
 
163
- function toggleAccordion(selected){
160
+ function fieldsets(type){
161
+ return type === 'qemu' ? ['server'] : ['container'];
162
+ }
163
+
164
+ function toggleFieldsets(fieldset){
165
+ var removable_input_hidden = $("div.removable-item[style='display: none;']" + " + input:hidden");
166
+ removable_input_hidden.attr('disabled','disabled');
164
167
  ['qemu', 'lxc'].forEach(function(type){
165
168
  fieldsets(type).forEach(function(fieldsetId){
166
- toggleConfigOptions(fieldsetId, selected, type);
169
+ toggleFieldset(fieldsetId, fieldset, fieldset.selected, type);
167
170
  });
168
171
  });
169
172
  }
170
173
 
171
- function toggleFieldset(fieldsetId, fieldset, type1, type2) {
172
- type1 === type2 ? enableFieldset(fieldsetId, fieldset) : disableFieldset(fieldsetId, fieldset);
174
+ function toggleAccordions() {
175
+ $('.accordion-content').hide();
176
+ $('.accordion-section').off('click').on('click', function(event) {
177
+ var $content = $(this).find('.accordion-content');
178
+ $content.slideToggle();
179
+ $(this).toggleClass('active');
180
+ $('.accordion-content').not($content).slideUp();
181
+ $('.accordion-section').not($(this)).removeClass('active');
182
+ event.stopPropagation();
183
+ });
184
+ $('.accordion-content').on('click', function(event) {
185
+ event.stopPropagation();
186
+ });
173
187
  }
174
188
 
175
- function input_hidden_id(volume_id){
176
- return $("div[id^='"+ volume_id +"_volumes']" + " + input:hidden");
189
+ function enableConfig(fieldsetId, fieldset) {
190
+ fieldset_id(fieldsetId, fieldset).removeClass('hide');
191
+ fieldset_id(fieldsetId, fieldset).removeAttr('disabled');
192
+ input_hidden_id(fieldsetId).removeAttr('disabled');
193
+
177
194
  }
178
195
 
179
- function fieldset_id(fieldsetId, fieldset){
180
- return $("fieldset[id^='" + fieldsetId + "_"+fieldset.id+"']");
196
+ function disableConfig(fieldsetId, fieldset) {
197
+ fieldset_id(fieldsetId, fieldset).addClass('hide');
198
+ fieldset_id(fieldsetId, fieldset).attr('disabled','disabled');
199
+ input_hidden_id(fieldsetId).attr('disabled','disabled');
181
200
  }
182
201
 
183
- function fieldsets(type){
184
- return type === 'qemu' ? ['server'] : ['container'];
202
+ function toggleConfig(fieldsetId, fieldset, type1, type2) {
203
+ if (type1 === type2) {
204
+ enableConfig(fieldsetId, fieldset);
205
+ } else {
206
+ disableConfig(fieldsetId, fieldset);
207
+ }
185
208
  }
186
209
 
187
- function toggleFieldsets(fieldset){
188
- var removable_input_hidden = $("div.removable-item[style='display: none;']" + " + input:hidden");
189
- removable_input_hidden.attr('disabled','disabled');
210
+ function toggleConfigs(fieldset){
190
211
  ['qemu', 'lxc'].forEach(function(type){
191
212
  fieldsets(type).forEach(function(fieldsetId){
192
- toggleFieldset(fieldsetId, fieldset, fieldset.selected, type);
213
+ toggleConfig(fieldsetId, fieldset, fieldset.selected, type);
193
214
  });
194
215
  });
195
216
  }
@@ -32,7 +32,7 @@ function getIndex(item) {
32
32
  }
33
33
 
34
34
  function isProfile() {
35
- return $(volumesAttributesSelector(true,0,'id')) !== undefined;
35
+ return $(volumesAttributesSelector(true,0,'id')).val() !== undefined;
36
36
  }
37
37
 
38
38
  function controllerSelected(item) {
@@ -42,23 +42,43 @@ function controllerSelected(item) {
42
42
  var profile = isProfile();
43
43
  var device_selector = volumesAttributesSelector(profile,index,'device');
44
44
  var id_selector = volumesAttributesSelector(profile,index,'id');
45
- $(device_selector).attr('data-soft-max', max);
46
- var device = $(device_selector).limitedSpinner('value');
45
+ var device = $(device_selector).val();
47
46
  var id = controller + device;
47
+ validateDeviceLimit(device_selector, max);
48
48
  $(id_selector).val(id);
49
49
  }
50
50
 
51
51
  function deviceSelected(item) {
52
- var device = $(item).limitedSpinner('value');
52
+ var device = $(item).val();
53
53
  var index = getIndex(item);
54
54
  var profile = isProfile();
55
55
  var controller_selector = volumesAttributesSelector(profile,index,'controller');
56
56
  var id_selector = volumesAttributesSelector(profile,index,'id');
57
57
  var controller = $(controller_selector).val();
58
58
  var id = controller + device;
59
+ var max = computeControllerMaxDevice(controller);
60
+ validateDeviceLimit(item, max);
59
61
  $(id_selector).val(id);
60
62
  }
61
63
 
64
+ function validateDeviceLimit(item, maxLimit) {
65
+ var warningContainer = $(item).closest('form').find('.warning-container');
66
+ var deviceNumber = $(item).val();
67
+ var submitButton = $(item).closest('form').find('[data-disable-with]');
68
+ if (!isNaN(maxLimit) && !isNaN(deviceNumber) && deviceNumber > maxLimit) {
69
+ if (warningContainer.length === 0) {
70
+ warningContainer = $('<div class="warning-container" style="color: red;"><span style="color: red;">&#9888;</span> Warning: Value exceeds the maximum limit of ' + maxLimit + '.</div>');
71
+ $(item).closest('.col-md-4').append(warningContainer);
72
+ }
73
+ warningContainer.show();
74
+ submitButton.prop('disabled', true);
75
+ } else {
76
+ warningContainer.hide();
77
+ warningContainer.remove();
78
+ submitButton.prop('disabled', false);
79
+ }
80
+ }
81
+
62
82
  function computeControllerMaxDevice(controller) {
63
83
  switch (controller) {
64
84
  case 'ide':
@@ -72,4 +92,4 @@ function computeControllerMaxDevice(controller) {
72
92
  default:
73
93
  return 1;
74
94
  }
75
- }
95
+ }
@@ -0,0 +1,21 @@
1
+ .accordion-section {
2
+ cursor: pointer;
3
+ }
4
+
5
+ .accordion-section > legend::before {
6
+ content: "\f054";
7
+ font-family: "Font Awesome 5 Free";
8
+ position: relative;
9
+ left: -1em;
10
+ top: 50%;
11
+ transform: translateY(-50%);
12
+ }
13
+
14
+ .accordion-section.active > legend::before {
15
+ content: "\f078";
16
+ font-family: "Font Awesome 5 Free";
17
+ position: relative;
18
+ left: -1em;
19
+ top: 50%;
20
+ transform: translateY(-50%);
21
+ }
@@ -48,7 +48,7 @@ module ProxmoxVmCloudinitHelper
48
48
  wd = create_temp_directory(ssh)
49
49
 
50
50
  configs.each do |config|
51
- config_file = ssh.run(%(echo "#{config[1]}" >> "#{wd}/#{config[0]}"))
51
+ config_file = ssh.run(%(echo '#{config[1]}' >> "#{wd}/#{config[0]}"))
52
52
  unless config_file.first.status.zero?
53
53
  delete_temp_dir(ssh, wd)
54
54
  raise ::Foreman::Exception, "Failed to create file #{config[0]}: #{config_file.first.stdout}"
@@ -181,7 +181,7 @@ module ForemanFogProxmox
181
181
  your server cannot connect to Proxmox due to network issues."
182
182
  end
183
183
 
184
- def host
184
+ def proxmox_host
185
185
  URI.parse(url).host
186
186
  end
187
187
  end
@@ -33,7 +33,7 @@ module ForemanFogProxmox
33
33
  vnc_console = vm.start_console(options)
34
34
  vmid = extract_vmid(uuid).to_i
35
35
  vnc_host_port = vnc_console['port'].to_i + vmid
36
- WsProxy.start(:host => host, :host_port => vnc_host_port, :password => vnc_console['ticket']).merge(
36
+ WsProxy.start(:host => proxmox_host, :host_port => vnc_host_port, :password => vnc_console['ticket']).merge(
37
37
  :name => vm.name, :type => type_console
38
38
  )
39
39
  rescue StandardError => e
@@ -32,10 +32,9 @@ module ForemanFogProxmox
32
32
  end
33
33
 
34
34
  def create_vm(args = {})
35
- vmid = args[:vmid].to_i
36
35
  type = args[:type]
37
36
  node = client.nodes.get(args[:node_id])
38
- vmid = node.servers.next_id.to_i if vmid < 1
37
+ vmid = args[:vmid] = assign_vmid(args[:vmid].to_i, node)
39
38
  raise ::Foreman::Exception, format(N_('invalid vmid=%<vmid>s'), vmid: vmid) unless node.servers.id_valid?(vmid)
40
39
 
41
40
  image_id = args[:image_id]
@@ -55,6 +54,10 @@ module ForemanFogProxmox
55
54
  raise e
56
55
  end
57
56
 
57
+ def assign_vmid(vmid, node)
58
+ vmid < 1 ? node.servers.next_id : vmid
59
+ end
60
+
58
61
  def compute_clone_attributes(args, container, type)
59
62
  args = parse_cloudinit_config(args) if args[:user_data]
60
63
  parsed_args = parse_typed_vm(args, type)
@@ -16,33 +16,37 @@ You should have received a copy of the GNU General Public License
16
16
  along with ForemanFogProxmox. If not, see <http://www.gnu.org/licenses/>. %>
17
17
 
18
18
  <%= javascript_include_tag 'foreman_fog_proxmox/proxmox_vm_container', "data-turbolinks-track" => true %>
19
+ <%= stylesheet_link_tag 'foreman_fog_proxmox/accordion' %>
19
20
  <% container = type == 'lxc' %>
20
- <%= content_tag :div, :id => "container_advanced_options" do %>
21
- <%= content_tag :h3, "Main Options"%>
22
- <div>
23
- <%= textarea_f f, :description, :label => _('Description'), :label_size => "col-md-2" %>
24
- <%= checkbox_f f, :onboot, :label => _('Start at boot') %>
21
+ <%= field_set_tag n_("Main option", "Main options", 2), :id => "container_config_options", :class => 'accordion-section', :disabled => !container do %>
22
+ <div class="accordion-content">
23
+ <%= textarea_f f, :description, :label => _('Description'), :label_size => "col-md-2" %>
24
+ <%= checkbox_f f, :onboot, :label => _('Start at boot') %>
25
25
  </div>
26
- <%= content_tag :h3, "CPUs"%>
27
- <div>
26
+ <% end %>
27
+ <%= field_set_tag _("CPU"), :id => "container_config_cpu", :class => 'accordion-section', :disabled => !container do %>
28
+ <div class="accordion-content">
28
29
  <%= select_f f, :arch, proxmox_archs_map, :id, :name, { }, :label => _('Architecture'), :label_size => "col-md-2" %>
29
30
  <%= counter_f f, :cores, :class => "input-mini", :label => _('Cores'), :label_size => "col-md-2" %>
30
31
  <%= counter_f f, :cpulimit, :class => "input-mini", :label => _('CPU limit'), :label_size => "col-md-2" %>
31
32
  <%= counter_f f, :cpuunits, :class => "input-mini", :label => _('CPU units'), :label_size => "col-md-2" %>
32
33
  </div>
33
- <%= content_tag :h3, "Memory"%>
34
- <div>
34
+ <% end %>
35
+ <%= field_set_tag _("Memory"), :id => "container_config_memory", :class => 'accordion-section', :disabled => !container do %>
36
+ <div class="accordion-content">
35
37
  <%= text_f f, :memory, :class => "input-mini", :label => _('Memory (MB)'), :label_size => "col-md-2" %>
36
38
  <%= text_f f, :swap, :class => "input-mini", :label => _('Swap (MB)'), :label_size => "col-md-2" %>
37
39
  </div>
38
- <%= content_tag :h3, "DNS"%>
39
- <div>
40
+ <% end %>
41
+ <%= field_set_tag _("DNS"), :id => "container_config_dns", :class => 'accordion-section', :disabled => !container do %>
42
+ <div class="accordion-content">
40
43
  <%= text_f f, :hostname, :label => _('Hostname'), :label_size => "col-md-2", :disabled => true %>
41
44
  <%= text_f f, :nameserver, :label => _('DNS server'), :label_size => "col-md-2" %>
42
45
  <%= text_f f, :searchdomain, :label => _('Search domain'), :label_size => "col-md-2" %>
43
46
  </div>
44
- <%= content_tag :h3, "Operating System"%>
45
- <div>
47
+ <% end %>
48
+ <%= field_set_tag _("Operating System"), :id => "container_config_os", :class => 'accordion-section', :disabled => !container do %>
49
+ <div class="accordion-content">
46
50
  <%= select_f f, :ostype, proxmox_ostypes_map, :id, :name, { }, :label => _('OS type'), :label_size => "col-md-2" %>
47
51
  </div>
48
52
  <% end %>
@@ -16,25 +16,23 @@ You should have received a copy of the GNU General Public License
16
16
  along with ForemanFogProxmox. If not, see <http://www.gnu.org/licenses/>. %>
17
17
 
18
18
  <%= javascript_include_tag 'foreman_fog_proxmox/proxmox_vm_server', "data-turbolinks-track" => true %>
19
-
19
+ <%= stylesheet_link_tag 'foreman_fog_proxmox/accordion' %>
20
20
  <% server = type == 'qemu' %>
21
21
  <% logger.debug("_config.html.erb server_config=#{f.object.inspect}") %>
22
-
23
- <%= content_tag :div, :id => "server_advanced_options" do %>
24
- <%= content_tag :h3, "Main Options" %>
25
- <div>
26
- <%= textarea_f f, :description, :label => _('Description'), :label_size => "col-md-2" %>
27
- <%= text_f f, :boot, :label => _('Boot device order'), :label_size => "col-md-2", :label_help => _('Order your devices, e.g. order=net0;ide2;scsi0. Default empty (any)') %>
28
- <%= checkbox_f f, :onboot, :label => _('Start at boot') %>
29
- <%= checkbox_f f, :agent, :label => _('Qemu Agent') %>
30
- <%= checkbox_f f, :kvm, :label => _('KVM'), :label_help => _('Enable/disable KVM hardware virtualization') %>
31
- <%= select_f f, :vga, proxmox_vgas_map, :id, :name, { :include_blank => true }, :label => _('VGA'), :label_size => "col-md-2" %>
32
- <%= select_f f, :scsihw, proxmox_scsi_controllers_map, :id, :name, { }, :label => _('SCSI Controller'), :label_size => "col-md-2" %>
33
- <%= select_f f, :bios, proxmox_bios_map, :id, :name, { }, :label => _('BIOS'), :label_size => "col-md-2" %>
22
+ <%= field_set_tag n_("Main option", "Main options", 2), :id => "server_config_options", :class => 'accordion-section', :disabled => !server do %>
23
+ <div class="accordion-content">
24
+ <%= textarea_f f, :description, :label => _('Description'), :label_size => "col-md-2" %>
25
+ <%= text_f f, :boot, :label => _('Boot device order'), :label_size => "col-md-2", :label_help => _('Order your devices, e.g. order=net0;ide2;scsi0. Default empty (any)') %>
26
+ <%= checkbox_f f, :onboot, :label => _('Start at boot') %>
27
+ <%= checkbox_f f, :agent, :label => _('Qemu Agent') %>
28
+ <%= checkbox_f f, :kvm, :label => _('KVM'), :label_help => _('Enable/disable KVM hardware virtualization') %>
29
+ <%= select_f f, :vga, proxmox_vgas_map, :id, :name, { :include_blank => true }, :label => _('VGA'), :label_size => "col-md-2" %>
30
+ <%= select_f f, :scsihw, proxmox_scsi_controllers_map, :id, :name, { }, :label => _('SCSI Controller'), :label_size => "col-md-2" %>
31
+ <%= select_f f, :bios, proxmox_bios_map, :id, :name, { }, :label => _('BIOS'), :label_size => "col-md-2" %>
34
32
  </div>
35
-
36
- <%= content_tag :h3, "CPUs" %>
37
- <div>
33
+ <% end %>
34
+ <%= field_set_tag _("CPUs"), :id => "server_config_cpu", :class => 'accordion-section', :disabled => !server do %>
35
+ <div class="accordion-content">
38
36
  <%= select_f f, :cpu_type, proxmox_cpus_map, :id, :name, { }, :label => _('Type'), :label_size => "col-md-2" %>
39
37
  <%= counter_f f, :sockets, :class => "input-mini", :label => _('Sockets'), :label_size => "col-md-2" %>
40
38
  <%= counter_f f, :cores, :class => "input-mini", :label => _('Cores'), :label_size => "col-md-2" %>
@@ -48,14 +46,16 @@ along with ForemanFogProxmox. If not, see <http://www.gnu.org/licenses/>. %>
48
46
  <% end %>
49
47
  <% end %>
50
48
  </div>
51
- <%= content_tag :h3, "Memory" %>
52
- <div>
49
+ <% end %>
50
+ <%= field_set_tag _("Memory"), :id => "server_config_memory", :class => 'accordion-section', :disabled => !server do %>
51
+ <div class="accordion-content">
53
52
  <%= text_f f, :memory, :class => "input-mini", :label => _('Memory (MB)'), :label_size => "col-md-2" %>
54
53
  <%= text_f f, :balloon, :class => "input-mini", :label => _('Minimum memory (MB)'), :label_size => "col-md-2" %>
55
54
  <%= text_f f, :shares, :class => "input-mini", :label => _('Shares (MB)'), :label_size => "col-md-2" %>
56
55
  </div>
57
- <%= content_tag :h3, "Operating System" %>
58
- <div>
56
+ <% end %>
57
+ <%= field_set_tag _("Operating System"), :id => "server_config_os", :class => 'accordion-section', :disabled => !server do %>
58
+ <div class="accordion-content">
59
59
  <%= select_f f, :ostype, proxmox_operating_systems_map, :id, :name, { :include_blank => true }, :label => _('OS type'), :label_size => "col-md-2" %>
60
60
  </div>
61
61
  <% end %>
@@ -26,7 +26,10 @@ along with ForemanFogProxmox. If not, see <http://www.gnu.org/licenses/>. %>
26
26
  <%= f.hidden_field :storage_type %>
27
27
  <%= select_f f, :storage, compute_resource.storages(node_id), :storage, :storage, { }, :label => _('Storage'), :label_size => "col-md-2" %>
28
28
  <%= select_f f, :controller, proxmox_controllers_map, :id, :name, { }, :label => _('Controller'), :label_size => "col-md-2", :disabled => !new_volume, :onchange => 'controllerSelected(this)' %>
29
- <%= text_f f, :device, :label => _('Device'), :label_size => "col-md-2", :disabled => !new_volume, :'data-min' => 0, :'data-soft-max' => proxmox_max_device(f.object.controller), :onchange => 'deviceSelected(this)' %>
29
+ <div>
30
+ <%= text_f f, :device, :label => _('Device'), :label_size => "col-md-2", :disabled => !new_volume, :onchange => 'deviceSelected(this)' %>
31
+ <span class="warning-container"></span>
32
+ </div>
30
33
  <%= select_f f, :cache, proxmox_caches_map, :id, :name, { include_blank: true }, :label => _('Cache'), :label_size => "col-md-2" %>
31
34
  <%= text_f f, :size, :class => "input-mini", :label => _("Size (GB)"), :label_size => "col-md-2", :disabled => !hard_disk %>
32
35
  <% end %>
@@ -18,5 +18,5 @@
18
18
  # along with ForemanFogProxmox. If not, see <http://www.gnu.org/licenses/>.
19
19
 
20
20
  module ForemanFogProxmox
21
- VERSION = '0.15.0'
21
+ VERSION = '0.15.1'
22
22
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foreman_fog_proxmox
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.15.0
4
+ version: 0.15.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tristan Robert
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2023-11-15 00:00:00.000000000 Z
12
+ date: 2024-04-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: deface
@@ -114,6 +114,7 @@ files:
114
114
  - app/assets/javascripts/foreman_fog_proxmox/proxmox_volume.js
115
115
  - app/assets/javascripts/foreman_fog_proxmox/proxmox_volume_cdrom.js
116
116
  - app/assets/javascripts/foreman_fog_proxmox/proxmox_volume_cloudinit.js
117
+ - app/assets/stylesheets/foreman_fog_proxmox/accordion.css
117
118
  - app/controllers/concerns/foreman_fog_proxmox/compute_resources_vms_controller.rb
118
119
  - app/controllers/concerns/foreman_fog_proxmox/controller/parameters/compute_resource.rb
119
120
  - app/controllers/concerns/foreman_fog_proxmox/hosts_controller.rb
@@ -262,29 +263,29 @@ signing_key:
262
263
  specification_version: 4
263
264
  summary: Foreman plugin that adds Proxmox VE compute resource using fog-proxmox
264
265
  test_files:
265
- - test/factories/proxmox_factory.rb
266
+ - test/test_plugin_helper.rb
267
+ - test/factories/foreman_fog_proxmox/proxmox_node_mock_factory.rb
266
268
  - test/factories/foreman_fog_proxmox/proxmox_container_mock_factory.rb
267
269
  - test/factories/foreman_fog_proxmox/proxmox_server_mock_factory.rb
268
- - test/factories/foreman_fog_proxmox/proxmox_node_mock_factory.rb
269
- - test/test_plugin_helper.rb
270
- - test/functional/compute_resources_controller_test.rb
271
- - test/unit/foreman_fog_proxmox/proxmox_vm_commands_server_create_test.rb
272
- - test/unit/foreman_fog_proxmox/proxmox_test.rb
273
- - test/unit/foreman_fog_proxmox/proxmox_vm_commands_container_test.rb
270
+ - test/factories/proxmox_factory.rb
271
+ - test/unit/foreman_fog_proxmox/proxmox_vm_commands_test.rb
272
+ - test/unit/foreman_fog_proxmox/proxmox_images_test.rb
273
+ - test/unit/foreman_fog_proxmox/proxmox_interfaces_test.rb
274
+ - test/unit/foreman_fog_proxmox/proxmox_vm_commands_server_update_test.rb
274
275
  - test/unit/foreman_fog_proxmox/proxmox_vm_queries_test.rb
276
+ - test/unit/foreman_fog_proxmox/proxmox_vm_new_test.rb
277
+ - test/unit/foreman_fog_proxmox/proxmox_test.rb
275
278
  - test/unit/foreman_fog_proxmox/semver_test.rb
276
- - test/unit/foreman_fog_proxmox/proxmox_vm_commands_server_update_test.rb
279
+ - test/unit/foreman_fog_proxmox/proxmox_vm_commands_server_update_cdrom_test.rb
280
+ - test/unit/foreman_fog_proxmox/proxmox_vm_commands_server_update_hard_disk_test.rb
281
+ - test/unit/foreman_fog_proxmox/proxmox_vm_commands_server_create_test.rb
282
+ - test/unit/foreman_fog_proxmox/proxmox_version_test.rb
277
283
  - test/unit/foreman_fog_proxmox/proxmox_vm_commands_server_update_cloudinit_test.rb
278
- - test/unit/foreman_fog_proxmox/proxmox_vm_commands_test.rb
279
- - test/unit/foreman_fog_proxmox/proxmox_vm_new_test.rb
280
- - test/unit/foreman_fog_proxmox/proxmox_images_test.rb
281
284
  - test/unit/foreman_fog_proxmox/proxmox_compute_attributes_test.rb
285
+ - test/unit/foreman_fog_proxmox/proxmox_vm_commands_container_test.rb
286
+ - test/unit/foreman_fog_proxmox/helpers/proxmox_vm_volumes_helper_test.rb
282
287
  - test/unit/foreman_fog_proxmox/helpers/proxmox_server_helper_test.rb
283
- - test/unit/foreman_fog_proxmox/helpers/proxmox_vm_helper_test.rb
284
288
  - test/unit/foreman_fog_proxmox/helpers/proxmox_container_helper_test.rb
289
+ - test/unit/foreman_fog_proxmox/helpers/proxmox_vm_helper_test.rb
285
290
  - test/unit/foreman_fog_proxmox/helpers/proxmox_vm_uuid_helper_test.rb
286
- - test/unit/foreman_fog_proxmox/helpers/proxmox_vm_volumes_helper_test.rb
287
- - test/unit/foreman_fog_proxmox/proxmox_version_test.rb
288
- - test/unit/foreman_fog_proxmox/proxmox_interfaces_test.rb
289
- - test/unit/foreman_fog_proxmox/proxmox_vm_commands_server_update_hard_disk_test.rb
290
- - test/unit/foreman_fog_proxmox/proxmox_vm_commands_server_update_cdrom_test.rb
291
+ - test/functional/compute_resources_controller_test.rb