/usr/share/rubygems-integration/all/gems/vagrant-libvirt-0.0.43/lib/vagrant-libvirt/action.rb is in vagrant-libvirt 0.0.43-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 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 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 | require 'vagrant/action/builder'
require 'log4r'
module VagrantPlugins
module ProviderLibvirt
module Action
# Include the built-in modules so we can use them as top-level things.
include Vagrant::Action::Builtin
@logger = Log4r::Logger.new('vagrant_libvirt::action')
# remove image from libvirt storage pool
def self.remove_libvirt_image
Vagrant::Action::Builder.new.tap do |b|
b.use RemoveLibvirtImage
end
end
# This action is called to bring the box up from nothing.
def self.action_up
Vagrant::Action::Builder.new.tap do |b|
b.use ConfigValidate
b.use BoxCheckOutdated
b.use Call, IsCreated do |env, b2|
# Create VM if not yet created.
if !env[:result]
b2.use SetNameOfDomain
if !env[:machine].config.vm.box
b2.use CreateDomain
b2.use CreateNetworks
b2.use CreateNetworkInterfaces
b2.use SetBootOrder
b2.use StartDomain
else
b2.use HandleStoragePool
b2.use HandleBox
b2.use HandleBoxImage
b2.use CreateDomainVolume
b2.use CreateDomain
b2.use Provision
b2.use PrepareNFSValidIds
b2.use SyncedFolderCleanup
b2.use SyncedFolders
b2.use PrepareNFSSettings
b2.use ShareFolders
b2.use CreateNetworks
b2.use CreateNetworkInterfaces
b2.use SetBootOrder
b2.use StartDomain
b2.use WaitTillUp
b2.use ForwardPorts
b2.use SetHostname
# b2.use SyncFolders
end
else
env[:halt_on_error] = true
b2.use action_start
end
end
end
end
# Assuming VM is created, just start it. This action is not called
# directly by any subcommand. VM can be suspended, already running or in
# poweroff state.
def self.action_start
Vagrant::Action::Builder.new.tap do |b|
b.use ConfigValidate
b.use Call, IsRunning do |env, b2|
# If the VM is running, run the necessary provisioners
if env[:result]
b2.use action_provision
next
end
b2.use Call, IsSuspended do |env2, b3|
# if vm is suspended resume it then exit
if env2[:result]
b3.use CreateNetworks
b3.use ResumeDomain
next
end
if !env[:machine].config.vm.box
# With no box, we just care about network creation and starting it
b3.use CreateNetworks
b3.use SetBootOrder
b3.use StartDomain
else
# VM is not running or suspended.
b3.use Provision
# Ensure networks are created and active
b3.use CreateNetworks
b3.use SetBootOrder
b3.use PrepareNFSValidIds
b3.use SyncedFolderCleanup
b3.use SyncedFolders
# Start it..
b3.use StartDomain
# Machine should gain IP address when comming up,
# so wait for dhcp lease and store IP into machines data_dir.
b3.use WaitTillUp
b3.use ForwardPorts
b3.use PrepareNFSSettings
b3.use ShareFolders
end
end
end
end
end
# This is the action that is primarily responsible for halting the
# virtual machine.
def self.action_halt
Vagrant::Action::Builder.new.tap do |b|
b.use ConfigValidate
b.use ClearForwardedPorts
b.use Call, IsCreated do |env, b2|
unless env[:result]
b2.use MessageNotCreated
next
end
b2.use Call, IsSuspended do |env2, b3|
b3.use CreateNetworks if env2[:result]
b3.use ResumeDomain if env2[:result]
end
b2.use Call, IsRunning do |env2, b3|
next unless env2[:result]
# VM is running, halt it.
b3.use HaltDomain
end
end
end
end
# This is the action implements the reload command
# It uses the halt and start actions
def self.action_reload
Vagrant::Action::Builder.new.tap do |b|
b.use Call, IsCreated do |env, b2|
unless env[:result]
b2.use MessageNotCreated
next
end
b2.use ConfigValidate
b2.use action_halt
b2.use action_start
end
end
end
# not implemented and looks like not require
def self.action_package
Vagrant::Action::Builder.new.tap do |b|
b.use ConfigValidate
b.use PackageDomain
end
end
# This is the action that is primarily responsible for completely
# freeing the resources of the underlying virtual machine.
def self.action_destroy
Vagrant::Action::Builder.new.tap do |b|
b.use ConfigValidate
b.use Call, IsCreated do |env, b2|
unless env[:result]
# Try to remove stale volumes anyway
b2.use SetNameOfDomain
b2.use RemoveStaleVolume if env[:machine].config.vm.box
b2.use MessageNotCreated unless env[:result]
next
end
b2.use Call, DestroyConfirm do |env2, b3|
if env2[:result]
b3.use ClearForwardedPorts
# b3.use PruneNFSExports
b3.use DestroyDomain
b3.use DestroyNetworks
b3.use ProvisionerCleanup
else
b3.use MessageWillNotDestroy
end
end
end
end
end
# This action is called to SSH into the machine.
def self.action_ssh
Vagrant::Action::Builder.new.tap do |b|
b.use ConfigValidate
b.use Call, IsCreated do |env, b2|
unless env[:result]
b2.use MessageNotCreated
next
end
b2.use Call, IsRunning do |env2, b3|
unless env2[:result]
b3.use MessageNotRunning
next
end
b3.use SSHExec
end
end
end
end
# This action is called when `vagrant provision` is called.
def self.action_provision
Vagrant::Action::Builder.new.tap do |b|
b.use ConfigValidate
b.use Call, IsCreated do |env, b2|
unless env[:result]
b2.use MessageNotCreated
next
end
b2.use Call, IsRunning do |env2, b3|
unless env2[:result]
b3.use MessageNotRunning
next
end
b3.use Provision
# b3.use SyncFolders
end
end
end
end
# This is the action that is primarily responsible for suspending
# the virtual machine.
def self.action_suspend
Vagrant::Action::Builder.new.tap do |b|
b.use ConfigValidate
b.use Call, IsCreated do |env, b2|
unless env[:result]
b2.use MessageNotCreated
next
end
b2.use Call, IsRunning do |env2, b3|
unless env2[:result]
b3.use MessageNotRunning
next
end
b3.use SuspendDomain
end
end
end
end
# This is the action that is primarily responsible for resuming
# suspended machines.
def self.action_resume
Vagrant::Action::Builder.new.tap do |b|
b.use ConfigValidate
b.use Call, IsCreated do |env, b2|
unless env[:result]
b2.use MessageNotCreated
next
end
b2.use Call, IsSuspended do |env2, b3|
unless env2[:result]
b3.use MessageNotSuspended
next
end
b3.use CreateNetworks
b3.use ResumeDomain
end
end
end
end
def self.action_read_mac_addresses
Vagrant::Action::Builder.new.tap do |b|
b.use ConfigValidate
b.use ReadMacAddresses
end
end
# This is the action that will run a single SSH command.
def self.action_ssh_run
Vagrant::Action::Builder.new.tap do |b|
b.use ConfigValidate
b.use Call, IsCreated do |env, b2|
unless env[:result]
b2.use MessageNotCreated
next
end
b2.use Call, IsRunning do |env2, b3|
unless env2[:result]
b3.use MessageNotRunning
next
end
b3.use SSHRun
end
end
end
end
action_root = Pathname.new(File.expand_path('../action', __FILE__))
autoload :PackageDomain, action_root.join('package_domain')
autoload :CreateDomain, action_root.join('create_domain')
autoload :CreateDomainVolume, action_root.join('create_domain_volume')
autoload :CreateNetworkInterfaces, action_root.join('create_network_interfaces')
autoload :CreateNetworks, action_root.join('create_networks')
autoload :DestroyDomain, action_root.join('destroy_domain')
autoload :DestroyNetworks, action_root.join('destroy_networks')
autoload :ForwardPorts, action_root.join('forward_ports')
autoload :ClearForwardedPorts, action_root.join('forward_ports')
autoload :HaltDomain, action_root.join('halt_domain')
autoload :HandleBoxImage, action_root.join('handle_box_image')
autoload :HandleStoragePool, action_root.join('handle_storage_pool')
autoload :RemoveLibvirtImage, action_root.join('remove_libvirt_image')
autoload :IsCreated, action_root.join('is_created')
autoload :IsRunning, action_root.join('is_running')
autoload :IsSuspended, action_root.join('is_suspended')
autoload :MessageAlreadyCreated, action_root.join('message_already_created')
autoload :MessageNotCreated, action_root.join('message_not_created')
autoload :MessageNotRunning, action_root.join('message_not_running')
autoload :MessageNotSuspended, action_root.join('message_not_suspended')
autoload :MessageWillNotDestroy, action_root.join('message_will_not_destroy')
autoload :RemoveStaleVolume, action_root.join('remove_stale_volume')
autoload :PrepareNFSSettings, action_root.join('prepare_nfs_settings')
autoload :PrepareNFSValidIds, action_root.join('prepare_nfs_valid_ids')
autoload :PruneNFSExports, action_root.join('prune_nfs_exports')
autoload :ReadMacAddresses, action_root.join('read_mac_addresses')
autoload :ResumeDomain, action_root.join('resume_domain')
autoload :SetNameOfDomain, action_root.join('set_name_of_domain')
autoload :SetBootOrder, action_root.join('set_boot_order')
# I don't think we need it anymore
autoload :ShareFolders, action_root.join('share_folders')
autoload :StartDomain, action_root.join('start_domain')
autoload :SuspendDomain, action_root.join('suspend_domain')
autoload :TimedProvision, action_root.join('timed_provision')
autoload :WaitTillUp, action_root.join('wait_till_up')
autoload :PrepareNFSValidIds, action_root.join('prepare_nfs_valid_ids')
autoload :SSHRun, 'vagrant/action/builtin/ssh_run'
autoload :HandleBox, 'vagrant/action/builtin/handle_box'
autoload :SyncedFolders, 'vagrant/action/builtin/synced_folders'
autoload :SyncedFolderCleanup, 'vagrant/action/builtin/synced_folder_cleanup'
autoload :ProvisionerCleanup, 'vagrant/action/builtin/provisioner_cleanup'
end
end
end
|