Class: Fog::Compute::Glesys::Server

Inherits:
Server
  • Object
show all
Extended by:
Deprecation
Defined in:
lib/fog/glesys/models/compute/server.rb

Instance Method Summary collapse

Instance Method Details

#destroy(options = {}) ⇒ Object



49
50
51
52
# File 'lib/fog/glesys/models/compute/server.rb', line 49

def destroy(options = {})
  requires :identity
  service.destroy(options.merge!({:serverid => identity}))
end

#ip(ip) ⇒ Object



116
117
118
# File 'lib/fog/glesys/models/compute/server.rb', line 116

def ip(ip)
  Fog::Compute::Glesys::Ips.new(:serverid => identity, :server => self, :service => service).get(ip)
end

#ipsObject



112
113
114
# File 'lib/fog/glesys/models/compute/server.rb', line 112

def ips
  Fog::Compute::Glesys::Ips.new(:serverid => identity, :server => self, :service => service).all
end

#public_ip_address(options = {}) ⇒ Object



120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# File 'lib/fog/glesys/models/compute/server.rb', line 120

def public_ip_address(options = {})
  return nil if iplist.nil?

  type = options[:type] || nil

  ips = case type
    when :ipv4 then iplist.select { |ip| ip["version"] == 4 }
    when :ipv6 then iplist.select { |ip| ip["version"] == 6 }
    else iplist.sort_by { |ip| ip["version"] }
  end

  if ips.empty?
    nil
  else
    ips.first["ipaddress"]
  end
end

#ready?Boolean

Returns:

  • (Boolean)


30
31
32
# File 'lib/fog/glesys/models/compute/server.rb', line 30

def ready?
  state == 'running'
end

#rebootObject



44
45
46
47
# File 'lib/fog/glesys/models/compute/server.rb', line 44

def reboot
  requires :identity
  service.reboot(:serverid => identity)
end

#saveObject



54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/fog/glesys/models/compute/server.rb', line 54

def save
  raise "Operation not supported" if self.identity
  requires :hostname, :rootpassword

  options = {
    :datacenter     => datacenter   || "Falkenberg",
    :platform       => platform     || "Xen",
    :hostname       => hostname,
    :templatename   => templatename || "Debian-6 x64",
    :disksize       => disksize     || "10",
    :memorysize     => memorysize   || "512",
    :cpucores       => cpucores     || "1",
    :rootpassword   => rootpassword,
    :transfer       => transfer     || "500",
  }

  # optional options when creating a server:
  [:ip, :ipv6, :description].each do |k|
    options[k] = attributes[k] if attributes[k]
  end

  data = service.create(options)
  merge_attributes(data.body['response']['server'])
  data.status == 200 ? true : false
end

#setup(credentials = {}) ⇒ Object



80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# File 'lib/fog/glesys/models/compute/server.rb', line 80

def setup(credentials = {})
  requires :ssh_ip_address, :username
  require 'net/ssh'

  attrs = attributes.dup
  attrs.delete(:rootpassword)

  commands = [
    %{mkdir -p .ssh},
    %{echo "#{Fog::JSON.encode(Fog::JSON.sanitize(attrs))}" >> ~/attributes.json}
  ]
  if public_key
    commands << %{echo "#{public_key}" >> ~/.ssh/authorized_keys}
  end

  if credentials[:password].nil? && !rootpassword.nil?
    credentials[:password] = rootpassword
  end

  # wait for glesys to be ready
  wait_for { sshable?(credentials) }

  Fog::SSH.new(ssh_ip_address, username, credentials).run(commands)
end

#ssh(command, options = {}, &block) ⇒ Object



105
106
107
108
109
110
# File 'lib/fog/glesys/models/compute/server.rb', line 105

def ssh(command, options={}, &block)
  if options[:password].nil? && !rootpassword.nil?
    options[:password] = rootpassword
  end
  super(command, options, &block)
end

#startObject



34
35
36
37
# File 'lib/fog/glesys/models/compute/server.rb', line 34

def start
  requires :identity
  service.start(:serverid => identity)
end

#stopObject



39
40
41
42
# File 'lib/fog/glesys/models/compute/server.rb', line 39

def stop
  requires :identity
  service.stop(:serverid => identity)
end