fluent-plugin-geovis 0.0.2 → 0.0.3

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
  SHA256:
3
- metadata.gz: 70b07bf87bdb2f68537e205cafc1a4f46ea1518f1fc291828f22060cac7ee298
4
- data.tar.gz: a9baab600d4fbda0a8108c33b7f6cbcab0607cfffb1397f0ab81ee7fa2ca3749
3
+ metadata.gz: 2c9f1a5ffa607e0cf5e9d28c26cb4c5b50092f43e750b31b05568d45bc88f3b8
4
+ data.tar.gz: 8b8c93bfa7360461709e5e4d73cd42ff81a5843d191c8ad43c8cc54cfb9a59cb
5
5
  SHA512:
6
- metadata.gz: 7e8fd504f2ee80c1baa37bb3c0201cc6d60596ae7633486dcbcff0db02c07dabff4d3642f868ff04e08f04a295bab8fc49fd8086cee1ffce11797bea08d77496
7
- data.tar.gz: f476be1f77794a60179c7ced7675d07ce6c6f287fdd8f05a187ba4a383502c76fd4e38a4242e93a4f58f4553b7cdbe9e4f6da0b1bb47fe22df3d484e51fd26f9
6
+ metadata.gz: d26eeeaad6ca0d44968bc46e45bc982ea26b9d01427f4ae0aecd6bb53d03636d5a03e3c2d9754752c2dd61cca1378e5aded3be9c20aaae2de62cb5ca5e402fac
7
+ data.tar.gz: 2c344b51b54d911baf0760029e7697fca5df2be120b4ff82778d9e979a73b469a191475ab9e223f91c03ea63b6a5103efccb52c33a1a0b05fd6b0962c03d9784
@@ -3,7 +3,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
3
 
4
4
  Gem::Specification.new do |spec|
5
5
  spec.name = "fluent-plugin-geovis"
6
- spec.version = "0.0.2"
6
+ spec.version = "0.0.3"
7
7
  spec.authors = ["li.baosheng"]
8
8
  spec.email = ["libs@geovis.com.cn"]
9
9
 
@@ -7,16 +7,111 @@ module Fluent
7
7
  class GeovisFilter < Fluent::Plugin::Filter
8
8
  Fluent::Plugin.register_filter("geovis", self)
9
9
 
10
+ K8_POD_CA_CERT = 'ca.crt'
11
+ K8_POD_TOKEN = 'token'
12
+ desc 'use the k8s insecure port,like 8080,if true then init the http kubeclient'
13
+ config_param :insecure, :bool, default: false
14
+ desc 'the kube-apiserver restful url'
15
+ config_param :kubernetes_url, :string, default: nil
16
+ desc 'the k8s serviceAccount for comunicating with kube-apiserver'
17
+ config_param :secret_dir, :string, default: '/var/run/secrets/kubernetes.io/serviceaccount'
18
+
19
+ config_param :apiVersion, :string, default: 'v1'
20
+ config_param :client_cert, :string, default: nil
21
+ config_param :client_key, :string, default: nil
22
+ config_param :ca_file, :string, default: nil
23
+ config_param :verify_ssl, :bool, default: true
24
+ config_param :bearer_token_file, :string, default: nil
25
+
10
26
  def configure(conf)
11
27
  super
12
- puts "==================================FetchpodnameFilter configure"
28
+
29
+ def log.trace?
30
+ level == Fluent::Log::LEVEL_TRACE
31
+ end
32
+ require 'kubeclient'
33
+
34
+ log.info "==================================FetchpodnameFilter configure"
35
+
36
+ # Use Kubernetes default service account if we're in a pod.
37
+ if @kubernetes_url.nil?
38
+ log.debug "Kubernetes URL is not set - inspecting environment"
39
+
40
+ env_host = ENV['KUBERNETES_SERVICE_HOST']
41
+ env_port = ENV['KUBERNETES_SERVICE_PORT']
42
+ if !env_host.nil? && !env_port.nil?
43
+ if insecure
44
+ @kubernetes_url = "http://#{env_host}:#{env_port}/api"
45
+ else
46
+ @kubernetes_url = "https://#{env_host}:#{env_port}/api"
47
+ end
48
+ log.debug "Kubernetes URL is now '#{@kubernetes_url}'"
49
+ end
50
+ end
51
+
52
+ # Use SSL certificate and bearer token from Kubernetes service account.
53
+ if Dir.exist?(@secret_dir)
54
+ log.debug "Found directory with secrets: #{@secret_dir}"
55
+ ca_cert = File.join(@secret_dir, K8_POD_CA_CERT)
56
+ pod_token = File.join(@secret_dir, K8_POD_TOKEN)
57
+
58
+ if @ca_file.nil? and File.exist?(ca_cert)
59
+ log.debug "Found CA certificate: #{ca_cert}"
60
+ @ca_file = ca_cert
61
+ end
62
+
63
+ if @bearer_token_file.nil? and File.exist?(pod_token)
64
+ log.debug "Found pod token: #{pod_token}"
65
+ @bearer_token_file = pod_token
66
+ end
67
+ end
68
+
69
+ if !@kubernetes_url.nil?
70
+ if insecure
71
+ @client = Kubeclient::Client.new @kubernetes_url, @apiVersion
72
+ else
73
+ ssl_options = {
74
+ client_cert: !@client_cert.nil? ? OpenSSL::X509::Certificate.new(File.read(@client_cert)) : nil,
75
+ client_key: !@client_key.nil? ? OpenSSL::PKey::RSA.new(File.read(@client_key)) : nil,
76
+ ca_file: @ca_file,
77
+ verify_ssl: @verify_ssl ? OpenSSL::SSL::VERIFY_PEER : OpenSSL::SSL::VERIFY_NONE
78
+ }
79
+
80
+ auth_options = {}
81
+
82
+ if !@bearer_token_file.nil?
83
+ bearer_token = File.read(@bearer_token_file)
84
+ auth_options[:bearer_token] = bearer_token
85
+ end
86
+
87
+ log.debug "Creating K8S client"
88
+ @client = Kubeclient::Client.new @kubernetes_url, @apiVersion,
89
+ ssl_options: ssl_options,
90
+ auth_options: auth_options
91
+ end
92
+
93
+ begin
94
+ @client.api_valid?
95
+ rescue KubeException => kube_error
96
+ raise Fluent::ConfigError, "Invalid Kubernetes API #{@apiVersion} endpoint #{@kubernetes_url}: #{kube_error.message}"
97
+ end
98
+ end
13
99
  end
14
100
 
15
- def filter(tag, time, record)
16
- super
101
+ def filter_stream(tag, es)
17
102
  puts "==================================FetchpodnameFilter filter"
103
+ return es if (es.respond_to?(:empty?) && es.empty?) || !es.is_a?(Fluent::EventStream)
104
+ new_es = Fluent::MultiEventStream.new
105
+ es.each do |time, record|
106
+ puts record['uuid']
107
+
108
+ new_es.add(time, record)
109
+ end
110
+
111
+ new_es
18
112
  end
19
113
 
20
114
  end
21
115
  end
22
116
  end
117
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-geovis
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - li.baosheng