foreman_fog_proxmox 0.14.3 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 48f67a6be462ff0c8dcbaf74676828eb72dcb028d09984e64652eabd224f5202
4
- data.tar.gz: b480687763ab5d18283b40eccd8625e117a7e057517a1de268e448de3c6de428
3
+ metadata.gz: b41c2a927bcce7383e1fd55c588247e935e0c6e11ba967fe6628db72a80730df
4
+ data.tar.gz: ce7634ce750c8317bc28906e4394888d50b66931b9c77586f3af90c339ca07c2
5
5
  SHA512:
6
- metadata.gz: '0608143b5b0742f00ea77306f785d6bfa0d4023f23ce1c8331c503ba7c1a87d0039bb83b5c350ca48787509e1c0aae08942d8539b2883da85539789ffdd10f9e'
7
- data.tar.gz: 4f58946907839513c8bea07021a9375a81c5bfb1a8fba62c8fc9605571626e0d62e79415a08095da8f4ac42210f99770c15a8c7f123518b20df4775f70df687a
6
+ metadata.gz: 65a3b9ac47bb382cc0c2b30430151a9db92bf64dcc9c64ed6c9fffb1fbb5dc525316d3475a7c5d88c21d30e3ffb8ad8eaf6ef5d6676cff53cfbd43dd5a086378
7
+ data.tar.gz: e210dad89239964322d0dc1b5f3a326a11f449ada2ad61d23f87f2047d421454020aa4b14ffed1efc173f31fd7cb0c68d92a76a9df0757133c810993a49a5a85
@@ -15,6 +15,8 @@
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
+
18
20
  $(document).ready(vmTypeSelected);
19
21
 
20
22
  function vmTypeSelected() {
@@ -27,13 +29,8 @@ function vmTypeSelected() {
27
29
  fieldsets.push({id: 'config_ext', toggle: true, new_vm: new_vm, selected: selected});
28
30
  fieldsets.push({id: 'volume', toggle: true, new_vm: new_vm, selected: selected});
29
31
  fieldsets.push({id: 'network', toggle: true, new_vm: true, selected: selected});
30
- fieldsets.push({id: 'config_options', toggle: false, new_vm: new_vm, selected: selected});
31
- fieldsets.push({id: 'config_cpu', toggle: false, new_vm: new_vm, selected: selected});
32
- fieldsets.push({id: 'config_memory', toggle: false, new_vm: new_vm, selected: selected});
33
- fieldsets.push({id: 'config_cdrom', toggle: false, new_vm: new_vm, selected: selected});
34
- fieldsets.push({id: 'config_os', toggle: false, new_vm: new_vm, selected: selected});
35
- fieldsets.push({id: 'config_dns', toggle: false, new_vm: new_vm, selected: selected});
36
32
  fieldsets.forEach(toggleFieldsets);
33
+ toggleAccordion(selected);
37
34
  toggleVolumes(selected);
38
35
  return false;
39
36
  }
@@ -142,6 +139,35 @@ function disableFieldset(fieldsetId, fieldset) {
142
139
  input_hidden_id(fieldsetId).attr('disabled','disabled');
143
140
  }
144
141
 
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');
147
+ }
148
+
149
+ function disableConfigOptions(fieldsetId) {
150
+ var field = $("#" + fieldsetId + "_advanced_options");
151
+ field.addClass('disabled').find("*").prop("disabled", true);
152
+ field.addClass('hide');
153
+ }
154
+
155
+ function toggleConfigOptions(fieldsetId, type1, type2) {
156
+ if (type1 === type2) {
157
+ enableConfigOptions(fieldsetId);
158
+ } else {
159
+ disableConfigOptions(fieldsetId);
160
+ }
161
+ }
162
+
163
+ function toggleAccordion(selected){
164
+ ['qemu', 'lxc'].forEach(function(type){
165
+ fieldsets(type).forEach(function(fieldsetId){
166
+ toggleConfigOptions(fieldsetId, selected, type);
167
+ });
168
+ });
169
+ }
170
+
145
171
  function toggleFieldset(fieldsetId, fieldset, type1, type2) {
146
172
  type1 === type2 ? enableFieldset(fieldsetId, fieldset) : disableFieldset(fieldsetId, fieldset);
147
173
  }
