# frozen_string_literal: true
# Copyright 2018 Tristan Robert
# This file is part of ForemanFogProxmox.
# ForemanFogProxmox is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# ForemanFogProxmox is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with ForemanFogProxmox. If not, see .
module FogExtensions
module Proxmox
module Server
extend ActiveSupport::Concern
attr_accessor :image_id, :templated, :ostemplate_storage, :ostemplate_file, :password, :start_after_create
def unique_cluster_identity(compute_resource)
compute_resource.id.to_s + '_' + identity
end
def start
action('start')
end
def stop
action('stop')
end
def reboot
stop
start
end
def reset
reboot
end
def mac
config.mac_addresses.first
end
def memory
maxmem.to_i
end
def state
qmpstatus
end
delegate :description, to: :config
def vm_description
format(_('Type %s, node %s, %s CPUs and %s MB memory'), type: type, node: node_id, cpus: config.cores || '0', memory: config.memory / (1024 * 1024) || '0')
end
def select_nic(fog_nics, nic)
fog_nics.find { |fog_nic| fog_nic.identity.to_s == nic.compute_attributes[:id] }
end
delegate :interfaces, to: :config
def nics
config.interfaces.collect(&:to_s)
end
def volumes
config.disks
end
def disks
config.disks.collect(&:to_s)
end
delegate :vga, to: :config
delegate :pool, to: :config
delegate :cloud_init?, to: :config
def interfaces_attributes=(attrs); end
def volumes_attributes=(attrs); end
def config_attributes=(attrs); end
def templated?
volumes.any?(&:template?)
end
def cdrom?
volumes.any?(&:cdrom?)
end
end
end
end