diff --git a/internal/example/v1alpha1/example.go b/internal/example/v1alpha1/example.go index 554aa20..5828958 100644 --- a/internal/example/v1alpha1/example.go +++ b/internal/example/v1alpha1/example.go @@ -17,9 +17,12 @@ limitations under the License. package v1alpha1 import ( + "context" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" + "sigs.k8s.io/apiserver-runtime/pkg/builder/resource/resourcestrategy" ) type ExampleResource struct { @@ -67,3 +70,38 @@ func (e *ExampleResourceList) DeepCopyObject() runtime.Object { // implemented by code generation return e } + +var _ resourcestrategy.TableConverter = &ExampleResource{} +var _ resourcestrategy.TableConverter = &ExampleResourceList{} + +var ( + definitions = []metav1.TableColumnDefinition{ + {Name: "Name", Type: "string", Format: "name", Description: "the name of the cluster"}, + } +) + +func (in *ExampleResource) ConvertToTable(ctx context.Context, tableOptions runtime.Object) (*metav1.Table, error) { + return &metav1.Table{ + ColumnDefinitions: definitions, + Rows: []metav1.TableRow{printResource(in)}, + }, nil +} + +func (in *ExampleResourceList) ConvertToTable(ctx context.Context, tableOptions runtime.Object) (*metav1.Table, error) { + t := &metav1.Table{ + ColumnDefinitions: definitions, + } + for _, c := range in.Items { + t.Rows = append(t.Rows, printResource(&c)) + } + return t, nil +} + +func printResource(c *ExampleResource) metav1.TableRow { + name := c.Name + row := metav1.TableRow{ + Object: runtime.RawExtension{Object: c}, + } + row.Cells = append(row.Cells, name) + return row +}