Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
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
1 change: 1 addition & 0 deletions Cargo.lock
Original file line number Diff line number Diff line change
Expand Up @@ -331,6 +331,7 @@ name = "gateway-api"
version = "0.15.0"
dependencies = [
"anyhow",
"cfg-if",
"delegate",
"hyper-util",
"k8s-openapi",
Expand Down
2 changes: 2 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ version = "0.15.0"

[workspace.dependencies]
anyhow = "1.0.98"
cfg-if = "1.0"
delegate = "0.13.3"
hyper-util = "0.1.11"
kube = { version = "0.99.0" }
Expand All @@ -25,3 +26,4 @@ tower = { version = "0.5.2", features = ["limit"] }
tracing = "0.1.41"
tracing-subscriber = "0.3.19"
uuid = { version = "1.16.0", features = ["v4", "fast-rng"] }

5 changes: 5 additions & 0 deletions gateway-api/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ schemars.workspace = true
serde_json.workspace = true
serde.workspace = true
serde_yaml.workspace = true
cfg-if.workspace = true

[dev-dependencies]
k8s-openapi = { workspace = true, features = [ "v1_32", "schemars" ] }
Expand All @@ -36,3 +37,7 @@ uuid.workspace = true

[package.metadata.docs.rs]
features = [ "k8s-openapi/v1_32" ]

[features]
default = []
experimental = []
2 changes: 0 additions & 2 deletions gateway-api/src/apis/mod.rs

This file was deleted.

14 changes: 11 additions & 3 deletions gateway-api/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,15 @@
pub mod apis;

pub mod duration;
pub use duration::Duration;
pub mod standard;
pub use standard::*;

cfg_if::cfg_if! {
if #[cfg(feature = "experimental")] {
pub mod experimental;
} else {

}
}

