Sha256: eba2bf730cc4e2d6672ce7f8d6e913cdd77a7df119510e97effa1b9f0f727f89

Contents?: true

Size: 1.78 KB

Versions: 25

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

25 entries across 25 versions & 4 rubygems

Version Path
vagrant-cloudstack-1.2.0 vendor/bundle/gems/fog-1.32.0/lib/fog/xenserver/models/compute/servers.rb
fog-1.34.0 lib/fog/xenserver/models/compute/servers.rb
fog-1.33.0 lib/fog/xenserver/models/compute/servers.rb
fog-1.32.0 lib/fog/xenserver/models/compute/servers.rb
fog-1.31.0 lib/fog/xenserver/models/compute/servers.rb
vagrant-cloudstack-1.1.0 vendor/bundle/gems/fog-1.22.1/lib/fog/xenserver/models/compute/servers.rb
fog-1.30.0 lib/fog/xenserver/models/compute/servers.rb
fog-1.29.0 lib/fog/xenserver/models/compute/servers.rb
fog-1.28.0 lib/fog/xenserver/models/compute/servers.rb
fog-1.27.0 lib/fog/xenserver/models/compute/servers.rb
fog-1.26.0 lib/fog/xenserver/models/compute/servers.rb
fog-1.25.0 lib/fog/xenserver/models/compute/servers.rb
nsidc-fog-1.24.1 lib/fog/xenserver/models/compute/servers.rb
fog-1.24.0 lib/fog/xenserver/models/compute/servers.rb
ns-fog-1.22.11 lib/fog/xenserver/models/compute/servers.rb
ns-fog-1.22.10 lib/fog/xenserver/models/compute/servers.rb
ns-fog-1.22.9 lib/fog/xenserver/models/compute/servers.rb
ns-fog-1.22.8 lib/fog/xenserver/models/compute/servers.rb
ns-fog-1.22.7 lib/fog/xenserver/models/compute/servers.rb
ns-fog-1.22.6 lib/fog/xenserver/models/compute/servers.rb