foreman_fog_proxmox 0.14.3 → 0.15.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/javascripts/foreman_fog_proxmox/proxmox_vm.js +32 -6
- data/app/helpers/proxmox_compute_resources_vms_helper.rb +6 -1
- data/app/helpers/proxmox_vm_cloudinit_helper.rb +99 -0
- data/app/models/foreman_fog_proxmox/proxmox_interfaces.rb +0 -2
- data/app/models/foreman_fog_proxmox/proxmox_vm_commands.rb +1 -0
- data/app/views/compute_resources_vms/form/proxmox/container/_advanced.html.erb +1 -11
- data/app/views/compute_resources_vms/form/proxmox/container/_config.html.erb +19 -12
- data/app/views/compute_resources_vms/form/proxmox/server/_advanced.html.erb +1 -9
- data/app/views/compute_resources_vms/form/proxmox/server/_config.html.erb +23 -16
- data/app/views/compute_resources_vms/index/_proxmox.html.erb +1 -0
- data/lib/foreman_fog_proxmox/version.rb +1 -1
- metadata +18 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b41c2a927bcce7383e1fd55c588247e935e0c6e11ba967fe6628db72a80730df
|
4
|
+
data.tar.gz: ce7634ce750c8317bc28906e4394888d50b66931b9c77586f3af90c339ca07c2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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 =>
|
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
|
@@ -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
|
-
|
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
|
-
<%=
|
21
|
-
<%=
|
22
|
-
|
23
|
-
|
24
|
-
<%=
|
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
|
-
|
30
|
-
<%=
|
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
|
-
|
34
|
-
<%=
|
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
|
-
|
39
|
-
<%=
|
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
|
-
|
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
|
-
|
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
|
-
<%=
|
24
|
-
<%=
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
<%=
|
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
|
-
|
47
|
-
<%=
|
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
|
-
|
52
|
-
<%=
|
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>
|
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.
|
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-
|
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/
|
268
|
-
- test/
|
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/
|
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
|