Merge pull request #135108 from scaliby/remove-deprecated-ic-api

Drop support for networkingv1beta1.IngressClass in kubectl

Kubernetes-commit: 07faa17f8fa8daa803408ea9409410d198516708
This commit is contained in:
Kubernetes Publisher 2025-11-05 05:52:52 -08:00
commit 3e0ce445d5
2 changed files with 25 additions and 85 deletions

View file

@ -212,7 +212,6 @@ func describerMap(clientConfig *rest.Config) (map[schema.GroupKind]ResourceDescr
{Group: autoscalingv2.GroupName, Kind: "HorizontalPodAutoscaler"}: &HorizontalPodAutoscalerDescriber{c},
{Group: extensionsv1beta1.GroupName, Kind: "Ingress"}: &IngressDescriber{c},
{Group: networkingv1beta1.GroupName, Kind: "Ingress"}: &IngressDescriber{c},
{Group: networkingv1beta1.GroupName, Kind: "IngressClass"}: &IngressClassDescriber{c},
{Group: networkingv1.GroupName, Kind: "Ingress"}: &IngressDescriber{c},
{Group: networkingv1.GroupName, Kind: "IngressClass"}: &IngressClassDescriber{c},
{Group: networkingv1beta1.GroupName, Kind: "ServiceCIDR"}: &ServiceCIDRDescriber{c},
@ -2820,45 +2819,14 @@ type IngressClassDescriber struct {
func (i *IngressClassDescriber) Describe(namespace, name string, describerSettings DescriberSettings) (string, error) {
var events *corev1.EventList
// try IngressClass/v1 first (v1.19) and fallback to IngressClass/v1beta if an err occurs
netV1, err := i.client.NetworkingV1().IngressClasses().Get(context.TODO(), name, metav1.GetOptions{})
if err == nil {
if describerSettings.ShowEvents {
events, _ = searchEvents(i.client.CoreV1(), netV1, describerSettings.ChunkSize)
}
return i.describeIngressClassV1(netV1, events)
if err != nil {
return "", err
}
netV1beta1, err := i.client.NetworkingV1beta1().IngressClasses().Get(context.TODO(), name, metav1.GetOptions{})
if err == nil {
if describerSettings.ShowEvents {
events, _ = searchEvents(i.client.CoreV1(), netV1beta1, describerSettings.ChunkSize)
}
return i.describeIngressClassV1beta1(netV1beta1, events)
if describerSettings.ShowEvents {
events, _ = searchEvents(i.client.CoreV1(), netV1, describerSettings.ChunkSize)
}
return "", err
}
func (i *IngressClassDescriber) describeIngressClassV1beta1(ic *networkingv1beta1.IngressClass, events *corev1.EventList) (string, error) {
return tabbedString(func(out io.Writer) error {
w := NewPrefixWriter(out)
w.Write(LEVEL_0, "Name:\t%s\n", ic.Name)
printLabelsMultiline(w, "Labels", ic.Labels)
printAnnotationsMultiline(w, "Annotations", ic.Annotations)
w.Write(LEVEL_0, "Controller:\t%v\n", ic.Spec.Controller)
if ic.Spec.Parameters != nil {
w.Write(LEVEL_0, "Parameters:\n")
if ic.Spec.Parameters.APIGroup != nil {
w.Write(LEVEL_1, "APIGroup:\t%v\n", *ic.Spec.Parameters.APIGroup)
}
w.Write(LEVEL_1, "Kind:\t%v\n", ic.Spec.Parameters.Kind)
w.Write(LEVEL_1, "Name:\t%v\n", ic.Spec.Parameters.Name)
}
if events != nil {
DescribeEvents(events, w)
}
return nil
})
return i.describeIngressClassV1(netV1, events)
}
func (i *IngressClassDescriber) describeIngressClassV1(ic *networkingv1.IngressClass, events *corev1.EventList) (string, error) {

View file

@ -5470,57 +5470,29 @@ Parameters:
Kind: ConfigMap
Name: example-parameters` + "\n"
tests := map[string]struct {
input *fake.Clientset
output string
}{
"basic IngressClass (v1beta1)": {
input: fake.NewClientset(&networkingv1beta1.IngressClass{
ObjectMeta: metav1.ObjectMeta{
Name: "example-class",
},
Spec: networkingv1beta1.IngressClassSpec{
Controller: "example.com/controller",
Parameters: &networkingv1beta1.IngressClassParametersReference{
APIGroup: ptr.To("v1"),
Kind: "ConfigMap",
Name: "example-parameters",
},
},
}),
output: expectedOut,
input := fake.NewClientset(&networkingv1.IngressClass{
ObjectMeta: metav1.ObjectMeta{
Name: "example-class",
},
"basic IngressClass (v1)": {
input: fake.NewClientset(&networkingv1.IngressClass{
ObjectMeta: metav1.ObjectMeta{
Name: "example-class",
},
Spec: networkingv1.IngressClassSpec{
Controller: "example.com/controller",
Parameters: &networkingv1.IngressClassParametersReference{
APIGroup: ptr.To("v1"),
Kind: "ConfigMap",
Name: "example-parameters",
},
},
}),
output: expectedOut,
Spec: networkingv1.IngressClassSpec{
Controller: "example.com/controller",
Parameters: &networkingv1.IngressClassParametersReference{
APIGroup: ptr.To("v1"),
Kind: "ConfigMap",
Name: "example-parameters",
},
},
}
})
for name, test := range tests {
t.Run(name, func(t *testing.T) {
c := &describeClient{T: t, Namespace: "foo", Interface: test.input}
d := IngressClassDescriber{c}
out, err := d.Describe("", "example-class", DescriberSettings{})
if err != nil {
t.Errorf("unexpected error: %v", err)
}
if out != expectedOut {
t.Log(out)
t.Errorf("expected : %q\n but got output:\n %q", test.output, out)
}
})
c := &describeClient{T: t, Namespace: "foo", Interface: input}
d := IngressClassDescriber{c}
out, err := d.Describe("", "example-class", DescriberSettings{})
if err != nil {
t.Errorf("unexpected error: %v", err)
}
if out != expectedOut {
t.Log(out)
t.Errorf("expected : %q\n but got output:\n %q", expectedOut, out)
}
}