class Smokegraphy::FtpResourceController

Public Class Methods

new(config) click to toggle source
# File lib/smokegraphy/resource_controller/ftp_resource_controller.rb, line 9
def initialize(config)
  @config = config
end

Public Instance Methods

add_execute_permission(filename) click to toggle source
# File lib/smokegraphy/resource_controller/ftp_resource_controller.rb, line 50
def add_execute_permission(filename)
  begin
    @@ftp.voidcmd("site chmod 755 #{filename}") 
  rescue => evar
    print "Failed to chmod #{filename}: #{evar}"
  end
end
cleanup(filename = nil) click to toggle source
# File lib/smokegraphy/resource_controller/ftp_resource_controller.rb, line 58
def cleanup(filename = nil)
  if filename then
    files = @@ftp.nlst
    @@ftp.delete(filename) if files.include?(filename)
    @uploaded.delete filename
   else
     files = @@ftp.nlst
     @uploaded.each do |f|
      @@ftp.delete(f) if files.include?(f)
    end
  end
end
close() click to toggle source
# File lib/smokegraphy/resource_controller/ftp_resource_controller.rb, line 24
def close
  @@ftp.close
end
init() click to toggle source
# File lib/smokegraphy/resource_controller/ftp_resource_controller.rb, line 13
def init
  @uploaded = []
  if (@config["deploy"] == "ftp" && $ftp == nil) then
    @@ftp = Net::FTPTLS.new(@config["ftp"]["server"],
                            @config["ftp"]["username"],
                            @config["ftp"]["password"]);
    @@ftp.passive = true
    @@ftp.debug_mode = false
  end      
end
transfer_source_file(filename, testsuite, destname = nil) click to toggle source
# File lib/smokegraphy/resource_controller/ftp_resource_controller.rb, line 28
def transfer_source_file(filename, testsuite, destname = nil)
  begin
    source = "source/#{testsuite}/#{filename}"
    destname ||= filename

    if File.exist?(source) then
      document_root = @config["http"]["document_root"]          

      temp = Tempfile.new("ftp_")
      File.open(temp.path, "w") { |out| out << ERB.new(File.new(source).read).result(binding) }
      @@ftp.put(temp.path, destname)
      temp.close          

      @uploaded << destname  if !(@uploaded.include? destname)
    else
      raise "no such file: #{source}"
    end
  rescue => evar
    raise "Failed to copy #{filename}: #{evar}"
  end
end