github.com/giantswarm/apiextensions/v6@v6.6.0/pkg/conditions/clusterapi.go (about)

     1  package conditions
     2  
     3  import (
     4  	"encoding/json"
     5  
     6  	"github.com/giantswarm/microerror"
     7  	capi "sigs.k8s.io/cluster-api/api/v1beta1"
     8  )
     9  
    10  // Cluster conditions
    11  const (
    12  	// CreatingCondition tells if the cluster is being created.
    13  	CreatingCondition capi.ConditionType = "Creating"
    14  
    15  	// UpgradingCondition tells if the cluster is being upgraded to a newer
    16  	// release version.
    17  	UpgradingCondition capi.ConditionType = "Upgrading"
    18  
    19  	// ProviderInfrastructureReadyCondition tells if the provider
    20  	// infrastructure defined by the related provider-specific CR is Ready. For
    21  	// example, in Cluster CR it tells if Azure infrastructure defined by the
    22  	// AzureCluster is ready.
    23  	ProviderInfrastructureReadyCondition capi.ConditionType = "ProviderInfrastructureReady"
    24  
    25  	// NodePoolsReadyCondition tells if all node pools are ready.
    26  	NodePoolsReadyCondition capi.ConditionType = "NodePoolsReady"
    27  )
    28  
    29  // Creating reasons
    30  const (
    31  	CreationCompletedReason = "CreationCompleted"
    32  	ExistingClusterReason   = "ExistingCluster"
    33  )
    34  
    35  // Upgrading reasons
    36  const (
    37  	UpgradeCompletedReason  = "UpgradeCompleted"
    38  	UpgradeNotStartedReason = "UpgradeNotStarted"
    39  )
    40  
    41  type UpgradingConditionMessage struct {
    42  	Message        string `json:"message"`
    43  	ReleaseVersion string `json:"release_version"`
    44  }
    45  
    46  // SerializeUpgradingConditionMessage converts specified message object into a
    47  // JSON string.
    48  func SerializeUpgradingConditionMessage(message UpgradingConditionMessage) (string, error) {
    49  	messageJson, err := json.Marshal(message)
    50  	if err != nil {
    51  		return "", microerror.Mask(err)
    52  	}
    53  
    54  	return string(messageJson), nil
    55  }
    56  
    57  // DeserializeUpgradingConditionMessage parses specified JSON string and
    58  // returns message UpgradingConditionMessage struct.
    59  func DeserializeUpgradingConditionMessage(messageJson string) (UpgradingConditionMessage, error) {
    60  	var message UpgradingConditionMessage
    61  
    62  	err := json.Unmarshal([]byte(messageJson), &message)
    63  	if err != nil {
    64  		return UpgradingConditionMessage{}, microerror.Mask(err)
    65  	}
    66  
    67  	return message, nil
    68  }