vagrant-orchestrate 0.6.5 → 0.7.0.pre

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 51dd296ac863762ad204a963f075e5691e877302
4
- data.tar.gz: 2f4a44895ba86bdaadc9253c14f91b2222a857f2
3
+ metadata.gz: 921a92c606deeae0ba52e3a9d4a74512ed069b89
4
+ data.tar.gz: e585d48a159257465a5819999c98427987056c28
5
5
  SHA512:
6
- metadata.gz: b8159b91712a2e1074e560d5705595d3319632180212cfc35c7723b7f7e3d00855a62542a58beeb595dbf00ca21061013e114b2c6aff04a9f5d1b8a6833b4f05
7
- data.tar.gz: e6a7b2629048d07b61e312eff925e983062092d1361edc9ab6de89506d3ec720be52cbc35e49f8142c8159eba57c88b2cbb5932fa39eae2b4601e0d5da9709d1
6
+ metadata.gz: 8329f4d0cf7dae21563386624a3a46dd899b73cd6788ec6a608a67ff97aeae13746060ef3412e0317ef35bfa91565a4ebeb5bad805a7dbdad8416dae21a4ac8d
7
+ data.tar.gz: 88748c419d926f918064971eb42faf5e5dac2d8ba1702bc769aeb8d74b06fa7fb99dc9ba7763e26feeb7c5c0736a4707a8c53a235a821d374f5b222aea7a2aea
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ 0.7.0 (Unreleased)
2
+
3
+ - Add support for tracking deployments with [deployment-tracker](https://github.com/Cimpress-MCP/deployment-tracker).
4
+ Add configuration option `config.orchestrate.tracker_host = 'deploymenttracker.mydomain.com'`
5
+
1
6
  0.6.5 (June 27th, 2015)
2
7
 
3
8
  - Split GIT_BRANCH environment variable on slash and take the last element, since
data/README.md CHANGED
@@ -204,6 +204,15 @@ managed-3 Status unavailable.
204
204
  managed-4 2015-04-19 00:43:07 UTC e983dddd8041c5db77494266328f1d266430f57d cbaldauf
205
205
  ```
206
206
 
207
+ ### Tracking Deployment metadata
208
+
209
+ Vagrant Orchestrate has support for integrating with [deployment-tracker](https://github.com/Cimpress-MCP/deployment-tracker),
210
+ which can collect and record metadata about deployments, including summary records, metrics, and logs.
211
+
212
+ config.orchestrate.tracker_host = "deploymenttracker.mydomain.com"
213
+
214
+ See more info on [deployment tracker integration](docs/deployment_tracker.md).
215
+
207
216
  ## Windows
208
217
 
209
218
  ### Host
@@ -0,0 +1,91 @@
1
+ # Deployment Tracker Integration
2
+
3
+ [Deployment tracker](http://github.com/Cimpress-MCP/deployment-tracker) is a lightweight node REST service that can aggregate
4
+ deployment metadata across your organization. You can record deployment execution times and outcomes using Vagrant Orchestrate
5
+ whether you're deploying from your laptop to a cloud instance or from a build slave to a hardware box.
6
+
7
+ ## What is actually tracked?
8
+
9
+ 1. Deployments starting
10
+ 2. Deployment starting on a server
11
+ 3. Deployment completing on a server
12
+ 4. Vagrant log messages, including console output
13
+ 5. Deployment completion
14
+
15
+ The summary record for a successful deployment to 4 servers using the half_half strategy is recorded as follows:
16
+
17
+ ```
18
+ curl http://deploymenttracker.mydomain.com/v1/deployments/120c7b1c-73bc-4626-bef8-be1983785562
19
+ {
20
+ "deployment_id": "120c7b1c-73bc-4626-bef8-be1983785562",
21
+ "engine": "vagrant_orchestrate",
22
+ "engine_version": "0.7.0",
23
+ "host": "mypc.local",
24
+ "user": "cbaldauf",
25
+ "environment": "deployment_tracker",
26
+ "package": "vagrant-orchestrate",
27
+ "package_url": "https://github.com/Cimpress-MCP/vagrant-orchestrate.git",
28
+ "version": "c3ede86e0a0b1a0c3cf6952906a914fdb3832f87",
29
+ "arguments": "--strategy half_half",
30
+ "createdAt": "2015-07-07T17:34:12.008Z",
31
+ "updatedAt": "2015-07-07T17:34:12.008Z",
32
+ "servers": [
33
+ {
34
+ "hostname": "192.168.10.81",
35
+ "deployment_id": "120c7b1c-73bc-4626-bef8-be1983785562",
36
+ "result": "success",
37
+ "elapsed_seconds": 3,
38
+ "createdAt": "2015-07-07 17:34:12.075 +00:00",
39
+ "updatedAt": "2015-07-07 17:34:15.730 +00:00"
40
+ },
41
+ {
42
+ "hostname": "192.168.10.80",
43
+ "deployment_id": "120c7b1c-73bc-4626-bef8-be1983785562",
44
+ "result": "success",
45
+ "elapsed_seconds": 3,
46
+ "createdAt": "2015-07-07 17:34:12.281 +00:00",
47
+ "updatedAt": "2015-07-07 17:34:16.044 +00:00"
48
+ },
49
+ {
50
+ "hostname": "192.168.10.83",
51
+ "deployment_id": "120c7b1c-73bc-4626-bef8-be1983785562",
52
+ "result": "success",
53
+ "elapsed_seconds": 3,
54
+ "createdAt": "2015-07-07 17:34:26.113 +00:00",
55
+ "updatedAt": "2015-07-07 17:34:29.477 +00:00"
56
+ },
57
+ {
58
+ "hostname": "192.168.10.82",
59
+ "deployment_id": "120c7b1c-73bc-4626-bef8-be1983785562",
60
+ "result": "success",
61
+ "elapsed_seconds": 20,
62
+ "createdAt": "2015-07-07 17:34:26.316 +00:00",
63
+ "updatedAt": "2015-07-07 17:34:46.475 +00:00"
64
+ }
65
+ ]
66
+ }
67
+
68
+ ```
69
+
70
+ ### Field Values
71
+
72
+ If you are using the Vagrant Orchestrate git integration, which is highly recommended, the following
73
+ field values will be assigned automatically:
74
+
75
+ 1. deployment_id - UUID generated by Vagrant Orchestrate
76
+ 2. environment - git branch name
77
+ 3. package - git repo name
78
+ 4. package_url - git remote origin url
79
+ 5. version - git SHA
80
+
81
+
82
+ ## Configuration
83
+
84
+ Add the following configuration option to your Vagrantfile
85
+
86
+ config.orchestrate.tracker_host = "http://deploymenttracker.mydomain.com"
87
+
88
+
89
+ ## Initialization
90
+
91
+ vagrant orchestrate init --deployment-tracker-host http://deploymenttracker.mydomain.com
@@ -0,0 +1,23 @@
1
+ require "log4r"
2
+
3
+ module VagrantPlugins
4
+ module ManagedServers
5
+ module Action
6
+ class InitDeploymentTracker
7
+ def initialize(app, _env)
8
+ @app = app
9
+ @logger = Log4r::Logger.new("vagrant_managed_servers::action::init_deployment_tracker")
10
+ end
11
+
12
+ def call(env)
13
+ host = env[:tracker_host]
14
+ return unless host
15
+ SwaggerClient::Swagger.configure do |config|
16
+ config.host = host
17
+ end
18
+ @app.call(env)
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,36 @@
1
+ require "log4r"
2
+
3
+ module VagrantPlugins
4
+ module ManagedServers
5
+ module Action
6
+ class TrackDeploymentEnd
7
+ def initialize(app, _env)
8
+ @app = app
9
+ @logger = Log4r::Logger.new("vagrant_managed_servers::action::track_deployment_end")
10
+ end
11
+
12
+ def call(env)
13
+ track_deployment_end(env[:tracker_host], env[:start_time], env[:success], env[:ui])
14
+ @app.call(env)
15
+ end
16
+
17
+ def track_deployment_end(host, start, success, ui)
18
+ return unless host
19
+ @logger.debug("Tracking deployment end to #{host}.")
20
+ id = VagrantPlugins::Orchestrate::DEPLOYMENT_ID
21
+ result = success ? "success" : "failure"
22
+ elapsed_seconds = (Time.now - start).to_i
23
+ deployment = { deployment_id: id,
24
+ result: result,
25
+ assert_empty_server_result: true,
26
+ elapsed_seconds: elapsed_seconds }
27
+ DeploymentTrackerClient::DefaultApi.put_deployment(id, deployment)
28
+ rescue => ex
29
+ ui.warn("There was an error notifying deployment tracker. See error log for details.")
30
+ @logger.warn("Error tracking deployment end for deployment #{id}")
31
+ @logger.warn(ex)
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,42 @@
1
+ require "log4r"
2
+
3
+ module VagrantPlugins
4
+ module ManagedServers
5
+ module Action
6
+ class TrackDeploymentStart
7
+ def initialize(app, _env)
8
+ @app = app
9
+ @logger = Log4r::Logger.new("vagrant_managed_servers::action::track_deployment_start")
10
+ end
11
+
12
+ def call(env)
13
+ track_deployment_start(env[:tracker_host], env[:status], env[:ui], env[:args])
14
+ @app.call(env)
15
+ end
16
+
17
+ def track_deployment_start(host, status, ui, args)
18
+ return unless host
19
+ @logger.debug("Tracking deployment start to #{host}.")
20
+ id = VagrantPlugins::Orchestrate::DEPLOYMENT_ID
21
+ hostname = `hostname`.chomp
22
+ deployment = {
23
+ deployment_id: id,
24
+ engine: "vagrant_orchestrate",
25
+ engine_version: VagrantPlugins::Orchestrate::VERSION,
26
+ user: status.user, host: hostname,
27
+ environment: status.branch,
28
+ package: status.repo,
29
+ package_url: status.remote_origin_url,
30
+ version: status.ref,
31
+ arguments: args
32
+ }
33
+ DeploymentTrackerClient::DefaultApi.post_deployment(id, deployment)
34
+ rescue => ex
35
+ ui.warn("There was an error notifying deployment tracker. See error log for details.")
36
+ @logger.warn("Error tracking deployment start for deployment #{id}")
37
+ @logger.warn(ex)
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,40 @@
1
+ require "log4r"
2
+
3
+ module VagrantPlugins
4
+ module ManagedServers
5
+ module Action
6
+ class TrackServerDeploymentEnd
7
+ def initialize(app, _env)
8
+ @app = app
9
+ @logger = Log4r::Logger.new("vagrant_managed_servers::action::track_server_deployment_start")
10
+ end
11
+
12
+ def call(env)
13
+ machine = env[:machine]
14
+ track_deployment_end(machine, env[:ui], env[:start_times][machine.name])
15
+ @app.call(env)
16
+ end
17
+
18
+ def track_deployment_end(machine, ui, start_time)
19
+ host = machine.config.orchestrate.tracker_host
20
+ return unless host
21
+ @logger.debug("Tracking deployment server end to #{host}.")
22
+ id = VagrantPlugins::Orchestrate::DEPLOYMENT_ID
23
+ server = {
24
+ deployment_id: id,
25
+ hostname: machine.provider_config.server,
26
+ result: "success",
27
+ elapsed_seconds: (Time.now - start_time).to_i
28
+ }
29
+ DeploymentTrackerClient::DefaultApi.put_server(id, server)
30
+ rescue => ex
31
+ ui.warn("There was an error notifying deployment tracker of server end. See error log for details.")
32
+ ui.warn(ex.message)
33
+ pp ex
34
+ @logger.warn("Error tracking deployment server end for deployment #{id}")
35
+ @logger.warn(ex)
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,39 @@
1
+ require "log4r"
2
+
3
+ module VagrantPlugins
4
+ module ManagedServers
5
+ module Action
6
+ class TrackServerDeploymentStart
7
+ def initialize(app, _env)
8
+ @app = app
9
+ @logger = Log4r::Logger.new("vagrant_managed_servers::action::track_server_deployment_start")
10
+ end
11
+
12
+ def call(env)
13
+ machine = env[:machine]
14
+ env[:start_times] ||= {}
15
+ env[:start_times][machine.name] = Time.now
16
+ track_deployment_start(machine, env[:ui])
17
+ @app.call(env)
18
+ end
19
+
20
+ def track_deployment_start(machine, ui)
21
+ host = machine.config.orchestrate.tracker_host
22
+ return unless host
23
+ @logger.debug("Tracking deployment server start to #{host}.")
24
+ id = VagrantPlugins::Orchestrate::DEPLOYMENT_ID
25
+ server = {
26
+ deployment_id: id,
27
+ hostname: machine.provider_config.server
28
+ }
29
+ DeploymentTrackerClient::DefaultApi.post_server(id, server)
30
+ rescue => ex
31
+ ui.warn("There was an error notifying deployment tracker of server start. See error log for details.")
32
+ ui.warn(ex.message)
33
+ @logger.warn("Error tracking deployment server start for deployment #{id}")
34
+ @logger.warn(ex)
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -1,3 +1,10 @@
1
+ require "vagrant-managed-servers/action/upload_status"
2
+ require "vagrant-managed-servers/action/init_deployment_tracker"
3
+ require "vagrant-managed-servers/action/track_deployment_start"
4
+ require "vagrant-managed-servers/action/track_deployment_end"
5
+ require "vagrant-managed-servers/action/track_server_deployment_start"
6
+ require "vagrant-managed-servers/action/track_server_deployment_end"
7
+
1
8
  # It is useful to be able to call up, provision, reload, and destroy as a single
2
9
  # unit - it makes things like parallel provisioning more seamless and provides
3
10
  # a useful action hook for the push command.
@@ -8,6 +15,7 @@ module VagrantPlugins
8
15
 
9
16
  def self.action_push
10
17
  Vagrant::Action::Builder.new.tap do |b|
18
+ b.use TrackServerDeploymentStart
11
19
  b.use action_up
12
20
  b.use Call, action_provision do |env, b2|
13
21
  if env[:reboot]
@@ -17,6 +25,7 @@ module VagrantPlugins
17
25
  end
18
26
  b.use UploadStatus
19
27
  b.use action_destroy
28
+ b.use TrackServerDeploymentEnd
20
29
  end
21
30
  end
22
31
 
@@ -6,7 +6,6 @@ module VagrantPlugins
6
6
  @app = app
7
7
  end
8
8
 
9
- # rubocop:disable Metrics/AbcSize
10
9
  def call(env)
11
10
  machine = env[:machine]
12
11
  if machine.provider_name == :managed
@@ -20,7 +19,6 @@ module VagrantPlugins
20
19
  @app.call(env)
21
20
  end
22
21
  end
23
- # rubocop:enable Metrics/AbcSize
24
22
  end
25
23
  end
26
24
  end
@@ -15,7 +15,7 @@ module VagrantPlugins
15
15
  DEFAULT_SSH_PRIVATE_KEY_PATH = "{{YOUR_SSH_PRIVATE_KEY_PATH}}"
16
16
  DEFAULT_PLUGINS = ["vagrant-orchestrate", "vagrant-managed-servers"]
17
17
 
18
- # rubocop:disable Metrics/AbcSize, MethodLength, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
18
+ # rubocop:disable MethodLength
19
19
  def execute
20
20
  options = {}
21
21
 
@@ -114,6 +114,10 @@ module VagrantPlugins
114
114
  o.on("--credentials-file-path FILEPATH", String, cfpmsg) do |file_path|
115
115
  options[:creds_file_path] = file_path
116
116
  end
117
+
118
+ o.on("--deployment-tracker-host host", String, "Fully qualified URL of deployment-tracker instance") do |t|
119
+ options[:tracker_host] = t
120
+ end
117
121
  end
118
122
 
119
123
  argv = parse_options(opts)
@@ -135,7 +139,7 @@ module VagrantPlugins
135
139
  # Success, exit status 0
136
140
  0
137
141
  end
138
- # rubocop:enable Metrics/AbcSize, MethodLength, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
142
+ # rubocop:enable MethodLength
139
143
 
140
144
  private
141
145
 
@@ -191,8 +195,8 @@ module VagrantPlugins
191
195
  winrm_password: options[:winrm_password],
192
196
  ssh_username: options[:ssh_username], ssh_password: options[:ssh_password],
193
197
  ssh_private_key_path: options[:ssh_private_key_path],
194
- servers: options[:servers],
195
- environments: options[:environments], creds_prompt: options[:creds_prompt]
198
+ servers: options[:servers], environments: options[:environments],
199
+ creds_prompt: options[:creds_prompt], tracker_host: options[:tracker_host]
196
200
  )
197
201
  write_file("Vagrantfile", contents, options)
198
202
 
@@ -1,11 +1,11 @@
1
1
  require "English"
2
2
  require "optparse"
3
3
  require "vagrant"
4
- require "vagrant-managed-servers/action/upload_status"
5
4
  require_relative "../../vagrant-managed-servers/action"
6
5
  require "vagrant-orchestrate/action/setcredentials"
7
6
  require "vagrant-orchestrate/repo_status"
8
7
  require_relative "command_mixins"
8
+ require "deployment-tracker-client"
9
9
 
10
10
  # Borrowed from http://stackoverflow.com/questions/12374645/splitting-an-array-into-equal-parts-in-ruby
11
11
  class Array
@@ -25,7 +25,7 @@ module VagrantPlugins
25
25
 
26
26
  @logger = Log4r::Logger.new("vagrant_orchestrate::command::push")
27
27
 
28
- # rubocop:disable Metrics/AbcSize, MethodLength, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
28
+ # rubocop:disable MethodLength, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
29
29
  def execute
30
30
  options = {}
31
31
  options[:force] = @env.vagrantfile.config.orchestrate.force_push
@@ -60,6 +60,8 @@ module VagrantPlugins
60
60
  machines = filter_unmanaged(argv)
61
61
  return 0 if machines.empty?
62
62
 
63
+ @start_time = Time.now
64
+
63
65
  retrieve_creds(machines) if @env.vagrantfile.config.orchestrate.credentials
64
66
 
65
67
  # Write the status file to disk so that it can be used as part of the
@@ -68,6 +70,13 @@ module VagrantPlugins
68
70
  status.write(@env.tmp_path)
69
71
  options[:status] = status
70
72
 
73
+ @env.action_runner.run(VagrantPlugins::ManagedServers::Action::InitDeploymentTracker,
74
+ tracker_host: @env.vagrantfile.config.orchestrate.tracker_host)
75
+ @env.action_runner.run(VagrantPlugins::ManagedServers::Action::TrackDeploymentStart,
76
+ tracker_host: @env.vagrantfile.config.orchestrate.tracker_host,
77
+ status: status,
78
+ args: ARGV.drop(2).join(" "))
79
+
71
80
  options[:parallel] = true
72
81
  strategy = options[:strategy] || @env.vagrantfile.config.orchestrate.strategy
73
82
  @env.ui.info("Pushing to managed servers using #{strategy} strategy.")
@@ -76,33 +85,40 @@ module VagrantPlugins
76
85
  strategy = :serial if machines.size == 1
77
86
  strategy = :half_half if strategy.to_sym == :canary_half_half && machines.size == 2
78
87
 
79
- case strategy.to_sym
80
- when :serial
81
- options[:parallel] = false
82
- result = deploy(options, machines)
83
- when :parallel
84
- result = deploy(options, machines)
85
- when :canary
86
- # A single canary server and then the rest
87
- result = deploy(options, machines.take(1), machines.drop(1))
88
- when :half_half
89
- # Split into two (almost) equal groups
90
- groups = split(machines)
91
- result = deploy(options, groups.first, groups.last)
92
- when :canary_half_half
93
- # A single canary and then two equal groups
94
- canary = machines.take(1)
95
- groups = split(machines.drop(1))
96
- result = deploy(options, canary, groups.first, groups.last)
97
- else
98
- @env.ui.error("Invalid deployment strategy specified")
99
- result = false
88
+ begin
89
+ case strategy.to_sym
90
+ when :serial
91
+ options[:parallel] = false
92
+ result = deploy(options, machines)
93
+ when :parallel
94
+ result = deploy(options, machines)
95
+ when :canary
96
+ # A single canary server and then the rest
97
+ result = deploy(options, machines.take(1), machines.drop(1))
98
+ when :half_half
99
+ # Split into two (almost) equal groups
100
+ groups = split(machines)
101
+ result = deploy(options, groups.first, groups.last)
102
+ when :canary_half_half
103
+ # A single canary and then two equal groups
104
+ canary = machines.take(1)
105
+ groups = split(machines.drop(1))
106
+ result = deploy(options, canary, groups.first, groups.last)
107
+ else
108
+ @env.ui.error("Invalid deployment strategy specified")
109
+ result = false
110
+ end
111
+ ensure
112
+ @env.action_runner.run(VagrantPlugins::ManagedServers::Action::TrackDeploymentEnd,
113
+ tracker_host: @env.vagrantfile.config.orchestrate.tracker_host,
114
+ start_time: @start_time,
115
+ success: result)
100
116
  end
101
117
 
102
118
  return 1 unless result
103
119
  0
104
120
  end
105
- # rubocop:enable Metrics/AbcSize, MethodLength, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
121
+ # rubocop:enable MethodLength, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
106
122
 
107
123
  def split(machines)
108
124
  groups = machines.in_groups(2)
@@ -7,12 +7,14 @@ module VagrantPlugins
7
7
  attr_accessor :filter_managed_commands
8
8
  attr_accessor :strategy
9
9
  attr_accessor :force_push
10
+ attr_accessor :tracker_host
10
11
  attr_accessor :credentials
11
12
 
12
13
  def initialize
13
14
  @filter_managed_commands = UNSET_VALUE
14
15
  @strategy = UNSET_VALUE
15
16
  @force_push = UNSET_VALUE
17
+ @tracker_host = UNSET_VALUE
16
18
  @credentials = Credentials.new
17
19
  end
18
20
 
@@ -36,13 +38,16 @@ module VagrantPlugins
36
38
  end
37
39
  end
38
40
 
41
+ # rubocop:disable Metrics/CyclomaticComplexity
39
42
  def finalize!
40
43
  @filter_managed_commands = false if @filter_managed_commands == UNSET_VALUE
41
44
  @strategy = :serial if @strategy == UNSET_VALUE
42
45
  @force_push = false if @force_push == UNSET_VALUE
46
+ @tracker_host = nil if @tracker_host == UNSET_VALUE
43
47
  @credentials = nil if @credentials.unset?
44
48
  @credentials.finalize! if @credentials
45
49
  end
50
+ # rubocop:enable Metrics/CyclomaticComplexity
46
51
 
47
52
  class Credentials
48
53
  # Same as Vagrant does to distinguish uninitialized variables and intentional assignments
@@ -1,5 +1,6 @@
1
1
  require "vagrant-orchestrate/action/filtermanaged"
2
2
  require "vagrant-orchestrate/action/setcredentials"
3
+ require "securerandom"
3
4
 
4
5
  begin
5
6
  require "vagrant"
@@ -15,6 +16,7 @@ end
15
16
 
16
17
  module VagrantPlugins
17
18
  module Orchestrate
19
+ DEPLOYMENT_ID = SecureRandom.uuid
18
20
  class Plugin < Vagrant.plugin("2")
19
21
  name "Orchestrate"
20
22
  description <<-DESC
@@ -35,6 +35,12 @@ module VagrantPlugins
35
35
  @repo
36
36
  end
37
37
 
38
+ def branch
39
+ @branch ||= ENV["VAGRANT_ORCHESTRATE_STATUS_TEST_BRANCH"]
40
+ @branch ||= `git rev-parse --abbrev-ref HEAD`.chomp
41
+ @branch
42
+ end
43
+
38
44
  def user
39
45
  user = ENV["USER"] || ENV["USERNAME"] || "unknown"
40
46
  user = ENV["USERDOMAIN"] + "\\" + user if ENV["USERDOMAIN"]
@@ -1,5 +1,5 @@
1
1
  module VagrantPlugins
2
2
  module Orchestrate
3
- VERSION = "0.6.5"
3
+ VERSION = "0.7.0.pre"
4
4
  end
5
5
  end
@@ -339,4 +339,14 @@ describe VagrantPlugins::Orchestrate::Command::Init do
339
339
  end
340
340
  end
341
341
  end
342
+
343
+ context "deployment tracker" do
344
+ describe "deployment tracker host is specified" do
345
+ let(:argv) { ["--deployment-tracker-host", "http://deploymenttracker.io"] }
346
+ it "should be set in the Vagrantfile" do
347
+ subject.execute
348
+ expect(iso_env.vagrantfile.config.orchestrate.tracker_host).to eq("http://deploymenttracker.io")
349
+ end
350
+ end
351
+ end
342
352
  end
@@ -14,6 +14,9 @@ Vagrant.configure("2") do |config|
14
14
  <% if creds_file_path -%>
15
15
  config.orchestrate.credentials.file_path = "<%= creds_file_path%>"
16
16
  <% end -%>
17
+ <% if tracker_host -%>
18
+ config.orchestrate.tracker_host = "<%= tracker_host%>"
19
+ <% end -%>
17
20
 
18
21
  <% if provisioners.include? "shell" -%>
19
22
  <% shell_paths.each do |path| -%>
@@ -17,6 +17,8 @@ Gem::Specification.new do |spec|
17
17
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
18
  spec.require_paths = ["lib"]
19
19
 
20
+ spec.add_runtime_dependency "deployment-tracker-client", "~> 0.1"
21
+
20
22
  spec.add_development_dependency "bundler", "~> 1.6"
21
23
  spec.add_development_dependency "rake", "~> 10.0"
22
24
  spec.add_development_dependency "rspec"
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-orchestrate
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.5
4
+ version: 0.7.0.pre
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christopher Baldauf
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-27 00:00:00.000000000 Z
11
+ date: 2015-07-08 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: deployment-tracker-client
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '0.1'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '0.1'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: bundler
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -94,12 +108,18 @@ files:
94
108
  - acceptance/support-skeletons/prompt/dummy.box
95
109
  - acceptance/support-skeletons/provision/Vagrantfile
96
110
  - acceptance/support-skeletons/provision/dummy.box
111
+ - docs/deployment_tracker.md
97
112
  - docs/environments.md
98
113
  - docs/puppet.md
99
114
  - docs/strategy.md
100
115
  - dummy.box
101
116
  - lib/vagrant-managed-servers/action.rb
102
117
  - lib/vagrant-managed-servers/action/download_status.rb
118
+ - lib/vagrant-managed-servers/action/init_deployment_tracker.rb
119
+ - lib/vagrant-managed-servers/action/track_deployment_end.rb
120
+ - lib/vagrant-managed-servers/action/track_deployment_start.rb
121
+ - lib/vagrant-managed-servers/action/track_server_deployment_end.rb
122
+ - lib/vagrant-managed-servers/action/track_server_deployment_start.rb
103
123
  - lib/vagrant-managed-servers/action/upload_status.rb
104
124
  - lib/vagrant-orchestrate.rb
105
125
  - lib/vagrant-orchestrate/action/filtermanaged.rb
@@ -141,9 +161,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
141
161
  version: '0'
142
162
  required_rubygems_version: !ruby/object:Gem::Requirement
143
163
  requirements:
144
- - - '>='
164
+ - - '>'
145
165
  - !ruby/object:Gem::Version
146
- version: '0'
166
+ version: 1.3.1
147
167
  requirements: []
148
168
  rubyforge_project:
149
169
  rubygems_version: 2.0.14