158 lines
		
	
	
		
			7.3 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			158 lines
		
	
	
		
			7.3 KiB
		
	
	
	
		
			Go
		
	
	
	
| package config
 | |
| 
 | |
| import (
 | |
| 	"encoding/json"
 | |
| 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | |
| 
 | |
| 	"github.com/zalando-incubator/postgres-operator/pkg/spec"
 | |
| )
 | |
| 
 | |
| type OperatorConfiguration struct {
 | |
| 	metav1.TypeMeta   `json:",inline"`
 | |
| 	metav1.ObjectMeta `json:"metadata"`
 | |
| 
 | |
| 	Configuration OperatorConfigurationData `json:"configuration"`
 | |
| 	Error         error                     `json:"-"`
 | |
| }
 | |
| 
 | |
| type OperatorConfigurationList struct {
 | |
| 	metav1.TypeMeta `json:",inline"`
 | |
| 	metav1.ListMeta `json:"metadata"`
 | |
| 
 | |
| 	Items []OperatorConfiguration `json:"items"`
 | |
| }
 | |
| 
 | |
| type PostgresUsersConfiguration struct {
 | |
| 	SuperUsername       string `json:"super_username,omitempty"`
 | |
| 	ReplicationUsername string `json:"replication_username,omitempty"`
 | |
| }
 | |
| 
 | |
| type KubernetesMetaConfiguration struct {
 | |
| 	PodServiceAccountName string `json:"pod_service_account_name,omitempty"`
 | |
| 	// TODO: change it to the proper json
 | |
| 	PodServiceAccountDefinition   string              `json:"pod_service_account_definition,omitempty"`
 | |
| 	PodTerminateGracePeriod       spec.Duration       `json:"pod_terminate_grace_period,omitempty"`
 | |
| 	WatchedNamespace              string              `json:"watched_namespace,omitempty"`
 | |
| 	PDBNameFormat                 StringTemplate      `json:"pdb_name_format,omitempty"`
 | |
| 	SecretNameTemplate            StringTemplate      `json:"secret_name_template,omitempty"`
 | |
| 	OAuthTokenSecretName          spec.NamespacedName `json:"oauth_token_secret_name,omitempty"`
 | |
| 	InfrastructureRolesSecretName spec.NamespacedName `json:"infrastructure_roles_secret_name,omitempty"`
 | |
| 	PodRoleLabel                  string              `json:"pod_role_label,omitempty"`
 | |
| 	ClusterLabels                 map[string]string   `json:"cluster_labels,omitempty"`
 | |
| 	ClusterNameLabel              string              `json:"cluster_name_label,omitempty"`
 | |
| 	NodeReadinessLabel            map[string]string   `json:"node_readiness_label,omitempty"`
 | |
| 	// TODO: use a proper toleration structure?
 | |
| 	PodToleration map[string]string `json:"toleration,omitempty"`
 | |
| 	// TODO: use namespacedname
 | |
| 	PodEnvironmentConfigMap string `json:"pod_environment_configmap,omitempty"`
 | |
| }
 | |
| 
 | |
| type PostgresPodResourcesDefaults struct {
 | |
| 	DefaultCPURequest    string `json:"default_cpu_request,omitempty"`
 | |
| 	DefaultMemoryRequest string `json:"default_memory_request,omitempty"`
 | |
| 	DefaultCPULimit      string `json:"default_cpu_limit,omitempty"`
 | |
| 	DefaultMemoryLimit   string `json:"default_memory_limit,omitempty"`
 | |
| }
 | |
| 
 | |
| type OperatorTimeouts struct {
 | |
| 	ResourceCheckInterval  spec.Duration `json:"resource_check_interval,omitempty"`
 | |
| 	ResourceCheckTimeout   spec.Duration `json:"resource_check_timeout,omitempty"`
 | |
| 	PodLabelWaitTimeout    spec.Duration `json:"pod_label_wait_timeout,omitempty"`
 | |
| 	PodDeletionWaitTimeout spec.Duration `json:"pod_deletion_wait_timeout,omitempty"`
 | |
| 	ReadyWaitInterval      spec.Duration `json:"ready_wait_interval,omitempty"`
 | |
| 	ReadyWaitTimeout       spec.Duration `json:"ready_wait_timeout,omitempty"`
 | |
| }
 | |
| 
 | |
| type LoadBalancerConfiguration struct {
 | |
| 	DbHostedZone              string         `json:"db_hosted_zone,omitempty"`
 | |
| 	EnableMasterLoadBalancer  bool           `json:"enable_master_load_balancer,omitempty"`
 | |
| 	EnableReplicaLoadBalancer bool           `json:"enable_replica_load_balancer,omitempty"`
 | |
| 	MasterDNSNameFormat       StringTemplate `json:"master_dns_name_format,omitempty"`
 | |
| 	ReplicaDNSNameFormat      StringTemplate `json:"replica_dns_name_format,omitempty"`
 | |
| }
 | |
| 
 | |
| type AWSGCPConfiguration struct {
 | |
| 	WALES3Bucket string `json:"wal_s3_bucket,omitempty"`
 | |
| 	LogS3Bucket  string `json:"log_s3_bucket,omitempty"`
 | |
| 	KubeIAMRole  string `json:"kube_iam_role,omitempty"`
 | |
| }
 | |
