Skip to content

[feature]: Support inheritance for GenericAdditionalPrinterColumn #806

@jhested

Description

@jhested

Is your feature request related to a problem? Please describe.

No response

Describe the solution you would like

In KubeOps 7 it was possible to use inheritance for GenericAdditionalPrinterColumnAttributes, which made it very simple to predefine as set of standard columns such as 'Ready' or 'Reason.

In kubeops 9 this is no longer supported so now we have to define it on each entity again and again.

KubeOps 7

[AttributeUsage(AttributeTargets.Class, AllowMultiple = true)]
public class ReadyPrinterColumnAttribute : GenericAdditionalPrinterColumnAttribute
{
    public ReadyPrinterColumnAttribute()
        : base(".status.conditions[?(@.type==\"Ready\")].status", "Ready", "string")
    {
    }
}

[KubernetesEntity(Group = "activedirectory", ApiVersion = "v1alpha1", Kind = "Group", PluralName = "groups")]
[ReadyPrinterColumn, ReasonPrinterColumn, AgePrinterColumn]
public partial class V1GroupEntity : CustomKubernetesEntity<V1GroupEntitySpec, V1GroupEntityStatus>
{
}

[KubernetesEntity(Group = "serviceaccount", ApiVersion = "v1alpha1", Kind = "Group", PluralName = "groups")]
[ReadyPrinterColumn, ReasonPrinterColumn, AgePrinterColumn]
public partial class V1ServiceAccount : CustomKubernetesEntity<V1GroupEntitySpec, V1GroupEntityStatus>
{
}

KubeOps 9

[KubernetesEntity(Group = "activedirectory", ApiVersion = "v1alpha1", Kind = "Group", PluralName = "groups")]
[GenericAdditionalPrinterColumn(".status.conditions[?(@.type==\"Ready\")].status", "Ready", "string")]
[GenericAdditionalPrinterColumn(".metadata.creationTimestamp", "Age", "date")]
[GenericAdditionalPrinterColumn(".status.conditions[?(@.type==\"Ready\")].reason", "Reason", "string")]
public partial class V1GroupEntity : CustomKubernetesEntity<V1GroupEntitySpec, V1GroupEntityStatus>
{
}

[KubernetesEntity(Group = "serviceaccount", ApiVersion = "v1alpha1", Kind = "Group", PluralName = "groups")]
[GenericAdditionalPrinterColumn(".status.conditions[?(@.type==\"Ready\")].status", "Ready", "string")]
[GenericAdditionalPrinterColumn(".metadata.creationTimestamp", "Age", "date")]
[GenericAdditionalPrinterColumn(".status.conditions[?(@.type==\"Ready\")].reason", "Reason", "string")]
public partial class V1ServiceAccount : CustomKubernetesEntity<V1GroupEntitySpec, V1GroupEntityStatus>
{
}

Additional Context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions