github.com/rancher/types@v0.0.0-20220328215343-4370ff10ecd5/apis/project.cattle.io/v3/app_types.go (about)

     1  package v3
     2  
     3  import (
     4  	"strings"
     5  
     6  	"github.com/rancher/norman/condition"
     7  	"github.com/rancher/norman/types"
     8  	v1 "k8s.io/api/core/v1"
     9  	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    10  )
    11  
    12  type App struct {
    13  	types.Namespaced
    14  	metav1.TypeMeta   `json:",inline"`
    15  	metav1.ObjectMeta `json:"metadata,omitempty"`
    16  
    17  	Spec   AppSpec   `json:"spec,omitempty"`
    18  	Status AppStatus `json:"status,omitempty"`
    19  }
    20  
    21  func (a *App) ObjClusterName() string {
    22  	return a.Spec.ObjClusterName()
    23  }
    24  
    25  type AppSpec struct {
    26  	ProjectName         string            `json:"projectName,omitempty" norman:"type=reference[/v3/schemas/project]"`
    27  	Description         string            `json:"description,omitempty"`
    28  	TargetNamespace     string            `json:"targetNamespace,omitempty"`
    29  	ExternalID          string            `json:"externalId,omitempty"`
    30  	Files               map[string]string `json:"files,omitempty"`
    31  	Answers             map[string]string `json:"answers,omitempty"`
    32  	Wait                bool              `json:"wait,omitempty"`
    33  	Timeout             int               `json:"timeout,omitempty" norman:"min=1,default=300"`
    34  	AppRevisionName     string            `json:"appRevisionName,omitempty" norman:"type=reference[/v3/project/schemas/apprevision]"`
    35  	Prune               bool              `json:"prune,omitempty"`
    36  	MultiClusterAppName string            `json:"multiClusterAppName,omitempty" norman:"type=reference[/v3/schemas/multiclusterapp]"`
    37  	ValuesYaml          string            `json:"valuesYaml,omitempty"`
    38  }
    39  
    40  func (a *AppSpec) ObjClusterName() string {
    41  	if parts := strings.SplitN(a.ProjectName, ":", 2); len(parts) == 2 {
    42  		return parts[0]
    43  	}
    44  	return ""
    45  }
    46  
    47  var (
    48  	AppConditionInstalled                  condition.Cond = "Installed"
    49  	AppConditionMigrated                   condition.Cond = "Migrated"
    50  	AppConditionDeployed                   condition.Cond = "Deployed"
    51  	AppConditionForceUpgrade               condition.Cond = "ForceUpgrade"
    52  	AppConditionUserTriggeredAction        condition.Cond = "UserTriggeredAction"
    53  	IstioConditionMetricExpressionDeployed condition.Cond = "MetricExpressionDeployed"
    54  )
    55  
    56  type AppStatus struct {
    57  	AppliedFiles         map[string]string `json:"appliedFiles,omitempty"`
    58  	Notes                string            `json:"notes,omitempty"`
    59  	Conditions           []AppCondition    `json:"conditions,omitempty"`
    60  	LastAppliedTemplates string            `json:"lastAppliedTemplate,omitempty"`
    61  	HelmVersion          string            `json:"helmVersion,omitempty" norman:"noupdate,nocreate"`
    62  }
    63  
    64  type AppCondition struct {
    65  	// Type of cluster condition.
    66  	Type condition.Cond `json:"type"`
    67  	// Status of the condition, one of True, False, Unknown.
    68  	Status v1.ConditionStatus `json:"status"`
    69  	// The last time this condition was updated.
    70  	LastUpdateTime string `json:"lastUpdateTime,omitempty"`
    71  	// Last time the condition transitioned from one status to another.
    72  	LastTransitionTime string `json:"lastTransitionTime,omitempty"`
    73  	// The reason for the condition's last transition.
    74  	Reason string `json:"reason,omitempty"`
    75  	// Human-readable message indicating details about last transition
    76  	Message string `json:"message,omitempty"`
    77  }
    78  
    79  type AppRevision struct {
    80  	types.Namespaced
    81  	metav1.TypeMeta   `json:",inline"`
    82  	metav1.ObjectMeta `json:"metadata,omitempty"`
    83  
    84  	Spec   AppRevisionSpec   `json:"spec,omitempty"`
    85  	Status AppRevisionStatus `json:"status,omitempty"`
    86  }
    87  
    88  type AppRevisionSpec struct {
    89  	ProjectName string `json:"projectName,omitempty" norman:"type=reference[/v3/schemas/project]"`
    90  }
    91  
    92  func (a *AppRevisionSpec) ObjClusterName() string {
    93  	if parts := strings.SplitN(a.ProjectName, ":", 2); len(parts) == 2 {
    94  		return parts[0]
    95  	}
    96  	return ""
    97  }
    98  
    99  type AppRevisionStatus struct {
   100  	ProjectName string            `json:"projectName,omitempty" norman:"type=reference[/v3/schemas/project]"`
   101  	ExternalID  string            `json:"externalId"`
   102  	Answers     map[string]string `json:"answers"`
   103  	Digest      string            `json:"digest"`
   104  	ValuesYaml  string            `json:"valuesYaml,omitempty"`
   105  	Files       map[string]string `json:"files,omitempty"`
   106  }
   107  
   108  func (a *AppRevisionStatus) ObjClusterName() string {
   109  	if parts := strings.SplitN(a.ProjectName, ":", 2); len(parts) == 2 {
   110  		return parts[0]
   111  	}
   112  	return ""
   113  }
   114  
   115  type AppUpgradeConfig struct {
   116  	ExternalID   string            `json:"externalId,omitempty"`
   117  	Answers      map[string]string `json:"answers,omitempty"`
   118  	ForceUpgrade bool              `json:"forceUpgrade,omitempty"`
   119  	Files        map[string]string `json:"files,omitempty"`
   120  	ValuesYaml   string            `json:"valuesYaml,omitempty"`
   121  }
   122  
   123  type RollbackRevision struct {
   124  	RevisionName string `json:"revisionName,omitempty" norman:"type=reference[/v3/project/schemas/apprevision]"`
   125  	ForceUpgrade bool   `json:"forceUpgrade,omitempty"`
   126  }