fluent-plugin-kubernetes_metadata_filter 2.1.4 → 2.9.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +57 -0
  3. data/.gitignore +0 -1
  4. data/.rubocop.yml +57 -0
  5. data/Gemfile +4 -2
  6. data/Gemfile.lock +158 -0
  7. data/README.md +48 -28
  8. data/Rakefile +15 -11
  9. data/fluent-plugin-kubernetes_metadata_filter.gemspec +25 -28
  10. data/lib/fluent/plugin/filter_kubernetes_metadata.rb +185 -131
  11. data/lib/fluent/plugin/kubernetes_metadata_cache_strategy.rb +27 -20
  12. data/lib/fluent/plugin/kubernetes_metadata_common.rb +59 -33
  13. data/lib/fluent/plugin/kubernetes_metadata_stats.rb +6 -6
  14. data/lib/fluent/plugin/kubernetes_metadata_test_api_adapter.rb +68 -0
  15. data/lib/fluent/plugin/kubernetes_metadata_util.rb +53 -0
  16. data/lib/fluent/plugin/kubernetes_metadata_watch_namespaces.rb +121 -27
  17. data/lib/fluent/plugin/kubernetes_metadata_watch_pods.rb +138 -29
  18. data/release_notes.md +42 -0
  19. data/test/cassettes/kubernetes_docker_metadata_annotations.yml +0 -34
  20. data/test/cassettes/{kubernetes_docker_metadata_dotted_labels.yml → kubernetes_docker_metadata_dotted_slashed_labels.yml} +0 -34
  21. data/test/cassettes/kubernetes_get_api_v1.yml +193 -0
  22. data/test/cassettes/kubernetes_get_api_v1_using_token.yml +195 -0
  23. data/test/cassettes/kubernetes_get_namespace_default.yml +69 -0
  24. data/test/cassettes/kubernetes_get_namespace_default_using_token.yml +71 -0
  25. data/test/cassettes/{kubernetes_docker_metadata.yml → kubernetes_get_pod.yml} +0 -82
  26. data/test/cassettes/{metadata_with_namespace_id.yml → kubernetes_get_pod_container_init.yml} +3 -134
  27. data/test/cassettes/{kubernetes_docker_metadata_using_bearer_token.yml → kubernetes_get_pod_using_token.yml} +5 -105
  28. data/test/cassettes/metadata_from_tag_and_journald_fields.yml +0 -255
  29. data/test/cassettes/metadata_from_tag_journald_and_kubernetes_fields.yml +0 -255
  30. data/test/cassettes/{non_kubernetes_docker_metadata.yml → valid_kubernetes_api_server_using_token.yml} +4 -44
  31. data/test/helper.rb +20 -2
  32. data/test/plugin/test_cache_stats.rb +10 -13
  33. data/test/plugin/test_cache_strategy.rb +158 -160
  34. data/test/plugin/test_filter_kubernetes_metadata.rb +480 -320
  35. data/test/plugin/test_utils.rb +56 -0
  36. data/test/plugin/test_watch_namespaces.rb +209 -55
  37. data/test/plugin/test_watch_pods.rb +302 -103
  38. data/test/plugin/watch_test.rb +52 -33
  39. metadata +69 -72
  40. data/circle.yml +0 -17
@@ -18,40 +18,6 @@
18
18
  #
19
19
  ---
20
20
  http_interactions:
21
- - request:
22
- method: get
23
- uri: https://localhost:8443/api
24
- body:
25
- encoding: US-ASCII
26
- string: ''
27
- headers:
28
- Accept:
29
- - "*/*; q=0.5, application/xml"
30
- Accept-Encoding:
31
- - gzip, deflate
32
- User-Agent:
33
- - Ruby
34
- response:
35
- status:
36
- code: 200
37
- message: OK
38
- headers:
39
- Content-Type:
40
- - application/json
41
- Date:
42
- - Fri, 08 May 2015 10:35:37 GMT
43
- Content-Length:
44
- - '67'
45
- body:
46
- encoding: UTF-8
47
- string: |-
48
- {
49
- "versions": [
50
- "v1"
51
- ]
52
- }
53
- http_version:
54
- recorded_at: Fri, 08 May 2015 10:35:37 GMT
55
21
  - request:
