github.com/1aal/kubeblocks@v0.0.0-20231107070852-e1c03e598921/pkg/cli/cmd/infrastructure/tasks/addon.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 tasks 21 22 import ( 23 "github.com/kubesphere/kubekey/v3/cmd/kk/pkg/common" 24 "github.com/kubesphere/kubekey/v3/cmd/kk/pkg/core/connector" 25 "github.com/kubesphere/kubekey/v3/cmd/kk/pkg/core/task" 26 27 "github.com/1aal/kubeblocks/pkg/cli/cmd/infrastructure/types" 28 "github.com/1aal/kubeblocks/pkg/cli/cmd/infrastructure/utils" 29 cfgcore "github.com/1aal/kubeblocks/pkg/configuration/core" 30 ) 31 32 type AddonsInstaller struct { 33 common.KubeModule 34 35 Addons []types.PluginMeta 36 Kubeconfig string 37 } 38 39 type KBAddonsInstall struct { 40 common.KubeAction 41 42 Addons []types.PluginMeta 43 Kubeconfig string 44 } 45 46 func (a *AddonsInstaller) Init() { 47 a.Name = "AddonsInstaller" 48 a.Desc = "Install helm addons" 49 a.Tasks = []task.Interface{ 50 &task.LocalTask{ 51 Name: "AddonsInstaller", 52 Desc: "Install helm addons", 53 Action: &KBAddonsInstall{Addons: a.Addons, Kubeconfig: a.Kubeconfig}, 54 }} 55 } 56 57 func (i *KBAddonsInstall) Execute(runtime connector.Runtime) error { 58 var installer utils.Installer 59 for _, addon := range i.Addons { 60 switch { 61 case addon.Sources.Chart != nil: 62 installer = utils.NewHelmInstaller(*addon.Sources.Chart, i.Kubeconfig) 63 case addon.Sources.Yaml != nil: 64 installer = utils.NewYamlInstaller(*addon.Sources.Yaml, i.Kubeconfig) 65 default: 66 return cfgcore.MakeError("addon source not supported: addon: %v", addon) 67 } 68 if err := installer.Install(addon.Name, addon.Namespace); err != nil { 69 return err 70 } 71 } 72 return nil 73 }