diff --git a/internal/version/version.go b/internal/version/version.go index 1d8c99a93..5e52ef48a 100644 --- a/internal/version/version.go +++ b/internal/version/version.go @@ -51,20 +51,28 @@ type Info struct { Release bool `json:"release,omitempty"` } -// SemVer represents a semantic version +// SemVer represents a semantic version. // TODO: replace with semver.Version type SemVer struct { semver.Version } -// AllowedVersions provides the Minimum SemVer per Service +// OldSemVer represents a semantic version. +// NB: this will be deprecated in favor of `SemVer`; these structs marshal to JSON differently. +type OldSemVer struct { + Major int64 `json:"major"` + Minor int64 `json:"minor"` + Patch int64 `json:"patch"` +} + +// AllowedVersions provides the Minimum SemVer per Service. // TODO: I don't think this name is representative of what this struct now holds. type AllowedVersions struct { - Satellite SemVer - Storagenode SemVer - Uplink SemVer - Gateway SemVer - Identity SemVer + Satellite OldSemVer + Storagenode OldSemVer + Uplink OldSemVer + Gateway OldSemVer + Identity OldSemVer Processes Processes `json:"processes"` } @@ -136,6 +144,21 @@ func NewSemVer(v string) (SemVer, error) { }, nil } +// NewOldSemVer parses a given version and returns an instance of OldSemVer or +// an error if unable to parse the version. +func NewOldSemVer(v string) (OldSemVer, error) { + ver, err := NewSemVer(v) + if err != nil { + return OldSemVer{}, err + } + + return OldSemVer{ + Major: int64(ver.Major), + Minor: int64(ver.Minor), + Patch: int64(ver.Patch), + }, nil +} + // Compare compare two versions, return -1 if compared version is greater, 0 if equal and 1 if less. func (sem *SemVer) Compare(version SemVer) int { return sem.Version.Compare(version.Version) diff --git a/versioncontrol/peer.go b/versioncontrol/peer.go index fe79f35ec..9b6f7ca50 100644 --- a/versioncontrol/peer.go +++ b/versioncontrol/peer.go @@ -125,27 +125,27 @@ func New(log *zap.Logger, config *Config) (peer *Peer, err error) { } // Convert each Service's VersionConfig String to SemVer - peer.Versions.Satellite, err = version.NewSemVer(config.Versions.Satellite) + peer.Versions.Satellite, err = version.NewOldSemVer(config.Versions.Satellite) if err != nil { return &Peer{}, err } - peer.Versions.Storagenode, err = version.NewSemVer(config.Versions.Storagenode) + peer.Versions.Storagenode, err = version.NewOldSemVer(config.Versions.Storagenode) if err != nil { return &Peer{}, err } - peer.Versions.Uplink, err = version.NewSemVer(config.Versions.Uplink) + peer.Versions.Uplink, err = version.NewOldSemVer(config.Versions.Uplink) if err != nil { return &Peer{}, err } - peer.Versions.Gateway, err = version.NewSemVer(config.Versions.Gateway) + peer.Versions.Gateway, err = version.NewOldSemVer(config.Versions.Gateway) if err != nil { return &Peer{}, err } - peer.Versions.Identity, err = version.NewSemVer(config.Versions.Identity) + peer.Versions.Identity, err = version.NewOldSemVer(config.Versions.Identity) if err != nil { return &Peer{}, err }