|
| 1 | +# Mock OKP (Solr) server — ConfigMap with a minimal Python HTTP handler |
| 2 | +--- |
| 3 | +apiVersion: v1 |
| 4 | +kind: ConfigMap |
| 5 | +metadata: |
| 6 | + name: mock-okp-script |
| 7 | + namespace: openstack-lightspeed |
| 8 | +data: |
| 9 | + mock_solr_server.py: | |
| 10 | + import json, re, signal, sys |
| 11 | + from http.server import BaseHTTPRequestHandler, HTTPServer |
| 12 | +
|
| 13 | + PATTERN = re.compile(r"^/solr/[^/]+/select") |
| 14 | + RESPONSE = { |
| 15 | + "responseHeader": {"status": 0, "QTime": 0, "params": {"q": "*:*", "rows": "0"}}, |
| 16 | + "response": {"numFound": 0, "start": 0, "docs": []}, |
| 17 | + } |
| 18 | +
|
| 19 | + class Handler(BaseHTTPRequestHandler): |
| 20 | + def do_GET(self): |
| 21 | + path = self.path.split("?")[0] |
| 22 | + if path == "/" or PATTERN.match(path): |
| 23 | + self._json(200, RESPONSE) |
| 24 | + else: |
| 25 | + self._json(404, {"error": "Not found", "path": self.path}) |
| 26 | +
|
| 27 | + def _json(self, status, body): |
| 28 | + data = json.dumps(body).encode() |
| 29 | + self.send_response(status) |
| 30 | + self.send_header("Content-Type", "application/json") |
| 31 | + self.send_header("Content-Length", str(len(data))) |
| 32 | + self.end_headers() |
| 33 | + self.wfile.write(data) |
| 34 | +
|
| 35 | + def log_message(self, fmt, *args): |
| 36 | + sys.stdout.write(f"{fmt % args}\n") |
| 37 | + sys.stdout.flush() |
| 38 | +
|
| 39 | + server = HTTPServer(("0.0.0.0", 8080), Handler) |
| 40 | + signal.signal(signal.SIGTERM, lambda *_: (server.shutdown(), sys.exit(0))) |
| 41 | + print("Mock Solr listening on :8080", flush=True) |
| 42 | + server.serve_forever() |
| 43 | +
|
| 44 | +# Mock OKP Pod — uses OKP selector labels so the operator's Service routes here |
| 45 | +--- |
| 46 | +apiVersion: v1 |
| 47 | +kind: Pod |
| 48 | +metadata: |
| 49 | + name: mock-okp-server |
| 50 | + namespace: openstack-lightspeed |
| 51 | + labels: |
| 52 | + app.kubernetes.io/component: okp-server |
| 53 | + app.kubernetes.io/managed-by: openstack-lightspeed-operator |
| 54 | + app.kubernetes.io/name: openstack-lightspeed-okp-server |
| 55 | + app.kubernetes.io/part-of: openstack-lightspeed |
| 56 | +spec: |
| 57 | + containers: |
| 58 | + - name: mock-okp |
| 59 | + image: registry.redhat.io/ubi8/python-311:latest |
| 60 | + command: ["python", "/scripts/mock_solr_server.py"] |
| 61 | + ports: |
| 62 | + - containerPort: 8080 |
| 63 | + readinessProbe: |
| 64 | + httpGet: |
| 65 | + path: / |
| 66 | + port: 8080 |
| 67 | + initialDelaySeconds: 1 |
| 68 | + periodSeconds: 2 |
| 69 | + resources: |
| 70 | + requests: |
| 71 | + cpu: 50m |
| 72 | + memory: 64Mi |
| 73 | + limits: |
| 74 | + cpu: 100m |
| 75 | + memory: 128Mi |
| 76 | + volumeMounts: |
| 77 | + - name: script |
| 78 | + mountPath: /scripts |
| 79 | + volumes: |
| 80 | + - name: script |
| 81 | + configMap: |
| 82 | + name: mock-okp-script |
| 83 | + |
| 84 | +# OpenStackLightspeed CR with OKP enabled |
1 | 85 | --- |
2 | 86 | apiVersion: lightspeed.openstack.org/v1beta1 |
3 | 87 | kind: OpenStackLightspeed |
|
0 commit comments