Module: ProxmoxVMEfidiskHelper
- Included in:
- ProxmoxVMHelper
- Defined in:
- app/helpers/proxmox_vm_efidisk_helper.rb
Overview
Convert a foreman form server hash into a fog-proxmox server attributes hash
Instance Method Summary collapse
- #efidisk_defaults(storage) ⇒ Object
- #normalize_pre_enrolled_keys(args) ⇒ Object
- #parse_typed_efidisk(args, _vmid, _type) ⇒ Object
- #parsed_typed_efidisk(args, type, parsed_vm) ⇒ Object
- #process_firmware_attributes(args, type) ⇒ Object
- #process_secure_boot_efidisk(args, config) ⇒ Object
- #secure_boot_efidisk_attributes(attr = {}) ⇒ Object
Instance Method Details
#efidisk_defaults(storage) ⇒ Object
76 77 78 79 80 81 82 83 |
# File 'app/helpers/proxmox_vm_efidisk_helper.rb', line 76 def efidisk_defaults(storage) { 'id' => '0', 'volid' => "#{storage}:0", 'efitype' => '4m', 'pre_enrolled_keys' => '1', } end |
#normalize_pre_enrolled_keys(args) ⇒ Object
51 52 53 54 55 56 57 |
# File 'app/helpers/proxmox_vm_efidisk_helper.rb', line 51 def normalize_pre_enrolled_keys(args) efidisk = args[:efidisk_attributes] return args if ForemanFogProxmox::Value.empty?(efidisk) efidisk[:pre_enrolled_keys] = '0' args end |
#parse_typed_efidisk(args, _vmid, _type) ⇒ Object
107 108 109 110 111 112 113 114 115 116 117 |
# File 'app/helpers/proxmox_vm_efidisk_helper.rb', line 107 def parse_typed_efidisk(args, _vmid, _type) logger.debug(format(_('parse_efidisk(): args=%<args>s'), args: args)) efidisk = {} efidisk[:id] = args['id'] if args.key?('id') efidisk[:volid] = args['volid'] efidisk[:size] = args['size'].to_i if args.key?('size') && !args['size'].empty? efidisk[:format] = args['format'] efidisk[:efitype] = args['efitype'] if args.key?('efitype') && !args['efitype'].empty? efidisk[:pre_enrolled_keys] = args['pre_enrolled_keys'] if args.key?('pre_enrolled_keys') Fog::Proxmox::EfidiskHelper.flatten(efidisk) end |
#parsed_typed_efidisk(args, type, parsed_vm) ⇒ Object
90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'app/helpers/proxmox_vm_efidisk_helper.rb', line 90 def parsed_typed_efidisk(args, type, parsed_vm) attrs = args['efidisk_attributes'] # we need the vmid to create the volid if not present vmid = args['vmid'] if args.key?('vmid') # fallback to a dummy vmid for new vms vmid ||= 'no_vmid_yet' logger.debug("parsed_typed_efidisk(#{type}): attrs=#{attrs} with #{vmid}") unless ForemanFogProxmox::Value.empty?(args['efidisk_attributes']) efidisk = parse_typed_efidisk(attrs, vmid, type) logger.debug("parsed_typed_efidisk(#{type}): efidisk=#{efidisk}") parsed_vm = parsed_vm.merge(efidisk) end parsed_vm end |
#process_firmware_attributes(args, type) ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'app/helpers/proxmox_vm_efidisk_helper.rb', line 26 def process_firmware_attributes(args, type) return args unless type == 'qemu' return args unless args normalized_args = ActiveSupport::HashWithIndifferentAccess.new(args) config = normalized_args[:config_attributes] || normalized_args return args unless config.key?(:bios) || config.key?(:is_secure_boot) args = normalized_args bios = config[:bios] secure_boot_value = config[:is_secure_boot] secure_boot = bios == 'uefi_secure_boot' || (bios == 'ovmf' && Foreman::Cast.to_bool(secure_boot_value)) config[:is_secure_boot] = secure_boot ? '1' : '0' unless secure_boot normalize_pre_enrolled_keys(args) return args end config[:bios] = 'ovmf' process_secure_boot_efidisk(args, config) end |
#process_secure_boot_efidisk(args, config) ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'app/helpers/proxmox_vm_efidisk_helper.rb', line 59 def process_secure_boot_efidisk(args, config) efidisk = args[:efidisk_attributes] unless ForemanFogProxmox::Value.empty?(efidisk) args[:efidisk_attributes] = secure_boot_efidisk_attributes( efidisk.merge('efitype' => '4m', 'pre_enrolled_keys' => '1') ) return args end volumes = args[:volumes_attributes] || config[:volumes_attributes] storage = volumes&.each_value&.filter_map { |volume| volume[:storage] }&.find(&:present?) return args if ForemanFogProxmox::Value.empty?(storage) args[:efidisk_attributes] = secure_boot_efidisk_attributes(storage: storage) args end |
#secure_boot_efidisk_attributes(attr = {}) ⇒ Object
85 86 87 88 |
# File 'app/helpers/proxmox_vm_efidisk_helper.rb', line 85 def secure_boot_efidisk_attributes(attr = {}) attr = attr.to_h.stringify_keys efidisk_defaults(attr['storage']).merge(attr) end |