From 57f6478665e0f9aa78475d1a35ede7341ff54c14 Mon Sep 17 00:00:00 2001 From: Dawid Nowak Date: Sun, 27 Apr 2025 17:48:31 +0100 Subject: [PATCH 1/3] Pulling standard APIs up and hiding experimental apis behind a feature flag Signed-off-by: Dawid Nowak --- Cargo.lock | 1 + Cargo.toml | 2 + gateway-api/Cargo.toml | 5 ++ gateway-api/src/apis/mod.rs | 2 - .../src/{apis => }/experimental/constants.rs | 0 .../{apis => }/experimental/enum_defaults.rs | 0 .../{apis => }/experimental/gatewayclasses.rs | 0 .../src/{apis => }/experimental/gateways.rs | 0 .../src/{apis => }/experimental/grpcroutes.rs | 0 .../src/{apis => }/experimental/httproutes.rs | 0 .../src/{apis => }/experimental/mod.rs | 0 .../experimental/referencegrants.rs | 0 .../src/{apis => }/experimental/tcproutes.rs | 0 .../src/{apis => }/experimental/tlsroutes.rs | 0 .../src/{apis => }/experimental/udproutes.rs | 0 gateway-api/src/lib.rs | 14 ++++-- .../src/{apis => }/standard/constants.rs | 0 .../src/{apis => }/standard/enum_defaults.rs | 0 .../src/{apis => }/standard/gatewayclasses.rs | 0 .../src/{apis => }/standard/gateways.rs | 0 .../src/{apis => }/standard/grpcroutes.rs | 0 .../src/{apis => }/standard/httproutes.rs | 0 gateway-api/src/{apis => }/standard/mod.rs | 0 .../{apis => }/standard/referencegrants.rs | 0 update.sh | 46 ++++++++++--------- 25 files changed, 43 insertions(+), 27 deletions(-) delete mode 100644 gateway-api/src/apis/mod.rs rename gateway-api/src/{apis => }/experimental/constants.rs (100%) rename gateway-api/src/{apis => }/experimental/enum_defaults.rs (100%) rename gateway-api/src/{apis => }/experimental/gatewayclasses.rs (100%) rename gateway-api/src/{apis => }/experimental/gateways.rs (100%) rename gateway-api/src/{apis => }/experimental/grpcroutes.rs (100%) rename gateway-api/src/{apis => }/experimental/httproutes.rs (100%) rename gateway-api/src/{apis => }/experimental/mod.rs (100%) rename gateway-api/src/{apis => }/experimental/referencegrants.rs (100%) rename gateway-api/src/{apis => }/experimental/tcproutes.rs (100%) rename gateway-api/src/{apis => }/experimental/tlsroutes.rs (100%) rename gateway-api/src/{apis => }/experimental/udproutes.rs (100%) rename gateway-api/src/{apis => }/standard/constants.rs (100%) rename gateway-api/src/{apis => }/standard/enum_defaults.rs (100%) rename gateway-api/src/{apis => }/standard/gatewayclasses.rs (100%) rename gateway-api/src/{apis => }/standard/gateways.rs (100%) rename gateway-api/src/{apis => }/standard/grpcroutes.rs (100%) rename gateway-api/src/{apis => }/standard/httproutes.rs (100%) rename gateway-api/src/{apis => }/standard/mod.rs (100%) rename gateway-api/src/{apis => }/standard/referencegrants.rs (100%) diff --git a/Cargo.lock b/Cargo.lock index 0b937e3..feee2b5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -331,6 +331,7 @@ name = "gateway-api" version = "0.15.0" dependencies = [ "anyhow", + "cfg-if", "delegate", "hyper-util", "k8s-openapi", diff --git a/Cargo.toml b/Cargo.toml index cb23be1..4580ec5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -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" } @@ -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"] } + diff --git a/gateway-api/Cargo.toml b/gateway-api/Cargo.toml index 7fa30cb..375c9b5 100644 --- a/gateway-api/Cargo.toml +++ b/gateway-api/Cargo.toml @@ -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" ] } @@ -36,3 +37,7 @@ uuid.workspace = true [package.metadata.docs.rs] features = [ "k8s-openapi/v1_32" ] + +[features] +default = [] +experimental = [] \ No newline at end of file diff --git a/gateway-api/src/apis/mod.rs b/gateway-api/src/apis/mod.rs deleted file mode 100644 index 7651e9f..0000000 --- a/gateway-api/src/apis/mod.rs +++ /dev/null @@ -1,2 +0,0 @@ -pub mod experimental; -pub mod standard; diff --git a/gateway-api/src/apis/experimental/constants.rs b/gateway-api/src/experimental/constants.rs similarity index 100% rename from gateway-api/src/apis/experimental/constants.rs rename to gateway-api/src/experimental/constants.rs diff --git a/gateway-api/src/apis/experimental/enum_defaults.rs b/gateway-api/src/experimental/enum_defaults.rs similarity index 100% rename from gateway-api/src/apis/experimental/enum_defaults.rs rename to gateway-api/src/experimental/enum_defaults.rs diff --git a/gateway-api/src/apis/experimental/gatewayclasses.rs b/gateway-api/src/experimental/gatewayclasses.rs similarity index 100% rename from gateway-api/src/apis/experimental/gatewayclasses.rs rename to gateway-api/src/experimental/gatewayclasses.rs diff --git a/gateway-api/src/apis/experimental/gateways.rs b/gateway-api/src/experimental/gateways.rs similarity index 100% rename from gateway-api/src/apis/experimental/gateways.rs rename to gateway-api/src/experimental/gateways.rs diff --git a/gateway-api/src/apis/experimental/grpcroutes.rs b/gateway-api/src/experimental/grpcroutes.rs similarity index 100% rename from gateway-api/src/apis/experimental/grpcroutes.rs rename to gateway-api/src/experimental/grpcroutes.rs diff --git a/gateway-api/src/apis/experimental/httproutes.rs b/gateway-api/src/experimental/httproutes.rs similarity index 100% rename from gateway-api/src/apis/experimental/httproutes.rs rename to gateway-api/src/experimental/httproutes.rs diff --git a/gateway-api/src/apis/experimental/mod.rs b/gateway-api/src/experimental/mod.rs similarity index 100% rename from gateway-api/src/apis/experimental/mod.rs rename to gateway-api/src/experimental/mod.rs diff --git a/gateway-api/src/apis/experimental/referencegrants.rs b/gateway-api/src/experimental/referencegrants.rs similarity index 100% rename from gateway-api/src/apis/experimental/referencegrants.rs rename to gateway-api/src/experimental/referencegrants.rs diff --git a/gateway-api/src/apis/experimental/tcproutes.rs b/gateway-api/src/experimental/tcproutes.rs similarity index 100% rename from gateway-api/src/apis/experimental/tcproutes.rs rename to gateway-api/src/experimental/tcproutes.rs diff --git a/gateway-api/src/apis/experimental/tlsroutes.rs b/gateway-api/src/experimental/tlsroutes.rs similarity index 100% rename from gateway-api/src/apis/experimental/tlsroutes.rs rename to gateway-api/src/experimental/tlsroutes.rs diff --git a/gateway-api/src/apis/experimental/udproutes.rs b/gateway-api/src/experimental/udproutes.rs similarity index 100% rename from gateway-api/src/apis/experimental/udproutes.rs rename to gateway-api/src/experimental/udproutes.rs diff --git a/gateway-api/src/lib.rs b/gateway-api/src/lib.rs index dc3fbc1..2c62f92 100644 --- a/gateway-api/src/lib.rs +++ b/gateway-api/src/lib.rs @@ -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 { @@ -22,7 +30,7 @@ mod tests { use tower::ServiceBuilder; use uuid::Uuid; - use crate::apis::standard::{ + use crate::{ constants::{ GatewayConditionReason, GatewayConditionType, ListenerConditionReason, ListenerConditionType, diff --git a/gateway-api/src/apis/standard/constants.rs b/gateway-api/src/standard/constants.rs similarity index 100% rename from gateway-api/src/apis/standard/constants.rs rename to gateway-api/src/standard/constants.rs diff --git a/gateway-api/src/apis/standard/enum_defaults.rs b/gateway-api/src/standard/enum_defaults.rs similarity index 100% rename from gateway-api/src/apis/standard/enum_defaults.rs rename to gateway-api/src/standard/enum_defaults.rs diff --git a/gateway-api/src/apis/standard/gatewayclasses.rs b/gateway-api/src/standard/gatewayclasses.rs similarity index 100% rename from gateway-api/src/apis/standard/gatewayclasses.rs rename to gateway-api/src/standard/gatewayclasses.rs diff --git a/gateway-api/src/apis/standard/gateways.rs b/gateway-api/src/standard/gateways.rs similarity index 100% rename from gateway-api/src/apis/standard/gateways.rs rename to gateway-api/src/standard/gateways.rs diff --git a/gateway-api/src/apis/standard/grpcroutes.rs b/gateway-api/src/standard/grpcroutes.rs similarity index 100% rename from gateway-api/src/apis/standard/grpcroutes.rs rename to gateway-api/src/standard/grpcroutes.rs diff --git a/gateway-api/src/apis/standard/httproutes.rs b/gateway-api/src/standard/httproutes.rs similarity index 100% rename from gateway-api/src/apis/standard/httproutes.rs rename to gateway-api/src/standard/httproutes.rs diff --git a/gateway-api/src/apis/standard/mod.rs b/gateway-api/src/standard/mod.rs similarity index 100% rename from gateway-api/src/apis/standard/mod.rs rename to gateway-api/src/standard/mod.rs diff --git a/gateway-api/src/apis/standard/referencegrants.rs b/gateway-api/src/standard/referencegrants.rs similarity index 100% rename from gateway-api/src/apis/standard/referencegrants.rs rename to gateway-api/src/standard/referencegrants.rs diff --git a/update.sh b/update.sh index ff1183d..dcd0096 100755 --- a/update.sh +++ b/update.sh @@ -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. @@ -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" @@ -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. @@ -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" @@ -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 + From b553b483c70c6bc426ac4760b3d639ad98cd707c Mon Sep 17 00:00:00 2001 From: Dawid Nowak Date: Tue, 6 May 2025 17:29:07 +0100 Subject: [PATCH 2/3] Core review changes Signed-off-by: Dawid Nowak --- Cargo.lock | 1 - Cargo.toml | 2 -- gateway-api/Cargo.toml | 7 +++---- gateway-api/src/lib.rs | 10 +++------- 4 files changed, 6 insertions(+), 14 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index feee2b5..0b937e3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -331,7 +331,6 @@ name = "gateway-api" version = "0.15.0" dependencies = [ "anyhow", - "cfg-if", "delegate", "hyper-util", "k8s-openapi", diff --git a/Cargo.toml b/Cargo.toml index 4580ec5..cb23be1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,7 +10,6 @@ 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" } @@ -26,4 +25,3 @@ 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"] } - diff --git a/gateway-api/Cargo.toml b/gateway-api/Cargo.toml index 375c9b5..81cef86 100644 --- a/gateway-api/Cargo.toml +++ b/gateway-api/Cargo.toml @@ -23,10 +23,9 @@ 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" ] } +k8s-openapi = { workspace = true, features = ["v1_32", "schemars"] } kube = { workspace = true, features = ["derive"] } anyhow.workspace = true @@ -36,8 +35,8 @@ tower.workspace = true uuid.workspace = true [package.metadata.docs.rs] -features = [ "k8s-openapi/v1_32" ] +features = ["k8s-openapi/v1_32"] [features] default = [] -experimental = [] \ No newline at end of file +experimental = [] diff --git a/gateway-api/src/lib.rs b/gateway-api/src/lib.rs index 2c62f92..31d6ff0 100644 --- a/gateway-api/src/lib.rs +++ b/gateway-api/src/lib.rs @@ -3,14 +3,10 @@ pub use duration::Duration; pub mod standard; pub use standard::*; -cfg_if::cfg_if! { - if #[cfg(feature = "experimental")] { - pub mod experimental; - } else { - - } -} +#[cfg(feature = "experimental")] +pub mod experimental; + #[cfg(test)] mod tests { use std::process::Command; From 689c03a96edddfe728fb20a9cd1a96e4c4f034f5 Mon Sep 17 00:00:00 2001 From: Dawid Nowak Date: Thu, 8 May 2025 18:28:26 +0100 Subject: [PATCH 3/3] Code review two.. bringing back the apis Signed-off-by: Dawid Nowak --- .../src/{ => apis}/experimental/constants.rs | 0 .../{ => apis}/experimental/enum_defaults.rs | 0 .../{ => apis}/experimental/gatewayclasses.rs | 0 .../src/{ => apis}/experimental/gateways.rs | 0 .../src/{ => apis}/experimental/grpcroutes.rs | 0 .../src/{ => apis}/experimental/httproutes.rs | 0 .../src/{ => apis}/experimental/mod.rs | 0 .../experimental/referencegrants.rs | 0 .../src/{ => apis}/experimental/tcproutes.rs | 0 .../src/{ => apis}/experimental/tlsroutes.rs | 0 .../src/{ => apis}/experimental/udproutes.rs | 0 gateway-api/src/apis/mod.rs | 2 + .../src/{ => apis}/standard/constants.rs | 0 .../src/{ => apis}/standard/enum_defaults.rs | 0 .../src/{ => apis}/standard/gatewayclasses.rs | 0 .../src/{ => apis}/standard/gateways.rs | 0 .../src/{ => apis}/standard/grpcroutes.rs | 0 .../src/{ => apis}/standard/httproutes.rs | 0 gateway-api/src/{ => apis}/standard/mod.rs | 0 .../{ => apis}/standard/referencegrants.rs | 0 gateway-api/src/lib.rs | 9 ++-- update.sh | 47 ++++++++++--------- 22 files changed, 30 insertions(+), 28 deletions(-) rename gateway-api/src/{ => apis}/experimental/constants.rs (100%) rename gateway-api/src/{ => apis}/experimental/enum_defaults.rs (100%) rename gateway-api/src/{ => apis}/experimental/gatewayclasses.rs (100%) rename gateway-api/src/{ => apis}/experimental/gateways.rs (100%) rename gateway-api/src/{ => apis}/experimental/grpcroutes.rs (100%) rename gateway-api/src/{ => apis}/experimental/httproutes.rs (100%) rename gateway-api/src/{ => apis}/experimental/mod.rs (100%) rename gateway-api/src/{ => apis}/experimental/referencegrants.rs (100%) rename gateway-api/src/{ => apis}/experimental/tcproutes.rs (100%) rename gateway-api/src/{ => apis}/experimental/tlsroutes.rs (100%) rename gateway-api/src/{ => apis}/experimental/udproutes.rs (100%) create mode 100644 gateway-api/src/apis/mod.rs rename gateway-api/src/{ => apis}/standard/constants.rs (100%) rename gateway-api/src/{ => apis}/standard/enum_defaults.rs (100%) rename gateway-api/src/{ => apis}/standard/gatewayclasses.rs (100%) rename gateway-api/src/{ => apis}/standard/gateways.rs (100%) rename gateway-api/src/{ => apis}/standard/grpcroutes.rs (100%) rename gateway-api/src/{ => apis}/standard/httproutes.rs (100%) rename gateway-api/src/{ => apis}/standard/mod.rs (100%) rename gateway-api/src/{ => apis}/standard/referencegrants.rs (100%) diff --git a/gateway-api/src/experimental/constants.rs b/gateway-api/src/apis/experimental/constants.rs similarity index 100% rename from gateway-api/src/experimental/constants.rs rename to gateway-api/src/apis/experimental/constants.rs diff --git a/gateway-api/src/experimental/enum_defaults.rs b/gateway-api/src/apis/experimental/enum_defaults.rs similarity index 100% rename from gateway-api/src/experimental/enum_defaults.rs rename to gateway-api/src/apis/experimental/enum_defaults.rs diff --git a/gateway-api/src/experimental/gatewayclasses.rs b/gateway-api/src/apis/experimental/gatewayclasses.rs similarity index 100% rename from gateway-api/src/experimental/gatewayclasses.rs rename to gateway-api/src/apis/experimental/gatewayclasses.rs diff --git a/gateway-api/src/experimental/gateways.rs b/gateway-api/src/apis/experimental/gateways.rs similarity index 100% rename from gateway-api/src/experimental/gateways.rs rename to gateway-api/src/apis/experimental/gateways.rs diff --git a/gateway-api/src/experimental/grpcroutes.rs b/gateway-api/src/apis/experimental/grpcroutes.rs similarity index 100% rename from gateway-api/src/experimental/grpcroutes.rs rename to gateway-api/src/apis/experimental/grpcroutes.rs diff --git a/gateway-api/src/experimental/httproutes.rs b/gateway-api/src/apis/experimental/httproutes.rs similarity index 100% rename from gateway-api/src/experimental/httproutes.rs rename to gateway-api/src/apis/experimental/httproutes.rs diff --git a/gateway-api/src/experimental/mod.rs b/gateway-api/src/apis/experimental/mod.rs similarity index 100% rename from gateway-api/src/experimental/mod.rs rename to gateway-api/src/apis/experimental/mod.rs diff --git a/gateway-api/src/experimental/referencegrants.rs b/gateway-api/src/apis/experimental/referencegrants.rs similarity index 100% rename from gateway-api/src/experimental/referencegrants.rs rename to gateway-api/src/apis/experimental/referencegrants.rs diff --git a/gateway-api/src/experimental/tcproutes.rs b/gateway-api/src/apis/experimental/tcproutes.rs similarity index 100% rename from gateway-api/src/experimental/tcproutes.rs rename to gateway-api/src/apis/experimental/tcproutes.rs diff --git a/gateway-api/src/experimental/tlsroutes.rs b/gateway-api/src/apis/experimental/tlsroutes.rs similarity index 100% rename from gateway-api/src/experimental/tlsroutes.rs rename to gateway-api/src/apis/experimental/tlsroutes.rs diff --git a/gateway-api/src/experimental/udproutes.rs b/gateway-api/src/apis/experimental/udproutes.rs similarity index 100% rename from gateway-api/src/experimental/udproutes.rs rename to gateway-api/src/apis/experimental/udproutes.rs diff --git a/gateway-api/src/apis/mod.rs b/gateway-api/src/apis/mod.rs new file mode 100644 index 0000000..7651e9f --- /dev/null +++ b/gateway-api/src/apis/mod.rs @@ -0,0 +1,2 @@ +pub mod experimental; +pub mod standard; diff --git a/gateway-api/src/standard/constants.rs b/gateway-api/src/apis/standard/constants.rs similarity index 100% rename from gateway-api/src/standard/constants.rs rename to gateway-api/src/apis/standard/constants.rs diff --git a/gateway-api/src/standard/enum_defaults.rs b/gateway-api/src/apis/standard/enum_defaults.rs similarity index 100% rename from gateway-api/src/standard/enum_defaults.rs rename to gateway-api/src/apis/standard/enum_defaults.rs diff --git a/gateway-api/src/standard/gatewayclasses.rs b/gateway-api/src/apis/standard/gatewayclasses.rs similarity index 100% rename from gateway-api/src/standard/gatewayclasses.rs rename to gateway-api/src/apis/standard/gatewayclasses.rs diff --git a/gateway-api/src/standard/gateways.rs b/gateway-api/src/apis/standard/gateways.rs similarity index 100% rename from gateway-api/src/standard/gateways.rs rename to gateway-api/src/apis/standard/gateways.rs diff --git a/gateway-api/src/standard/grpcroutes.rs b/gateway-api/src/apis/standard/grpcroutes.rs similarity index 100% rename from gateway-api/src/standard/grpcroutes.rs rename to gateway-api/src/apis/standard/grpcroutes.rs diff --git a/gateway-api/src/standard/httproutes.rs b/gateway-api/src/apis/standard/httproutes.rs similarity index 100% rename from gateway-api/src/standard/httproutes.rs rename to gateway-api/src/apis/standard/httproutes.rs diff --git a/gateway-api/src/standard/mod.rs b/gateway-api/src/apis/standard/mod.rs similarity index 100% rename from gateway-api/src/standard/mod.rs rename to gateway-api/src/apis/standard/mod.rs diff --git a/gateway-api/src/standard/referencegrants.rs b/gateway-api/src/apis/standard/referencegrants.rs similarity index 100% rename from gateway-api/src/standard/referencegrants.rs rename to gateway-api/src/apis/standard/referencegrants.rs diff --git a/gateway-api/src/lib.rs b/gateway-api/src/lib.rs index 31d6ff0..e3fc72e 100644 --- a/gateway-api/src/lib.rs +++ b/gateway-api/src/lib.rs @@ -1,12 +1,11 @@ pub mod duration; pub use duration::Duration; -pub mod standard; -pub use standard::*; - +pub mod apis; +pub use apis::standard::*; #[cfg(feature = "experimental")] -pub mod experimental; - +pub use apis::experimental; + #[cfg(test)] mod tests { use std::process::Command; diff --git a/update.sh b/update.sh index dcd0096..296806e 100755 --- a/update.sh +++ b/update.sh @@ -34,25 +34,26 @@ EXPERIMENTAL_APIS=( udproutes ) -rm -rf gateway-api/src/standard/ -rm -rf gateway-api/src/experimental/ +export APIS_DIR='gateway-api/src/apis' +rm -rf $APIS_DIR/standard/ +rm -rf $APIS_DIR/experimental/ -# mkdir -p gateway-api/src/standard/ -# cat << EOF > gateway-api/src/standard/mod.rs -# pub mod experimental; -# pub mod standard; -# EOF +cat << EOF > $APIS_DIR/mod.rs +pub mod experimental; +pub mod standard; +EOF -mkdir -p gateway-api/src/standard/ -mkdir -p gateway-api/src/experimental/ -echo "// WARNING! generated file do not edit" > gateway-api/src/standard/mod.rs +mkdir -p $APIS_DIR/standard/ +mkdir -p $APIS_DIR/experimental/ + +echo "// WARNING! generated file do not edit" > $APIS_DIR/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/standard/${API}.rs - echo "pub mod ${API};" >> gateway-api/src/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 - > $APIS_DIR/standard/${API}.rs + echo "pub mod ${API};" >> $APIS_DIR/standard/mod.rs done # Standard API enums that need a Default trait impl along with their respective default variant. @@ -72,8 +73,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/standard/enum_defaults.rs -echo "mod enum_defaults;" >> gateway-api/src/standard/mod.rs +GATEWAY_API_ENUMS=${ENUMS_WITH_DEFAULTS} cargo xtask gen_enum_defaults >> $APIS_DIR/standard/enum_defaults.rs +echo "mod enum_defaults;" >> $APIS_DIR/standard/mod.rs GATEWAY_CLASS_CONDITION_CONSTANTS="GatewayClassConditionType=Accepted" GATEWAY_CLASS_REASON_CONSTANTS="GatewayClassConditionReason=Accepted,InvalidParameters,Pending,Unsupported,Waiting" @@ -85,16 +86,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/standard/constants.rs -echo "pub mod constants;" >> gateway-api/src/standard/mod.rs + cargo xtask gen_condition_constants >> $APIS_DIR/standard/constants.rs +echo "pub mod constants;" >> $APIS_DIR/standard/mod.rs -echo "// WARNING! generated file do not edit" > gateway-api/src/experimental/mod.rs +echo "// WARNING! generated file do not edit" > $APIS_DIR/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/experimental/${API}.rs - echo "pub mod ${API};" >> gateway-api/src/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 - > $APIS_DIR/experimental/${API}.rs + echo "pub mod ${API};" >> $APIS_DIR/experimental/mod.rs done # Experimental API enums that need a Default trait impl along with their respective default variant. @@ -111,8 +112,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/experimental/enum_defaults.rs -echo "mod enum_defaults;" >> gateway-api/src/experimental/mod.rs +GATEWAY_API_ENUMS=${ENUMS_WITH_DEFAULTS} cargo xtask gen_enum_defaults >> $APIS_DIR/experimental/enum_defaults.rs +echo "mod enum_defaults;" >> $APIS_DIR/experimental/mod.rs # GatewayClass conditions vary between standard and experimental GATEWAY_CLASS_CONDITION_CONSTANTS="${GATEWAY_CLASS_CONDITION_CONSTANTS},SupportedVersion" @@ -121,8 +122,8 @@ 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/experimental/constants.rs -echo "pub mod constants;" >> gateway-api/src/experimental/mod.rs + cargo xtask gen_condition_constants >> $APIS_DIR/experimental/constants.rs +echo "pub mod constants;" >> $APIS_DIR/experimental/mod.rs # Format the code. cargo fmt