-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathCargo.toml
More file actions
119 lines (106 loc) · 4.04 KB
/
Copy pathCargo.toml
File metadata and controls
119 lines (106 loc) · 4.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
[package]
name = "five_spot"
version = "0.3.0"
edition = "2021"
rust-version = "1.90"
authors = ["Erick Bourgeois<erick.bourgeois@rbccm.com>"]
description = "A cloud-native Kubernetes controller for managing machine scheduling on physical nodes"
license = "Apache-2.0"
repository = "https://github.com/RBC/5-spot"
[[bin]]
name = "5spot"
path = "src/main.rs"
[[bin]]
name = "crdgen"
path = "src/bin/crdgen.rs"
[[bin]]
name = "crddoc"
path = "src/bin/crddoc.rs"
[[bin]]
name = "auto-vex-presence"
path = "src/bin/auto_vex_presence.rs"
[[bin]]
name = "auto-vex-reachability"
path = "src/bin/auto_vex_reachability.rs"
# First-party spot-schedule providers (ADR 0009). Declared explicitly so the binary
# names are hyphenated (matching the `command:` in their deploy manifests) rather than
# the auto-discovered underscore names. Shipped IN the main 5-Spot image.
[[bin]]
name = "spot-schedule-time-based"
path = "src/bin/spot_schedule_time_based.rs"
[[bin]]
name = "spot-schedule-capital-markets"
path = "src/bin/spot_schedule_capital_markets.rs"
[dependencies]
# `unstable-runtime` is opt-in for `Controller::reconcile_on`, which we
# use in main.rs to feed per-child-cluster Node-watch events into the
# Controller. The feature is "unstable" in the SemVer sense (the API
# may change between minor kube-runtime versions) but is the canonical
# way to push external triggers into the controller loop.
kube = { version = "3.1", features = ["runtime", "derive", "client", "ws", "unstable-runtime"] }
kube-lease-manager = "0.12"
k8s-openapi = { version = "0.27", features = ["latest", "schemars"] }
tokio = { version = "1", features = ["full"] }
# `ReceiverStream` adapter so an `mpsc::Receiver<ObjectRef<…>>` can be
# fed into `Controller::reconcile_on`. Used by main.rs to plumb
# child-cluster Node-watch events back into the controller.
tokio-stream = "0.1"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
serde_yaml = "0.9"
anyhow = "1"
thiserror = "2"
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter", "json"] }
chrono = { version = "0.4", features = ["serde"] }
chrono-tz = "0.10"
schemars = "1"
futures = "0.3"
async-trait = "0.1"
clap = { version = "4", features = ["derive", "env"] }
prometheus = { version = "0.14", features = ["process"] }
hyper = { version = "1", features = ["full"] }
hyper-util = { version = "0.1", features = ["full"] }
http-body-util = "0.1"
# Canonical HTTP status codes (used in src/constants.rs to name the Kubernetes
# API error statuses we branch on, instead of hardcoding 404/409/429).
http = "1"
tower = "0.5"
regex = "1"
lazy_static = "1.5"
# warp 0.4 made every previously-default feature opt-in. We use
# `warp::serve` for the metrics + health/readiness HTTP servers
# (src/main.rs and src/health.rs), so the `server` feature must be
# enabled explicitly.
warp = { version = "0.4", default-features = false, features = ["server"] }
toml = "1.1"
# SHA-256 for the kata-config agent's content/drift hashing and (Phase 4)
# the applied-hash node annotation. RustCrypto, pure-Rust, no system deps.
sha2 = "0.11"
# Linux-only — used by the reclaim-agent's rung 2 netlink proc connector
# subscriber (`src/netlink_proc.rs`). The portable byte parsers in that
# module have no `nix` dep; only the actual socket / bind / send / recv
# dance does. Non-Linux builds compile the module's `Subscriber::new` to
# a stub that returns `NetlinkError::Unsupported`.
[target.'cfg(target_os = "linux")'.dependencies]
nix = { version = "0.31", default-features = false, features = ["socket", "net", "uio"] }
[[bin]]
name = "5spot-reclaim-agent"
path = "src/bin/reclaim_agent.rs"
[[bin]]
name = "5spot-kata-config-agent"
path = "src/bin/kata_config_agent.rs"
[dev-dependencies]
tokio-test = "0.4"
mockall = "0.14"
test-log = "0.2"
tempfile = "3"
tower-test = "0.4"
# Used by src/reconcilers/child_client_tests.rs to build base64-encoded
# Secret payloads for the tower-test mock server. base64 0.22 is already
# in the dependency graph transitively (kube / k8s-openapi pull it).
base64 = "0.22"
[profile.release]
opt-level = 3
lto = true
codegen-units = 1