Skip to content

Commit 1a0506b

Browse files
authored
Merge pull request #517 from Iceber/fix_apiservices_table_0.6
[release/0.6] kubeapiserver: add the table convertor for apiservices
2 parents 93dc754 + 80de4e0 commit 1a0506b

File tree

6 files changed

+165
-1
lines changed

6 files changed

+165
-1
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package printers
2+
3+
import (
4+
"fmt"
5+
6+
metatable "k8s.io/apimachinery/pkg/api/meta/table"
7+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
8+
"k8s.io/apimachinery/pkg/runtime"
9+
"k8s.io/kube-aggregator/pkg/apis/apiregistration"
10+
"k8s.io/kubernetes/pkg/printers"
11+
)
12+
13+
func AddAPIServiceHandler(h printers.PrintHandler) {
14+
columnDefinitions := []metav1.TableColumnDefinition{
15+
{Name: "Name", Type: "string", Format: "name", Description: swaggerMetadataDescriptions["name"]},
16+
{Name: "Service", Type: "string", Description: "The reference to the service that hosts this API endpoint."},
17+
{Name: "Available", Type: "string", Description: "Whether this service is available."},
18+
{Name: "Age", Type: "string", Description: swaggerMetadataDescriptions["creationTimestamp"]},
19+
}
20+
21+
_ = h.TableHandler(columnDefinitions, func(list *apiregistration.APIServiceList, options printers.GenerateOptions) ([]metav1.TableRow, error) {
22+
return metatable.MetaToTableRow(list, apiServiceHandler)
23+
})
24+
_ = h.TableHandler(columnDefinitions, func(apiservice *apiregistration.APIService, options printers.GenerateOptions) ([]metav1.TableRow, error) {
25+
return metatable.MetaToTableRow(apiservice, apiServiceHandler)
26+
})
27+
}
28+
29+
// k8s.io/kube-aggregator/pkg/registry/apiservice/etcd.(*REST).ConvertToTable
30+
func apiServiceHandler(obj runtime.Object, m metav1.Object, name, age string) ([]interface{}, error) {
31+
svc := obj.(*apiregistration.APIService)
32+
service := "Local"
33+
if svc.Spec.Service != nil {
34+
service = fmt.Sprintf("%s/%s", svc.Spec.Service.Namespace, svc.Spec.Service.Name)
35+
}
36+
status := string(apiregistration.ConditionUnknown)
37+
if condition := getCondition(svc.Status.Conditions, "Available"); condition != nil {
38+
switch {
39+
case condition.Status == apiregistration.ConditionTrue:
40+
status = string(condition.Status)
41+
case len(condition.Reason) > 0:
42+
status = fmt.Sprintf("%s (%s)", condition.Status, condition.Reason)
43+
default:
44+
status = string(condition.Status)
45+
}
46+
}
47+
return []interface{}{name, service, status, age}, nil
48+
}
49+
50+
func getCondition(conditions []apiregistration.APIServiceCondition, conditionType apiregistration.APIServiceConditionType) *apiregistration.APIServiceCondition {
51+
for i, condition := range conditions {
52+
if condition.Type == conditionType {
53+
return &conditions[i]
54+
}
55+
}
56+
return nil
57+
}

pkg/kubeapiserver/restmanager.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -480,5 +480,5 @@ func GetTableConvertor(gr schema.GroupResource) rest.TableConvertor {
480480
return printers.NewDefaultTableConvertor(gr)
481481
}
482482

483-
return printerstorage.TableConvertor{TableGenerator: printers.NewClusterTableGenerator().With(printersinternal.AddHandlers)}
483+
return printerstorage.TableConvertor{TableGenerator: printers.NewClusterTableGenerator().With(printersinternal.AddHandlers, printers.AddAPIServiceHandler)}
484484
}

pkg/scheme/import_known_versions.go

+2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package scheme
33
import (
44
// These imports are the API groups the API server will support.
55
apiextensionsinstall "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/install"
6+
apiregistrationinstall "k8s.io/kube-aggregator/pkg/apis/apiregistration/install"
67
_ "k8s.io/kubernetes/pkg/apis/admission/install"
78
_ "k8s.io/kubernetes/pkg/apis/admissionregistration/install"
89
_ "k8s.io/kubernetes/pkg/apis/apiserverinternal/install"
@@ -29,4 +30,5 @@ import (
2930

3031
func init() {
3132
apiextensionsinstall.Install(LegacyResourceScheme)
33+
apiregistrationinstall.Install(LegacyResourceScheme)
3234
}

vendor/k8s.io/apimachinery/pkg/api/meta/table/table.go

+70
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/k8s.io/kube-aggregator/pkg/apis/apiregistration/install/install.go

+33
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/modules.txt

+2
Original file line numberDiff line numberDiff line change
@@ -668,6 +668,7 @@ k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextension
668668
k8s.io/apimachinery/pkg/api/equality
669669
k8s.io/apimachinery/pkg/api/errors
670670
k8s.io/apimachinery/pkg/api/meta
671+
k8s.io/apimachinery/pkg/api/meta/table
671672
k8s.io/apimachinery/pkg/api/resource
672673
k8s.io/apimachinery/pkg/api/validation
673674
k8s.io/apimachinery/pkg/api/validation/path
@@ -1168,6 +1169,7 @@ k8s.io/klog/v2/internal/severity
11681169
# k8s.io/kube-aggregator v0.0.0 => k8s.io/kube-aggregator v0.25.2
11691170
## explicit; go 1.19
11701171
k8s.io/kube-aggregator/pkg/apis/apiregistration
1172+
k8s.io/kube-aggregator/pkg/apis/apiregistration/install
11711173
k8s.io/kube-aggregator/pkg/apis/apiregistration/v1
11721174
k8s.io/kube-aggregator/pkg/apis/apiregistration/v1/helper
11731175
k8s.io/kube-aggregator/pkg/apis/apiregistration/v1beta1

0 commit comments

Comments
 (0)