@@ -41,6 +41,11 @@ module ProxmoxComputeResourcesVmsHelper
41
41
  end
42
42
 
43
43
  def vm_associate_action(vm)
44
+ vm_associate_link(vm, link_class: "btn btn-default")
45
+ end
46
+
47
+ def vm_associate_link(vm, link_class: "")
48
+ return unless @compute_resource.supports_host_association?
44
49
  display_link_if_authorized(
45
50
  _('Associate VM'),
46
51
  hash_for_associate_compute_resource_vm_path(
@@ -52,7 +57,7 @@ module ProxmoxComputeResourcesVmsHelper
52
57
  ),
53
58
  :title => _('Associate VM to a Foreman host'),
54
59
  :method => :put,
55
- :class => 'btn btn-default'
60
+ :class => link_class
56
61
  )
57
62
  end
58
63
 
@@ -41,4 +41,103 @@ module ProxmoxVmCloudinitHelper
41
41
  end
42
42
  cloudinit_h
43
43
  end
44
+
45
+ def create_cloudinit_iso(vm_name, configs, ssh)
46
+ iso = File.join(default_iso_path, "#{vm_name.tr('.', '_')}_cloudinit.iso")
47
+ files = []
48
+ wd = create_temp_directory(ssh)
49
+
50
+ configs.each do |config|
51
+ config_file = ssh.run(%(echo "#{config[1]}" >> "#{wd}/#{config[0]}"))
52
+ unless config_file.first.status.zero?
53
+ delete_temp_dir(ssh, wd)
54
+ raise ::Foreman::Exception, "Failed to create file #{config[0]}: #{config_file.first.stdout}"
55
+ end
56
+ files.append(File.join(wd, config[0]))
57
+ end
58
+ generated_iso = ssh.run(generate_iso_command(iso, files))
59
+ unless generated_iso.first.status.zero?
60
+ delete_temp_dir(ssh, wd)
61
+ raise Foreman::Exception, N_("ISO build failed: #{generated_iso.first.stdout}")
62
+ end
63
+ delete_temp_dir(ssh, wd)
64
+ iso
65
+ end
66
+
67
+ def generate_iso_command(iso_file, config_files)
68
+ arguments = ["genisoimage", "-output #{iso_file}", '-volid', 'cidata', '-joliet', '-rock']
69
+ iso_command = arguments.concat(config_files).join(' ')
70
+ logger.debug("iso image generation args: #{iso_command}")
71
+ iso_command
72
+ end
73
+
74
+ def create_temp_directory(ssh)
75
+ res = ssh.run("mktemp -d")
76
+ raise ::Foreman::Exception, "Could not create working directory to store cloudinit config data: #{res.first.stdout}." unless res.first.status.zero?
77
+ res.first.stdout.chomp
78
+ end
79
+
80
+ def delete_temp_dir(ssh, working_dir)
81
+ ssh.run("rm -rf #{working_dir}")
82
+ rescue Foreman::Exception => e
83
+ logger.warn("Could not delete directory for config files: #{e}. Please delete it manually at #{working_dir}")
84
+ end
85
+
86
+ def parse_cloudinit_config(args)
87
+ filenames = ["meta-data"]
88
+ config_data = ["instance-id: #{args[:name]}"]
89
+ user_data = args.delete(:user_data)
90
+ return args if user_data == ''
91
+ check_template_format(user_data)
92
+ ssh = vm_ssh
93
+
94
+ if user_data.include?('#network-config') && user_data.include?('#cloud-config')
95
+ config_data.concat(user_data.split('#network-config'))
96
+ filenames.concat(['user-data', 'network-config'])
97
+ elsif user_data.include?('#network-config') && !user_data.include?('#cloud-config')
98
+ config_data.append(user_data.split('#network-config')[1])
99
+ filenames.append("network-config")
100
+ elsif !user_data.include?('#network-config') && user_data.include?('#cloud-config')
101
+ config_data.append(user_data)
102
+ filenames.append("user-data")
103
+ end
104
+
105
+ return args if config_data.length == 1
106
+ configs = filenames.zip(config_data).to_h
107
+
108
+ iso = create_cloudinit_iso(args[:name], configs, ssh)
109
+ args[:config_attributes]&.merge!(update_boot_order(args[:image_id]))
110
+ args.merge!(attach_cloudinit_iso(args[:node_id], iso))
111
+ end
112
+
113
+ def attach_cloudinit_iso(node, iso)
114
+ storage = storages(node, 'iso')[0]
115
+ volume = storage.volumes.detect { |v| v.volid.include? File.basename(iso) }
116
+ { ide2: "#{volume.volid},media=cdrom" }
117
+ end
118
+
119
+ def default_iso_path
120
+ "/var/lib/vz/template/iso"
121
+ end
122
+
123
+ def update_boot_order(image_id)
124
+ vm = find_vm_by_uuid(image_id)
125
+ return if vm.disks.nil?
126
+ disks = vm.disks.map { |disk| disk.split(":")[0] }.join(";")
127
+ { boot: "order=" + disks }
128
+ end
129
+
130
+ def vm_ssh
131
+ ssh = Fog::SSH.new(URI.parse(fog_credentials[:proxmox_url]).host, fog_credentials[:proxmox_username].split('@')[0], { password: fog_credentials[:proxmox_password] })
132
+ ssh.run('ls') # test if ssh is successful
133
+ ssh
134
+ rescue StandardError => e
135
+ raise ::Foreman::Exception, "Unable to ssh into proxmox server: #{e}"
136
+ end
137
+
138
+ def check_template_format(user_data)
139
+ YAML.safe_load(user_data)
140
+ rescue StandardError => e
141
+ raise ::Foreman::Exception, "'User data kind' template provided could not be loaded, please check the format: #{e}"
142
+ end
44
143
  end
