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 }