Skip to content

Commit

Permalink
Add porting files of Kafka v0.45.0
Browse files Browse the repository at this point in the history
Signed-off-by: Tyler Gu <[email protected]>

Add Kakfa operator porting context

Signed-off-by: Tyler Gu <[email protected]>
  • Loading branch information
tylergu committed Jan 21, 2025
1 parent 572fc01 commit cba08fb
Show file tree
Hide file tree
Showing 9 changed files with 37,958 additions and 1 deletion.
2 changes: 1 addition & 1 deletion acto/engine.py
Original file line number Diff line number Diff line change
Expand Up @@ -888,7 +888,7 @@ def __init__(

self.sequence_base = 0

self.custom_oracle: Optional[type[CheckerInterface]] = None
self.custom_checker: Optional[type[CheckerInterface]] = None
self.custom_on_init: Optional[Callable] = None
if operator_config.custom_oracle is not None:
module = importlib.import_module(operator_config.custom_oracle)
Expand Down
30 changes: 30 additions & 0 deletions acto/schema/oneof.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@
from copy import deepcopy
from typing import List, Tuple

from .array import ArraySchema
from .base import BaseSchema, TreeNode
from .object import ObjectSchema


class OneOfSchema(BaseSchema):
Expand Down Expand Up @@ -70,3 +72,31 @@ def __str__(self) -> str:
ret += ", "
ret += "]"
return ret

def __getitem__(self, key):
if isinstance(key, int):
for i in self.possibilities:
if isinstance(i, ArraySchema):
return i[key]
raise RuntimeError("No array schema found in oneOf")
if isinstance(key, str):
for i in self.possibilities:
if isinstance(i, ObjectSchema):
return i[key]
raise RuntimeError("No object schema found in oneOf")
raise TypeError("Key must be either int or str")

Check warning on line 87 in acto/schema/oneof.py

View workflow job for this annotation

GitHub Actions / coverage-report

Missing coverage

Missing coverage on lines 77-87

def __setitem__(self, key, value):
if isinstance(key, int):
for i in self.possibilities:
if isinstance(i, ArraySchema):
i[key] = value
return
raise RuntimeError("No array schema found in oneOf")
if isinstance(key, str):
for i in self.possibilities:
if isinstance(i, ObjectSchema):
i[key] = value
return
raise RuntimeError("No object schema found in oneOf")
raise TypeError("Key must be either int or str")

Check warning on line 102 in acto/schema/oneof.py

View workflow job for this annotation

GitHub Actions / coverage-report

Missing coverage

Missing coverage on lines 90-102
24,794 changes: 24,794 additions & 0 deletions data/strimzi-kafka-operator/v0-45-0/bundle.yaml

Large diffs are not rendered by default.

12,463 changes: 12,463 additions & 0 deletions data/strimzi-kafka-operator/v0-45-0/context.json

Large diffs are not rendered by default.

29 changes: 29 additions & 0 deletions data/strimzi-kafka-operator/v0-45-0/cr.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
name: test-cluster
annotations:
strimzi.io/node-pools: enabled
strimzi.io/kraft: enabled
spec:
kafka:
version: 3.9.0
metadataVersion: 3.9-IV0
listeners:
- name: plain
port: 9092
type: internal
tls: false
- name: tls
port: 9093
type: internal
tls: true
config:
offsets.topic.replication.factor: 3
transaction.state.log.replication.factor: 3
transaction.state.log.min.isr: 2
default.replication.factor: 3
min.insync.replicas: 2
entityOperator:
topicOperator: {}
userOperator: {}
80 changes: 80 additions & 0 deletions data/strimzi-kafka-operator/v0-45-0/examples/aux-examples.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
apiVersion: v1
data:
metrics-config.yml: "lowercaseOutputName: true\nrules:\n# OAuth Metrics\n- pattern:\
\ \"strimzi.oauth<type=(.+), context=(.+), kind=(.+), host=\\\"(.+)\\\", path=\\\
\"(.+)\\\", (.+)=(.+), (.+)=(.+), (.+)=(.+)><>(count|totalTimeMs):\"\n name:\
\ \"strimzi_oauth_$1_$12\"\n type: COUNTER\n labels:\n context: \"$2\"\n\
\ kind: \"$3\"\n host: \"$4\"\n path: \"$5\"\n \"$6\": \"$7\"\n \
\ \"$8\": \"$9\"\n \"$10\": \"$11\"\n- pattern: \"strimzi.oauth<type=(.+),\
\ context=(.+), kind=(.+), host=\\\"(.+)\\\", path=\\\"(.+)\\\", (.+)=(.+), (.+)=(.+)><>(count|totalTimeMs):\"\
\n name: \"strimzi_oauth_$1_$10\"\n type: COUNTER\n labels:\n context: \"\
$2\"\n kind: \"$3\"\n host: \"$4\"\n path: \"$5\"\n \"$6\": \"$7\"\
\n \"$8\": \"$9\"\n- pattern: \"strimzi.oauth<type=(.+), context=(.+), kind=(.+),\
\ host=\\\"(.+)\\\", path=\\\"(.+)\\\", (.+)=(.+)><>(count|totalTimeMs):\"\n \
\ name: \"strimzi_oauth_$1_$8\"\n type: COUNTER\n labels:\n context: \"$2\"\
\n kind: \"$3\"\n host: \"$4\"\n path: \"$5\"\n \"$6\": \"$7\"\n-\
\ pattern: \"strimzi.oauth<type=(.+), context=(.+), kind=(.+), host=\\\"(.+)\\\
\", path=\\\"(.+)\\\", (.+)=(.+), (.+)=(.+), (.+)=(.+)><>(.+):\"\n name: \"strimzi_oauth_$1_$12\"\
\n type: GAUGE\n labels:\n context: \"$2\"\n kind: \"$3\"\n host: \"\
$4\"\n path: \"$5\"\n \"$6\": \"$7\"\n \"$8\": \"$9\"\n \"$10\": \"\
$11\"\n- pattern: \"strimzi.oauth<type=(.+), context=(.+), kind=(.+), host=\\\"\
(.+)\\\", path=\\\"(.+)\\\", (.+)=(.+), (.+)=(.+)><>(.+):\"\n name: \"strimzi_oauth_$1_$10\"\
\n type: GAUGE\n labels:\n context: \"$2\"\n kind: \"$3\"\n host: \"\
$4\"\n path: \"$5\"\n \"$6\": \"$7\"\n \"$8\": \"$9\"\n- pattern: \"\
strimzi.oauth<type=(.+), context=(.+), kind=(.+), host=\\\"(.+)\\\", path=\\\"\
(.+)\\\", (.+)=(.+)><>(.+):\"\n name: \"strimzi_oauth_$1_$8\"\n type: GAUGE\n\
\ labels:\n context: \"$2\"\n kind: \"$3\"\n host: \"$4\"\n path:\
\ \"$5\"\n \"$6\": \"$7\"\n"
kind: ConfigMap
metadata:
labels:
app: strimzi
name: oauth-metrics
---
apiVersion: v1
kind: Secret
metadata:
name: additional-scrape-configs
stringData:
prometheus-additional.yaml: "- job_name: kubernetes-cadvisor\n honor_labels: true\n\
\ scrape_interval: 10s\n scrape_timeout: 10s\n metrics_path: /metrics/cadvisor\n\
\ scheme: https\n kubernetes_sd_configs:\n - role: node\n namespaces:\n\
\ names: []\n bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token\n\
\ tls_config:\n ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt\n\
\ insecure_skip_verify: true\n relabel_configs:\n - separator: ;\n regex:\
\ __meta_kubernetes_node_label_(.+)\n replacement: $1\n action: labelmap\n\
\ - separator: ;\n regex: (.*)\n target_label: __address__\n replacement:\
\ kubernetes.default.svc:443\n action: replace\n - source_labels: [__meta_kubernetes_node_name]\n\
\ separator: ;\n regex: (.+)\n target_label: __metrics_path__\n replacement:\
\ /api/v1/nodes/${1}/proxy/metrics/cadvisor\n action: replace\n - source_labels:\
\ [__meta_kubernetes_node_name]\n separator: ;\n regex: (.*)\n target_label:\
\ node_name\n replacement: $1\n action: replace\n - source_labels: [__meta_kubernetes_node_address_InternalIP]\n\
\ separator: ;\n regex: (.*)\n target_label: node_ip\n replacement:\
\ $1\n action: replace\n metric_relabel_configs:\n - source_labels: [container,\
\ __name__]\n separator: ;\n regex: POD;container_(network).*\n target_label:\
\ container\n replacement: $1\n action: replace\n - source_labels: [container]\n\
\ separator: ;\n regex: POD\n replacement: $1\n action: drop\n -\
\ source_labels: [container]\n separator: ;\n regex: ^$\n replacement:\
\ $1\n action: drop\n - source_labels: [__name__]\n separator: ;\n regex:\
\ container_(network_tcp_usage_total|tasks_state|memory_failures_total|network_udp_usage_total)\n\
\ replacement: $1\n action: drop\n\n- job_name: kubernetes-nodes-kubelet\n\
\ scrape_interval: 10s\n scrape_timeout: 10s\n scheme: https\n kubernetes_sd_configs:\n\
\ - role: node\n namespaces:\n names: []\n bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token\n\
\ tls_config:\n ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt\n\
\ insecure_skip_verify: true\n relabel_configs:\n - action: labelmap\n \
\ regex: __meta_kubernetes_node_label_(.+)\n - target_label: __address__\n \
\ replacement: kubernetes.default.svc:443\n - source_labels: [__meta_kubernetes_node_name]\n\
\ regex: (.+)\n target_label: __metrics_path__\n replacement: /api/v1/nodes/${1}/proxy/metrics\n"
type: Opaque
---
apiVersion: v1
kind: Secret
metadata:
name: alertmanager-alertmanager
stringData:
alertmanager.yaml: "global:\n slack_api_url: https://hooks.slack.com/services/change/me/please\n\
route:\n receiver: slack\nreceivers:\n- name: slack\n slack_configs:\n - channel:\
\ \"#strimzi-alerts\"\n title: \"{{ range .Alerts }}{{ .Annotations.summary\
\ }}\\n{{ end }}\"\n text: \"{{ range .Alerts }}{{ .Annotations.description\
\ }}\\n{{ end }}\"\n send_resolved: true\n"
type: Opaque
Loading

0 comments on commit cba08fb

Please sign in to comment.