@@ -33,8 +33,6 @@ module ForemanFogProxmox
33
33
  _(format('Invalid proxmox NIC id on interface[%<index>s]. Must be net[n] with n integer >= 0',
34
34
  index: index))
35
35
  end
36
-
37
- nic.identifier = nic.compute_attributes['id'] if nic.identifier.empty?
38
36
  end
39
37
 
40
38
  def vm_type(host)
@@ -56,6 +56,7 @@ module ForemanFogProxmox
56
56
  end
57
57
 
58
58
  def compute_clone_attributes(args, container, type)
59
+ args = parse_cloudinit_config(args) if args[:user_data]
59
60
  parsed_args = parse_typed_vm(args, type)
60
61
  if container
61
62
  options = { :hostname => args[:name] }
@@ -18,14 +18,4 @@ along with ForemanFogProxmox. If not, see <http://www.gnu.org/licenses/>. %>
18
18
  <% container = f.object.type == 'lxc' %>
19
19
 
20
20
  <%= field_set_tag _("Advanced"), :id => "container_config_advanced_options", :class => ('hide' unless container) do %>
21
- <%= label_tag 'show_container_config_options', n_("Main option", "Main options", 2) %>
22
- <%= check_box_tag 'show_container_config_options', '1', false, :onclick => "$('#container_config_options').toggle()" %>
23
- <%= label_tag 'show_container_config_cpu', _("CPU") %>
24
- <%= check_box_tag 'show_container_config_cpu', '1', false, :onclick => "$('#container_config_cpu').toggle()" %>
25
- <%= label_tag 'show_container_config_memory', _("Memory") %>
26
- <%= check_box_tag 'show_container_config_memory', '1', false, :onclick => "$('#container_config_memory').toggle()" %>
27
- <%= label_tag 'show_container_config_dns', _("DNS") %>
28
- <%= check_box_tag 'show_container_config_dns', '1', false, :onclick => "$('#container_config_dns').toggle()" %>
29
- <%= label_tag 'show_container_config_os', _("OS") %>
30
- <%= check_box_tag 'show_container_config_os', '1', false, :onclick => "$('#container_config_os').toggle()" %>
31
- <% end %>
21
+ <% end %>
@@ -17,25 +17,32 @@ 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
19
  <% container = type == 'lxc' %>
