Class: Fog::Compute::Glesys::Server
- Inherits:
-
Server
- Object
- Server
- Fog::Compute::Glesys::Server
- Extended by:
- Deprecation
- Defined in:
- lib/fog/glesys/models/compute/server.rb
Instance Method Summary collapse
- #destroy(options = {}) ⇒ Object
- #ip(ip) ⇒ Object
- #ips ⇒ Object
- #public_ip_address(options = {}) ⇒ Object
- #ready? ⇒ Boolean
- #reboot ⇒ Object
- #save ⇒ Object
- #setup(credentials = {}) ⇒ Object
- #ssh(command, options = {}, &block) ⇒ Object
- #start ⇒ Object
- #stop ⇒ Object
Instance Method Details
#destroy(options = {}) ⇒ Object
49 50 51 52 |
# File 'lib/fog/glesys/models/compute/server.rb', line 49 def destroy( = {}) requires :identity service.destroy(.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 |
#ips ⇒ Object
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( = {}) return nil if iplist.nil? type = [: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
30 31 32 |
# File 'lib/fog/glesys/models/compute/server.rb', line 30 def ready? state == 'running' end |
#reboot ⇒ Object
44 45 46 47 |
# File 'lib/fog/glesys/models/compute/server.rb', line 44 def reboot requires :identity service.reboot(:serverid => identity) end |
#save ⇒ Object
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 = { :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| [k] = attributes[k] if attributes[k] end data = service.create() 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, ={}, &block) if [:password].nil? && !rootpassword.nil? [:password] = rootpassword end super(command, , &block) end |
#start ⇒ Object
34 35 36 37 |
# File 'lib/fog/glesys/models/compute/server.rb', line 34 def start requires :identity service.start(:serverid => identity) end |
#stop ⇒ Object
39 40 41 42 |
# File 'lib/fog/glesys/models/compute/server.rb', line 39 def stop requires :identity service.stop(:serverid => identity) end |