Skip to content
Open
Show file tree
Hide file tree
Changes from 2 commits
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 .github/codecov.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,4 @@ ignore:
- "**/*.pb.go"
- "**/zz_generated.*.go"
- "api/**/*_types.go"
- "pkg/client/**"
50 changes: 50 additions & 0 deletions .github/workflows/verify-codegen.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: Verify Code Generation

on:
pull_request:
branches:
- main
- 'release/**'
paths:
- 'api/**'
- 'pkg/client/**'
- 'tools/src/*-codegen.sh'
- 'tools/make/kube.mk'
- '.github/workflows/verify-codegen.yaml'

jobs:
verify-codegen:
name: Verify Generated Code
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Set up Go
uses: actions/setup-go@v5
with:
go-version-file: go.mod
cache: true

- name: Install dependencies
run: |
cd tools
go mod download
cd ..

- name: Verify generated code
run: make kube-verify-clients
Copy link
Contributor

Choose a reason for hiding this comment

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

instead if a new action, can we reuse make geo-check thats part of CI already ?


- name: Check for uncommitted changes
run: |
if ! git diff --exit-code pkg/client/; then
echo "ERROR: Generated code is not up to date."
echo "Please run 'make kube-generate' and commit the changes."
echo ""
echo "Diff:"
git diff pkg/client/
exit 1
fi

5 changes: 4 additions & 1 deletion api/v1alpha1/backend_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ const (
AppProtocolTypeWSS AppProtocolType = "gateway.envoyproxy.io/wss"
)

// +genclient
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// Backend allows the user to configure the endpoints of a backend and
// the behavior of the connection from Envoy Proxy to the backend.
//
Expand Down Expand Up @@ -281,6 +283,7 @@ type BackendStatus struct {
Conditions []metav1.Condition `json:"conditions,omitempty"`
}

// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// BackendList contains a list of Backend resources.
//
// +kubebuilder:object:root=true
Expand All @@ -291,5 +294,5 @@ type BackendList struct {
}