#[cfg(test)]
mod tests {
Expand All @@ -22,7 +30,7 @@ mod tests {
use tower::ServiceBuilder;
use uuid::Uuid;

use crate::apis::standard::{
use crate::{
constants::{
GatewayConditionReason, GatewayConditionType, ListenerConditionReason,
ListenerConditionType,
Expand Down
File renamed without changes.
46 changes: 24 additions & 22 deletions update.sh
Original file line number Diff line number Diff line change
Expand Up @@ -34,24 +34,25 @@ EXPERIMENTAL_APIS=(
udproutes
)

rm -rf gateway-api/src/apis/
rm -rf gateway-api/src/standard/
rm -rf gateway-api/src/experimental/

mkdir -p gateway-api/src/apis/
cat << EOF > gateway-api/src/apis/mod.rs
pub mod experimental;
pub mod standard;
EOF
# mkdir -p gateway-api/src/standard/
# cat << EOF > gateway-api/src/standard/mod.rs
# pub mod experimental;
# pub mod standard;
# EOF

mkdir -p gateway-api/src/apis/standard/
mkdir -p gateway-api/src/apis/experimental/
mkdir -p gateway-api/src/standard/
mkdir -p gateway-api/src/experimental/

echo "// WARNING! generated file do not edit" > gateway-api/src/apis/standard/mod.rs
echo "// WARNING! generated file do not edit" > gateway-api/src/standard/mod.rs

for API in "${STANDARD_APIS[@]}"
do
echo "generating standard api ${API}"
curl -sSL "https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/${VERSION}/config/crd/standard/gateway.networking.k8s.io_${API}.yaml" | kopium --schema=derived --derive=JsonSchema --derive=Default --derive=PartialEq --docs -f - > gateway-api/src/apis/standard/${API}.rs
echo "pub mod ${API};" >> gateway-api/src/apis/standard/mod.rs
curl -sSL "https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/${VERSION}/config/crd/standard/gateway.networking.k8s.io_${API}.yaml" | kopium --schema=derived --derive=JsonSchema --derive=Default --derive=PartialEq --docs -f - > gateway-api/src/standard/${API}.rs
echo "pub mod ${API};" >> gateway-api/src/standard/mod.rs
done

# Standard API enums that need a Default trait impl along with their respective default variant.
Expand All @@ -71,8 +72,8 @@ ENUMS_WITH_DEFAULTS=$(printf ",%s" "${ENUMS[@]}")
ENUMS_WITH_DEFAULTS=${ENUMS_WITH_DEFAULTS:1}

# The task searches for $GATEWAY_API_ENUMS in the enviornment to get the enum names and their default variants.
GATEWAY_API_ENUMS=${ENUMS_WITH_DEFAULTS} cargo xtask gen_enum_defaults >> gateway-api/src/apis/standard/enum_defaults.rs
echo "mod enum_defaults;" >> gateway-api/src/apis/standard/mod.rs
GATEWAY_API_ENUMS=${ENUMS_WITH_DEFAULTS} cargo xtask gen_enum_defaults >> gateway-api/src/standard/enum_defaults.rs
echo "mod enum_defaults;" >> gateway-api/src/standard/mod.rs

GATEWAY_CLASS_CONDITION_CONSTANTS="GatewayClassConditionType=Accepted"
GATEWAY_CLASS_REASON_CONSTANTS="GatewayClassConditionReason=Accepted,InvalidParameters,Pending,Unsupported,Waiting"
Expand All @@ -84,16 +85,16 @@ LISTENER_REASON_CONSTANTS="ListenerConditionReason=HostnameConflict,ProtocolConf
GATEWAY_CLASS_CONDITION_CONSTANTS=${GATEWAY_CLASS_CONDITION_CONSTANTS} GATEWAY_CLASS_REASON_CONSTANTS=${GATEWAY_CLASS_REASON_CONSTANTS} \
GATEWAY_CONDITION_CONSTANTS=${GATEWAY_CONDITION_CONSTANTS} GATEWAY_REASON_CONSTANTS=${GATEWAY_REASON_CONSTANTS} \
LISTENER_CONDITION_CONSTANTS=${LISTENER_CONDITION_CONSTANTS} LISTENER_REASON_CONSTANTS=${LISTENER_REASON_CONSTANTS} \
cargo xtask gen_condition_constants >> gateway-api/src/apis/standard/constants.rs
echo "pub mod constants;" >> gateway-api/src/apis/standard/mod.rs
cargo xtask gen_condition_constants >> gateway-api/src/standard/constants.rs
echo "pub mod constants;" >> gateway-api/src/standard/mod.rs

echo "// WARNING! generated file do not edit" > gateway-api/src/apis/experimental/mod.rs
echo "// WARNING! generated file do not edit" > gateway-api/src/experimental/mod.rs

for API in "${EXPERIMENTAL_APIS[@]}"
do
echo "generating experimental api $API"
curl -sSL "https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/${VERSION}/config/crd/experimental/gateway.networking.k8s.io_${API}.yaml" | kopium --schema=derived --derive=JsonSchema --derive=Default --derive=PartialEq --docs -f - > gateway-api/src/apis/experimental/${API}.rs
echo "pub mod ${API};" >> gateway-api/src/apis/experimental/mod.rs
curl -sSL "https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/${VERSION}/config/crd/experimental/gateway.networking.k8s.io_${API}.yaml" | kopium --schema=derived --derive=JsonSchema --derive=Default --derive=PartialEq --docs -f - > gateway-api/src/experimental/${API}.rs
echo "pub mod ${API};" >> gateway-api/src/experimental/mod.rs
done

# Experimental API enums that need a Default trait impl along with their respective default variant.
Expand All @@ -110,8 +111,8 @@ ENUMS=(

ENUMS_WITH_DEFAULTS=$(printf ",%s" "${ENUMS[@]}")
ENUMS_WITH_DEFAULTS=${ENUMS_WITH_DEFAULTS:1}
GATEWAY_API_ENUMS=${ENUMS_WITH_DEFAULTS} cargo xtask gen_enum_defaults >> gateway-api/src/apis/experimental/enum_defaults.rs
echo "mod enum_defaults;" >> gateway-api/src/apis/experimental/mod.rs
GATEWAY_API_ENUMS=${ENUMS_WITH_DEFAULTS} cargo xtask gen_enum_defaults >> gateway-api/src/experimental/enum_defaults.rs
echo "mod enum_defaults;" >> gateway-api/src/experimental/mod.rs

# GatewayClass conditions vary between standard and experimental
GATEWAY_CLASS_CONDITION_CONSTANTS="${GATEWAY_CLASS_CONDITION_CONSTANTS},SupportedVersion"
Expand All @@ -120,8 +121,9 @@ GATEWAY_CLASS_REASON_CONSTANTS="${GATEWAY_CLASS_REASON_CONSTANTS},SupportedVersi
GATEWAY_CLASS_CONDITION_CONSTANTS=${GATEWAY_CLASS_CONDITION_CONSTANTS} GATEWAY_CLASS_REASON_CONSTANTS=${GATEWAY_CLASS_REASON_CONSTANTS} \
GATEWAY_CONDITION_CONSTANTS=${GATEWAY_CONDITION_CONSTANTS} GATEWAY_REASON_CONSTANTS=${GATEWAY_REASON_CONSTANTS} \
LISTENER_CONDITION_CONSTANTS=${LISTENER_CONDITION_CONSTANTS} LISTENER_REASON_CONSTANTS=${LISTENER_REASON_CONSTANTS} \
cargo xtask gen_condition_constants >> gateway-api/src/apis/experimental/constants.rs
echo "pub mod constants;" >> gateway-api/src/apis/experimental/mod.rs
cargo xtask gen_condition_constants >> gateway-api/src/experimental/constants.rs
echo "pub mod constants;" >> gateway-api/src/experimental/mod.rs

# Format the code.
cargo fmt

Loading