56
22
  method: get
57
23
  uri: https://localhost:8443/api/v1/namespaces/default/pods/fabric8-console-controller-98rqc
@@ -177,52 +143,4 @@ http_interactions:
177
143
  }
178
144
  http_version:
179
145
  recorded_at: Fri, 08 May 2015 10:35:37 GMT
180
- - request:
181
- method: get
182
- uri: https://localhost:8443/api/v1/namespaces/default
183
- body:
184
- encoding: US-ASCII
185
- string: ''
186
- headers:
187
- Accept:
188
- - "*/*; q=0.5, application/xml"
189
- Accept-Encoding:
190
- - gzip, deflate
191
- User-Agent:
192
- - Ruby
193
- response:
194
- status:
195
- code: 200
196
- message: OK
197
- headers:
198
- Content-Type:
199
- - application/json
200
- Date:
201
- - Fri, 08 May 2015 10:35:37 GMT
202
- Transfer-Encoding:
203
- - chunked
204
- body:
205
- encoding: UTF-8
206
- string: |-
207
- {
208
- "kind": "Namespace",
209
- "apiVersion": "v1",
210
- "metadata": {
211
- "name": "default",
212
- "selfLink": "/api/v1/namespaces/default",
213
- "uid": "898268c8-4a36-11e5-9d81-42010af0194c",
214
- "resourceVersion": "6",
215
- "creationTimestamp": "2015-05-08T09:22:01Z"
216
- },
217
- "spec": {
218
- "finalizers": [
219
- "kubernetes"
220
- ]
221
- },
222
- "status": {
223
- "phase": "Active"
224
- }
225
- }
226
- http_version:
227
- recorded_at: Fri, 08 May 2015 10:35:37 GMT
228
146
  recorded_with: VCR 2.9.3
@@ -18,40 +18,6 @@
18
18
  #
19
19
  ---
20
20
  http_interactions:
21
- - request:
22
- method: get
23
- uri: https://localhost:8443/api
24
- body:
25
- encoding: US-ASCII
26
- string: ''
27
- headers:
28
- Accept:
29
- - "*/*; q=0.5, application/xml"
30
- Accept-Encoding:
31
- - gzip, deflate
32
- User-Agent:
33
- - Ruby
34
- response:
35
- status:
36
- code: 200
37
- message: OK
38
- headers:
39
- Content-Type:
40
- - application/json
41
- Date:
42
- - Fri, 08 May 2015 10:35:37 GMT
43
- Content-Length:
44
- - '67'
45
- body:
46
- encoding: UTF-8
47
- string: |-
48
- {
49
- "versions": [
50
- "v1"
51
- ]
52
- }
53
- http_version:
54
- recorded_at: Fri, 08 May 2015 10:35:37 GMT
55
21
  - request:
56
22
  method: get
57
23
  uri: https://localhost:8443/api/v1/namespaces/default/pods/fabric8-console-controller-98rqc
@@ -161,116 +127,19 @@ http_interactions:
161
127
  {
162
128
  "name": "fabric8-console-container",
163
129
  "state": {
164
- "running": {
165
- "startedAt": "2015-05-08T09:22:44Z"
130
+ "waiting": {
131
+ "reason": "ContainerCreating"
166
132
  }
167
133
  },
168
134
  "lastState": {},
169
135
  "ready": true,
170
136
  "restartCount": 0,
171
137
  "image": "fabric8/hawtio-kubernetes:latest",
172
- "imageID": "docker://b2bd1a24a68356b2f30128e6e28e672c1ef92df0d9ec01ec0c7faea5d77d2303",
173
- "containerID": "docker://49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459"
138
+ "imageID": ""
174
139
  }
175
140
  ]
176
141
  }
177
142
  }
178
143
  http_version:
179
144
  recorded_at: Fri, 08 May 2015 10:35:37 GMT
