160 lines
		
	
	
		
			7.3 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			160 lines
		
	
	
		
			7.3 KiB
		
	
	
	
		
			Go
		
	
	
	
package config
 | 
						|
 | 
						|
import (
 | 
						|
	"encoding/json"
 | 
						|
	"time"
 | 
						|
 | 
						|
	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       time.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  time.Duration `json:"resource_check_interval,omitempty"`
 | 
						|
	ResourceCheckTimeout   time.Duration `json:"resource_check_timeout,omitempty"`
 | 
						|
	PodLabelWaitTimeout    time.Duration `json:"pod_label_wait_timeout,omitempty"`
 | 
						|
	PodDeletionWaitTimeout time.Duration `json:"pod_deletion_wait_timeout,omitempty"`
 | 
						|
	ReadyWaitInterval      time.Duration `json:"ready_wait_interval,omitempty"`
 | 
						|
	ReadyWaitTimeout       time.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               time.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
 | 
						|
}
 |