class Nifty::TransferMethods::Opennebula::Scp

SCP transfer method Copies file from remote server to the destination and clens it after the event is processed

Attributes

host[R]
user[R]

Public Class Methods

backend() click to toggle source

@see Nifty::TransferMethod#backend

# File lib/nifty/transfer_methods/opennebula/scp.rb, line 15
def backend
  Nifty::Backends::Opennebula
end
description() click to toggle source

@see Nifty::TransferMethod#description

# File lib/nifty/transfer_methods/opennebula/scp.rb, line 10
def description
  'SCP transfer method - copies images from remote host'
end
new(destination, options={}) click to toggle source

@see Nifty::TransferMethod#initialize

Calls superclass method Nifty::TransferMethod::new
# File lib/nifty/transfer_methods/opennebula/scp.rb, line 26
def initialize(destination, options={})
  fail Nifty::Errors::TransferMethods::NoRemoteHostError, 'Missing remote host option for SCP transfer method' unless options[:'remote-host']

  @host = options[:'remote-host']
  @user = options[:'remote-user'] || Etc.getlogin

  super(destination, options)
end
transfer_method?() click to toggle source

@see Nifty::TransferMethod#transfer_method?

# File lib/nifty/transfer_methods/opennebula/scp.rb, line 20
def transfer_method?
  true
end

Public Instance Methods

clean_copy(file) click to toggle source

@see Nifty::TransferMethod#clean_copy

# File lib/nifty/transfer_methods/opennebula/scp.rb, line 51
def clean_copy(file)
  # no remote cleaning
end
transfer(file) click to toggle source

@see Nifty::TransferMethod#transfer

# File lib/nifty/transfer_methods/opennebula/scp.rb, line 36
def transfer(file)
  destination_line = "#{user}@#{host}:#{destination}"
  logger.debug("Copying file #{file.inspect} to destination #{destination_line.inspect}")
  scp_command = Mixlib::ShellOut.new('scp', file, destination_line)
  scp_command.run_command

  if scp_command.error?
    raise Nifty::Errors::TransferMethods::ScpCommandExecutionError, "Command #{scp_command.command.inspect} terminated with an " \
                                                                    "error: #{scp_command.stderr}"
  end

  destination_file file
end

Private Instance Methods

destination_file(file) click to toggle source

TODO duplicit method (cp transfer method) -> move to helper class

# File lib/nifty/transfer_methods/opennebula/scp.rb, line 58
def destination_file(file)
  File.join(destination, File.basename(file))
end