pkg/options/patchtmpl/scheme.go (54 lines of code) (raw):
// Copyright 2018 Google LLC
//
// 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
//
// https://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 patchtmpl
import (
bundle "github.com/GoogleCloudPlatform/k8s-cluster-bundle/pkg/apis/bundle/v1alpha1"
webhookv1 "k8s.io/api/admissionregistration/v1"
webhookv1beta1 "k8s.io/api/admissionregistration/v1beta1"
appsv1 "k8s.io/api/apps/v1"
appsv1beta1 "k8s.io/api/apps/v1beta1"
appsv1beta2 "k8s.io/api/apps/v1beta2"
corev1 "k8s.io/api/core/v1"
extv1beta1 "k8s.io/api/extensions/v1beta1"
policyv1beta1 "k8s.io/api/policy/v1beta1"
rbacv1 "k8s.io/api/rbac/v1"
storagev1 "k8s.io/api/storage/v1"
storagev1beta1 "k8s.io/api/storage/v1beta1"
crdextv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
crdextv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/serializer"
)
func init() {
s := runtime.NewScheme()
k := &PatcherScheme{
KubeScheme: s,
Codecs: serializer.NewCodecFactory(s),
}
must := func(err error) {
if err != nil {
panic(err)
}
}
must(appsv1.AddToScheme(k.KubeScheme))
must(appsv1beta1.AddToScheme(k.KubeScheme))
must(appsv1beta2.AddToScheme(k.KubeScheme))
must(corev1.AddToScheme(k.KubeScheme))
must(crdextv1.AddToScheme(k.KubeScheme))
must(crdextv1beta1.AddToScheme(k.KubeScheme))
must(extv1beta1.AddToScheme(k.KubeScheme))
must(policyv1beta1.AddToScheme(k.KubeScheme))
must(rbacv1.AddToScheme(k.KubeScheme))
must(storagev1.AddToScheme(k.KubeScheme))
must(storagev1beta1.AddToScheme(k.KubeScheme))
must(webhookv1.AddToScheme(k.KubeScheme))
must(webhookv1beta1.AddToScheme(k.KubeScheme))
must(bundle.AddToScheme(k.KubeScheme))
defaultPatcherScheme = k
}
// PatcherScheme wraps Kubernetes schema constructs.
type PatcherScheme struct {
KubeScheme *runtime.Scheme
Codecs serializer.CodecFactory
}
var defaultPatcherScheme *PatcherScheme
// DefaultPatcherScheme returns a default scheme with several types built-in.
func DefaultPatcherScheme() *PatcherScheme {
return defaultPatcherScheme
}