@@ -54,6 +54,9 @@ const (
5454 EnvVarNamePgData = "PGDATA"
5555 EnvVarNameOfPostgresSuperUserPsw = "POSTGRES_PASSWORD"
5656 EnvVarNameOfPostgresReplicationUserPsw = "POSTGRES_REPLICATION_PASSWORD"
57+ NameLabelKey = "app.kubernetes.io/name"
58+ InstanceLabelKey = "app.kubernetes.io/instance"
59+ ReplicationRoleLabelKey = "app.kubegres.io/replication-role"
5760)
5861
5962func (r * KubegresContext ) GetServiceResourceName (isPrimary bool ) string {
@@ -63,13 +66,8 @@ func (r *KubegresContext) GetServiceResourceName(isPrimary bool) string {
6366 return r .Kubegres .Name + "-replica"
6467}
6568
66- func (r * KubegresContext ) GetStatefulSetResourceName (instanceIndex int32 ) string {
67- if r .HasNodeSets () && len (r .Kubegres .Spec .NodeSets ) >= int (instanceIndex ) {
68- nodeSetSpec := r .Kubegres .Spec .NodeSets [instanceIndex - 1 ]
69- return r .Kubegres .Name + "-" + nodeSetSpec .Name
70- } else {
71- return r .Kubegres .Name + "-" + strconv .Itoa (int (instanceIndex ))
72- }
69+ func (r * KubegresContext ) GetStatefulSetResourceName (instance string ) string {
70+ return r .Kubegres .Name + "-" + instance
7371}
7472
7573func (r * KubegresContext ) IsReservedVolumeName (volumeName string ) bool {
@@ -79,24 +77,37 @@ func (r *KubegresContext) IsReservedVolumeName(volumeName string) bool {
7977 strings .Contains (volumeName , "kube-api" )
8078}
8179
82- func (r * KubegresContext ) HasNodeSets () bool {
83- return r .Kubegres .Spec .NodeSets != nil
80+ func (r * KubegresContext ) ReplicasCount () int32 {
81+ if r .Kubegres .Spec .NodeSets == nil {
82+ return * r .Kubegres .Spec .Replicas
83+ }
84+ return int32 (len (r .Kubegres .Spec .NodeSets ))
8485}
8586
86- func (r * KubegresContext ) Replicas () * int32 {
87- if r .HasNodeSets () {
88- replicas := int32 (len (r .Kubegres .Spec .NodeSets ))
89- return & replicas
87+ func (r * KubegresContext ) GetNodeSetsFromSpec () []v1.KubegresNodeSet {
88+ if r .Kubegres .Spec .NodeSets == nil {
89+ nodeSets := make ([]v1.KubegresNodeSet , * r .Kubegres .Spec .Replicas )
90+ for i := int32 (0 ); i < * r .Kubegres .Spec .Replicas ; i += 1 {
91+ nodeSets [i ] = v1.KubegresNodeSet {
92+ Name : strconv .Itoa (int (i )),
93+ }
94+ }
95+ return nodeSets
9096 }
91- return r .Kubegres .Spec .Replicas
97+ return r .Kubegres .Spec .NodeSets
9298}
9399
94- func (r * KubegresContext ) GetInstanceIndexFromSpec (statefulSet apps.StatefulSet ) (int32 , error ) {
95- instanceIndexStr := statefulSet .Spec .Template .Labels ["index" ]
96- instanceIndex , err := strconv .ParseInt (instanceIndexStr , 10 , 32 )
97- if err != nil {
98- r .Log .ErrorEvent ("StatefulSetLoadingErr" , err , "Unable to convert StatefulSet's label 'index' with value: " + instanceIndexStr + " into an integer. The name of statefulSet with this label is " + statefulSet .Name + "." )
99- return 0 , err
100+ func (r * KubegresContext ) GetInstanceFromStatefulSet (statefulSet apps.StatefulSet ) string {
101+ return statefulSet .Labels [InstanceLabelKey ]
102+ }
103+
104+ func (r * KubegresContext ) GetNodeSetSpecFromInstance (instance string ) * v1.KubegresNodeSet {
105+ for _ , nodeSet := range r .Kubegres .Spec .NodeSets {
106+ if nodeSet .Name == instance {
107+ return & nodeSet
108+ }
109+ }
110+ return & v1.KubegresNodeSet {
111+ Name : instance ,
100112 }
101- return int32 (instanceIndex ), nil
102113}
0 commit comments