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 +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
|