pkg/utils/utils.go (47 lines of code) (raw):
package utils
import (
"fmt"
seatav1alpha1 "github.com/apache/seata-k8s/api/v1alpha1"
"strconv"
"strings"
)
const (
SeataFinalizer = "cleanUpSeataPVC"
)
func ConcatRaftServerAddress(s *seatav1alpha1.SeataServer) string {
var addrBuilder strings.Builder
for i := int32(0); i < s.Spec.Replicas; i++ {
// Add governed service name to communicate to each other
addrBuilder.WriteString(fmt.Sprintf("%s-%d.%s:%d,", s.Name, i, s.Spec.ServiceName, s.Spec.Ports.RaftPort))
//addrBuilder.WriteString(fmt.Sprintf("%s-%d:%d,", s.Name, i, s.Spec.Ports.RaftPort))
}
addr := addrBuilder.String()
addr = addr[:len(addr)-1]
return addr
}
func ContainsString(slice []string, str string) bool {
for _, item := range slice {
if item == str {
return true
}
}
return false
}
func RemoveString(slice []string, str string) (result []string) {
for _, item := range slice {
if item == str {
continue
}
result = append(result, item)
}
return result
}
func IsPVCOrphan(pvcName string, replicas int32) bool {
index := strings.LastIndexAny(pvcName, "-")
if index == -1 {
return false
}
ordinal, err := strconv.Atoi(pvcName[index+1:])
if err != nil {
return false
}
return int32(ordinal) >= replicas
}