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  }