Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
OpenDAS
dynamo
Commits
fbad2860
Unverified
Commit
fbad2860
authored
Nov 11, 2025
by
Graham King
Committed by
GitHub
Nov 11, 2025
Browse files
chore: Remove the python bindings for port allocation (#4237)
Signed-off-by:
Graham King
<
grahamk@nvidia.com
>
parent
e1af3af6
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
716 additions
and
195 deletions
+716
-195
lib/bindings/python/Cargo.lock
lib/bindings/python/Cargo.lock
+0
-3
lib/bindings/python/Cargo.toml
lib/bindings/python/Cargo.toml
+0
-3
lib/bindings/python/rust/lib.rs
lib/bindings/python/rust/lib.rs
+1
-163
lib/bindings/python/src/dynamo/_core.pyi
lib/bindings/python/src/dynamo/_core.pyi
+0
-7
lib/runtime/examples/Cargo.lock
lib/runtime/examples/Cargo.lock
+715
-19
No files found.
lib/bindings/python/Cargo.lock
View file @
fbad2860
...
...
@@ -1645,18 +1645,15 @@ dependencies = [
"dynamo-runtime",
"either",
"futures",
"local-ip-address",
"once_cell",
"parking_lot",
"prometheus",
"pyo3",
"pyo3-async-runtimes",
"pythonize",
"rand 0.9.2",
"rstest",
"serde",
"serde_json",
"socket2 0.6.0",
"thiserror 2.0.16",
"tokio",
"tokio-stream",
...
...
lib/bindings/python/Cargo.toml
View file @
fbad2860
...
...
@@ -36,11 +36,8 @@ async-trait = { version = "0.1" }
derive-getters
=
"0.5"
either
=
{
version
=
"1.13"
,
features
=
["serde"]
}
futures
=
{
version
=
"0.3"
}
local-ip-address
=
{
version
=
"0.6"
}
once_cell
=
{
version
=
"1.20.3"
}
parking_lot
=
{
version
=
"0.12.4"
}
rand
=
{
version
=
"0.9"
}
socket2
=
{
version
=
"0.6"
}
serde
=
{
version
=
"1"
}
serde_json
=
{
version
=
"1.0.138"
}
thiserror
=
{
version
=
"2.0"
}
...
...
lib/bindings/python/rust/lib.rs
View file @
fbad2860
...
...
@@ -11,13 +11,10 @@ use pyo3::exceptions::PyStopAsyncIteration;
use
pyo3
::
types
::
PyCapsule
;
use
pyo3
::
types
::{
PyDict
,
PyString
};
use
pyo3
::{
exceptions
::
PyException
,
prelude
::
*
};
use
rand
::
seq
::
IteratorRandom
as
_
;
use
rs
::
pipeline
::
network
::
Ingress
;
use
std
::
ffi
::
CString
;
use
std
::
fs
;
use
std
::
net
::{
IpAddr
,
Ipv4Addr
,
SocketAddr
,
SocketAddrV4
};
use
std
::
path
::
PathBuf
;
use
std
::
time
::
Duration
;
use
std
::{
fmt
::
Display
,
sync
::{
Arc
,
Weak
},
...
...
@@ -312,7 +309,7 @@ fn register_llm<'p>(
.media_fetcher
(
media_fetcher
.map
(|
m
|
m
.inner
));
// Load the ModelDeploymentCard
let
mut
local_model
=
builder
.build
()
.await
.map_err
(
to_pyerr
)
?
;
// Advertise ourself
on etcd
so ingress can find us
// Advertise ourself so ingress can find us
local_model
.attach
(
&
endpoint
.inner
,
model_type_obj
,
model_input
)
.await
...
...
@@ -497,138 +494,6 @@ impl DistributedRuntime {
})
}
/// Allocate a contiguous block of ports from the specified range and atomically reserve them.
/// Returns a list of all allocated ports in order.
#[pyo3(signature
=
(namespace,
port_min,
port_max,
block_size,
context=None))]
fn
allocate_port_block
<
'p
>
(
&
self
,
py
:
Python
<
'p
>
,
namespace
:
&
str
,
port_min
:
u16
,
port_max
:
u16
,
block_size
:
u16
,
context
:
Option
<
String
>
,
// Optional info to store alongside the reservation
)
->
PyResult
<
Bound
<
'p
,
PyAny
>>
{
const
MAX_ALLOCATE_ATTEMPTS
:
usize
=
100
;
if
block_size
==
0
{
return
Err
(
PyErr
::
new
::
<
pyo3
::
exceptions
::
PyValueError
,
_
>
(
"Block size must be at least 1"
,
));
}
let
Some
(
etcd_client
)
=
self
.inner
.etcd_client
()
else
{
return
Err
(
PyErr
::
new
::
<
PyException
,
_
>
(
"Static workers should not need to reserve ports"
,
));
};
let
min
=
port_min
;
let
max
=
port_max
;
// Compute maximum valid starting port (inclusive)
let
max_start_port
=
max
.saturating_sub
(
block_size
.saturating_sub
(
1
));
if
max_start_port
<
min
{
return
Err
(
PyErr
::
new
::
<
PyException
,
_
>
(
format!
(
"Port range {min}-{max} is too small for block size {block_size}"
,
)));
}
// Randomize candidate starting ports to reduce contention/races
let
candidate_count
=
(
max_start_port
-
port_min
+
1
)
.min
(
MAX_ALLOCATE_ATTEMPTS
as
u16
)
as
usize
;
let
mut
rng
=
rand
::
rng
();
let
candidate_ports
:
Vec
<
u16
>
=
(
port_min
..=
max_start_port
)
.choose_multiple
(
&
mut
rng
,
candidate_count
);
let
local_ip
=
match
local_ip
()
{
Ok
(
ip
)
=>
ip
,
Err
(
err
)
=>
{
return
Err
(
PyErr
::
new
::
<
PyException
,
_
>
(
format!
(
"Failed fetching local IP address: {err}"
)));
}
};
let
context_bytes
=
context
.map
(|
s
|
s
.as_bytes
()
.to_vec
())
.unwrap_or_default
();
let
namespace
=
namespace
.to_owned
();
pyo3_async_runtimes
::
tokio
::
future_into_py
(
py
,
async
move
{
for
(
attempt_idx
,
start_port
)
in
candidate_ports
.into_iter
()
.enumerate
()
{
let
end_port_exclusive
=
start_port
+
block_size
;
let
ports_to_reserve
:
Vec
<
u16
>
=
(
start_port
..
end_port_exclusive
)
.collect
();
// Hold/bind all ports in the block
let
mut
sockets
=
Vec
::
with_capacity
(
ports_to_reserve
.len
());
let
mut
bind_failed
=
false
;
for
&
port
in
&
ports_to_reserve
{
match
bind_tcp_port
(
port
)
{
Ok
(
sock
)
=>
sockets
.push
(
sock
),
Err
(
e
)
=>
{
tracing
::
error!
(
"Failed to bind to port block starting at {start_port} (attempt {}): {e}"
,
attempt_idx
+
1
,
);
bind_failed
=
true
;
break
;
}
}
}
if
bind_failed
{
// Let previously bound sockets drop here
if
attempt_idx
<
candidate_count
-
1
{
tokio
::
time
::
sleep
(
Duration
::
from_millis
(
10
))
.await
;
}
continue
;
}
// With sockets held, reserve in ETCD
let
mut
reserved_keys
=
Vec
::
with_capacity
(
ports_to_reserve
.len
());
let
mut
reservation_failed
=
false
;
for
port
in
&
ports_to_reserve
{
let
key
=
make_port_key
(
&
namespace
,
local_ip
,
*
port
)
.map_err
(
to_pyerr
)
?
;
if
let
Err
(
e
)
=
etcd_client
.kv_create
(
&
key
,
context_bytes
.clone
(),
None
)
.await
{
tracing
::
error!
(
"Failed to reserve port block starting at {start_port} (attempt {}): {e}"
,
attempt_idx
+
1
,
);
reservation_failed
=
true
;
break
;
}
reserved_keys
.push
(
key
);
}
if
reservation_failed
{
// Cleanup partial reservations
for
key
in
reserved_keys
{
if
let
Err
(
e
)
=
etcd_client
.kv_delete
(
key
.as_str
(),
None
)
.await
{
tracing
::
warn!
(
"Failed to cleanup reserved port {key}: {e}"
);
}
}
// Sockets automatically released via RAII
if
attempt_idx
<
candidate_count
-
1
{
tokio
::
time
::
sleep
(
Duration
::
from_millis
(
10
))
.await
;
}
continue
;
}
// Success - sockets will be released automatically
tracing
::
debug!
(
"Reserved port block {ports_to_reserve:?}"
);
return
Ok
(
ports_to_reserve
);
}
Err
(
PyErr
::
new
::
<
PyException
,
_
>
(
format!
(
"Failed to allocate and reserve a port block of size {block_size} from range {min}-{max} after {candidate_count} attempts"
)))
})
}
fn
shutdown
(
&
self
)
{
self
.inner
.shutdown
();
}
...
...
@@ -658,33 +523,6 @@ impl DistributedRuntime {
}
}
// Bind a TCP port and return a socket held until dropped.
fn
bind_tcp_port
(
port
:
u16
)
->
std
::
io
::
Result
<
socket2
::
Socket
>
{
let
sock
=
socket2
::
Socket
::
new
(
socket2
::
Domain
::
IPV4
,
socket2
::
Type
::
STREAM
,
Some
(
socket2
::
Protocol
::
TCP
),
)
?
;
sock
.set_reuse_address
(
true
)
?
;
let
addr
=
SocketAddr
::
V4
(
SocketAddrV4
::
new
(
Ipv4Addr
::
UNSPECIFIED
,
port
));
sock
.bind
(
&
addr
.into
())
?
;
Ok
(
sock
)
}
fn
make_port_key
(
namespace
:
&
str
,
node_ip
:
IpAddr
,
port
:
u16
)
->
anyhow
::
Result
<
String
>
{
Ok
(
format!
(
"v1/{namespace}/ports/{node_ip}/{port}"
))
}
fn
local_ip
()
->
Result
<
IpAddr
,
local_ip_address
::
Error
>
{
local_ip_address
::
local_ip
()
.or_else
(|
err
|
match
err
{
local_ip_address
::
Error
::
LocalIpAddressNotFound
=>
{
// Fall back to IPv6 if no IPv4 addresses are found
local_ip_address
::
local_ipv6
()
}
_
=>
Err
(
err
),
})
}
#[pymethods]
impl
CancellationToken
{
fn
cancel
(
&
self
)
{
...
...
lib/bindings/python/src/dynamo/_core.pyi
View file @
fbad2860
...
...
@@ -45,13 +45,6 @@ class DistributedRuntime:
"""
...
def allocate_port_block(self, namespace, port_min, port_max, block_size, context=None) -> List[int]:
"""
Allocate a contiguous block of ports from the specified range and atomically reserve them.
Returns a list of all allocated ports in order.
"""
...
def shutdown(self) -> None:
"""
Shutdown the runtime by triggering the cancellation token
...
...
lib/runtime/examples/Cargo.lock
View file @
fbad2860
...
...
@@ -17,6 +17,19 @@ version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627"
[[package]]
name = "ahash"
version = "0.8.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75"
dependencies = [
"cfg-if 1.0.0",
"getrandom 0.3.2",
"once_cell",
"version_check",
"zerocopy",
]
[[package]]
name = "aho-corasick"
version = "1.1.3"
...
...
@@ -26,6 +39,12 @@ dependencies = [
"memchr",
]
[[package]]
name = "allocator-api2"
version = "0.2.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923"
[[package]]
name = "android-tzdata"
version = "0.1.1"
...
...
@@ -65,6 +84,18 @@ version = "0.7.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50"
[[package]]
name = "async-broadcast"
version = "0.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532"
dependencies = [
"event-listener",
"event-listener-strategy",
"futures-core",
"pin-project-lite",
]
[[package]]
name = "async-nats"
version = "0.40.0"
...
...
@@ -83,7 +114,7 @@ dependencies = [
"rand 0.8.5",
"regex",
"ring",
"rustls-native-certs",
"rustls-native-certs
0.7.3
",
"rustls-pemfile",
"rustls-webpki 0.102.8",
"serde",
...
...
@@ -175,6 +206,29 @@ version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"
[[package]]
name = "aws-lc-rs"
version = "1.14.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "879b6c89592deb404ba4dc0ae6b58ffd1795c78991cbb5b8bc441c48a070440d"
dependencies = [
"aws-lc-sys",
"zeroize",
]
[[package]]
name = "aws-lc-sys"
version = "0.32.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "107a4e9d9cab9963e04e84bb8dee0e25f2a987f9a8bad5ed054abd439caa8f8c"
dependencies = [
"bindgen",
"cc",
"cmake",
"dunce",
"fs_extra",
]
[[package]]
name = "axum"
version = "0.8.4"
...
...
@@ -241,6 +295,17 @@ dependencies = [
"syn 2.0.100",
]
[[package]]
name = "backon"
version = "1.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cffb0e931875b666fc4fcb20fee52e9bbd1ef836fd9e9e04ec21555f9f85f7ef"
dependencies = [
"fastrand",
"gloo-timers",
"tokio",
]
[[package]]
name = "backtrace"
version = "0.3.74"
...
...
@@ -277,6 +342,26 @@ dependencies = [
"serde",
]
[[package]]
name = "bindgen"
version = "0.72.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895"
dependencies = [
"bitflags 2.9.0",
"cexpr",
"clang-sys",
"itertools 0.13.0",
"log",
"prettyplease",
"proc-macro2",
"quote",
"regex",
"rustc-hash",
"shlex",
"syn 2.0.100",
]
[[package]]
name = "bitflags"
version = "1.3.2"
...
...
@@ -340,15 +425,25 @@ dependencies = [
[[package]]
name = "cc"
version = "1.2.
20
"
version = "1.2.
45
"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "
04da6a0d40b948dfc4fa8f5bbf402b0fc1a64a28dbf7d12ffd683550f2c1b63a
"
checksum = "
35900b6c8d709fb1d854671ae27aeaa9eec2f8b01b364e1619a40da3e6fe2afe
"
dependencies = [
"find-msvc-tools",
"jobserver",
"libc",
"shlex",
]
[[package]]
name = "cexpr"
version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766"
dependencies = [
"nom",
]
[[package]]
name = "cfg-expr"
version = "0.15.8"
...
...
@@ -390,6 +485,35 @@ dependencies = [
"windows-link 0.1.1",
]
[[package]]
name = "clang-sys"
version = "1.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4"
dependencies = [
"glob",
"libc",
"libloading",
]
[[package]]
name = "cmake"
version = "0.1.54"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e7caa3f9de89ddbe2c607f4101924c5abec803763ae9534e4f4d7d8f84aa81f0"
dependencies = [
"cc",
]
[[package]]
name = "concurrent-queue"
version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973"
dependencies = [
"crossbeam-utils",
]
[[package]]
name = "const-oid"
version = "0.9.6"
...
...
@@ -412,6 +536,16 @@ dependencies = [
"libc",
]
[[package]]
name = "core-foundation"
version = "0.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6"
dependencies = [
"core-foundation-sys",
"libc",
]
[[package]]
name = "core-foundation-sys"
version = "0.8.7"
...
...
@@ -525,8 +659,18 @@ version = "0.20.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee"
dependencies = [
"darling_core",
"darling_macro",
"darling_core 0.20.11",
"darling_macro 0.20.11",
]
[[package]]
name = "darling"
version = "0.21.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0"
dependencies = [
"darling_core 0.21.3",
"darling_macro 0.21.3",
]
[[package]]
...
...
@@ -543,13 +687,38 @@ dependencies = [
"syn 2.0.100",
]
[[package]]
name = "darling_core"
version = "0.21.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4"
dependencies = [
"fnv",
"ident_case",
"proc-macro2",
"quote",
"strsim",
"syn 2.0.100",
]
[[package]]
name = "darling_macro"
version = "0.20.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead"
dependencies = [
"darling_core",
"darling_core 0.20.11",
"quote",
"syn 2.0.100",
]
[[package]]
name = "darling_macro"
version = "0.21.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81"
dependencies = [
"darling_core 0.21.3",
"quote",
"syn 2.0.100",
]
...
...
@@ -607,7 +776,7 @@ version = "0.20.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2d5bcf7b024d6835cfb3d473887cd966994907effbe9227e8c8219824d06c4e8"
dependencies = [
"darling",
"darling
0.20.11
",
"proc-macro2",
"quote",
"syn 2.0.100",
...
...
@@ -623,6 +792,26 @@ dependencies = [
"syn 2.0.100",
]
[[package]]
name = "derive_more"
version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678"
dependencies = [
"derive_more-impl",
]
[[package]]
name = "derive_more-impl"
version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.100",
]
[[package]]
name = "digest"
version = "0.10.7"
...
...
@@ -655,6 +844,18 @@ dependencies = [
"syn 2.0.100",
]
[[package]]
name = "dunce"
version = "1.0.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813"
[[package]]
name = "dyn-clone"
version = "1.0.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555"
[[package]]
name = "dynamo-runtime"
version = "0.7.0"
...
...
@@ -680,6 +881,8 @@ dependencies = [
"futures",
"humantime",
"inotify",
"k8s-openapi",
"kube",
"local-ip-address",
"log",
"nid",
...
...
@@ -694,6 +897,7 @@ dependencies = [
"rand 0.9.1",
"rayon",
"regex",
"reqwest",
"serde",
"serde_json",
"socket2",
...
...
@@ -807,6 +1011,27 @@ dependencies = [
"tower-service",
]
[[package]]
name = "event-listener"
version = "5.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab"
dependencies = [
"concurrent-queue",
"parking",
"pin-project-lite",
]
[[package]]
name = "event-listener-strategy"
version = "0.5.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93"
dependencies = [
"event-listener",
"pin-project-lite",
]
[[package]]
name = "fastrand"
version = "2.3.0"
...
...
@@ -836,6 +1061,12 @@ dependencies = [
"version_check",
]
[[package]]
name = "find-msvc-tools"
version = "0.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "52051878f80a721bb68ebfbc930e07b65ba72f2da88968ea5c06fd6ca3d3a127"
[[package]]
name = "fixedbitset"
version = "0.5.7"
...
...
@@ -848,6 +1079,12 @@ version = "1.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
[[package]]
name = "foldhash"
version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2"
[[package]]
name = "form_urlencoded"
version = "1.2.1"
...
...
@@ -857,6 +1094,12 @@ dependencies = [
"percent-encoding",
]
[[package]]
name = "fs_extra"
version = "1.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c"
[[package]]
name = "fuchsia-zircon"
version = "0.3.3"
...
...
@@ -1005,6 +1248,24 @@ version = "0.31.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f"
[[package]]
name = "glob"
version = "0.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280"
[[package]]
name = "gloo-timers"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bbb143cf96099802033e0d4f4963b19fd2e0b728bcf076cd9cf7f6634f092994"
dependencies = [
"futures-channel",
"futures-core",
"js-sys",
"wasm-bindgen",
]
[[package]]
name = "h2"
version = "0.4.9"
...
...
@@ -1029,6 +1290,11 @@ name = "hashbrown"
version = "0.15.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289"
dependencies = [
"allocator-api2",
"equivalent",
"foldhash",
]
[[package]]
name = "heck"
...
...
@@ -1044,6 +1310,26 @@ dependencies = [
"dynamo-runtime",
]
[[package]]
name = "home"
version = "0.5.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d"
dependencies = [
"windows-sys 0.61.2",
]
[[package]]
name = "hostname"
version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a56f203cd1c76362b69e3863fd987520ac36cf70a8c92627449b2f64a8cf7d65"
dependencies = [
"cfg-if 1.0.0",
"libc",
"windows-link 0.1.1",
]
[[package]]
name = "http"
version = "1.3.1"
...
...
@@ -1126,7 +1412,9 @@ dependencies = [
"http",
"hyper",
"hyper-util",
"log",
"rustls",
"rustls-native-certs 0.8.2",
"rustls-pki-types",
"tokio",
"tokio-rustls",
...
...
@@ -1403,6 +1691,15 @@ dependencies = [
"serde",
]
[[package]]
name = "itertools"
version = "0.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186"
dependencies = [
"either",
]
[[package]]
name = "itertools"
version = "0.14.0"
...
...
@@ -1438,6 +1735,41 @@ dependencies = [
"wasm-bindgen",
]
[[package]]
name = "json-patch"
version = "4.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f300e415e2134745ef75f04562dd0145405c2f7fd92065db029ac4b16b57fe90"
dependencies = [
"jsonptr",
"serde",
"serde_json",
"thiserror 1.0.69",
]
[[package]]
name = "jsonpath-rust"
version = "0.7.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0c00ae348f9f8fd2d09f82a98ca381c60df9e0820d8d79fce43e649b4dc3128b"
dependencies = [
"pest",
"pest_derive",
"regex",
"serde_json",
"thiserror 2.0.12",
]
[[package]]
name = "jsonptr"
version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a5a3cc660ba5d72bce0b3bb295bf20847ccbb40fd423f3f05b61273672e561fe"
dependencies = [
"serde",
"serde_json",
]
[[package]]
name = "jwalk"
version = "0.8.1"
...
...
@@ -1448,6 +1780,18 @@ dependencies = [
"rayon",
]
[[package]]
name = "k8s-openapi"
version = "0.26.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d13f06d5326a915becaffabdfab75051b8cdc260c2a5c06c0e90226ede89a692"
dependencies = [
"base64",
"chrono",
"serde",
"serde_json",
]
[[package]]
name = "kernel32-sys"
version = "0.2.2"
...
...
@@ -1458,6 +1802,115 @@ dependencies = [
"winapi-build",
]
[[package]]
name = "kube"
version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "48e7bb0b6a46502cc20e4575b6ff401af45cfea150b34ba272a3410b78aa014e"
dependencies = [
"k8s-openapi",
"kube-client",
"kube-core",
"kube-derive",
"kube-runtime",
]
[[package]]
name = "kube-client"
version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4987d57a184d2b5294fdad3d7fc7f278899469d21a4da39a8f6ca16426567a36"
dependencies = [
"base64",
"bytes",
"chrono",
"either",
"futures",
"home",
"http",
"http-body",
"http-body-util",
"hyper",
"hyper-rustls",
"hyper-timeout",
"hyper-util",
"jsonpath-rust",
"k8s-openapi",
"kube-core",
"pem",
"rustls",
"secrecy",
"serde",
"serde_json",
"serde_yaml",
"thiserror 2.0.12",
"tokio",
"tokio-util",
"tower",
"tower-http",
"tracing",
]
[[package]]
name = "kube-core"
version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "914bbb770e7bb721a06e3538c0edd2babed46447d128f7c21caa68747060ee73"
dependencies = [
"chrono",
"derive_more",
"form_urlencoded",
"http",
"json-patch",
"k8s-openapi",
"schemars",
"serde",
"serde-value",
"serde_json",
"thiserror 2.0.12",
]
[[package]]
name = "kube-derive"
version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "03dee8252be137772a6ab3508b81cd797dee62ee771112a2453bc85cbbe150d2"
dependencies = [
"darling 0.21.3",
"proc-macro2",
"quote",
"serde",
"serde_json",
"syn 2.0.100",
]
[[package]]
name = "kube-runtime"
version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6aea4de4b562c5cc89ab10300bb63474ae1fa57ff5a19275f2e26401a323e3fd"
dependencies = [
"ahash",
"async-broadcast",
"async-stream",
"backon",
"educe",
"futures",
"hashbrown",
"hostname",
"json-patch",
"k8s-openapi",
"kube-client",
"parking_lot",
"pin-project",
"serde",
"serde_json",
"thiserror 2.0.12",
"tokio",
"tokio-util",
"tracing",
]
[[package]]
name = "lazy_static"
version = "1.5.0"
...
...
@@ -1470,6 +1923,16 @@ version = "0.2.172"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa"
[[package]]
name = "libloading"
version = "0.8.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55"
dependencies = [
"cfg-if 1.0.0",
"windows-link 0.2.1",
]
[[package]]
name = "linux-raw-sys"
version = "0.9.4"
...
...
@@ -1542,6 +2005,12 @@ version = "0.3.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
[[package]]
name = "minimal-lexical"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
[[package]]
name = "miniz_oxide"
version = "0.8.8"
...
...
@@ -1673,6 +2142,16 @@ dependencies = [
"signatory",
]
[[package]]
name = "nom"
version = "7.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
dependencies = [
"memchr",
"minimal-lexical",
]
[[package]]
name = "nu-ansi-term"
version = "0.46.0"
...
...
@@ -1813,12 +2292,27 @@ dependencies = [
"tokio-stream",
]
[[package]]
name = "ordered-float"
version = "2.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "68f19d67e5a2795c94e73e0bb1cc1a7edeb2e28efd39e2e1c9b7a40c1108b11c"
dependencies = [
"num-traits",
]
[[package]]
name = "overload"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
[[package]]
name = "parking"
version = "2.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba"
[[package]]
name = "parking_lot"
version = "0.12.5"
...
...
@@ -1865,6 +2359,16 @@ dependencies = [
"syn 2.0.100",
]
[[package]]
name = "pem"
version = "3.0.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1d30c53c26bc5b31a98cd02d20f25a7c8567146caf63ed593a9d87b2775291be"
dependencies = [
"base64",
"serde_core",
]
[[package]]
name = "pem-rfc7468"
version = "0.7.0"
...
...
@@ -1880,6 +2384,49 @@ version = "2.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
[[package]]
name = "pest"
version = "2.8.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "989e7521a040efde50c3ab6bbadafbe15ab6dc042686926be59ac35d74607df4"
dependencies = [
"memchr",
"ucd-trie",
]
[[package]]
name = "pest_derive"
version = "2.8.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "187da9a3030dbafabbbfb20cb323b976dc7b7ce91fcd84f2f74d6e31d378e2de"
dependencies = [
"pest",
"pest_generator",
]
[[package]]
name = "pest_generator"
version = "2.8.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "49b401d98f5757ebe97a26085998d6c0eecec4995cad6ab7fc30ffdf4b052843"
dependencies = [
"pest",
"pest_meta",
"proc-macro2",
"quote",
"syn 2.0.100",
]
[[package]]
name = "pest_meta"
version = "2.8.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "72f27a2cfee9f9039c4d86faa5af122a0ac3851441a34865b8a043b46be0065a"
dependencies = [
"pest",
"sha2",
]
[[package]]
name = "petgraph"
version = "0.7.1"
...
...
@@ -2055,7 +2602,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "be769465445e8c1474e9c5dac2018218498557af32d9ed057325ec9a41ae81bf"
dependencies = [
"heck",
"itertools",
"itertools
0.14.0
",
"log",
"multimap",
"once_cell",
...
...
@@ -2075,7 +2622,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d"
dependencies = [
"anyhow",
"itertools",
"itertools
0.14.0
",
"proc-macro2",
"quote",
"syn 2.0.100",
...
...
@@ -2088,7 +2635,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9120690fafc389a67ba3803df527d0ec9cbbc9cc45e4cc20b332996dfb672425"
dependencies = [
"anyhow",
"itertools",
"itertools
0.14.0
",
"proc-macro2",
"quote",
"syn 2.0.100",
...
...
@@ -2281,6 +2828,26 @@ dependencies = [
"bitflags 2.9.0",
]
[[package]]
name = "ref-cast"
version = "1.0.25"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d"
dependencies = [
"ref-cast-impl",
]
[[package]]
name = "ref-cast-impl"
version = "1.0.25"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.100",
]
[[package]]
name = "regex"
version = "1.11.1"
...
...
@@ -2421,6 +2988,7 @@ version = "0.23.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "df51b5869f3a441595eac5e8ff14d486ff285f7b8c0df8770e49c3b56351f0f0"
dependencies = [
"aws-lc-rs",
"log",
"once_cell",
"ring",
...
...
@@ -2440,7 +3008,19 @@ dependencies = [
"rustls-pemfile",
"rustls-pki-types",
"schannel",
"security-framework",
"security-framework 2.11.1",
]
[[package]]
name = "rustls-native-certs"
version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9980d917ebb0c0536119ba501e90834767bffc3d60641457fd84a1f3fd337923"
dependencies = [
"openssl-probe",
"rustls-pki-types",
"schannel",
"security-framework 3.5.1",
]
[[package]]
...
...
@@ -2477,6 +3057,7 @@ version = "0.103.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fef8b8769aaccf73098557a87cd1816b4f9c7c16811c9c77142aa695c16f2c03"
dependencies = [
"aws-lc-rs",
"ring",
"rustls-pki-types",
"untrusted",
...
...
@@ -2512,12 +3093,46 @@ dependencies = [
"windows-sys 0.59.0",
]
[[package]]
name = "schemars"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9558e172d4e8533736ba97870c4b2cd63f84b382a3d6eb063da41b91cce17289"
dependencies = [
"dyn-clone",
"ref-cast",
"schemars_derive",
"serde",
"serde_json",
]
[[package]]
name = "schemars_derive"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "301858a4023d78debd2353c7426dc486001bddc91ae31a76fb1f55132f7e2633"
dependencies = [
"proc-macro2",
"quote",
"serde_derive_internals",
"syn 2.0.100",
]
[[package]]
name = "scopeguard"
version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
[[package]]
name = "secrecy"
version = "0.10.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e891af845473308773346dc847b2c23ee78fe442e0472ac50e22a18a93d3ae5a"
dependencies = [
"zeroize",
]
[[package]]
name = "security-framework"
version = "2.11.1"
...
...
@@ -2525,7 +3140,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02"
dependencies = [
"bitflags 2.9.0",
"core-foundation",
"core-foundation 0.9.4",
"core-foundation-sys",
"libc",
"security-framework-sys",
]
[[package]]
name = "security-framework"
version = "3.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b3297343eaf830f66ede390ea39da1d462b6b0c1b000f420d0a83f898bbbe6ef"
dependencies = [
"bitflags 2.9.0",
"core-foundation 0.10.1",
"core-foundation-sys",
"libc",
"security-framework-sys",
...
...
@@ -2533,9 +3161,9 @@ dependencies = [
[[package]]
name = "security-framework-sys"
version = "2.1
4
.0"
version = "2.1
5
.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "
49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32
"
checksum = "
cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0
"
dependencies = [
"core-foundation-sys",
"libc",
...
...
@@ -2549,18 +3177,49 @@ checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0"
[[package]]
name = "serde"
version = "1.0.2
19
"
version = "1.0.2
28
"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6"
checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"
dependencies = [
"serde_core",
"serde_derive",
]
[[package]]
name = "serde-value"
version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c"
dependencies = [
"ordered-float",
"serde",
]
[[package]]
name = "serde_core"
version = "1.0.228"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
version = "1.0.219"
version = "1.0.228"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.100",
]
[[package]]
name = "serde_derive_internals"
version = "0.29.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "
5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00
"
checksum = "
18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711
"
dependencies = [
"proc-macro2",
"quote",
...
...
@@ -2630,6 +3289,19 @@ dependencies = [
"serde",
]
[[package]]
name = "serde_yaml"
version = "0.9.34+deprecated"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47"
dependencies = [
"indexmap",
"itoa",
"ryu",
"serde",
"unsafe-libyaml",
]
[[package]]
name = "service_metrics"
version = "0.7.0"
...
...
@@ -3035,6 +3707,7 @@ dependencies = [
"futures-util",
"hashbrown",
"pin-project-lite",
"slab",
"tokio",
]
...
...
@@ -3206,12 +3879,14 @@ version = "0.6.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2"
dependencies = [
"base64",
"bitflags 2.9.0",
"bytes",
"futures-util",
"http",
"http-body",
"iri-string",
"mime",
"pin-project-lite",
"tower",
"tower-layer",
...
...
@@ -3349,6 +4024,12 @@ version = "1.18.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f"
[[package]]
name = "ucd-trie"
version = "0.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971"
[[package]]
name = "uncased"
version = "0.9.10"
...
...
@@ -3364,6 +4045,12 @@ version = "1.0.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512"
[[package]]
name = "unsafe-libyaml"
version = "0.2.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861"
[[package]]
name = "untrusted"
version = "0.9.0"
...
...
@@ -3428,7 +4115,7 @@ version = "0.20.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b7df16e474ef958526d1205f6dda359fdfab79d9aa6d54bafcb92dcd07673dca"
dependencies = [
"darling",
"darling
0.20.11
",
"once_cell",
"proc-macro-error2",
"proc-macro2",
...
...
@@ -3736,6 +4423,15 @@ dependencies = [
"windows-targets",
]
[[package]]
name = "windows-sys"
version = "0.61.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc"
dependencies = [
"windows-link 0.2.1",
]
[[package]]
name = "windows-targets"
version = "0.52.6"
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment