tail-cf-plugin 0.0.11.pre → 0.0.12.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.
@@ -0,0 +1,34 @@
|
|
1
|
+
module TailCfPlugin
|
2
|
+
class LoggregatorClient
|
3
|
+
def initialize(output)
|
4
|
+
@output = output
|
5
|
+
end
|
6
|
+
|
7
|
+
def listen(loggregator_host, space_id, app_id, user_token)
|
8
|
+
address = "#{loggregator_host}/tail/spaces/#{space_id}"
|
9
|
+
address += "/apps/#{app_id}" if app_id
|
10
|
+
|
11
|
+
address += "?authorization=#{URI.encode(user_token)}"
|
12
|
+
|
13
|
+
uri = URI.parse(address)
|
14
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
15
|
+
if uri.scheme == 'https'
|
16
|
+
http.use_ssl = true
|
17
|
+
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
18
|
+
end
|
19
|
+
|
20
|
+
request = Net::HTTP::Get.new uri.request_uri
|
21
|
+
output.puts "Connected to #{loggregator_host}"
|
22
|
+
http.request request do |response|
|
23
|
+
response.read_body do |chunk|
|
24
|
+
received_message = LogMessage.decode(chunk)
|
25
|
+
output.puts([received_message.app_id, received_message.source_id, received_message.message_type_name, received_message.message].join(" "))
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
attr_reader :output
|
33
|
+
end
|
34
|
+
end
|
@@ -1,17 +1,15 @@
|
|
1
1
|
require 'cf'
|
2
|
-
require 'faye/websocket'
|
3
|
-
require 'eventmachine'
|
4
2
|
|
5
3
|
module TailCfPlugin
|
6
|
-
require 'tail-cf-plugin/
|
4
|
+
require 'tail-cf-plugin/loggregator_client'
|
7
5
|
require 'log_message/log_message.pb'
|
6
|
+
require 'uri'
|
8
7
|
|
9
8
|
class Plugin < CF::CLI
|
10
9
|
include LoginRequirements
|
11
10
|
|
12
11
|
desc "Tail logs for CF applications or spaces"
|
13
12
|
group :apps
|
14
|
-
input :loggregator_host, :argument => :required, :desc => "The ip:port of the loggregator"
|
15
13
|
input :app, :desc => "App to tail logs from", :argument => :optional, :from_given => by_name(:app)
|
16
14
|
input :space, :type => :boolean, :desc => "Logs of all apps in the current space", :default => false
|
17
15
|
|
@@ -26,11 +24,19 @@ module TailCfPlugin
|
|
26
24
|
app_guid = input[:app].guid
|
27
25
|
end
|
28
26
|
|
29
|
-
|
30
|
-
|
27
|
+
loggregator_client = LoggregatorClient.new(STDOUT)
|
28
|
+
loggregator_client.listen(loggregator_host, client.current_space.guid, app_guid, client.token.auth_header)
|
31
29
|
end
|
32
30
|
|
33
31
|
::ManifestsPlugin.default_to_app_from_manifest(:tail, false)
|
34
32
|
|
33
|
+
private
|
34
|
+
|
35
|
+
def loggregator_host
|
36
|
+
url = URI.parse(client.target)
|
37
|
+
domain = url.host.split(".")[1..-1].join(".")
|
38
|
+
"#{url.scheme}://loggregator.#{domain}"
|
39
|
+
end
|
40
|
+
|
35
41
|
end
|
36
42
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tail-cf-plugin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.12.pre
|
5
5
|
prerelease: 7
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-07-
|
12
|
+
date: 2013-07-23 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: cf
|
@@ -33,22 +33,6 @@ dependencies:
|
|
33
33
|
- - <
|
34
34
|
- !ruby/object:Gem::Version
|
35
35
|
version: '5.0'
|
36
|
-
- !ruby/object:Gem::Dependency
|
37
|
-
name: faye-websocket
|
38
|
-
requirement: !ruby/object:Gem::Requirement
|
39
|
-
none: false
|
40
|
-
requirements:
|
41
|
-
- - ~>
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
version: 0.6.1
|
44
|
-
type: :runtime
|
45
|
-
prerelease: false
|
46
|
-
version_requirements: !ruby/object:Gem::Requirement
|
47
|
-
none: false
|
48
|
-
requirements:
|
49
|
-
- - ~>
|
50
|
-
- !ruby/object:Gem::Version
|
51
|
-
version: 0.6.1
|
52
36
|
- !ruby/object:Gem::Dependency
|
53
37
|
name: beefcake
|
54
38
|
requirement: !ruby/object:Gem::Requirement
|
@@ -72,7 +56,7 @@ executables: []
|
|
72
56
|
extensions: []
|
73
57
|
extra_rdoc_files: []
|
74
58
|
files:
|
75
|
-
- lib/tail-cf-plugin/
|
59
|
+
- lib/tail-cf-plugin/loggregator_client.rb
|
76
60
|
- lib/tail-cf-plugin/plugin.rb
|
77
61
|
- vendor/log_message/log_message.pb.rb
|
78
62
|
- vendor/log_message/log_message.proto
|
@@ -1,36 +0,0 @@
|
|
1
|
-
module TailCfPlugin
|
2
|
-
class LoggregatorClient
|
3
|
-
def initialize(output)
|
4
|
-
@output = output
|
5
|
-
end
|
6
|
-
|
7
|
-
def listen(loggregator_host, space_id, app_id, user_token)
|
8
|
-
websocket_address = "ws://#{loggregator_host}/tail/spaces/#{space_id}"
|
9
|
-
websocket_address += "/apps/#{app_id}" if app_id
|
10
|
-
|
11
|
-
websocket_address += "?authorization=#{URI.encode(user_token)}"
|
12
|
-
|
13
|
-
EM.run {
|
14
|
-
ws = Faye::WebSocket::Client.new(websocket_address, nil, :headers => {"Origin" => "http://localhost"})
|
15
|
-
|
16
|
-
ws.on :message do |event|
|
17
|
-
received_message = LogMessage.decode(event.data.pack("C*"))
|
18
|
-
output.puts([received_message.app_id, received_message.source_id, received_message.message_type_name, received_message.message].join(" "))
|
19
|
-
end
|
20
|
-
|
21
|
-
ws.on :error do |event|
|
22
|
-
output.puts("Server error")
|
23
|
-
end
|
24
|
-
|
25
|
-
ws.on :close do |event|
|
26
|
-
output.puts("Server dropped connection...goodbye.")
|
27
|
-
EM.stop
|
28
|
-
end
|
29
|
-
}
|
30
|
-
end
|
31
|
-
|
32
|
-
private
|
33
|
-
|
34
|
-
attr_reader :output
|
35
|
-
end
|
36
|
-
end
|