diff --git a/apis/management.cattle.io/v3/catalog_types.go b/apis/management.cattle.io/v3/catalog_types.go index 8ef5bdc9..fc5963fa 100644 --- a/apis/management.cattle.io/v3/catalog_types.go +++ b/apis/management.cattle.io/v3/catalog_types.go @@ -2,6 +2,8 @@ package v3 import ( "github.com/rancher/norman/condition" + "github.com/rancher/norman/types" + "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) @@ -69,7 +71,11 @@ type Template struct { type TemplateSpec struct { DisplayName string `json:"displayName"` CatalogID string `json:"catalogId,omitempty" norman:"type=reference[catalog]"` + ProjectCatalogID string `json:"projectCatalogId,omitempty" norman:"type=reference[projectCatalog]"` + ClusterCatalogID string `json:"clusterCatalogId,omitempty" norman:"type=reference[clusterCatalog]"` DefaultTemplateVersionID string `json:"defaultTemplateVersionId,omitempty" norman:"type=reference[templateVersion]"` + ProjectID string `json:"projectId,omitempty" norman:"required,type=reference[project]"` + ClusterID string `json:"clusterId,omitempty" norman:"required,type=reference[cluster]"` Description string `json:"description,omitempty"` DefaultVersion string `json:"defaultVersion,omitempty" yaml:"default_version,omitempty"` @@ -172,3 +178,17 @@ type TemplateContent struct { // https://github.com/kubernetes/community/blob/master/contributors/devel/api-conventions.md#spec-and-status Data string `json:"data,omitempty"` } + +type ProjectCatalog struct { + types.Namespaced + + Catalog `json:",inline" mapstructure:",squash"` + ProjectName string `json:"projectName,omitempty" norman:"type=reference[project]"` +} + +type ClusterCatalog struct { + types.Namespaced + + Catalog `json:",inline" mapstructure:",squash"` + ClusterName string `json:"clusterName,omitempty" norman:"required,type=reference[cluster]"` +} diff --git a/apis/management.cattle.io/v3/schema/schema.go b/apis/management.cattle.io/v3/schema/schema.go index 9da955a5..ce944f67 100644 --- a/apis/management.cattle.io/v3/schema/schema.go +++ b/apis/management.cattle.io/v3/schema/schema.go @@ -34,7 +34,9 @@ var ( Init(globalTypes). Init(rkeTypes). Init(alertTypes). - Init(composeType) + Init(composeType). + Init(projectCatalogTypes). + Init(clusterCatalogTypes) TokenSchemas = factory.Schemas(&Version). Init(tokens) @@ -544,3 +546,37 @@ func alertTypes(schema *types.Schemas) *types.Schemas { func composeType(schemas *types.Schemas) *types.Schemas { return schemas.MustImport(&Version, v3.ComposeConfig{}) } + +func projectCatalogTypes(schemas *types.Schemas) *types.Schemas { + return schemas. + AddMapperForType(&Version, v3.ProjectCatalog{}, + &m.Move{From: "catalogKind", To: "kind"}, + &m.Embed{Field: "status"}, + &m.Drop{Field: "helmVersionCommits"}, + &mapper.NamespaceIDMapper{}). + MustImportAndCustomize(&Version, v3.ProjectCatalog{}, func(schema *types.Schema) { + schema.ResourceActions = map[string]types.Action{ + "refresh": {}, + } + schema.CollectionActions = map[string]types.Action{ + "refresh": {}, + } + }) +} + +func clusterCatalogTypes(schemas *types.Schemas) *types.Schemas { + return schemas. + AddMapperForType(&Version, v3.ClusterCatalog{}, + &m.Move{From: "catalogKind", To: "kind"}, + &m.Embed{Field: "status"}, + &m.Drop{Field: "helmVersionCommits"}, + &mapper.NamespaceIDMapper{}). + MustImportAndCustomize(&Version, v3.ClusterCatalog{}, func(schema *types.Schema) { + schema.ResourceActions = map[string]types.Action{ + "refresh": {}, + } + schema.CollectionActions = map[string]types.Action{ + "refresh": {}, + } + }) +}