Class: VagrantPlugins::Registration::Plugin

Inherits:
Object
  • Object
show all
Defined in:
lib/vagrant-registration/plugin.rb

Class Method Summary collapse

Class Method Details

.register(hook) ⇒ Object

Vbguest plugin updates GuestAdditions for VirtualBox before ‘::Vagrant::Action::Builtin::SyncedFolders’ and therefore needs to be registered. Prepending Vbguest hook ensures that, but this is done only with Vbguest plugin and VirtualBox provider. In other cases the behavior is unchanged.



23
24
25
26
27
28
29
30
31
32
33
# File 'lib/vagrant-registration/plugin.rb', line 23

def register(hook)
  setup_logging

  if vbguest_plugin?
    hook.before(::VagrantVbguest::Middleware,
                         VagrantPlugins::Registration::Action.action_register)
  else
    hook.after(::Vagrant::Action::Builtin::SyncedFolders,
                       VagrantPlugins::Registration::Action.action_register)
  end
end

.setup_loggingObject

This sets up our log level to be whatever VAGRANT_LOG is for loggers prepended with ‘vagrant_registration’



65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'lib/vagrant-registration/plugin.rb', line 65

def self.setup_logging
  require 'log4r'
  level = nil
  begin
    level = Log4r.const_get(ENV['VAGRANT_LOG'].upcase)
  rescue NameError
    # This means that the logging constant wasn't found,
    # which is fine. We just keep `level` as `nil`. But
    # we tell the user.
    level = nil
  end
  # Some constants, such as "true" resolve to booleans, so the
  # above error checking doesn't catch it. This will check to make
  # sure that the log level is an integer, as Log4r requires.
  level = nil unless level.is_a?(Integer)
  # Set the logging level on all "vagrant" namespaced
  # logs as long as we have a valid level.
  if level
    logger = Log4r::Logger.new('vagrant_registration')
    logger.outputters = Log4r::Outputter.stderr
    logger.level = level
    logger = nil
  end
end

.unregister_on_destroy(hook) ⇒ Object



40
41
42
43
# File 'lib/vagrant-registration/plugin.rb', line 40

def unregister_on_destroy(hook)
  setup_logging
  hook.prepend(VagrantPlugins::Registration::Action.action_unregister_on_destroy)
end

.unregister_on_halt(hook) ⇒ Object



35
36
37
38
# File 'lib/vagrant-registration/plugin.rb', line 35

def unregister_on_halt(hook)
  setup_logging
  hook.prepend(VagrantPlugins::Registration::Action.action_unregister_on_halt)
end

.vbguest_plugin?Boolean

Determines if both VirtualBox provider and Vbguest plugin are present.

Returns:

  • (Boolean)


91
92
93
94
95
96
# File 'lib/vagrant-registration/plugin.rb', line 91

def self.vbguest_plugin?
  @@vbguest_plugin ||= (
    defined?(VagrantPlugins::ProviderVirtualBox::Provider) &&
    defined?(VagrantVbguest::Middleware)
  )
end