76 lines
2.1 KiB
Go
76 lines
2.1 KiB
Go
package migrate
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/gogo/protobuf/proto"
|
|
"github.com/influxdata/influxdb/v2/tsdb/migrate/internal"
|
|
)
|
|
|
|
//go:generate protoc --gogo_out=. internal/meta.proto
|
|
|
|
// Data represents the top level collection of all metadata.
|
|
type Data struct {
|
|
Term uint64 // associated raft term
|
|
Index uint64 // associated raft index
|
|
ClusterID uint64
|
|
Databases []DatabaseInfo
|
|
|
|
MaxShardGroupID uint64
|
|
MaxShardID uint64
|
|
}
|
|
|
|
// unmarshal deserializes from a protobuf representation.
|
|
func (data *Data) unmarshal(pb *internal.Data) {
|
|
data.Databases = make([]DatabaseInfo, len(pb.GetDatabases()))
|
|
for i, x := range pb.GetDatabases() {
|
|
data.Databases[i].unmarshal(x)
|
|
}
|
|
}
|
|
|
|
// UnmarshalBinary decodes the object from a binary format.
|
|
func (data *Data) UnmarshalBinary(buf []byte) error {
|
|
var pb internal.Data
|
|
if err := proto.Unmarshal(buf, &pb); err != nil {
|
|
return err
|
|
}
|
|
data.unmarshal(&pb)
|
|
return nil
|
|
}
|
|
|
|
// DatabaseInfo represents information about a database in the system.
|
|
type DatabaseInfo struct {
|
|
Name string
|
|
DefaultRetentionPolicy string
|
|
RetentionPolicies []RetentionPolicyInfo
|
|
}
|
|
|
|
// unmarshal deserializes from a protobuf representation.
|
|
func (di *DatabaseInfo) unmarshal(pb *internal.DatabaseInfo) {
|
|
di.Name = pb.GetName()
|
|
di.DefaultRetentionPolicy = pb.GetDefaultRetentionPolicy()
|
|
|
|
if len(pb.GetRetentionPolicies()) > 0 {
|
|
di.RetentionPolicies = make([]RetentionPolicyInfo, len(pb.GetRetentionPolicies()))
|
|
for i, x := range pb.GetRetentionPolicies() {
|
|
di.RetentionPolicies[i].unmarshal(x)
|
|
}
|
|
}
|
|
}
|
|
|
|
// RetentionPolicyInfo represents metadata about a retention policy.
|
|
type RetentionPolicyInfo struct {
|
|
Name string
|
|
ReplicaN int
|
|
Duration time.Duration
|
|
ShardGroupDuration time.Duration
|
|
}
|
|
|
|
// unmarshal deserializes from a protobuf representation.
|
|
func (rpi *RetentionPolicyInfo) unmarshal(pb *internal.RetentionPolicyInfo) {
|
|
rpi.Name = pb.GetName()
|
|
rpi.ReplicaN = int(pb.GetReplicaN())
|
|
rpi.Duration = time.Duration(pb.GetDuration())
|
|
rpi.ShardGroupDuration = time.Duration(pb.GetShardGroupDuration())
|
|
}
|