Move CRD definitions into a formal API to allow access from other controllers. (#378)
This commit is contained in:
		
							parent
							
								
									25fa45fd58
								
							
						
					
					
						commit
						a4224f6063
					
				|  | @ -0,0 +1,54 @@ | |||
| package v1 | ||||
| 
 | ||||
| import ( | ||||
| 	"github.com/zalando-incubator/postgres-operator/pkg/apis/acid.zalan.do" | ||||
| 	apiextv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1" | ||||
| 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" | ||||
| ) | ||||
| 
 | ||||
| const ( | ||||
| 	PostgresCRDResourceKind   = "postgresql" | ||||
| 	PostgresCRDResourcePlural = "postgresqls" | ||||
| 	PostgresCRDResouceName    = PostgresCRDResourcePlural + "." + acidzalando.GroupName | ||||
| 	PostgresCRDResourceShort  = "pg" | ||||
| 
 | ||||
| 	OperatorConfigCRDResouceKind    = "OperatorConfiguration" | ||||
| 	OperatorConfigCRDResourcePlural = "operatorconfigurations" | ||||
| 	OperatorConfigCRDResourceName   = OperatorConfigCRDResourcePlural + "." + acidzalando.GroupName | ||||
| 	OperatorConfigCRDResourceShort  = "opconfig" | ||||
| ) | ||||
| 
 | ||||
| func buildCRD(name, kind, plural, short string) *apiextv1beta1.CustomResourceDefinition { | ||||
| 	return &apiextv1beta1.CustomResourceDefinition{ | ||||
| 		ObjectMeta: metav1.ObjectMeta{ | ||||
| 			Name: name, | ||||
| 		}, | ||||
| 		Spec: apiextv1beta1.CustomResourceDefinitionSpec{ | ||||
| 			Group:   SchemeGroupVersion.Group, | ||||
| 			Version: SchemeGroupVersion.Version, | ||||
| 			Names: apiextv1beta1.CustomResourceDefinitionNames{ | ||||
| 				Plural:     plural, | ||||
| 				ShortNames: []string{short}, | ||||
| 				Kind:       kind, | ||||
| 			}, | ||||
| 			Scope: apiextv1beta1.NamespaceScoped, | ||||
| 			Subresources: &apiextv1beta1.CustomResourceSubresources{ | ||||
| 				Status: &apiextv1beta1.CustomResourceSubresourceStatus{}, | ||||
| 			}, | ||||
| 		}, | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func PostgresCRD() *apiextv1beta1.CustomResourceDefinition { | ||||
| 	return buildCRD(PostgresCRDResouceName, | ||||
| 		PostgresCRDResourceKind, | ||||
| 		PostgresCRDResourcePlural, | ||||
| 		PostgresCRDResourceShort) | ||||
| } | ||||
| 
 | ||||
| func ConfigurationCRD() *apiextv1beta1.CustomResourceDefinition { | ||||
| 	return buildCRD(OperatorConfigCRDResourceName, | ||||
| 		OperatorConfigCRDResouceKind, | ||||
| 		OperatorConfigCRDResourcePlural, | ||||
| 		OperatorConfigCRDResourceShort) | ||||
| } | ||||
|  | @ -9,16 +9,6 @@ import ( | |||
| ) | ||||
| 
 | ||||
| const ( | ||||
| 	PostgresCRDResourceKind   = "postgresql" | ||||
| 	PostgresCRDResourcePlural = "postgresqls" | ||||
| 	PostgresCRDResouceName    = PostgresCRDResourcePlural + "." + acidzalando.GroupName | ||||
| 	PostgresCRDResourceShort  = "pg" | ||||
| 
 | ||||
| 	OperatorConfigCRDResouceKind    = "OperatorConfiguration" | ||||
| 	OperatorConfigCRDResourcePlural = "operatorconfigurations" | ||||
| 	OperatorConfigCRDResourceName   = OperatorConfigCRDResourcePlural + "." + acidzalando.GroupName | ||||
| 	OperatorConfigCRDResourceShort  = "opconfig" | ||||
| 
 | ||||
| 	APIVersion = "v1" | ||||
| ) | ||||
| 
 | ||||
|  |  | |||
|  | @ -47,27 +47,7 @@ func (c *Controller) clusterWorkerID(clusterName spec.NamespacedName) uint32 { | |||
| 	return c.clusterWorkers[clusterName] | ||||
| } | ||||
| 
 | ||||
| func (c *Controller) createOperatorCRD(name, kind, plural, short string) error { | ||||
| 	subResourceStatus := apiextv1beta1.CustomResourceSubresourceStatus{} | ||||
| 	crd := &apiextv1beta1.CustomResourceDefinition{ | ||||
| 		ObjectMeta: metav1.ObjectMeta{ | ||||
| 			Name: name, | ||||
| 		}, | ||||
| 		Spec: apiextv1beta1.CustomResourceDefinitionSpec{ | ||||
| 			Group:   acidv1.SchemeGroupVersion.Group, | ||||
| 			Version: acidv1.SchemeGroupVersion.Version, | ||||
| 			Names: apiextv1beta1.CustomResourceDefinitionNames{ | ||||
| 				Plural:     plural, | ||||
| 				ShortNames: []string{short}, | ||||
| 				Kind:       kind, | ||||
| 			}, | ||||
| 			Scope: apiextv1beta1.NamespaceScoped, | ||||
| 			Subresources: &apiextv1beta1.CustomResourceSubresources{ | ||||
| 				Status: &subResourceStatus, | ||||
| 			}, | ||||
| 		}, | ||||
| 	} | ||||
| 
 | ||||
| func (c *Controller) createOperatorCRD(crd *apiextv1beta1.CustomResourceDefinition) error { | ||||
| 	if _, err := c.KubeClient.CustomResourceDefinitions().Create(crd); err != nil { | ||||
| 		if !k8sutil.ResourceAlreadyExists(err) { | ||||
| 			return fmt.Errorf("could not create customResourceDefinition: %v", err) | ||||
|  | @ -101,17 +81,11 @@ func (c *Controller) createOperatorCRD(name, kind, plural, short string) error { | |||
| } | ||||
| 
 | ||||
| func (c *Controller) createPostgresCRD() error { | ||||
| 	return c.createOperatorCRD(acidv1.PostgresCRDResouceName, | ||||
| 		acidv1.PostgresCRDResourceKind, | ||||
| 		acidv1.PostgresCRDResourcePlural, | ||||
| 		acidv1.PostgresCRDResourceShort) | ||||
| 	return c.createOperatorCRD(acidv1.PostgresCRD()) | ||||
| } | ||||
| 
 | ||||
| func (c *Controller) createConfigurationCRD() error { | ||||
| 	return c.createOperatorCRD(acidv1.OperatorConfigCRDResourceName, | ||||
| 		acidv1.OperatorConfigCRDResouceKind, | ||||
| 		acidv1.OperatorConfigCRDResourcePlural, | ||||
| 		acidv1.OperatorConfigCRDResourceShort) | ||||
| 	return c.createOperatorCRD(acidv1.ConfigurationCRD()) | ||||
| } | ||||
| 
 | ||||
| func readDecodedRole(s string) (*spec.PgUser, error) { | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue