Documentation
¶
Index ¶
- func FromBuild(modname string) (string, error)
- func ShouldUpdate(rollout Rollout, nodeID storj.NodeID) bool
- type AllowedVersions
- type Info
- func (info Info) IsZero() bool
- func (info Info) Log(logger func(msg string, fields ...zap.Field))
- func (info Info) Marshal() ([]byte, error)
- func (info Info) Proto() (*pb.NodeVersion, error)
- func (info *Info) Stats(cb func(key monkit.SeriesKey, field string, val float64))
- func (info Info) String() (out string)
- type Process
- type Processes
- type Rollout
- type RolloutBytes
- type SemVer
- type Version
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type AllowedVersions ¶
type AllowedVersions struct {
Processes Processes `json:"processes"`
}
AllowedVersions provides the Minimum SemVer per Service. TODO: I don't think this name is representative of what this struct now holds.
type Info ¶
type Info struct { Timestamp time.Time `json:"timestamp,omitempty"` CommitHash string `json:"commitHash,omitempty"` Version SemVer `json:"version"` Release bool `json:"release,omitempty"` Modified bool `json:"modified,omitempty"` // contains filtered or unexported fields }
Info is the versioning information for a binary.
func (Info) Proto ¶
func (info Info) Proto() (*pb.NodeVersion, error)
Proto converts an Info struct to a pb.NodeVersion TODO: shouldn't we just use pb.NodeVersion everywhere? gogoproto will let us make it match Info.
type Process ¶
type Process struct { Minimum Version `json:"minimum"` Suggested Version `json:"suggested"` Rollout Rollout `json:"rollout"` }
Process versions for specific binary.
type Processes ¶
type Processes struct { Satellite Process `json:"satellite"` Storagenode Process `json:"storagenode"` StoragenodeUpdater Process `json:"storagenode-updater"` Uplink Process `json:"uplink"` Gateway Process `json:"gateway"` Identity Process `json:"identity"` }
Processes describes versions for each binary. TODO: this name is inconsistent with the versioncontrol server pkg's analogue, `Versions`.
type Rollout ¶
type Rollout struct { Seed RolloutBytes `json:"seed"` Cursor RolloutBytes `json:"cursor"` }
Rollout represents the state of a version rollout.
type RolloutBytes ¶
type RolloutBytes [32]byte
RolloutBytes implements json un/marshalling using hex de/encoding.
func PercentageToCursor ¶
func PercentageToCursor(pct int) RolloutBytes
PercentageToCursor calculates the cursor value for the given percentage of nodes which should update. Deprecated: use PercentageToCursorF which is more precise.
func PercentageToCursorF ¶
func PercentageToCursorF(pct float64) RolloutBytes
PercentageToCursorF calculates the cursor value for the given floating point percentage.
func (RolloutBytes) MarshalJSON ¶
func (rb RolloutBytes) MarshalJSON() ([]byte, error)
MarshalJSON hex-encodes RolloutBytes and pre/appends JSON string literal quotes.
func (*RolloutBytes) UnmarshalJSON ¶
func (rb *RolloutBytes) UnmarshalJSON(b []byte) error
UnmarshalJSON drops the JSON string literal quotes and hex-decodes RolloutBytes .
type SemVer ¶
type SemVer struct {
semver.Version
}
SemVer represents a semantic version. TODO: replace with semver.Version.
func NewSemVer ¶
NewSemVer parses a given version and returns an instance of SemVer or an error if unable to parse the version.
func (*SemVer) Compare ¶
Compare compares two versions, return -1 if compared version is greater, 0 if equal and 1 if less.
type Version ¶
Version represents version and download URL for binary.
func ShouldUpdateVersion ¶
func ShouldUpdateVersion(currentVersion SemVer, nodeID storj.NodeID, requested Process) (updateVersion Version, reason string, err error)
ShouldUpdateVersion determines if, given a current version and data from the version server, if the current version should be updated. It returns the Version to update to or an empty Version.