Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
F
fluent-plugin-wendelin
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Labels
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Jobs
Commits
Open sidebar
nexedi
fluent-plugin-wendelin
Commits
78a758bb
Commit
78a758bb
authored
Mar 16, 2018
by
Eteri
Committed by
Klaus Wölfel
Jul 05, 2018
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fluent-plugin-wendelin: fix configuration parameters, check for closed connections
parent
72f1a151
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
89 additions
and
77 deletions
+89
-77
lib/fluent/plugin/out_wendelin.rb
lib/fluent/plugin/out_wendelin.rb
+3
-4
lib/fluent/plugin/wendelin_client.rb
lib/fluent/plugin/wendelin_client.rb
+86
-73
No files found.
lib/fluent/plugin/out_wendelin.rb
View file @
78a758bb
...
...
@@ -22,6 +22,7 @@
require
'fluent/output'
require_relative
'wendelin_client'
module
Fluent
class
WendelinOutput
<
ObjectBufferedOutput
# XXX verify base class
...
...
@@ -37,8 +38,6 @@ module Fluent
config_param
:user
,
:string
,
:default
=>
nil
config_param
:password
,
:string
,
:default
=>
nil
config_param
:reference
,
:string
def
configure
(
conf
)
super
...
...
@@ -48,7 +47,7 @@ module Fluent
credentials
[
'user'
]
=
@user
credentials
[
'password'
]
=
@password
end
@wendelin
=
WendelinClient
.
new
(
@streamtool_uri
,
credentials
,
@log
,
@reference
)
@wendelin
=
WendelinClient
.
new
(
@streamtool_uri
,
credentials
,
@log
)
end
def
start
...
...
@@ -80,8 +79,8 @@ module Fluent
# for input_stream_ref use tag as-is - it will be processed/translated
# further on server by Wendelin
reference
=
tag
@wendelin
.
ingest
(
data_chunk
)
@wendelin
.
ingest
(
reference
,
data_chunk
)
end
end
...
...
lib/fluent/plugin/wendelin_client.rb
View file @
78a758bb
...
...
@@ -19,27 +19,31 @@
require
'net/http'
require
'openssl'
# class representing a Wendelin client
class
WendelinClient
# `streamtool_uri` - URI pointing to portal_input_data_stream "mountpoint"
# `credentials` # {'user' => _, 'password' => _} TODO change to certificate
# `log` - logger to use
def
initialize
(
streamtool_uri
,
credentials
,
log
,
reference
)
def
initialize
(
streamtool_uri
,
credentials
,
log
)
@streamtool_uri
=
streamtool_uri
@credentials
=
credentials
@log
=
log
@reference
=
reference
end
# start request in an independent function to keep the connection open
def
start_request
def
start_request
(
uri
)
uri
=
URI
(
"
#{
@streamtool_uri
}
/ingest?reference=
#{
@reference
}
"
)
@http
=
Net
::
HTTP
.
start
(
uri
.
hostname
,
uri
.
port
,
:use_ssl
=>
(
uri
.
scheme
==
'https'
),
:verify_mode
=>
OpenSSL
::
SSL
::
VERIFY_NONE
,
# Net::HTTP default open timeout is infinity, which results
# in thread hang forever if other side does not fully
# establish connection. Default read_timeout is 60 seconds.
# We go safe way and make sure all timeouts are defined.
:ssl_timeout
=>
60
,
:open_timeout
=>
60
,
:read_timeout
=>
60
,
...
...
@@ -49,14 +53,23 @@ class WendelinClient
end
# ingest `data_chunk` to a stream referenced as `reference`
def
ingest
(
data_chunk
)
def
ingest
(
reference
,
data_chunk
)
uri
=
URI
(
"
#{
@streamtool_uri
}
/ingest?reference=
#{
reference
}
"
)
# call start_request if request is undefined
@request
||=
start_request
(
uri
)
# connect again if the connection is not started
if
!
@http
.
started?
()
start_request
(
uri
)
end
# When using 'application/x-www-form-urlencoded', Ruby encodes with regex
# and it is far too slow. Such POST is legit:
# https://stackoverflow.com/a/14710450
@request
||=
start_request
# call start_request if request is undefined
@request
.
body
=
data_chunk
@request
.
content_type
=
'application/octet-stream'
if
@credentials
.
has_key?
(
'user'
)
@request
.
basic_auth
@credentials
[
'user'
],
@credentials
[
'password'
]
end
...
...
@@ -80,7 +93,6 @@ class WendelinClient
# some http/ssl/other connection error
@log
.
warn
"HTTP ERROR:"
raise
else
@log
.
on_trace
do
@log
.
trace
'>>> RESPONSE'
...
...
@@ -97,6 +109,7 @@ class WendelinClient
@log
.
warn
"FAIL:"
res
.
value
end
end
end
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment