Skip to content

Commit 7df5711

Browse files
authored
Merge pull request #35 from yue9944882/printer-example
Adding example for custom printers
2 parents e20867a + ef474c0 commit 7df5711

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed

internal/example/v1alpha1/example.go

+38
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,12 @@ limitations under the License.
1717
package v1alpha1
1818

1919
import (
20+
"context"
21+
2022
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2123
"k8s.io/apimachinery/pkg/runtime"
2224
"k8s.io/apimachinery/pkg/runtime/schema"
25+
"sigs.k8s.io/apiserver-runtime/pkg/builder/resource/resourcestrategy"
2326
)
2427

2528
type ExampleResource struct {
@@ -67,3 +70,38 @@ func (e *ExampleResourceList) DeepCopyObject() runtime.Object {
6770
// implemented by code generation
6871
return e
6972
}
73+
74+
var _ resourcestrategy.TableConverter = &ExampleResource{}
75+
var _ resourcestrategy.TableConverter = &ExampleResourceList{}
76+
77+
var (
78+
definitions = []metav1.TableColumnDefinition{
79+
{Name: "Name", Type: "string", Format: "name", Description: "the name of the cluster"},
80+
}
81+
)
82+
83+
func (in *ExampleResource) ConvertToTable(ctx context.Context, tableOptions runtime.Object) (*metav1.Table, error) {
84+
return &metav1.Table{
85+
ColumnDefinitions: definitions,
86+
Rows: []metav1.TableRow{printResource(in)},
87+
}, nil
88+
}
89+
90+
func (in *ExampleResourceList) ConvertToTable(ctx context.Context, tableOptions runtime.Object) (*metav1.Table, error) {
91+
t := &metav1.Table{
92+
ColumnDefinitions: definitions,
93+
}
94+
for _, c := range in.Items {
95+
t.Rows = append(t.Rows, printResource(&c))
96+
}
97+
return t, nil
98+
}
99+
100+
func printResource(c *ExampleResource) metav1.TableRow {
101+
name := c.Name
102+
row := metav1.TableRow{
103+
Object: runtime.RawExtension{Object: c},
104+
}
105+
row.Cells = append(row.Cells, name)
106+
return row
107+
}

0 commit comments

Comments
 (0)