Module: VagrantPlugins::DockerProvider::Action

Defined in:
lib/docker-provider/action.rb,
lib/docker-provider/action/stop.rb,
lib/docker-provider/action/start.rb,
lib/docker-provider/action/create.rb,
lib/docker-provider/action/created.rb,
lib/docker-provider/action/destroy.rb,
lib/docker-provider/action/message.rb,
lib/docker-provider/action/is_running.rb,
lib/docker-provider/action/check_running.rb,
lib/docker-provider/action/forward_ports.rb,
lib/docker-provider/action/prepare_nfs_settings.rb,
lib/docker-provider/action/prepare_nfs_valid_ids.rb

Defined Under Namespace

Classes: CheckRunning, Create, Created, Destroy, ForwardPorts, IsRunning, Message, PrepareNFSSettings, PrepareNFSValidIds, Start, Stop

Constant Summary collapse

Builtin =

Shortcuts

Vagrant::Action::Builtin
Builder =
Vagrant::Action::Builder

Class Method Summary collapse

Class Method Details

.action_bootObject



164
165
166
167
168
169
170
# File 'lib/docker-provider/action.rb', line 164

def self.action_boot
  Builder.new.tap do |b|
    # TODO: b.use Builtin::SetHostname
    b.use Start
    b.use Builtin::WaitForCommunicator
  end
end

.action_destroyObject

This is the action that is primarily responsible for completely freeing the resources of the underlying virtual machine.



111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
# File 'lib/docker-provider/action.rb', line 111

def self.action_destroy
  Builder.new.tap do |b|
    b.use Builtin::Call, Created do |env1, b2|
      if !env1[:result]
        b2.use Message, :not_created
        next
      end

      b2.use Builtin::Call, Builtin::DestroyConfirm do |env2, b3|
        if env2[:result]
          b3.use Builtin::ConfigValidate
          b3.use Builtin::EnvSet, :force_halt => true
          b3.use action_halt
          b3.use Destroy
          b3.use Builtin::ProvisionerCleanup
        else
          b3.use Message, :will_not_destroy
        end
      end
    end
  end
end

.action_haltObject

This is the action that is primarily responsible for halting the virtual machine, gracefully or by force.



75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# File 'lib/docker-provider/action.rb', line 75

def self.action_halt
  Builder.new.tap do |b|
    b.use Builtin::Call, Created do |env, b2|
      if env[:result]
        b2.use Builtin::Call, Builtin::GracefulHalt, :stopped, :running do |env2, b3|
          if !env2[:result]
            b3.use Stop
          end
        end
      else
        b2.use Message, :not_created
      end
    end
  end
end

.action_provisionObject

This action just runs the provisioners on the machine.



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/docker-provider/action.rb', line 52

def self.action_provision
  Builder.new.tap do |b|
    b.use Builtin::ConfigValidate
    b.use Builtin::Call, Created do |env1, b2|
      if !env1[:result]
        b2.use Message, :not_created
        next
      end

      b2.use Builtin::Call, IsRunning do |env2, b3|
        if !env2[:result]
          b3.use Message, :not_running
          next
        end

        b3.use Builtin::Provision
      end
    end
  end
end

.action_reloadObject

This action is responsible for reloading the machine, which brings it down, sucks in new configuration, and brings the machine back up with the new configuration.



94
95
96
97
98
99
100
101
102
103
104
105
106
107
# File 'lib/docker-provider/action.rb', line 94

def self.action_reload
  Builder.new.tap do |b|
    b.use Builtin::Call, Created do |env1, b2|
      if !env1[:result]
        b2.use Message, :not_created
        next
      end

      b2.use Builtin::ConfigValidate
      b2.use action_halt
      b2.use action_start
    end
  end
end

.action_sshObject

This is the action that will exec into an SSH shell.



135
136
137
138
139
140
# File 'lib/docker-provider/action.rb', line 135

def self.action_ssh
  Builder.new.tap do |b|
    b.use CheckRunning
    b.use Builtin::SSHExec
  end
end

.action_ssh_runObject

This is the action that will run a single SSH command.



143
144
145
146
147
148
# File 'lib/docker-provider/action.rb', line 143

def self.action_ssh_run
  Builder.new.tap do |b|
    b.use CheckRunning
    b.use Builtin::SSHRun
  end
end

.action_startObject



150
151
152
153
154
155
156
157
158
159
160
161
162
# File 'lib/docker-provider/action.rb', line 150

def self.action_start
  Builder.new.tap do |b|
    b.use Builtin::ConfigValidate
    b.use Builtin::Call, IsRunning do |env, b2|
      # If the container is running, then our work here is done, exit
      next if env[:result]

      b2.use Builtin::Provision
      b2.use Message, :starting
      b2.use action_boot
    end
  end
end

.action_upObject

This action brings the “machine” up from nothing, including creating the container, configuring metadata, and booting.



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
# File 'lib/docker-provider/action.rb', line 22

def self.action_up
  Builder.new.tap do |b|
    b.use Builtin::ConfigValidate
    b.use Builtin::Call, Created do |env, b2|
      if !env[:result]
        b2.use Builtin::HandleBoxUrl
        # TODO: Find out where this fits into the process
        # b2.use Builtin::EnvSet, :port_collision_repair => true
        # b2.use Builtin::HandleForwardedPortCollisions
        b2.use Builtin::Provision
        b2.use PrepareNFSValidIds
        b2.use Builtin::SyncedFolderCleanup
        b2.use Builtin::SyncedFolders
        b2.use PrepareNFSSettings
        b2.use ForwardPorts
        # This will actually create and start, but that's fine
        b2.use Create
        b2.use action_boot
      else
        b2.use PrepareNFSValidIds
        b2.use Builtin::SyncedFolderCleanup
        b2.use Builtin::SyncedFolders
        b2.use PrepareNFSSettings
        b2.use action_start
      end
    end
  end
end