2021-07-13 13:03:25 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								/ * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								Copyright  2021  The  KubeVela  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 . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								* / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								package  cli 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								import  ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									"context" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									"fmt" 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-07 15:49:27 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									"os" 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-11 11:29:10 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									"path/filepath" 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-11 11:49:44 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									"strings" 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-13 13:03:25 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									"time" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-02-23 12:17:31 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									"k8s.io/client-go/discovery" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-02-14 14:02:16 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									"helm.sh/helm/v3/pkg/strvals" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-01-11 11:29:10 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									"github.com/oam-dev/kubevela/apis/core.oam.dev/v1alpha2" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									"github.com/oam-dev/kubevela/pkg/oam" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-12-09 20:31:19 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									"k8s.io/client-go/rest" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-07-13 13:03:25 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									"github.com/gosuri/uitable" 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-07 15:49:27 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									"github.com/olekukonko/tablewriter" 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-07 15:11:52 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-07-13 13:03:25 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									"github.com/pkg/errors" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									"github.com/spf13/cobra" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									types2  "k8s.io/apimachinery/pkg/types" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									"sigs.k8s.io/controller-runtime/pkg/client" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-11-25 14:08:20 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									common2  "github.com/oam-dev/kubevela/apis/core.oam.dev/common" 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-13 13:03:25 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									"github.com/oam-dev/kubevela/apis/core.oam.dev/v1beta1" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									"github.com/oam-dev/kubevela/apis/types" 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-07 15:11:52 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									pkgaddon  "github.com/oam-dev/kubevela/pkg/addon" 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-13 13:03:25 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									"github.com/oam-dev/kubevela/pkg/utils/apply" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									"github.com/oam-dev/kubevela/pkg/utils/common" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									cmdutil  "github.com/oam-dev/kubevela/pkg/utils/util" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								const  ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									// DescAnnotation records the description of addon
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									DescAnnotation  =  "addons.oam.dev/description" 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-16 13:56:39 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									// DependsOnWorkFlowStepName is workflow step name which is used to check dependsOn app
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									DependsOnWorkFlowStepName  =  "depends-on-app" 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-25 10:32:30 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									// AddonTerraformProviderNamespace is the namespace of addon terraform provider
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									AddonTerraformProviderNamespace  =  "default" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									// AddonTerraformProviderNameArgument is the argument name of addon terraform provider
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									AddonTerraformProviderNameArgument  =  "providerName" 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-13 13:03:25 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-12-16 11:12:06 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								const  ( 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-25 11:01:59 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									statusEnabled   =  "enabled" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									statusDisabled  =  "disabled" 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-16 11:12:06 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-07-13 13:03:25 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								// NewAddonCommand create `addon` command
 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-06 13:29:02 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								func  NewAddonCommand ( c  common . Args ,  order  string ,  ioStreams  cmdutil . IOStreams )  * cobra . Command  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-13 13:03:25 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									cmd  :=  & cobra . Command { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Use :    "addon" , 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-10 17:45:20 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										Short :  "Manage addons for extension." , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Long :   "Manage addons for extension." , 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-13 13:03:25 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
										Annotations :  map [ string ] string { 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-06 13:29:02 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											types . TagCommandOrder :  order , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											types . TagCommandType :   types . TypeExtension , 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-13 13:03:25 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
										} , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									cmd . AddCommand ( 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-07 15:49:27 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										NewAddonListCommand ( c ) , 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-25 10:32:30 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										NewAddonEnableCommand ( c ,  ioStreams ) , 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-07 15:49:27 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										NewAddonDisableCommand ( c ,  ioStreams ) , 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-25 11:01:59 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										NewAddonStatusCommand ( c ,  ioStreams ) , 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-13 19:47:32 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										NewAddonRegistryCommand ( c ,  ioStreams ) , 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-22 19:31:20 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										NewAddonUpgradeCommand ( c ,  ioStreams ) , 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-13 13:03:25 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									return  cmd 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// NewAddonListCommand create addon list command
 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-07 15:49:27 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								func  NewAddonListCommand ( c  common . Args )  * cobra . Command  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-13 13:03:25 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									return  & cobra . Command { 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-14 18:21:49 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										Use :      "list" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Aliases :  [ ] string { "ls" } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Short :    "List addons" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Long :     "List addons in KubeVela" , 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-13 13:03:25 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
										RunE :  func ( cmd  * cobra . Command ,  args  [ ] string )  error  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-11 11:29:10 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											k8sClient ,  err  :=  c . GetClient ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-07 15:49:27 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											if  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												return  err 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-11 11:29:10 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											err  =  listAddons ( context . Background ( ) ,  k8sClient ,  "" ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-13 13:03:25 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
											if  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												return  err 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											return  nil 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										} , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// NewAddonEnableCommand create addon enable command
 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-25 10:32:30 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								func  NewAddonEnableCommand ( c  common . Args ,  ioStream  cmdutil . IOStreams )  * cobra . Command  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									ctx  :=  context . Background ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-11 11:29:10 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									cmd  :=  & cobra . Command { 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-13 13:03:25 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
										Use :      "enable" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Short :    "enable an addon" , 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-12 17:43:08 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										Long :     "enable an addon in cluster." , 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-13 13:03:25 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
										Example :  "vela addon enable <addon-name>" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										RunE :  func ( cmd  * cobra . Command ,  args  [ ] string )  error  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-25 10:32:30 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-07-13 13:03:25 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
											if  len ( args )  <  1  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-18 11:37:46 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
												return  fmt . Errorf ( "must specify addon name" ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-13 13:03:25 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-11 11:49:44 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											addonArgs ,  err  :=  parseToMap ( args [ 1 : ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											if  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												return  err 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-07 15:49:27 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											config ,  err  :=  c . GetConfig ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											if  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												return  err 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											k8sClient ,  err  :=  c . GetClient ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											if  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												return  err 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-23 12:17:31 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											dc ,  err  :=  c . GetDiscoveryClient ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											if  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												return  err 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-11 11:29:10 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											addonOrDir  :=  args [ 0 ] 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-12 17:43:08 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											var  name  =  addonOrDir 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-11 19:56:29 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											if  file ,  err  :=  os . Stat ( addonOrDir ) ;  err  ==  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												if  ! file . IsDir ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
													return  fmt . Errorf ( "%s is not addon dir" ,  addonOrDir ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												} 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-14 18:04:34 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
												ioStream . Infof ( "enable addon by local dir: %s \n" ,  addonOrDir ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-11 11:29:10 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
												// args[0] is a local path install with local dir, use base dir name as addonName
 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-12 17:43:08 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
												name  =  filepath . Base ( addonOrDir ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-23 12:17:31 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
												err  =  enableAddonByLocal ( ctx ,  name ,  addonOrDir ,  k8sClient ,  dc ,  config ,  addonArgs ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-11 11:29:10 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
												if  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
													return  err 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											}  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-16 14:20:37 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
												if  filepath . IsAbs ( addonOrDir )  ||  strings . HasPrefix ( addonOrDir ,  "." )  ||  strings . HasSuffix ( addonOrDir ,  "/" )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
													return  fmt . Errorf ( "addon directory %s not found in local" ,  addonOrDir ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-02-23 12:17:31 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
												err  =  enableAddon ( ctx ,  k8sClient ,  dc ,  config ,  name ,  addonArgs ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-11 11:29:10 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
												if  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
													return  err 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												} 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-13 13:03:25 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-12 17:43:08 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											fmt . Printf ( "Addon: %s enabled Successfully.\n" ,  name ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											AdditionalEndpointPrinter ( ctx ,  c ,  k8sClient ,  name ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-22 19:31:20 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											return  nil 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										} , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-11 11:29:10 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									return  cmd 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-22 19:31:20 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-01-12 17:43:08 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								// AdditionalEndpointPrinter will print endpoints
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								func  AdditionalEndpointPrinter ( ctx  context . Context ,  c  common . Args ,  k8sClient  client . Client ,  name  string )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									endpoints ,  _  :=  GetServiceEndpoints ( ctx ,  k8sClient ,  pkgaddon . Convert2AppName ( name ) ,  types . DefaultKubeVelaNS ,  c ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									if  len ( endpoints )  >  0  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										table  :=  tablewriter . NewWriter ( os . Stdout ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										table . SetColWidth ( 100 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										table . SetHeader ( [ ] string { "Cluster" ,  "Ref(Kind/Namespace/Name)" ,  "Endpoint" } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										for  _ ,  endpoint  :=  range  endpoints  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											table . Append ( [ ] string { endpoint . Cluster ,  fmt . Sprintf ( "%s/%s/%s" ,  endpoint . Ref . Kind ,  endpoint . Ref . Namespace ,  endpoint . Ref . Name ) ,  endpoint . String ( ) } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										fmt . Printf ( "Please access the %s from the following endpoints:\n" ,  name ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										table . Render ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									if  name  ==  "velaux"  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										fmt . Println ( ` Please use command: "vela port-forward -n vela-system addon-velaux 9082:80" and Select "Cluster: local | Namespace: vela-system | Component: velaux | Kind: Service" to check the dashboard. ` ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-12-22 19:31:20 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								// NewAddonUpgradeCommand create addon upgrade command
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								func  NewAddonUpgradeCommand ( c  common . Args ,  ioStream  cmdutil . IOStreams )  * cobra . Command  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									ctx  :=  context . Background ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-11 11:29:10 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									cmd  :=  & cobra . Command { 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-22 19:31:20 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										Use :      "upgrade" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Short :    "upgrade an addon" , 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-12 17:43:08 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										Long :     "upgrade an addon in cluster." , 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-22 19:31:20 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										Example :  "vela addon upgrade <addon-name>" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										RunE :  func ( cmd  * cobra . Command ,  args  [ ] string )  error  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											if  len ( args )  <  1  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												return  fmt . Errorf ( "must specify addon name" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-07 15:49:27 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											config ,  err  :=  c . GetConfig ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											if  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												return  err 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											k8sClient ,  err  :=  c . GetClient ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											if  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												return  err 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-23 12:17:31 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											dc ,  err  :=  c . GetDiscoveryClient ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											if  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												return  err 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-22 19:31:20 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											addonArgs ,  err  :=  parseToMap ( args [ 1 : ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											if  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												return  err 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-11 11:29:10 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											addonOrDir  :=  args [ 0 ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											var  name  string 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-11 19:56:29 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											if  file ,  err  :=  os . Stat ( addonOrDir ) ;  err  ==  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												if  ! file . IsDir ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
													return  fmt . Errorf ( "%s is not addon dir" ,  addonOrDir ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												} 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-14 18:04:34 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
												ioStream . Infof ( "enable addon by local dir: %s \n" ,  addonOrDir ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-11 11:29:10 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
												// args[0] is a local path install with local dir
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												name  :=  filepath . Base ( addonOrDir ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												_ ,  err  =  pkgaddon . FetchAddonRelatedApp ( context . Background ( ) ,  k8sClient ,  name ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												if  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
													return  errors . Wrapf ( err ,  "cannot fetch addon related addon %s" ,  name ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												} 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-23 12:17:31 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
												err  =  enableAddonByLocal ( ctx ,  name ,  addonOrDir ,  k8sClient ,  dc ,  config ,  addonArgs ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-11 11:29:10 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
												if  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
													return  err 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											}  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-16 14:20:37 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
												if  filepath . IsAbs ( addonOrDir )  ||  strings . HasPrefix ( addonOrDir ,  "." )  ||  strings . HasSuffix ( addonOrDir ,  "/" )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
													return  fmt . Errorf ( "addon directory %s not found in local" ,  addonOrDir ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-01-11 11:29:10 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
												_ ,  err  =  pkgaddon . FetchAddonRelatedApp ( context . Background ( ) ,  k8sClient ,  addonOrDir ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												if  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
													return  errors . Wrapf ( err ,  "cannot fetch addon related addon %s" ,  addonOrDir ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												} 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-23 12:17:31 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
												err  =  enableAddon ( ctx ,  k8sClient ,  dc ,  config ,  addonOrDir ,  addonArgs ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-11 11:29:10 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
												if  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
													return  err 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												} 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-22 19:31:20 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-11 11:29:10 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-01-12 17:43:08 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											fmt . Printf ( "Addon: %s\n enabled Successfully." ,  name ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											AdditionalEndpointPrinter ( ctx ,  c ,  k8sClient ,  name ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-13 13:03:25 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
											return  nil 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										} , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-11 11:29:10 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									return  cmd 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-13 13:03:25 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-12-07 15:11:52 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								func  parseToMap ( args  [ ] string )  ( map [ string ] interface { } ,  error )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									res  :=  map [ string ] interface { } { } 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-14 14:02:16 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									for  _ ,  arg  :=  range  args  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										if  err  :=  strvals . ParseIntoString ( arg ,  res ) ;  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											return  nil ,  err 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-11 11:49:44 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									return  res ,  nil 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-07-13 13:03:25 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								// NewAddonDisableCommand create addon disable command
 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-07 15:49:27 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								func  NewAddonDisableCommand ( c  common . Args ,  ioStream  cmdutil . IOStreams )  * cobra . Command  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-13 13:03:25 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									return  & cobra . Command { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Use :      "disable" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Short :    "disable an addon" , 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-12 17:43:08 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										Long :     "disable an addon in cluster." , 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-13 13:03:25 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
										Example :  "vela addon disable <addon-name>" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										RunE :  func ( cmd  * cobra . Command ,  args  [ ] string )  error  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											if  len ( args )  <  1  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-18 11:37:46 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
												return  fmt . Errorf ( "must specify addon name" ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-13 13:03:25 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											name  :=  args [ 0 ] 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-07 15:49:27 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											k8sClient ,  err  :=  c . GetClient ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											if  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												return  err 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											err  =  disableAddon ( k8sClient ,  name ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-13 13:03:25 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
											if  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												return  err 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-14 18:21:49 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											fmt . Printf ( "Successfully disable addon:%s\n" ,  name ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-13 13:03:25 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
											return  nil 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										} , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-12-07 15:11:52 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								// NewAddonStatusCommand create addon status command
 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-25 11:01:59 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								func  NewAddonStatusCommand ( c  common . Args ,  ioStream  cmdutil . IOStreams )  * cobra . Command  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-07 15:11:52 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									return  & cobra . Command { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Use :      "status" , 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-12 17:43:08 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										Short :    "get an addon's status." , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Long :     "get an addon's status from cluster." , 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-07 15:11:52 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										Example :  "vela addon status <addon-name>" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										RunE :  func ( cmd  * cobra . Command ,  args  [ ] string )  error  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											if  len ( args )  <  1  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												return  fmt . Errorf ( "must specify addon name" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											name  :=  args [ 0 ] 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-25 11:01:59 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											err  :=  statusAddon ( name ,  ioStream ,  cmd ,  c ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-07 15:11:52 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											if  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												return  err 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											return  nil 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										} , 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-13 13:03:25 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-02-23 12:17:31 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								func  enableAddon ( ctx  context . Context ,  k8sClient  client . Client ,  dc  * discovery . DiscoveryClient ,  config  * rest . Config ,  name  string ,  args  map [ string ] interface { } )  error  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-07 15:11:52 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									var  err  error 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									registryDS  :=  pkgaddon . NewRegistryDataStore ( k8sClient ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									registries ,  err  :=  registryDS . ListRegistries ( ctx ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-13 13:03:25 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									if  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										return  err 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-25 10:32:30 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-12-07 15:11:52 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									for  _ ,  registry  :=  range  registries  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-23 12:17:31 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										err  =  pkgaddon . EnableAddon ( ctx ,  name ,  k8sClient ,  dc ,  apply . NewAPIApplicator ( k8sClient ) ,  config ,  registry ,  args ,  nil ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-21 09:31:37 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										if  errors . Is ( err ,  pkgaddon . ErrNotExist )  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-16 11:12:06 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											continue 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-07 15:11:52 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										if  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											return  err 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-07 15:49:27 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										if  err  =  waitApplicationRunning ( k8sClient ,  name ) ;  err  !=  nil  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-07 15:11:52 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											return  err 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										return  nil 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-25 10:32:30 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-12 17:43:08 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									return  fmt . Errorf ( "addon: %s not found in registries" ,  name ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-13 13:03:25 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-01-11 11:29:10 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								// enableAddonByLocal enable addon in local dir and return the addon name
 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-23 12:17:31 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								func  enableAddonByLocal ( ctx  context . Context ,  name  string ,  dir  string ,  k8sClient  client . Client ,  dc  * discovery . DiscoveryClient ,  config  * rest . Config ,  args  map [ string ] interface { } )  error  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									if  err  :=  pkgaddon . EnableAddonByLocalDir ( ctx ,  name ,  dir ,  k8sClient ,  dc ,  apply . NewAPIApplicator ( k8sClient ) ,  config ,  args ) ;  err  !=  nil  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-11 11:29:10 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										return  err 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									if  err  :=  waitApplicationRunning ( k8sClient ,  name ) ;  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										return  err 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									return  nil 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-01-07 15:49:27 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								func  disableAddon ( client  client . Client ,  name  string )  error  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									if  err  :=  pkgaddon . DisableAddon ( context . Background ( ) ,  client ,  name ) ;  err  !=  nil  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-13 13:03:25 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
										return  err 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-07 15:11:52 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									return  nil 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-14 18:21:49 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-12-25 11:01:59 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								func  statusAddon ( name  string ,  ioStreams  cmdutil . IOStreams ,  cmd  * cobra . Command ,  c  common . Args )  error  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-11 11:29:10 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									k8sClient ,  err  :=  c . GetClient ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-07 15:49:27 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									if  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										return  err 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-11 11:29:10 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									status ,  err  :=  pkgaddon . GetAddonStatus ( context . Background ( ) ,  k8sClient ,  name ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-07 15:11:52 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									if  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										return  err 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-13 13:03:25 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-20 14:34:45 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									fmt . Printf ( "addon %s status is %s \n" ,  name ,  status . AddonPhase ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-25 11:01:59 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									if  status . AddonPhase  !=  statusEnabled  &&  status . AddonPhase  !=  statusDisabled  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-25 12:37:23 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										fmt . Printf ( "diagnose addon info from application %s" ,  pkgaddon . Convert2AppName ( name ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-11 11:29:10 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										err  :=  printAppStatus ( context . Background ( ) ,  k8sClient ,  ioStreams ,  pkgaddon . Convert2AppName ( name ) ,  types . DefaultKubeVelaNS ,  cmd ,  c ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-25 11:01:59 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										if  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											return  err 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-14 18:21:49 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-07 15:11:52 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									return  nil 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-13 13:03:25 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-01-07 15:49:27 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								func  listAddons ( ctx  context . Context ,  clt  client . Client ,  registry  string )  error  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-21 09:31:37 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									var  addons  [ ] * pkgaddon . UIData 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-07 15:11:52 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									var  err  error 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									registryDS  :=  pkgaddon . NewRegistryDataStore ( clt ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									registries ,  err  :=  registryDS . ListRegistries ( ctx ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-13 13:03:25 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									if  err  !=  nil  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-07 15:11:52 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										return  err 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-13 13:03:25 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-11 11:29:10 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									onlineAddon  :=  map [ string ] bool { } 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-07 15:11:52 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									for  _ ,  r  :=  range  registries  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										if  registry  !=  ""  &&  r . Name  !=  registry  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											continue 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-13 13:03:25 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-12-21 09:31:37 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										meta ,  err  :=  r . ListAddonMeta ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										if  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											continue 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-07 15:11:52 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-21 09:31:37 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										addList ,  err  :=  r . ListUIData ( meta ,  pkgaddon . CLIMetaOptions ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-07 15:11:52 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										if  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											continue 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										addons  =  mergeAddons ( addons ,  addList ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-11 11:49:44 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-13 13:03:25 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-12-07 15:11:52 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									table  :=  uitable . New ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-25 12:37:23 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									table . AddRow ( "NAME" ,  "REGISTRY" ,  "DESCRIPTION" ,  "STATUS" ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-25 10:32:30 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-12-07 15:11:52 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									for  _ ,  addon  :=  range  addons  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-20 14:34:45 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										status ,  err  :=  pkgaddon . GetAddonStatus ( ctx ,  clt ,  addon . Name ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-07 15:11:52 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										if  err  !=  nil  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-25 10:32:30 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											return  err 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-25 12:37:23 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										table . AddRow ( addon . Name ,  addon . RegistryName ,  addon . Description ,  status . AddonPhase ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-11 11:29:10 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										onlineAddon [ addon . Name ]  =  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									appList  :=  v1alpha2 . ApplicationList { } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									if  err  :=  clt . List ( ctx ,  & appList ,  client . MatchingLabels { oam . LabelAddonRegistry :  pkgaddon . LocalAddonRegistryName } ) ;  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										return  err 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									for  _ ,  app  :=  range  appList . Items  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										addonName  :=  app . GetLabels ( ) [ oam . LabelAddonName ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										if  onlineAddon [ addonName ]  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											continue 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										table . AddRow ( addonName ,  app . GetLabels ( ) [ oam . LabelAddonRegistry ] ,  "" ,  statusEnabled ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-25 10:16:43 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-07 15:11:52 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									fmt . Println ( table . String ( ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-13 13:03:25 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									return  nil 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-01-07 15:49:27 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								func  waitApplicationRunning ( k8sClient  client . Client ,  addonName  string )  error  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-25 14:08:20 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									trackInterval  :=  5  *  time . Second 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-06 12:33:52 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									timeout  :=  600  *  time . Second 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-25 14:08:20 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									start  :=  time . Now ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									ctx  :=  context . Background ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-14 18:21:49 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									var  app  v1beta1 . Application 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-25 14:08:20 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									spinner  :=  newTrackingSpinnerWithDelay ( "Waiting addon running ..." ,  1 * time . Second ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									spinner . Start ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									defer  spinner . Stop ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									for  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-07 15:49:27 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										err  :=  k8sClient . Get ( ctx ,  types2 . NamespacedName { Name :  pkgaddon . Convert2AppName ( addonName ) ,  Namespace :  types . DefaultKubeVelaNS } ,  & app ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-25 10:16:43 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										if  err  !=  nil  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-25 14:08:20 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											return  client . IgnoreNotFound ( err ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-25 10:16:43 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-14 18:21:49 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										phase  :=  app . Status . Phase 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										if  phase  ==  common2 . ApplicationRunning  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-25 14:08:20 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											return  nil 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-25 10:16:43 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-25 14:08:20 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										timeConsumed  :=  int ( time . Since ( start ) . Seconds ( ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										applySpinnerNewSuffix ( spinner ,  fmt . Sprintf ( "Waiting addon application running. It is now in phase: %s (timeout %d/%d seconds)..." , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											phase ,  timeConsumed ,  int ( timeout . Seconds ( ) ) ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-06 12:33:52 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										if  timeConsumed  >  int ( timeout . Seconds ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-07 15:49:27 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											return  errors . Errorf ( "Enabling timeout, please run \"vela status %s -n vela-system\" to check the status of the addon" ,  pkgaddon . Convert2AppName ( addonName ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-06 12:33:52 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-25 14:08:20 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										time . Sleep ( trackInterval ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-11 11:49:44 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-11-16 13:56:39 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-14 19:35:21 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								// TransAddonName will turn addon's name from xxx/yyy to xxx-yyy
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								func  TransAddonName ( name  string )  string  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									return  strings . ReplaceAll ( name ,  "/" ,  "-" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-25 10:32:30 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-12-21 09:31:37 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								func  mergeAddons ( a1 ,  a2  [ ] * pkgaddon . UIData )  [ ] * pkgaddon . UIData  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-07 15:11:52 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									for  _ ,  item  :=  range  a2  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										if  hasAddon ( a1 ,  item . Name )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											continue 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-25 10:32:30 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-07 15:11:52 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										a1  =  append ( a1 ,  item ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-25 10:32:30 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-07 15:11:52 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									return  a1 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-25 10:32:30 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-12-21 09:31:37 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								func  hasAddon ( addons  [ ] * pkgaddon . UIData ,  name  string )  bool  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-07 15:11:52 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									for  _ ,  addon  :=  range  addons  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										if  addon . Name  ==  name  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											return  true 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-25 10:32:30 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-07 15:11:52 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									return  false 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-25 10:32:30 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-07 15:11:52 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// TODO(wangyike) addon can support multi-tenancy, an addon can be enabled multi times and will create many times
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// func checkWhetherTerraformProviderExist(ctx context.Context, k8sClient client.Client, addonName string, args map[string]string) (string, bool, error) {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//	_, providerName := getTerraformProviderArgumentValue(addonName, args)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//	providerNames, err := getTerraformProviderNames(ctx, k8sClient)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//	if err != nil {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//		return "", false, err
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//	}
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//	for _, name := range providerNames {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//		if providerName == name {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//			return providerName, true, nil
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//		}
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//	}
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//	return providerName, false, nil
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// }
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//  func getTerraformProviderNames(ctx context.Context, k8sClient client.Client) ([]string, error) {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//	var names []string
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//	providerList := &terraformv1beta1.ProviderList{}
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//	err := k8sClient.List(ctx, providerList, client.InNamespace(AddonTerraformProviderNamespace))
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//	if err != nil {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//		if apimeta.IsNoMatchError(err) || kerrors.IsNotFound(err) {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//			return nil, nil
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//		}
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//		return nil, err
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//	}
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//	for _, provider := range providerList.Items {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//		names = append(names, provider.Name)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//	}
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//	return names, nil
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// }
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// Get the value of argument AddonTerraformProviderNameArgument
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// func getTerraformProviderArgumentValue(addonName string, args map[string]string) (map[string]string, string) {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//	providerName, ok := args[AddonTerraformProviderNameArgument]
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//	if !ok {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//		switch addonName {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//		case "terraform-alibaba":
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//			providerName = "default"
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//		case "terraform-aws":
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//			providerName = "aws"
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//		case "terraform-azure":
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//			providerName = "azure"
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//		}
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//		args[AddonTerraformProviderNameArgument] = providerName
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//	}
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//	return args, providerName
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// }