diff --git a/apis/management.cattle.io/v3/catalog_types.go b/apis/management.cattle.io/v3/catalog_types.go index 2276d84a..d497b7d5 100644 --- a/apis/management.cattle.io/v3/catalog_types.go +++ b/apis/management.cattle.io/v3/catalog_types.go @@ -92,7 +92,6 @@ type TemplateSpec struct { } type TemplateStatus struct { - // todo: } type TemplateVersion struct { @@ -114,14 +113,15 @@ type TemplateVersionSpec struct { MaximumRancherVersion string `json:"maximumRancherVersion,omitempty" yaml:"maximum_rancher_version,omitempty"` UpgradeFrom string `json:"upgradeFrom,omitempty" yaml:"upgrade_from,omitempty"` Readme string `json:"readme,omitempty"` + AppReadme string `json:"appReadme,omitempty"` UpgradeVersionLinks map[string]string `json:"upgradeVersionLinks,omitempty"` + Digest string `json:"digest,omitempty"` - Files []File `json:"files,omitempty"` - Questions []Question `json:"questions,omitempty"` + Files map[string]string `json:"files,omitempty"` + Questions []Question `json:"questions,omitempty"` } type TemplateVersionStatus struct { - // todo } type File struct { @@ -130,6 +130,26 @@ type File struct { } type Question struct { + Variable string `json:"variable,omitempty" yaml:"variable,omitempty"` + Label string `json:"label,omitempty" yaml:"label,omitempty"` + Description string `json:"description,omitempty" yaml:"description,omitempty"` + Type string `json:"type,omitempty" yaml:"type,omitempty"` + Required bool `json:"required,omitempty" yaml:"required,omitempty"` + Default string `json:"default,omitempty" yaml:"default,omitempty"` + Group string `json:"group,omitempty" yaml:"group,omitempty"` + MinLength int `json:"minLength,omitempty" yaml:"min_length,omitempty"` + MaxLength int `json:"maxLength,omitempty" yaml:"max_length,omitempty"` + Min int `json:"min,omitempty" yaml:"min,omitempty"` + Max int `json:"max,omitempty" yaml:"max,omitempty"` + Options []string `json:"options,omitempty" yaml:"options,omitempty"` + ValidChars string `json:"validChars,omitempty" yaml:"valid_chars,omitempty"` + InvalidChars string `json:"invalidChars,omitempty" yaml:"invalid_chars,omitempty"` + Subquestions []SubQuestion `json:"subquestions,omitempty" yaml:"subquestions,omitempty"` + ShowIf string `json:"showIf,omitempty" yaml:"show_if,omitempty"` + ShowSubquestionIf string `json:"showSubquestionIf,omitempty" yaml:"show_subquestion_if,omitempty"` +} + +type SubQuestion struct { Variable string `json:"variable,omitempty" yaml:"variable,omitempty"` Label string `json:"label,omitempty" yaml:"label,omitempty"` Description string `json:"description,omitempty" yaml:"description,omitempty"` @@ -144,4 +164,15 @@ type Question struct { Options []string `json:"options,omitempty" yaml:"options,omitempty"` ValidChars string `json:"validChars,omitempty" yaml:"valid_chars,omitempty"` InvalidChars string `json:"invalidChars,omitempty" yaml:"invalid_chars,omitempty"` + ShowIf string `json:"showIf,omitempty" yaml:"show_if,omitempty"` +} + +type TemplateContent struct { + metav1.TypeMeta `json:",inline"` + // Standard object’s metadata. More info: + // https://github.com/kubernetes/community/blob/master/contributors/devel/api-conventions.md#metadata + metav1.ObjectMeta `json:"metadata,omitempty"` + // Specification of the desired behavior of the the cluster. More info: + // https://github.com/kubernetes/community/blob/master/contributors/devel/api-conventions.md#spec-and-status + Data string `json:"data,omitempty"` } diff --git a/apis/management.cattle.io/v3/schema/schema.go b/apis/management.cattle.io/v3/schema/schema.go index cc541069..3c7447dd 100644 --- a/apis/management.cattle.io/v3/schema/schema.go +++ b/apis/management.cattle.io/v3/schema/schema.go @@ -66,7 +66,8 @@ func catalogTypes(schemas *types.Schemas) *types.Schemas { } }). MustImport(&Version, v3.Template{}). - MustImport(&Version, v3.TemplateVersion{}) + MustImport(&Version, v3.TemplateVersion{}). + MustImport(&Version, v3.TemplateContent{}) } func nativeNodeTypes(schemas *types.Schemas) *types.Schemas { diff --git a/apis/project.cattle.io/v3/app_types.go b/apis/project.cattle.io/v3/app_types.go index 5a922d01..a1fe3312 100644 --- a/apis/project.cattle.io/v3/app_types.go +++ b/apis/project.cattle.io/v3/app_types.go @@ -17,24 +17,24 @@ type App struct { } type AppSpec struct { - ProjectName string `json:"projectName,omitempty" norman:"type=reference[/v3/schemas/project]"` - Description string `json:"description,omitempty"` - InstallNamespace string `json:"installNamespace,omitempty"` - ExternalID string `json:"externalId,omitempty"` - Templates map[string]string `json:"templates,omitempty"` - Answers map[string]string `json:"answers,omitempty"` - AnswerValues string `json:"answerValues,omitempty"` + ProjectName string `json:"projectName,omitempty" norman:"type=reference[/v3/schemas/project]"` + Description string `json:"description,omitempty"` + TargetNamespace string `json:"targetNamespace,omitempty"` + ExternalID string `json:"externalId,omitempty"` + Answers map[string]string `json:"answers,omitempty"` + AppRevisionName string `json:"appRevisionName,omitempty" norman:"type=reference[/v3/project/schemas/apprevision]"` + Prune bool `json:"prune,omitempty"` } var ( AppConditionInstalled condition.Cond = "installed" + AppConditionUpdated condition.Cond = "updated" ) type AppStatus struct { - StdOutput []string `json:"stdOutput,omitempty"` - StdError []string `json:"stdError,omitempty"` - Releases []ReleaseInfo `json:"releases,omitempty"` - Conditions []AppCondition `json:"conditions,omitempty"` + Notes string `json:"notes,omitempty"` + Conditions []AppCondition `json:"conditions,omitempty"` + LastAppliedTemplates string `json:"lastAppliedTemplate,omitempty"` } type AppCondition struct { @@ -52,10 +52,20 @@ type AppCondition struct { Message string `json:"message,omitempty"` } -type ReleaseInfo struct { - Name string `json:"name"` - Version string `json:"version"` - CreateTimestamp string `json:"createTimestamp"` - ModifiedAt string `json:"modifiedAt"` - TemplateVersionID string `json:"templateVersionId"` +type AppRevision struct { + types.Namespaced + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + + Spec AppRevisionSpec `json:"spec,omitempty"` + Status AppRevisionStatus `json:"status,omitempty"` +} + +type AppRevisionSpec struct{} + +type AppRevisionStatus struct { + ProjectName string `json:"projectName,omitempty" norman:"type=reference[/v3/schemas/project]"` + ExternalID string `json:"externalId"` + Answers map[string]string `json:"answers"` + Digest string `json:"digest"` } diff --git a/apis/project.cattle.io/v3/schema/schema.go b/apis/project.cattle.io/v3/schema/schema.go index 8191c8bf..1a59519e 100644 --- a/apis/project.cattle.io/v3/schema/schema.go +++ b/apis/project.cattle.io/v3/schema/schema.go @@ -687,14 +687,13 @@ func appTypes(schema *types.Schemas) *types.Schemas { return schema. MustImportAndCustomize(&Version, v3.App{}, func(schema *types.Schema) { schema.ResourceActions = map[string]types.Action{ - "upgrade": { - Input: "templateVersionId", - }, + "upgrade": {}, "rollback": { Input: "revision", }, } - }) + }). + MustImport(&Version, v3.AppRevision{}) } func podTemplateSpecTypes(schemas *types.Schemas) *types.Schemas {