module Fog::Proxmox::DiskHelper
module Disk mixins
Constants
- CDROM_REGEXP
- DISKS_REGEXP
- MOUNT_POINT_REGEXP
- ROOTFS_REGEXP
- SERVER_DISK_REGEXP
Public Class Methods
cdrom?(value)
click to toggle source
# File lib/fog/proxmox/helpers/disk_helper.rb, line 121 def self.cdrom?(value) CDROM_REGEXP.match?(value) end
container_disk?(id)
click to toggle source
# File lib/fog/proxmox/helpers/disk_helper.rb, line 137 def self.container_disk?(id) rootfs?(id) || mount_point?(id) end
disk?(id)
click to toggle source
# File lib/fog/proxmox/helpers/disk_helper.rb, line 117 def self.disk?(id) DISKS_REGEXP.match?(id) end
extract(id)
click to toggle source
# File lib/fog/proxmox/helpers/disk_helper.rb, line 65 def self.extract(id) id.scan(/(\w+)(\d+)/).first end
extract_controller(id)
click to toggle source
# File lib/fog/proxmox/helpers/disk_helper.rb, line 57 def self.extract_controller(id) extract(id)[0] end
extract_device(id)
click to toggle source
# File lib/fog/proxmox/helpers/disk_helper.rb, line 61 def self.extract_device(id) extract(id)[1].to_i end
extract_option(name, disk_value)
click to toggle source
# File lib/fog/proxmox/helpers/disk_helper.rb, line 69 def self.extract_option(name, disk_value) values = disk_value.scan(/#{name}=(\w+)/) name_value = values.first if values name_value&.first end
extract_size(disk_value)
click to toggle source
# File lib/fog/proxmox/helpers/disk_helper.rb, line 112 def self.extract_size(disk_value) size=extract_option('size', disk_value) size ? self.to_bytes(size) : "1G" end
extract_storage_volid_size(disk_value)
click to toggle source
# File lib/fog/proxmox/helpers/disk_helper.rb, line 75 def self.extract_storage_volid_size(disk_value) #volid definition: <VOULME_ID>:=<STORAGE_ID>:<storage type dependent volume name> values_a = disk_value.scan(/^(([\w-]+)[:]{0,1}([\w\/\.-]+))/) no_cdrom = !disk_value.match(CDROM_REGEXP) creation = disk_value.split(',')[0].match(/^(([\w-]+)[:]{1}([\d]+))$/) values = values_a.first if values_a if no_cdrom if creation storage = values[1] volid = nil size = values[2].to_i else storage = values[1] volid = values[0] size = extract_size(disk_value) end else volid = values[0] storage = values[1] unless %w[none cdrom].include? volid size = nil end [storage, volid, size] end
flatten(disk)
click to toggle source
# File lib/fog/proxmox/helpers/disk_helper.rb, line 32 def self.flatten(disk) id = disk[:id] value = '' if disk[:volid] value += disk[:volid] value += ',size=' + disk[:size].to_s if disk[:size] elsif disk[:storage] && disk[:size] value += disk[:storage] + ':' + disk[:size].to_s elsif id == 'ide2' value += 'none' end opts = disk[:options] if disk[:options] main_a = [:id,:volid,:storage,:size] opts = disk.reject { |key,_value| main_a.include? key } unless opts options = '' options += Fog::Proxmox::Hash.stringify(opts) if opts if id == 'ide2' && !self.cdrom?(options) options += ',' if !options.empty? options += 'media=cdrom' end value += ',' if !options.empty? && !value.empty? value += options { "#{id}": value } end
mount_point?(id)
click to toggle source
# File lib/fog/proxmox/helpers/disk_helper.rb, line 133 def self.mount_point?(id) MOUNT_POINT_REGEXP.match?(id) end
rootfs?(id)
click to toggle source
# File lib/fog/proxmox/helpers/disk_helper.rb, line 129 def self.rootfs?(id) ROOTFS_REGEXP.match?(id) end
server_disk?(id)
click to toggle source
# File lib/fog/proxmox/helpers/disk_helper.rb, line 125 def self.server_disk?(id) SERVER_DISK_REGEXP.match?(id) end
to_bytes(size)
click to toggle source
# File lib/fog/proxmox/helpers/disk_helper.rb, line 99 def self.to_bytes(size) val=size.match(/\d+(\w?)/) m=0 case val[1] when "K" then m=1 when "M" then m=2 when "G" then m=3 when "T" then m=4 when "P" then m=5 end val[0].to_i*1024**m end