20
- <%= field_set_tag n_("Main option", "Main options", 2), :id => "container_config_options", :class => 'hide', :disabled => !container do %>
21
- <%= textarea_f f, :description, :label => _('Description'), :label_size => "col-md-2" %>
22
- <%= checkbox_f f, :onboot, :label => _('Start at boot') %>
23
- <% end %>
24
- <%= field_set_tag _("CPU"), :id => "container_config_cpu", :class => 'hide', :disabled => !container do %>
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') %>
25
+ </div>
26
+ <%= content_tag :h3, "CPUs"%>
27
+ <div>
25
28
  <%= select_f f, :arch, proxmox_archs_map, :id, :name, { }, :label => _('Architecture'), :label_size => "col-md-2" %>
26
29
  <%= counter_f f, :cores, :class => "input-mini", :label => _('Cores'), :label_size => "col-md-2" %>
27
30
  <%= counter_f f, :cpulimit, :class => "input-mini", :label => _('CPU limit'), :label_size => "col-md-2" %>
28
31
  <%= counter_f f, :cpuunits, :class => "input-mini", :label => _('CPU units'), :label_size => "col-md-2" %>
29
- <% end %>
30
- <%= field_set_tag _("Memory"), :id => "container_config_memory", :class => 'hide', :disabled => !container do %>
32
+ </div>
33
+ <%= content_tag :h3, "Memory"%>
34
+ <div>
31
35
  <%= text_f f, :memory, :class => "input-mini", :label => _('Memory (MB)'), :label_size => "col-md-2" %>
32
36
  <%= text_f f, :swap, :class => "input-mini", :label => _('Swap (MB)'), :label_size => "col-md-2" %>
33
- <% end %>
34
- <%= field_set_tag _("DNS"), :id => "container_config_dns", :class => 'hide', :disabled => !container do %>
37
+ </div>
38
+ <%= content_tag :h3, "DNS"%>
39
+ <div>
35
40
  <%= text_f f, :hostname, :label => _('Hostname'), :label_size => "col-md-2", :disabled => true %>
36
41
  <%= text_f f, :nameserver, :label => _('DNS server'), :label_size => "col-md-2" %>
37
42
  <%= text_f f, :searchdomain, :label => _('Search domain'), :label_size => "col-md-2" %>
38
- <% end %>
39
- <%= field_set_tag _("Operating System"), :id => "container_config_os", :class => 'hide', :disabled => !container do %>
43
+ </div>
44
+ <%= content_tag :h3, "Operating System"%>
45
+ <div>
40
46
  <%= select_f f, :ostype, proxmox_ostypes_map, :id, :name, { }, :label => _('OS type'), :label_size => "col-md-2" %>
41
- <% end %>
47
+ </div>
48
+ <% end %>
@@ -18,12 +18,4 @@ along with ForemanFogProxmox. If not, see <http://www.gnu.org/licenses/>. %>
18
18
  <% server = f.object.type == 'qemu' %>
19
19
 
20
20
  <%= field_set_tag _("Advanced"), :id => "server_config_advanced_options", :class => ('hide' unless server) do %>
21
- <%= label_tag 'show_server_config_options', n_("Main option", "Main options", 2) %>
22
- <%= check_box_tag 'show_server_config_options', '1', false, :onclick => "$('#server_config_options').toggle()" %>
23
- <%= label_tag 'show_server_config_cpu', _("CPU") %>
24
- <%= check_box_tag 'show_server_config_cpu', '1', false, :onclick => "$('#server_config_cpu').toggle()" %>
25
- <%= label_tag 'show_server_config_memory', _("Memory") %>
26
- <%= check_box_tag 'show_server_config_memory', '1', false, :onclick => "$('#server_config_memory').toggle()" %>
27
- <%= label_tag 'show_server_config_os', _("OS") %>
28
- <%= check_box_tag 'show_server_config_os', '1', false, :onclick => "$('#server_config_os').toggle()" %>
29
- <% end %>
21
+ <% end %>
@@ -20,17 +20,21 @@ along with ForemanFogProxmox. If not, see <http://www.gnu.org/licenses/>. %>
20
20
  <% server = type == 'qemu' %>
