Commit ecd8be87baca766172c433042df40432385338f7

Authored by Georg Hopp
1 parent 98100c7c

add basic stop and destroy action and provision in up

@@ -13,6 +13,8 @@ module Vagrant @@ -13,6 +13,8 @@ module Vagrant
13 autoload :EnsureSsh, action_root.join("ensure_ssh") 13 autoload :EnsureSsh, action_root.join("ensure_ssh")
14 autoload :EnsureStarted, action_root.join("ensure_started") 14 autoload :EnsureStarted, action_root.join("ensure_started")
15 autoload :Network, action_root.join("network") 15 autoload :Network, action_root.join("network")
  16 + autoload :Stop, action_root.join("stop")
  17 + autoload :Destroy, action_root.join("destroy")
16 18
17 include Vagrant::Action::Builtin 19 include Vagrant::Action::Builtin
18 20
@@ -35,6 +37,7 @@ module Vagrant @@ -35,6 +37,7 @@ module Vagrant
35 b2.use action_start 37 b2.use action_start
36 end 38 end
37 end 39 end
  40 + b2.use action_provision
38 end 41 end
39 end 42 end
40 43
@@ -50,6 +53,18 @@ module Vagrant @@ -50,6 +53,18 @@ module Vagrant
50 end 53 end
51 end 54 end
52 55
  56 + def self.action_halt
  57 + Vagrant::Action::Builder.new.tap do |b|
  58 + b.use Stop
  59 + end
  60 + end
  61 +
  62 + def self.action_destroy
  63 + Vagrant::Action::Builder.new.tap do |b|
  64 + b.use Destroy
  65 + end
  66 + end
  67 +
53 def self.action_provision 68 def self.action_provision
54 Vagrant::Action::Builder.new.tap do |b| 69 Vagrant::Action::Builder.new.tap do |b|
55 #b.use CheckAccessible 70 #b.use CheckAccessible
  1 +module Vagrant
  2 + module Lxd
  3 + module Action
  4 + class Destroy
  5 + def initialize(app, env)
  6 + @app = app
  7 + @logger = Log4r::Logger.new("vagrant::lxd::action::destroy")
  8 + end
  9 +
  10 + def call(env)
  11 + driver = env[:machine].provider.driver
  12 +
  13 + if driver.container?
  14 + if driver.state == :running
  15 + driver.stop
  16 + end
  17 + driver.destroy
  18 + end
  19 +
  20 + @app.call(env)
  21 + end
  22 + end
  23 + end
  24 + end
  25 +end
  26 +
  27 +# vim: set et ts=2 sw=2:
  1 +module Vagrant
  2 + module Lxd
  3 + module Action
  4 + class Stop
  5 + def initialize(app, env)
  6 + @app = app
  7 + @logger = Log4r::Logger.new("vagrant::lxd::action::stop")
  8 + end
  9 +
  10 + def call(env)
  11 + driver = env[:machine].provider.driver
  12 +
  13 + if driver.container?
  14 + if driver.state == :running
  15 + driver.stop
  16 + end
  17 + end
  18 +
  19 + @app.call(env)
  20 + end
  21 + end
  22 + end
  23 + end
  24 +end
  25 +
  26 +# vim: set et ts=2 sw=2:
@@ -128,6 +128,14 @@ module Vagrant @@ -128,6 +128,14 @@ module Vagrant
128 container_data["state"]["status"].downcase.to_sym 128 container_data["state"]["status"].downcase.to_sym
129 end 129 end
130 130
  131 + def stop
  132 + execute "stop", @name
  133 + end
  134 +
  135 + def destroy
  136 + execute "delete", @name
  137 + end
  138 +
131 def get_image(remote) 139 def get_image(remote)
132 return if image? # image already exists 140 return if image? # image already exists
133 141
Please register or login to post a comment