| 
 | |
| type OperatorDebugConfiguration struct {
 | |
| 	DebugLogging   bool `json:"debug_logging,omitempty"`
 | |
| 	EnableDBAccess bool `json:"enable_database_access,omitempty"`
 | |
| }
 | |
| 
 | |
| type TeamsAPIConfiguration struct {
 | |
| 	EnableTeamsAPI           bool              `json:"enable_teams_api,omitempty"`
 | |
| 	TeamsAPIUrl              string            `json:"teams_api_url,omitempty"`
 | |
| 	TeamAPIRoleConfiguration map[string]string `json:"team_api_role_configuration,omitempty"`
 | |
| 	EnableTeamSuperuser      bool              `json:"enable_team_superuser,omitempty"`
 | |
| 	TeamAdminRole            string            `json:"team_admin_role,omitempty"`
 | |
| 	PamRoleName              string            `json:"pam_role_name,omitempty"`
 | |
| 	PamConfiguration         string            `json:"pam_configuration,omitempty"`
 | |
| 	ProtectedRoles           []string          `json:"protected_role_names,omitempty"`
 | |
| }
 | |
| 
 | |
| type LoggingRESTAPIConfiguration struct {
 | |
| 	APIPort               int `json:"api_port,omitempty"`
 | |
| 	RingLogLines          int `json:"ring_log_lines,omitempty"`
 | |
| 	ClusterHistoryEntries int `json:"cluster_history_entries,omitempty"`
 | |
| }
 | |
| 
 | |
| type ScalyrConfiguration struct {
 | |
| 	ScalyrAPIKey        string `json:"scalyr_api_key,omitempty"`
 | |
| 	ScalyrImage         string `json:"scalyr_image,omitempty"`
 | |
| 	ScalyrServerURL     string `json:"scalyr_server_url,omitempty"`
 | |
| 	ScalyrCPURequest    string `json:"scalyr_cpu_request,omitempty"`
 | |
| 	ScalyrMemoryRequest string `json:"scalyr_memory_request,omitempty"`
 | |
| 	ScalyrCPULimit      string `json:"scalyr_cpu_limit,omitempty"`
 | |
| 	ScalyrMemoryLimit   string `json:"scalyr_memory_limit,omitempty"`
 | |
| }
 | |
| 
 | |
| type OperatorConfigurationData struct {
 | |
| 	EtcdHost                   string                       `json:"etcd_host,omitempty"`
 | |
| 	DockerImage                string                       `json:"docker_image,omitempty"`
 | |
| 	Workers                    uint32                       `json:"workers,omitempty"`
 | |
| 	MinInstances               int32                        `json:"min_instances,omitempty"`
 | |
| 	MaxInstances               int32                        `json:"max_instances,omitempty"`
 | |
| 	ResyncPeriod               spec.Duration                `json:"resync_period,omitempty"`
 | |
| 	PostgresUsersConfiguration PostgresUsersConfiguration   `json:"users"`
 | |
| 	Kubernetes                 KubernetesMetaConfiguration  `json:"kubernetes"`
 | |
| 	PostgresPodResources       PostgresPodResourcesDefaults `json:"postgres_pod_resources"`
 | |
| 	Timeouts                   OperatorTimeouts             `json:"timeouts"`
 | |
| 	LoadBalancer               LoadBalancerConfiguration    `json:"load_balancer"`
 | |
| 	AWSGCP                     AWSGCPConfiguration          `json:"aws_or_gcp"`
 | |
| 	OperatorDebug              OperatorDebugConfiguration   `json:"debug"`
 | |
| 	TeamsAPI                   TeamsAPIConfiguration        `json:"teams_api"`
 | |
| 	LoggingRESTAPI             LoggingRESTAPIConfiguration  `json:"logging_rest_api"`
 | |
| 	Scalyr                     ScalyrConfiguration          `json:"scalyr"`
 | |
| }
 | |
| 
 | |
| type OperatorConfigurationUsers struct {
 | |
| 	SuperUserName            string            `json:"superuser_name,omitempty"`
 | |
| 	Replication              string            `json:"replication_user_name,omitempty"`
 | |
| 	ProtectedRoles           []string          `json:"protected_roles,omitempty"`
 | |
| 	TeamAPIRoleConfiguration map[string]string `json:"team_api_role_configuration,omitempty"`
 | |
| }
 | |
| 
 | |
| type OperatorConfigurationCopy OperatorConfiguration
 | |
| type OperatorConfigurationListCopy OperatorConfigurationList
 | |
| 
 | |
| func (opc *OperatorConfiguration) UnmarshalJSON(data []byte) error {
 | |
| 	var ref OperatorConfigurationCopy
 | |
| 	if err := json.Unmarshal(data, &ref); err != nil {
 | |
| 		return err
 | |
| 	}
 | |
| 	*opc = OperatorConfiguration(ref)
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func (opcl *OperatorConfigurationList) UnmarshalJSON(data []byte) error {
 | |
| 	var ref OperatorConfigurationListCopy
 | |
| 	if err := json.Unmarshal(data, &ref); err != nil {
 | |
| 		return nil
 | |
| 	}
 | |
| 	*opcl = OperatorConfigurationList(ref)
 | |
| 	return nil
 | |
| }
 |