21
21
  <% logger.debug("_config.html.erb server_config=#{f.object.inspect}") %>
22
22
 
23
- <%= field_set_tag n_("Main option", "Main options", 2), :id => "server_config_options", :class => 'hide', :disabled => !server do %>
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" %>
32
- <% end %>
33
- <%= field_set_tag _("CPUs"), :id => "server_config_cpu", :class => 'hide', :disabled => !server do %>
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" %>
34
+ </div>
35
+
36
+ <%= content_tag :h3, "CPUs" %>
37
+ <div>
34
38
  <%= select_f f, :cpu_type, proxmox_cpus_map, :id, :name, { }, :label => _('Type'), :label_size => "col-md-2" %>
35
39
  <%= counter_f f, :sockets, :class => "input-mini", :label => _('Sockets'), :label_size => "col-md-2" %>
36
40
  <%= counter_f f, :cores, :class => "input-mini", :label => _('Cores'), :label_size => "col-md-2" %>
@@ -43,14 +47,17 @@ along with ForemanFogProxmox. If not, see <http://www.gnu.org/licenses/>. %>
43
47
  <%= select_f f, flag_key, proxmox_cpu_flags_map, :id, :name, { }, :label => _(flag_value) %>
44
48
  <% end %>
45
49
  <% end %>
46
- <% end %>
47
- <%= field_set_tag _("Memory"), :id => "server_config_memory", :class => 'hide', :disabled => !server do %>
50
+ </div>
51
+ <%= content_tag :h3, "Memory" %>
52
+ <div>
48
53
  <%= text_f f, :memory, :class => "input-mini", :label => _('Memory (MB)'), :label_size => "col-md-2" %>
49
54
  <%= text_f f, :balloon, :class => "input-mini", :label => _('Minimum memory (MB)'), :label_size => "col-md-2" %>
50
55
  <%= text_f f, :shares, :class => "input-mini", :label => _('Shares (MB)'), :label_size => "col-md-2" %>
51
- <% end %>
52
- <%= field_set_tag _("Operating System"), :id => "server_config_os", :class => 'hide', :disabled => !server do %>
56
+ </div>
57
+ <%= content_tag :h3, "Operating System" %>
58
+ <div>
53
59
  <%= select_f f, :ostype, proxmox_operating_systems_map, :id, :name, { :include_blank => true }, :label => _('OS type'), :label_size => "col-md-2" %>
60
+ </div>
54
61
  <% end %>
55
62
  <%= field_set_tag _("Cloud-init"), :id => "server_config_cloud_init", :class => ('hide' unless cloudinit), :disabled => (!cloudinit) do %>
56
63
  <%= text_f f, :ciuser, :label => _('User'), :label_size => "col-md-2" %>
@@ -58,4 +65,4 @@ along with ForemanFogProxmox. If not, see <http://www.gnu.org/licenses/>. %>
58
65
  <%= text_f f, :searchdomain, :label => _('DNS domain'), :label_size => "col-md-2" %>
59
66
  <%= text_f f, :nameserver, :label => _('DNS servers'), :label_size => "col-md-2" %>
60
67
  <%= textarea_f f, :sshkeys, :label => _("SSH public key"), :size => "col-md-4" %>
61
- <% end %>
68
+ <% end %>
@@ -41,6 +41,7 @@ along with ForemanFogProxmox. If not, see <http://www.gnu.org/licenses/>. %>
41
41
  <td>
42
42
  <%= action_buttons(
43
43
  vm_power_action(vm, authorizer),
44
+ vm_associate_link(vm),
44
45
  display_delete_if_authorized(hash_for_compute_resource_vm_path(:compute_resource_id => @compute_resource, :id => vm.unique_cluster_identity(@compute_resource)).merge(:auth_object => @compute_resource, :authorizer => authorizer))) %>
