Sha256: 33318c026c690786a51862a9a3f10f50d357bdc670f0529739bb3daaa1e82a1d

Contents?: true

Size: 1.92 KB

Versions: 17

Compression:

Stored size: 1.92 KB

Contents

require 'fog/ecloud/models/compute/server'

module Fog
  module Compute
    class Ecloud
      class Servers < Fog::Ecloud::Collection
        model Fog::Compute::Ecloud::Server

        identity :href

        def all
          data = service.get_servers(href).body
          if data.keys.include?(:VirtualMachines)
            data = data[:VirtualMachines][:VirtualMachine]
          elsif data[:VirtualMachine]
            data = data[:VirtualMachine]
          else
            data = []
          end
          load(data)
        end

        def get(uri)
          data = service.get_server(uri).body
          new(data)
        rescue Fog::Errors::NotFound
          nil
        end

        def from_data(data)
          new(data)
        end

        def create( template_uri, options )
          options[:cpus]        ||= 1
          options[:memory]      ||= 512
          options[:description] ||= ""
          options[:tags]        ||= []

          if template_uri =~ /\/templates\/\d+/
            options[:uri] = href + "/action/createVirtualMachine"
            options[:customization] ||= :linux
            options[:powered_on] ||= false
            if options[:ips]
              options[:ips] = [*options[:ips]]
            else
              [*options[:network_uri]].each do |uri|
                index = options[:network_uri].index(uri)
                ip = self.service.ip_addresses(:href => uri).find { |i| i.host == nil && i.detected_on.nil? }.name
                options[:ips] ||= []
                options[:ips][index] = ip
              end
            end
            data = service.virtual_machine_create_from_template( template_uri, options ).body
          else
            options[:uri] = href + "/action/importVirtualMachine"
            data = service.virtual_machine_import( template_uri, options ).body
          end
          object = self.service.servers.new(data)
          object
        end
      end
    end
  end
end

Version data entries

17 entries across 17 versions & 5 rubygems

Version Path
vagrant-cloudstack-1.1.0 vendor/bundle/gems/fog-1.22.1/lib/fog/ecloud/models/compute/servers.rb
fog-ecloud-0.0.2 lib/fog/ecloud/models/compute/servers.rb
fog-ecloud-0.0.1 lib/fog/ecloud/models/compute/servers.rb
fog-1.25.0 lib/fog/ecloud/models/compute/servers.rb
nsidc-fog-1.24.1 lib/fog/ecloud/models/compute/servers.rb
fog-1.24.0 lib/fog/ecloud/models/compute/servers.rb
ns-fog-1.22.11 lib/fog/ecloud/models/compute/servers.rb
ns-fog-1.22.10 lib/fog/ecloud/models/compute/servers.rb
ns-fog-1.22.9 lib/fog/ecloud/models/compute/servers.rb
ns-fog-1.22.8 lib/fog/ecloud/models/compute/servers.rb
ns-fog-1.22.7 lib/fog/ecloud/models/compute/servers.rb
ns-fog-1.22.6 lib/fog/ecloud/models/compute/servers.rb
fog-1.23.0 lib/fog/ecloud/models/compute/servers.rb
ns-fog-1.22.4 lib/fog/ecloud/models/compute/servers.rb
ns-fog-1.22.3 lib/fog/ecloud/models/compute/servers.rb
ns-fog-1.22.2 lib/fog/ecloud/models/compute/servers.rb
fog-1.22.1 lib/fog/ecloud/models/compute/servers.rb