github.com/1aal/kubeblocks@v0.0.0-20231107070852-e1c03e598921/pkg/controller/builder/builder_pod.go (about) 1 /* 2 Copyright (C) 2022-2023 ApeCloud Co., Ltd 3 4 This file is part of KubeBlocks project 5 6 This program is free software: you can redistribute it and/or modify 7 it under the terms of the GNU Affero General Public License as published by 8 the Free Software Foundation, either version 3 of the License, or 9 (at your option) any later version. 10 11 This program is distributed in the hope that it will be useful 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 GNU Affero General Public License for more details. 15 16 You should have received a copy of the GNU Affero General Public License 17 along with this program. If not, see <http://www.gnu.org/licenses/>. 18 */ 19 20 package builder 21 22 import corev1 "k8s.io/api/core/v1" 23 24 type PodBuilder struct { 25 BaseBuilder[corev1.Pod, *corev1.Pod, PodBuilder] 26 } 27 28 func NewPodBuilder(namespace, name string) *PodBuilder { 29 builder := &PodBuilder{} 30 builder.init(namespace, name, &corev1.Pod{}, builder) 31 return builder 32 } 33 34 func (builder *PodBuilder) SetContainers(containers []corev1.Container) *PodBuilder { 35 builder.get().Spec.Containers = containers 36 return builder 37 } 38 39 func (builder *PodBuilder) AddContainer(container corev1.Container) *PodBuilder { 40 containers := builder.get().Spec.Containers 41 containers = append(containers, container) 42 builder.get().Spec.Containers = containers 43 return builder 44 } 45 46 func (builder *PodBuilder) AddVolumes(volumes ...corev1.Volume) *PodBuilder { 47 builder.get().Spec.Volumes = append(builder.get().Spec.Volumes, volumes...) 48 return builder 49 } 50 51 func (builder *PodBuilder) SetRestartPolicy(policy corev1.RestartPolicy) *PodBuilder { 52 builder.get().Spec.RestartPolicy = policy 53 return builder 54 } 55 56 func (builder *PodBuilder) SetSecurityContext(ctx corev1.PodSecurityContext) *PodBuilder { 57 builder.get().Spec.SecurityContext = &ctx 58 return builder 59 } 60 61 func (builder *PodBuilder) AddTolerations(tolerations ...corev1.Toleration) *PodBuilder { 62 builder.get().Spec.Tolerations = append(builder.get().Spec.Tolerations, tolerations...) 63 return builder 64 }