Sha256: f98c913aeeef2c775da6637b34fb5cf399289f363fa5baffb140f391eaff9a28

Contents?: true

Size: 1.78 KB

Versions: 46

Compression:

Stored size: 1.78 KB

Contents

require 'fog/core/collection'
require 'fog/xenserver/models/compute/server'

module Fog
  module Compute
    class XenServer

      class Servers < Fog::Collection

        model Fog::Compute::XenServer::Server

        def templates
          data = service.get_records 'VM'
          data.delete_if do |vm|
            !vm[:is_a_template]
          end
          load(data)
        end

        def custom_templates
          data = service.get_records 'VM'
          data.delete_if do |vm|
            !vm[:is_a_template] or !vm[:other_config]['default_template'].nil?
          end
          load(data)
        end

        def builtin_templates
          data = service.get_records 'VM'
          data.delete_if do |vm|
            !vm[:is_a_template] or vm[:other_config]['default_template'].nil?
          end
          load(data)
        end

        def all(options = {})
          data = service.get_records 'VM'
          # Exclude templates
          data.delete_if { |vm| vm[:is_control_domain] or vm[:is_a_template] }
          data.delete_if { |vm| vm[:is_a_snapshot] and !options[:include_snapshots] }
          data.delete_if { |vm| options[:name_matches] and (vm[:name_label] !~ /#{Regexp.escape(options[:name_matches])}/i ) }
          data.delete_if { |vm| options[:name_equals] and (vm[:name_label] != options[:name_equals] ) }
          load(data)
        end

        def get_by_name( name )
          ref = service.get_vm_by_name( name )
          get ref
        end

        def get_by_uuid( uuid )
          ref = service.get_vm_by_uuid( uuid )
          get ref
        end

        def get( vm_ref )
          if vm_ref && vm = service.get_record( vm_ref, 'VM' )
            new(vm)
          end
        rescue Fog::XenServer::NotFound
          nil
        end

      end

    end
  end
end

Version data entries

46 entries across 46 versions & 4 rubygems

Version Path
fog-xenserver-0.0.1.alpha2 lib/fog/xenserver/models/compute/servers.rb
fog-xenserver-0.0.1.alpha lib/fog/xenserver/models/compute/servers.rb
fog-1.22.0 lib/fog/xenserver/models/compute/servers.rb
fog-1.21.0 lib/fog/xenserver/models/compute/servers.rb
fog-maestrodev-1.20.0.20140305101839 lib/fog/xenserver/models/compute/servers.rb
fog-maestrodev-1.20.0.20140305101305 lib/fog/xenserver/models/compute/servers.rb
fog-maestrodev-1.19.0.20140212012611 lib/fog/xenserver/models/compute/servers.rb
fog-1.20.0 lib/fog/xenserver/models/compute/servers.rb
fog-maestrodev-1.19.0.20140110004459 lib/fog/xenserver/models/compute/servers.rb
fog-maestrodev-1.19.0.20140110003812 lib/fog/xenserver/models/compute/servers.rb
fog-maestrodev-1.19.0.20140109202555 lib/fog/xenserver/models/compute/servers.rb
fog-maestrodev-1.19.0.20140107192102 lib/fog/xenserver/models/compute/servers.rb
fog-maestrodev-1.19.0.20140107142106 lib/fog/xenserver/models/compute/servers.rb
fog-maestrodev-1.19.0.20131219203941 lib/fog/xenserver/models/compute/servers.rb
fog-maestrodev-1.18.0.20131219193542 lib/fog/xenserver/models/compute/servers.rb
fog-1.19.0 lib/fog/xenserver/models/compute/servers.rb
fog-maestrodev-1.18.0.20131219033443 lib/fog/xenserver/models/compute/servers.rb
fog-maestrodev-1.18.0.20131219032002 lib/fog/xenserver/models/compute/servers.rb
fog-maestrodev-1.18.0.20131219030716 lib/fog/xenserver/models/compute/servers.rb
fog-maestrodev-1.18.0.20131219022322 lib/fog/xenserver/models/compute/servers.rb