180
- - request:
181
- method: get
182
- uri: https://localhost:8443/api/v1/namespaces/default
183
- body:
184
- encoding: US-ASCII
185
- string: ''
186
- headers:
187
- Accept:
188
- - "*/*; q=0.5, application/xml"
189
- Accept-Encoding:
190
- - gzip, deflate
191
- User-Agent:
192
- - Ruby
193
- response:
194
- status:
195
- code: 200
196
- message: OK
197
- headers:
198
- Content-Type:
199
- - application/json
200
- Date:
201
- - Fri, 08 May 2015 10:35:37 GMT
202
- Transfer-Encoding:
203
- - chunked
204
- body:
205
- encoding: UTF-8
206
- string: |-
207
- {
208
- "kind": "Namespace",
209
- "apiVersion": "v1",
210
- "metadata": {
211
- "name": "default",
212
- "selfLink": "/api/v1/namespaces/default",
213
- "uid": "898268c8-4a36-11e5-9d81-42010af0194c",
214
- "resourceVersion": "6",
215
- "creationTimestamp": "2015-05-08T09:22:01Z"
216
- },
217
- "spec": {
218
- "finalizers": [
219
- "kubernetes"
220
- ]
221
- },
222
- "status": {
223
- "phase": "Active"
224
- }
225
- }
226
- http_version:
227
- recorded_at: Fri, 08 May 2015 10:35:37 GMT
228
- - request:
229
- method: get
230
- uri: https://localhost:8443/api/v1/namespaces/default
231
- body:
232
- encoding: US-ASCII
233
- string: ''
234
- headers:
235
- Accept:
236
- - "*/*; q=0.5, application/xml"
237
- Accept-Encoding:
238
- - gzip, deflate
239
- User-Agent:
240
- - Ruby
241
- response:
242
- status:
243
- code: 200
244
- message: OK
245
- headers:
246
- Content-Type:
247
- - application/json
248
- Date:
249
- - Fri, 08 May 2015 10:35:37 GMT
250
- Transfer-Encoding:
251
- - chunked
252
- body:
253
- encoding: UTF-8
254
- string: |-
255
- {
256
- "kind": "Namespace",
257
- "apiVersion": "v1",
258
- "metadata": {
259
- "name": "default",
260
- "selfLink": "/api/v1/namespaces/default",
261
- "uid": "898268c8-4a36-11e5-9d81-42010af0194c",
262
- "resourceVersion": "6",
263
- "creationTimestamp": "2015-05-08T09:22:01Z"
264
- },
265
- "spec": {
266
- "finalizers": [
267
- "kubernetes"
268
- ]
269
- },
270
- "status": {
271
- "phase": "Active"
272
- }
273
- }
274
- http_version:
275
- recorded_at: Fri, 08 May 2015 10:35:37 GMT
276
145
  recorded_with: VCR 2.9.3
@@ -18,42 +18,6 @@
18
18
  #
19
19
  ---
20
20
  http_interactions:
21
- - request:
22
- method: get
23
- uri: https://localhost:8443/api
24
- body:
25
- encoding: US-ASCII
26
- string: ''
27
- headers:
28
- Accept:
29
- - "*/*; q=0.5, application/xml"
30
- Accept-Encoding:
31
- - gzip, deflate
32
- User-Agent:
33
- - Ruby
34
- Authorization:
35
- - Bearer YzYyYzFlODMtODdhNS00ZTMyLWIzMmItNmY4NDc4OTI1ZWFh
36
- response:
37
- status:
38
- code: 200
39
- message: OK
40
- headers:
41
- Content-Type:
42
- - application/json
43
- Date:
44
- - Sat, 09 May 2015 13:51:07 GMT
45
- Content-Length:
46
- - '67'
47
- body:
48
- encoding: UTF-8
49
- string: |-
50
- {
51
- "versions": [
52
- "v1"
53
- ]
54
- }
55
- http_version:
56
- recorded_at: Sat, 09 May 2015 13:51:07 GMT
57
21
  - request:
58
22
  method: get
59
23
  uri: https://localhost:8443/api/v1/namespaces/default/pods/fabric8-console-controller-98rqc
