module VagrantPlugins::Openstack::Action

Public Class Methods

action_destroy() click to toggle source

This action is called to destroy the remote machine.

# File lib/vagrant-openstack-provider/action.rb, line 12
def self.action_destroy
  new_builder.tap do |b|
    b.use ConfigValidate
    b.use ConnectOpenstack
    b.use Call, ReadState do |env, b2|
      if env[:machine_state_id] == :not_created
        b2.use Message, I18n.t('vagrant_openstack.not_created')
      else
        b2.use(ProvisionerCleanup, :before)
        b2.use SnapshotCleanup if Gem::Version.new(Vagrant::VERSION) >= Gem::Version.new('1.8.0')
        b2.use DeleteServer
        b2.use DeleteStack
      end
    end
  end
end
action_halt() click to toggle source
# File lib/vagrant-openstack-provider/action.rb, line 156
def self.action_halt
  new_builder.tap do |b|
    b.use ConfigValidate
    b.use ConnectOpenstack
    b.use Call, ReadState do |env, b2|
      if env[:machine_state_id] == :not_created
        b2.use Message, I18n.t('vagrant_openstack.not_created')
      else
        b2.use StopServer
      end
    end
  end
end
action_provision() click to toggle source

This action is called when ‘vagrant provision` is called.

# File lib/vagrant-openstack-provider/action.rb, line 30
def self.action_provision
  new_builder.tap do |b|
    b.use ConfigValidate
    b.use ConnectOpenstack
    b.use Call, ReadState do |env, b2|
      if env[:machine_state_id] == :not_created
        b2.use Message, I18n.t('vagrant_openstack.not_created')
      else
        if env[:machine].provider_config.meta_args_support
          b2.use ProvisionWrapper
        else
          b2.use Provision
        end
        if env[:machine].provider_config.use_legacy_synced_folders
          env[:machine].ui.warn I18n.t('vagrant_openstack.config.sync_folders_deprecated')
          b2.use SyncFolders
        else
          # Standard Vagrant implementation.
          b2.use SyncedFolders
        end
      end
    end
  end
end
action_read_ssh_info() click to toggle source

This action is called to read the SSH info of the machine. The resulting state is expected to be put into the ‘:machine_ssh_info` key.

# File lib/vagrant-openstack-provider/action.rb, line 58
def self.action_read_ssh_info
  new_builder.tap do |b|
    b.use ConfigValidate
    b.use ConnectOpenstack
    b.use ReadSSHInfo
  end
end
action_read_state() click to toggle source

