vagrant-orchestrate 0.7.0.pre.3 → 0.7.0.pre.4

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: 2fcf7bf15fd8a6f5548cd6560224b33f032d3997
4
- data.tar.gz: 72d462a74a9ea8b987c24c5e935880dccee1a553
3
+ metadata.gz: fc39c0db6444e86098e5908f49c4c23596558de9
4
+ data.tar.gz: 2e4419f8b8506c7fcae39ce4f4d0ae35a1faed98
5
5
  SHA512:
6
- metadata.gz: 852122e6a8d60d4da843da08be7fd6e756abbd08ccb1694dde272f08400be9429accbf8a2ef4e363f109b92b940daa017d10ef9c73baf553321222ad9b3755f8
7
- data.tar.gz: 379944987d3380f3fc3f5a269d895aea5c5328f35deba8f7f314700f47719d9ed8f4d2aafd4bb11213199c20ad23a6935fff67660b8eb714ed710f6780b6775e
6
+ metadata.gz: f295399ff5a18ffa724f919542e6958962f435618b43e4bf1b96d770869e7ec8b07e13bcb2bc7cb733b0128aead302935542768d350fa0d835e62dd1cd476ae8
7
+ data.tar.gz: 72411db2885f12b14e8dca667d785b7fc361f5127bb088da64daa8abc000c6542cbcb54a5f2763d44a899e6f93602709c28672eccebb4e335b93142a96002b63
@@ -1,28 +1,45 @@
1
1
  require "log4r/outputter/outputter"
2
2
  require "time"
3
+ require "thread"
3
4
 
4
5
  module Log4r
5
6
  class DeploymentTrackerOutputter < Outputter
7
+ FLUSH_SIZE = 25 # Number of messages to queue before a flush happens
8
+ MAX_QUEUE_SIZE = 255 # Maximum number of messages to store before messages are dropped
9
+
6
10
  def initialize(name, hash = {})
7
11
  super(name, hash)
8
12
  @logger = Log4r::Logger.new("vagrant_orchestrate::log4r::deployment_tracker_outputter")
13
+ @queue = []
14
+ @lock = Mutex.new
15
+ end
16
+
17
+ def flush
18
+ @lock.synchronize do
19
+ DeploymentTrackerClient::DefaultApi.post_logs(VagrantPlugins::Orchestrate::DEPLOYMENT_ID, @queue)
20
+ @queue.clear
21
+ end
22
+ rescue
23
+ @logger.warn "Unable to send log messages to deployment-tracker"
9
24
  end
10
25
 
11
26
  private
12
27
 
13
28
  def canonical_log(event)
29
+ if @queue.size >= MAX_QUEUE_SIZE
30
+ @logger.warn("Deployment Tracker Log Outputter queue size at maximum of #{MAX_QUEUE_SIZE}, dropping message")
31
+ return
32
+ end
33
+
14
34
  data = {}
15
35
  data["type"] = event.fullname
16
36
  data["timestamp"] = Time.now.getutc.iso8601
17
37
  data["level"] = LNAMES[event.level]
18
38
  data["message"] = event.data
19
39
 
20
- begin
21
- id = VagrantPlugins::Orchestrate::DEPLOYMENT_ID
22
- DeploymentTrackerClient::DefaultApi.post_logs(id, data)
23
- rescue
24
- @logger.warn "Unable to send log messages to deployment-tracker"
25
- end
40
+ @queue << data
41
+
42
+ flush if @queue.size >= FLUSH_SIZE
26
43
  end
27
44
  end
28
45
  end
@@ -14,6 +14,8 @@ module VagrantPlugins
14
14
  @app.call(env)
15
15
  end
16
16
 
17
+ private
18
+
17
19
  def track_deployment_end(host, start, success, ui)
18
20
  return unless host
19
21
  @logger.debug("Tracking deployment end to #{host}.")
@@ -25,11 +27,23 @@ module VagrantPlugins
25
27
  assert_empty_server_result: true,
26
28
  elapsed_seconds: elapsed_seconds }
27
29
  DeploymentTrackerClient::DefaultApi.put_deployment(id, deployment)
30
+
31
+ flush_logger ui
28
32
  rescue => ex
29
- ui.warn("There was an error notifying deployment tracker. See error log for details.")
33
+ ui.warn("There was an error notifying deployment tracker. Run with --debug for more details.")
30
34
  @logger.warn("Error tracking deployment end for deployment #{id}")
31
35
  @logger.warn(ex)
32
36
  end
37
+
38
+ # Since log messages are being buffered, there could be some that
39
+ # are buffered up to send, but have yet to be delivered. We'll clear
40
+ # those out now. If there is a problem getting the logs to deployment
41
+ # tracker, we'll just see the 1 warning message
42
+ def flush_logger(ui)
43
+ ui.logger.outputters.each do |outputter|
44
+ outputter.flush if outputter.respond_to?("flush")
45
+ end
46
+ end
33
47
  end
34
48
  end
35
49
  end
@@ -33,7 +33,7 @@ module VagrantPlugins
33
33
  }
34
34
  DeploymentTrackerClient::DefaultApi.post_deployment(id, deployment)
35
35
  rescue => ex
36
- ui.warn("There was an error notifying deployment tracker. See error log for details.")
36
+ ui.warn("There was an error notifying deployment tracker. Run with --debug for more details.")
37
37
  @logger.warn("Error tracking deployment start for deployment #{id}")
38
38
  @logger.warn(ex)
39
39
  end
@@ -28,7 +28,7 @@ module VagrantPlugins
28
28
  }
29
29
  DeploymentTrackerClient::DefaultApi.put_server(id, server)
30
30
  rescue => ex
31
- ui.warn("There was an error notifying deployment tracker of server end. See error log for details.")
31
+ ui.warn("There was an error notifying deployment tracker of server end. Run with --debug for more details.")
32
32
  ui.warn(ex.message)
33
33
  pp ex
34
34
  @logger.warn("Error tracking deployment server end for deployment #{id}")
@@ -28,7 +28,7 @@ module VagrantPlugins
28
28
  }
29
29
  DeploymentTrackerClient::DefaultApi.post_server(id, server)
30
30
  rescue => ex
31
- ui.warn("There was an error notifying deployment tracker of server start. See error log for details.")
31
+ ui.warn("There was an error notifying deployment tracker of server start. Run with --debug for more details.")
32
32
  ui.warn(ex.message)
33
33
  @logger.warn("Error tracking deployment server start for deployment #{id}")
34
34
  @logger.warn(ex)
@@ -1,5 +1,5 @@
1
1
  module VagrantPlugins
2
2
  module Orchestrate
3
- VERSION = "0.7.0.pre.3"
3
+ VERSION = "0.7.0.pre.4"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-orchestrate
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0.pre.3
4
+ version: 0.7.0.pre.4
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-07-09 00:00:00.000000000 Z
11
+ date: 2015-07-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: deployment-tracker-client