@@ -77,7 +41,7 @@ http_interactions:
77
41
  Content-Type:
78
42
  - application/json
79
43
  Date:
80
- - Sat, 09 May 2015 13:51:07 GMT
44
+ - Fri, 08 May 2015 10:35:37 GMT
81
45
  Transfer-Encoding:
82
46
  - chunked
83
47
  body:
@@ -92,7 +56,7 @@ http_interactions:
92
56
  "namespace": "default",
93
57
  "selfLink": "/api/v1/namespaces/default/pods/fabric8-console-controller-98rqc",
94
58
  "uid": "c76927af-f563-11e4-b32d-54ee7527188d",
95
- "resourceVersion": "3556",
59
+ "resourceVersion": "122",
96
60
  "creationTimestamp": "2015-05-08T09:22:42Z",
97
61
  "labels": {
98
62
  "component": "fabric8Console"
@@ -160,89 +124,25 @@ http_interactions:
160
124
  }
161
125
  ],
162
126
  "hostIP": "172.17.42.1",
163
- "podIP": "172.17.0.4",
127
+ "podIP": "172.17.0.8",
164
128
  "containerStatuses": [
165
129
  {
166
130
  "name": "fabric8-console-container",
167
131
  "state": {
168
132
  "running": {
169
- "startedAt": "2015-05-09T13:33:38Z"
133
+ "startedAt": "2015-05-08T09:22:44Z"
170
134
  }
171
135
  },
172
136
  "lastState": {},
173
137
  "ready": true,
174
- "restartCount": 2,
138
+ "restartCount": 0,
175
139
  "image": "fabric8/hawtio-kubernetes:latest",
176
140
  "imageID": "docker://b2bd1a24a68356b2f30128e6e28e672c1ef92df0d9ec01ec0c7faea5d77d2303",
177
141
  "containerID": "docker://49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459"
178
- },
179
- {
180
- "name": "POD",
181
- "state": {
182
- "termination": {
183
- "exitCode": 0,
184
- "startedAt": "2015-05-09T09:45:08Z",
185
- "finishedAt": "2015-05-09T09:47:00Z"
186
- }
187
- },
188
- "lastState": {},
189
- "ready": false,
190
- "restartCount": 1,
191
- "image": "openshift/origin-pod:v0.4.4",
192
- "imageID": "docker://81fa37a83ec46fed9dddf30a9c3c43f54bfe4b65dea74a4c152fd515a0bf92a8",
193
- "containerID": "docker://9c8ed1a9bbb6d9804b12379654461dcd3b447438c02c52ca7f7d2504e14ae96b"
194
142
  }
195
143
  ]
196
144
  }
197
145
  }
198
146
  http_version:
199
- recorded_at: Sat, 09 May 2015 13:51:07 GMT
200
- - request:
201
- method: get
202
- uri: https://localhost:8443/api/v1/namespaces/default
203
- body:
204
- encoding: US-ASCII
205
- string: ''
206
- headers:
207
- Accept:
208
- - "*/*; q=0.5, application/xml"
209
- Accept-Encoding:
210
- - gzip, deflate
211
- User-Agent:
212
- - Ruby
213
- response:
214
- status:
215
- code: 200
216
- message: OK
217
- headers:
218
- Content-Type:
219
- - application/json
220
- Date:
221
- - Fri, 08 May 2015 10:35:37 GMT
222
- Transfer-Encoding:
223
- - chunked
224
- body:
225
- encoding: UTF-8
226
- string: |-
227
- {
228
- "kind": "Namespace",
229
- "apiVersion": "v1",
230
- "metadata": {
231
- "name": "default",
232
- "selfLink": "/api/v1/namespaces/default",
233
- "uid": "898268c8-4a36-11e5-9d81-42010af0194c",
234
- "resourceVersion": "6",
235
- "creationTimestamp": "2015-05-08T09:22:01Z"
236
- },
237
- "spec": {
238
- "finalizers": [
239
- "kubernetes"
240
- ]
241
- },
242
- "status": {
243
- "phase": "Active"
244
- }
245
- }
246
- http_version:
247
147
  recorded_at: Fri, 08 May 2015 10:35:37 GMT
