Skip to content

Commit 6d3bd3e

Browse files
committed
fix: r
Signed-off-by: Ashing Zheng <[email protected]>
1 parent f60dfe2 commit 6d3bd3e

File tree

5 files changed

+32
-93
lines changed

5 files changed

+32
-93
lines changed

internal/controller/indexer/indexer.go

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import (
3333
"github.com/apache/apisix-ingress-controller/api/v1alpha1"
3434
apiv2 "github.com/apache/apisix-ingress-controller/api/v2"
3535
intypes "github.com/apache/apisix-ingress-controller/internal/types"
36+
k8sutils "github.com/apache/apisix-ingress-controller/internal/utils"
3637
"github.com/apache/apisix-ingress-controller/pkg/utils"
3738
)
3839

@@ -737,11 +738,8 @@ func IngressClassParametersRefIndexFunc(rawObj client.Object) []string {
737738
ingressClass.Spec.Parameters.APIGroup != nil &&
738739
*ingressClass.Spec.Parameters.APIGroup == v1alpha1.GroupVersion.Group &&
739740
ingressClass.Spec.Parameters.Kind == intypes.KindGatewayProxy {
740-
ns := ingressClass.GetNamespace()
741-
if ingressClass.Spec.Parameters.Namespace != nil {
742-
ns = *ingressClass.Spec.Parameters.Namespace
743-
}
744-
return []string{GenIndexKey(ns, ingressClass.Spec.Parameters.Name)}
741+
namespace := k8sutils.GetIngressClassParametersNamespace(*ingressClass)
742+
return []string{GenIndexKey(namespace, ingressClass.Spec.Parameters.Name)}
745743
}
746744
return nil
747745
}
@@ -753,11 +751,8 @@ func IngressClassV1beta1ParametersRefIndexFunc(rawObj client.Object) []string {
753751
ingressClass.Spec.Parameters.APIGroup != nil &&
754752
*ingressClass.Spec.Parameters.APIGroup == v1alpha1.GroupVersion.Group &&
755753
ingressClass.Spec.Parameters.Kind == intypes.KindGatewayProxy {
756-
ns := ingressClass.GetNamespace()
757-
if ingressClass.Spec.Parameters.Namespace != nil {
758-
ns = *ingressClass.Spec.Parameters.Namespace
759-
}
760-
return []string{GenIndexKey(ns, ingressClass.Spec.Parameters.Name)}
754+
namespace := k8sutils.GetIngressClassV1beta1ParametersNamespace(*ingressClass)
755+
return []string{GenIndexKey(namespace, ingressClass.Spec.Parameters.Name)}
761756
}
762757
return nil
763758
}

internal/controller/ingressclass_controller.go

