shardingsphere-operator/pkg/kubernetes/resources.go (79 lines of code) (raw):

/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You 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 kubernetes import ( "github.com/apache/shardingsphere-on-cloud/shardingsphere-operator/pkg/kubernetes/chaosmesh" cloudnativepg "github.com/apache/shardingsphere-on-cloud/shardingsphere-operator/pkg/kubernetes/cloudnative-pg" "github.com/apache/shardingsphere-on-cloud/shardingsphere-operator/pkg/kubernetes/configmap" "github.com/apache/shardingsphere-on-cloud/shardingsphere-operator/pkg/kubernetes/deployment" "github.com/apache/shardingsphere-on-cloud/shardingsphere-operator/pkg/kubernetes/hpa" "github.com/apache/shardingsphere-on-cloud/shardingsphere-operator/pkg/kubernetes/service" "github.com/apache/shardingsphere-on-cloud/shardingsphere-operator/pkg/kubernetes/vpa" "sigs.k8s.io/controller-runtime/pkg/client" ) // Resources respresents the resources type Resources interface { KubernetesResources ExtendedResources } // KubernetesResource represents a Kubernetes resource type KubernetesResources interface { Deployment() deployment.Deployment Service() service.Service ConfigMap() configmap.ConfigMap HPA() hpa.HorizontalPodAutoscaler VPA() vpa.VerticalPodAutoscaler // Job() } // ExtendedResources represents a extended resource type ExtendedResources interface { ChaosMesh() chaosmesh.Chaos CloudNativePG() cloudnativepg.CloudNativePG } // NewResources return a instance of Resources func NewResources(c client.Client) Resources { return &resources{ KubernetesResources: &kubernetes{ deployment: deployment.NewDeploymentClient(c), service: service.NewServiceClient(c), configmap: configmap.NewConfigMapClient(c), hpa: hpa.NewHorizontalPodAutoscalerClient(c), vpa: vpa.NewVerticalPodAutoscalerClient(c), }, ExtendedResources: &extended{ chaosmesh: chaosmesh.NewChaos(c), cloudnativepg: cloudnativepg.NewCloudNativePGClient(c), }, } } type resources struct { KubernetesResources ExtendedResources } var _ KubernetesResources = &kubernetes{} type kubernetes struct { deployment deployment.Deployment service service.Service configmap configmap.ConfigMap hpa hpa.HorizontalPodAutoscaler vpa vpa.VerticalPodAutoscaler } // Deployment returns a Kubernetes deployment func (r *kubernetes) Deployment() deployment.Deployment { return r.deployment } // Service returns a Kubernetes service func (r *kubernetes) Service() service.Service { return r.service } // ConfigMap returns a Kubernetes configmap func (r *kubernetes) ConfigMap() configmap.ConfigMap { return r.configmap } // HPA returns a Kubernetes HPA func (r *kubernetes) HPA() hpa.HorizontalPodAutoscaler { return r.hpa } // VPA returns a Kubernetes VPA func (r *kubernetes) VPA() vpa.VerticalPodAutoscaler { return r.vpa } var _ ExtendedResources = &extended{} type extended struct { chaosmesh chaosmesh.Chaos cloudnativepg cloudnativepg.CloudNativePG } // ChaosMesh returns a extended chaosmesh func (r *extended) ChaosMesh() chaosmesh.Chaos { return r.chaosmesh } // CloudNativePG returns a extended cloudnativepg func (r *extended) CloudNativePG() cloudnativepg.CloudNativePG { return r.cloudnativepg }