github.com/verrazzano/verrazzano@v1.7.1/tools/psr/psrctl/pkg/scenario/manager.go (about) 1 // Copyright (c) 2022, Oracle and/or its affiliates. 2 // Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. 3 4 package scenario 5 6 import ( 7 "fmt" 8 "github.com/verrazzano/verrazzano/pkg/helm" 9 "github.com/verrazzano/verrazzano/pkg/k8sutil" 10 "github.com/verrazzano/verrazzano/pkg/log/vzlog" 11 corev1 "k8s.io/client-go/kubernetes/typed/core/v1" 12 ) 13 14 // ScenarioMananger contains the information needed to manage a Scenario 15 type ScenarioMananger struct { 16 Namespace string 17 DryRun bool 18 Verbose bool 19 Log vzlog.VerrazzanoLogger 20 Client corev1.CoreV1Interface 21 HelmOverrides []helm.HelmOverrides 22 } 23 24 // NewManager returns a scenario ScenarioMananger 25 func NewManager(namespace string, helmOverrides ...helm.HelmOverrides) (ScenarioMananger, error) { 26 log := vzlog.DefaultLogger() 27 client, err := k8sutil.GetCoreV1Func(log) 28 if err != nil { 29 return ScenarioMananger{}, fmt.Errorf("Failed to get CoreV1 client: %v", err) 30 } 31 m := ScenarioMananger{ 32 Namespace: namespace, 33 Log: vzlog.DefaultLogger(), 34 HelmOverrides: helmOverrides, 35 Client: client, 36 Verbose: true, 37 } 38 return m, nil 39 } 40 41 // FindRunningScenarios returns the list of Scenarios that are running in the cluster. 42 func (m ScenarioMananger) FindRunningScenarios() ([]Scenario, error) { 43 scenarios := []Scenario{} 44 45 cms, err := m.getAllConfigMaps() 46 if err != nil { 47 return nil, err 48 } 49 50 for i := range cms { 51 sc, err := m.getScenarioFromConfigmap(&cms[i]) 52 if err != nil { 53 return nil, err 54 } 55 scenarios = append(scenarios, *sc) 56 } 57 58 return scenarios, nil 59 } 60 61 // FindRunningScenarioByID returns the Scenario with the specified Scenario ID 62 func (m ScenarioMananger) FindRunningScenarioByID(ID string) (*Scenario, error) { 63 cm, err := m.getConfigMapByID(ID) 64 if err != nil { 65 return nil, err 66 } 67 sc, err := m.getScenarioFromConfigmap(cm) 68 if err != nil { 69 return nil, err 70 } 71 return sc, nil 72 }