Skip to content

Commit abdb003

Browse files
authored
additional printer columns for CRDs (#653)
* additional printer columns for CRDs
1 parent 7715e58 commit abdb003

File tree

2 files changed

+143
-4
lines changed

2 files changed

+143
-4
lines changed

charts/postgres-operator/templates/customrresourcedefinition.yaml

Lines changed: 53 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,38 @@ spec:
1818
singular: postgresql
1919
shortNames:
2020
- pg
21+
additionalPrinterColumns:
22+
- name: Team
23+
type: string
24+
description: Team responsible for Postgres CLuster
25+
JSONPath: .spec.teamId
26+
- name: Version
27+
type: string
28+
description: PostgreSQL version
29+
JSONPath: .spec.postgresql.version
30+
- name: Pods
31+
type: integer
32+
description: Number of Pods per Postgres cluster
33+
JSONPath: .spec.numberOfInstances
34+
- name: Volume
35+
type: string
36+
description: Size of the bound volume
37+
JSONPath: .spec.volume.size
38+
- name: CPU-Request
39+
type: string
40+
description: Requested CPU for Postgres containers
41+
JSONPath: .spec.resources.requests.cpu
42+
- name: Memory-Request
43+
type: string
44+
description: Requested memory for Postgres containers
45+
JSONPath: .spec.resources.requests.memory
46+
- name: Age
47+
type: date
48+
JSONPath: .metadata.creationTimestamp
49+
- name: Status
50+
type: string
51+
description: Current sync status of postgresql resource
52+
JSONPath: .status.PostgresClusterStatus
2153
scope: Namespaced
2254
subresources:
2355
status: {}
@@ -42,7 +74,27 @@ spec:
4274
plural: operatorconfigurations
4375
singular: operatorconfiguration
4476
shortNames:
45-
- pgc
77+
- opconfig
78+
additionalPrinterColumns:
79+
- name: Image
80+
type: string
81+
description: Spilo image to be used for Pods
82+
JSONPath: .configuration.docker_image
83+
- name: Cluster-Label
84+
type: string
85+
description: Label for K8s resources created by operator
86+
JSONPath: .configuration.kubernetes.cluster_name_label
87+
- name: Service-Account
88+
type: string
89+
description: Name of service account to be used
90+
JSONPath: .configuration.kubernetes.pod_service_account_name
91+
- name: Min-Instances
92+
type: integer
93+
description: Minimum number of instances per Postgres cluster
94+
JSONPath: .configuration.min_instances
95+
- name: Age
96+
type: date
97+
JSONPath: .metadata.creationTimestamp
4698
scope: Namespaced
4799
subresources:
48100
status: {}

pkg/apis/acid.zalan.do/v1/crds.go

Lines changed: 90 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,91 @@ const (
1919
OperatorConfigCRDResourceShort = "opconfig"
2020
)
2121

22-
func buildCRD(name, kind, plural, short string) *apiextv1beta1.CustomResourceDefinition {
22+
// PostgresCRDResourceColumns definition of AdditionalPrinterColumns for postgresql CRD
23+
var PostgresCRDResourceColumns = []apiextv1beta1.CustomResourceColumnDefinition{
24+
apiextv1beta1.CustomResourceColumnDefinition{
25+
Name: "Team",
26+
Type: "string",
27+
Description: "Team responsible for Postgres cluster",
28+
JSONPath: ".spec.teamId",
29+
},
30+
apiextv1beta1.CustomResourceColumnDefinition{
31+
Name: "Version",
32+
Type: "string",
33+
Description: "PostgreSQL version",
34+
JSONPath: ".spec.postgresql.version",
35+
},
36+
apiextv1beta1.CustomResourceColumnDefinition{
37+
Name: "Pods",
38+
Type: "integer",
39+
Description: "Number of Pods per Postgres cluster",
40+
JSONPath: ".spec.numberOfInstances",
41+
},
42+
apiextv1beta1.CustomResourceColumnDefinition{
43+
Name: "Volume",
44+
Type: "string",
45+
Description: "Size of the bound volume",
46+
JSONPath: ".spec.volume.size",
47+
},
48+
apiextv1beta1.CustomResourceColumnDefinition{
49+
Name: "CPU-Request",
50+
Type: "string",
51+
Description: "Requested CPU for Postgres containers",
52+
JSONPath: ".spec.resources.requests.cpu",
53+
},
54+
apiextv1beta1.CustomResourceColumnDefinition{
55+
Name: "Memory-Request",
56+
Type: "string",
57+
Description: "Requested memory for Postgres containers",
58+
JSONPath: ".spec.resources.requests.memory",
59+
},
60+
apiextv1beta1.CustomResourceColumnDefinition{
61+
Name: "Age",
62+
Type: "date",
63+
JSONPath: ".metadata.creationTimestamp",
64+
},
65+
apiextv1beta1.CustomResourceColumnDefinition{
66+
Name: "Status",
67+
Type: "string",
68+
Description: "Current sync status of postgresql resource",
69+
JSONPath: ".status.PostgresClusterStatus",
70+
},
71+
}
72+
73+
// OperatorConfigCRDResourceColumns definition of AdditionalPrinterColumns for OperatorConfiguration CRD
74+
var OperatorConfigCRDResourceColumns = []apiextv1beta1.CustomResourceColumnDefinition{
75+
apiextv1beta1.CustomResourceColumnDefinition{
76+
Name: "Image",
77+
Type: "string",
78+
Description: "Spilo image to be used for Pods",
79+
JSONPath: ".configuration.docker_image",
80+
},
81+
apiextv1beta1.CustomResourceColumnDefinition{
82+
Name: "Cluster-Label",
83+
Type: "string",
84+
Description: "Label for K8s resources created by operator",
85+
JSONPath: ".configuration.kubernetes.cluster_name_label",
86+
},
87+
apiextv1beta1.CustomResourceColumnDefinition{
88+
Name: "Service-Account",
89+
Type: "string",
90+
Description: "Name of service account to be used",
91+
JSONPath: ".configuration.kubernetes.pod_service_account_name",
92+
},
93+
apiextv1beta1.CustomResourceColumnDefinition{
94+
Name: "Min-Instances",
95+
Type: "integer",
96+
Description: "Minimum number of instances per Postgres cluster",
97+
JSONPath: ".configuration.min_instances",
98+
},
99+
apiextv1beta1.CustomResourceColumnDefinition{
100+
Name: "Age",
101+
Type: "date",
102+
JSONPath: ".metadata.creationTimestamp",
103+
},
104+
}
105+
106+
func buildCRD(name, kind, plural, short string, columns []apiextv1beta1.CustomResourceColumnDefinition) *apiextv1beta1.CustomResourceDefinition {
23107
return &apiextv1beta1.CustomResourceDefinition{
24108
ObjectMeta: metav1.ObjectMeta{
25109
Name: name,
@@ -36,6 +120,7 @@ func buildCRD(name, kind, plural, short string) *apiextv1beta1.CustomResourceDef
36120
Subresources: &apiextv1beta1.CustomResourceSubresources{
37121
Status: &apiextv1beta1.CustomResourceSubresourceStatus{},
38122
},
123+
AdditionalPrinterColumns: columns,
39124
},
40125
}
41126
}
@@ -45,13 +130,15 @@ func PostgresCRD() *apiextv1beta1.CustomResourceDefinition {
45130
return buildCRD(PostgresCRDResouceName,
46131
PostgresCRDResourceKind,
47132
PostgresCRDResourcePlural,
48-
PostgresCRDResourceShort)
133+
PostgresCRDResourceShort,
134+
PostgresCRDResourceColumns)
49135
}
50136

51137
// ConfigurationCRD returns CustomResourceDefinition built from OperatorConfigCRDResource
52138
func ConfigurationCRD() *apiextv1beta1.CustomResourceDefinition {
53139
return buildCRD(OperatorConfigCRDResourceName,
54140
OperatorConfigCRDResouceKind,
55141
OperatorConfigCRDResourcePlural,
56-
OperatorConfigCRDResourceShort)
142+
OperatorConfigCRDResourceShort,
143+
OperatorConfigCRDResourceColumns)
57144
}

0 commit comments

Comments
 (0)