45
46
  </td>
46
47
  </tr>
@@ -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.14.3'
21
+ VERSION = '0.15.0'
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.14.3
4
+ version: 0.15.0
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-08-25 00:00:00.000000000 Z
12
+ date: 2023-11-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: deface
@@ -262,29 +262,29 @@ signing_key:
262
262
  specification_version: 4
263
263
  summary: Foreman plugin that adds Proxmox VE compute resource using fog-proxmox
264
264
  test_files:
265
+ - test/factories/proxmox_factory.rb
266
+ - test/factories/foreman_fog_proxmox/proxmox_container_mock_factory.rb
265
267
  - test/factories/foreman_fog_proxmox/proxmox_server_mock_factory.rb
266
268
  - test/factories/foreman_fog_proxmox/proxmox_node_mock_factory.rb
267
- - test/factories/foreman_fog_proxmox/proxmox_container_mock_factory.rb
268
- - test/factories/proxmox_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
269
272
  - test/unit/foreman_fog_proxmox/proxmox_test.rb
273
+ - test/unit/foreman_fog_proxmox/proxmox_vm_commands_container_test.rb
274
+ - test/unit/foreman_fog_proxmox/proxmox_vm_queries_test.rb
275
+ - test/unit/foreman_fog_proxmox/semver_test.rb
276
+ - test/unit/foreman_fog_proxmox/proxmox_vm_commands_server_update_test.rb
277
+ - test/unit/foreman_fog_proxmox/proxmox_vm_commands_server_update_cloudinit_test.rb
270
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
+ - test/unit/foreman_fog_proxmox/proxmox_compute_attributes_test.rb
282
+ - test/unit/foreman_fog_proxmox/helpers/proxmox_server_helper_test.rb
283
+ - test/unit/foreman_fog_proxmox/helpers/proxmox_vm_helper_test.rb
271
284
  - test/unit/foreman_fog_proxmox/helpers/proxmox_container_helper_test.rb
272
285
  - test/unit/foreman_fog_proxmox/helpers/proxmox_vm_uuid_helper_test.rb
273
- - test/unit/foreman_fog_proxmox/helpers/proxmox_vm_helper_test.rb
274
286
  - test/unit/foreman_fog_proxmox/helpers/proxmox_vm_volumes_helper_test.rb
275
- - test/unit/foreman_fog_proxmox/helpers/proxmox_server_helper_test.rb
276
- - test/unit/foreman_fog_proxmox/proxmox_vm_commands_container_test.rb
287
+ - test/unit/foreman_fog_proxmox/proxmox_version_test.rb
277
288
  - test/unit/foreman_fog_proxmox/proxmox_interfaces_test.rb
278
289
  - test/unit/foreman_fog_proxmox/proxmox_vm_commands_server_update_hard_disk_test.rb
279
- - test/unit/foreman_fog_proxmox/proxmox_images_test.rb
280
290
  - test/unit/foreman_fog_proxmox/proxmox_vm_commands_server_update_cdrom_test.rb
281
- - test/unit/foreman_fog_proxmox/proxmox_vm_commands_server_update_test.rb
282
- - test/unit/foreman_fog_proxmox/proxmox_version_test.rb
283
- - test/unit/foreman_fog_proxmox/proxmox_vm_queries_test.rb
284
- - test/unit/foreman_fog_proxmox/proxmox_vm_new_test.rb
285
- - test/unit/foreman_fog_proxmox/proxmox_vm_commands_server_update_cloudinit_test.rb
286
- - test/unit/foreman_fog_proxmox/proxmox_vm_commands_server_create_test.rb
287
- - test/unit/foreman_fog_proxmox/proxmox_compute_attributes_test.rb
288
- - test/unit/foreman_fog_proxmox/semver_test.rb
289
- - test/functional/compute_resources_controller_test.rb
290
- - test/test_plugin_helper.rb