blob: 5dcd3a84e8a1fcdc7f44a3012e9eec33fe0a0602 [file] [log] [blame]
// Copyright Istio Authors
//
// 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 pilot/pkg/config/kube/crdclient/gen/types.go.tmpl DO NOT EDIT!
package crdclient
// This file contains Go definitions for Custom Resource Definition kinds
// to adhere to the idiomatic use of k8s API machinery.
// These definitions are synthesized from Istio configuration type descriptors
// as declared in the Istio config model.
import (
"context"
"fmt"
metav1alpha1 "istio.io/api/meta/v1alpha1"
versionedclient "istio.io/client-go/pkg/clientset/versioned"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/types"
gatewayapiclient "sigs.k8s.io/gateway-api/pkg/client/clientset/versioned"
"github.com/apache/dubbo-go-pixiu/pkg/config"
"github.com/apache/dubbo-go-pixiu/pkg/config/schema/collections"
extensionsv1alpha1 "istio.io/api/extensions/v1alpha1"
networkingv1alpha3 "istio.io/api/networking/v1alpha3"
networkingv1beta1 "istio.io/api/networking/v1beta1"
securityv1beta1 "istio.io/api/security/v1beta1"
telemetryv1alpha1 "istio.io/api/telemetry/v1alpha1"
clientextensionsv1alpha1 "istio.io/client-go/pkg/apis/extensions/v1alpha1"
clientnetworkingv1alpha3 "istio.io/client-go/pkg/apis/networking/v1alpha3"
clientnetworkingv1beta1 "istio.io/client-go/pkg/apis/networking/v1beta1"
clientsecurityv1beta1 "istio.io/client-go/pkg/apis/security/v1beta1"
clienttelemetryv1alpha1 "istio.io/client-go/pkg/apis/telemetry/v1alpha1"
extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
corev1 "k8s.io/api/core/v1"
appsv1 "k8s.io/api/apps/v1"
admissionregistrationv1 "k8s.io/api/admissionregistration/v1"
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
gatewayv1alpha2 "sigs.k8s.io/gateway-api/apis/v1alpha2"
)
func create(ic versionedclient.Interface, sc gatewayapiclient.Interface, cfg config.Config, objMeta metav1.ObjectMeta) (metav1.Object, error) {
switch cfg.GroupVersionKind {
{{- range . }}
{{- if not .Readonly }}
case collections.{{ .VariableName }}.Resource().GroupVersionKind():
return {{.Client}}.{{ .ClientGroupPath }}().{{ .ClientTypePath }}({{if .Namespaced}}cfg.Namespace{{end}}).Create(context.TODO(), &{{ .ClientImport }}.{{ .Kind }}{
ObjectMeta: objMeta,
Spec: *(cfg.Spec.(*{{ .APIImport }}.{{ .Kind }}{{ .TypeSuffix }})),
}, metav1.CreateOptions{})
{{- end }}
{{- end }}
default:
return nil, fmt.Errorf("unsupported type: %v", cfg.GroupVersionKind)
}
}
func update(ic versionedclient.Interface, sc gatewayapiclient.Interface, cfg config.Config, objMeta metav1.ObjectMeta) (metav1.Object, error) {
switch cfg.GroupVersionKind {
{{- range . }}
{{- if not .Readonly }}
case collections.{{ .VariableName }}.Resource().GroupVersionKind():
return {{.Client}}.{{ .ClientGroupPath }}().{{ .ClientTypePath }}({{if .Namespaced}}cfg.Namespace{{end}}).Update(context.TODO(), &{{ .ClientImport }}.{{ .Kind }}{
ObjectMeta: objMeta,
Spec: *(cfg.Spec.(*{{ .APIImport }}.{{ .Kind }}{{ .TypeSuffix }})),
}, metav1.UpdateOptions{})
{{- end }}
{{- end }}
default:
return nil, fmt.Errorf("unsupported type: %v", cfg.GroupVersionKind)
}
}
func updateStatus(ic versionedclient.Interface, sc gatewayapiclient.Interface, cfg config.Config, objMeta metav1.ObjectMeta) (metav1.Object, error) {
switch cfg.GroupVersionKind {
{{- range . }}
{{- if not .Readonly }}
{{ if .StatusKind }}
case collections.{{ .VariableName }}.Resource().GroupVersionKind():
return {{.Client}}.{{ .ClientGroupPath }}().{{ .ClientTypePath }}({{if .Namespaced}}cfg.Namespace{{end}}).UpdateStatus(context.TODO(), &{{ .ClientImport }}.{{ .Kind }}{
ObjectMeta: objMeta,
Status: *(cfg.Status.(*{{ .StatusAPIImport }}.{{ .StatusKind }})),
}, metav1.UpdateOptions{})
{{- end }}
{{- end }}
{{- end }}
default:
return nil, fmt.Errorf("unsupported type: %v", cfg.GroupVersionKind)
}
}
func patch(ic versionedclient.Interface, sc gatewayapiclient.Interface, orig config.Config, origMeta metav1.ObjectMeta, mod config.Config, modMeta metav1.ObjectMeta, typ types.PatchType) (metav1.Object, error) {
if orig.GroupVersionKind != mod.GroupVersionKind {
return nil, fmt.Errorf("gvk mismatch: %v, modified: %v", orig.GroupVersionKind, mod.GroupVersionKind)
}
// TODO support setting field manager
switch orig.GroupVersionKind {
{{- range . }}
{{- if not .Readonly }}
case collections.{{ .VariableName }}.Resource().GroupVersionKind():
oldRes := &{{ .ClientImport }}.{{ .Kind }}{
ObjectMeta: origMeta,
Spec: *(orig.Spec.(*{{ .APIImport }}.{{ .Kind }}{{ .TypeSuffix }})),
}
modRes := &{{ .ClientImport }}.{{ .Kind }}{
ObjectMeta: modMeta,
Spec: *(mod.Spec.(*{{ .APIImport }}.{{ .Kind }}{{ .TypeSuffix }})),
}
patchBytes, err := genPatchBytes(oldRes, modRes, typ)
if err != nil {
return nil, err
}
return {{.Client}}.{{ .ClientGroupPath }}().{{ .ClientTypePath }}({{if .Namespaced}}orig.Namespace{{end}}).
Patch(context.TODO(), orig.Name, typ, patchBytes, metav1.PatchOptions{FieldManager: "pilot-discovery"})
{{- end }}
{{- end }}
default:
return nil, fmt.Errorf("unsupported type: %v", orig.GroupVersionKind)
}
}
func delete(ic versionedclient.Interface, sc gatewayapiclient.Interface, typ config.GroupVersionKind, name, namespace string, resourceVersion *string) error {
var deleteOptions metav1.DeleteOptions
if resourceVersion != nil {
deleteOptions.Preconditions = &metav1.Preconditions{ResourceVersion: resourceVersion}
}
switch typ {
{{- range . }}
{{- if not .Readonly }}
case collections.{{ .VariableName }}.Resource().GroupVersionKind():
return {{.Client}}.{{ .ClientGroupPath }}().{{ .ClientTypePath }}({{if .Namespaced}}namespace{{end}}).Delete(context.TODO(), name, deleteOptions)
{{- end }}
{{- end }}
default:
return fmt.Errorf("unsupported type: %v", typ)
}
}
var translationMap = map[config.GroupVersionKind]func(r runtime.Object) config.Config{
{{- range . }}
collections.{{ .VariableName }}.Resource().GroupVersionKind(): func(r runtime.Object) config.Config {
obj := r.(*{{ .ClientImport }}.{{ .Kind }})
return config.Config{
Meta: config.Meta{
GroupVersionKind: collections.{{ .VariableName }}.Resource().GroupVersionKind(),
Name: obj.Name,
Namespace: obj.Namespace,
Labels: obj.Labels,
Annotations: obj.Annotations,
ResourceVersion: obj.ResourceVersion,
CreationTimestamp: obj.CreationTimestamp.Time,
OwnerReferences: obj.OwnerReferences,
UID: string(obj.UID),
Generation: obj.Generation,
},
Spec: {{ if not .NoSpec }}&obj.Spec{{ else }}obj{{ end }},
{{- if .StatusKind }}
Status: &obj.Status,
{{- end }}
}
},
{{- end }}
}