Class: VagrantPlugins::ManagedServers::Action::UploadStatus

Inherits:
Object
  • Object
show all
Defined in:
lib/vagrant-managed-servers/action/upload_status.rb

Instance Method Summary collapse

Constructor Details

#initialize(app, _env) ⇒ UploadStatus

Returns a new instance of UploadStatus.



7
8
9
10
# File 'lib/vagrant-managed-servers/action/upload_status.rb', line 7

def initialize(app, _env)
  @app    = app
  @logger = Log4r::Logger.new("vagrant_managed_servers::action::upload_status")
end

Instance Method Details

#call(env) ⇒ Object



12
13
14
15
16
# File 'lib/vagrant-managed-servers/action/upload_status.rb', line 12

def call(env)
  upload_status(env[:status], env[:machine], env[:ui])

  @app.call(env)
end

#upload_status(status, machine, ui) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/vagrant-managed-servers/action/upload_status.rb', line 18

def upload_status(status, machine, ui)
  source = status.local_path
  destination = status.remote_path(machine.config.vm.communicator)
  parent_folder = File.split(destination)[0]
  machine.communicate.wait_for_ready(5)
  @logger.debug("Ensuring vagrant_orchestrate status directory exists")
  machine.communicate.sudo("mkdir -p #{parent_folder}")
  machine.communicate.sudo("chmod 777 #{parent_folder}")
  ui.info("Uploading vagrant orchestrate status to #{destination}")
  @logger.debug("Uploading vagrant_orchestrate status")
  @logger.debug("  source: #{source}")
  @logger.debug("  dest: #{destination}")
  machine.communicate.upload(source, destination)
  @logger.debug("Setting uploaded file world-writable")
  machine.communicate.sudo("chmod 777 #{destination}")
rescue => ex
  @logger.error(ex)
  ui.warn("An error occurred when trying to upload status to #{machine.name}. Continuing")
  ui.warn(ex.message)
end