| | |
| | | import ( |
| | | "fmt" |
| | | "net" |
| | | "os" |
| | | "strconv" |
| | | "strings" |
| | | |
| | | //"github.com/apache/servicecomb-service-center/syncer/pkg/utils" |
| | | "github.com/hashicorp/memberlist" |
| | | "github.com/hashicorp/serf/cmd/serf/command/agent" |
| | | "github.com/hashicorp/serf/serf" |
| | | "basic.com/valib/serf.git/cmd/serf/command/agent" |
| | | "basic.com/valib/serf.git/serf" |
| | | ) |
| | | |
| | | const ( |
| | |
| | | return nil |
| | | } |
| | | |
| | | func isFileRightful(filePath string) bool { |
| | | if filePath != "" { |
| | | _, err := os.Stat(filePath) |
| | | if err != nil && os.IsNotExist(err) { |
| | | pos := strings.LastIndex(filePath, "/") |
| | | if pos != -1 { |
| | | filePath = filePath[0:pos] |
| | | } |
| | | |
| | | _, err = os.Stat(filePath) |
| | | if err == nil || !os.IsNotExist(err) { |
| | | return true |
| | | } else { |
| | | return false |
| | | } |
| | | } else { |
| | | return false |
| | | } |
| | | } |
| | | return false |
| | | } |
| | | |
| | | // convertToSerf convert Config to serf.Config |
| | | func (c *Config) convertToSerf(snapshotPath string) (*serf.Config, error) { |
| | | serfConf := serf.DefaultConfig() |
| | |
| | | serfConf.MemberlistConfig.BindPort = bindPort |
| | | serfConf.NodeName = c.NodeName |
| | | |
| | | serfConf.Tags = map[string]string{TagKeyRPCPort: strconv.Itoa(c.RPCPort)} |
| | | serfConf.Tags = map[string]string{ |
| | | TagKeyRPCPort: strconv.Itoa(c.RPCPort), |
| | | "role": "slave", |
| | | } |
| | | |
| | | if c.ClusterID != "" { |
| | | serfConf.Tags[tagKeyClusterID] = c.ClusterID |
| | |
| | | } |
| | | |
| | | c.SnapshotPath = SnapshotPathDefault |
| | | if snapshotPath != "" { |
| | | if isFileRightful(snapshotPath) { |
| | | c.SnapshotPath = snapshotPath |
| | | } |
| | | |