Module: Mccloud::Provider::Libvirt::VmCommand
- Included in:
- Vm
- Defined in:
- lib/mccloud/provider/libvirt/vm/up.rb,
lib/mccloud/provider/libvirt/vm/scp.rb,
lib/mccloud/provider/libvirt/vm/ssh.rb,
lib/mccloud/provider/libvirt/vm/halt.rb,
lib/mccloud/provider/libvirt/vm/rsync.rb,
lib/mccloud/provider/libvirt/vm/reload.rb,
lib/mccloud/provider/libvirt/vm/destroy.rb,
lib/mccloud/provider/libvirt/vm/forward.rb,
lib/mccloud/provider/libvirt/vm/bootstrap.rb,
lib/mccloud/provider/libvirt/vm/provision.rb
Instance Method Summary collapse
- #_bootstrap(command, options = nil) ⇒ Object
- #_provision(options) ⇒ Object
- #destroy(options) ⇒ Object
- #forward(command, options = {}) ⇒ Object
- #halt(options) ⇒ Object
- #reload(options) ⇒ Object
- #rsync(path, options) ⇒ Object
- #scp(src, dest, options = {}) ⇒ Object
- #ssh(command, options = {}) ⇒ Object
- #transfer(src, dest, options = {}) ⇒ Object
- #up(options) ⇒ Object
Instance Method Details
#_bootstrap(command, options = nil) ⇒ Object
7 8 9 10 11 12 13 |
# File 'lib/mccloud/provider/libvirt/vm/bootstrap.rb', line 7 def _bootstrap(command,=nil) if raw.ready? env.ui.info "[#{@name}] - Waiting for an ip-address " raw.wait_for { printf "."; STDOUT.flush; !public_ip_address.nil? } end ssh_bootstrap(command,) end |
#_provision(options) ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/mccloud/provider/libvirt/vm/provision.rb', line 5 def _provision() unless raw.nil? if raw.ready? @provisioners.each do |provisioner| env.ui.info "[#{@name}] - starting provisioning with #{provisioner.name} as provisioner" provisioner.run(self) end else env.ui.info "[#{@name}] - machine is not running, skipping provisioning" end else env.ui.info "[#{@name}] - machine doesn't exit yet" end end |
#destroy(options) ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/mccloud/provider/libvirt/vm/destroy.rb', line 5 def destroy() fullname="#{@provider.filter}#{@name}" server=@provider.raw.servers.all(:name => fullname) volname="#{fullname}.img" #TODO use the creation options volume=@provider.raw.volumes.all(:name => volname) unless server.nil? env.ui.info "[#{@name}] - Destroying machine #{@provider.namespace}::#{@name}" server.first.destroy else env.ui.info "[#{@name}] - Server #{@provider.namespace}::#{@name} does not exist" end unless volume.nil? env.ui.info "[#{@name}] - Destroying volume #{@provider.namespace}::#{@name}.img" volume.first.destroy else env.ui.info "[#{@name}] - Volume #{@provider.namespace}::#{@name}.img does not exist" end end |
#forward(command, options = {}) ⇒ Object
5 6 7 8 |
# File 'lib/mccloud/provider/libvirt/vm/forward.rb', line 5 def forward(command,={}) @forward_threads=Array.new return self.ssh_forward() end |
#halt(options) ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 |
# File 'lib/mccloud/provider/libvirt/vm/halt.rb', line 5 def halt() if self.running? env.ui.info "Halting machine #{@name}(#{@raw.id})" raw.shutdown raw.wait_for { printf "."; STDOUT.flush; state=="stopped"||state=="crashed"} env.ui.info "" else env.ui.info "#{@name}(#{raw.id}) is already halted." end end |
#reload(options) ⇒ Object
4 5 6 7 8 9 10 |
# File 'lib/mccloud/provider/libvirt/vm/reload.rb', line 4 def reload() env.logger.info "Checking if #{@name} is running: #{self.running?}" if self.running? self.halt() end self.up() end |
#rsync(path, options) ⇒ Object
5 6 7 |
# File 'lib/mccloud/provider/libvirt/vm/rsync.rb', line 5 def rsync(path,) super(path,) end |
#scp(src, dest, options = {}) ⇒ Object
9 10 11 |
# File 'lib/mccloud/provider/libvirt/vm/scp.rb', line 9 def scp(src,dest, = {}) raw.scp(src,dest,) end |
#ssh(command, options = {}) ⇒ Object
5 6 7 |
# File 'lib/mccloud/provider/libvirt/vm/ssh.rb', line 5 def ssh(command,={}) super(command,) end |
#transfer(src, dest, options = {}) ⇒ Object
5 6 7 |
# File 'lib/mccloud/provider/libvirt/vm/scp.rb', line 5 def transfer(src,dest, = {}) scp(src,dest,) end |
#up(options) ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/mccloud/provider/libvirt/vm/up.rb', line 5 def up() env.ui.info "Upping of libvirt vm #{@name}" # There is no existing machine yet, so we create it if raw.nil? =@create_options [:name]="#{@provider.filter}#{@name}" env.ui.info "[#{@name}] - Creating machine #{@provider.namespace}::#{@name}" @raw=@provider.raw.servers.create() raw.start env.ui.info "[#{@name}] - Waiting for the machine to become accessible" raw.wait_for { printf "."; STDOUT.flush; ready?} # Wait for ssh to become available ... env.ui.info "[#{@name}] - Waiting for ip address" #env.ui.info instance.console_output.body["output"] raw.wait_for { printf "."; STDOUT.flush; !public_ip_address.nil?} env.ui.info "[#{@name}] - Waiting for ssh on #{self.ip_address} to become available" Mccloud::Util::Ssh.execute_when_tcp_available(self.ip_address, { :port => @port, :timeout => 6000 }) do env.ui.info "[#{@name}] - Ssh is available , proceeding with bootstrap" end # Because it's a new machine we bootstrap it to self._bootstrap(nil,) else state=raw.state if state !="running" env.ui.info "Booting up machine #{@name}" raw.start raw.wait_for { printf ".";STDOUT.flush; ready?} env.ui.info "" else unless raw.state == "shutting-down" env.ui.info "[#{@name}] - already running." else env.ui.info "[#{@name}] - can't start machine because it is in state #{raw.state}" return end end end unless ["noprovision"] env.ui.info "[#{@name}] - Waiting for ssh to become available" Mccloud::Util::Ssh.execute_when_tcp_available(self.ip_address, { :port => @port, :timeout => 6000 }) do env.ui.info "[#{@name}] - Ssh is available , proceeding with provisioning" end env.ui.info "[#{@name}] - provision step #{@name}" self._provision() end end |