Commit ecd8be87baca766172c433042df40432385338f7
1 parent
98100c7c
add basic stop and destroy action and provision in up
Showing
4 changed files
with
76 additions
and
0 deletions
| @@ -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 |
lib/vagrant/lxd/action/destroy.rb
0 → 100644
| 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: |
lib/vagrant/lxd/action/stop.rb
0 → 100644
| 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