diff --git a/apis/management.cattle.io/v3/globaldns_types.go b/apis/management.cattle.io/v3/globaldns_types.go new file mode 100644 index 00000000..5832d593 --- /dev/null +++ b/apis/management.cattle.io/v3/globaldns_types.go @@ -0,0 +1,49 @@ +package v3 + +import ( + "github.com/rancher/norman/types" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +type GlobalDNS struct { + types.Namespaced + + 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"` + + Spec GlobalDNSSpec `json:"spec,omitempty"` + Status GlobalDNSStatus `json:"status,omitempty"` +} + +type GlobalDNSSpec struct { + FQDN string `json:"fqdn,omitempty"` + ProjectNames []string `json:"projectNames" norman:"type=array[reference[project]]"` + MultiClusterAppName string `json:"multiClusterAppName,omitempty" norman:"type=reference[multiClusterApp]"` + ProviderName string `json:"providerName,omitempty" norman:"type=reference[globalDnsProvider]"` +} + +type GlobalDNSStatus struct { + Endpoints []string `json:"endpoints,omitempty"` +} + +type GlobalDNSProvider struct { + metav1.TypeMeta `json:",inline"` + // Standard object’s metadata. More info: + // https://github.com/kubernetes/community/blob/master/contributors/devel/api-conventions.md#metadata + //ObjectMeta.Name = GlobalDNSProviderID + metav1.ObjectMeta `json:"metadata,omitempty"` + + Spec GlobalDNSProviderSpec `json:"spec,omitempty"` +} + +type GlobalDNSProviderSpec struct { + Route53ProviderConfig *Route53ProviderConfig `json:"route53ProviderConfig,omitempty"` +} + +type Route53ProviderConfig struct { + RootDomain string `json:"rootDomain" norman:"required"` + AccessKey string `json:"accessKey"` + SecretKey string `json:"secretKey" norman:"type=password"` +} diff --git a/apis/management.cattle.io/v3/schema/schema.go b/apis/management.cattle.io/v3/schema/schema.go index 994a1146..73712525 100644 --- a/apis/management.cattle.io/v3/schema/schema.go +++ b/apis/management.cattle.io/v3/schema/schema.go @@ -37,7 +37,8 @@ var ( Init(composeType). Init(projectCatalogTypes). Init(clusterCatalogTypes). - Init(multiClusterAppTypes) + Init(multiClusterAppTypes). + Init(globalDNSTypes) TokenSchemas = factory.Schemas(&Version). Init(tokens) @@ -586,3 +587,17 @@ func multiClusterAppTypes(schemas *types.Schemas) *types.Schemas { MustImport(&Version, v3.MultiClusterApp{}). MustImport(&Version, v3.Target{}) } + +func globalDNSTypes(schemas *types.Schemas) *types.Schemas { + return schemas. + TypeName("globalDns", v3.GlobalDNS{}). + TypeName("globalDnsProvider", v3.GlobalDNSProvider{}). + TypeName("globalDnsSpec", v3.GlobalDNSSpec{}). + TypeName("globalDnsStatus", v3.GlobalDNSStatus{}). + TypeName("globalDnsProviderSpec", v3.GlobalDNSProviderSpec{}). + AddMapperForType(&Version, v3.GlobalDNS{}, m.Drop{Field: "namespaceId"}). + MustImportAndCustomize(&Version, v3.GlobalDNS{}, func(schema *types.Schema) { + }). + MustImportAndCustomize(&Version, v3.GlobalDNSProvider{}, func(schema *types.Schema) { + }) +}