github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/caas/kubernetes/provider/modeloperator_upgrade.go (about)

     1  // Copyright 2020 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package provider
     5  
     6  import (
     7  	"github.com/juju/names/v5"
     8  	"github.com/juju/version/v2"
     9  	"k8s.io/client-go/kubernetes"
    10  )
    11  
    12  type upgradeCAASModelOperatorBridge struct {
    13  	clientFn    func() kubernetes.Interface
    14  	namespaceFn func() string
    15  	isLegacyFn  func() bool
    16  }
    17  
    18  type UpgradeCAASModelOperatorBroker interface {
    19  	// Client returns a Kubernetes client associated with the current broker's
    20  	// cluster
    21  	Client() kubernetes.Interface
    22  
    23  	// IsLegacyLabels indicates if this provider is operating on a legacy label schema
    24  	IsLegacyLabels() bool
    25  
    26  	// Namespace returns the targeted Kubernetes namespace for this broker
    27  	Namespace() string
    28  }
    29  
    30  func (u *upgradeCAASModelOperatorBridge) Client() kubernetes.Interface {
    31  	return u.clientFn()
    32  }
    33  
    34  func (u *upgradeCAASModelOperatorBridge) IsLegacyLabels() bool {
    35  	return u.isLegacyFn()
    36  }
    37  
    38  func modelOperatorUpgrade(
    39  	operatorName string,
    40  	vers version.Number,
    41  	broker UpgradeCAASModelOperatorBroker) error {
    42  	return upgradeDeployment(
    43  		operatorName,
    44  		"",
    45  		vers,
    46  		broker.IsLegacyLabels(),
    47  		broker.Client().AppsV1().Deployments(broker.Namespace()))
    48  }
    49  
    50  func (u *upgradeCAASModelOperatorBridge) Namespace() string {
    51  	return u.namespaceFn()
    52  }
    53  
    54  func (k *kubernetesClient) upgradeModelOperator(agentTag names.Tag, vers version.Number) error {
    55  	broker := &upgradeCAASModelOperatorBridge{
    56  		clientFn:    k.client,
    57  		namespaceFn: k.GetCurrentNamespace,
    58  		isLegacyFn:  k.IsLegacyLabels,
    59  	}
    60  	return modelOperatorUpgrade(modelOperatorName, vers, broker)
    61  }