module Fog::Proxmox::EfidiskHelper
module EfidiskHelper mixins
Public Class Methods
extract(efidisk_key)
click to toggle source
# File lib/fog/proxmox/helpers/efidisk_helper.rb, line 58 def self.extract(efidisk_key) efidisk = efidisk_key.dup # convert "-" to "_" in 'local:110/vm-110-disk-0.qcow2,efitype=4m,pre-enrolled-keys=1,size=528K' efidisk&.gsub!('pre-enrolled-keys', 'pre_enrolled_keys') names = %i[efitype pre_enrolled_keys size] efidisk_hash = { id: 0, volid: efidisk.split(',')[0], storage: extract_storage(efidisk) } names.each do |name| efidisk_hash.store(name.to_sym, extract_key(name, efidisk)) end efidisk_hash end
extract_key(name, efidisk)
click to toggle source
# File lib/fog/proxmox/helpers/efidisk_helper.rb, line 47 def self.extract_key(name, efidisk) matches = efidisk.match(%r{,{0,1}#{name}={1}(?<name_value>[\w/.:]+)}) matches ? matches[:name_value] : matches end
extract_storage(key)
click to toggle source
# File lib/fog/proxmox/helpers/efidisk_helper.rb, line 52 def self.extract_storage(key) values_a = key.scan(%r{^(([\w-]+):{0,1}([\w/.-]+))}) values = values_a.first if values_a values[1] end
flatten(efidisk)
click to toggle source
# File lib/fog/proxmox/helpers/efidisk_helper.rb, line 24 def self.flatten(efidisk) return '' if efidisk.nil? volume = efidisk[:volid] options = [] if efidisk.key?(:efitype) options.push("efitype=#{efidisk[:efitype]}") else options.push('efitype=4m') # default efitype end options.push("size=#{efidisk[:size]}") if efidisk.key?(:size) if efidisk.key?(:pre_enrolled_keys) options.push("pre-enrolled-keys=#{efidisk[:pre_enrolled_keys]}") else options.push('pre-enrolled-keys=0') # Use 0=disabled if not given end { "efidisk#{efidisk[:id]}": "#{volume},#{options.join(',')}" } end