vagrant-lifecycle 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 29027245ea6a0c12182c436e2b8fccaf4fe5c4ff
4
- data.tar.gz: 47e5c269d3f64e03c49a1eccbaffcb927fa4cc65
3
+ metadata.gz: 5611fea343055e79d06bb2a9133d859fecdecd9a
4
+ data.tar.gz: e7b510084e3d9a4b1fbf05f9f5317fed57265012
5
5
  SHA512:
6
- metadata.gz: cd3ffc644244ecbb8acf2b9f91aae3df4d5ff5c6cfe211f32bcbc9a8a50e83114f9cb25f2fb463e48abfa57cfd757e3ff2735de94cf4960bb57730288969f141
7
- data.tar.gz: e8b4a58117aa15d6c9c7c9e133201d2663ca5924c3dac749027ce6403b70d058116fec99a8f94d71943a02ceaca33ab99e08743743728bfed75859a1860ff2ef
6
+ metadata.gz: 6a72769bc4e0a041db10cee8cd21dda552b09d1e4104c923cd2f971cef0274760aaa5e4066632c1404af206b17c5f806aa6404243b3762e2a5ef33923dcc1b95
7
+ data.tar.gz: b93ff762ce27e57bb02140b5c737b00c8083712d5319ce176773161d5d8e5ddbf4c4ad58fccf95aec19444c5774d272d2af74f7f8874f03b2135fc666add63d7
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # vagrant-lifecycle Changelog
2
2
 
3
+ ## 0.1.2
4
+
5
+ Added middleware environment `:lifecycle_event` key for usage with other plugins.
6
+
3
7
  ## 0.1.1
4
8
 
5
9
  Code cleanup. Added missing vagrant command synopsis.
data/README.md CHANGED
@@ -2,6 +2,9 @@
2
2
 
3
3
  Vagrant Lifecycle is a Vagrant plugin that allows execution of custom provisioning events for the Chef provisioners.
4
4
 
5
+ The primarily goal of this plugin is to ease the development and testing of Chef recipes intended for use on services
6
+ like AWS OpsWorks.
7
+
5
8
  ## Installation
6
9
 