Lines changed: 1 addition & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ import (
2626
networkingv1 "k8s.io/api/networking/v1"
2727
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2828
"k8s.io/apimachinery/pkg/runtime"
29-
"k8s.io/apimachinery/pkg/types"
3029
ctrl "sigs.k8s.io/controller-runtime"
3130
"sigs.k8s.io/controller-runtime/pkg/builder"
3231
"sigs.k8s.io/controller-runtime/pkg/client"
@@ -37,7 +36,6 @@ import (
3736
"github.com/apache/apisix-ingress-controller/api/v1alpha1"
3837
"github.com/apache/apisix-ingress-controller/internal/controller/indexer"
3938
"github.com/apache/apisix-ingress-controller/internal/provider"
40-
"github.com/apache/apisix-ingress-controller/internal/utils"
4139
)
4240

4341
// IngressClassReconciler reconciles a IngressClass object.
@@ -98,7 +96,7 @@ func (r *IngressClassReconciler) Reconcile(ctx context.Context, req ctrl.Request
9896
// Create a translate context
9997
tctx := provider.NewDefaultTranslateContext(ctx)
10098

101-
if err := r.processInfrastructure(tctx, ingressClass); err != nil {
99+
if err := ProcessIngressClassParameters(tctx, r.Client, r.Log, ingressClass, ingressClass); err != nil {
102100
r.Log.Error(err, "failed to process infrastructure for ingressclass", "ingressclass", ingressClass.GetName())
103101
return ctrl.Result{}, err
104102
}
@@ -175,75 +173,3 @@ func (r *IngressClassReconciler) listIngressClassesForSecret(ctx context.Context
175173

176174
return distinctRequests(requests)
177175
}
178-
179-
func (r *IngressClassReconciler) processInfrastructure(tctx *provider.TranslateContext, ingressClass *networkingv1.IngressClass) error {
180-
if ingressClass.Spec.Parameters == nil {
181-
return nil
182-
}
183-
184-
if ingressClass.Spec.Parameters.APIGroup == nil ||
185-
*ingressClass.Spec.Parameters.APIGroup != v1alpha1.GroupVersion.Group ||
186-
ingressClass.Spec.Parameters.Kind != KindGatewayProxy {
187-
return nil
188-
}
189-
190-
namespace := ingressClass.Namespace
191-
if ingressClass.Spec.Parameters.Namespace != nil {
192-
namespace = *ingressClass.Spec.Parameters.Namespace
193-
}
194-
// Check for annotation override
195-
if annotationNamespace, exists := ingressClass.Annotations[parametersNamespaceAnnotation]; exists && annotationNamespace != "" {
196-
namespace = annotationNamespace
197-
}
198-
199-
gatewayProxy := new(v1alpha1.GatewayProxy)
200-
if err := r.Get(context.Background(), client.ObjectKey{
201-
Namespace: namespace,
202-
Name: ingressClass.Spec.Parameters.Name,
203-
}, gatewayProxy); err != nil {
204-
return fmt.Errorf("failed to get gateway proxy: %w", err)
205-
}
206-
207-
rk := utils.NamespacedNameKind(ingressClass)
208-
209-
tctx.GatewayProxies[rk] = *gatewayProxy
210-
tctx.ResourceParentRefs[rk] = append(tctx.ResourceParentRefs[rk], rk)
211-
212-
// Load secrets if needed
213-
if gatewayProxy.Spec.Provider != nil && gatewayProxy.Spec.Provider.ControlPlane != nil {
214-
auth := gatewayProxy.Spec.Provider.ControlPlane.Auth
215-
if auth.Type == v1alpha1.AuthTypeAdminKey && auth.AdminKey != nil && auth.AdminKey.ValueFrom != nil {
216-
if auth.AdminKey.ValueFrom.SecretKeyRef != nil {
217-
secretRef := auth.AdminKey.ValueFrom.SecretKeyRef
218-
secret := &corev1.Secret{}
219-
if err := r.Get(context.Background(), client.ObjectKey{
220-
Namespace: namespace,
221-
Name: secretRef.Name,
222-
}, secret); err != nil {
223-
r.Log.Error(err, "failed to get secret for gateway proxy", "namespace", namespace, "name", secretRef.Name)
224-
return err
225-
}
226-
tctx.Secrets[client.ObjectKey{
227-
Namespace: namespace,
228-
Name: secretRef.Name,
229-
}] = secret
230-
}
231-
}
232-
}
233-
234-
if service := gatewayProxy.Spec.Provider.ControlPlane.Service; service != nil {
235-
if err := addProviderEndpointsToTranslateContext(tctx, r.Client, types.NamespacedName{
236-
Namespace: gatewayProxy.GetNamespace(),
237-
Name: service.Name,
238-
}); err != nil {
239-
return err
240-
}
241-
}
242-
243-
_, ok := tctx.GatewayProxies[rk]
244-
if !ok {
245-
return fmt.Errorf("no gateway proxy found for ingress class")
246-
}
247-
248-
return nil
249-
}

internal/controller/utils.go

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1323,13 +1323,7 @@ func ProcessIngressClassParameters(tctx *provider.TranslateContext, c client.Cli
13231323
parameters := ingressClass.Spec.Parameters
13241324
// check if the parameters reference GatewayProxy
13251325
if parameters.APIGroup != nil && *parameters.APIGroup == v1alpha1.GroupVersion.Group && parameters.Kind == KindGatewayProxy {
1326-
ns := "default"
1327-
if parameters.Namespace != nil {
1328-
ns = *parameters.Namespace
1329-
}
1330-
if annotationNamespace, exists := ingressClass.Annotations[parametersNamespaceAnnotation]; exists && annotationNamespace != "" {
1331-
ns = annotationNamespace
1332-
}
1326+
ns := utils.GetIngressClassParametersNamespace(*ingressClass)
13331327

13341328
gatewayProxy := &v1alpha1.GatewayProxy{}
13351329
if err := c.Get(tctx, client.ObjectKey{

internal/utils/k8s.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ import (
2121
"net"
2222
"regexp"
2323

24+
networkingv1 "k8s.io/api/networking/v1"
25+
networkingv1beta1 "k8s.io/api/networking/v1beta1"
2426
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2527
k8stypes "k8s.io/apimachinery/pkg/types"
2628
"sigs.k8s.io/controller-runtime/pkg/client"
@@ -99,3 +101,25 @@ func ConditionStatus(status bool) metav1.ConditionStatus {
99101
}
100102
return metav1.ConditionFalse
101103
}
104+
105+
func GetIngressClassParametersNamespace(ingressClass networkingv1.IngressClass) string {
106+
namespace := "default"
107+
if ingressClass.Spec.Parameters.Namespace != nil {
108+
namespace = *ingressClass.Spec.Parameters.Namespace
109+
}
110+
if annotationNamespace, exists := ingressClass.Annotations["apisix.apache.org/parameters-namespace"]; exists && annotationNamespace != "" {
111+
namespace = annotationNamespace
112+
}
113+
return namespace
114+
}
115+
116+
func GetIngressClassV1beta1ParametersNamespace(ingressClass networkingv1beta1.IngressClass) string {
117+
namespace := "default"
118+
if ingressClass.Spec.Parameters.Namespace != nil {
119+
namespace = *ingressClass.Spec.Parameters.Namespace
120+
}
121+
if annotationNamespace, exists := ingressClass.Annotations["apisix.apache.org/parameters-namespace"]; exists && annotationNamespace != "" {
122+
namespace = annotationNamespace
123+
}
124+
return namespace
125+
}

test/e2e/crds/v2/status.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ spec:
6666
name: "apisix-proxy-config"
6767
`
6868
ingressClass := fmt.Sprintf(ingressClassYaml, framework.IngressVersion, s.Namespace())
69-
err = s.CreateResourceFromStringWithNamespace(ingressClass, "")
69+
err = s.CreateResourceFromString(ingressClass)
7070
Expect(err).NotTo(HaveOccurred(), "creating IngressClass")
7171
time.Sleep(5 * time.Second)
7272
})

0 commit comments

Comments
 (0)