This action is called to read the state of the machine. The resulting state is expected to be put into the ‘:machine_state_id` key.

# File lib/vagrant-openstack-provider/action.rb, line 69
def self.action_read_state
  new_builder.tap do |b|
    b.use HandleBox
    b.use ConfigValidate
    b.use ConnectOpenstack
    b.use ReadState
  end
end
action_reload() click to toggle source
# File lib/vagrant-openstack-provider/action.rb, line 212
def self.action_reload
  new_builder.tap do |b|
    b.use ConfigValidate
    b.use ConnectOpenstack
    b.use Call, ReadState do |env, b2|
      case env[:machine_state_id]
      when :not_created
        b2.use Message, I18n.t('vagrant_openstack.not_created')
      when :suspended
        b2.use Resume
        b2.use WaitForServerToBeActive
        b2.use StopServer
        b2.use WaitForServerToStop
        b2.use StartServer
      when :shutoff
        b2.use StartServer
      else
        b2.use StopServer
        b2.use WaitForServerToStop
        b2.use StartServer
      end
    end
  end
end
action_resume() click to toggle source

This is the action that is primarily responsible for resuming suspended machines. Vm cannot be resumed when the machine_state_id is not suspended.

# File lib/vagrant-openstack-provider/action.rb, line 195
def self.action_resume
  new_builder.tap do |b|
    b.use ConfigValidate
    b.use ConnectOpenstack
    b.use Call, ReadState do |env, b2|
      case env[:machine_state_id]
      when :not_created
        b2.use Message, I18n.t('vagrant_openstack.not_created')
      when :suspended
        b2.use Resume
      else
        b2.use Message, I18n.t('vagrant_openstack.not_suspended')
      end
    end
  end
end
action_snapshot_delete() click to toggle source
# File lib/vagrant-openstack-provider/action.rb, line 240
def self.action_snapshot_delete
  new_builder.tap do |b|
    b.use ConfigValidate
    b.use ConnectOpenstack
    b.use Call, IsState, :not_created do |env, b2|
      if env[:result]
        b2.use Message, I18n.t('vagrant_openstack.not_created')
      else
        b2.use SnapshotDelete
      end
    end
  end
end
action_snapshot_list() click to toggle source
# File lib/vagrant-openstack-provider/action.rb, line 254
def self.action_snapshot_list
  new_builder.tap do |b|
    b.use ConfigValidate
    b.use ConnectOpenstack
    b.use Call, IsState, :not_created do |env, b2|
      if env[:result]
        b2.use Message, I18n.t('vagrant_openstack.not_created')
      else
        b2.use SnapshotList
      end
    end
  end
end
action_snapshot_restore() click to toggle source
# File lib/vagrant-openstack-provider/action.rb, line 268
def self.action_snapshot_restore
  new_builder.tap do |b|
    b.use ConfigValidate
    b.use ConnectOpenstack
    b.use Call, IsState, :not_created do |env, b2|
      if env[:result]
        b2.use Message, I18n.t('vagrant_openstack.not_created')
        next
      end

      b2.use SnapshotRestore
      b2.use WaitForServerToBeActive
      b2.use WaitForCommunicator

      b2.use Call, IsEnvSet, :snapshot_delete do |env2, b3|
        # Used by vagrant push/pop
        b3.use action_snapshot_delete if env2[:result]
      end

      b2.use action_provision
    end
  end
end
action_snapshot_save() click to toggle source
# File lib/vagrant-openstack-provider/action.rb, line 292
def self.action_snapshot_save
  new_builder.tap do |b|
    b.use ConfigValidate
    b.use ConnectOpenstack
    b.use Call, IsState, :not_created do |env, b2|
      if env[:result]
        b2.use Message, I18n.t('vagrant_openstack.not_created')
      else
        b2.use SnapshotSave
      end
    end
  end
end
action_ssh() click to toggle source
# File lib/vagrant-openstack-provider/action.rb, line 78
def self.action_ssh
  new_builder.tap do |b|
    b.use ConfigValidate
    b.use ConnectOpenstack
    b.use Call, ReadState do |env, b2|
      if env[:machine_state_id] == :not_created
        b2.use Message, I18n.t('vagrant_openstack.not_created')
      else
        b2.use SSHExec
      end
    end
  end
end
action_ssh_run() click to toggle source
# File lib/vagrant-openstack-provider/action.rb, line 92
def self.action_ssh_run
  new_builder.tap do |b|
    b.use ConfigValidate
    b.use ConnectOpenstack
    b.use Call, ReadState do |env, b2|
      if env[:machine_state_id] == :not_created
        b2.use Message, I18n.t('vagrant_openstack.not_created')
      else
        b2.use SSHRun
      end
    end
  end
end
action_suspend() click to toggle source

This is the action that is primarily responsible for suspending the virtual machine. Vm cannot be suspended when the machine_state_id is not “active” (typically a task is ongoing)

# File lib/vagrant-openstack-provider/action.rb, line 173
def self.action_suspend
  new_builder.tap do |b|
    b.use ConfigValidate
    b.use ConnectOpenstack
    b.use Call, ReadState do |env, b2|
      case env[:machine_state_id]
      when :not_created
        b2.use Message, I18n.t('vagrant_openstack.not_created')
      when :suspended
        b2.use Message, I18n.t('vagrant_openstack.already_suspended')
      when :active
        b2.use Suspend
      else
        b2.use Message, I18n.t('vagrant_openstack.ongoing_task')
      end
    end
  end
end
action_up() click to toggle source
# File lib/vagrant-openstack-provider/action.rb, line 106
def self.action_up
  new_builder.tap do |b|
    b.use HandleBox
    b.use ConfigValidate
    b.use ConnectOpenstack

    b.use Call, ReadState do |env, b2|
      case env[:machine_state_id]
      when :not_created
        ssh_disabled = env[:machine].provider_config.ssh_disabled
        unless ssh_disabled
          if env[:machine].provider_config.meta_args_support
            b2.use ProvisionWrapper
          else
            b2.use Provision
          end
        end

        if env[:machine].provider_config.use_legacy_synced_folders
          env[:machine].ui.warn I18n.t('vagrant_openstack.config.sync_folders_deprecated')
          b2.use SyncFolders
        else
          # Standard Vagrant implementation.
          b2.use SyncedFolders
        end

        b2.use CreateStack
        b2.use CreateServer
        b2.use Message, I18n.t('vagrant_openstack.ssh_disabled_provisioning') if ssh_disabled
        unless ssh_disabled
          # Handle legacy ssh_timeout option
          timeout = env[:machine].provider_config.ssh_timeout
          unless timeout.nil?
            env[:machine].ui.warn I18n.t('vagrant_openstack.config.ssh_timeout_deprecated')
            env[:machine].config.vm.boot_timeout = timeout
          end

          b2.use WaitForCommunicator
        end
      when :shutoff
        b2.use StartServer
      when :suspended
        b2.use Resume
      else
        b2.use Message, I18n.t('vagrant_openstack.already_created')
      end
    end
  end
end
get_ssh_info(env) click to toggle source
# File lib/vagrant-openstack-provider/action/read_ssh_info.rb, line 69
def self.get_ssh_info(env)
  SSHInfoHolder.instance.ssh_info[env[:machine].id.to_sym]
end

Private Class Methods

new_builder() click to toggle source

rubocop:enable IndentationWidth

# File lib/vagrant-openstack-provider/action.rb, line 339
def self.new_builder
  Vagrant::Action::Builder.new
end