Sha256: 5f48599a17f742dcc3d9b59e0b46b70f9b30234e6ad2c229210349bc2028368c

Contents?: true

Size: 1.97 KB

Versions: 6

Compression:

Stored size: 1.97 KB

Contents

# 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 <http://www.gnu.org/licenses/>.

module FogExtensions
  module Proxmox
    module Server
      extend ActiveSupport::Concern
      attr_accessor :image_id, :templated, :ostemplate_storage, :ostemplate_file, :password

      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
        "Name=#{name}, vmid=#{vmid}"
      end

      def select_nic(fog_nics, nic)
        fog_nics.find { |fog_nic| fog_nic.identity.to_s == nic.identifier }
      end

      delegate :interfaces, to: :config

      def nics
        config.interfaces.collect(&:to_s)
      end

      def volumes
        config.disks.reject(&:cdrom?)
      end

      def disks
        config.disks.collect(&:to_s)
      end

      delegate :vga, to: :config

      def interfaces_attributes=(attrs); end

      def volumes_attributes=(attrs); end

      def config_attributes=(attrs); end

      def templated?
        volumes.any?(&:templated?)
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
foreman_fog_proxmox-0.9.4 app/models/concerns/fog_extensions/proxmox/server.rb
foreman_fog_proxmox-0.9.3 app/models/concerns/fog_extensions/proxmox/server.rb
foreman_fog_proxmox-0.9.2 app/models/concerns/fog_extensions/proxmox/server.rb
foreman_fog_proxmox-0.9.1 app/models/concerns/fog_extensions/proxmox/server.rb
foreman_fog_proxmox-0.9.0 app/models/concerns/fog_extensions/proxmox/server.rb
foreman_fog_proxmox-0.8.2 app/models/concerns/fog_extensions/proxmox/server.rb