248
148
  recorded_with: VCR 2.9.3
@@ -18,261 +18,6 @@
18
18
  #
19
19
  ---
20
20
  http_interactions:
21
- - request:
22
- method: get
23
- uri: https://localhost:8443/api
24
- body:
25
- encoding: US-ASCII
26
- string: ''
27
- headers:
28
- Accept:
29
- - "*/*; q=0.5, application/xml"
30
- Accept-Encoding:
31
- - gzip, deflate
32
- User-Agent:
33
- - Ruby
34
- response:
35
- status:
36
- code: 200
37
- message: OK
38
- headers:
39
- Content-Type:
40
- - application/json
41
- Date:
42
- - Fri, 08 May 2015 10:35:37 GMT
43
- Content-Length:
44
- - '67'
45
- body:
46
- encoding: UTF-8
47
- string: |-
48
- {
49
- "versions": [
50
- "v1"
51
- ]
52
- }
53
- http_version:
54
- recorded_at: Fri, 08 May 2015 10:35:37 GMT
55
- - request:
56
- method: get
57
- uri: https://localhost:8443/api/v1/namespaces/default/pods/fabric8-console-controller-98rqc
58
- body:
59
- encoding: US-ASCII
60
- string: ''
61
- headers:
62
- Accept:
63
- - "*/*; q=0.5, application/xml"
64
- Accept-Encoding:
65
- - gzip, deflate
66
- User-Agent:
67
- - Ruby
68
- response:
69
- status:
70
- code: 200
71
- message: OK
72
- headers:
73
- Content-Type:
74
- - application/json
75
- Date:
76
- - Fri, 08 May 2015 10:35:37 GMT
77
- Transfer-Encoding:
78
- - chunked
79
- body:
80
- encoding: UTF-8
81
- string: |-
82
- {
83
- "kind": "Pod",
84
- "apiVersion": "v1",
85
- "metadata": {
86
- "name": "fabric8-console-controller-98rqc",
87
- "generateName": "fabric8-console-controller-",
88
- "namespace": "default",
89
- "selfLink": "/api/v1/namespaces/default/pods/fabric8-console-controller-98rqc",
90
- "uid": "c76927af-f563-11e4-b32d-54ee7527188d",
91
- "resourceVersion": "122",
92
- "creationTimestamp": "2015-05-08T09:22:42Z",
93
- "labels": {
94
- "component": "fabric8Console"
95
- }
96
- },
97
- "spec": {
98
- "volumes": [
99
- {
100
- "name": "openshift-cert-secrets",
101
- "hostPath": null,
102
- "emptyDir": null,
103
- "gcePersistentDisk": null,
104
- "gitRepo": null,
105
- "secret": {
106
- "secretName": "openshift-cert-secrets"
107
- },
108
- "nfs": null,
109
- "iscsi": null,
110
- "glusterfs": null
111
- }
112
- ],
113
- "containers": [
114
- {
115
- "name": "fabric8-console-container",
116
- "image": "fabric8/hawtio-kubernetes:latest",
117
- "ports": [
118
- {
119
- "containerPort": 9090,
120
- "protocol": "TCP"
121
- }
122
- ],
123
- "env": [
124
- {
125
- "name": "OAUTH_CLIENT_ID",
126
- "value": "fabric8-console"
127
- },
128
- {
129
- "name": "OAUTH_AUTHORIZE_URI",
130
- "value": "https://localhost:8443/oauth/authorize"
131
- }
132
- ],
133
- "resources": {},
134
- "volumeMounts": [
135
- {
136
- "name": "openshift-cert-secrets",
137
- "readOnly": true,
138
- "mountPath": "/etc/secret-volume"
139
- }
140
- ],
141
- "terminationMessagePath": "/dev/termination-log",
142
- "imagePullPolicy": "IfNotPresent",
143
- "capabilities": {}
144
- }
145
- ],
146
- "restartPolicy": "Always",
147
- "dnsPolicy": "ClusterFirst",
148
- "nodeName": "jimmi-redhat.localnet"
149
- },
150
- "status": {
151
- "phase": "Running",
152
- "Condition": [
153
- {
154
- "type": "Ready",
155
- "status": "True"
156
- }
157
- ],
158
- "hostIP": "172.17.42.1",
159
- "podIP": "172.17.0.8",
160
- "containerStatuses": [
161
- {
162
- "name": "fabric8-console-container",
163
- "state": {
164
- "running": {
165
- "startedAt": "2015-05-08T09:22:44Z"
166
- }
167
- },
168
- "lastState": {},
169
- "ready": true,
170
- "restartCount": 0,
171
- "image": "fabric8/hawtio-kubernetes:latest",
172
- "imageID": "docker://b2bd1a24a68356b2f30128e6e28e672c1ef92df0d9ec01ec0c7faea5d77d2303",
173
- "containerID": "docker://49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459"
174
- }
175
- ]
176
- }
177
- }
178
- http_version:
179
- recorded_at: Fri, 08 May 2015 10:35:37 GMT
180
- - request:
181
- method: get
182
- uri: https://localhost:8443/api/v1/namespaces/default
183
- body:
184
- encoding: US-ASCII
185
- string: ''
186
- headers:
187
- Accept:
188
- - "*/*; q=0.5, application/xml"
189
- Accept-Encoding:
190
- - gzip, deflate
191
- User-Agent:
192
- - Ruby
193
- response:
194
- status:
195
- code: 200
196
- message: OK
197
- headers:
198
- Content-Type:
199
- - application/json
200
- Date:
201
- - Fri, 08 May 2015 10:35:37 GMT
202
- Transfer-Encoding:
203
- - chunked
204
- body:
205
- encoding: UTF-8
206
- string: |-
207
- {
208
- "kind": "Namespace",
209
- "apiVersion": "v1",
210
- "metadata": {
211
- "name": "default",
212
- "selfLink": "/api/v1/namespaces/default",
213
- "uid": "898268c8-4a36-11e5-9d81-42010af0194c",
214
- "resourceVersion": "6",
215
- "creationTimestamp": "2015-05-08T09:22:01Z"
216
- },
217
- "spec": {
218
- "finalizers": [
219
- "kubernetes"
220
- ]
221
- },
222
- "status": {
223
- "phase": "Active"
224
- }
225
- }
226
- http_version:
227
- recorded_at: Fri, 08 May 2015 10:35:37 GMT
228
- - request:
229
- method: get
230
- uri: https://localhost:8443/api/v1/namespaces/default
231
- body:
232
- encoding: US-ASCII
233
- string: ''
234
- headers:
235
- Accept:
236
- - "*/*; q=0.5, application/xml"
237
- Accept-Encoding:
238
- - gzip, deflate
239
- User-Agent:
240
- - Ruby
241
- response:
242
- status:
243
- code: 200
244
- message: OK
245
- headers:
246
- Content-Type:
247
- - application/json
248
- Date:
249
- - Fri, 08 May 2015 10:35:37 GMT
250
- Transfer-Encoding:
251
- - chunked
252
- body:
253
- encoding: UTF-8
254
- string: |-
255
- {
256
- "kind": "Namespace",
257
- "apiVersion": "v1",
258
- "metadata": {
259
- "name": "default",
260
- "selfLink": "/api/v1/namespaces/default",
261
- "uid": "898268c8-4a36-11e5-9d81-42010af0194c",
262
- "resourceVersion": "6",
263
- "creationTimestamp": "2015-05-08T09:22:01Z"
264
- },
265
- "spec": {
266
- "finalizers": [
267
- "kubernetes"
268
- ]
269
- },
270
- "status": {
271
- "phase": "Active"
272
- }
273
- }
274
- http_version:
275
- recorded_at: Fri, 08 May 2015 10:35:37 GMT
276
21
  - request:
277
22
  method: get
278
23
  uri: https://localhost:8443/api/v1/namespaces/journald-namespace-name/pods/journald-pod-name