func init() {
SchemeBuilder.Register(&Backend{}, &BackendList{})
localSchemeBuilder.Register(&Backend{}, &BackendList{})
}
5 changes: 4 additions & 1 deletion api/v1alpha1/backendtrafficpolicy_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ const (
// +kubebuilder:resource:categories=envoy-gateway,shortName=btp
// +kubebuilder:subresource:status
// +kubebuilder:printcolumn:name="Age",type=date,JSONPath=`.metadata.creationTimestamp`
// +genclient
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type BackendTrafficPolicy struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Expand Down Expand Up @@ -167,12 +169,13 @@ type RequestBuffer struct {
// BackendTrafficPolicyList contains a list of BackendTrafficPolicy resources.
//
// +kubebuilder:object:root=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type BackendTrafficPolicyList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []BackendTrafficPolicy `json:"items"`
}

func init() {
SchemeBuilder.Register(&BackendTrafficPolicy{}, &BackendTrafficPolicyList{})
localSchemeBuilder.Register(&BackendTrafficPolicy{}, &BackendTrafficPolicyList{})
}
5 changes: 4 additions & 1 deletion api/v1alpha1/clienttrafficpolicy_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ const (

// ClientTrafficPolicy allows the user to configure the behavior of the connection
// between the downstream client and Envoy Proxy listener.
// +genclient
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type ClientTrafficPolicy struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Expand Down Expand Up @@ -394,12 +396,13 @@ type ProxyProtocolSettings struct {
//+kubebuilder:object:root=true

// ClientTrafficPolicyList contains a list of ClientTrafficPolicy resources.
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type ClientTrafficPolicyList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []ClientTrafficPolicy `json:"items"`
}

func init() {
SchemeBuilder.Register(&ClientTrafficPolicy{}, &ClientTrafficPolicyList{})
localSchemeBuilder.Register(&ClientTrafficPolicy{}, &ClientTrafficPolicyList{})
}
3 changes: 2 additions & 1 deletion api/v1alpha1/doc.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
// Package v1alpha1 contains API schema definitions for the gateway.envoyproxy.io
// API group.
//
// +kubebuilder:object:generate=true
// +k8s:deepcopy-gen=package
// +groupName=gateway.envoyproxy.io
// +kubebuilder:object:generate=true
package v1alpha1
5 changes: 4 additions & 1 deletion api/v1alpha1/envoyextensionypolicy_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ const (
// +kubebuilder:printcolumn:name="Age",type=date,JSONPath=`.metadata.creationTimestamp`

// EnvoyExtensionPolicy allows the user to configure various envoy extensibility options for the Gateway.
// +genclient
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type EnvoyExtensionPolicy struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Expand Down Expand Up @@ -68,12 +70,13 @@ type EnvoyExtensionPolicySpec struct {
//+kubebuilder:object:root=true

// EnvoyExtensionPolicyList contains a list of EnvoyExtensionPolicy resources.
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type EnvoyExtensionPolicyList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []EnvoyExtensionPolicy `json:"items"`
}

func init() {
SchemeBuilder.Register(&EnvoyExtensionPolicy{}, &EnvoyExtensionPolicyList{})
localSchemeBuilder.Register(&EnvoyExtensionPolicy{}, &EnvoyExtensionPolicyList{})
}
2 changes: 1 addition & 1 deletion api/v1alpha1/envoygateway_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -826,5 +826,5 @@ type EnvoyGatewayTopologyInjector struct {
}

func init() {
SchemeBuilder.Register(&EnvoyGateway{})
localSchemeBuilder.Register(&EnvoyGateway{})
}
5 changes: 4 additions & 1 deletion api/v1alpha1/envoypatchpolicy_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ const (

// EnvoyPatchPolicy allows the user to modify the generated Envoy xDS
// resources by Envoy Gateway using this patch API
// +genclient
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type EnvoyPatchPolicy struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Expand Down Expand Up @@ -169,12 +171,13 @@ const (
//+kubebuilder:object:root=true

// EnvoyPatchPolicyList contains a list of EnvoyPatchPolicy resources.
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type EnvoyPatchPolicyList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []EnvoyPatchPolicy `json:"items"`
}

func init() {
SchemeBuilder.Register(&EnvoyPatchPolicy{}, &EnvoyPatchPolicyList{})
localSchemeBuilder.Register(&EnvoyPatchPolicy{}, &EnvoyPatchPolicyList{})
}
5 changes: 4 additions & 1 deletion api/v1alpha1/envoyproxy_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ const (
// +kubebuilder:subresource:status

// EnvoyProxy is the schema for the envoyproxies API.
// +genclient
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type EnvoyProxy struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Expand Down Expand Up @@ -537,6 +539,7 @@ type EnvoyProxyStatus struct {
// +kubebuilder:object:root=true

// EnvoyProxyList contains a list of EnvoyProxy
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type EnvoyProxyList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Expand All @@ -558,5 +561,5 @@ const (
)

func init() {
SchemeBuilder.Register(&EnvoyProxy{}, &EnvoyProxyList{})
localSchemeBuilder.Register(&EnvoyProxy{}, &EnvoyProxyList{})
}
40 changes: 38 additions & 2 deletions api/v1alpha1/groupversion_info.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,20 +6,56 @@
package v1alpha1

import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
"sigs.k8s.io/controller-runtime/pkg/scheme"
)

const GroupName = "gateway.envoyproxy.io"

var (

// GroupVersion is group version used to register these objects
GroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1alpha1"}

// SchemeGroupVersion is an alias for GroupVersion for code-generator compatibility
SchemeGroupVersion = GroupVersion

// SchemeBuilder is used to add go types to the GroupVersionKind scheme
SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion}
SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes)

// localSchemeBuilder is used for controller-runtime compatibility
localSchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion}

// AddToScheme adds the types in this group-version to the given scheme.
AddToScheme = SchemeBuilder.AddToScheme
)

// Resource takes an unqualified resource and returns a Group qualified GroupResource
func Resource(resource string) schema.GroupResource {
return GroupVersion.WithResource(resource).GroupResource()
}

// addKnownTypes adds the set of types defined in this package to the supplied scheme.
func addKnownTypes(scheme *runtime.Scheme) error {
scheme.AddKnownTypes(GroupVersion,
&Backend{},
&BackendList{},
&BackendTrafficPolicy{},
&BackendTrafficPolicyList{},
&ClientTrafficPolicy{},
&ClientTrafficPolicyList{},
&EnvoyExtensionPolicy{},
&EnvoyExtensionPolicyList{},
&EnvoyPatchPolicy{},
&EnvoyPatchPolicyList{},
&EnvoyProxy{},
&EnvoyProxyList{},
&HTTPRouteFilter{},
&HTTPRouteFilterList{},
&SecurityPolicy{},
&SecurityPolicyList{},
)
metav1.AddToGroupVersion(scheme, GroupVersion)
return nil
}
6 changes: 5 additions & 1 deletion api/v1alpha1/httproutefilter_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@ const (

// HTTPRouteFilter is a custom Envoy Gateway HTTPRouteFilter which provides extended
// traffic processing options such as path regex rewrite, direct response and more.
// +genclient
// +genclient:noStatus
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type HTTPRouteFilter struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Expand Down Expand Up @@ -188,12 +191,13 @@ type InjectedCredential struct {
//+kubebuilder:object:root=true

// HTTPRouteFilterList contains a list of HTTPRouteFilter resources.
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type HTTPRouteFilterList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []HTTPRouteFilter `json:"items"`
}

func init() {
SchemeBuilder.Register(&HTTPRouteFilter{}, &HTTPRouteFilterList{})
localSchemeBuilder.Register(&HTTPRouteFilter{}, &HTTPRouteFilterList{})
}
7 changes: 5 additions & 2 deletions api/v1alpha1/securitypolicy_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ const (
KindSecurityPolicy = "SecurityPolicy"
)

// +genclient
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// +kubebuilder:object:root=true
// +kubebuilder:resource:categories=envoy-gateway,shortName=sp
// +kubebuilder:subresource:status
Expand Down Expand Up @@ -86,7 +88,8 @@ type SecurityPolicySpec struct {
Authorization *Authorization `json:"authorization,omitempty"`
}

//+kubebuilder:object:root=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// +kubebuilder:object:root=true

// SecurityPolicyList contains a list of SecurityPolicy resources.
type SecurityPolicyList struct {
Expand All @@ -96,5 +99,5 @@ type SecurityPolicyList struct {
}

func init() {
SchemeBuilder.Register(&SecurityPolicy{}, &SecurityPolicyList{})
localSchemeBuilder.Register(&SecurityPolicy{}, &SecurityPolicyList{})
}
2 changes: 1 addition & 1 deletion api/v1alpha1/zz_generated.deepcopy.go

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

Loading