diff --git a/go.mod b/go.mod index c5664ad82591315d0e230e6cd3e186fc119b09c1..dc26617eeb385dc36590e1007946f6e9fa68da8a 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module gitee.com/openeuler/ha-api -go 1.13 +go 1.18 require ( github.com/beego/beego/v2 v2.0.1 @@ -9,4 +9,5 @@ require ( github.com/msteinert/pam v0.0.0-20201130170657-e61372126161 github.com/pkg/errors v0.9.1 github.com/spf13/viper v1.18.2 + github.com/stretchr/testify v1.8.4 ) diff --git a/utils/command.go b/utils/command.go index 2d0ac6e95e8bf1c218e6ca09df0abd7e58b21165..81f3505d8e28c658d569b0224b48440da6fe81c4 100644 --- a/utils/command.go +++ b/utils/command.go @@ -95,6 +95,7 @@ const ( CmdAddLinkForce = "pcs cluster link add %s --force" CmdAddLinksWithLinkNum = "pcs cluster link add %s options linknumber=%s --force" CmdHbStatus = "corosync-cfgtool -n" + CmdHbStatusS = "corosync-cfgtool -s" CmdUpdateLink = "pcs cluster link update %s %s" CmdUpdateLinkForce = CmdUpdateLink + " --force" ) diff --git a/utils/utils.go b/utils/utils.go index c499a09d417594742abfe875c8fbbd49f1bdfbb0..13fcfa21d33315b16e22fc5d1c33cb454578dd94 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -163,3 +163,31 @@ func Values(m map[string]string) []string { } return values } + +func RemoveByValue[T comparable](slice []T, value T) []T { + var newSlice []T + for _, v := range slice { + if v != value { + newSlice = append(newSlice, v) + } + } + return newSlice +} + +func Pop[T any](slice []T) (T, []T) { + if len(slice) == 0 { + var zero T + return zero, slice + } + last := slice[len(slice)-1] + return last, slice[:len(slice)-1] +} + +func PopFirst[T any](slice []T) (T, []T) { + if len(slice) == 0 { + var zero T + return zero, slice + } + first := slice[0] + return first, slice[1:] +}