theforeman/foreman-xen

View on GitHub
app/models/concerns/fog_extensions/xenserver/storage_repository.rb

Summary

Maintainability
A
0 mins
Test Coverage
module FogExtensions
  module Xenserver
    module StorageRepository
      extend ActiveSupport::Concern

      included do
        attribute :display_name
        prepend FogExtensions::Xenserver::StorageRepository
      end

      def initialize(new_attributes = {})
        super(new_attributes)
        attributes[:display_name] = init_display_name
      end

      def free_space
        physical_size.to_i - physical_utilisation.to_i
      end

      def free_space_gb
        free_space.to_i / 1024 / 1024 / 1024
      end

      def physical_size_gb
        physical_size.to_i / 1024 / 1024 / 1024
      end

      def physical_utilisation_gb
        physical_utilisation.to_i / 1024 / 1024 / 1024
      end

      def init_display_name
        srname = name
        unless shared
          pbd = pbds.first
          srname = "#{name} - #{pbd.host.name}" unless pbd.nil?
        end
        format('%{n} (%{f}: %{f_gb} GB - %{u}: %{u_gb} GB - %{t}: %{t_gb} GB)',
               n: srname, f: _('free'), f_gb: free_space_gb,
               u: _('used'), u_gb: physical_utilisation_gb,
               t: _('total'), t_gb: physical_size_gb)
      end
    end
  end
end