Class: Fog::Compute::Vmfusion::Server
- Defined in:
- lib/fog/vmfusion/models/compute/server.rb
Instance Attribute Summary collapse
-
#password ⇒ Object
Returns the value of attribute password.
Attributes inherited from Server
#private_key, #private_key_path, #public_key, #public_key_path, #username
Attributes inherited from Model
Instance Method Summary collapse
-
#clone(name) ⇒ Object
Fussion doesn’t have the concept of templates so one just clones regular VMs.
-
#destroy(options = { :force => false }) ⇒ Object
Destroy, deletes the VM from the local disk but only hard stops the VM before doing so if you set :force to true.
-
#halt ⇒ Object
Halt and poweroff are just synonyms for stop.
-
#ipaddress ⇒ Object
We obtain the first ipaddress.
-
#mac_addresses ⇒ Object
Collecting all mac_addresses the VM has…mostly just because we are doing the same thing for the vSphere provider.
-
#path ⇒ Object
Path to the VM’s vmx file on the local disk.
-
#power_state ⇒ Object
The power state of the VM is commonly going to be three values; running, not running, or suspended.
- #poweroff ⇒ Object
- #private_ip_address ⇒ Object
-
#public_ip_address ⇒ Object
Keeping these three methods around for API compatibility reasons.
- #ready? ⇒ Boolean
-
#reboot ⇒ Object
Attempt a graceful shutdown, wait for the VM to completely shutdown and then start it again.
-
#resume ⇒ Object
Resuming from suspend is the same thing as start to Fusion.
-
#save ⇒ Object
There is currently no documented model of creating VMs from scratch sans Fusion’s wizard.
-
#scp(local_path, remote_path, upload_options = {}) ⇒ Object
SCP something to our VM.
-
#setup(credentials = {}) ⇒ Object
Sets up a new SSH key on the VM so one doesn’t need to use a password ever again.
-
#shutdown ⇒ Object
This is a graceful shutdown but Fusion is only capable of a graceful shutdown if tools are installed.
-
#ssh(commands) ⇒ Object
Simply spawn an SSH session.
-
#start(options = { :headless => false }) ⇒ Object
Start is pretty self explanatory…if you pass :headless as true you won’t get a console on launch.
- #state ⇒ Object
-
#stop ⇒ Object
Stop is a hard stop, like pulling out the power cord.
- #suspend ⇒ Object
Methods inherited from Server
#scp_download, #ssh_port, #sshable?
Methods inherited from Model
#initialize, #inspect, #reload, #symbolize_keys, #to_json, #wait_for
Methods included from Attributes::ClassMethods
#_load, #aliases, #attribute, #attributes, #identity, #ignore_attributes, #ignored_attributes
Methods included from Attributes::InstanceMethods
#_dump, #attributes, #dup, #identity, #identity=, #merge_attributes, #new_record?, #requires, #requires_one
Constructor Details
This class inherits a constructor from Fog::Model
Instance Attribute Details
#password ⇒ Object
Returns the value of attribute password.
16 17 18 |
# File 'lib/fog/vmfusion/models/compute/server.rb', line 16 def password @password end |
Instance Method Details
#clone(name) ⇒ Object
Fussion doesn’t have the concept of templates so one just clones regular VMs.
26 27 28 29 30 31 |
# File 'lib/fog/vmfusion/models/compute/server.rb', line 26 def clone(name) requires :raw ::Fission::VM.clone(@raw[:fission].name,name) return connection.servers.get(name) end |
#destroy(options = { :force => false }) ⇒ Object
Destroy, deletes the VM from the local disk but only hard stops the VM before doing so if you set :force to true.
35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/fog/vmfusion/models/compute/server.rb', line 35 def destroy( = { :force => false }) requires :raw if ready? if [:force] stop end end @raw[:fission].delete end |
#halt ⇒ Object
Halt and poweroff are just synonyms for stop.
76 77 78 |
# File 'lib/fog/vmfusion/models/compute/server.rb', line 76 def halt stop end |
#ipaddress ⇒ Object
We obtain the first ipaddress. This should generally be a safe assumption for Fusion. Even if an address is provided via NAT, bridge, or host only it will by accessible from the host machine the VM resides on.
149 150 151 152 |
# File 'lib/fog/vmfusion/models/compute/server.rb', line 149 def ipaddress requires :raw ip(@raw[:fission]) end |
#mac_addresses ⇒ Object
Collecting all mac_addresses the VM has…mostly just because we are doing the same thing for the vSphere provider.
173 174 175 176 |
# File 'lib/fog/vmfusion/models/compute/server.rb', line 173 def mac_addresses requires :raw macs(@raw[:fission]) end |
#path ⇒ Object
Path to the VM’s vmx file on the local disk.
140 141 142 143 |
# File 'lib/fog/vmfusion/models/compute/server.rb', line 140 def path requires :raw @raw[:fission].path end |
#power_state ⇒ Object
The power state of the VM is commonly going to be three values; running, not running, or suspended.
129 130 131 132 |
# File 'lib/fog/vmfusion/models/compute/server.rb', line 129 def power_state requires :raw @raw[:fission].state.data end |
#poweroff ⇒ Object
80 81 82 |
# File 'lib/fog/vmfusion/models/compute/server.rb', line 80 def poweroff stop end |
#private_ip_address ⇒ Object
163 164 165 |
# File 'lib/fog/vmfusion/models/compute/server.rb', line 163 def private_ip_address ipaddress end |
#public_ip_address ⇒ Object
Keeping these three methods around for API compatibility reasons. Makes the vmfusion provider function similar to cloud providers and the vsphere provider. Future goal is to add an actual private and public concept. Needs changes to fission and a determination what is a public or private address here; bridge, nat, host-only.
159 160 161 |
# File 'lib/fog/vmfusion/models/compute/server.rb', line 159 def public_ip_address ipaddress end |
#ready? ⇒ Boolean
134 135 136 137 |
# File 'lib/fog/vmfusion/models/compute/server.rb', line 134 def ready? requires :raw @raw[:fission].running?.data end |
#reboot ⇒ Object
Attempt a graceful shutdown, wait for the VM to completely shutdown and then start it again.
99 100 101 102 103 104 105 106 107 108 |
# File 'lib/fog/vmfusion/models/compute/server.rb', line 99 def reboot if ready? shutdown wait_for { ! ready? } start return true else return false end end |
#resume ⇒ Object
Resuming from suspend is the same thing as start to Fusion.
111 112 113 |
# File 'lib/fog/vmfusion/models/compute/server.rb', line 111 def resume start end |
#save ⇒ Object
There is currently no documented model of creating VMs from scratch sans Fusion’s wizard.
20 21 22 |
# File 'lib/fog/vmfusion/models/compute/server.rb', line 20 def save raise Fog::Errors::Error.new('Creating a new vm is not yet supported') end |
#scp(local_path, remote_path, upload_options = {}) ⇒ Object
SCP something to our VM.
187 188 189 190 191 192 193 194 195 |
# File 'lib/fog/vmfusion/models/compute/server.rb', line 187 def scp(local_path, remote_path, = {}) requires :ipaddress, :username = {} [:password] = password unless self.password.nil? [:key_data] = [private_key] if self.private_key Fog::SCP.new(ipaddress, username, ).upload(local_path, remote_path, ) end |
#setup(credentials = {}) ⇒ Object
Sets up a new SSH key on the VM so one doesn’t need to use a password ever again.
199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 |
# File 'lib/fog/vmfusion/models/compute/server.rb', line 199 def setup(credentials = {}) requires :public_key, :ipaddress, :username credentials[:password] = password unless self.password.nil? credentails[:key_data] = [private_key] if self.private_key commands = [ %{mkdir .ssh}, ] if public_key commands << %{echo "#{public_key}" >> ~/.ssh/authorized_keys} end # wait for domain to be ready Timeout::timeout(360) do begin Timeout::timeout(8) do Fog::SSH.new(ipaddress, username, credentials.merge(:timeout => 4)).run('pwd') end rescue Errno::ECONNREFUSED sleep(2) retry rescue Net::SSH::AuthenticationFailed, Timeout::Error retry end end Fog::SSH.new(ipaddress, username, credentials).run(commands) end |
#shutdown ⇒ Object
This is a graceful shutdown but Fusion is only capable of a graceful shutdown if tools are installed. Fusion does the right thing though and if graceful can’t be initiated it just does a hard stop.
87 88 89 90 91 92 93 94 95 |
# File 'lib/fog/vmfusion/models/compute/server.rb', line 87 def shutdown requires :raw if ready? @raw[:fission].stop return true else return false end end |
#ssh(commands) ⇒ Object
Simply spawn an SSH session.
182 183 184 |
# File 'lib/fog/vmfusion/models/compute/server.rb', line 182 def ssh(commands) super(commands, password ? {:password => password} : {}) end |
#start(options = { :headless => false }) ⇒ Object
Start is pretty self explanatory…if you pass :headless as true you won’t get a console on launch.
49 50 51 52 53 54 55 56 57 58 |
# File 'lib/fog/vmfusion/models/compute/server.rb', line 49 def start( = { :headless => false }) requires :raw unless ready? @raw[:fission].start(:headless => [:headless]) return true else return false end end |
#state ⇒ Object
167 168 169 |
# File 'lib/fog/vmfusion/models/compute/server.rb', line 167 def state power_state end |
#stop ⇒ Object
Stop is a hard stop, like pulling out the power cord.
64 65 66 67 68 69 70 71 72 73 |
# File 'lib/fog/vmfusion/models/compute/server.rb', line 64 def stop requires :raw if ready? @raw[:fission].stop(:hard => true) return true else return false end end |
#suspend ⇒ Object
115 116 117 118 119 120 121 122 123 |
# File 'lib/fog/vmfusion/models/compute/server.rb', line 115 def suspend requires :raw if ready? @raw[:fission].suspend return true else return false end end |