You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
242 lines
7.4 KiB
242 lines
7.4 KiB
Add missing files for mmkubernetes tests
|
|
|
|
Upstream bug: https://github.com/rsyslog/rsyslog/pull/2719
|
|
|
|
--- /dev/null
|
|
+++ b/tests/mmkubernetes-basic.out.json
|
|
@@ -0,0 +1,110 @@
|
|
+[{
|
|
+ "kubernetes": {
|
|
+ "namespace_id": "namespace-name2-id",
|
|
+ "namespace_labels": {
|
|
+ "label_1_key": "label 1 value",
|
|
+ "label_with_empty_value": "",
|
|
+ "label_2_key": "label 2 value"
|
|
+ },
|
|
+ "creation_timestamp": "2018-04-09T21:56:39Z",
|
|
+ "pod_id": "pod-name2-id",
|
|
+ "labels": {
|
|
+ "custom_label": "pod-name2-label-value",
|
|
+ "deploymentconfig": "pod-name2-dc",
|
|
+ "component": "pod-name2-component",
|
|
+ "label_with_empty_value": "",
|
|
+ "deployment": "pod-name2-deployment"
|
|
+ },
|
|
+ "pod_name": "pod-name2",
|
|
+ "namespace_name": "namespace-name2",
|
|
+ "container_name": "container-name2",
|
|
+ "master_url": "http://localhost:18443"
|
|
+ },
|
|
+ "docker": {
|
|
+ "container_id": "id2"
|
|
+ }
|
|
+},
|
|
+{
|
|
+ "message": "a message from container 4",
|
|
+ "CONTAINER_NAME": "some-prefix_container-name4_pod-name4_namespace-name4_unused4_unused44",
|
|
+ "CONTAINER_ID_FULL": "id4",
|
|
+ "kubernetes": {
|
|
+ "namespace_id": "namespace-name4-id",
|
|
+ "namespace_labels": {
|
|
+ "label_1_key": "label 1 value",
|
|
+ "label_with_empty_value": "",
|
|
+ "label_2_key": "label 2 value"
|
|
+ },
|
|
+ "creation_timestamp": "2018-04-09T21:56:39Z",
|
|
+ "pod_id": "pod-name4-id",
|
|
+ "labels": {
|
|
+ "custom_label": "pod-name4-label-value",
|
|
+ "deploymentconfig": "pod-name4-dc",
|
|
+ "component": "pod-name4-component",
|
|
+ "label_with_empty_value": "",
|
|
+ "deployment": "pod-name4-deployment"
|
|
+ },
|
|
+ "pod_name": "pod-name4",
|
|
+ "namespace_name": "namespace-name4",
|
|
+ "container_name": "container-name4",
|
|
+ "master_url": "http://localhost:18443"
|
|
+ },
|
|
+ "docker": {
|
|
+ "container_id": "id4"
|
|
+ }
|
|
+},
|
|
+{
|
|
+ "kubernetes": {
|
|
+ "namespace_id": "namespace-name1-id",
|
|
+ "namespace_labels": {
|
|
+ "label_1_key": "label 1 value",
|
|
+ "label_with_empty_value": "",
|
|
+ "label_2_key": "label 2 value"
|
|
+ },
|
|
+ "creation_timestamp": "2018-04-09T21:56:39Z",
|
|
+ "pod_id": "pod-name1-id",
|
|
+ "labels": {
|
|
+ "custom_label": "pod-name1-label-value",
|
|
+ "deploymentconfig": "pod-name1-dc",
|
|
+ "component": "pod-name1-component",
|
|
+ "label_with_empty_value": "",
|
|
+ "deployment": "pod-name1-deployment"
|
|
+ },
|
|
+ "pod_name": "pod-name1",
|
|
+ "namespace_name": "namespace-name1",
|
|
+ "container_name": "container-name1",
|
|
+ "master_url": "http://localhost:18443"
|
|
+ },
|
|
+ "docker": {
|
|
+ "container_id": "id1"
|
|
+ }
|
|
+},
|
|
+{
|
|
+ "message": "a message from container 3",
|
|
+ "CONTAINER_NAME": "some-prefix_container-name3.container-hash3_pod-name3_namespace-name3_unused3_unused33",
|
|
+ "CONTAINER_ID_FULL": "id3",
|
|
+ "kubernetes": {
|
|
+ "namespace_id": "namespace-name3-id",
|
|
+ "namespace_labels": {
|
|
+ "label_1_key": "label 1 value",
|
|
+ "label_with_empty_value": "",
|
|
+ "label_2_key": "label 2 value"
|
|
+ },
|
|
+ "creation_timestamp": "2018-04-09T21:56:39Z",
|
|
+ "pod_id": "pod-name3-id",
|
|
+ "labels": {
|
|
+ "custom_label": "pod-name3-label-value",
|
|
+ "deploymentconfig": "pod-name3-dc",
|
|
+ "component": "pod-name3-component",
|
|
+ "label_with_empty_value": "",
|
|
+ "deployment": "pod-name3-deployment"
|
|
+ },
|
|
+ "pod_name": "pod-name3",
|
|
+ "namespace_name": "namespace-name3",
|
|
+ "container_name": "container-name3",
|
|
+ "master_url": "http://localhost:18443"
|
|
+ },
|
|
+ "docker": {
|
|
+ "container_id": "id3"
|
|
+ }
|
|
+}]
|
|
--- /dev/null
|
|
+++ b/tests/mmkubernetes_test_server.py
|
|
@@ -0,0 +1,121 @@
|
|
+# Used by the mmkubernetes tests
|
|
+# This is a simple http server which responds to kubernetes api requests
|
|
+# and responds with kubernetes api server responses
|
|
+# added 2018-04-06 by richm, released under ASL 2.0
|
|
+import os
|
|
+import json
|
|
+import sys
|
|
+
|
|
+try:
|
|
+ from http.server import HTTPServer, BaseHTTPRequestHandler
|
|
+except ImportError:
|
|
+ from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler
|
|
+
|
|
+ns_template = '''{{
|
|
+ "kind": "Namespace",
|
|
+ "apiVersion": "v1",
|
|
+ "metadata": {{
|
|
+ "name": "{namespace_name}",
|
|
+ "selfLink": "/api/v1/namespaces/{namespace_name}",
|
|
+ "uid": "{namespace_name}-id",
|
|
+ "resourceVersion": "2988",
|
|
+ "creationTimestamp": "2018-04-09T21:56:39Z",
|
|
+ "labels": {{
|
|
+ "label.1.key":"label 1 value",
|
|
+ "label.2.key":"label 2 value",
|
|
+ "label.with.empty.value":""
|
|
+ }},
|
|
+ "annotations": {{
|
|
+ "k8s.io/description": "",
|
|
+ "k8s.io/display-name": "",
|
|
+ "k8s.io/node-selector": "",
|
|
+ "k8s.io/sa.scc.mcs": "s0:c9,c4",
|
|
+ "k8s.io/sa.scc.supplemental-groups": "1000080000/10000",
|
|
+ "k8s.io/sa.scc.uid-range": "1000080000/10000",
|
|
+ "quota.k8s.io/cluster-resource-override-enabled": "false"
|
|
+ }}
|
|
+ }},
|
|
+ "spec": {{
|
|
+ "finalizers": [
|
|
+ "openshift.io/origin",
|
|
+ "kubernetes"
|
|
+ ]
|
|
+ }},
|
|
+ "status": {{
|
|
+ "phase": "Active"
|
|
+ }}
|
|
+}}'''
|
|
+
|
|
+pod_template = '''{{
|
|
+ "kind": "Pod",
|
|
+ "apiVersion": "v1",
|
|
+ "metadata": {{
|
|
+ "name": "{pod_name}",
|
|
+ "generateName": "{pod_name}-prefix",
|
|
+ "namespace": "{namespace_name}",
|
|
+ "selfLink": "/api/v1/namespaces/{namespace_name}/pods/{pod_name}",
|
|
+ "uid": "{pod_name}-id",
|
|
+ "resourceVersion": "3486",
|
|
+ "creationTimestamp": "2018-04-09T21:56:39Z",
|
|
+ "labels": {{
|
|
+ "component": "{pod_name}-component",
|
|
+ "deployment": "{pod_name}-deployment",
|
|
+ "deploymentconfig": "{pod_name}-dc",
|
|
+ "custom.label": "{pod_name}-label-value",
|
|
+ "label.with.empty.value":""
|
|
+ }},
|
|
+ "annotations": {{
|
|
+ "k8s.io/deployment-config.latest-version": "1",
|
|
+ "k8s.io/deployment-config.name": "{pod_name}-dc",
|
|
+ "k8s.io/deployment.name": "{pod_name}-deployment",
|
|
+ "k8s.io/custom.name": "custom value",
|
|
+ "annotation.with.empty.value":""
|
|
+ }}
|
|
+ }},
|
|
+ "status": {{
|
|
+ "phase": "Running",
|
|
+ "hostIP": "172.18.4.32",
|
|
+ "podIP": "10.128.0.14",
|
|
+ "startTime": "2018-04-09T21:57:39Z"
|
|
+ }}
|
|
+}}'''
|
|
+
|
|
+class SimpleHTTPRequestHandler(BaseHTTPRequestHandler):
|
|
+
|
|
+ def do_GET(self):
|
|
+ # "http://localhost:18443/api/v1/namespaces/namespace-name2"
|
|
+ # parse url - either /api/v1/namespaces/$ns_name
|
|
+ # or
|
|
+ # /api/v1/namespaces/$ns_name/pods/$pod_name
|
|
+ comps = self.path.split('/')
|
|
+ status = 400
|
|
+ if len(comps) >= 5 and comps[1] == 'api' and comps[2] == 'v1':
|
|
+ if len(comps) == 5 and comps[3] == 'namespaces': # namespace
|
|
+ resp = ns_template.format(namespace_name=comps[4])
|
|
+ status = 200
|
|
+ elif len(comps) == 7 and comps[3] == 'namespaces' and comps[5] == 'pods':
|
|
+ resp = pod_template.format(namespace_name=comps[4], pod_name=comps[6])
|
|
+ status = 200
|
|
+ else:
|
|
+ resp = '{{"error":"do not recognize {0}"}}'.format(self.path)
|
|
+ else:
|
|
+ resp = '{{"error":"do not recognize {0}"}}'.format(self.path)
|
|
+ if not status == 200:
|
|
+ self.log_error(resp)
|
|
+ self.send_response(status)
|
|
+ self.end_headers()
|
|
+ self.wfile.write(json.dumps(json.loads(resp), separators=(',',':')))
|
|
+
|
|
+port = int(sys.argv[1])
|
|
+
|
|
+httpd = HTTPServer(('localhost', port), SimpleHTTPRequestHandler)
|
|
+
|
|
+# write "started" to file named in argv[3]
|
|
+with open(sys.argv[3], "w") as ff:
|
|
+ ff.write("started\n")
|
|
+
|
|
+# write pid to file named in argv[2]
|
|
+with open(sys.argv[2], "w") as ff:
|
|
+ ff.write('{0}\n'.format(os.getpid()))
|
|
+
|
|
+httpd.serve_forever()
|