7
10
  1. Install the latest version of [Vagrant](https://www.vagrantup.com/downloads.html)
@@ -52,9 +55,15 @@ You can execute provisioning on the specific lifecycle event via command (for ex
52
55
  $ vagrant lifecycle -e deploy
53
56
  ```
54
57
 
55
- ## More examples
58
+ ### Usage with other Vagrant plugins
59
+
60
+ Currently executed lifecycle event name is available in other Vagrant plugin's middlewares through `:lifecycle_event`
61
+ key of the environment hash. Please note that this key will not be set during regular provision even if the
62
+ `lifecycle.default_event` is configured.
63
+
64
+ ### More examples
56
65
 
57
- ### Evaluate run list based on lifecycle event and node roles
66
+ #### Evaluate run list based on lifecycle event and node roles
58
67
 
59
68
  Example Vagrantfile configuration section:
60
69
 
@@ -98,7 +107,7 @@ Vagrant.configure("2") do |config|
98
107
  end
99
108
  ```
100
109
 
101
- ### Require additional parameter(s) for a specific lifecycle event
110
+ #### Require additional parameter(s) for a specific lifecycle event
102
111
 
103
112
  Example Vagrantfile configuration section:
104
113
 
@@ -116,11 +125,11 @@ Vagrant.configure("2") do |config|
116
125
  end
117
126
  parser.parse!
118
127
  end
119
- opt_parser.program_name="vagrant -e deploy"
128
+ opt_parser.program_name="vagrant lifecycle -e deploy"
120
129
 
121
130
  if options.empty?
122
131
  puts opt_parser.help
123
- exit
132
+ exit 1
124
133
  end
125
134
 
126
135
  unless options.key?(:application)
@@ -147,11 +156,10 @@ Sample usage:
147
156
  $ vagrant lifecycle -e deploy -a really_cool_app
148
157
  ```
149
158
 
150
- ### Use specific machine info
159
+ #### Use specific machine info
151
160
 
152
161
  Example Vagrantfile configuration section:
153
162
 
154
-
155
163
  ```ruby
156
164
  Vagrant.configure("2") do |config|
157
165
  config.lifecycle.events = {
@@ -1,7 +1,3 @@
1
- require "vagrant-lifecycle/version"
2
-
3
- require 'json'
4
-
5
1
  module VagrantPlugins
6
2
  module Lifecycle
7
3
  class Command < Vagrant.plugin(2, :command)
@@ -9,11 +5,37 @@ module VagrantPlugins
9
5
  "provisions the vagrant machine using a custom lifecycle event"
10
6
  end
11
7
 
8
+ # Like OptionParser.order!, but leave any unrecognized --switches alone
9
+ def order_recognized!(parser, args)
10
+ extra_opts = []
11
+ begin
12
+ parser.order!(args) {|a| extra_opts << a}
13
+ rescue OptionParser::InvalidOption => e
14
+ extra_opts << e.args[0]
15
+ retry
16
+ end
17
+ args[0, 0] = extra_opts
18
+ end
19
+
12
20
  def execute
13
- MiddleWareConfig.instance.enabled = true
21
+ options = Hash.new
22
+ opt_parser = OptionParser.new do |parser|
23
+ parser.on("-e", "--event EVENT", "Lifecycle event to execute") do |p|
24
+ options[:event] = p
25
+ end
26
+ order_recognized!(parser, ARGV)
27
+ end
28
+ opt_parser.program_name="vagrant lifecycle"
29
+
30
+ unless options.key?(:event)
31
+ @env.ui.error "Lifecycle event parameter missing!"
32
+ puts opt_parser.help
33
+ exit 1
34
+ end
35
+ lifecycle_event = options[:event]
14
36
 
15
37
  with_target_vms([], reverse: true) do |machine|
16
- machine.action(:provision)
38
+ machine.action(:provision, {:lifecycle_event => lifecycle_event})
17
39
  end
18
40
 
19
41
  exit 0
@@ -1,4 +1,3 @@
1
- require 'pathname'
2
1
  require 'vagrant/util/hash_with_indifferent_access'
3
2
 
4
3
  module VagrantPlugins
@@ -1,19 +1,5 @@
1
- require "vagrant-lifecycle/version"
2
- require "singleton"
3
- require 'json'
4
-
5
1
  module VagrantPlugins
6
2
  module Lifecycle
7
- class MiddleWareConfig
8
- include Singleton
9
-
10
- attr_accessor :enabled
11
-
12
- def initialize
13
- @enabled = false
14
- end
15
- end
16
-
17
3
  class MiddleWare
18
4
  def initialize(app, env)
19
5
  @app = app
@@ -22,36 +8,8 @@ module VagrantPlugins
22
8
  @logger = Log4r::Logger.new("vagrant::lifecycle::#{klass}")
23
9
  end
24
10
 
25
- # Like OptionParser.order!, but leave any unrecognized --switches alone
26
- def order_recognized!(parser, args)
27
- extra_opts = []
28
- begin
29
- parser.order!(args) {|a| extra_opts << a}
30
- rescue OptionParser::InvalidOption => e
31
- extra_opts << e.args[0]
32
- retry
33
- end
34
- args[0, 0] = extra_opts
35
- end
36
-
37
11
  def call(env)
38
- if MiddleWareConfig.instance.enabled
39
- options = Hash.new
40
- opts = OptionParser.new do |parser|
41
- parser.on("-e", "--event EVENT", "Lifecycle event to execute") do |p|
42
- options[:event] = p
43
- end
44
- order_recognized!(parser, ARGV)
45
- end
46
-
47
- unless options.key?(:event)
48
- env[:ui].error "Lifecycle event parameter missing!"
49
- env[:interrupted] = true
50
- end
51
- event = options[:event]
52
- else
53
- event = env[:machine].config.lifecycle.default_event
54
- end
12
+ event = env[:lifecycle_event] || env[:machine].config.lifecycle.default_event || nil
55
13
 
56
14
  if event.nil?
57
15
  @app.call(env)
@@ -1,13 +1,12 @@
1
- require "vagrant-lifecycle/command"
2
- require "vagrant-lifecycle/middleware"
3
- require "vagrant-lifecycle/version"
4
-
5
- require 'json'
1
+ require 'vagrant-lifecycle/command'
2
+ require 'vagrant-lifecycle/config'
3
+ require 'vagrant-lifecycle/middleware'
4
+ require 'vagrant-lifecycle/version'
6
5
 
7
6
  module VagrantPlugins
8
7
  module Lifecycle
9
8
  class Plugin < Vagrant.plugin(2)
10
- name "Lifecycle Plugin"
9
+ name 'Lifecycle Plugin'
11
10
 
12
11
  def self.provision
13
12
  Vagrant::Action::Builder.new.tap do |b|
@@ -17,17 +16,16 @@ module VagrantPlugins
17
16
 
18
17
  [:machine_action_up, :machine_action_reload, :machine_action_provision].each do |action|
19
18
  action_hook(:lifecycle_provision, action) do |hook|
20
- # hook.after(Vagrant::Action::Builtin::ConfigValidate, Plugin.provision_init)
21
19
  hook.before(Vagrant::Action::Builtin::Provision, Plugin.provision)
22
20
  end
23
21
  end
24
22
 
25
- command "lifecycle" do
23
+ command 'lifecycle' do
26
24
  Command
27
25
  end
28
26
 
29
27
  config(:lifecycle) do
30
- require_relative "config"
28
+ require_relative 'config'
31
29
  Config
32
30
  end
33
31
  end
@@ -1,5 +1,5 @@
1
1
  module VagrantPlugins
2
2
  module Lifecycle
3
- VERSION = "0.1.1"
3
+ VERSION = '0.1.2'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-lifecycle
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nikola Stojiljkovic
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-06-14 00:00:00.000000000 Z
11
+ date: 2018-06-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler