mirror of
https://github.com/VictoriaMetrics/VictoriaMetrics.git
synced 2024-11-21 14:44:00 +00:00
d5c180e680
It is better developing vmctl tool in VictoriaMetrics repository, so it could be released together with the rest of vmutils tools such as vmalert, vmagent, vmbackup, vmrestore and vmauth.
48 lines
1.3 KiB
Go
48 lines
1.3 KiB
Go
package models
|
|
|
|
import (
|
|
"errors"
|
|
"strings"
|
|
)
|
|
|
|
// ConsistencyLevel represent a required replication criteria before a write can
|
|
// be returned as successful.
|
|
//
|
|
// The consistency level is handled in open-source InfluxDB but only applicable to clusters.
|
|
type ConsistencyLevel int
|
|
|
|
const (
|
|
// ConsistencyLevelAny allows for hinted handoff, potentially no write happened yet.
|
|
ConsistencyLevelAny ConsistencyLevel = iota
|
|
|
|
// ConsistencyLevelOne requires at least one data node acknowledged a write.
|
|
ConsistencyLevelOne
|
|
|
|
// ConsistencyLevelQuorum requires a quorum of data nodes to acknowledge a write.
|
|
ConsistencyLevelQuorum
|
|
|
|
// ConsistencyLevelAll requires all data nodes to acknowledge a write.
|
|
ConsistencyLevelAll
|
|
)
|
|
|
|
var (
|
|
// ErrInvalidConsistencyLevel is returned when parsing the string version
|
|
// of a consistency level.
|
|
ErrInvalidConsistencyLevel = errors.New("invalid consistency level")
|
|
)
|
|
|
|
// ParseConsistencyLevel converts a consistency level string to the corresponding ConsistencyLevel const.
|
|
func ParseConsistencyLevel(level string) (ConsistencyLevel, error) {
|
|
switch strings.ToLower(level) {
|
|
case "any":
|
|
return ConsistencyLevelAny, nil
|
|
case "one":
|
|
return ConsistencyLevelOne, nil
|
|
case "quorum":
|
|
return ConsistencyLevelQuorum, nil
|
|
case "all":
|
|
return ConsistencyLevelAll, nil
|
|
default:
|
|
return 0, ErrInvalidConsistencyLevel
|
|
}
|
|
}
|