diff --git a/apis/core/v1alpha1/openapi_generated.go b/apis/core/v1alpha1/openapi_generated.go index dd5f52ca8..d01dfd2bb 100644 --- a/apis/core/v1alpha1/openapi_generated.go +++ b/apis/core/v1alpha1/openapi_generated.go @@ -16236,7 +16236,7 @@ func schema_kmodulesxyz_client_go_api_v1_CertificateSpec(ref common.ReferenceCal }, "renewBefore": { SchemaProps: spec.SchemaProps{ - Description: "Certificate renew before expiration duration", + Description: "Certificate renew before expiration duration\n\nDeprecated use `ReconfigureTLS` type OpsRequest instead.", Ref: ref("k8s.io/apimachinery/pkg/apis/meta/v1.Duration"), }, }, @@ -16352,8 +16352,7 @@ func schema_kmodulesxyz_client_go_api_v1_ClusterInfo(ref common.ReferenceCallbac }, "capi": { SchemaProps: spec.SchemaProps{ - Default: map[string]interface{}{}, - Ref: ref("kmodules.xyz/client-go/api/v1.CAPIClusterInfo"), + Ref: ref("kmodules.xyz/client-go/api/v1.CAPIClusterInfo"), }, }, }, diff --git a/apis/identity/v1alpha1/openapi_generated.go b/apis/identity/v1alpha1/openapi_generated.go index a7b3ea27e..0d2588d2c 100644 --- a/apis/identity/v1alpha1/openapi_generated.go +++ b/apis/identity/v1alpha1/openapi_generated.go @@ -16227,7 +16227,7 @@ func schema_kmodulesxyz_client_go_api_v1_CertificateSpec(ref common.ReferenceCal }, "renewBefore": { SchemaProps: spec.SchemaProps{ - Description: "Certificate renew before expiration duration", + Description: "Certificate renew before expiration duration\n\nDeprecated use `ReconfigureTLS` type OpsRequest instead.", Ref: ref("k8s.io/apimachinery/pkg/apis/meta/v1.Duration"), }, }, @@ -16343,8 +16343,7 @@ func schema_kmodulesxyz_client_go_api_v1_ClusterInfo(ref common.ReferenceCallbac }, "capi": { SchemaProps: spec.SchemaProps{ - Default: map[string]interface{}{}, - Ref: ref("kmodules.xyz/client-go/api/v1.CAPIClusterInfo"), + Ref: ref("kmodules.xyz/client-go/api/v1.CAPIClusterInfo"), }, }, }, diff --git a/apis/management/v1alpha1/openapi_generated.go b/apis/management/v1alpha1/openapi_generated.go index 4c5d8f3d7..50cf19dbc 100644 --- a/apis/management/v1alpha1/openapi_generated.go +++ b/apis/management/v1alpha1/openapi_generated.go @@ -16216,7 +16216,7 @@ func schema_kmodulesxyz_client_go_api_v1_CertificateSpec(ref common.ReferenceCal }, "renewBefore": { SchemaProps: spec.SchemaProps{ - Description: "Certificate renew before expiration duration", + Description: "Certificate renew before expiration duration\n\nDeprecated use `ReconfigureTLS` type OpsRequest instead.", Ref: ref("k8s.io/apimachinery/pkg/apis/meta/v1.Duration"), }, }, @@ -16332,8 +16332,7 @@ func schema_kmodulesxyz_client_go_api_v1_ClusterInfo(ref common.ReferenceCallbac }, "capi": { SchemaProps: spec.SchemaProps{ - Default: map[string]interface{}{}, - Ref: ref("kmodules.xyz/client-go/api/v1.CAPIClusterInfo"), + Ref: ref("kmodules.xyz/client-go/api/v1.CAPIClusterInfo"), }, }, }, diff --git a/apis/meta/v1alpha1/clusterprofile_types.go b/apis/meta/v1alpha1/clusterprofile_types.go index c2796ef5d..221b542d8 100644 --- a/apis/meta/v1alpha1/clusterprofile_types.go +++ b/apis/meta/v1alpha1/clusterprofile_types.go @@ -17,25 +17,11 @@ limitations under the License. package v1alpha1 import ( - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" -) + uiapi "kmodules.xyz/resource-metadata/apis/ui/v1alpha1" -const ( - ResourceKindClusterProfile = "ClusterProfile" - ResourceClusterProfile = "clusterprofile" - ResourceClusterProfiles = "clusterprofiles" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) -// ClusterProfileSpec defines the desired state of ClusterProfile -type ClusterProfileSpec struct { - Title string `json:"title"` - Description string `json:"description"` - Provider string `json:"provider,omitempty"` - RequiredFeatureSets map[string]FeatureList `json:"requiredFeatureSets,omitempty"` -} - -// ClusterProfile is the Schema for the clusterprofiles API - // +genclient // +genclient:nonNamespaced // +genclient:skipVerbs=updateStatus @@ -47,18 +33,17 @@ type ClusterProfileSpec struct { // +kubebuilder:printcolumn:name="Status",type="string",JSONPath=".status.phase" // +kubebuilder:printcolumn:name="Age",type="date",JSONPath=".metadata.creationTimestamp" type ClusterProfile struct { - metav1.TypeMeta `json:",inline"` + metav1.TypeMeta `json:",inline"` + // +optional metav1.ObjectMeta `json:"metadata,omitempty"` - - Spec ClusterProfileSpec `json:"spec,omitempty"` + Spec uiapi.ClusterProfileSpec `json:"spec,omitempty"` } // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object // +kubebuilder:object:root=true -// ClusterProfileList contains a list of ClusterProfile type ClusterProfileList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` - Items []ClusterProfile `json:"items"` + Items []ClusterProfile `json:"items,omitempty"` } diff --git a/apis/meta/v1alpha1/openapi_generated.go b/apis/meta/v1alpha1/openapi_generated.go index 00643b0e3..fa553458b 100644 --- a/apis/meta/v1alpha1/openapi_generated.go +++ b/apis/meta/v1alpha1/openapi_generated.go @@ -359,7 +359,6 @@ func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenA "kmodules.xyz/resource-metadata/apis/meta/v1alpha1.ChartPresetQuery": schema_resource_metadata_apis_meta_v1alpha1_ChartPresetQuery(ref), "kmodules.xyz/resource-metadata/apis/meta/v1alpha1.ClusterProfile": schema_resource_metadata_apis_meta_v1alpha1_ClusterProfile(ref), "kmodules.xyz/resource-metadata/apis/meta/v1alpha1.ClusterProfileList": schema_resource_metadata_apis_meta_v1alpha1_ClusterProfileList(ref), - "kmodules.xyz/resource-metadata/apis/meta/v1alpha1.ClusterProfileSpec": schema_resource_metadata_apis_meta_v1alpha1_ClusterProfileSpec(ref), "kmodules.xyz/resource-metadata/apis/meta/v1alpha1.ClusterStatus": schema_resource_metadata_apis_meta_v1alpha1_ClusterStatus(ref), "kmodules.xyz/resource-metadata/apis/meta/v1alpha1.ClusterStatusResponse": schema_resource_metadata_apis_meta_v1alpha1_ClusterStatusResponse(ref), "kmodules.xyz/resource-metadata/apis/meta/v1alpha1.ColorDefinition": schema_resource_metadata_apis_meta_v1alpha1_ColorDefinition(ref), @@ -16306,7 +16305,7 @@ func schema_kmodulesxyz_client_go_api_v1_CertificateSpec(ref common.ReferenceCal }, "renewBefore": { SchemaProps: spec.SchemaProps{ - Description: "Certificate renew before expiration duration", + Description: "Certificate renew before expiration duration\n\nDeprecated use `ReconfigureTLS` type OpsRequest instead.", Ref: ref("k8s.io/apimachinery/pkg/apis/meta/v1.Duration"), }, }, @@ -16422,8 +16421,7 @@ func schema_kmodulesxyz_client_go_api_v1_ClusterInfo(ref common.ReferenceCallbac }, "capi": { SchemaProps: spec.SchemaProps{ - Default: map[string]interface{}{}, - Ref: ref("kmodules.xyz/client-go/api/v1.CAPIClusterInfo"), + Ref: ref("kmodules.xyz/client-go/api/v1.CAPIClusterInfo"), }, }, }, @@ -18920,14 +18918,14 @@ func schema_resource_metadata_apis_meta_v1alpha1_ClusterProfile(ref common.Refer "spec": { SchemaProps: spec.SchemaProps{ Default: map[string]interface{}{}, - Ref: ref("kmodules.xyz/resource-metadata/apis/meta/v1alpha1.ClusterProfileSpec"), + Ref: ref("kmodules.xyz/resource-metadata/apis/ui/v1alpha1.ClusterProfileSpec"), }, }, }, }, }, Dependencies: []string{ - "k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta", "kmodules.xyz/resource-metadata/apis/meta/v1alpha1.ClusterProfileSpec"}, + "k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta", "kmodules.xyz/resource-metadata/apis/ui/v1alpha1.ClusterProfileSpec"}, } } @@ -18935,8 +18933,7 @@ func schema_resource_metadata_apis_meta_v1alpha1_ClusterProfileList(ref common.R return common.OpenAPIDefinition{ Schema: spec.Schema{ SchemaProps: spec.SchemaProps{ - Description: "ClusterProfileList contains a list of ClusterProfile", - Type: []string{"object"}, + Type: []string{"object"}, Properties: map[string]spec.Schema{ "kind": { SchemaProps: spec.SchemaProps{ @@ -18972,7 +18969,6 @@ func schema_resource_metadata_apis_meta_v1alpha1_ClusterProfileList(ref common.R }, }, }, - Required: []string{"items"}, }, }, Dependencies: []string{ @@ -18980,62 +18976,6 @@ func schema_resource_metadata_apis_meta_v1alpha1_ClusterProfileList(ref common.R } } -func schema_resource_metadata_apis_meta_v1alpha1_ClusterProfileSpec(ref common.ReferenceCallback) common.OpenAPIDefinition { - return common.OpenAPIDefinition{ - Schema: spec.Schema{ - SchemaProps: spec.SchemaProps{ - Description: "ClusterProfileSpec defines the desired state of ClusterProfile", - Type: []string{"object"}, - Properties: map[string]spec.Schema{ - "title": { - SchemaProps: spec.SchemaProps{ - Default: "", - Type: []string{"string"}, - Format: "", - }, - }, - "description": { - SchemaProps: spec.SchemaProps{ - Default: "", - Type: []string{"string"}, - Format: "", - }, - }, - "provider": { - SchemaProps: spec.SchemaProps{ - Type: []string{"string"}, - Format: "", - }, - }, - "requiredFeatureSets": { - SchemaProps: spec.SchemaProps{ - Type: []string{"object"}, - AdditionalProperties: &spec.SchemaOrBool{ - Allows: true, - Schema: &spec.Schema{ - SchemaProps: spec.SchemaProps{ - Type: []string{"array"}, - Items: &spec.SchemaOrArray{ - Schema: &spec.Schema{ - SchemaProps: spec.SchemaProps{ - Default: "", - Type: []string{"string"}, - Format: "", - }, - }, - }, - }, - }, - }, - }, - }, - }, - Required: []string{"title", "description"}, - }, - }, - } -} - func schema_resource_metadata_apis_meta_v1alpha1_ClusterStatus(ref common.ReferenceCallback) common.OpenAPIDefinition { return common.OpenAPIDefinition{ Schema: spec.Schema{ diff --git a/apis/meta/v1alpha1/zz_generated.deepcopy.go b/apis/meta/v1alpha1/zz_generated.deepcopy.go index 61c6504a8..b0b4686ea 100644 --- a/apis/meta/v1alpha1/zz_generated.deepcopy.go +++ b/apis/meta/v1alpha1/zz_generated.deepcopy.go @@ -149,37 +149,6 @@ func (in *ClusterProfileList) DeepCopyObject() runtime.Object { return nil } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ClusterProfileSpec) DeepCopyInto(out *ClusterProfileSpec) { - *out = *in - if in.RequiredFeatureSets != nil { - in, out := &in.RequiredFeatureSets, &out.RequiredFeatureSets - *out = make(map[string]FeatureList, len(*in)) - for key, val := range *in { - var outVal []string - if val == nil { - (*out)[key] = nil - } else { - in, out := &val, &outVal - *out = make(FeatureList, len(*in)) - copy(*out, *in) - } - (*out)[key] = outVal - } - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterProfileSpec. -func (in *ClusterProfileSpec) DeepCopy() *ClusterProfileSpec { - if in == nil { - return nil - } - out := new(ClusterProfileSpec) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ClusterStatus) DeepCopyInto(out *ClusterStatus) { *out = *in diff --git a/apis/node/v1alpha1/openapi_generated.go b/apis/node/v1alpha1/openapi_generated.go index 00d35a3c2..543a3b8f6 100644 --- a/apis/node/v1alpha1/openapi_generated.go +++ b/apis/node/v1alpha1/openapi_generated.go @@ -16215,7 +16215,7 @@ func schema_kmodulesxyz_client_go_api_v1_CertificateSpec(ref common.ReferenceCal }, "renewBefore": { SchemaProps: spec.SchemaProps{ - Description: "Certificate renew before expiration duration", + Description: "Certificate renew before expiration duration\n\nDeprecated use `ReconfigureTLS` type OpsRequest instead.", Ref: ref("k8s.io/apimachinery/pkg/apis/meta/v1.Duration"), }, }, @@ -16331,8 +16331,7 @@ func schema_kmodulesxyz_client_go_api_v1_ClusterInfo(ref common.ReferenceCallbac }, "capi": { SchemaProps: spec.SchemaProps{ - Default: map[string]interface{}{}, - Ref: ref("kmodules.xyz/client-go/api/v1.CAPIClusterInfo"), + Ref: ref("kmodules.xyz/client-go/api/v1.CAPIClusterInfo"), }, }, }, diff --git a/apis/ui/v1alpha1/clusterprofile_types.go b/apis/ui/v1alpha1/clusterprofile_types.go new file mode 100644 index 000000000..a687c7b8c --- /dev/null +++ b/apis/ui/v1alpha1/clusterprofile_types.go @@ -0,0 +1,66 @@ +/* +Copyright AppsCode Inc. and Contributors + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +const ( + ResourceKindClusterProfile = "ClusterProfile" + ResourceClusterProfile = "clusterprofile" + ResourceClusterProfiles = "clusterprofiles" +) + +// ClusterProfileSpec defines the desired state of ClusterProfile +type ClusterProfileSpec struct { + Title string `json:"title"` + Description string `json:"description"` + Provider string `json:"provider,omitempty"` + RequiredFeatureSets map[string]Features `json:"requiredFeatureSets,omitempty"` +} + +type Features []string + +// ClusterProfile is the Schema for the clusterprofiles API + +// +genclient +// +genclient:nonNamespaced +// +genclient:skipVerbs=updateStatus +// +k8s:openapi-gen=true +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:resource:scope=Cluster +// +kubebuilder:printcolumn:name="Status",type="string",JSONPath=".status.phase" +// +kubebuilder:printcolumn:name="Age",type="date",JSONPath=".metadata.creationTimestamp" +type ClusterProfile struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + + Spec ClusterProfileSpec `json:"spec,omitempty"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +// +kubebuilder:object:root=true + +// ClusterProfileList contains a list of ClusterProfile +type ClusterProfileList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []ClusterProfile `json:"items"` +} diff --git a/apis/ui/v1alpha1/openapi_generated.go b/apis/ui/v1alpha1/openapi_generated.go index f927d1af8..d1ebb30d0 100644 --- a/apis/ui/v1alpha1/openapi_generated.go +++ b/apis/ui/v1alpha1/openapi_generated.go @@ -379,6 +379,9 @@ func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenA "kmodules.xyz/resource-metadata/apis/ui/v1alpha1.ActionTemplate": schema_resource_metadata_apis_ui_v1alpha1_ActionTemplate(ref), "kmodules.xyz/resource-metadata/apis/ui/v1alpha1.ActionTemplateGroup": schema_resource_metadata_apis_ui_v1alpha1_ActionTemplateGroup(ref), "kmodules.xyz/resource-metadata/apis/ui/v1alpha1.ChartInfo": schema_resource_metadata_apis_ui_v1alpha1_ChartInfo(ref), + "kmodules.xyz/resource-metadata/apis/ui/v1alpha1.ClusterProfile": schema_resource_metadata_apis_ui_v1alpha1_ClusterProfile(ref), + "kmodules.xyz/resource-metadata/apis/ui/v1alpha1.ClusterProfileList": schema_resource_metadata_apis_ui_v1alpha1_ClusterProfileList(ref), + "kmodules.xyz/resource-metadata/apis/ui/v1alpha1.ClusterProfileSpec": schema_resource_metadata_apis_ui_v1alpha1_ClusterProfileSpec(ref), "kmodules.xyz/resource-metadata/apis/ui/v1alpha1.ComponentStatus": schema_resource_metadata_apis_ui_v1alpha1_ComponentStatus(ref), "kmodules.xyz/resource-metadata/apis/ui/v1alpha1.Dashboard": schema_resource_metadata_apis_ui_v1alpha1_Dashboard(ref), "kmodules.xyz/resource-metadata/apis/ui/v1alpha1.DependentFeatureSet": schema_resource_metadata_apis_ui_v1alpha1_DependentFeatureSet(ref), @@ -16238,7 +16241,7 @@ func schema_kmodulesxyz_client_go_api_v1_CertificateSpec(ref common.ReferenceCal }, "renewBefore": { SchemaProps: spec.SchemaProps{ - Description: "Certificate renew before expiration duration", + Description: "Certificate renew before expiration duration\n\nDeprecated use `ReconfigureTLS` type OpsRequest instead.", Ref: ref("k8s.io/apimachinery/pkg/apis/meta/v1.Duration"), }, }, @@ -16354,8 +16357,7 @@ func schema_kmodulesxyz_client_go_api_v1_ClusterInfo(ref common.ReferenceCallbac }, "capi": { SchemaProps: spec.SchemaProps{ - Default: map[string]interface{}{}, - Ref: ref("kmodules.xyz/client-go/api/v1.CAPIClusterInfo"), + Ref: ref("kmodules.xyz/client-go/api/v1.CAPIClusterInfo"), }, }, }, @@ -19834,6 +19836,151 @@ func schema_resource_metadata_apis_ui_v1alpha1_ChartInfo(ref common.ReferenceCal } } +func schema_resource_metadata_apis_ui_v1alpha1_ClusterProfile(ref common.ReferenceCallback) common.OpenAPIDefinition { + return common.OpenAPIDefinition{ + Schema: spec.Schema{ + SchemaProps: spec.SchemaProps{ + Type: []string{"object"}, + Properties: map[string]spec.Schema{ + "kind": { + SchemaProps: spec.SchemaProps{ + Description: "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + Type: []string{"string"}, + Format: "", + }, + }, + "apiVersion": { + SchemaProps: spec.SchemaProps{ + Description: "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + Type: []string{"string"}, + Format: "", + }, + }, + "metadata": { + SchemaProps: spec.SchemaProps{ + Default: map[string]interface{}{}, + Ref: ref("k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta"), + }, + }, + "spec": { + SchemaProps: spec.SchemaProps{ + Default: map[string]interface{}{}, + Ref: ref("kmodules.xyz/resource-metadata/apis/ui/v1alpha1.ClusterProfileSpec"), + }, + }, + }, + }, + }, + Dependencies: []string{ + "k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta", "kmodules.xyz/resource-metadata/apis/ui/v1alpha1.ClusterProfileSpec"}, + } +} + +func schema_resource_metadata_apis_ui_v1alpha1_ClusterProfileList(ref common.ReferenceCallback) common.OpenAPIDefinition { + return common.OpenAPIDefinition{ + Schema: spec.Schema{ + SchemaProps: spec.SchemaProps{ + Description: "ClusterProfileList contains a list of ClusterProfile", + Type: []string{"object"}, + Properties: map[string]spec.Schema{ + "kind": { + SchemaProps: spec.SchemaProps{ + Description: "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + Type: []string{"string"}, + Format: "", + }, + }, + "apiVersion": { + SchemaProps: spec.SchemaProps{ + Description: "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + Type: []string{"string"}, + Format: "", + }, + }, + "metadata": { + SchemaProps: spec.SchemaProps{ + Default: map[string]interface{}{}, + Ref: ref("k8s.io/apimachinery/pkg/apis/meta/v1.ListMeta"), + }, + }, + "items": { + SchemaProps: spec.SchemaProps{ + Type: []string{"array"}, + Items: &spec.SchemaOrArray{ + Schema: &spec.Schema{ + SchemaProps: spec.SchemaProps{ + Default: map[string]interface{}{}, + Ref: ref("kmodules.xyz/resource-metadata/apis/ui/v1alpha1.ClusterProfile"), + }, + }, + }, + }, + }, + }, + Required: []string{"items"}, + }, + }, + Dependencies: []string{ + "k8s.io/apimachinery/pkg/apis/meta/v1.ListMeta", "kmodules.xyz/resource-metadata/apis/ui/v1alpha1.ClusterProfile"}, + } +} + +func schema_resource_metadata_apis_ui_v1alpha1_ClusterProfileSpec(ref common.ReferenceCallback) common.OpenAPIDefinition { + return common.OpenAPIDefinition{ + Schema: spec.Schema{ + SchemaProps: spec.SchemaProps{ + Description: "ClusterProfileSpec defines the desired state of ClusterProfile", + Type: []string{"object"}, + Properties: map[string]spec.Schema{ + "title": { + SchemaProps: spec.SchemaProps{ + Default: "", + Type: []string{"string"}, + Format: "", + }, + }, + "description": { + SchemaProps: spec.SchemaProps{ + Default: "", + Type: []string{"string"}, + Format: "", + }, + }, + "provider": { + SchemaProps: spec.SchemaProps{ + Type: []string{"string"}, + Format: "", + }, + }, + "requiredFeatureSets": { + SchemaProps: spec.SchemaProps{ + Type: []string{"object"}, + AdditionalProperties: &spec.SchemaOrBool{ + Allows: true, + Schema: &spec.Schema{ + SchemaProps: spec.SchemaProps{ + Type: []string{"array"}, + Items: &spec.SchemaOrArray{ + Schema: &spec.Schema{ + SchemaProps: spec.SchemaProps{ + Default: "", + Type: []string{"string"}, + Format: "", + }, + }, + }, + }, + }, + }, + }, + }, + }, + Required: []string{"title", "description"}, + }, + }, + } +} + func schema_resource_metadata_apis_ui_v1alpha1_ComponentStatus(ref common.ReferenceCallback) common.OpenAPIDefinition { return common.OpenAPIDefinition{ Schema: spec.Schema{ diff --git a/apis/ui/v1alpha1/register.go b/apis/ui/v1alpha1/register.go index 8c42fe15a..1b25f7db9 100644 --- a/apis/ui/v1alpha1/register.go +++ b/apis/ui/v1alpha1/register.go @@ -49,14 +49,16 @@ func Resource(resource string) schema.GroupResource { // Adds the list of known types to api.Scheme. func addKnownTypes(scheme *runtime.Scheme) error { scheme.AddKnownTypes(SchemeGroupVersion, - &ResourceEditor{}, - &ResourceEditorList{}, - &ResourceDashboard{}, - &ResourceDashboardList{}, + &ClusterProfile{}, + &ClusterProfileList{}, &Feature{}, &FeatureList{}, - &FeatureSet{}, &FeatureSetList{}, + &FeatureSet{}, + &ResourceDashboard{}, + &ResourceDashboardList{}, + &ResourceEditor{}, + &ResourceEditorList{}, ) scheme.AddKnownTypes(SchemeGroupVersion, diff --git a/apis/ui/v1alpha1/zz_generated.deepcopy.go b/apis/ui/v1alpha1/zz_generated.deepcopy.go index dcbc37088..d00920bd5 100644 --- a/apis/ui/v1alpha1/zz_generated.deepcopy.go +++ b/apis/ui/v1alpha1/zz_generated.deepcopy.go @@ -104,6 +104,97 @@ func (in *ChartInfo) DeepCopy() *ChartInfo { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterProfile) DeepCopyInto(out *ClusterProfile) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterProfile. +func (in *ClusterProfile) DeepCopy() *ClusterProfile { + if in == nil { + return nil + } + out := new(ClusterProfile) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ClusterProfile) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterProfileList) DeepCopyInto(out *ClusterProfileList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ClusterProfile, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterProfileList. +func (in *ClusterProfileList) DeepCopy() *ClusterProfileList { + if in == nil { + return nil + } + out := new(ClusterProfileList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ClusterProfileList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterProfileSpec) DeepCopyInto(out *ClusterProfileSpec) { + *out = *in + if in.RequiredFeatureSets != nil { + in, out := &in.RequiredFeatureSets, &out.RequiredFeatureSets + *out = make(map[string]Features, len(*in)) + for key, val := range *in { + var outVal []string + if val == nil { + (*out)[key] = nil + } else { + in, out := &val, &outVal + *out = make(Features, len(*in)) + copy(*out, *in) + } + (*out)[key] = outVal + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterProfileSpec. +func (in *ClusterProfileSpec) DeepCopy() *ClusterProfileSpec { + if in == nil { + return nil + } + out := new(ClusterProfileSpec) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ComponentStatus) DeepCopyInto(out *ComponentStatus) { *out = *in @@ -458,6 +549,26 @@ func (in *FeatureStatus) DeepCopy() *FeatureStatus { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in Features) DeepCopyInto(out *Features) { + { + in := &in + *out = make(Features, len(*in)) + copy(*out, *in) + return + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Features. +func (in Features) DeepCopy() Features { + if in == nil { + return nil + } + out := new(Features) + in.DeepCopyInto(out) + return *out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *PanelLinkRequest) DeepCopyInto(out *PanelLinkRequest) { *out = *in diff --git a/client/clientset/versioned/typed/ui/v1alpha1/clusterprofile.go b/client/clientset/versioned/typed/ui/v1alpha1/clusterprofile.go new file mode 100644 index 000000000..577880a25 --- /dev/null +++ b/client/clientset/versioned/typed/ui/v1alpha1/clusterprofile.go @@ -0,0 +1,168 @@ +/* +Copyright AppsCode Inc. and Contributors + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by client-gen. DO NOT EDIT. + +package v1alpha1 + +import ( + "context" + "time" + + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + rest "k8s.io/client-go/rest" + v1alpha1 "kmodules.xyz/resource-metadata/apis/ui/v1alpha1" + scheme "kmodules.xyz/resource-metadata/client/clientset/versioned/scheme" +) + +// ClusterProfilesGetter has a method to return a ClusterProfileInterface. +// A group's client should implement this interface. +type ClusterProfilesGetter interface { + ClusterProfiles() ClusterProfileInterface +} + +// ClusterProfileInterface has methods to work with ClusterProfile resources. +type ClusterProfileInterface interface { + Create(ctx context.Context, clusterProfile *v1alpha1.ClusterProfile, opts v1.CreateOptions) (*v1alpha1.ClusterProfile, error) + Update(ctx context.Context, clusterProfile *v1alpha1.ClusterProfile, opts v1.UpdateOptions) (*v1alpha1.ClusterProfile, error) + Delete(ctx context.Context, name string, opts v1.DeleteOptions) error + DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error + Get(ctx context.Context, name string, opts v1.GetOptions) (*v1alpha1.ClusterProfile, error) + List(ctx context.Context, opts v1.ListOptions) (*v1alpha1.ClusterProfileList, error) + Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) + Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.ClusterProfile, err error) + ClusterProfileExpansion +} + +// clusterProfiles implements ClusterProfileInterface +type clusterProfiles struct { + client rest.Interface +} + +// newClusterProfiles returns a ClusterProfiles +func newClusterProfiles(c *UiV1alpha1Client) *clusterProfiles { + return &clusterProfiles{ + client: c.RESTClient(), + } +} + +// Get takes name of the clusterProfile, and returns the corresponding clusterProfile object, and an error if there is any. +func (c *clusterProfiles) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.ClusterProfile, err error) { + result = &v1alpha1.ClusterProfile{} + err = c.client.Get(). + Resource("clusterprofiles"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(ctx). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of ClusterProfiles that match those selectors. +func (c *clusterProfiles) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.ClusterProfileList, err error) { + var timeout time.Duration + if opts.TimeoutSeconds != nil { + timeout = time.Duration(*opts.TimeoutSeconds) * time.Second + } + result = &v1alpha1.ClusterProfileList{} + err = c.client.Get(). + Resource("clusterprofiles"). + VersionedParams(&opts, scheme.ParameterCodec). + Timeout(timeout). + Do(ctx). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested clusterProfiles. +func (c *clusterProfiles) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) { + var timeout time.Duration + if opts.TimeoutSeconds != nil { + timeout = time.Duration(*opts.TimeoutSeconds) * time.Second + } + opts.Watch = true + return c.client.Get(). + Resource("clusterprofiles"). + VersionedParams(&opts, scheme.ParameterCodec). + Timeout(timeout). + Watch(ctx) +} + +// Create takes the representation of a clusterProfile and creates it. Returns the server's representation of the clusterProfile, and an error, if there is any. +func (c *clusterProfiles) Create(ctx context.Context, clusterProfile *v1alpha1.ClusterProfile, opts v1.CreateOptions) (result *v1alpha1.ClusterProfile, err error) { + result = &v1alpha1.ClusterProfile{} + err = c.client.Post(). + Resource("clusterprofiles"). + VersionedParams(&opts, scheme.ParameterCodec). + Body(clusterProfile). + Do(ctx). + Into(result) + return +} + +// Update takes the representation of a clusterProfile and updates it. Returns the server's representation of the clusterProfile, and an error, if there is any. +func (c *clusterProfiles) Update(ctx context.Context, clusterProfile *v1alpha1.ClusterProfile, opts v1.UpdateOptions) (result *v1alpha1.ClusterProfile, err error) { + result = &v1alpha1.ClusterProfile{} + err = c.client.Put(). + Resource("clusterprofiles"). + Name(clusterProfile.Name). + VersionedParams(&opts, scheme.ParameterCodec). + Body(clusterProfile). + Do(ctx). + Into(result) + return +} + +// Delete takes name of the clusterProfile and deletes it. Returns an error if one occurs. +func (c *clusterProfiles) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error { + return c.client.Delete(). + Resource("clusterprofiles"). + Name(name). + Body(&opts). + Do(ctx). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *clusterProfiles) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error { + var timeout time.Duration + if listOpts.TimeoutSeconds != nil { + timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second + } + return c.client.Delete(). + Resource("clusterprofiles"). + VersionedParams(&listOpts, scheme.ParameterCodec). + Timeout(timeout). + Body(&opts). + Do(ctx). + Error() +} + +// Patch applies the patch and returns the patched clusterProfile. +func (c *clusterProfiles) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.ClusterProfile, err error) { + result = &v1alpha1.ClusterProfile{} + err = c.client.Patch(pt). + Resource("clusterprofiles"). + Name(name). + SubResource(subresources...). + VersionedParams(&opts, scheme.ParameterCodec). + Body(data). + Do(ctx). + Into(result) + return +} diff --git a/client/clientset/versioned/typed/ui/v1alpha1/fake/fake_clusterprofile.go b/client/clientset/versioned/typed/ui/v1alpha1/fake/fake_clusterprofile.go new file mode 100644 index 000000000..e36e54fac --- /dev/null +++ b/client/clientset/versioned/typed/ui/v1alpha1/fake/fake_clusterprofile.go @@ -0,0 +1,121 @@ +/* +Copyright AppsCode Inc. and Contributors + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by client-gen. DO NOT EDIT. + +package fake + +import ( + "context" + + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + labels "k8s.io/apimachinery/pkg/labels" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + testing "k8s.io/client-go/testing" + v1alpha1 "kmodules.xyz/resource-metadata/apis/ui/v1alpha1" +) + +// FakeClusterProfiles implements ClusterProfileInterface +type FakeClusterProfiles struct { + Fake *FakeUiV1alpha1 +} + +var clusterprofilesResource = v1alpha1.SchemeGroupVersion.WithResource("clusterprofiles") + +var clusterprofilesKind = v1alpha1.SchemeGroupVersion.WithKind("ClusterProfile") + +// Get takes name of the clusterProfile, and returns the corresponding clusterProfile object, and an error if there is any. +func (c *FakeClusterProfiles) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.ClusterProfile, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootGetAction(clusterprofilesResource, name), &v1alpha1.ClusterProfile{}) + if obj == nil { + return nil, err + } + return obj.(*v1alpha1.ClusterProfile), err +} + +// List takes label and field selectors, and returns the list of ClusterProfiles that match those selectors. +func (c *FakeClusterProfiles) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.ClusterProfileList, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootListAction(clusterprofilesResource, clusterprofilesKind, opts), &v1alpha1.ClusterProfileList{}) + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &v1alpha1.ClusterProfileList{ListMeta: obj.(*v1alpha1.ClusterProfileList).ListMeta} + for _, item := range obj.(*v1alpha1.ClusterProfileList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested clusterProfiles. +func (c *FakeClusterProfiles) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewRootWatchAction(clusterprofilesResource, opts)) +} + +// Create takes the representation of a clusterProfile and creates it. Returns the server's representation of the clusterProfile, and an error, if there is any. +func (c *FakeClusterProfiles) Create(ctx context.Context, clusterProfile *v1alpha1.ClusterProfile, opts v1.CreateOptions) (result *v1alpha1.ClusterProfile, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootCreateAction(clusterprofilesResource, clusterProfile), &v1alpha1.ClusterProfile{}) + if obj == nil { + return nil, err + } + return obj.(*v1alpha1.ClusterProfile), err +} + +// Update takes the representation of a clusterProfile and updates it. Returns the server's representation of the clusterProfile, and an error, if there is any. +func (c *FakeClusterProfiles) Update(ctx context.Context, clusterProfile *v1alpha1.ClusterProfile, opts v1.UpdateOptions) (result *v1alpha1.ClusterProfile, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootUpdateAction(clusterprofilesResource, clusterProfile), &v1alpha1.ClusterProfile{}) + if obj == nil { + return nil, err + } + return obj.(*v1alpha1.ClusterProfile), err +} + +// Delete takes name of the clusterProfile and deletes it. Returns an error if one occurs. +func (c *FakeClusterProfiles) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewRootDeleteActionWithOptions(clusterprofilesResource, name, opts), &v1alpha1.ClusterProfile{}) + return err +} + +// DeleteCollection deletes a collection of objects. +func (c *FakeClusterProfiles) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error { + action := testing.NewRootDeleteCollectionAction(clusterprofilesResource, listOpts) + + _, err := c.Fake.Invokes(action, &v1alpha1.ClusterProfileList{}) + return err +} + +// Patch applies the patch and returns the patched clusterProfile. +func (c *FakeClusterProfiles) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.ClusterProfile, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootPatchSubresourceAction(clusterprofilesResource, name, pt, data, subresources...), &v1alpha1.ClusterProfile{}) + if obj == nil { + return nil, err + } + return obj.(*v1alpha1.ClusterProfile), err +} diff --git a/client/clientset/versioned/typed/ui/v1alpha1/fake/fake_ui_client.go b/client/clientset/versioned/typed/ui/v1alpha1/fake/fake_ui_client.go index 5822a0680..0d397df6e 100644 --- a/client/clientset/versioned/typed/ui/v1alpha1/fake/fake_ui_client.go +++ b/client/clientset/versioned/typed/ui/v1alpha1/fake/fake_ui_client.go @@ -28,6 +28,10 @@ type FakeUiV1alpha1 struct { *testing.Fake } +func (c *FakeUiV1alpha1) ClusterProfiles() v1alpha1.ClusterProfileInterface { + return &FakeClusterProfiles{c} +} + func (c *FakeUiV1alpha1) Features() v1alpha1.FeatureInterface { return &FakeFeatures{c} } diff --git a/client/clientset/versioned/typed/ui/v1alpha1/generated_expansion.go b/client/clientset/versioned/typed/ui/v1alpha1/generated_expansion.go index 50cb35347..c39a86fe2 100644 --- a/client/clientset/versioned/typed/ui/v1alpha1/generated_expansion.go +++ b/client/clientset/versioned/typed/ui/v1alpha1/generated_expansion.go @@ -18,6 +18,8 @@ limitations under the License. package v1alpha1 +type ClusterProfileExpansion interface{} + type FeatureExpansion interface{} type FeatureSetExpansion interface{} diff --git a/client/clientset/versioned/typed/ui/v1alpha1/ui_client.go b/client/clientset/versioned/typed/ui/v1alpha1/ui_client.go index d93a452df..42ad88ba3 100644 --- a/client/clientset/versioned/typed/ui/v1alpha1/ui_client.go +++ b/client/clientset/versioned/typed/ui/v1alpha1/ui_client.go @@ -28,6 +28,7 @@ import ( type UiV1alpha1Interface interface { RESTClient() rest.Interface + ClusterProfilesGetter FeaturesGetter FeatureSetsGetter ResourceDashboardsGetter @@ -39,6 +40,10 @@ type UiV1alpha1Client struct { restClient rest.Interface } +func (c *UiV1alpha1Client) ClusterProfiles() ClusterProfileInterface { + return newClusterProfiles(c) +} + func (c *UiV1alpha1Client) Features() FeatureInterface { return newFeatures(c) } diff --git a/cmd/resource-fmt/main.go b/cmd/resource-fmt/main.go index 7370edbfd..fd9d9cea7 100644 --- a/cmd/resource-fmt/main.go +++ b/cmd/resource-fmt/main.go @@ -145,7 +145,7 @@ func main() { fix := flag.Bool("fix", true, "Fix formatting") flag.Parse() - MustCheckType(metaapi.ClusterProfile{}, "clusterprofiles", *fix) + MustCheckType(uiapi.ClusterProfile{}, "clusterprofiles", *fix) MustCheckType(metaapi.MenuOutline{}, "menuoutlines", *fix) MustCheckType(metaapi.ResourceBlockDefinition{}, "resourceblockdefinitions", *fix) MustCheckType(metaapi.ResourceDescriptor{}, "resourcedescriptors", *fix) diff --git a/crds/core.k8s.appscode.com_genericresources.yaml b/crds/core.k8s.appscode.com_genericresources.yaml index 9e66496cf..42224dcfc 100644 --- a/crds/core.k8s.appscode.com_genericresources.yaml +++ b/crds/core.k8s.appscode.com_genericresources.yaml @@ -119,18 +119,17 @@ spec: type: string provider: enum: - - Aws - - Azure + - AKS - DigitalOcean - - GoogleCloud + - EKS + - Exoscale + - Generic + - GKE - Linode - Packet + - Rancher - Scaleway - Vultr - - BareMetal - - KIND - - Generic - - Private type: string uid: type: string diff --git a/crds/core.k8s.appscode.com_genericresourceservices.yaml b/crds/core.k8s.appscode.com_genericresourceservices.yaml index 70c8746e5..47a77c592 100644 --- a/crds/core.k8s.appscode.com_genericresourceservices.yaml +++ b/crds/core.k8s.appscode.com_genericresourceservices.yaml @@ -71,18 +71,17 @@ spec: type: string provider: enum: - - Aws - - Azure + - AKS - DigitalOcean - - GoogleCloud + - EKS + - Exoscale + - Generic + - GKE - Linode - Packet + - Rancher - Scaleway - Vultr - - BareMetal - - KIND - - Generic - - Private type: string uid: type: string diff --git a/crds/core.k8s.appscode.com_resourcesummaries.yaml b/crds/core.k8s.appscode.com_resourcesummaries.yaml index e9b5b7317..6bd8b36ab 100644 --- a/crds/core.k8s.appscode.com_resourcesummaries.yaml +++ b/crds/core.k8s.appscode.com_resourcesummaries.yaml @@ -119,18 +119,17 @@ spec: type: string provider: enum: - - Aws - - Azure + - AKS - DigitalOcean - - GoogleCloud + - EKS + - Exoscale + - Generic + - GKE - Linode - Packet + - Rancher - Scaleway - Vultr - - BareMetal - - KIND - - Generic - - Private type: string uid: type: string diff --git a/crds/identity.k8s.appscode.com_clusteridentitys.yaml b/crds/identity.k8s.appscode.com_clusteridentitys.yaml index 8315c19e5..c591f0c41 100644 --- a/crds/identity.k8s.appscode.com_clusteridentitys.yaml +++ b/crds/identity.k8s.appscode.com_clusteridentitys.yaml @@ -53,18 +53,17 @@ spec: type: string provider: enum: - - Aws - - Azure + - AKS - DigitalOcean - - GoogleCloud + - EKS + - Exoscale + - Generic + - GKE - Linode - Packet + - Rancher - Scaleway - Vultr - - BareMetal - - KIND - - Generic - - Private type: string uid: type: string diff --git a/crds/identity.k8s.appscode.com_siteinfos.yaml b/crds/identity.k8s.appscode.com_siteinfos.yaml index 5415cf5b8..80f1faa45 100644 --- a/crds/identity.k8s.appscode.com_siteinfos.yaml +++ b/crds/identity.k8s.appscode.com_siteinfos.yaml @@ -50,18 +50,17 @@ spec: type: string provider: enum: - - Aws - - Azure + - AKS - DigitalOcean - - GoogleCloud + - EKS + - Exoscale + - Generic + - GKE - Linode - Packet + - Rancher - Scaleway - Vultr - - BareMetal - - KIND - - Generic - - Private type: string uid: type: string diff --git a/crds/ui.k8s.appscode.com_clusterprofiles.yaml b/crds/ui.k8s.appscode.com_clusterprofiles.yaml new file mode 100644 index 000000000..aee0a38ec --- /dev/null +++ b/crds/ui.k8s.appscode.com_clusterprofiles.yaml @@ -0,0 +1,63 @@ + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + creationTimestamp: null + name: clusterprofiles.ui.k8s.appscode.com +spec: + group: ui.k8s.appscode.com + names: + kind: ClusterProfile + listKind: ClusterProfileList + plural: clusterprofiles + singular: clusterprofile + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.phase + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: ClusterProfileSpec defines the desired state of ClusterProfile + properties: + description: + type: string + provider: + type: string + requiredFeatureSets: + additionalProperties: + items: + type: string + type: array + type: object + title: + type: string + required: + - description + - title + type: object + type: object + served: true + storage: true + subresources: + status: {} diff --git a/go.mod b/go.mod index 9c70e2d58..c30a654eb 100644 --- a/go.mod +++ b/go.mod @@ -29,7 +29,7 @@ require ( k8s.io/klog/v2 v2.130.1 k8s.io/kube-openapi v0.0.0-20240703190633-0aa61b46e8c2 kmodules.xyz/apiversion v0.2.0 - kmodules.xyz/client-go v0.30.22-0.20241009094042-175fd7e41d7e + kmodules.xyz/client-go v0.30.27 kmodules.xyz/crd-schema-fuzz v0.29.1 kmodules.xyz/go-containerregistry v0.0.12 kmodules.xyz/offshoot-api v0.30.1 diff --git a/go.sum b/go.sum index fe6c50bf7..c85b52912 100644 --- a/go.sum +++ b/go.sum @@ -332,8 +332,8 @@ k8s.io/utils v0.0.0-20240502163921-fe8a2dddb1d0 h1:jgGTlFYnhF1PM1Ax/lAlxUPE+KfCI k8s.io/utils v0.0.0-20240502163921-fe8a2dddb1d0/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= kmodules.xyz/apiversion v0.2.0 h1:vAQYqZFm4xu4pbB1cAdHbFEPES6EQkcR4wc06xdTOWk= kmodules.xyz/apiversion v0.2.0/go.mod h1:oPX8g8LvlPdPX3Yc5YvCzJHQnw3YF/X4/jdW0b1am80= -kmodules.xyz/client-go v0.30.22-0.20241009094042-175fd7e41d7e h1:Fpeo10W+ypAqBngzRxokccAMtxM6ddEGUMnZEy2bSzU= -kmodules.xyz/client-go v0.30.22-0.20241009094042-175fd7e41d7e/go.mod h1:CAu+JlA8RVGtj6LQHu0Q1w2mnFUajuti49c7T1AvGdM= +kmodules.xyz/client-go v0.30.27 h1:pmM11k/XNVGTFp22qRsXBnGRnFeLNGX2lB9I0Gu+JWY= +kmodules.xyz/client-go v0.30.27/go.mod h1:CAu+JlA8RVGtj6LQHu0Q1w2mnFUajuti49c7T1AvGdM= kmodules.xyz/crd-schema-fuzz v0.29.1 h1:zJTlWYOrT5dsVVHW8HGcnR/vaWfxQfNh11QwTtkYpcs= kmodules.xyz/crd-schema-fuzz v0.29.1/go.mod h1:n708z9YQqLMP2KNLQVgBcRJw1QpSWLvpNCEi+KJDOYE= kmodules.xyz/go-containerregistry v0.0.12 h1:Tl32QGmSqRVm9PUEb/f3dgDeu9zW5fVzt3qmAFIE37I= diff --git a/hub/clusterprofiles/ace/dbaas-aks.yaml b/hub/clusterprofiles/ace/dbaas-aks.yaml index 70c0553c9..43f14e37b 100644 --- a/hub/clusterprofiles/ace/dbaas-aks.yaml +++ b/hub/clusterprofiles/ace/dbaas-aks.yaml @@ -1,4 +1,4 @@ -apiVersion: meta.k8s.appscode.com/v1alpha1 +apiVersion: ui.k8s.appscode.com/v1alpha1 kind: ClusterProfile metadata: creationTimestamp: null diff --git a/hub/clusterprofiles/ace/dbaas-eks.yaml b/hub/clusterprofiles/ace/dbaas-eks.yaml index 33eeeab8c..8b48aff5e 100644 --- a/hub/clusterprofiles/ace/dbaas-eks.yaml +++ b/hub/clusterprofiles/ace/dbaas-eks.yaml @@ -1,4 +1,4 @@ -apiVersion: meta.k8s.appscode.com/v1alpha1 +apiVersion: ui.k8s.appscode.com/v1alpha1 kind: ClusterProfile metadata: creationTimestamp: null diff --git a/hub/clusterprofiles/ace/dbaas-generic.yaml b/hub/clusterprofiles/ace/dbaas-generic.yaml index d8b63ca68..e644f0f40 100644 --- a/hub/clusterprofiles/ace/dbaas-generic.yaml +++ b/hub/clusterprofiles/ace/dbaas-generic.yaml @@ -1,4 +1,4 @@ -apiVersion: meta.k8s.appscode.com/v1alpha1 +apiVersion: ui.k8s.appscode.com/v1alpha1 kind: ClusterProfile metadata: creationTimestamp: null diff --git a/hub/clusterprofiles/ace/dbaas-gke.yaml b/hub/clusterprofiles/ace/dbaas-gke.yaml index 41f1c8680..3f3b3f305 100644 --- a/hub/clusterprofiles/ace/dbaas-gke.yaml +++ b/hub/clusterprofiles/ace/dbaas-gke.yaml @@ -1,4 +1,4 @@ -apiVersion: meta.k8s.appscode.com/v1alpha1 +apiVersion: ui.k8s.appscode.com/v1alpha1 kind: ClusterProfile metadata: creationTimestamp: null diff --git a/hub/clusterprofiles/ace/generic.yaml b/hub/clusterprofiles/ace/generic.yaml index 94a609067..f2873fe7f 100644 --- a/hub/clusterprofiles/ace/generic.yaml +++ b/hub/clusterprofiles/ace/generic.yaml @@ -1,4 +1,4 @@ -apiVersion: meta.k8s.appscode.com/v1alpha1 +apiVersion: ui.k8s.appscode.com/v1alpha1 kind: ClusterProfile metadata: creationTimestamp: null diff --git a/hub/clusterprofiles/lib.go b/hub/clusterprofiles/lib.go index 9b4099831..491539944 100644 --- a/hub/clusterprofiles/lib.go +++ b/hub/clusterprofiles/lib.go @@ -17,6 +17,7 @@ limitations under the License. package clusterprofiles import ( + "context" "embed" iofs "io/fs" "path/filepath" @@ -24,11 +25,13 @@ import ( "sort" "sync" - "kmodules.xyz/resource-metadata/apis/meta/v1alpha1" + "kmodules.xyz/resource-metadata/apis/ui/v1alpha1" "github.com/pkg/errors" ioutilx "gomodules.xyz/x/ioutil" apierrors "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/api/meta" + "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/yaml" ) @@ -37,13 +40,13 @@ var ( fs embed.FS m sync.Mutex - moMap map[string]*v1alpha1.ClusterProfile + cpMap map[string]*v1alpha1.ClusterProfile loader = ioutilx.NewReloader( filepath.Join("/tmp", "hub", "clusterprofiles"), fs, func(fsys iofs.FS) { - moMap = map[string]*v1alpha1.ClusterProfile{} + cpMap = map[string]*v1alpha1.ClusterProfile{} if err := iofs.WalkDir(fsys, ".", func(path string, d iofs.DirEntry, err error) error { if d.IsDir() || err != nil { @@ -63,7 +66,7 @@ var ( if err != nil { return errors.Wrap(err, path) } - moMap[obj.Name] = &obj + cpMap[obj.Name] = &obj return nil }); err != nil { panic(errors.Wrapf(err, "failed to load %s", reflect.TypeOf(v1alpha1.ClusterProfile{}))) @@ -80,41 +83,66 @@ func EmbeddedFS() iofs.FS { return fs } -func LoadByName(name string) (*v1alpha1.ClusterProfile, error) { +func LoadInternalByName(name string) (*v1alpha1.ClusterProfile, error) { m.Lock() defer m.Unlock() loader.ReloadIfTriggered() - if obj, ok := moMap[name]; ok { + if obj, ok := cpMap[name]; ok { return obj, nil } return nil, apierrors.NewNotFound(v1alpha1.Resource(v1alpha1.ResourceKindClusterProfile), name) } -func List() []v1alpha1.ClusterProfile { +func LoadByName(kc client.Reader, name string) (*v1alpha1.ClusterProfile, error) { + var ed v1alpha1.ClusterProfile + err := kc.Get(context.TODO(), client.ObjectKey{Name: name}, &ed) + if meta.IsNoMatchError(err) || apierrors.IsNotFound(err) { + return LoadInternalByName(name) + } else if err != nil { + return nil, err + } + return &ed, nil +} + +func List(kc client.Reader) ([]v1alpha1.ClusterProfile, error) { m.Lock() defer m.Unlock() loader.ReloadIfTriggered() - out := make([]v1alpha1.ClusterProfile, 0, len(moMap)) - for _, rl := range moMap { - out = append(out, *rl) + var list v1alpha1.ClusterProfileList + err := kc.List(context.TODO(), &list) + if err != nil && !(meta.IsNoMatchError(err) || apierrors.IsNotFound(err)) { + return nil, err + } + + profiles := map[string]v1alpha1.ClusterProfile{} + for name, cp := range cpMap { + profiles[name] = *cp + } + for _, obj := range list.Items { + profiles[obj.Name] = obj + } + + out := make([]v1alpha1.ClusterProfile, 0, len(profiles)) + for _, cp := range profiles { + out = append(out, cp) } sort.Slice(out, func(i, j int) bool { return out[i].Name < out[j].Name }) - return out + return out, nil } -func Names() []string { - m.Lock() - defer m.Unlock() - loader.ReloadIfTriggered() +func Names(kc client.Reader) ([]string, error) { + list, err := List(kc) + if err != nil { + return nil, err + } - out := make([]string, 0, len(moMap)) - for name := range moMap { - out = append(out, name) + out := make([]string, 0, len(list)) + for _, obj := range list { + out = append(out, obj.Name) } - sort.Strings(out) - return out + return out, nil } diff --git a/hub/resourcedescriptors/core.k8s.appscode.com/v1alpha1/genericresources.yaml b/hub/resourcedescriptors/core.k8s.appscode.com/v1alpha1/genericresources.yaml index cf9f96f20..b391a1edb 100644 --- a/hub/resourcedescriptors/core.k8s.appscode.com/v1alpha1/genericresources.yaml +++ b/hub/resourcedescriptors/core.k8s.appscode.com/v1alpha1/genericresources.yaml @@ -148,18 +148,17 @@ spec: type: string provider: enum: - - Aws - - Azure + - AKS - DigitalOcean - - GoogleCloud + - EKS + - Exoscale + - Generic + - GKE - Linode - Packet + - Rancher - Scaleway - Vultr - - BareMetal - - KIND - - Generic - - Private type: string uid: type: string diff --git a/hub/resourcedescriptors/core.k8s.appscode.com/v1alpha1/genericresourceservices.yaml b/hub/resourcedescriptors/core.k8s.appscode.com/v1alpha1/genericresourceservices.yaml index e2957c577..577b1d080 100644 --- a/hub/resourcedescriptors/core.k8s.appscode.com/v1alpha1/genericresourceservices.yaml +++ b/hub/resourcedescriptors/core.k8s.appscode.com/v1alpha1/genericresourceservices.yaml @@ -102,18 +102,17 @@ spec: type: string provider: enum: - - Aws - - Azure + - AKS - DigitalOcean - - GoogleCloud + - EKS + - Exoscale + - Generic + - GKE - Linode - Packet + - Rancher - Scaleway - Vultr - - BareMetal - - KIND - - Generic - - Private type: string uid: type: string diff --git a/hub/resourcedescriptors/core.k8s.appscode.com/v1alpha1/resourcesummaries.yaml b/hub/resourcedescriptors/core.k8s.appscode.com/v1alpha1/resourcesummaries.yaml index eefab8db5..e4c5da001 100644 --- a/hub/resourcedescriptors/core.k8s.appscode.com/v1alpha1/resourcesummaries.yaml +++ b/hub/resourcedescriptors/core.k8s.appscode.com/v1alpha1/resourcesummaries.yaml @@ -148,18 +148,17 @@ spec: type: string provider: enum: - - Aws - - Azure + - AKS - DigitalOcean - - GoogleCloud + - EKS + - Exoscale + - Generic + - GKE - Linode - Packet + - Rancher - Scaleway - Vultr - - BareMetal - - KIND - - Generic - - Private type: string uid: type: string diff --git a/hub/resourcedescriptors/identity.k8s.appscode.com/v1alpha1/siteinfos.yaml b/hub/resourcedescriptors/identity.k8s.appscode.com/v1alpha1/siteinfos.yaml index d91b103a9..b9282b0f1 100644 --- a/hub/resourcedescriptors/identity.k8s.appscode.com/v1alpha1/siteinfos.yaml +++ b/hub/resourcedescriptors/identity.k8s.appscode.com/v1alpha1/siteinfos.yaml @@ -46,18 +46,17 @@ spec: type: string provider: enum: - - Aws - - Azure + - AKS - DigitalOcean - - GoogleCloud + - EKS + - Exoscale + - Generic + - GKE - Linode - Packet + - Rancher - Scaleway - Vultr - - BareMetal - - KIND - - Generic - - Private type: string uid: type: string diff --git a/hub/resourcedescriptors/meta.k8s.appscode.com/v1alpha1/clusterprofiles.yaml b/hub/resourcedescriptors/meta.k8s.appscode.com/v1alpha1/ClusterProfiles.yaml similarity index 96% rename from hub/resourcedescriptors/meta.k8s.appscode.com/v1alpha1/clusterprofiles.yaml rename to hub/resourcedescriptors/meta.k8s.appscode.com/v1alpha1/ClusterProfiles.yaml index dd12d7dd8..03aa4d7a1 100644 --- a/hub/resourcedescriptors/meta.k8s.appscode.com/v1alpha1/clusterprofiles.yaml +++ b/hub/resourcedescriptors/meta.k8s.appscode.com/v1alpha1/ClusterProfiles.yaml @@ -5,14 +5,14 @@ metadata: labels: k8s.io/group: meta.k8s.appscode.com k8s.io/kind: ClusterProfile - k8s.io/resource: clusterprofiles + k8s.io/resource: ClusterProfiles k8s.io/version: v1alpha1 - name: meta.k8s.appscode.com-v1alpha1-clusterprofiles + name: meta.k8s.appscode.com-v1alpha1-ClusterProfiles spec: resource: group: meta.k8s.appscode.com kind: ClusterProfile - name: clusterprofiles + name: ClusterProfiles scope: Cluster version: v1alpha1 validation: diff --git a/hub/resourcedescriptors/ui.k8s.appscode.com/v1alpha1/clusterprofiles.yaml b/hub/resourcedescriptors/ui.k8s.appscode.com/v1alpha1/clusterprofiles.yaml new file mode 100644 index 000000000..7cebe6ff1 --- /dev/null +++ b/hub/resourcedescriptors/ui.k8s.appscode.com/v1alpha1/clusterprofiles.yaml @@ -0,0 +1,75 @@ +apiVersion: meta.k8s.appscode.com/v1alpha1 +kind: ResourceDescriptor +metadata: + creationTimestamp: null + labels: + k8s.io/group: ui.k8s.appscode.com + k8s.io/kind: ClusterProfile + k8s.io/resource: clusterprofiles + k8s.io/version: v1alpha1 + name: ui.k8s.appscode.com-v1alpha1-clusterprofiles +spec: + resource: + group: ui.k8s.appscode.com + kind: ClusterProfile + name: clusterprofiles + scope: Cluster + version: v1alpha1 + validation: + openAPIV3Schema: + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + properties: + name: + description: 'Name must be unique within a namespace. Is required when + creating resources, although some resources may allow a client to + request the generation of an appropriate name automatically. Name + is primarily intended for creation idempotence and configuration definition. + Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names' + type: string + labels: + additionalProperties: + type: string + description: 'Map of string keys and values that can be used to organize + and categorize (scope and select) objects. May match selectors of + replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels' + type: object + annotations: + additionalProperties: + type: string + description: 'Annotations is an unstructured key value map stored with + a resource that may be set by external tools to store and retrieve + arbitrary metadata. They are not queryable and should be preserved + when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' + type: object + type: object + spec: + description: ClusterProfileSpec defines the desired state of ClusterProfile + properties: + description: + type: string + provider: + type: string + requiredFeatureSets: + additionalProperties: + items: + type: string + type: array + type: object + title: + type: string + required: + - description + - title + type: object + type: object diff --git a/hub/resourceeditors/meta.k8s.appscode.com/v1alpha1/ClusterProfiles.yaml b/hub/resourceeditors/meta.k8s.appscode.com/v1alpha1/ClusterProfiles.yaml new file mode 100644 index 000000000..42e40f5f4 --- /dev/null +++ b/hub/resourceeditors/meta.k8s.appscode.com/v1alpha1/ClusterProfiles.yaml @@ -0,0 +1,17 @@ +apiVersion: ui.k8s.appscode.com/v1alpha1 +kind: ResourceEditor +metadata: + creationTimestamp: null + labels: + k8s.io/group: meta.k8s.appscode.com + k8s.io/kind: ClusterProfile + k8s.io/resource: ClusterProfiles + k8s.io/version: v1alpha1 + name: meta.k8s.appscode.com-v1alpha1-ClusterProfiles +spec: + resource: + group: meta.k8s.appscode.com + kind: ClusterProfile + name: ClusterProfiles + scope: Cluster + version: v1alpha1 diff --git a/hub/resourceeditors/meta.k8s.appscode.com/v1alpha1/clusterprofiles.yaml b/hub/resourceeditors/meta.k8s.appscode.com/v1alpha1/clusterprofiles.yaml deleted file mode 100644 index ab2ca89fa..000000000 --- a/hub/resourceeditors/meta.k8s.appscode.com/v1alpha1/clusterprofiles.yaml +++ /dev/null @@ -1,26 +0,0 @@ -apiVersion: ui.k8s.appscode.com/v1alpha1 -kind: ResourceEditor -metadata: - creationTimestamp: null - labels: - k8s.io/group: meta.k8s.appscode.com - k8s.io/kind: ClusterProfile - k8s.io/resource: clusterprofiles - k8s.io/version: v1alpha1 - name: meta.k8s.appscode.com-v1alpha1-clusterprofiles -spec: - resource: - group: meta.k8s.appscode.com - kind: ClusterProfile - name: clusterprofiles - scope: Cluster - version: v1alpha1 - ui: - editor: - name: metak8sappscodecom-clusterprofile-editor - sourceRef: - apiGroup: source.toolkit.fluxcd.io - kind: HelmRepository - name: appscode-charts-oci - version: v0.7.0 - enforceQuota: false diff --git a/hub/resourceeditors/ui.k8s.appscode.com/v1alpha1/clusterprofiles.yaml b/hub/resourceeditors/ui.k8s.appscode.com/v1alpha1/clusterprofiles.yaml new file mode 100644 index 000000000..c4d9348c8 --- /dev/null +++ b/hub/resourceeditors/ui.k8s.appscode.com/v1alpha1/clusterprofiles.yaml @@ -0,0 +1,17 @@ +apiVersion: ui.k8s.appscode.com/v1alpha1 +kind: ResourceEditor +metadata: + creationTimestamp: null + labels: + k8s.io/group: ui.k8s.appscode.com + k8s.io/kind: ClusterProfile + k8s.io/resource: clusterprofiles + k8s.io/version: v1alpha1 + name: ui.k8s.appscode.com-v1alpha1-clusterprofiles +spec: + resource: + group: ui.k8s.appscode.com + kind: ClusterProfile + name: clusterprofiles + scope: Cluster + version: v1alpha1 diff --git a/hub/resourcetabledefinitions/meta.k8s.appscode.com/v1alpha1/clusterprofiles.yaml b/hub/resourcetabledefinitions/meta.k8s.appscode.com/v1alpha1/ClusterProfiles.yaml similarity index 75% rename from hub/resourcetabledefinitions/meta.k8s.appscode.com/v1alpha1/clusterprofiles.yaml rename to hub/resourcetabledefinitions/meta.k8s.appscode.com/v1alpha1/ClusterProfiles.yaml index ab40d6e1c..ce2d4bd7b 100644 --- a/hub/resourcetabledefinitions/meta.k8s.appscode.com/v1alpha1/clusterprofiles.yaml +++ b/hub/resourcetabledefinitions/meta.k8s.appscode.com/v1alpha1/ClusterProfiles.yaml @@ -5,14 +5,14 @@ metadata: labels: k8s.io/group: meta.k8s.appscode.com k8s.io/kind: ClusterProfile - k8s.io/resource: clusterprofiles + k8s.io/resource: ClusterProfiles k8s.io/version: v1alpha1 - name: meta.k8s.appscode.com-v1alpha1-clusterprofiles + name: meta.k8s.appscode.com-v1alpha1-ClusterProfiles spec: defaultView: true resource: group: meta.k8s.appscode.com kind: ClusterProfile - name: clusterprofiles + name: ClusterProfiles scope: Cluster version: v1alpha1 diff --git a/hub/resourcetabledefinitions/ui.k8s.appscode.com/v1alpha1/clusterprofiles.yaml b/hub/resourcetabledefinitions/ui.k8s.appscode.com/v1alpha1/clusterprofiles.yaml new file mode 100644 index 000000000..fa36811ce --- /dev/null +++ b/hub/resourcetabledefinitions/ui.k8s.appscode.com/v1alpha1/clusterprofiles.yaml @@ -0,0 +1,18 @@ +apiVersion: meta.k8s.appscode.com/v1alpha1 +kind: ResourceTableDefinition +metadata: + creationTimestamp: null + labels: + k8s.io/group: ui.k8s.appscode.com + k8s.io/kind: ClusterProfile + k8s.io/resource: clusterprofiles + k8s.io/version: v1alpha1 + name: ui.k8s.appscode.com-v1alpha1-clusterprofiles +spec: + defaultView: true + resource: + group: ui.k8s.appscode.com + kind: ClusterProfile + name: clusterprofiles + scope: Cluster + version: v1alpha1 diff --git a/vendor/kmodules.xyz/client-go/api/v1/certificates.go b/vendor/kmodules.xyz/client-go/api/v1/certificates.go index d5e181427..a6ca4f774 100644 --- a/vendor/kmodules.xyz/client-go/api/v1/certificates.go +++ b/vendor/kmodules.xyz/client-go/api/v1/certificates.go @@ -58,6 +58,14 @@ type CertificateSpec struct { // +optional Duration *metav1.Duration `json:"duration,omitempty" protobuf:"bytes,5,opt,name=duration"` + // Certificate renew before expiration duration + // + // Deprecated use `ReconfigureTLS` type OpsRequest instead. + // + // +deprecated + // +optional + RenewBefore *metav1.Duration `json:"renewBefore,omitempty" protobuf:"bytes,6,opt,name=renewBefore"` + // DNSNames is a list of subject alt names to be used on the Certificate. // +optional DNSNames []string `json:"dnsNames,omitempty" protobuf:"bytes,7,rep,name=dnsNames"` diff --git a/vendor/kmodules.xyz/client-go/api/v1/generated.pb.go b/vendor/kmodules.xyz/client-go/api/v1/generated.pb.go index 02b2c851b..fac4e455c 100644 --- a/vendor/kmodules.xyz/client-go/api/v1/generated.pb.go +++ b/vendor/kmodules.xyz/client-go/api/v1/generated.pb.go @@ -598,124 +598,125 @@ func init() { } var fileDescriptor_af8e7a11c7a1ccd9 = []byte{ - // 1860 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x58, 0xdd, 0x6f, 0x1b, 0x59, - 0x15, 0xf7, 0xd4, 0x4e, 0x62, 0x1f, 0x27, 0x75, 0x73, 0x5b, 0x54, 0x53, 0x51, 0x4f, 0x98, 0x8a, - 0x2a, 0x85, 0xed, 0x84, 0x44, 0x2d, 0x2c, 0x2b, 0x10, 0xc4, 0x4e, 0xb7, 0xeb, 0xdd, 0xb4, 0x31, - 0xd7, 0x29, 0xbb, 0x5a, 0x10, 0xe8, 0x66, 0xe6, 0xc6, 0xb9, 0x64, 0x3c, 0x33, 0xba, 0x77, 0xc6, - 0x90, 0x7d, 0xda, 0x47, 0x10, 0x2f, 0xe5, 0x8d, 0xc7, 0xad, 0xc4, 0x9f, 0x80, 0x84, 0xf8, 0x0b, - 0xe8, 0x63, 0x79, 0x41, 0x2b, 0x81, 0x2c, 0x6a, 0x5e, 0x11, 0x6f, 0x48, 0x28, 0x4f, 0xe8, 0xde, - 0xb9, 0xf3, 0x61, 0xc7, 0xd9, 0x64, 0x05, 0x12, 0x6f, 0x9e, 0xf3, 0xfb, 0x9d, 0x73, 0x3f, 0xce, - 0xe7, 0x35, 0xdc, 0x3f, 0x1e, 0x06, 0x6e, 0xec, 0x51, 0x61, 0xff, 0xfc, 0xe4, 0xa3, 0x0d, 0xc7, - 0x63, 0xd4, 0x8f, 0xee, 0x0f, 0x82, 0x0d, 0x12, 0xb2, 0x8d, 0xd1, 0xe6, 0xc6, 0x80, 0xfa, 0x94, - 0x93, 0x88, 0xba, 0x76, 0xc8, 0x83, 0x28, 0x40, 0xb7, 0x8b, 0x74, 0x3b, 0xa1, 0xff, 0x64, 0x10, - 0xd8, 0x24, 0x64, 0xf6, 0x68, 0xf3, 0xd6, 0xfd, 0x01, 0x8b, 0x8e, 0xe2, 0x03, 0xdb, 0x09, 0x86, - 0x1b, 0x83, 0x60, 0x10, 0x6c, 0x28, 0xad, 0x83, 0xf8, 0x50, 0x7d, 0xa9, 0x0f, 0xf5, 0x2b, 0xb1, - 0x76, 0xcb, 0x3a, 0x7e, 0x53, 0xd8, 0x2c, 0x59, 0xcc, 0x09, 0x38, 0x9d, 0xb3, 0xe2, 0xad, 0x07, - 0x39, 0x67, 0x48, 0x9c, 0x23, 0xe6, 0x53, 0x7e, 0xb2, 0x11, 0x1e, 0x0f, 0xa4, 0x40, 0x6c, 0x0c, - 0x69, 0x44, 0xe6, 0x68, 0x59, 0xbf, 0x37, 0xa0, 0xd1, 0xd9, 0xee, 0x75, 0x3b, 0x5e, 0x2c, 0x22, - 0xca, 0xbb, 0xfe, 0x61, 0x80, 0xbe, 0x0d, 0xd5, 0x90, 0x07, 0x23, 0xe6, 0x52, 0xde, 0x34, 0xd6, - 0x8c, 0xf5, 0x5a, 0x7b, 0xed, 0xe5, 0xd8, 0x2c, 0x4d, 0xc6, 0x66, 0xb5, 0xa7, 0xe5, 0xa7, 0x63, - 0x73, 0x59, 0xaa, 0xa5, 0xdf, 0x38, 0xd3, 0x40, 0x1b, 0x50, 0xf3, 0xc9, 0x90, 0x8a, 0x90, 0x38, - 0xb4, 0x79, 0x45, 0xa9, 0xaf, 0x6a, 0xf5, 0xda, 0xd3, 0x14, 0xc0, 0x39, 0x07, 0x3d, 0x84, 0xba, - 0x93, 0xac, 0x2e, 0xe1, 0x66, 0x59, 0xa9, 0x5c, 0xd7, 0x2a, 0xf5, 0x4e, 0x0e, 0xe1, 0x22, 0xcf, - 0xfa, 0x21, 0x7c, 0xa1, 0x43, 0x79, 0xc4, 0x0e, 0x99, 0x43, 0x22, 0xda, 0xe3, 0x6c, 0x44, 0x22, - 0xfa, 0x1e, 0x3d, 0x41, 0x6d, 0xa8, 0x52, 0xdf, 0x09, 0x5c, 0xe6, 0x0f, 0xf4, 0xf6, 0xef, 0xa6, - 0xdb, 0x7f, 0xa4, 0xe5, 0xa7, 0x63, 0x13, 0xe5, 0x1a, 0xa9, 0x14, 0x67, 0x7a, 0xd6, 0xf3, 0x05, - 0x68, 0x14, 0xac, 0xf7, 0x43, 0xea, 0xa0, 0x3b, 0xb0, 0x40, 0x3c, 0x46, 0x84, 0x36, 0xba, 0xa2, - 0x8d, 0x2e, 0x6c, 0x4b, 0x21, 0x4e, 0x30, 0xf4, 0x21, 0xd4, 0x98, 0x10, 0x31, 0xe5, 0x98, 0x1e, - 0xaa, 0xd3, 0xd7, 0xb7, 0xee, 0xdb, 0x89, 0x67, 0x94, 0xef, 0xa5, 0xf7, 0xec, 0xd1, 0xa6, 0xbd, - 0x7f, 0x12, 0x52, 0x77, 0x37, 0x70, 0x88, 0xb7, 0x77, 0xf0, 0x53, 0xea, 0x44, 0x98, 0x1e, 0x52, - 0x4e, 0x7d, 0x87, 0xb6, 0x57, 0xe4, 0x45, 0x75, 0x53, 0x1b, 0x38, 0x37, 0x87, 0xb6, 0x00, 0x04, - 0x75, 0x38, 0x8d, 0x0a, 0xf7, 0x84, 0xf4, 0x2e, 0xa0, 0x9f, 0x21, 0xb8, 0xc0, 0x42, 0xdf, 0x87, - 0x25, 0x11, 0xab, 0x15, 0x9a, 0x15, 0xb5, 0x9b, 0xaf, 0xda, 0x9f, 0x19, 0x99, 0xf6, 0x07, 0x0f, - 0xbf, 0xfe, 0xad, 0x7e, 0xa2, 0xd1, 0xae, 0x4f, 0xc6, 0xe6, 0x92, 0xfe, 0xc0, 0xa9, 0x1d, 0xf4, - 0x01, 0x54, 0xdd, 0x98, 0x93, 0x88, 0x05, 0x7e, 0x73, 0x41, 0xd9, 0xb4, 0x0b, 0x27, 0xcc, 0x62, - 0xcf, 0x0e, 0x8f, 0x07, 0x52, 0x20, 0x6c, 0x19, 0x7b, 0xd2, 0xf4, 0x8e, 0xd6, 0x6a, 0x2f, 0x4b, - 0x5f, 0xa4, 0x5f, 0x38, 0xb3, 0x86, 0xd6, 0xa1, 0xea, 0xfa, 0x42, 0x05, 0x49, 0x73, 0x69, 0xad, - 0xbc, 0x5e, 0xd3, 0xcc, 0xa7, 0x7d, 0x25, 0xc3, 0x19, 0x8a, 0x36, 0xa1, 0xce, 0xc2, 0x6d, 0xd7, - 0xe5, 0x54, 0x08, 0x2a, 0x9a, 0x55, 0x45, 0x6e, 0xc8, 0x78, 0xe9, 0xf6, 0x32, 0x31, 0x2e, 0x72, - 0xd0, 0x97, 0xa0, 0x12, 0x73, 0x26, 0x9a, 0x35, 0xc5, 0xad, 0x4e, 0xc6, 0x66, 0xe5, 0x19, 0xee, - 0x0a, 0xac, 0xa4, 0xe8, 0x2d, 0xb8, 0x4a, 0x87, 0x84, 0x79, 0xb9, 0x4d, 0x50, 0x3c, 0x34, 0x19, - 0x9b, 0x57, 0x1f, 0x4d, 0x21, 0x78, 0x86, 0x89, 0x5c, 0x80, 0x30, 0x0b, 0xa6, 0x66, 0x5d, 0x5d, - 0xc9, 0x83, 0x0b, 0xae, 0x79, 0x6e, 0xe8, 0xb6, 0xaf, 0x4a, 0x4f, 0xe6, 0xdf, 0xb8, 0x60, 0xd7, - 0xfa, 0x8b, 0x01, 0xf5, 0x62, 0x96, 0xde, 0x86, 0x72, 0xcc, 0x5c, 0x1d, 0x8c, 0x75, 0x1d, 0x06, - 0xe5, 0x67, 0xdd, 0x1d, 0x2c, 0xe5, 0x68, 0x0d, 0x2a, 0x32, 0xc5, 0x74, 0x06, 0x2e, 0x6b, 0xbc, - 0xa2, 0x02, 0x44, 0x21, 0xe8, 0x3b, 0xd0, 0xd0, 0xf9, 0xf4, 0x84, 0xf8, 0x64, 0x40, 0xb9, 0x68, - 0x96, 0xd5, 0x99, 0xaf, 0x4f, 0xc6, 0x66, 0xa3, 0x33, 0x0d, 0xe1, 0x59, 0x2e, 0xda, 0x85, 0x8a, - 0x43, 0x42, 0xa6, 0xc3, 0xca, 0xbe, 0xe8, 0xbc, 0xd3, 0x35, 0x26, 0xb9, 0x7f, 0x29, 0xc4, 0xca, - 0x8a, 0xf5, 0xab, 0x32, 0x64, 0x4b, 0xd2, 0x88, 0xb8, 0x24, 0x22, 0xff, 0xfd, 0x09, 0x1f, 0x42, - 0xdd, 0x65, 0x22, 0xf4, 0xc8, 0xc9, 0xbc, 0xca, 0xb2, 0x93, 0x43, 0xb8, 0xc8, 0x43, 0xdf, 0x2d, - 0xd4, 0xbf, 0x8a, 0xd2, 0xb9, 0x33, 0xa7, 0xfe, 0x35, 0xde, 0x09, 0x44, 0xc4, 0xfc, 0xc1, 0x9c, - 0x12, 0x78, 0x0f, 0x96, 0x82, 0x9f, 0xf9, 0x94, 0x77, 0x77, 0x54, 0x82, 0xd4, 0xda, 0x0d, 0xad, - 0xbf, 0xb4, 0x97, 0x88, 0x71, 0x8a, 0xcb, 0x6a, 0xa9, 0x7e, 0xca, 0x7a, 0xd0, 0x5c, 0x9c, 0xae, - 0x96, 0x7b, 0x29, 0x80, 0x73, 0x8e, 0x3c, 0x13, 0x09, 0xd9, 0x23, 0xdf, 0x0d, 0x03, 0xe6, 0x47, - 0xcd, 0xa5, 0xe9, 0x33, 0x6d, 0xf7, 0xba, 0x29, 0x84, 0x8b, 0x3c, 0xf4, 0x06, 0x54, 0x1d, 0xd2, - 0x8e, 0x7d, 0xd7, 0xa3, 0xcd, 0xaa, 0xd2, 0xb9, 0x96, 0x9e, 0xa9, 0xb3, 0x9d, 0xc8, 0x71, 0xc6, - 0xb0, 0xfe, 0x5d, 0x86, 0x5a, 0x27, 0xf0, 0x5d, 0xa6, 0xd2, 0x72, 0x13, 0x2a, 0x91, 0xdc, 0x5e, - 0x72, 0x17, 0xb7, 0xd3, 0x8b, 0x96, 0xdb, 0x39, 0x1d, 0x9b, 0x2b, 0x19, 0x51, 0x6d, 0x55, 0x51, - 0xd1, 0x8f, 0x61, 0x51, 0x44, 0x24, 0x8a, 0x85, 0xbe, 0x80, 0xb7, 0xb5, 0xd2, 0x62, 0x5f, 0x49, - 0x4f, 0xc7, 0xe6, 0xa5, 0xda, 0x95, 0x9d, 0xd9, 0x4e, 0xf4, 0xb0, 0xb6, 0x8a, 0xde, 0x05, 0x14, - 0x1c, 0x08, 0xca, 0x47, 0xd4, 0x7d, 0x9c, 0x74, 0x34, 0x59, 0x8d, 0xa4, 0x83, 0xcb, 0xed, 0x5b, - 0x7a, 0x2d, 0xb4, 0x77, 0x86, 0x81, 0xe7, 0x68, 0xa1, 0x6d, 0xa8, 0x0a, 0x3a, 0xa2, 0x9c, 0x45, - 0x27, 0xda, 0x03, 0x5f, 0x49, 0xaf, 0xa6, 0xaf, 0xe5, 0xa7, 0x63, 0x73, 0x35, 0xdf, 0x8a, 0x16, - 0xe2, 0x4c, 0x0d, 0x8d, 0x00, 0x79, 0x44, 0x44, 0xfb, 0x9c, 0xf8, 0x22, 0xb9, 0x0a, 0x36, 0xa4, - 0xca, 0x37, 0xaa, 0xe0, 0x5e, 0xa6, 0x38, 0x4a, 0x8d, 0x7c, 0xeb, 0xbb, 0x67, 0xac, 0xe1, 0x39, - 0x2b, 0xa0, 0xbb, 0xb0, 0xc8, 0x29, 0x11, 0x81, 0xaf, 0x7d, 0x7a, 0x35, 0xbd, 0x66, 0xac, 0xa4, - 0x58, 0xa3, 0x32, 0x20, 0x87, 0x54, 0x08, 0x32, 0xa0, 0xcd, 0xda, 0x74, 0x40, 0x3e, 0x49, 0xc4, - 0x38, 0xc5, 0xad, 0x7f, 0x1a, 0xd0, 0x78, 0x87, 0x12, 0x2f, 0x3a, 0xea, 0x1c, 0x51, 0xe7, 0x58, - 0x75, 0xbe, 0x5f, 0x1b, 0x70, 0x93, 0x53, 0xe2, 0x06, 0xbe, 0x77, 0x32, 0x83, 0xa9, 0xec, 0xac, - 0x6f, 0x7d, 0xe3, 0x82, 0xf4, 0xc7, 0xf3, 0xb5, 0xdb, 0xa6, 0xde, 0xc7, 0xcd, 0x73, 0x08, 0xf8, - 0xbc, 0x75, 0xd1, 0x63, 0x58, 0x75, 0x99, 0x20, 0x07, 0x1e, 0x7d, 0x9f, 0xb3, 0x88, 0x2a, 0x40, - 0x95, 0x82, 0x6a, 0xfb, 0x8b, 0xda, 0xe8, 0xea, 0xce, 0x2c, 0x01, 0x9f, 0xd5, 0xb1, 0xfe, 0x65, - 0x40, 0xad, 0x3b, 0x24, 0x03, 0xaa, 0xaa, 0xea, 0x1d, 0x58, 0x60, 0xf2, 0x63, 0xb6, 0xc9, 0x2b, - 0x06, 0x4e, 0x30, 0xb4, 0x0f, 0x55, 0x8f, 0xf9, 0x94, 0x0c, 0xa8, 0x68, 0x5e, 0x59, 0x2b, 0xaf, - 0xd7, 0xb7, 0xee, 0x5e, 0x70, 0xfe, 0xdd, 0x84, 0x9e, 0x27, 0x9d, 0x16, 0x08, 0x9c, 0x59, 0x42, - 0x43, 0x68, 0x84, 0xb1, 0xe7, 0x75, 0x38, 0x75, 0xa9, 0x1f, 0x31, 0xe2, 0x09, 0x15, 0xd0, 0x17, - 0xd7, 0xd6, 0xde, 0xb4, 0x56, 0x52, 0xbf, 0x67, 0x84, 0x78, 0xd6, 0xb6, 0xf5, 0x4b, 0x03, 0x96, - 0xf4, 0x2e, 0xd0, 0x53, 0x58, 0x70, 0x8e, 0x08, 0xf3, 0x9b, 0x86, 0x3a, 0xcd, 0xbd, 0x0b, 0x16, - 0x4c, 0x46, 0x16, 0x55, 0xc7, 0xb3, 0x0b, 0xea, 0x48, 0x7d, 0x9c, 0x98, 0x41, 0x36, 0x80, 0x13, - 0xf8, 0x11, 0x91, 0xb1, 0x9e, 0x5c, 0x51, 0x2d, 0xe9, 0x6d, 0x9d, 0x4c, 0x8a, 0x0b, 0x0c, 0xeb, - 0xb7, 0x06, 0x54, 0xb5, 0xd1, 0x1d, 0xe9, 0x82, 0x01, 0x0f, 0xe2, 0x70, 0xd6, 0x05, 0x8f, 0xa5, - 0x10, 0x27, 0x98, 0x2c, 0xfe, 0xc7, 0xcc, 0x77, 0x67, 0x8b, 0xff, 0x7b, 0xcc, 0x77, 0xb1, 0x42, - 0xa6, 0xe7, 0xd0, 0xf2, 0x25, 0xe6, 0xd0, 0xb4, 0x9f, 0x54, 0xce, 0xeb, 0x27, 0xd6, 0xef, 0x0c, - 0x80, 0xfc, 0xec, 0xe8, 0x7d, 0xa8, 0x72, 0x2a, 0x82, 0x98, 0x3b, 0x54, 0xa7, 0xc1, 0xbd, 0x0b, - 0xd3, 0x20, 0xa1, 0x77, 0x77, 0xf2, 0x48, 0x48, 0x65, 0x38, 0x33, 0x86, 0x9e, 0x40, 0x99, 0x67, - 0xe3, 0xa3, 0x7d, 0x29, 0x67, 0xe4, 0xf3, 0x63, 0xd6, 0x28, 0xe5, 0xf4, 0x28, 0xed, 0x58, 0x2e, - 0x34, 0x66, 0x48, 0xd3, 0x97, 0x63, 0x7c, 0x8e, 0xcb, 0x39, 0xb7, 0xd9, 0x5a, 0xff, 0x30, 0x60, - 0x36, 0xe8, 0x3e, 0xff, 0x32, 0xef, 0x02, 0x92, 0xf5, 0x99, 0x39, 0x74, 0xdb, 0x71, 0x82, 0xd8, - 0x4f, 0x46, 0xdd, 0x64, 0xd1, 0xac, 0x38, 0xf6, 0xcf, 0x30, 0xf0, 0x1c, 0x2d, 0xf4, 0xa3, 0x74, - 0x5c, 0xc6, 0xf4, 0x30, 0x19, 0x6d, 0xea, 0x5b, 0xeb, 0xf3, 0x66, 0xf1, 0xb9, 0x63, 0xf8, 0xcc, - 0x60, 0x2d, 0x6d, 0xe0, 0x82, 0x3d, 0xeb, 0x95, 0x01, 0xe7, 0x15, 0x2d, 0xf4, 0x4d, 0x58, 0x09, - 0x29, 0x67, 0x81, 0xdb, 0xa7, 0x4e, 0xe0, 0xbb, 0xc9, 0x8b, 0x61, 0xa1, 0xbd, 0x3a, 0x19, 0x9b, - 0x2b, 0xbd, 0x22, 0x80, 0xa7, 0x79, 0x72, 0x0a, 0x8d, 0xd8, 0x90, 0x06, 0x71, 0x94, 0x6a, 0x5e, - 0x51, 0x9a, 0x6a, 0x0a, 0xdd, 0x9f, 0x42, 0xf0, 0x0c, 0x13, 0x7d, 0x0f, 0xae, 0x1d, 0x12, 0xe6, - 0xc5, 0x9c, 0xee, 0x1f, 0x71, 0x2a, 0x8e, 0x02, 0xcf, 0x55, 0x61, 0xbf, 0xd0, 0xbe, 0x31, 0x19, - 0x9b, 0xd7, 0xde, 0x9e, 0xc1, 0xf0, 0x19, 0xb6, 0xf5, 0x67, 0x03, 0x20, 0x8f, 0xd0, 0xcb, 0xe5, - 0xe1, 0x3d, 0x58, 0x1a, 0x51, 0x2e, 0x64, 0xf7, 0xbd, 0x32, 0xdd, 0x59, 0x7e, 0x90, 0x88, 0x71, - 0x8a, 0x67, 0x21, 0x54, 0x3e, 0x77, 0x5e, 0x4b, 0x93, 0xba, 0x72, 0x6e, 0x52, 0x3f, 0x80, 0x05, - 0xe1, 0x04, 0x21, 0xd5, 0x63, 0x45, 0x2b, 0xdd, 0x53, 0x5f, 0x0a, 0xe5, 0x30, 0x92, 0xee, 0x5f, - 0x09, 0x70, 0x42, 0xb6, 0xfe, 0x64, 0x40, 0x6d, 0x7f, 0xb7, 0xdf, 0x09, 0xfc, 0x43, 0x36, 0x98, - 0x7e, 0xa2, 0x19, 0xff, 0xdb, 0x27, 0xda, 0x11, 0x2c, 0x3b, 0xf9, 0x64, 0x9f, 0x76, 0x07, 0xfb, - 0xf2, 0x8f, 0x01, 0xd5, 0x15, 0x6f, 0xe8, 0x63, 0x2d, 0x17, 0x00, 0x81, 0xa7, 0x2c, 0x5b, 0x5f, - 0x86, 0x9a, 0x0c, 0x88, 0xbd, 0xc3, 0x1d, 0x72, 0xf2, 0xd6, 0x8d, 0xdf, 0x7c, 0x62, 0x96, 0x7e, - 0xf1, 0xc2, 0x2c, 0x3d, 0x7f, 0x61, 0x96, 0x3e, 0x79, 0x61, 0x96, 0x3e, 0xfe, 0xeb, 0x5a, 0xc9, - 0xfa, 0x83, 0x01, 0x37, 0xd4, 0x21, 0x66, 0xb3, 0xff, 0x0d, 0xa8, 0x92, 0x90, 0x3d, 0x2e, 0x38, - 0x37, 0xab, 0x46, 0xdb, 0xbd, 0x6e, 0xe2, 0xdf, 0x8c, 0xf1, 0xff, 0x29, 0xb5, 0x7f, 0x2c, 0x43, - 0xbd, 0xf0, 0x14, 0x95, 0x29, 0x15, 0xf0, 0x01, 0xf1, 0xd9, 0x47, 0x6a, 0x68, 0x13, 0xaa, 0x53, - 0xd5, 0x92, 0x94, 0xda, 0x2b, 0x02, 0x78, 0x9a, 0x87, 0xbe, 0x06, 0x35, 0x55, 0x12, 0x38, 0xa3, - 0x69, 0x27, 0x52, 0xee, 0xeb, 0xa4, 0x42, 0x9c, 0xe3, 0xa8, 0x0b, 0xd7, 0x8b, 0xda, 0xc4, 0x7b, - 0xe6, 0xb3, 0x28, 0x7d, 0x16, 0xdd, 0x9c, 0x8c, 0xcd, 0xeb, 0x7b, 0x67, 0x61, 0x3c, 0x4f, 0x47, - 0xb6, 0x40, 0x4f, 0xc6, 0x0e, 0x8b, 0xe4, 0xc2, 0x95, 0xbc, 0x05, 0xee, 0x66, 0x52, 0x5c, 0x60, - 0xc8, 0x7d, 0xaa, 0xf7, 0x83, 0xef, 0x50, 0x39, 0x34, 0x67, 0xfb, 0xec, 0xa5, 0x42, 0x9c, 0xe3, - 0xf2, 0xe9, 0x26, 0x22, 0x4e, 0x69, 0x94, 0x3f, 0x57, 0x17, 0xf3, 0xa7, 0x5b, 0x7f, 0x1a, 0xc2, - 0xb3, 0x5c, 0xf9, 0x7a, 0x0e, 0x03, 0x11, 0x11, 0xaf, 0x13, 0xb8, 0xd9, 0x53, 0x5b, 0xbd, 0x9e, - 0x7b, 0xb9, 0x18, 0x17, 0x39, 0xe8, 0x4d, 0x58, 0x16, 0x94, 0x33, 0xe2, 0x3d, 0x8d, 0x87, 0x07, - 0x94, 0xeb, 0x79, 0x33, 0x0b, 0xd4, 0x7e, 0x01, 0xc3, 0x53, 0xcc, 0x76, 0xe7, 0xe5, 0xeb, 0x56, - 0xe9, 0xd5, 0xeb, 0x56, 0xe9, 0xd3, 0xd7, 0xad, 0xd2, 0xc7, 0x93, 0x96, 0xf1, 0x72, 0xd2, 0x32, - 0x5e, 0x4d, 0x5a, 0xc6, 0xa7, 0x93, 0x96, 0xf1, 0xb7, 0x49, 0xcb, 0x78, 0xfe, 0xf7, 0x56, 0xe9, - 0xc3, 0xdb, 0x9f, 0xf9, 0xf7, 0xda, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0x1e, 0xcb, 0xee, 0x96, - 0x7e, 0x13, 0x00, 0x00, + // 1886 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x58, 0xdf, 0x6f, 0x5b, 0x49, + 0xf5, 0xf7, 0xad, 0x9d, 0xc4, 0x3e, 0x4e, 0xea, 0x66, 0xda, 0xaf, 0xea, 0x6f, 0x45, 0xed, 0x70, + 0x2b, 0xaa, 0x14, 0xb6, 0x37, 0x24, 0x6a, 0x61, 0x59, 0x81, 0x20, 0x76, 0xba, 0x5d, 0xef, 0xa6, + 0x8d, 0x19, 0xa7, 0xec, 0x6a, 0x41, 0xa0, 0xc9, 0xbd, 0xc7, 0xce, 0x90, 0xeb, 0x7b, 0xaf, 0x66, + 0xae, 0xb3, 0x64, 0x9f, 0xf6, 0x11, 0xc4, 0xcb, 0xf2, 0xc6, 0xe3, 0x56, 0xe2, 0x4f, 0x40, 0x42, + 0xfc, 0x05, 0xf4, 0xb1, 0xbc, 0xa0, 0x95, 0x40, 0x16, 0x35, 0xaf, 0x88, 0x17, 0x84, 0x84, 0xf2, + 0x84, 0x66, 0xee, 0x4f, 0x3b, 0xce, 0x26, 0x0b, 0x48, 0xbc, 0xf9, 0x9e, 0xcf, 0xe7, 0x9c, 0x39, + 0x33, 0x73, 0x7e, 0x8d, 0xe1, 0xfe, 0xd1, 0xd0, 0x77, 0x46, 0x2e, 0x4a, 0xeb, 0x27, 0x27, 0x1f, + 0x6e, 0xd8, 0x2e, 0x47, 0x2f, 0xbc, 0x3f, 0xf0, 0x37, 0x58, 0xc0, 0x37, 0x8e, 0x37, 0x37, 0x06, + 0xe8, 0xa1, 0x60, 0x21, 0x3a, 0x56, 0x20, 0xfc, 0xd0, 0x27, 0xb7, 0xf3, 0x74, 0x2b, 0xa2, 0xff, + 0x68, 0xe0, 0x5b, 0x2c, 0xe0, 0xd6, 0xf1, 0xe6, 0xad, 0xfb, 0x03, 0x1e, 0x1e, 0x8e, 0x0e, 0x2c, + 0xdb, 0x1f, 0x6e, 0x0c, 0xfc, 0x81, 0xbf, 0xa1, 0xb5, 0x0e, 0x46, 0x7d, 0xfd, 0xa5, 0x3f, 0xf4, + 0xaf, 0xc8, 0xda, 0x2d, 0xf3, 0xe8, 0x75, 0x69, 0xf1, 0x68, 0x31, 0xdb, 0x17, 0x38, 0x67, 0xc5, + 0x5b, 0x0f, 0x32, 0xce, 0x90, 0xd9, 0x87, 0xdc, 0x43, 0x71, 0xb2, 0x11, 0x1c, 0x0d, 0x94, 0x40, + 0x6e, 0x0c, 0x31, 0x64, 0x73, 0xb4, 0xcc, 0xdf, 0x18, 0x50, 0x6b, 0x6f, 0x77, 0x3b, 0x6d, 0x77, + 0x24, 0x43, 0x14, 0x1d, 0xaf, 0xef, 0x93, 0x6f, 0x42, 0x39, 0x10, 0xfe, 0x31, 0x77, 0x50, 0xd4, + 0x8d, 0x35, 0x63, 0xbd, 0xd2, 0x5a, 0x7b, 0x31, 0x6e, 0x16, 0x26, 0xe3, 0x66, 0xb9, 0x1b, 0xcb, + 0x4f, 0xc7, 0xcd, 0x65, 0xa5, 0x96, 0x7c, 0xd3, 0x54, 0x83, 0x6c, 0x40, 0xc5, 0x63, 0x43, 0x94, + 0x01, 0xb3, 0xb1, 0x7e, 0x45, 0xab, 0xaf, 0xc6, 0xea, 0x95, 0xa7, 0x09, 0x40, 0x33, 0x0e, 0x79, + 0x08, 0x55, 0x3b, 0x5a, 0x5d, 0xc1, 0xf5, 0xa2, 0x56, 0xb9, 0x1e, 0xab, 0x54, 0xdb, 0x19, 0x44, + 0xf3, 0x3c, 0xf3, 0xfb, 0xf0, 0x7f, 0x6d, 0x14, 0x21, 0xef, 0x73, 0x9b, 0x85, 0xd8, 0x15, 0xfc, + 0x98, 0x85, 0xf8, 0x0e, 0x9e, 0x90, 0x16, 0x94, 0xd1, 0xb3, 0x7d, 0x87, 0x7b, 0x83, 0xd8, 0xfd, + 0xbb, 0x89, 0xfb, 0x8f, 0x62, 0xf9, 0xe9, 0xb8, 0x49, 0x32, 0x8d, 0x44, 0x4a, 0x53, 0x3d, 0xf3, + 0xef, 0x0b, 0x50, 0xcb, 0x59, 0xef, 0x05, 0x68, 0x93, 0x3b, 0xb0, 0xc0, 0x5c, 0xce, 0x64, 0x6c, + 0x74, 0x25, 0x36, 0xba, 0xb0, 0xad, 0x84, 0x34, 0xc2, 0xc8, 0xfb, 0x50, 0xe1, 0x52, 0x8e, 0x50, + 0x50, 0xec, 0xeb, 0xdd, 0x57, 0xb7, 0xee, 0x5b, 0xd1, 0xcd, 0xe8, 0xbb, 0x57, 0xb7, 0x67, 0x1d, + 0x6f, 0x5a, 0xfb, 0x27, 0x01, 0x3a, 0xbb, 0xbe, 0xcd, 0xdc, 0xbd, 0x83, 0x1f, 0xa3, 0x1d, 0x52, + 0xec, 0xa3, 0x40, 0xcf, 0xc6, 0xd6, 0x8a, 0x3a, 0xa8, 0x4e, 0x62, 0x83, 0x66, 0xe6, 0xc8, 0x16, + 0x80, 0x44, 0x5b, 0x60, 0x98, 0x3b, 0x27, 0x12, 0x7b, 0x01, 0xbd, 0x14, 0xa1, 0x39, 0x16, 0xf9, + 0x2e, 0x2c, 0xc9, 0x91, 0x5e, 0xa1, 0x5e, 0xd2, 0xde, 0x7c, 0xd9, 0xfa, 0xcc, 0xc8, 0xb4, 0xde, + 0x7b, 0xf8, 0xd5, 0x6f, 0xf4, 0x22, 0x8d, 0x56, 0x75, 0x32, 0x6e, 0x2e, 0xc5, 0x1f, 0x34, 0xb1, + 0x43, 0xde, 0x83, 0xb2, 0x33, 0x12, 0x2c, 0xe4, 0xbe, 0x57, 0x5f, 0xd0, 0x36, 0xad, 0xdc, 0x0e, + 0xd3, 0xd8, 0xb3, 0x82, 0xa3, 0x81, 0x12, 0x48, 0x4b, 0xc5, 0x9e, 0x32, 0xbd, 0x13, 0x6b, 0xb5, + 0x96, 0xd5, 0x5d, 0x24, 0x5f, 0x34, 0xb5, 0x46, 0x18, 0x54, 0x05, 0x7a, 0xf8, 0x41, 0x0b, 0xfb, + 0xbe, 0xc0, 0xfa, 0xe2, 0xbf, 0x65, 0xbc, 0xa6, 0xa2, 0x86, 0x66, 0x66, 0x68, 0xde, 0x26, 0x59, + 0x87, 0xb2, 0xe3, 0x49, 0x1d, 0x87, 0xf5, 0xa5, 0xb5, 0xe2, 0x7a, 0x25, 0x76, 0xe6, 0x69, 0x4f, + 0xcb, 0x68, 0x8a, 0x92, 0x4d, 0xa8, 0xf2, 0x60, 0xdb, 0x71, 0x04, 0x4a, 0x89, 0xb2, 0x5e, 0xd6, + 0x64, 0x6d, 0xbc, 0xd3, 0x4d, 0xc5, 0x34, 0xcf, 0x21, 0x5f, 0x80, 0xd2, 0x48, 0x70, 0x59, 0xaf, + 0x68, 0x6e, 0x79, 0x32, 0x6e, 0x96, 0x9e, 0xd1, 0x8e, 0xa4, 0x5a, 0x4a, 0xde, 0x80, 0xab, 0x38, + 0x64, 0xdc, 0xcd, 0x6c, 0x82, 0xe6, 0x91, 0xc9, 0xb8, 0x79, 0xf5, 0xd1, 0x14, 0x42, 0x67, 0x98, + 0xc4, 0x01, 0x08, 0xd2, 0x78, 0xad, 0x57, 0xf5, 0xc1, 0x3c, 0xb8, 0xe0, 0x26, 0xe7, 0x66, 0x47, + 0xeb, 0xaa, 0x0a, 0x96, 0xec, 0x9b, 0xe6, 0xec, 0x9a, 0x7f, 0x34, 0xa0, 0x9a, 0x2f, 0x04, 0xb7, + 0xa1, 0x38, 0xe2, 0x4e, 0x1c, 0xef, 0xd5, 0x38, 0xd2, 0x8a, 0xcf, 0x3a, 0x3b, 0x54, 0xc9, 0xc9, + 0x1a, 0x94, 0x54, 0x16, 0xc7, 0x49, 0xbe, 0x1c, 0xe3, 0x25, 0x1d, 0x83, 0x1a, 0x21, 0xdf, 0x82, + 0x5a, 0x9c, 0xb2, 0x4f, 0x98, 0xc7, 0x06, 0x28, 0x64, 0xbd, 0xa8, 0xf7, 0x7c, 0x7d, 0x32, 0x6e, + 0xd6, 0xda, 0xd3, 0x10, 0x9d, 0xe5, 0x92, 0x5d, 0x28, 0xd9, 0x2c, 0xe0, 0x71, 0xe4, 0x5a, 0x17, + 0xed, 0x77, 0xba, 0x8c, 0x45, 0xe7, 0xaf, 0x84, 0x54, 0x5b, 0x31, 0x7f, 0x5e, 0x84, 0x74, 0x49, + 0x0c, 0x99, 0xc3, 0x42, 0xf6, 0x9f, 0xef, 0xf0, 0x21, 0x54, 0x1d, 0x2e, 0x03, 0x97, 0x9d, 0xcc, + 0x2b, 0x5e, 0x3b, 0x19, 0x44, 0xf3, 0x3c, 0xf2, 0xed, 0x5c, 0x89, 0x2d, 0x69, 0x9d, 0x3b, 0x73, + 0x4a, 0x6c, 0xed, 0x2d, 0x5f, 0x86, 0xdc, 0x1b, 0xcc, 0xa9, 0xb2, 0xf7, 0x60, 0xc9, 0xff, 0xc0, + 0x43, 0xd1, 0xd9, 0xd1, 0x39, 0x58, 0x69, 0xd5, 0x62, 0xfd, 0xa5, 0xbd, 0x48, 0x4c, 0x13, 0x5c, + 0x15, 0x64, 0xfd, 0x53, 0x95, 0x1c, 0x9d, 0x53, 0xb9, 0x82, 0xbc, 0x97, 0x00, 0x34, 0xe3, 0xa8, + 0x3d, 0xb1, 0x80, 0x3f, 0xf2, 0x9c, 0xc0, 0xe7, 0x5e, 0x58, 0x5f, 0x9a, 0xde, 0xd3, 0x76, 0xb7, + 0x93, 0x40, 0x34, 0xcf, 0x23, 0xaf, 0x41, 0xd9, 0x66, 0xad, 0x91, 0xe7, 0xb8, 0x58, 0x2f, 0x6b, + 0x9d, 0x6b, 0xc9, 0x9e, 0xda, 0xdb, 0x91, 0x9c, 0xa6, 0x0c, 0xf3, 0x9f, 0x45, 0xa8, 0xb4, 0x7d, + 0xcf, 0xe1, 0x3a, 0xf3, 0x37, 0xa1, 0x14, 0x2a, 0xf7, 0xa2, 0xb3, 0xb8, 0x9d, 0x1c, 0xb4, 0x72, + 0xe7, 0x74, 0xdc, 0x5c, 0x49, 0x89, 0xda, 0x55, 0x4d, 0x25, 0x3f, 0x84, 0x45, 0x19, 0xb2, 0x70, + 0x24, 0xe3, 0x03, 0x78, 0x33, 0x56, 0x5a, 0xec, 0x69, 0xe9, 0xe9, 0xb8, 0x79, 0xa9, 0x8e, 0x68, + 0xa5, 0xb6, 0x23, 0x3d, 0x1a, 0x5b, 0x25, 0x6f, 0x03, 0xf1, 0x0f, 0x24, 0x8a, 0x63, 0x74, 0x1e, + 0x47, 0x4d, 0x53, 0x15, 0x3c, 0x75, 0xc1, 0xc5, 0xd6, 0xad, 0x78, 0x2d, 0xb2, 0x77, 0x86, 0x41, + 0xe7, 0x68, 0x91, 0x6d, 0x28, 0x4b, 0x3c, 0x46, 0xc1, 0xc3, 0x93, 0xf8, 0x06, 0xbe, 0x94, 0x1c, + 0x4d, 0x2f, 0x96, 0x9f, 0x8e, 0x9b, 0xab, 0x99, 0x2b, 0xb1, 0x90, 0xa6, 0x6a, 0xe4, 0x18, 0x88, + 0xcb, 0x64, 0xb8, 0x2f, 0x98, 0x27, 0xa3, 0xa3, 0xe0, 0x43, 0xd4, 0x77, 0xa3, 0x6b, 0xfa, 0x65, + 0x4a, 0xa4, 0xd2, 0xc8, 0x5c, 0xdf, 0x3d, 0x63, 0x8d, 0xce, 0x59, 0x81, 0xdc, 0x85, 0x45, 0x81, + 0x4c, 0xfa, 0x5e, 0x7c, 0xa7, 0x57, 0x93, 0x63, 0xa6, 0x5a, 0x4a, 0x63, 0x54, 0x05, 0xe4, 0x10, + 0xa5, 0x64, 0x03, 0xac, 0x57, 0xa6, 0x03, 0xf2, 0x49, 0x24, 0xa6, 0x09, 0x6e, 0xfe, 0xcd, 0x80, + 0xda, 0x5b, 0xc8, 0xdc, 0xf0, 0xb0, 0x7d, 0x88, 0xf6, 0x91, 0x6e, 0xae, 0xbf, 0x30, 0xe0, 0xa6, + 0x40, 0xe6, 0xf8, 0x9e, 0x7b, 0x32, 0x83, 0xe9, 0xec, 0xac, 0x6e, 0x7d, 0xed, 0x82, 0xf4, 0xa7, + 0xf3, 0xb5, 0x5b, 0xcd, 0xd8, 0x8f, 0x9b, 0xe7, 0x10, 0xe8, 0x79, 0xeb, 0x92, 0xc7, 0xb0, 0xea, + 0x70, 0xc9, 0x0e, 0x5c, 0x7c, 0x57, 0xf0, 0x10, 0x35, 0xa0, 0x4b, 0x41, 0xb9, 0xf5, 0xff, 0xb1, + 0xd1, 0xd5, 0x9d, 0x59, 0x02, 0x3d, 0xab, 0x63, 0xfe, 0xc3, 0x80, 0x4a, 0x67, 0xc8, 0x06, 0xa8, + 0xab, 0xea, 0x1d, 0x58, 0xe0, 0xea, 0x63, 0x76, 0x8e, 0xd0, 0x0c, 0x1a, 0x61, 0x64, 0x1f, 0xca, + 0x2e, 0xf7, 0x90, 0x0d, 0x50, 0xd6, 0xaf, 0xac, 0x15, 0xd7, 0xab, 0x5b, 0x77, 0x2f, 0xd8, 0xff, + 0x6e, 0x44, 0xcf, 0x92, 0x2e, 0x16, 0x48, 0x9a, 0x5a, 0x22, 0x43, 0xa8, 0x05, 0x23, 0xd7, 0x6d, + 0x0b, 0x74, 0xd0, 0x0b, 0x39, 0x73, 0xa5, 0x0e, 0xe8, 0x8b, 0x6b, 0x6b, 0x77, 0x5a, 0x2b, 0xaa, + 0xdf, 0x33, 0x42, 0x3a, 0x6b, 0xdb, 0xfc, 0x99, 0x01, 0x4b, 0xb1, 0x17, 0xe4, 0x29, 0x2c, 0xd8, + 0x87, 0x8c, 0x7b, 0x75, 0x43, 0xef, 0xe6, 0xde, 0x05, 0x0b, 0x46, 0x53, 0x91, 0xae, 0xe3, 0xe9, + 0x01, 0xb5, 0x95, 0x3e, 0x8d, 0xcc, 0x10, 0x0b, 0xc0, 0xf6, 0xbd, 0x90, 0xa9, 0x58, 0x8f, 0x8e, + 0xa8, 0x12, 0xf5, 0xb6, 0x76, 0x2a, 0xa5, 0x39, 0x86, 0xf9, 0x2b, 0x03, 0xca, 0xb1, 0xd1, 0x1d, + 0x75, 0x05, 0x03, 0xe1, 0x8f, 0x82, 0xd9, 0x2b, 0x78, 0xac, 0x84, 0x34, 0xc2, 0x54, 0xf1, 0x3f, + 0xe2, 0x9e, 0x33, 0x5b, 0xfc, 0xdf, 0xe1, 0x9e, 0x43, 0x35, 0x32, 0x3d, 0xea, 0x16, 0x2f, 0x31, + 0xea, 0x26, 0xfd, 0xa4, 0x74, 0x5e, 0x3f, 0x31, 0x7f, 0x6d, 0x00, 0x64, 0x7b, 0x27, 0xef, 0x42, + 0x59, 0xa0, 0xf4, 0x47, 0xc2, 0xc6, 0x38, 0x0d, 0xee, 0x5d, 0x98, 0x06, 0x11, 0xbd, 0xb3, 0x93, + 0x45, 0x42, 0x22, 0xa3, 0xa9, 0x31, 0xf2, 0x04, 0x8a, 0x22, 0x9d, 0x50, 0xad, 0x4b, 0x5d, 0x46, + 0x36, 0xa2, 0xa6, 0x8d, 0x52, 0x0d, 0xa8, 0xca, 0x8e, 0xe9, 0x40, 0x6d, 0x86, 0x34, 0x7d, 0x38, + 0xc6, 0xe7, 0x38, 0x9c, 0x73, 0x9b, 0xad, 0xf9, 0x57, 0x03, 0x66, 0x83, 0xee, 0xf3, 0x2f, 0xf3, + 0x36, 0x10, 0x55, 0x9f, 0xb9, 0x8d, 0xdb, 0xb6, 0xed, 0x8f, 0xbc, 0x68, 0x9a, 0x8e, 0x16, 0x4d, + 0x8b, 0x63, 0xef, 0x0c, 0x83, 0xce, 0xd1, 0x22, 0x3f, 0x48, 0x26, 0x72, 0x8a, 0xfd, 0x68, 0xb4, + 0xa9, 0x6e, 0xad, 0xcf, 0x1b, 0xf7, 0xe7, 0x4e, 0xfa, 0x33, 0xb3, 0xbb, 0xb2, 0x41, 0x73, 0xf6, + 0xcc, 0x97, 0x06, 0x9c, 0x57, 0xb4, 0xc8, 0xd7, 0x61, 0x25, 0x40, 0xc1, 0x7d, 0xa7, 0x87, 0xb6, + 0xef, 0x39, 0xd1, 0xa3, 0x64, 0xa1, 0xb5, 0x3a, 0x19, 0x37, 0x57, 0xba, 0x79, 0x80, 0x4e, 0xf3, + 0xd4, 0x14, 0x1a, 0xf2, 0x21, 0xfa, 0xa3, 0x30, 0xd1, 0xbc, 0xa2, 0x35, 0xf5, 0x14, 0xba, 0x3f, + 0x85, 0xd0, 0x19, 0x26, 0xf9, 0x0e, 0x5c, 0xeb, 0x33, 0xee, 0x8e, 0x04, 0xee, 0x1f, 0x0a, 0x94, + 0x87, 0xbe, 0xeb, 0xe8, 0xb0, 0x5f, 0x68, 0xdd, 0x98, 0x8c, 0x9b, 0xd7, 0xde, 0x9c, 0xc1, 0xe8, + 0x19, 0xb6, 0xf9, 0x07, 0x03, 0x20, 0x8b, 0xd0, 0xcb, 0xe5, 0xe1, 0x3d, 0x58, 0x3a, 0x46, 0x21, + 0x55, 0xf7, 0xbd, 0x32, 0xdd, 0x59, 0xbe, 0x17, 0x89, 0x69, 0x82, 0xa7, 0x21, 0x54, 0x3c, 0x77, + 0x5e, 0x4b, 0x92, 0xba, 0x74, 0x6e, 0x52, 0x3f, 0x80, 0x05, 0x69, 0xfb, 0x01, 0xc6, 0x63, 0x45, + 0x23, 0xf1, 0xa9, 0xa7, 0x84, 0x6a, 0x18, 0x49, 0xfc, 0xd7, 0x02, 0x1a, 0x91, 0xcd, 0xdf, 0x1b, + 0x50, 0xd9, 0xdf, 0xed, 0xb5, 0x7d, 0xaf, 0xcf, 0x07, 0xd3, 0xaf, 0x40, 0xe3, 0xbf, 0xfb, 0x0a, + 0x3c, 0x84, 0x65, 0x3b, 0x9b, 0xec, 0x93, 0xee, 0x60, 0x5d, 0xfe, 0x31, 0xa0, 0xbb, 0xe2, 0x8d, + 0x78, 0x5b, 0xcb, 0x39, 0x40, 0xd2, 0x29, 0xcb, 0xe6, 0x17, 0xa1, 0xa2, 0x02, 0x62, 0xaf, 0xbf, + 0xc3, 0x4e, 0xde, 0xb8, 0xf1, 0xcb, 0x4f, 0x9a, 0x85, 0x9f, 0x3e, 0x6f, 0x16, 0x3e, 0x7e, 0xde, + 0x2c, 0x7c, 0xf2, 0xbc, 0x59, 0xf8, 0xe8, 0x4f, 0x6b, 0x05, 0xf3, 0xb7, 0x06, 0xdc, 0xd0, 0x9b, + 0x98, 0xcd, 0xfe, 0xd7, 0xa0, 0xcc, 0x02, 0xfe, 0x38, 0x77, 0xb9, 0x69, 0x35, 0xda, 0xee, 0x76, + 0xa2, 0xfb, 0x4d, 0x19, 0xff, 0x9b, 0x52, 0xfb, 0xbb, 0x22, 0x54, 0x73, 0xaf, 0x5d, 0x95, 0x52, + 0xbe, 0x18, 0x30, 0x8f, 0x7f, 0xa8, 0x87, 0x36, 0xa9, 0x3b, 0x55, 0x25, 0x4a, 0xa9, 0xbd, 0x3c, + 0x40, 0xa7, 0x79, 0xe4, 0x2b, 0x50, 0xd1, 0x25, 0x41, 0x70, 0x4c, 0x3a, 0x91, 0xbe, 0xbe, 0x76, + 0x22, 0xa4, 0x19, 0x4e, 0x3a, 0x70, 0x3d, 0xaf, 0xcd, 0xdc, 0x67, 0x1e, 0x0f, 0x93, 0x67, 0xd1, + 0xcd, 0xc9, 0xb8, 0x79, 0x7d, 0xef, 0x2c, 0x4c, 0xe7, 0xe9, 0xa8, 0x16, 0xe8, 0xaa, 0xd8, 0xe1, + 0xa1, 0x5a, 0xb8, 0x94, 0xb5, 0xc0, 0xdd, 0x54, 0x4a, 0x73, 0x0c, 0xe5, 0xa7, 0x7e, 0x3f, 0x78, + 0x36, 0xaa, 0xa1, 0x39, 0xf5, 0xb3, 0x9b, 0x08, 0x69, 0x86, 0xab, 0xa7, 0x9b, 0x0c, 0x05, 0x62, + 0x98, 0x3d, 0x57, 0x17, 0xb3, 0xa7, 0x5b, 0x6f, 0x1a, 0xa2, 0xb3, 0x5c, 0xf5, 0x7a, 0x0e, 0x7c, + 0x19, 0x32, 0xb7, 0xed, 0x3b, 0xe9, 0x53, 0x5b, 0xbf, 0x9e, 0xbb, 0x99, 0x98, 0xe6, 0x39, 0xe4, + 0x75, 0x58, 0x96, 0x28, 0x38, 0x73, 0x9f, 0x8e, 0x86, 0x07, 0x28, 0xe2, 0x79, 0x33, 0x0d, 0xd4, + 0x5e, 0x0e, 0xa3, 0x53, 0xcc, 0x56, 0xfb, 0xc5, 0xab, 0x46, 0xe1, 0xe5, 0xab, 0x46, 0xe1, 0xd3, + 0x57, 0x8d, 0xc2, 0x47, 0x93, 0x86, 0xf1, 0x62, 0xd2, 0x30, 0x5e, 0x4e, 0x1a, 0xc6, 0xa7, 0x93, + 0x86, 0xf1, 0xe7, 0x49, 0xc3, 0xf8, 0xf8, 0x2f, 0x8d, 0xc2, 0xfb, 0xb7, 0x3f, 0xf3, 0x1f, 0xbc, + 0x7f, 0x05, 0x00, 0x00, 0xff, 0xff, 0x96, 0x9b, 0xc8, 0x3b, 0xe1, 0x13, 0x00, 0x00, } func (m *CAPIClusterInfo) Marshal() (dAtA []byte, err error) { @@ -852,6 +853,18 @@ func (m *CertificateSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) { dAtA[i] = 0x3a } } + if m.RenewBefore != nil { + { + size, err := m.RenewBefore.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x32 + } if m.Duration != nil { { size, err := m.Duration.MarshalToSizedBuffer(dAtA[:i]) @@ -1714,6 +1727,10 @@ func (m *CertificateSpec) Size() (n int) { l = m.Duration.Size() n += 1 + l + sovGenerated(uint64(l)) } + if m.RenewBefore != nil { + l = m.RenewBefore.Size() + n += 1 + l + sovGenerated(uint64(l)) + } if len(m.DNSNames) > 0 { for _, s := range m.DNSNames { l = len(s) @@ -2095,6 +2112,7 @@ func (this *CertificateSpec) String() string { `SecretName:` + fmt.Sprintf("%v", this.SecretName) + `,`, `Subject:` + strings.Replace(this.Subject.String(), "X509Subject", "X509Subject", 1) + `,`, `Duration:` + strings.Replace(fmt.Sprintf("%v", this.Duration), "Duration", "v11.Duration", 1) + `,`, + `RenewBefore:` + strings.Replace(fmt.Sprintf("%v", this.RenewBefore), "Duration", "v11.Duration", 1) + `,`, `DNSNames:` + fmt.Sprintf("%v", this.DNSNames) + `,`, `IPAddresses:` + fmt.Sprintf("%v", this.IPAddresses) + `,`, `URIs:` + fmt.Sprintf("%v", this.URIs) + `,`, @@ -2755,6 +2773,42 @@ func (m *CertificateSpec) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RenewBefore", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.RenewBefore == nil { + m.RenewBefore = &v11.Duration{} + } + if err := m.RenewBefore.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex case 7: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field DNSNames", wireType) diff --git a/vendor/kmodules.xyz/client-go/api/v1/generated.proto b/vendor/kmodules.xyz/client-go/api/v1/generated.proto index 4750fd4ff..2c43d3eea 100644 --- a/vendor/kmodules.xyz/client-go/api/v1/generated.proto +++ b/vendor/kmodules.xyz/client-go/api/v1/generated.proto @@ -70,6 +70,14 @@ message CertificateSpec { // +optional optional k8s.io.apimachinery.pkg.apis.meta.v1.Duration duration = 5; + // Certificate renew before expiration duration + // + // Deprecated use `ReconfigureTLS` type OpsRequest instead. + // + // +deprecated + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Duration renewBefore = 6; + // DNSNames is a list of subject alt names to be used on the Certificate. // +optional repeated string dnsNames = 7; diff --git a/vendor/kmodules.xyz/client-go/api/v1/zz_generated.deepcopy.go b/vendor/kmodules.xyz/client-go/api/v1/zz_generated.deepcopy.go index 5a89f3e10..f44550fbd 100644 --- a/vendor/kmodules.xyz/client-go/api/v1/zz_generated.deepcopy.go +++ b/vendor/kmodules.xyz/client-go/api/v1/zz_generated.deepcopy.go @@ -76,6 +76,11 @@ func (in *CertificateSpec) DeepCopyInto(out *CertificateSpec) { *out = new(metav1.Duration) **out = **in } + if in.RenewBefore != nil { + in, out := &in.RenewBefore, &out.RenewBefore + *out = new(metav1.Duration) + **out = **in + } if in.DNSNames != nil { in, out := &in.DNSNames, &out.DNSNames *out = make([]string, len(*in)) diff --git a/vendor/kmodules.xyz/client-go/client/client.go b/vendor/kmodules.xyz/client-go/client/client.go index 519c087df..68b8da6b1 100644 --- a/vendor/kmodules.xyz/client-go/client/client.go +++ b/vendor/kmodules.xyz/client-go/client/client.go @@ -21,6 +21,8 @@ import ( "reflect" "strings" + "kmodules.xyz/client-go/meta" + "github.com/pkg/errors" kerr "k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" @@ -116,8 +118,15 @@ func CreateOrPatch(ctx context.Context, c client.Client, obj client.Object, tran } vt := kutil.VerbUnchanged - if cur.GetGeneration() != mod.GetGeneration() { - vt = kutil.VerbPatched + if mod.GetGeneration() > 0 { + if cur.GetGeneration() != mod.GetGeneration() { + vt = kutil.VerbPatched + } + } else { + // Secret, ServiceAccount etc resources do not use metadata.generation + if meta.ObjectHash(cur) != meta.ObjectHash(mod) { + vt = kutil.VerbPatched + } } assign(obj, mod) return vt, nil diff --git a/vendor/kmodules.xyz/client-go/cluster/ace.go b/vendor/kmodules.xyz/client-go/cluster/ace.go index 678847fc9..a1a149f11 100644 --- a/vendor/kmodules.xyz/client-go/cluster/ace.go +++ b/vendor/kmodules.xyz/client-go/cluster/ace.go @@ -24,7 +24,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client" ) -func IsACEManaged(kc client.Client) bool { +func IsACEManaged(kc client.Reader) bool { var list unstructured.UnstructuredList list.SetAPIVersion("apps/v1") list.SetKind("Deployment") diff --git a/vendor/kmodules.xyz/client-go/cluster/lib.go b/vendor/kmodules.xyz/client-go/cluster/lib.go index 80db44a13..94d4695a8 100644 --- a/vendor/kmodules.xyz/client-go/cluster/lib.go +++ b/vendor/kmodules.xyz/client-go/cluster/lib.go @@ -157,7 +157,7 @@ func UpsertClusterMetadata(kc client.Client, md *kmapi.ClusterMetadata) error { return err } -func DetectCAPICluster(kc client.Client) (*kmapi.CAPIClusterInfo, error) { +func DetectCAPICluster(kc client.Reader) (*kmapi.CAPIClusterInfo, error) { var list unstructured.UnstructuredList list.SetGroupVersionKind(schema.GroupVersionKind{ Group: "cluster.x-k8s.io", @@ -237,7 +237,7 @@ func DetectClusterManager(kc client.Client, mappers ...meta.RESTMapper) kmapi.Cl if IsOpenClusterHub(mapper) { result |= kmapi.ClusterManagerOCMHub } - if IsOpenClusterSpoke(mapper) { + if IsOpenClusterSpoke(kc) { result |= kmapi.ClusterManagerOCMSpoke } if IsOpenClusterMulticlusterControlplane(mapper) { diff --git a/vendor/kmodules.xyz/client-go/cluster/ocm.go b/vendor/kmodules.xyz/client-go/cluster/ocm.go index 0c138ff94..808eaabe7 100644 --- a/vendor/kmodules.xyz/client-go/cluster/ocm.go +++ b/vendor/kmodules.xyz/client-go/cluster/ocm.go @@ -17,8 +17,12 @@ limitations under the License. package cluster import ( + "context" + "k8s.io/apimachinery/pkg/api/meta" + "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/runtime/schema" + "sigs.k8s.io/controller-runtime/pkg/client" ) func IsOpenClusterHub(mapper meta.RESTMapper) bool { @@ -31,14 +35,12 @@ func IsOpenClusterHub(mapper meta.RESTMapper) bool { return false } -func IsOpenClusterSpoke(mapper meta.RESTMapper) bool { - if _, err := mapper.RESTMappings(schema.GroupKind{ - Group: "operator.open-cluster-management.io", - Kind: "Klusterlet", - }); err == nil { - return true - } - return false +func IsOpenClusterSpoke(kc client.Reader) bool { + var list unstructured.UnstructuredList + list.SetAPIVersion("operator.open-cluster-management.io/v1") + list.SetKind("Klusterlet") + err := kc.List(context.TODO(), &list) + return err == nil && len(list.Items) > 0 } func IsOpenClusterMulticlusterControlplane(mapper meta.RESTMapper) bool { diff --git a/vendor/kmodules.xyz/client-go/cluster/rancher.go b/vendor/kmodules.xyz/client-go/cluster/rancher.go index 40a135556..bea95e1fa 100644 --- a/vendor/kmodules.xyz/client-go/cluster/rancher.go +++ b/vendor/kmodules.xyz/client-go/cluster/rancher.go @@ -129,15 +129,15 @@ func isInProject(kc client.Client, nsName, seedNS string) (bool, error) { return projectId == seedProjectId, nil } -func GetDefaultProjectId(kc client.Client) (string, bool, error) { +func GetDefaultProjectId(kc client.Reader) (string, bool, error) { return GetProjectId(kc, metav1.NamespaceDefault) } -func GetSystemProjectId(kc client.Client) (string, bool, error) { +func GetSystemProjectId(kc client.Reader) (string, bool, error) { return GetProjectId(kc, metav1.NamespaceSystem) } -func GetProjectId(kc client.Client, nsName string) (string, bool, error) { +func GetProjectId(kc client.Reader, nsName string) (string, bool, error) { var ns core.Namespace err := kc.Get(context.TODO(), client.ObjectKey{Name: nsName}, &ns) if err != nil { diff --git a/vendor/kmodules.xyz/client-go/cluster/vcluster.go b/vendor/kmodules.xyz/client-go/cluster/vcluster.go index 0e1324032..1348eff3b 100644 --- a/vendor/kmodules.xyz/client-go/cluster/vcluster.go +++ b/vendor/kmodules.xyz/client-go/cluster/vcluster.go @@ -24,7 +24,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client" ) -func IsVirtualCluster(kc client.Client) (bool, error) { +func IsVirtualCluster(kc client.Reader) (bool, error) { var list core.NodeList err := kc.List(context.TODO(), &list) if err != nil { @@ -44,7 +44,7 @@ func IsVirtualCluster(kc client.Client) (bool, error) { return false, nil } -func MustIsVirtualCluster(kc client.Client) bool { +func MustIsVirtualCluster(kc client.Reader) bool { ok, _ := IsVirtualCluster(kc) return ok } diff --git a/vendor/kmodules.xyz/client-go/meta/hash.go b/vendor/kmodules.xyz/client-go/meta/hash.go index 6fc87ae33..0e7778f4f 100644 --- a/vendor/kmodules.xyz/client-go/meta/hash.go +++ b/vendor/kmodules.xyz/client-go/meta/hash.go @@ -33,7 +33,11 @@ func ResourceHash(obj metav1.Object) string { h := xxh3.New() _, _ = h.WriteString(string(obj.GetUID())) _, _ = h.WriteString(",") - _, _ = h.WriteString(strconv.FormatInt(obj.GetGeneration(), 10)) + if obj.GetGeneration() > 0 { + _, _ = h.WriteString(strconv.FormatInt(obj.GetGeneration(), 10)) + } else { + _, _ = h.WriteString(ObjectHash(obj)) + } return strconv.FormatUint(h.Sum64(), 10) } @@ -57,11 +61,20 @@ func ObjectHash(in metav1.Object) string { obj["annotations"] = data } - st := structs.New(in) - for _, field := range st.Fields() { - fieldName := field.Name() - if fieldName != "ObjectMeta" && fieldName != "TypeMeta" && fieldName != "Status" { - obj[fieldName] = field.Value() + u, isUnstructured := in.(*unstructured.Unstructured) + if isUnstructured { + for fieldName, v := range u.UnstructuredContent() { + if fieldName != "metadata" && fieldName != "apiVersion" && fieldName != "kind" && fieldName != "status" { + obj[fieldName] = v + } + } + } else { + st := structs.New(in) + for _, field := range st.Fields() { + fieldName := field.Name() + if fieldName != "ObjectMeta" && fieldName != "TypeMeta" && fieldName != "Status" { + obj[fieldName] = field.Value() + } } } diff --git a/vendor/modules.txt b/vendor/modules.txt index ca3042e29..c3dc6be01 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -742,7 +742,7 @@ k8s.io/utils/trace # kmodules.xyz/apiversion v0.2.0 ## explicit; go 1.14 kmodules.xyz/apiversion -# kmodules.xyz/client-go v0.30.22-0.20241009094042-175fd7e41d7e +# kmodules.xyz/client-go v0.30.27 ## explicit; go 1.22.0 kmodules.xyz/client-go kmodules.xyz/client-go/api/v1