github.com/oam-dev/kubevela@v1.9.11/apis/core.oam.dev/v1beta1/register.go (about)

     1  /*
     2   Copyright 2021. The KubeVela Authors.
     3  
     4   Licensed under the Apache License, Version 2.0 (the "License");
     5   you may not use this file except in compliance with the License.
     6   You may obtain a copy of the License at
     7  
     8       http://www.apache.org/licenses/LICENSE-2.0
     9  
    10   Unless required by applicable law or agreed to in writing, software
    11   distributed under the License is distributed on an "AS IS" BASIS,
    12   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13   See the License for the specific language governing permissions and
    14   limitations under the License.
    15  */
    16  
    17  package v1beta1
    18  
    19  import (
    20  	"reflect"
    21  
    22  	"k8s.io/apimachinery/pkg/runtime/schema"
    23  	k8sscheme "k8s.io/client-go/kubernetes/scheme"
    24  	"sigs.k8s.io/controller-runtime/pkg/scheme"
    25  
    26  	"github.com/oam-dev/kubevela/apis/core.oam.dev/common"
    27  )
    28  
    29  // Package type metadata.
    30  const (
    31  	Group   = common.Group
    32  	Version = "v1beta1"
    33  )
    34  
    35  var (
    36  	// SchemeGroupVersion is group version used to register these objects
    37  	SchemeGroupVersion = schema.GroupVersion{Group: Group, Version: Version}
    38  
    39  	// SchemeBuilder is used to add go types to the GroupVersionKind scheme
    40  	SchemeBuilder = &scheme.Builder{GroupVersion: SchemeGroupVersion}
    41  
    42  	// AddToScheme is a global function that registers this API group & version to a scheme
    43  	AddToScheme = SchemeBuilder.AddToScheme
    44  )
    45  
    46  // ComponentDefinition type metadata.
    47  var (
    48  	ComponentDefinitionKind             = reflect.TypeOf(ComponentDefinition{}).Name()
    49  	ComponentDefinitionGroupKind        = schema.GroupKind{Group: Group, Kind: ComponentDefinitionKind}.String()
    50  	ComponentDefinitionKindAPIVersion   = ComponentDefinitionKind + "." + SchemeGroupVersion.String()
    51  	ComponentDefinitionGroupVersionKind = SchemeGroupVersion.WithKind(ComponentDefinitionKind)
    52  )
    53  
    54  // WorkloadDefinition type metadata.
    55  var (
    56  	WorkloadDefinitionKind             = reflect.TypeOf(WorkloadDefinition{}).Name()
    57  	WorkloadDefinitionGroupKind        = schema.GroupKind{Group: Group, Kind: WorkloadDefinitionKind}.String()
    58  	WorkloadDefinitionKindAPIVersion   = WorkloadDefinitionKind + "." + SchemeGroupVersion.String()
    59  	WorkloadDefinitionGroupVersionKind = SchemeGroupVersion.WithKind(WorkloadDefinitionKind)
    60  )
    61  
    62  // TraitDefinition type metadata.
    63  var (
    64  	TraitDefinitionKind             = reflect.TypeOf(TraitDefinition{}).Name()
    65  	TraitDefinitionGroupKind        = schema.GroupKind{Group: Group, Kind: TraitDefinitionKind}.String()
    66  	TraitDefinitionKindAPIVersion   = TraitDefinitionKind + "." + SchemeGroupVersion.String()
    67  	TraitDefinitionGroupVersionKind = SchemeGroupVersion.WithKind(TraitDefinitionKind)
    68  )
    69  
    70  // PolicyDefinition type metadata.
    71  var (
    72  	PolicyDefinitionKind             = reflect.TypeOf(PolicyDefinition{}).Name()
    73  	PolicyDefinitionGroupKind        = schema.GroupKind{Group: Group, Kind: PolicyDefinitionKind}.String()
    74  	PolicyDefinitionKindAPIVersion   = PolicyDefinitionKind + "." + SchemeGroupVersion.String()
    75  	PolicyDefinitionGroupVersionKind = SchemeGroupVersion.WithKind(PolicyDefinitionKind)
    76  )
    77  
    78  // WorkflowStepDefinition type metadata.
    79  var (
    80  	WorkflowStepDefinitionKind             = reflect.TypeOf(WorkflowStepDefinition{}).Name()
    81  	WorkflowStepDefinitionGroupKind        = schema.GroupKind{Group: Group, Kind: WorkflowStepDefinitionKind}.String()
    82  	WorkflowStepDefinitionKindAPIVersion   = WorkflowStepDefinitionKind + "." + SchemeGroupVersion.String()
    83  	WorkflowStepDefinitionGroupVersionKind = SchemeGroupVersion.WithKind(WorkflowStepDefinitionKind)
    84  )
    85  
    86  // DefinitionRevision type metadata.
    87  var (
    88  	DefinitionRevisionKind             = reflect.TypeOf(DefinitionRevision{}).Name()
    89  	DefinitionRevisionGroupKind        = schema.GroupKind{Group: Group, Kind: DefinitionRevisionKind}.String()
    90  	DefinitionRevisionKindAPIVersion   = DefinitionRevisionKind + "." + SchemeGroupVersion.String()
    91  	DefinitionRevisionGroupVersionKind = SchemeGroupVersion.WithKind(DefinitionRevisionKind)
    92  )
    93  
    94  // Application type metadata.
    95  var (
    96  	ApplicationKind            = reflect.TypeOf(Application{}).Name()
    97  	ApplicationGroupKind       = schema.GroupKind{Group: Group, Kind: ApplicationKind}.String()
    98  	ApplicationKindAPIVersion  = ApplicationKind + "." + SchemeGroupVersion.String()
    99  	ApplicationKindVersionKind = SchemeGroupVersion.WithKind(ApplicationKind)
   100  )
   101  
   102  // ApplicationRevision type metadata
   103  var (
   104  	ApplicationRevisionKind             = reflect.TypeOf(ApplicationRevision{}).Name()
   105  	ApplicationRevisionGroupKind        = schema.GroupKind{Group: Group, Kind: ApplicationRevisionKind}.String()
   106  	ApplicationRevisionKindAPIVersion   = ApplicationRevisionKind + "." + SchemeGroupVersion.String()
   107  	ApplicationRevisionGroupVersionKind = SchemeGroupVersion.WithKind(ApplicationRevisionKind)
   108  )
   109  
   110  // ResourceTracker type metadata.
   111  var (
   112  	ResourceTrackerKind            = reflect.TypeOf(ResourceTracker{}).Name()
   113  	ResourceTrackerGroupKind       = schema.GroupKind{Group: Group, Kind: ResourceTrackerKind}.String()
   114  	ResourceTrackerKindAPIVersion  = ResourceTrackerKind + "." + SchemeGroupVersion.String()
   115  	ResourceTrackerKindVersionKind = SchemeGroupVersion.WithKind(ResourceTrackerKind)
   116  )
   117  
   118  func init() {
   119  	SchemeBuilder.Register(&ComponentDefinition{}, &ComponentDefinitionList{})
   120  	SchemeBuilder.Register(&WorkloadDefinition{}, &WorkloadDefinitionList{})
   121  	SchemeBuilder.Register(&TraitDefinition{}, &TraitDefinitionList{})
   122  	SchemeBuilder.Register(&PolicyDefinition{}, &PolicyDefinitionList{})
   123  	SchemeBuilder.Register(&WorkflowStepDefinition{}, &WorkflowStepDefinitionList{})
   124  	SchemeBuilder.Register(&DefinitionRevision{}, &DefinitionRevisionList{})
   125  	SchemeBuilder.Register(&Application{}, &ApplicationList{})
   126  	SchemeBuilder.Register(&ApplicationRevision{}, &ApplicationRevisionList{})
   127  	SchemeBuilder.Register(&ResourceTracker{}, &ResourceTrackerList{})
   128  	_ = SchemeBuilder.AddToScheme(k8sscheme.Scheme)
   129  }
   130  
   131  // Resource takes an unqualified resource and returns a Group qualified GroupResource
   132  func Resource(resource string) schema.GroupResource {
   133  	return SchemeGroupVersion.WithResource(resource).GroupResource()
   134  }