Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
c26dc42
add kafka admin client managing topics, topic config and partition count
labrenbe Oct 16, 2026
87a5479
add support for list_partition_reassignments
labrenbe Oct 16, 2026
798619e
replace kafka_error with semantic error checks in the kafka admin client
labrenbe Oct 16, 2026
d0a7abb
remove is retryable checks for kafka errors
labrenbe Oct 16, 2026
95581f0
simplify kafka error handling
labrenbe Oct 16, 2026
69ed88e
add a flag for topic already exists errors
labrenbe Oct 20, 2026
8241cb3
Merge branch 'feat/kafka-agent' into feat/kafka-admin
labrenbe Oct 21, 2026
58e3393
use BrokerAddress in more places and remove awaiting_response
labrenbe Oct 21, 2026
198e800
fix flaky unit test
labrenbe Oct 21, 2026
668119f
return the created topic and all configs with their source from the k…
labrenbe Oct 23, 2026
dec1799
Merge branch 'feat/kafka-agent' into feat/kafka-admin
labrenbe Oct 23, 2026
75eb776
Merge branch 'feat/kafka-agent' into feat/kafka-admin
labrenbe Oct 23, 2026
b95fb0a
Merge branch 'feat/kafka-agent' into feat/kafka-admin
labrenbe Oct 26, 2026
e0e76ed
Merge branch 'feat/kafka-agent' into feat/kafka-admin
labrenbe Oct 27, 2026
51e863a
Merge branch 'feat/kafka-agent' into feat/kafka-admin
labrenbe Oct 27, 2026
9549489
Merge branch 'feat/kafka-agent' into feat/kafka-admin
labrenbe Oct 27, 2026
e7d2299
Merge branch 'feat/kafka-agent' into feat/kafka-admin
labrenbe Oct 27, 2026
150886f
return only topic-level config and no source
labrenbe Oct 27, 2026
56b9894
document source of magic kafka numbers
labrenbe Oct 27, 2026
1aee2b0
use ApiKey enum
labrenbe Oct 27, 2026
b435ce4
Merge branch 'feat/kafka-agent' into feat/kafka-admin
labrenbe Oct 28, 2026
2f23562
Merge branch 'feat/kafka-agent' into feat/kafka-admin
labrenbe Oct 28, 2026
cb10888
Merge branch 'feat/kafka-agent' into feat/kafka-admin
labrenbe Oct 28, 2026
a326d59
retry broken connection requests immediatly with a new connection
labrenbe Oct 28, 2026
048ff91
Merge branch 'feat/kafka-agent' into feat/kafka-admin
labrenbe Oct 29, 2026
28efc85
improve broker address Display impl
labrenbe Oct 29, 2026
82f8950
build the tls config once instead of per-server
labrenbe Oct 29, 2026
1937b53
keep the connection if only the version check fails
labrenbe Oct 29, 2026
b00fe65
rename helpers and doc comments to be more descriptive
labrenbe Oct 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 55 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

174 changes: 173 additions & 1 deletion Cargo.nix

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 7 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[workspace]
members = ["rust/operator-binary", "rust/agent-binary", "rust/shared"]
members = ["rust/operator-binary", "rust/agent-binary", "rust/kafka-admin", "rust/shared"]
resolver = "2"

[workspace.package]
Expand All @@ -14,18 +14,24 @@ stackable-operator = { git = "https://github.com/stackabletech/operator-rs.git",
stackable-kafka-shared = { path = "rust/shared" }

anyhow = "1.0"
base64 = "0.22"
built = { version = "0.8", features = ["chrono", "git2"] }
bytes = "1.12"
clap = "4.6"
const_format = "0.2"
futures = "0.3"
indoc = "2.0"
kafka-protocol = { version = "0.18", default-features = false, features = ["broker", "client"] }

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Move the broker feature to dev-dependencies if/as it is only used for testing.

rstest = "0.26"
rustls = { version = "0.23", default-features = false, features = ["logging", "ring", "std", "tls12"] }

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note to self, check if we enable the LogTracer (to get the logs). In 0.24, rustls will enable tracing so we won't need a log bridge for that.

semver = "1.0"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
snafu = "0.9"
strum = { version = "0.28", features = ["derive"] }
tokio = { version = "1.53", features = ["full"] }
tokio-rustls = { version = "0.26", default-features = false, features = ["logging", "ring", "tls12"] }
tokio-util = { version = "0.7", features = ["codec"] }
tracing = "0.1"

[patch."https://github.com/stackabletech/operator-rs.git"]
Expand Down
25 changes: 25 additions & 0 deletions rust/kafka-admin/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
[package]
name = "stackable-kafka-admin"
description = "Kafka admin client of the Stackable agent for Apache Kafka"
version.workspace = true
authors.workspace = true
license.workspace = true
edition.workspace = true
repository.workspace = true
publish = false

[dependencies]
anyhow.workspace = true
base64.workspace = true
bytes.workspace = true
futures.workspace = true
kafka-protocol.workspace = true
rustls.workspace = true
snafu.workspace = true
tokio.workspace = true
tokio-rustls.workspace = true
tokio-util.workspace = true

[dev-dependencies]
rstest.workspace = true
tokio = { workspace = true, features = ["test-util"] }
Loading
Loading