[lxc-devel] [lxd/master] Instance: Copy snapshot expiry date
tomponline on Github
lxc-bot at linuxcontainers.org
Mon Jan 4 17:35:19 UTC 2021
A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 405 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20210104/d5a64938/attachment-0001.bin>
-------------- next part --------------
From e2c1d7e4ecda563f21b3c8136b3dec4afbe0a246 Mon Sep 17 00:00:00 2001
From: Thomas Parrott <thomas.parrott at canonical.com>
Date: Mon, 4 Jan 2021 16:11:17 +0000
Subject: [PATCH 1/9] lxd/instance: Copy snapshot expiry in
instanceCreateAsCopy
Signed-off-by: Thomas Parrott <thomas.parrott at canonical.com>
---
lxd/instance.go | 1 +
1 file changed, 1 insertion(+)
diff --git a/lxd/instance.go b/lxd/instance.go
index 7d14be5be8..2f85dbfd13 100644
--- a/lxd/instance.go
+++ b/lxd/instance.go
@@ -282,6 +282,7 @@ func instanceCreateAsCopy(s *state.State, args db.InstanceArgs, sourceInst insta
Name: newSnapName,
Profiles: srcSnap.Profiles(),
Project: args.Project,
+ ExpiryDate: srcSnap.ExpiryDate(),
}
// Create the snapshots.
From f1a6d46424699f8fb153bf3ab438cb823d0a658f Mon Sep 17 00:00:00 2001
From: Thomas Parrott <thomas.parrott at canonical.com>
Date: Mon, 4 Jan 2021 16:32:05 +0000
Subject: [PATCH 2/9] lxd/migration: Rebuilds protobuf using protoc v3.14 and
latest google.golang.org/protobuf/cmd/protoc-gen-go
Signed-off-by: Thomas Parrott <thomas.parrott at canonical.com>
---
lxd/migration/migrate.pb.go | 1770 ++++++++++++++++++++++-------------
1 file changed, 1103 insertions(+), 667 deletions(-)
diff --git a/lxd/migration/migrate.pb.go b/lxd/migration/migrate.pb.go
index 0e824a7be0..6aba7e59e2 100644
--- a/lxd/migration/migrate.pb.go
+++ b/lxd/migration/migrate.pb.go
@@ -1,24 +1,26 @@
+// silence the protobuf compiler warning by setting the default
+
// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.25.0-devel
+// protoc v3.14.0
// source: lxd/migration/migrate.proto
package migration
import (
- fmt "fmt"
- proto "github.com/golang/protobuf/proto"
- math "math"
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ reflect "reflect"
+ sync "sync"
)
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+const (
+ // Verify that this generated code is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+ // Verify that runtime/protoimpl is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
type MigrationFSType int32
@@ -30,21 +32,23 @@ const (
MigrationFSType_BLOCK_AND_RSYNC MigrationFSType = 4
)
-var MigrationFSType_name = map[int32]string{
- 0: "RSYNC",
- 1: "BTRFS",
- 2: "ZFS",
- 3: "RBD",
- 4: "BLOCK_AND_RSYNC",
-}
-
-var MigrationFSType_value = map[string]int32{
- "RSYNC": 0,
- "BTRFS": 1,
- "ZFS": 2,
- "RBD": 3,
- "BLOCK_AND_RSYNC": 4,
-}
+// Enum value maps for MigrationFSType.
+var (
+ MigrationFSType_name = map[int32]string{
+ 0: "RSYNC",
+ 1: "BTRFS",
+ 2: "ZFS",
+ 3: "RBD",
+ 4: "BLOCK_AND_RSYNC",
+ }
+ MigrationFSType_value = map[string]int32{
+ "RSYNC": 0,
+ "BTRFS": 1,
+ "ZFS": 2,
+ "RBD": 3,
+ "BLOCK_AND_RSYNC": 4,
+ }
+)
func (x MigrationFSType) Enum() *MigrationFSType {
p := new(MigrationFSType)
@@ -53,20 +57,34 @@ func (x MigrationFSType) Enum() *MigrationFSType {
}
func (x MigrationFSType) String() string {
- return proto.EnumName(MigrationFSType_name, int32(x))
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (MigrationFSType) Descriptor() protoreflect.EnumDescriptor {
+ return file_lxd_migration_migrate_proto_enumTypes[0].Descriptor()
+}
+
+func (MigrationFSType) Type() protoreflect.EnumType {
+ return &file_lxd_migration_migrate_proto_enumTypes[0]
}
-func (x *MigrationFSType) UnmarshalJSON(data []byte) error {
- value, err := proto.UnmarshalJSONEnum(MigrationFSType_value, data, "MigrationFSType")
+func (x MigrationFSType) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Do not use.
+func (x *MigrationFSType) UnmarshalJSON(b []byte) error {
+ num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
if err != nil {
return err
}
- *x = MigrationFSType(value)
+ *x = MigrationFSType(num)
return nil
}
+// Deprecated: Use MigrationFSType.Descriptor instead.
func (MigrationFSType) EnumDescriptor() ([]byte, []int) {
- return fileDescriptor_fe8772548dc4b615, []int{0}
+ return file_lxd_migration_migrate_proto_rawDescGZIP(), []int{0}
}
type CRIUType int32
@@ -77,17 +95,19 @@ const (
CRIUType_NONE CRIUType = 2
)
-var CRIUType_name = map[int32]string{
- 0: "CRIU_RSYNC",
- 1: "PHAUL",
- 2: "NONE",
-}
-
-var CRIUType_value = map[string]int32{
- "CRIU_RSYNC": 0,
- "PHAUL": 1,
- "NONE": 2,
-}
+// Enum value maps for CRIUType.
+var (
+ CRIUType_name = map[int32]string{
+ 0: "CRIU_RSYNC",
+ 1: "PHAUL",
+ 2: "NONE",
+ }
+ CRIUType_value = map[string]int32{
+ "CRIU_RSYNC": 0,
+ "PHAUL": 1,
+ "NONE": 2,
+ }
+)
func (x CRIUType) Enum() *CRIUType {
p := new(CRIUType)
@@ -96,974 +116,1390 @@ func (x CRIUType) Enum() *CRIUType {
}
func (x CRIUType) String() string {
- return proto.EnumName(CRIUType_name, int32(x))
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
-func (x *CRIUType) UnmarshalJSON(data []byte) error {
- value, err := proto.UnmarshalJSONEnum(CRIUType_value, data, "CRIUType")
+func (CRIUType) Descriptor() protoreflect.EnumDescriptor {
+ return file_lxd_migration_migrate_proto_enumTypes[1].Descriptor()
+}
+
+func (CRIUType) Type() protoreflect.EnumType {
+ return &file_lxd_migration_migrate_proto_enumTypes[1]
+}
+
+func (x CRIUType) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Do not use.
+func (x *CRIUType) UnmarshalJSON(b []byte) error {
+ num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
if err != nil {
return err
}
- *x = CRIUType(value)
+ *x = CRIUType(num)
return nil
}
+// Deprecated: Use CRIUType.Descriptor instead.
func (CRIUType) EnumDescriptor() ([]byte, []int) {
- return fileDescriptor_fe8772548dc4b615, []int{1}
+ return file_lxd_migration_migrate_proto_rawDescGZIP(), []int{1}
}
type IDMapType struct {
- Isuid *bool `protobuf:"varint,1,req,name=isuid" json:"isuid,omitempty"`
- Isgid *bool `protobuf:"varint,2,req,name=isgid" json:"isgid,omitempty"`
- Hostid *int32 `protobuf:"varint,3,req,name=hostid" json:"hostid,omitempty"`
- Nsid *int32 `protobuf:"varint,4,req,name=nsid" json:"nsid,omitempty"`
- Maprange *int32 `protobuf:"varint,5,req,name=maprange" json:"maprange,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
-}
-
-func (m *IDMapType) Reset() { *m = IDMapType{} }
-func (m *IDMapType) String() string { return proto.CompactTextString(m) }
-func (*IDMapType) ProtoMessage() {}
-func (*IDMapType) Descriptor() ([]byte, []int) {
- return fileDescriptor_fe8772548dc4b615, []int{0}
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Isuid *bool `protobuf:"varint,1,req,name=isuid" json:"isuid,omitempty"`
+ Isgid *bool `protobuf:"varint,2,req,name=isgid" json:"isgid,omitempty"`
+ Hostid *int32 `protobuf:"varint,3,req,name=hostid" json:"hostid,omitempty"`
+ Nsid *int32 `protobuf:"varint,4,req,name=nsid" json:"nsid,omitempty"`
+ Maprange *int32 `protobuf:"varint,5,req,name=maprange" json:"maprange,omitempty"`
+}
+
+func (x *IDMapType) Reset() {
+ *x = IDMapType{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_lxd_migration_migrate_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
}
-func (m *IDMapType) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_IDMapType.Unmarshal(m, b)
-}
-func (m *IDMapType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_IDMapType.Marshal(b, m, deterministic)
-}
-func (m *IDMapType) XXX_Merge(src proto.Message) {
- xxx_messageInfo_IDMapType.Merge(m, src)
-}
-func (m *IDMapType) XXX_Size() int {
- return xxx_messageInfo_IDMapType.Size(m)
+func (x *IDMapType) String() string {
+ return protoimpl.X.MessageStringOf(x)
}
-func (m *IDMapType) XXX_DiscardUnknown() {
- xxx_messageInfo_IDMapType.DiscardUnknown(m)
+
+func (*IDMapType) ProtoMessage() {}
+
+func (x *IDMapType) ProtoReflect() protoreflect.Message {
+ mi := &file_lxd_migration_migrate_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
}
-var xxx_messageInfo_IDMapType proto.InternalMessageInfo
+// Deprecated: Use IDMapType.ProtoReflect.Descriptor instead.
+func (*IDMapType) Descriptor() ([]byte, []int) {
+ return file_lxd_migration_migrate_proto_rawDescGZIP(), []int{0}
+}
-func (m *IDMapType) GetIsuid() bool {
- if m != nil && m.Isuid != nil {
- return *m.Isuid
+func (x *IDMapType) GetIsuid() bool {
+ if x != nil && x.Isuid != nil {
+ return *x.Isuid
}
return false
}
-func (m *IDMapType) GetIsgid() bool {
- if m != nil && m.Isgid != nil {
- return *m.Isgid
+func (x *IDMapType) GetIsgid() bool {
+ if x != nil && x.Isgid != nil {
+ return *x.Isgid
}
return false
}
-func (m *IDMapType) GetHostid() int32 {
- if m != nil && m.Hostid != nil {
- return *m.Hostid
+func (x *IDMapType) GetHostid() int32 {
+ if x != nil && x.Hostid != nil {
+ return *x.Hostid
}
return 0
}
-func (m *IDMapType) GetNsid() int32 {
- if m != nil && m.Nsid != nil {
- return *m.Nsid
+func (x *IDMapType) GetNsid() int32 {
+ if x != nil && x.Nsid != nil {
+ return *x.Nsid
}
return 0
}
-func (m *IDMapType) GetMaprange() int32 {
- if m != nil && m.Maprange != nil {
- return *m.Maprange
+func (x *IDMapType) GetMaprange() int32 {
+ if x != nil && x.Maprange != nil {
+ return *x.Maprange
}
return 0
}
type Config struct {
- Key *string `protobuf:"bytes,1,req,name=key" json:"key,omitempty"`
- Value *string `protobuf:"bytes,2,req,name=value" json:"value,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
-}
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
-func (m *Config) Reset() { *m = Config{} }
-func (m *Config) String() string { return proto.CompactTextString(m) }
-func (*Config) ProtoMessage() {}
-func (*Config) Descriptor() ([]byte, []int) {
- return fileDescriptor_fe8772548dc4b615, []int{1}
+ Key *string `protobuf:"bytes,1,req,name=key" json:"key,omitempty"`
+ Value *string `protobuf:"bytes,2,req,name=value" json:"value,omitempty"`
}
-func (m *Config) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_Config.Unmarshal(m, b)
-}
-func (m *Config) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_Config.Marshal(b, m, deterministic)
-}
-func (m *Config) XXX_Merge(src proto.Message) {
- xxx_messageInfo_Config.Merge(m, src)
+func (x *Config) Reset() {
+ *x = Config{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_lxd_migration_migrate_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
}
-func (m *Config) XXX_Size() int {
- return xxx_messageInfo_Config.Size(m)
+
+func (x *Config) String() string {
+ return protoimpl.X.MessageStringOf(x)
}
-func (m *Config) XXX_DiscardUnknown() {
- xxx_messageInfo_Config.DiscardUnknown(m)
+
+func (*Config) ProtoMessage() {}
+
+func (x *Config) ProtoReflect() protoreflect.Message {
+ mi := &file_lxd_migration_migrate_proto_msgTypes[1]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
}
-var xxx_messageInfo_Config proto.InternalMessageInfo
+// Deprecated: Use Config.ProtoReflect.Descriptor instead.
+func (*Config) Descriptor() ([]byte, []int) {
+ return file_lxd_migration_migrate_proto_rawDescGZIP(), []int{1}
+}
-func (m *Config) GetKey() string {
- if m != nil && m.Key != nil {
- return *m.Key
+func (x *Config) GetKey() string {
+ if x != nil && x.Key != nil {
+ return *x.Key
}
return ""
}
-func (m *Config) GetValue() string {
- if m != nil && m.Value != nil {
- return *m.Value
+func (x *Config) GetValue() string {
+ if x != nil && x.Value != nil {
+ return *x.Value
}
return ""
}
type Device struct {
- Name *string `protobuf:"bytes,1,req,name=name" json:"name,omitempty"`
- Config []*Config `protobuf:"bytes,2,rep,name=config" json:"config,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
-}
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
-func (m *Device) Reset() { *m = Device{} }
-func (m *Device) String() string { return proto.CompactTextString(m) }
-func (*Device) ProtoMessage() {}
-func (*Device) Descriptor() ([]byte, []int) {
- return fileDescriptor_fe8772548dc4b615, []int{2}
+ Name *string `protobuf:"bytes,1,req,name=name" json:"name,omitempty"`
+ Config []*Config `protobuf:"bytes,2,rep,name=config" json:"config,omitempty"`
}
-func (m *Device) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_Device.Unmarshal(m, b)
-}
-func (m *Device) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_Device.Marshal(b, m, deterministic)
-}
-func (m *Device) XXX_Merge(src proto.Message) {
- xxx_messageInfo_Device.Merge(m, src)
+func (x *Device) Reset() {
+ *x = Device{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_lxd_migration_migrate_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
}
-func (m *Device) XXX_Size() int {
- return xxx_messageInfo_Device.Size(m)
+
+func (x *Device) String() string {
+ return protoimpl.X.MessageStringOf(x)
}
-func (m *Device) XXX_DiscardUnknown() {
- xxx_messageInfo_Device.DiscardUnknown(m)
+
+func (*Device) ProtoMessage() {}
+
+func (x *Device) ProtoReflect() protoreflect.Message {
+ mi := &file_lxd_migration_migrate_proto_msgTypes[2]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
}
-var xxx_messageInfo_Device proto.InternalMessageInfo
+// Deprecated: Use Device.ProtoReflect.Descriptor instead.
+func (*Device) Descriptor() ([]byte, []int) {
+ return file_lxd_migration_migrate_proto_rawDescGZIP(), []int{2}
+}
-func (m *Device) GetName() string {
- if m != nil && m.Name != nil {
- return *m.Name
+func (x *Device) GetName() string {
+ if x != nil && x.Name != nil {
+ return *x.Name
}
return ""
}
-func (m *Device) GetConfig() []*Config {
- if m != nil {
- return m.Config
+func (x *Device) GetConfig() []*Config {
+ if x != nil {
+ return x.Config
}
return nil
}
type Snapshot struct {
- Name *string `protobuf:"bytes,1,req,name=name" json:"name,omitempty"`
- LocalConfig []*Config `protobuf:"bytes,2,rep,name=localConfig" json:"localConfig,omitempty"`
- Profiles []string `protobuf:"bytes,3,rep,name=profiles" json:"profiles,omitempty"`
- Ephemeral *bool `protobuf:"varint,4,req,name=ephemeral" json:"ephemeral,omitempty"`
- LocalDevices []*Device `protobuf:"bytes,5,rep,name=localDevices" json:"localDevices,omitempty"`
- Architecture *int32 `protobuf:"varint,6,req,name=architecture" json:"architecture,omitempty"`
- Stateful *bool `protobuf:"varint,7,req,name=stateful" json:"stateful,omitempty"`
- CreationDate *int64 `protobuf:"varint,8,opt,name=creation_date,json=creationDate" json:"creation_date,omitempty"`
- LastUsedDate *int64 `protobuf:"varint,9,opt,name=last_used_date,json=lastUsedDate" json:"last_used_date,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
-}
-
-func (m *Snapshot) Reset() { *m = Snapshot{} }
-func (m *Snapshot) String() string { return proto.CompactTextString(m) }
-func (*Snapshot) ProtoMessage() {}
-func (*Snapshot) Descriptor() ([]byte, []int) {
- return fileDescriptor_fe8772548dc4b615, []int{3}
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Name *string `protobuf:"bytes,1,req,name=name" json:"name,omitempty"`
+ LocalConfig []*Config `protobuf:"bytes,2,rep,name=localConfig" json:"localConfig,omitempty"`
+ Profiles []string `protobuf:"bytes,3,rep,name=profiles" json:"profiles,omitempty"`
+ Ephemeral *bool `protobuf:"varint,4,req,name=ephemeral" json:"ephemeral,omitempty"`
+ LocalDevices []*Device `protobuf:"bytes,5,rep,name=localDevices" json:"localDevices,omitempty"`
+ Architecture *int32 `protobuf:"varint,6,req,name=architecture" json:"architecture,omitempty"`
+ Stateful *bool `protobuf:"varint,7,req,name=stateful" json:"stateful,omitempty"`
+ CreationDate *int64 `protobuf:"varint,8,opt,name=creation_date,json=creationDate" json:"creation_date,omitempty"`
+ LastUsedDate *int64 `protobuf:"varint,9,opt,name=last_used_date,json=lastUsedDate" json:"last_used_date,omitempty"`
+}
+
+func (x *Snapshot) Reset() {
+ *x = Snapshot{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_lxd_migration_migrate_proto_msgTypes[3]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
}
-func (m *Snapshot) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_Snapshot.Unmarshal(m, b)
-}
-func (m *Snapshot) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_Snapshot.Marshal(b, m, deterministic)
-}
-func (m *Snapshot) XXX_Merge(src proto.Message) {
- xxx_messageInfo_Snapshot.Merge(m, src)
+func (x *Snapshot) String() string {
+ return protoimpl.X.MessageStringOf(x)
}
-func (m *Snapshot) XXX_Size() int {
- return xxx_messageInfo_Snapshot.Size(m)
-}
-func (m *Snapshot) XXX_DiscardUnknown() {
- xxx_messageInfo_Snapshot.DiscardUnknown(m)
+
+func (*Snapshot) ProtoMessage() {}
+
+func (x *Snapshot) ProtoReflect() protoreflect.Message {
+ mi := &file_lxd_migration_migrate_proto_msgTypes[3]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
}
-var xxx_messageInfo_Snapshot proto.InternalMessageInfo
+// Deprecated: Use Snapshot.ProtoReflect.Descriptor instead.
+func (*Snapshot) Descriptor() ([]byte, []int) {
+ return file_lxd_migration_migrate_proto_rawDescGZIP(), []int{3}
+}
-func (m *Snapshot) GetName() string {
- if m != nil && m.Name != nil {
- return *m.Name
+func (x *Snapshot) GetName() string {
+ if x != nil && x.Name != nil {
+ return *x.Name
}
return ""
}
-func (m *Snapshot) GetLocalConfig() []*Config {
- if m != nil {
- return m.LocalConfig
+func (x *Snapshot) GetLocalConfig() []*Config {
+ if x != nil {
+ return x.LocalConfig
}
return nil
}
-func (m *Snapshot) GetProfiles() []string {
- if m != nil {
- return m.Profiles
+func (x *Snapshot) GetProfiles() []string {
+ if x != nil {
+ return x.Profiles
}
return nil
}
-func (m *Snapshot) GetEphemeral() bool {
- if m != nil && m.Ephemeral != nil {
- return *m.Ephemeral
+func (x *Snapshot) GetEphemeral() bool {
+ if x != nil && x.Ephemeral != nil {
+ return *x.Ephemeral
}
return false
}
-func (m *Snapshot) GetLocalDevices() []*Device {
- if m != nil {
- return m.LocalDevices
+func (x *Snapshot) GetLocalDevices() []*Device {
+ if x != nil {
+ return x.LocalDevices
}
return nil
}
-func (m *Snapshot) GetArchitecture() int32 {
- if m != nil && m.Architecture != nil {
- return *m.Architecture
+func (x *Snapshot) GetArchitecture() int32 {
+ if x != nil && x.Architecture != nil {
+ return *x.Architecture
}
return 0
}
-func (m *Snapshot) GetStateful() bool {
- if m != nil && m.Stateful != nil {
- return *m.Stateful
+func (x *Snapshot) GetStateful() bool {
+ if x != nil && x.Stateful != nil {
+ return *x.Stateful
}
return false
}
-func (m *Snapshot) GetCreationDate() int64 {
- if m != nil && m.CreationDate != nil {
- return *m.CreationDate
+func (x *Snapshot) GetCreationDate() int64 {
+ if x != nil && x.CreationDate != nil {
+ return *x.CreationDate
}
return 0
}
-func (m *Snapshot) GetLastUsedDate() int64 {
- if m != nil && m.LastUsedDate != nil {
- return *m.LastUsedDate
+func (x *Snapshot) GetLastUsedDate() int64 {
+ if x != nil && x.LastUsedDate != nil {
+ return *x.LastUsedDate
}
return 0
}
type RsyncFeatures struct {
- Xattrs *bool `protobuf:"varint,1,opt,name=xattrs" json:"xattrs,omitempty"`
- Delete *bool `protobuf:"varint,2,opt,name=delete" json:"delete,omitempty"`
- Compress *bool `protobuf:"varint,3,opt,name=compress" json:"compress,omitempty"`
- Bidirectional *bool `protobuf:"varint,4,opt,name=bidirectional" json:"bidirectional,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
-}
-
-func (m *RsyncFeatures) Reset() { *m = RsyncFeatures{} }
-func (m *RsyncFeatures) String() string { return proto.CompactTextString(m) }
-func (*RsyncFeatures) ProtoMessage() {}
-func (*RsyncFeatures) Descriptor() ([]byte, []int) {
- return fileDescriptor_fe8772548dc4b615, []int{4}
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Xattrs *bool `protobuf:"varint,1,opt,name=xattrs" json:"xattrs,omitempty"`
+ Delete *bool `protobuf:"varint,2,opt,name=delete" json:"delete,omitempty"`
+ Compress *bool `protobuf:"varint,3,opt,name=compress" json:"compress,omitempty"`
+ Bidirectional *bool `protobuf:"varint,4,opt,name=bidirectional" json:"bidirectional,omitempty"`
+}
+
+func (x *RsyncFeatures) Reset() {
+ *x = RsyncFeatures{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_lxd_migration_migrate_proto_msgTypes[4]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
}
-func (m *RsyncFeatures) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_RsyncFeatures.Unmarshal(m, b)
-}
-func (m *RsyncFeatures) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_RsyncFeatures.Marshal(b, m, deterministic)
-}
-func (m *RsyncFeatures) XXX_Merge(src proto.Message) {
- xxx_messageInfo_RsyncFeatures.Merge(m, src)
-}
-func (m *RsyncFeatures) XXX_Size() int {
- return xxx_messageInfo_RsyncFeatures.Size(m)
+func (x *RsyncFeatures) String() string {
+ return protoimpl.X.MessageStringOf(x)
}
-func (m *RsyncFeatures) XXX_DiscardUnknown() {
- xxx_messageInfo_RsyncFeatures.DiscardUnknown(m)
+
+func (*RsyncFeatures) ProtoMessage() {}
+
+func (x *RsyncFeatures) ProtoReflect() protoreflect.Message {
+ mi := &file_lxd_migration_migrate_proto_msgTypes[4]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
}
-var xxx_messageInfo_RsyncFeatures proto.InternalMessageInfo
+// Deprecated: Use RsyncFeatures.ProtoReflect.Descriptor instead.
+func (*RsyncFeatures) Descriptor() ([]byte, []int) {
+ return file_lxd_migration_migrate_proto_rawDescGZIP(), []int{4}
+}
-func (m *RsyncFeatures) GetXattrs() bool {
- if m != nil && m.Xattrs != nil {
- return *m.Xattrs
+func (x *RsyncFeatures) GetXattrs() bool {
+ if x != nil && x.Xattrs != nil {
+ return *x.Xattrs
}
return false
}
-func (m *RsyncFeatures) GetDelete() bool {
- if m != nil && m.Delete != nil {
- return *m.Delete
+func (x *RsyncFeatures) GetDelete() bool {
+ if x != nil && x.Delete != nil {
+ return *x.Delete
}
return false
}
-func (m *RsyncFeatures) GetCompress() bool {
- if m != nil && m.Compress != nil {
- return *m.Compress
+func (x *RsyncFeatures) GetCompress() bool {
+ if x != nil && x.Compress != nil {
+ return *x.Compress
}
return false
}
-func (m *RsyncFeatures) GetBidirectional() bool {
- if m != nil && m.Bidirectional != nil {
- return *m.Bidirectional
+func (x *RsyncFeatures) GetBidirectional() bool {
+ if x != nil && x.Bidirectional != nil {
+ return *x.Bidirectional
}
return false
}
type ZfsFeatures struct {
- Compress *bool `protobuf:"varint,1,opt,name=compress" json:"compress,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
-}
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
-func (m *ZfsFeatures) Reset() { *m = ZfsFeatures{} }
-func (m *ZfsFeatures) String() string { return proto.CompactTextString(m) }
-func (*ZfsFeatures) ProtoMessage() {}
-func (*ZfsFeatures) Descriptor() ([]byte, []int) {
- return fileDescriptor_fe8772548dc4b615, []int{5}
+ Compress *bool `protobuf:"varint,1,opt,name=compress" json:"compress,omitempty"`
}
-func (m *ZfsFeatures) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ZfsFeatures.Unmarshal(m, b)
-}
-func (m *ZfsFeatures) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ZfsFeatures.Marshal(b, m, deterministic)
-}
-func (m *ZfsFeatures) XXX_Merge(src proto.Message) {
- xxx_messageInfo_ZfsFeatures.Merge(m, src)
+func (x *ZfsFeatures) Reset() {
+ *x = ZfsFeatures{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_lxd_migration_migrate_proto_msgTypes[5]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
}
-func (m *ZfsFeatures) XXX_Size() int {
- return xxx_messageInfo_ZfsFeatures.Size(m)
+
+func (x *ZfsFeatures) String() string {
+ return protoimpl.X.MessageStringOf(x)
}
-func (m *ZfsFeatures) XXX_DiscardUnknown() {
- xxx_messageInfo_ZfsFeatures.DiscardUnknown(m)
+
+func (*ZfsFeatures) ProtoMessage() {}
+
+func (x *ZfsFeatures) ProtoReflect() protoreflect.Message {
+ mi := &file_lxd_migration_migrate_proto_msgTypes[5]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
}
-var xxx_messageInfo_ZfsFeatures proto.InternalMessageInfo
+// Deprecated: Use ZfsFeatures.ProtoReflect.Descriptor instead.
+func (*ZfsFeatures) Descriptor() ([]byte, []int) {
+ return file_lxd_migration_migrate_proto_rawDescGZIP(), []int{5}
+}
-func (m *ZfsFeatures) GetCompress() bool {
- if m != nil && m.Compress != nil {
- return *m.Compress
+func (x *ZfsFeatures) GetCompress() bool {
+ if x != nil && x.Compress != nil {
+ return *x.Compress
}
return false
}
type BtrfsFeatures struct {
- MigrationHeader *bool `protobuf:"varint,1,opt,name=migration_header,json=migrationHeader" json:"migration_header,omitempty"`
- HeaderSubvolumes *bool `protobuf:"varint,2,opt,name=header_subvolumes,json=headerSubvolumes" json:"header_subvolumes,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
-}
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
-func (m *BtrfsFeatures) Reset() { *m = BtrfsFeatures{} }
-func (m *BtrfsFeatures) String() string { return proto.CompactTextString(m) }
-func (*BtrfsFeatures) ProtoMessage() {}
-func (*BtrfsFeatures) Descriptor() ([]byte, []int) {
- return fileDescriptor_fe8772548dc4b615, []int{6}
+ MigrationHeader *bool `protobuf:"varint,1,opt,name=migration_header,json=migrationHeader" json:"migration_header,omitempty"`
+ HeaderSubvolumes *bool `protobuf:"varint,2,opt,name=header_subvolumes,json=headerSubvolumes" json:"header_subvolumes,omitempty"`
}
-func (m *BtrfsFeatures) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_BtrfsFeatures.Unmarshal(m, b)
-}
-func (m *BtrfsFeatures) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_BtrfsFeatures.Marshal(b, m, deterministic)
-}
-func (m *BtrfsFeatures) XXX_Merge(src proto.Message) {
- xxx_messageInfo_BtrfsFeatures.Merge(m, src)
+func (x *BtrfsFeatures) Reset() {
+ *x = BtrfsFeatures{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_lxd_migration_migrate_proto_msgTypes[6]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
}
-func (m *BtrfsFeatures) XXX_Size() int {
- return xxx_messageInfo_BtrfsFeatures.Size(m)
+
+func (x *BtrfsFeatures) String() string {
+ return protoimpl.X.MessageStringOf(x)
}
-func (m *BtrfsFeatures) XXX_DiscardUnknown() {
- xxx_messageInfo_BtrfsFeatures.DiscardUnknown(m)
+
+func (*BtrfsFeatures) ProtoMessage() {}
+
+func (x *BtrfsFeatures) ProtoReflect() protoreflect.Message {
+ mi := &file_lxd_migration_migrate_proto_msgTypes[6]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
}
-var xxx_messageInfo_BtrfsFeatures proto.InternalMessageInfo
+// Deprecated: Use BtrfsFeatures.ProtoReflect.Descriptor instead.
+func (*BtrfsFeatures) Descriptor() ([]byte, []int) {
+ return file_lxd_migration_migrate_proto_rawDescGZIP(), []int{6}
+}
-func (m *BtrfsFeatures) GetMigrationHeader() bool {
- if m != nil && m.MigrationHeader != nil {
- return *m.MigrationHeader
+func (x *BtrfsFeatures) GetMigrationHeader() bool {
+ if x != nil && x.MigrationHeader != nil {
+ return *x.MigrationHeader
}
return false
}
-func (m *BtrfsFeatures) GetHeaderSubvolumes() bool {
- if m != nil && m.HeaderSubvolumes != nil {
- return *m.HeaderSubvolumes
+func (x *BtrfsFeatures) GetHeaderSubvolumes() bool {
+ if x != nil && x.HeaderSubvolumes != nil {
+ return *x.HeaderSubvolumes
}
return false
}
type MigrationHeader struct {
- Fs *MigrationFSType `protobuf:"varint,1,req,name=fs,enum=migration.MigrationFSType" json:"fs,omitempty"`
- Criu *CRIUType `protobuf:"varint,2,opt,name=criu,enum=migration.CRIUType" json:"criu,omitempty"`
- Idmap []*IDMapType `protobuf:"bytes,3,rep,name=idmap" json:"idmap,omitempty"`
- SnapshotNames []string `protobuf:"bytes,4,rep,name=snapshotNames" json:"snapshotNames,omitempty"`
- Snapshots []*Snapshot `protobuf:"bytes,5,rep,name=snapshots" json:"snapshots,omitempty"`
- Predump *bool `protobuf:"varint,7,opt,name=predump" json:"predump,omitempty"`
- RsyncFeatures *RsyncFeatures `protobuf:"bytes,8,opt,name=rsyncFeatures" json:"rsyncFeatures,omitempty"`
- Refresh *bool `protobuf:"varint,9,opt,name=refresh" json:"refresh,omitempty"`
- ZfsFeatures *ZfsFeatures `protobuf:"bytes,10,opt,name=zfsFeatures" json:"zfsFeatures,omitempty"`
- VolumeSize *int64 `protobuf:"varint,11,opt,name=volumeSize" json:"volumeSize,omitempty"`
- BtrfsFeatures *BtrfsFeatures `protobuf:"bytes,12,opt,name=btrfsFeatures" json:"btrfsFeatures,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
-}
-
-func (m *MigrationHeader) Reset() { *m = MigrationHeader{} }
-func (m *MigrationHeader) String() string { return proto.CompactTextString(m) }
-func (*MigrationHeader) ProtoMessage() {}
-func (*MigrationHeader) Descriptor() ([]byte, []int) {
- return fileDescriptor_fe8772548dc4b615, []int{7}
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Fs *MigrationFSType `protobuf:"varint,1,req,name=fs,enum=migration.MigrationFSType" json:"fs,omitempty"`
+ Criu *CRIUType `protobuf:"varint,2,opt,name=criu,enum=migration.CRIUType" json:"criu,omitempty"`
+ Idmap []*IDMapType `protobuf:"bytes,3,rep,name=idmap" json:"idmap,omitempty"`
+ SnapshotNames []string `protobuf:"bytes,4,rep,name=snapshotNames" json:"snapshotNames,omitempty"`
+ Snapshots []*Snapshot `protobuf:"bytes,5,rep,name=snapshots" json:"snapshots,omitempty"`
+ Predump *bool `protobuf:"varint,7,opt,name=predump" json:"predump,omitempty"`
+ RsyncFeatures *RsyncFeatures `protobuf:"bytes,8,opt,name=rsyncFeatures" json:"rsyncFeatures,omitempty"`
+ Refresh *bool `protobuf:"varint,9,opt,name=refresh" json:"refresh,omitempty"`
+ ZfsFeatures *ZfsFeatures `protobuf:"bytes,10,opt,name=zfsFeatures" json:"zfsFeatures,omitempty"`
+ VolumeSize *int64 `protobuf:"varint,11,opt,name=volumeSize" json:"volumeSize,omitempty"`
+ BtrfsFeatures *BtrfsFeatures `protobuf:"bytes,12,opt,name=btrfsFeatures" json:"btrfsFeatures,omitempty"`
+}
+
+func (x *MigrationHeader) Reset() {
+ *x = MigrationHeader{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_lxd_migration_migrate_proto_msgTypes[7]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
}
-func (m *MigrationHeader) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_MigrationHeader.Unmarshal(m, b)
-}
-func (m *MigrationHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_MigrationHeader.Marshal(b, m, deterministic)
-}
-func (m *MigrationHeader) XXX_Merge(src proto.Message) {
- xxx_messageInfo_MigrationHeader.Merge(m, src)
+func (x *MigrationHeader) String() string {
+ return protoimpl.X.MessageStringOf(x)
}
-func (m *MigrationHeader) XXX_Size() int {
- return xxx_messageInfo_MigrationHeader.Size(m)
-}
-func (m *MigrationHeader) XXX_DiscardUnknown() {
- xxx_messageInfo_MigrationHeader.DiscardUnknown(m)
+
+func (*MigrationHeader) ProtoMessage() {}
+
+func (x *MigrationHeader) ProtoReflect() protoreflect.Message {
+ mi := &file_lxd_migration_migrate_proto_msgTypes[7]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
}
-var xxx_messageInfo_MigrationHeader proto.InternalMessageInfo
+// Deprecated: Use MigrationHeader.ProtoReflect.Descriptor instead.
+func (*MigrationHeader) Descriptor() ([]byte, []int) {
+ return file_lxd_migration_migrate_proto_rawDescGZIP(), []int{7}
+}
-func (m *MigrationHeader) GetFs() MigrationFSType {
- if m != nil && m.Fs != nil {
- return *m.Fs
+func (x *MigrationHeader) GetFs() MigrationFSType {
+ if x != nil && x.Fs != nil {
+ return *x.Fs
}
return MigrationFSType_RSYNC
}
-func (m *MigrationHeader) GetCriu() CRIUType {
- if m != nil && m.Criu != nil {
- return *m.Criu
+func (x *MigrationHeader) GetCriu() CRIUType {
+ if x != nil && x.Criu != nil {
+ return *x.Criu
}
return CRIUType_CRIU_RSYNC
}
-func (m *MigrationHeader) GetIdmap() []*IDMapType {
- if m != nil {
- return m.Idmap
+func (x *MigrationHeader) GetIdmap() []*IDMapType {
+ if x != nil {
+ return x.Idmap
}
return nil
}
-func (m *MigrationHeader) GetSnapshotNames() []string {
- if m != nil {
- return m.SnapshotNames
+func (x *MigrationHeader) GetSnapshotNames() []string {
+ if x != nil {
+ return x.SnapshotNames
}
return nil
}
-func (m *MigrationHeader) GetSnapshots() []*Snapshot {
- if m != nil {
- return m.Snapshots
+func (x *MigrationHeader) GetSnapshots() []*Snapshot {
+ if x != nil {
+ return x.Snapshots
}
return nil
}
-func (m *MigrationHeader) GetPredump() bool {
- if m != nil && m.Predump != nil {
- return *m.Predump
+func (x *MigrationHeader) GetPredump() bool {
+ if x != nil && x.Predump != nil {
+ return *x.Predump
}
return false
}
-func (m *MigrationHeader) GetRsyncFeatures() *RsyncFeatures {
- if m != nil {
- return m.RsyncFeatures
+func (x *MigrationHeader) GetRsyncFeatures() *RsyncFeatures {
+ if x != nil {
+ return x.RsyncFeatures
}
return nil
}
-func (m *MigrationHeader) GetRefresh() bool {
- if m != nil && m.Refresh != nil {
- return *m.Refresh
+func (x *MigrationHeader) GetRefresh() bool {
+ if x != nil && x.Refresh != nil {
+ return *x.Refresh
}
return false
}
-func (m *MigrationHeader) GetZfsFeatures() *ZfsFeatures {
- if m != nil {
- return m.ZfsFeatures
+func (x *MigrationHeader) GetZfsFeatures() *ZfsFeatures {
+ if x != nil {
+ return x.ZfsFeatures
}
return nil
}
-func (m *MigrationHeader) GetVolumeSize() int64 {
- if m != nil && m.VolumeSize != nil {
- return *m.VolumeSize
+func (x *MigrationHeader) GetVolumeSize() int64 {
+ if x != nil && x.VolumeSize != nil {
+ return *x.VolumeSize
}
return 0
}
-func (m *MigrationHeader) GetBtrfsFeatures() *BtrfsFeatures {
- if m != nil {
- return m.BtrfsFeatures
+func (x *MigrationHeader) GetBtrfsFeatures() *BtrfsFeatures {
+ if x != nil {
+ return x.BtrfsFeatures
}
return nil
}
type MigrationControl struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
Success *bool `protobuf:"varint,1,req,name=success" json:"success,omitempty"`
// optional failure message if sending a failure
- Message *string `protobuf:"bytes,2,opt,name=message" json:"message,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
+ Message *string `protobuf:"bytes,2,opt,name=message" json:"message,omitempty"`
}
-func (m *MigrationControl) Reset() { *m = MigrationControl{} }
-func (m *MigrationControl) String() string { return proto.CompactTextString(m) }
-func (*MigrationControl) ProtoMessage() {}
-func (*MigrationControl) Descriptor() ([]byte, []int) {
- return fileDescriptor_fe8772548dc4b615, []int{8}
+func (x *MigrationControl) Reset() {
+ *x = MigrationControl{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_lxd_migration_migrate_proto_msgTypes[8]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
}
-func (m *MigrationControl) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_MigrationControl.Unmarshal(m, b)
-}
-func (m *MigrationControl) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_MigrationControl.Marshal(b, m, deterministic)
-}
-func (m *MigrationControl) XXX_Merge(src proto.Message) {
- xxx_messageInfo_MigrationControl.Merge(m, src)
+func (x *MigrationControl) String() string {
+ return protoimpl.X.MessageStringOf(x)
}
-func (m *MigrationControl) XXX_Size() int {
- return xxx_messageInfo_MigrationControl.Size(m)
-}
-func (m *MigrationControl) XXX_DiscardUnknown() {
- xxx_messageInfo_MigrationControl.DiscardUnknown(m)
+
+func (*MigrationControl) ProtoMessage() {}
+
+func (x *MigrationControl) ProtoReflect() protoreflect.Message {
+ mi := &file_lxd_migration_migrate_proto_msgTypes[8]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
}
-var xxx_messageInfo_MigrationControl proto.InternalMessageInfo
+// Deprecated: Use MigrationControl.ProtoReflect.Descriptor instead.
+func (*MigrationControl) Descriptor() ([]byte, []int) {
+ return file_lxd_migration_migrate_proto_rawDescGZIP(), []int{8}
+}
-func (m *MigrationControl) GetSuccess() bool {
- if m != nil && m.Success != nil {
- return *m.Success
+func (x *MigrationControl) GetSuccess() bool {
+ if x != nil && x.Success != nil {
+ return *x.Success
}
return false
}
-func (m *MigrationControl) GetMessage() string {
- if m != nil && m.Message != nil {
- return *m.Message
+func (x *MigrationControl) GetMessage() string {
+ if x != nil && x.Message != nil {
+ return *x.Message
}
return ""
}
type MigrationSync struct {
- FinalPreDump *bool `protobuf:"varint,1,req,name=finalPreDump" json:"finalPreDump,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
-}
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
-func (m *MigrationSync) Reset() { *m = MigrationSync{} }
-func (m *MigrationSync) String() string { return proto.CompactTextString(m) }
-func (*MigrationSync) ProtoMessage() {}
-func (*MigrationSync) Descriptor() ([]byte, []int) {
- return fileDescriptor_fe8772548dc4b615, []int{9}
+ FinalPreDump *bool `protobuf:"varint,1,req,name=finalPreDump" json:"finalPreDump,omitempty"`
}
-func (m *MigrationSync) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_MigrationSync.Unmarshal(m, b)
-}
-func (m *MigrationSync) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_MigrationSync.Marshal(b, m, deterministic)
-}
-func (m *MigrationSync) XXX_Merge(src proto.Message) {
- xxx_messageInfo_MigrationSync.Merge(m, src)
+func (x *MigrationSync) Reset() {
+ *x = MigrationSync{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_lxd_migration_migrate_proto_msgTypes[9]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
}
-func (m *MigrationSync) XXX_Size() int {
- return xxx_messageInfo_MigrationSync.Size(m)
+
+func (x *MigrationSync) String() string {
+ return protoimpl.X.MessageStringOf(x)
}
-func (m *MigrationSync) XXX_DiscardUnknown() {
- xxx_messageInfo_MigrationSync.DiscardUnknown(m)
+
+func (*MigrationSync) ProtoMessage() {}
+
+func (x *MigrationSync) ProtoReflect() protoreflect.Message {
+ mi := &file_lxd_migration_migrate_proto_msgTypes[9]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
}
-var xxx_messageInfo_MigrationSync proto.InternalMessageInfo
+// Deprecated: Use MigrationSync.ProtoReflect.Descriptor instead.
+func (*MigrationSync) Descriptor() ([]byte, []int) {
+ return file_lxd_migration_migrate_proto_rawDescGZIP(), []int{9}
+}
-func (m *MigrationSync) GetFinalPreDump() bool {
- if m != nil && m.FinalPreDump != nil {
- return *m.FinalPreDump
+func (x *MigrationSync) GetFinalPreDump() bool {
+ if x != nil && x.FinalPreDump != nil {
+ return *x.FinalPreDump
}
return false
}
// This one contains statistics about dump/restore process
type DumpStatsEntry struct {
- FreezingTime *uint32 `protobuf:"varint,1,req,name=freezing_time,json=freezingTime" json:"freezing_time,omitempty"`
- FrozenTime *uint32 `protobuf:"varint,2,req,name=frozen_time,json=frozenTime" json:"frozen_time,omitempty"`
- MemdumpTime *uint32 `protobuf:"varint,3,req,name=memdump_time,json=memdumpTime" json:"memdump_time,omitempty"`
- MemwriteTime *uint32 `protobuf:"varint,4,req,name=memwrite_time,json=memwriteTime" json:"memwrite_time,omitempty"`
- PagesScanned *uint64 `protobuf:"varint,5,req,name=pages_scanned,json=pagesScanned" json:"pages_scanned,omitempty"`
- PagesSkippedParent *uint64 `protobuf:"varint,6,req,name=pages_skipped_parent,json=pagesSkippedParent" json:"pages_skipped_parent,omitempty"`
- PagesWritten *uint64 `protobuf:"varint,7,req,name=pages_written,json=pagesWritten" json:"pages_written,omitempty"`
- IrmapResolve *uint32 `protobuf:"varint,8,opt,name=irmap_resolve,json=irmapResolve" json:"irmap_resolve,omitempty"`
- PagesLazy *uint64 `protobuf:"varint,9,req,name=pages_lazy,json=pagesLazy" json:"pages_lazy,omitempty"`
- PagePipes *uint64 `protobuf:"varint,10,opt,name=page_pipes,json=pagePipes" json:"page_pipes,omitempty"`
- PagePipeBufs *uint64 `protobuf:"varint,11,opt,name=page_pipe_bufs,json=pagePipeBufs" json:"page_pipe_bufs,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
-}
-
-func (m *DumpStatsEntry) Reset() { *m = DumpStatsEntry{} }
-func (m *DumpStatsEntry) String() string { return proto.CompactTextString(m) }
-func (*DumpStatsEntry) ProtoMessage() {}
-func (*DumpStatsEntry) Descriptor() ([]byte, []int) {
- return fileDescriptor_fe8772548dc4b615, []int{10}
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ FreezingTime *uint32 `protobuf:"varint,1,req,name=freezing_time,json=freezingTime" json:"freezing_time,omitempty"`
+ FrozenTime *uint32 `protobuf:"varint,2,req,name=frozen_time,json=frozenTime" json:"frozen_time,omitempty"`
+ MemdumpTime *uint32 `protobuf:"varint,3,req,name=memdump_time,json=memdumpTime" json:"memdump_time,omitempty"`
+ MemwriteTime *uint32 `protobuf:"varint,4,req,name=memwrite_time,json=memwriteTime" json:"memwrite_time,omitempty"`
+ PagesScanned *uint64 `protobuf:"varint,5,req,name=pages_scanned,json=pagesScanned" json:"pages_scanned,omitempty"`
+ PagesSkippedParent *uint64 `protobuf:"varint,6,req,name=pages_skipped_parent,json=pagesSkippedParent" json:"pages_skipped_parent,omitempty"`
+ PagesWritten *uint64 `protobuf:"varint,7,req,name=pages_written,json=pagesWritten" json:"pages_written,omitempty"`
+ IrmapResolve *uint32 `protobuf:"varint,8,opt,name=irmap_resolve,json=irmapResolve" json:"irmap_resolve,omitempty"`
+ PagesLazy *uint64 `protobuf:"varint,9,req,name=pages_lazy,json=pagesLazy" json:"pages_lazy,omitempty"`
+ PagePipes *uint64 `protobuf:"varint,10,opt,name=page_pipes,json=pagePipes" json:"page_pipes,omitempty"`
+ PagePipeBufs *uint64 `protobuf:"varint,11,opt,name=page_pipe_bufs,json=pagePipeBufs" json:"page_pipe_bufs,omitempty"`
+}
+
+func (x *DumpStatsEntry) Reset() {
+ *x = DumpStatsEntry{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_lxd_migration_migrate_proto_msgTypes[10]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
}
-func (m *DumpStatsEntry) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_DumpStatsEntry.Unmarshal(m, b)
-}
-func (m *DumpStatsEntry) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_DumpStatsEntry.Marshal(b, m, deterministic)
-}
-func (m *DumpStatsEntry) XXX_Merge(src proto.Message) {
- xxx_messageInfo_DumpStatsEntry.Merge(m, src)
+func (x *DumpStatsEntry) String() string {
+ return protoimpl.X.MessageStringOf(x)
}
-func (m *DumpStatsEntry) XXX_Size() int {
- return xxx_messageInfo_DumpStatsEntry.Size(m)
-}
-func (m *DumpStatsEntry) XXX_DiscardUnknown() {
- xxx_messageInfo_DumpStatsEntry.DiscardUnknown(m)
+
+func (*DumpStatsEntry) ProtoMessage() {}
+
+func (x *DumpStatsEntry) ProtoReflect() protoreflect.Message {
+ mi := &file_lxd_migration_migrate_proto_msgTypes[10]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
}
-var xxx_messageInfo_DumpStatsEntry proto.InternalMessageInfo
+// Deprecated: Use DumpStatsEntry.ProtoReflect.Descriptor instead.
+func (*DumpStatsEntry) Descriptor() ([]byte, []int) {
+ return file_lxd_migration_migrate_proto_rawDescGZIP(), []int{10}
+}
-func (m *DumpStatsEntry) GetFreezingTime() uint32 {
- if m != nil && m.FreezingTime != nil {
- return *m.FreezingTime
+func (x *DumpStatsEntry) GetFreezingTime() uint32 {
+ if x != nil && x.FreezingTime != nil {
+ return *x.FreezingTime
}
return 0
}
-func (m *DumpStatsEntry) GetFrozenTime() uint32 {
- if m != nil && m.FrozenTime != nil {
- return *m.FrozenTime
+func (x *DumpStatsEntry) GetFrozenTime() uint32 {
+ if x != nil && x.FrozenTime != nil {
+ return *x.FrozenTime
}
return 0
}
-func (m *DumpStatsEntry) GetMemdumpTime() uint32 {
- if m != nil && m.MemdumpTime != nil {
- return *m.MemdumpTime
+func (x *DumpStatsEntry) GetMemdumpTime() uint32 {
+ if x != nil && x.MemdumpTime != nil {
+ return *x.MemdumpTime
}
return 0
}
-func (m *DumpStatsEntry) GetMemwriteTime() uint32 {
- if m != nil && m.MemwriteTime != nil {
- return *m.MemwriteTime
+func (x *DumpStatsEntry) GetMemwriteTime() uint32 {
+ if x != nil && x.MemwriteTime != nil {
+ return *x.MemwriteTime
}
return 0
}
-func (m *DumpStatsEntry) GetPagesScanned() uint64 {
- if m != nil && m.PagesScanned != nil {
- return *m.PagesScanned
+func (x *DumpStatsEntry) GetPagesScanned() uint64 {
+ if x != nil && x.PagesScanned != nil {
+ return *x.PagesScanned
}
return 0
}
-func (m *DumpStatsEntry) GetPagesSkippedParent() uint64 {
- if m != nil && m.PagesSkippedParent != nil {
- return *m.PagesSkippedParent
+func (x *DumpStatsEntry) GetPagesSkippedParent() uint64 {
+ if x != nil && x.PagesSkippedParent != nil {
+ return *x.PagesSkippedParent
}
return 0
}
-func (m *DumpStatsEntry) GetPagesWritten() uint64 {
- if m != nil && m.PagesWritten != nil {
- return *m.PagesWritten
+func (x *DumpStatsEntry) GetPagesWritten() uint64 {
+ if x != nil && x.PagesWritten != nil {
+ return *x.PagesWritten
}
return 0
}
-func (m *DumpStatsEntry) GetIrmapResolve() uint32 {
- if m != nil && m.IrmapResolve != nil {
- return *m.IrmapResolve
+func (x *DumpStatsEntry) GetIrmapResolve() uint32 {
+ if x != nil && x.IrmapResolve != nil {
+ return *x.IrmapResolve
}
return 0
}
-func (m *DumpStatsEntry) GetPagesLazy() uint64 {
- if m != nil && m.PagesLazy != nil {
- return *m.PagesLazy
+func (x *DumpStatsEntry) GetPagesLazy() uint64 {
+ if x != nil && x.PagesLazy != nil {
+ return *x.PagesLazy
}
return 0
}
-func (m *DumpStatsEntry) GetPagePipes() uint64 {
- if m != nil && m.PagePipes != nil {
- return *m.PagePipes
+func (x *DumpStatsEntry) GetPagePipes() uint64 {
+ if x != nil && x.PagePipes != nil {
+ return *x.PagePipes
}
return 0
}
-func (m *DumpStatsEntry) GetPagePipeBufs() uint64 {
- if m != nil && m.PagePipeBufs != nil {
- return *m.PagePipeBufs
+func (x *DumpStatsEntry) GetPagePipeBufs() uint64 {
+ if x != nil && x.PagePipeBufs != nil {
+ return *x.PagePipeBufs
}
return 0
}
type RestoreStatsEntry struct {
- PagesCompared *uint64 `protobuf:"varint,1,req,name=pages_compared,json=pagesCompared" json:"pages_compared,omitempty"`
- PagesSkippedCow *uint64 `protobuf:"varint,2,req,name=pages_skipped_cow,json=pagesSkippedCow" json:"pages_skipped_cow,omitempty"`
- ForkingTime *uint32 `protobuf:"varint,3,req,name=forking_time,json=forkingTime" json:"forking_time,omitempty"`
- RestoreTime *uint32 `protobuf:"varint,4,req,name=restore_time,json=restoreTime" json:"restore_time,omitempty"`
- PagesRestored *uint64 `protobuf:"varint,5,opt,name=pages_restored,json=pagesRestored" json:"pages_restored,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
-}
-
-func (m *RestoreStatsEntry) Reset() { *m = RestoreStatsEntry{} }
-func (m *RestoreStatsEntry) String() string { return proto.CompactTextString(m) }
-func (*RestoreStatsEntry) ProtoMessage() {}
-func (*RestoreStatsEntry) Descriptor() ([]byte, []int) {
- return fileDescriptor_fe8772548dc4b615, []int{11}
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ PagesCompared *uint64 `protobuf:"varint,1,req,name=pages_compared,json=pagesCompared" json:"pages_compared,omitempty"`
+ PagesSkippedCow *uint64 `protobuf:"varint,2,req,name=pages_skipped_cow,json=pagesSkippedCow" json:"pages_skipped_cow,omitempty"`
+ ForkingTime *uint32 `protobuf:"varint,3,req,name=forking_time,json=forkingTime" json:"forking_time,omitempty"`
+ RestoreTime *uint32 `protobuf:"varint,4,req,name=restore_time,json=restoreTime" json:"restore_time,omitempty"`
+ PagesRestored *uint64 `protobuf:"varint,5,opt,name=pages_restored,json=pagesRestored" json:"pages_restored,omitempty"`
+}
+
+func (x *RestoreStatsEntry) Reset() {
+ *x = RestoreStatsEntry{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_lxd_migration_migrate_proto_msgTypes[11]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
}
-func (m *RestoreStatsEntry) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_RestoreStatsEntry.Unmarshal(m, b)
-}
-func (m *RestoreStatsEntry) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_RestoreStatsEntry.Marshal(b, m, deterministic)
-}
-func (m *RestoreStatsEntry) XXX_Merge(src proto.Message) {
- xxx_messageInfo_RestoreStatsEntry.Merge(m, src)
+func (x *RestoreStatsEntry) String() string {
+ return protoimpl.X.MessageStringOf(x)
}
-func (m *RestoreStatsEntry) XXX_Size() int {
- return xxx_messageInfo_RestoreStatsEntry.Size(m)
-}
-func (m *RestoreStatsEntry) XXX_DiscardUnknown() {
- xxx_messageInfo_RestoreStatsEntry.DiscardUnknown(m)
+
+func (*RestoreStatsEntry) ProtoMessage() {}
+
+func (x *RestoreStatsEntry) ProtoReflect() protoreflect.Message {
+ mi := &file_lxd_migration_migrate_proto_msgTypes[11]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
}
-var xxx_messageInfo_RestoreStatsEntry proto.InternalMessageInfo
+// Deprecated: Use RestoreStatsEntry.ProtoReflect.Descriptor instead.
+func (*RestoreStatsEntry) Descriptor() ([]byte, []int) {
+ return file_lxd_migration_migrate_proto_rawDescGZIP(), []int{11}
+}
-func (m *RestoreStatsEntry) GetPagesCompared() uint64 {
- if m != nil && m.PagesCompared != nil {
- return *m.PagesCompared
+func (x *RestoreStatsEntry) GetPagesCompared() uint64 {
+ if x != nil && x.PagesCompared != nil {
+ return *x.PagesCompared
}
return 0
}
-func (m *RestoreStatsEntry) GetPagesSkippedCow() uint64 {
- if m != nil && m.PagesSkippedCow != nil {
- return *m.PagesSkippedCow
+func (x *RestoreStatsEntry) GetPagesSkippedCow() uint64 {
+ if x != nil && x.PagesSkippedCow != nil {
+ return *x.PagesSkippedCow
}
return 0
}
-func (m *RestoreStatsEntry) GetForkingTime() uint32 {
- if m != nil && m.ForkingTime != nil {
- return *m.ForkingTime
+func (x *RestoreStatsEntry) GetForkingTime() uint32 {
+ if x != nil && x.ForkingTime != nil {
+ return *x.ForkingTime
}
return 0
}
-func (m *RestoreStatsEntry) GetRestoreTime() uint32 {
- if m != nil && m.RestoreTime != nil {
- return *m.RestoreTime
+func (x *RestoreStatsEntry) GetRestoreTime() uint32 {
+ if x != nil && x.RestoreTime != nil {
+ return *x.RestoreTime
}
return 0
}
-func (m *RestoreStatsEntry) GetPagesRestored() uint64 {
- if m != nil && m.PagesRestored != nil {
- return *m.PagesRestored
+func (x *RestoreStatsEntry) GetPagesRestored() uint64 {
+ if x != nil && x.PagesRestored != nil {
+ return *x.PagesRestored
}
return 0
}
type StatsEntry struct {
- Dump *DumpStatsEntry `protobuf:"bytes,1,opt,name=dump" json:"dump,omitempty"`
- Restore *RestoreStatsEntry `protobuf:"bytes,2,opt,name=restore" json:"restore,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
-}
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
-func (m *StatsEntry) Reset() { *m = StatsEntry{} }
-func (m *StatsEntry) String() string { return proto.CompactTextString(m) }
-func (*StatsEntry) ProtoMessage() {}
-func (*StatsEntry) Descriptor() ([]byte, []int) {
- return fileDescriptor_fe8772548dc4b615, []int{12}
+ Dump *DumpStatsEntry `protobuf:"bytes,1,opt,name=dump" json:"dump,omitempty"`
+ Restore *RestoreStatsEntry `protobuf:"bytes,2,opt,name=restore" json:"restore,omitempty"`
}
-func (m *StatsEntry) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_StatsEntry.Unmarshal(m, b)
-}
-func (m *StatsEntry) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_StatsEntry.Marshal(b, m, deterministic)
-}
-func (m *StatsEntry) XXX_Merge(src proto.Message) {
- xxx_messageInfo_StatsEntry.Merge(m, src)
+func (x *StatsEntry) Reset() {
+ *x = StatsEntry{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_lxd_migration_migrate_proto_msgTypes[12]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
}
-func (m *StatsEntry) XXX_Size() int {
- return xxx_messageInfo_StatsEntry.Size(m)
+
+func (x *StatsEntry) String() string {
+ return protoimpl.X.MessageStringOf(x)
}
-func (m *StatsEntry) XXX_DiscardUnknown() {
- xxx_messageInfo_StatsEntry.DiscardUnknown(m)
+
+func (*StatsEntry) ProtoMessage() {}
+
+func (x *StatsEntry) ProtoReflect() protoreflect.Message {
+ mi := &file_lxd_migration_migrate_proto_msgTypes[12]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
}
-var xxx_messageInfo_StatsEntry proto.InternalMessageInfo
+// Deprecated: Use StatsEntry.ProtoReflect.Descriptor instead.
+func (*StatsEntry) Descriptor() ([]byte, []int) {
+ return file_lxd_migration_migrate_proto_rawDescGZIP(), []int{12}
+}
-func (m *StatsEntry) GetDump() *DumpStatsEntry {
- if m != nil {
- return m.Dump
+func (x *StatsEntry) GetDump() *DumpStatsEntry {
+ if x != nil {
+ return x.Dump
}
return nil
}
-func (m *StatsEntry) GetRestore() *RestoreStatsEntry {
- if m != nil {
- return m.Restore
+func (x *StatsEntry) GetRestore() *RestoreStatsEntry {
+ if x != nil {
+ return x.Restore
}
return nil
}
-func init() {
- proto.RegisterEnum("migration.MigrationFSType", MigrationFSType_name, MigrationFSType_value)
- proto.RegisterEnum("migration.CRIUType", CRIUType_name, CRIUType_value)
- proto.RegisterType((*IDMapType)(nil), "migration.IDMapType")
- proto.RegisterType((*Config)(nil), "migration.Config")
- proto.RegisterType((*Device)(nil), "migration.Device")
- proto.RegisterType((*Snapshot)(nil), "migration.Snapshot")
- proto.RegisterType((*RsyncFeatures)(nil), "migration.rsyncFeatures")
- proto.RegisterType((*ZfsFeatures)(nil), "migration.zfsFeatures")
- proto.RegisterType((*BtrfsFeatures)(nil), "migration.btrfsFeatures")
- proto.RegisterType((*MigrationHeader)(nil), "migration.MigrationHeader")
- proto.RegisterType((*MigrationControl)(nil), "migration.MigrationControl")
- proto.RegisterType((*MigrationSync)(nil), "migration.MigrationSync")
- proto.RegisterType((*DumpStatsEntry)(nil), "migration.dump_stats_entry")
- proto.RegisterType((*RestoreStatsEntry)(nil), "migration.restore_stats_entry")
- proto.RegisterType((*StatsEntry)(nil), "migration.stats_entry")
-}
-
-func init() { proto.RegisterFile("lxd/migration/migrate.proto", fileDescriptor_fe8772548dc4b615) }
-
-var fileDescriptor_fe8772548dc4b615 = []byte{
- // 1128 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x55, 0xdd, 0x8e, 0xd3, 0x46,
- 0x14, 0x6e, 0x12, 0x67, 0x37, 0x3e, 0x49, 0x76, 0xc3, 0x80, 0x90, 0x05, 0x2d, 0x4d, 0x0d, 0x55,
- 0xc3, 0x56, 0x02, 0x1a, 0x54, 0x89, 0xab, 0x4a, 0x6c, 0xd2, 0x2d, 0xa8, 0x10, 0x56, 0x13, 0x50,
- 0xd5, 0xde, 0x58, 0xb3, 0xf6, 0x71, 0x32, 0xc2, 0x7f, 0x9a, 0xb1, 0x17, 0x92, 0x9b, 0xaa, 0x0f,
- 0xd3, 0xe7, 0xe9, 0x55, 0x1f, 0xa6, 0x77, 0xd5, 0xcc, 0xd8, 0xc6, 0xde, 0xad, 0xd4, 0xbb, 0x39,
- 0xdf, 0xf9, 0xfc, 0x9d, 0x33, 0xe7, 0x67, 0x0c, 0x77, 0xa3, 0x8f, 0xc1, 0xe3, 0x98, 0x6f, 0x04,
- 0xcb, 0x79, 0x9a, 0x94, 0x27, 0x7c, 0x94, 0x89, 0x34, 0x4f, 0x89, 0x5d, 0x3b, 0xdc, 0xdf, 0xc1,
- 0x7e, 0xb9, 0x7c, 0xcd, 0xb2, 0xb7, 0xbb, 0x0c, 0xc9, 0x2d, 0xe8, 0x73, 0x59, 0xf0, 0xc0, 0xe9,
- 0x4c, 0xbb, 0xb3, 0x01, 0x35, 0x86, 0x41, 0x37, 0x3c, 0x70, 0xba, 0x15, 0xba, 0xe1, 0x01, 0xb9,
- 0x0d, 0x07, 0xdb, 0x54, 0xe6, 0x3c, 0x70, 0x7a, 0xd3, 0xee, 0xac, 0x4f, 0x4b, 0x8b, 0x10, 0xb0,
- 0x12, 0xc9, 0x03, 0xc7, 0xd2, 0xa8, 0x3e, 0x93, 0x3b, 0x30, 0x88, 0x59, 0x26, 0x58, 0xb2, 0x41,
- 0xa7, 0xaf, 0xf1, 0xda, 0x76, 0x9f, 0xc0, 0xc1, 0x22, 0x4d, 0x42, 0xbe, 0x21, 0x13, 0xe8, 0xbd,
- 0xc7, 0x9d, 0x8e, 0x6d, 0x53, 0x75, 0x54, 0x91, 0x2f, 0x59, 0x54, 0xa0, 0x8e, 0x6c, 0x53, 0x63,
- 0xb8, 0x3f, 0xc1, 0xc1, 0x12, 0x2f, 0xb9, 0x8f, 0x3a, 0x16, 0x8b, 0xb1, 0xfc, 0x44, 0x9f, 0xc9,
- 0x43, 0x38, 0xf0, 0xb5, 0x9e, 0xd3, 0x9d, 0xf6, 0x66, 0xc3, 0xf9, 0x8d, 0x47, 0xf5, 0x65, 0x1f,
- 0x99, 0x40, 0xb4, 0x24, 0xb8, 0x7f, 0x75, 0x61, 0xb0, 0x4e, 0x58, 0x26, 0xb7, 0x69, 0xfe, 0x9f,
- 0x5a, 0x4f, 0x61, 0x18, 0xa5, 0x3e, 0x8b, 0x16, 0xff, 0x23, 0xd8, 0x64, 0xa9, 0xcb, 0x66, 0x22,
- 0x0d, 0x79, 0x84, 0xd2, 0xe9, 0x4d, 0x7b, 0x33, 0x9b, 0xd6, 0x36, 0xf9, 0x1c, 0x6c, 0xcc, 0xb6,
- 0x18, 0xa3, 0x60, 0x91, 0xae, 0xd0, 0x80, 0x7e, 0x02, 0xc8, 0xf7, 0x30, 0xd2, 0x42, 0xe6, 0x76,
- 0xd2, 0xe9, 0x5f, 0x8b, 0x67, 0x3c, 0xb4, 0x45, 0x23, 0x2e, 0x8c, 0x98, 0xf0, 0xb7, 0x3c, 0x47,
- 0x3f, 0x2f, 0x04, 0x3a, 0x07, 0xba, 0xc2, 0x2d, 0x4c, 0x25, 0x25, 0x73, 0x96, 0x63, 0x58, 0x44,
- 0xce, 0xa1, 0x8e, 0x5b, 0xdb, 0xe4, 0x3e, 0x8c, 0x7d, 0x81, 0x3a, 0x80, 0x17, 0xb0, 0x1c, 0x9d,
- 0xc1, 0xb4, 0x33, 0xeb, 0xd1, 0x51, 0x05, 0x2e, 0x59, 0x8e, 0xe4, 0x01, 0x1c, 0x45, 0x4c, 0xe6,
- 0x5e, 0x21, 0x31, 0x30, 0x2c, 0xdb, 0xb0, 0x14, 0xfa, 0x4e, 0x62, 0xa0, 0x58, 0xee, 0x1f, 0x1d,
- 0x18, 0x0b, 0xb9, 0x4b, 0xfc, 0x33, 0x64, 0x2a, 0xae, 0x54, 0x63, 0xf2, 0x91, 0xe5, 0xb9, 0x90,
- 0x4e, 0x67, 0xda, 0x99, 0x0d, 0x68, 0x69, 0x29, 0x3c, 0xc0, 0x08, 0x73, 0xd5, 0x5b, 0x8d, 0x1b,
- 0x4b, 0x25, 0xea, 0xa7, 0x71, 0x26, 0x50, 0xaa, 0xea, 0x29, 0x4f, 0x6d, 0x93, 0x07, 0x30, 0xbe,
- 0xe0, 0x01, 0x17, 0xe8, 0xab, 0xb4, 0x74, 0x05, 0x15, 0xa1, 0x0d, 0xba, 0x0f, 0x61, 0xb8, 0x0f,
- 0x65, 0x9d, 0x40, 0x53, 0xb0, 0xd3, 0x16, 0x74, 0x37, 0x30, 0xbe, 0xc8, 0x45, 0x83, 0xfc, 0x10,
- 0x26, 0x75, 0xb1, 0xbd, 0x2d, 0xb2, 0x00, 0x45, 0xf9, 0xd1, 0x71, 0x8d, 0xbf, 0xd0, 0x30, 0xf9,
- 0x16, 0x6e, 0x18, 0x82, 0x27, 0x8b, 0x8b, 0xcb, 0x34, 0x2a, 0x62, 0x94, 0xe5, 0x5d, 0x26, 0xc6,
- 0xb1, 0xae, 0x71, 0xf7, 0x9f, 0x1e, 0x1c, 0xbf, 0xbe, 0x22, 0x70, 0x02, 0xdd, 0x50, 0xea, 0x71,
- 0x3b, 0x9a, 0xdf, 0x69, 0xf4, 0xb8, 0xe6, 0x9d, 0xad, 0xd5, 0x52, 0xd2, 0x6e, 0x28, 0xc9, 0x37,
- 0x60, 0xf9, 0x82, 0x17, 0x5a, 0xff, 0x68, 0x7e, 0xb3, 0x39, 0x81, 0xf4, 0xe5, 0x3b, 0x4d, 0xd3,
- 0x04, 0x72, 0x02, 0x7d, 0x1e, 0xc4, 0x2c, 0xd3, 0x93, 0x37, 0x9c, 0xdf, 0x6a, 0x30, 0xeb, 0x35,
- 0xa7, 0x86, 0xa2, 0xca, 0x29, 0xcb, 0xe9, 0x5f, 0x31, 0x95, 0xbd, 0xa5, 0xa7, 0xb5, 0x0d, 0x92,
- 0xef, 0xc0, 0xae, 0x80, 0x6a, 0x22, 0x9b, 0xf1, 0xab, 0xfd, 0xa1, 0x9f, 0x58, 0xc4, 0x81, 0xc3,
- 0x4c, 0x60, 0x50, 0xc4, 0x99, 0x73, 0xa8, 0x0b, 0x52, 0x99, 0xe4, 0x87, 0x2b, 0xe3, 0xa1, 0x47,
- 0x6d, 0x38, 0x77, 0x1a, 0x82, 0x2d, 0x3f, 0xbd, 0x32, 0x4d, 0x0e, 0x1c, 0x0a, 0x0c, 0x05, 0xca,
- 0xad, 0x1e, 0xbf, 0x01, 0xad, 0x4c, 0xf2, 0xac, 0xd5, 0x75, 0x07, 0xb4, 0xee, 0xed, 0x86, 0x6e,
- 0xc3, 0x4b, 0x5b, 0x03, 0x72, 0x0f, 0xc0, 0xb4, 0x69, 0xcd, 0xf7, 0xe8, 0x0c, 0xf5, 0x54, 0x37,
- 0x10, 0x95, 0x73, 0x6b, 0x48, 0x9c, 0xd1, 0xb5, 0x9c, 0x5b, 0x7e, 0xda, 0xa6, 0xbb, 0x67, 0x30,
- 0xa9, 0x5b, 0xba, 0x48, 0x93, 0x5c, 0xa4, 0x91, 0xba, 0x87, 0x2c, 0x7c, 0xdf, 0xcc, 0xa4, 0xda,
- 0xc6, 0xca, 0x54, 0x9e, 0x18, 0xa5, 0x64, 0x1b, 0xb3, 0x18, 0x36, 0xad, 0x4c, 0xf7, 0x29, 0x8c,
- 0x6b, 0x9d, 0xf5, 0x2e, 0xf1, 0xd5, 0xde, 0x87, 0x3c, 0x61, 0xd1, 0xb9, 0xc0, 0xa5, 0xaa, 0xb5,
- 0x51, 0x6a, 0x61, 0xee, 0x9f, 0x3d, 0x98, 0xa8, 0xca, 0x7b, 0x6a, 0xdb, 0xa5, 0x87, 0x49, 0x2e,
- 0x76, 0x6a, 0xe1, 0x43, 0x81, 0xb8, 0xe7, 0xc9, 0xc6, 0xcb, 0x79, 0xf9, 0xe6, 0x8d, 0xe9, 0xa8,
- 0x02, 0xdf, 0xf2, 0x18, 0xc9, 0x97, 0x30, 0x0c, 0x45, 0xba, 0xc7, 0xc4, 0x50, 0xba, 0x9a, 0x02,
- 0x06, 0xd2, 0x84, 0xaf, 0x60, 0x14, 0x63, 0xac, 0xc5, 0x35, 0xa3, 0xa7, 0x19, 0xc3, 0x12, 0xd3,
- 0x94, 0xfb, 0x30, 0x8e, 0x31, 0xfe, 0x20, 0x78, 0x8e, 0x86, 0x63, 0x99, 0x40, 0x15, 0x58, 0x91,
- 0x32, 0xb6, 0x41, 0xe9, 0x49, 0x9f, 0x25, 0x09, 0x06, 0xfa, 0x0f, 0x61, 0xd1, 0x91, 0x06, 0xd7,
- 0x06, 0x23, 0x4f, 0xe0, 0x56, 0x49, 0x7a, 0xcf, 0xb3, 0x0c, 0x03, 0x2f, 0x63, 0x02, 0x93, 0x5c,
- 0xbf, 0x75, 0x16, 0x25, 0x86, 0x6b, 0x5c, 0xe7, 0xda, 0xf3, 0x49, 0x56, 0x45, 0xca, 0x31, 0xd1,
- 0xcf, 0x5e, 0x25, 0xfb, 0x8b, 0xc1, 0x14, 0x89, 0x8b, 0x98, 0x65, 0x9e, 0x40, 0x99, 0x46, 0x97,
- 0xe6, 0xe9, 0x1b, 0xd3, 0x91, 0x06, 0xa9, 0xc1, 0xc8, 0x17, 0x00, 0x46, 0x29, 0x62, 0xfb, 0x9d,
- 0x63, 0x6b, 0x19, 0x5b, 0x23, 0xaf, 0xd8, 0x7e, 0x57, 0xb9, 0xbd, 0x8c, 0x67, 0xe5, 0xe0, 0x95,
- 0xee, 0x73, 0x05, 0xa8, 0x87, 0xb3, 0x76, 0x7b, 0x17, 0x45, 0x28, 0xf5, 0x88, 0x95, 0x89, 0x28,
- 0xca, 0x69, 0x11, 0x4a, 0xf7, 0xef, 0x0e, 0xdc, 0x14, 0x28, 0xf3, 0x54, 0x60, 0xab, 0x55, 0x5f,
- 0x9b, 0xaf, 0xa5, 0xa7, 0xde, 0x2c, 0x26, 0xd0, 0xfc, 0x9a, 0x2d, 0x6a, 0xee, 0xb6, 0x28, 0x41,
- 0x72, 0x02, 0x37, 0xda, 0xe5, 0xf1, 0xd3, 0x0f, 0xba, 0x65, 0x16, 0x3d, 0x6e, 0xd6, 0x66, 0x91,
- 0x7e, 0x50, 0x7d, 0x0b, 0x53, 0xf1, 0xbe, 0x6e, 0x7e, 0xd9, 0xb7, 0x12, 0xab, 0x5a, 0x5b, 0x25,
- 0xd3, 0x68, 0xdb, 0xb0, 0xc4, 0x34, 0xa5, 0x4e, 0xac, 0x04, 0x55, 0xdb, 0x3a, 0x75, 0x62, 0xb4,
- 0x04, 0xdd, 0x8f, 0x30, 0x6c, 0x5e, 0xe7, 0x31, 0x58, 0x81, 0x19, 0x55, 0xb5, 0x42, 0x77, 0x1b,
- 0x2b, 0x74, 0x75, 0x48, 0xa9, 0x26, 0x92, 0x67, 0x6a, 0xe1, 0xb5, 0x96, 0x5e, 0x87, 0xe1, 0xfc,
- 0x5e, 0xf3, 0xa9, 0xb8, 0x5e, 0x30, 0x5a, 0xd1, 0x4f, 0x56, 0x8d, 0x17, 0xd7, 0xbc, 0xa4, 0xc4,
- 0x86, 0x3e, 0x5d, 0xff, 0xba, 0x5a, 0x4c, 0x3e, 0x53, 0xc7, 0xd3, 0xb7, 0xf4, 0x6c, 0x3d, 0xe9,
- 0x90, 0x43, 0xe8, 0xfd, 0x76, 0xb6, 0x9e, 0x74, 0xd5, 0x81, 0x9e, 0x2e, 0x27, 0x3d, 0x72, 0x13,
- 0x8e, 0x4f, 0x5f, 0xbd, 0x59, 0xfc, 0xec, 0x3d, 0x5f, 0x2d, 0x3d, 0xf3, 0x85, 0x75, 0xf2, 0x18,
- 0x06, 0xd5, 0x5b, 0x4b, 0x8e, 0x00, 0xd4, 0xd9, 0x6b, 0xa8, 0x9d, 0xbf, 0x78, 0xfe, 0xee, 0xd5,
- 0xa4, 0x43, 0x06, 0x60, 0xad, 0xde, 0xac, 0x7e, 0x9c, 0x74, 0xff, 0x0d, 0x00, 0x00, 0xff, 0xff,
- 0x51, 0xb3, 0x06, 0x24, 0x82, 0x09, 0x00, 0x00,
+var File_lxd_migration_migrate_proto protoreflect.FileDescriptor
+
+var file_lxd_migration_migrate_proto_rawDesc = []byte{
+ 0x0a, 0x1b, 0x6c, 0x78, 0x64, 0x2f, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f,
+ 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x6d,
+ 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x7f, 0x0a, 0x09, 0x49, 0x44, 0x4d, 0x61,
+ 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x73, 0x75, 0x69, 0x64, 0x18, 0x01,
+ 0x20, 0x02, 0x28, 0x08, 0x52, 0x05, 0x69, 0x73, 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x69,
+ 0x73, 0x67, 0x69, 0x64, 0x18, 0x02, 0x20, 0x02, 0x28, 0x08, 0x52, 0x05, 0x69, 0x73, 0x67, 0x69,
+ 0x64, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x6f, 0x73, 0x74, 0x69, 0x64, 0x18, 0x03, 0x20, 0x02, 0x28,
+ 0x05, 0x52, 0x06, 0x68, 0x6f, 0x73, 0x74, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x73, 0x69,
+ 0x64, 0x18, 0x04, 0x20, 0x02, 0x28, 0x05, 0x52, 0x04, 0x6e, 0x73, 0x69, 0x64, 0x12, 0x1a, 0x0a,
+ 0x08, 0x6d, 0x61, 0x70, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x05, 0x20, 0x02, 0x28, 0x05, 0x52,
+ 0x08, 0x6d, 0x61, 0x70, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x30, 0x0a, 0x06, 0x43, 0x6f, 0x6e,
+ 0x66, 0x69, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09,
+ 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
+ 0x20, 0x02, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x47, 0x0a, 0x06, 0x44,
+ 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
+ 0x02, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x06, 0x63, 0x6f, 0x6e,
+ 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d, 0x69, 0x67, 0x72,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f,
+ 0x6e, 0x66, 0x69, 0x67, 0x22, 0xcf, 0x02, 0x0a, 0x08, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f,
+ 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52,
+ 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x0b, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x43, 0x6f,
+ 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d, 0x69, 0x67,
+ 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0b, 0x6c,
+ 0x6f, 0x63, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72,
+ 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72,
+ 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x70, 0x68, 0x65, 0x6d, 0x65,
+ 0x72, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x02, 0x28, 0x08, 0x52, 0x09, 0x65, 0x70, 0x68, 0x65, 0x6d,
+ 0x65, 0x72, 0x61, 0x6c, 0x12, 0x35, 0x0a, 0x0c, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x44, 0x65, 0x76,
+ 0x69, 0x63, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d, 0x69, 0x67,
+ 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x0c, 0x6c,
+ 0x6f, 0x63, 0x61, 0x6c, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x61,
+ 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x06, 0x20, 0x02, 0x28,
+ 0x05, 0x52, 0x0c, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12,
+ 0x1a, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x18, 0x07, 0x20, 0x02, 0x28,
+ 0x08, 0x52, 0x08, 0x73, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x12, 0x23, 0x0a, 0x0d, 0x63,
+ 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x08, 0x20, 0x01,
+ 0x28, 0x03, 0x52, 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x65,
+ 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x5f, 0x64, 0x61,
+ 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x73,
+ 0x65, 0x64, 0x44, 0x61, 0x74, 0x65, 0x22, 0x81, 0x01, 0x0a, 0x0d, 0x72, 0x73, 0x79, 0x6e, 0x63,
+ 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x78, 0x61, 0x74, 0x74,
+ 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x78, 0x61, 0x74, 0x74, 0x72, 0x73,
+ 0x12, 0x16, 0x0a, 0x06, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08,
+ 0x52, 0x06, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6d, 0x70,
+ 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x70,
+ 0x72, 0x65, 0x73, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x62, 0x69, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74,
+ 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x62, 0x69, 0x64,
+ 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x22, 0x29, 0x0a, 0x0b, 0x7a, 0x66,
+ 0x73, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6d,
+ 0x70, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x63, 0x6f, 0x6d,
+ 0x70, 0x72, 0x65, 0x73, 0x73, 0x22, 0x67, 0x0a, 0x0d, 0x62, 0x74, 0x72, 0x66, 0x73, 0x46, 0x65,
+ 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08,
+ 0x52, 0x0f, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65,
+ 0x72, 0x12, 0x2b, 0x0a, 0x11, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x73, 0x75, 0x62, 0x76,
+ 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x68, 0x65,
+ 0x61, 0x64, 0x65, 0x72, 0x53, 0x75, 0x62, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x22, 0xf9,
+ 0x03, 0x0a, 0x0f, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64,
+ 0x65, 0x72, 0x12, 0x2a, 0x0a, 0x02, 0x66, 0x73, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0e, 0x32, 0x1a,
+ 0x2e, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x69, 0x67, 0x72, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x53, 0x54, 0x79, 0x70, 0x65, 0x52, 0x02, 0x66, 0x73, 0x12, 0x27,
+ 0x0a, 0x04, 0x63, 0x72, 0x69, 0x75, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x6d,
+ 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x52, 0x49, 0x55, 0x54, 0x79, 0x70,
+ 0x65, 0x52, 0x04, 0x63, 0x72, 0x69, 0x75, 0x12, 0x2a, 0x0a, 0x05, 0x69, 0x64, 0x6d, 0x61, 0x70,
+ 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x2e, 0x49, 0x44, 0x4d, 0x61, 0x70, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x69, 0x64,
+ 0x6d, 0x61, 0x70, 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x4e,
+ 0x61, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x6e, 0x61, 0x70,
+ 0x73, 0x68, 0x6f, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x31, 0x0a, 0x09, 0x73, 0x6e, 0x61,
+ 0x70, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6d,
+ 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f,
+ 0x74, 0x52, 0x09, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07,
+ 0x70, 0x72, 0x65, 0x64, 0x75, 0x6d, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x70,
+ 0x72, 0x65, 0x64, 0x75, 0x6d, 0x70, 0x12, 0x3e, 0x0a, 0x0d, 0x72, 0x73, 0x79, 0x6e, 0x63, 0x46,
+ 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e,
+ 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x72, 0x73, 0x79, 0x6e, 0x63, 0x46,
+ 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x0d, 0x72, 0x73, 0x79, 0x6e, 0x63, 0x46, 0x65,
+ 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73,
+ 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68,
+ 0x12, 0x38, 0x0a, 0x0b, 0x7a, 0x66, 0x73, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18,
+ 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x2e, 0x7a, 0x66, 0x73, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x0b, 0x7a,
+ 0x66, 0x73, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x76, 0x6f,
+ 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a,
+ 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x3e, 0x0a, 0x0d, 0x62, 0x74,
+ 0x72, 0x66, 0x73, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x18, 0x2e, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x62, 0x74,
+ 0x72, 0x66, 0x73, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x0d, 0x62, 0x74, 0x72,
+ 0x66, 0x73, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x22, 0x46, 0x0a, 0x10, 0x4d, 0x69,
+ 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x18,
+ 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x02, 0x28, 0x08, 0x52,
+ 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73,
+ 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61,
+ 0x67, 0x65, 0x22, 0x33, 0x0a, 0x0d, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53,
+ 0x79, 0x6e, 0x63, 0x12, 0x22, 0x0a, 0x0c, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x65, 0x44,
+ 0x75, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x02, 0x28, 0x08, 0x52, 0x0c, 0x66, 0x69, 0x6e, 0x61, 0x6c,
+ 0x50, 0x72, 0x65, 0x44, 0x75, 0x6d, 0x70, 0x22, 0xa5, 0x03, 0x0a, 0x10, 0x64, 0x75, 0x6d, 0x70,
+ 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x23, 0x0a, 0x0d,
+ 0x66, 0x72, 0x65, 0x65, 0x7a, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20,
+ 0x02, 0x28, 0x0d, 0x52, 0x0c, 0x66, 0x72, 0x65, 0x65, 0x7a, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d,
+ 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x72, 0x6f, 0x7a, 0x65, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65,
+ 0x18, 0x02, 0x20, 0x02, 0x28, 0x0d, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x7a, 0x65, 0x6e, 0x54, 0x69,
+ 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x65, 0x6d, 0x64, 0x75, 0x6d, 0x70, 0x5f, 0x74, 0x69,
+ 0x6d, 0x65, 0x18, 0x03, 0x20, 0x02, 0x28, 0x0d, 0x52, 0x0b, 0x6d, 0x65, 0x6d, 0x64, 0x75, 0x6d,
+ 0x70, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x65, 0x6d, 0x77, 0x72, 0x69, 0x74,
+ 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x02, 0x28, 0x0d, 0x52, 0x0c, 0x6d, 0x65,
+ 0x6d, 0x77, 0x72, 0x69, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x61,
+ 0x67, 0x65, 0x73, 0x5f, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x18, 0x05, 0x20, 0x02, 0x28,
+ 0x04, 0x52, 0x0c, 0x70, 0x61, 0x67, 0x65, 0x73, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x12,
+ 0x30, 0x0a, 0x14, 0x70, 0x61, 0x67, 0x65, 0x73, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64,
+ 0x5f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x02, 0x28, 0x04, 0x52, 0x12, 0x70,
+ 0x61, 0x67, 0x65, 0x73, 0x53, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x50, 0x61, 0x72, 0x65, 0x6e,
+ 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x61, 0x67, 0x65, 0x73, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x74,
+ 0x65, 0x6e, 0x18, 0x07, 0x20, 0x02, 0x28, 0x04, 0x52, 0x0c, 0x70, 0x61, 0x67, 0x65, 0x73, 0x57,
+ 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x72, 0x6d, 0x61, 0x70, 0x5f,
+ 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x69,
+ 0x72, 0x6d, 0x61, 0x70, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70,
+ 0x61, 0x67, 0x65, 0x73, 0x5f, 0x6c, 0x61, 0x7a, 0x79, 0x18, 0x09, 0x20, 0x02, 0x28, 0x04, 0x52,
+ 0x09, 0x70, 0x61, 0x67, 0x65, 0x73, 0x4c, 0x61, 0x7a, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61,
+ 0x67, 0x65, 0x5f, 0x70, 0x69, 0x70, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09,
+ 0x70, 0x61, 0x67, 0x65, 0x50, 0x69, 0x70, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x70, 0x61, 0x67,
+ 0x65, 0x5f, 0x70, 0x69, 0x70, 0x65, 0x5f, 0x62, 0x75, 0x66, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28,
+ 0x04, 0x52, 0x0c, 0x70, 0x61, 0x67, 0x65, 0x50, 0x69, 0x70, 0x65, 0x42, 0x75, 0x66, 0x73, 0x22,
+ 0xd5, 0x01, 0x0a, 0x13, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74,
+ 0x73, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x61, 0x67, 0x65, 0x73,
+ 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x64, 0x18, 0x01, 0x20, 0x02, 0x28, 0x04, 0x52,
+ 0x0d, 0x70, 0x61, 0x67, 0x65, 0x73, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x64, 0x12, 0x2a,
+ 0x0a, 0x11, 0x70, 0x61, 0x67, 0x65, 0x73, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x5f,
+ 0x63, 0x6f, 0x77, 0x18, 0x02, 0x20, 0x02, 0x28, 0x04, 0x52, 0x0f, 0x70, 0x61, 0x67, 0x65, 0x73,
+ 0x53, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x43, 0x6f, 0x77, 0x12, 0x21, 0x0a, 0x0c, 0x66, 0x6f,
+ 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x02, 0x28, 0x0d,
+ 0x52, 0x0b, 0x66, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x21, 0x0a,
+ 0x0c, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20,
+ 0x02, 0x28, 0x0d, 0x52, 0x0b, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65,
+ 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x61, 0x67, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72,
+ 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x70, 0x61, 0x67, 0x65, 0x73, 0x52,
+ 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x22, 0x78, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x73,
+ 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x2f, 0x0a, 0x04, 0x64, 0x75, 0x6d, 0x70, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x2e, 0x64, 0x75, 0x6d, 0x70, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x65, 0x6e, 0x74, 0x72,
+ 0x79, 0x52, 0x04, 0x64, 0x75, 0x6d, 0x70, 0x12, 0x38, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x74, 0x6f,
+ 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6d, 0x69, 0x67, 0x72, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x73, 0x74, 0x61,
+ 0x74, 0x73, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72,
+ 0x65, 0x2a, 0x4e, 0x0a, 0x0f, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x53,
+ 0x54, 0x79, 0x70, 0x65, 0x12, 0x09, 0x0a, 0x05, 0x52, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x00, 0x12,
+ 0x09, 0x0a, 0x05, 0x42, 0x54, 0x52, 0x46, 0x53, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x5a, 0x46,
+ 0x53, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x52, 0x42, 0x44, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f,
+ 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x52, 0x53, 0x59, 0x4e, 0x43, 0x10,
+ 0x04, 0x2a, 0x2f, 0x0a, 0x08, 0x43, 0x52, 0x49, 0x55, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a,
+ 0x0a, 0x43, 0x52, 0x49, 0x55, 0x5f, 0x52, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x00, 0x12, 0x09, 0x0a,
+ 0x05, 0x50, 0x48, 0x41, 0x55, 0x4c, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45,
+ 0x10, 0x02,
+}
+
+var (
+ file_lxd_migration_migrate_proto_rawDescOnce sync.Once
+ file_lxd_migration_migrate_proto_rawDescData = file_lxd_migration_migrate_proto_rawDesc
+)
+
+func file_lxd_migration_migrate_proto_rawDescGZIP() []byte {
+ file_lxd_migration_migrate_proto_rawDescOnce.Do(func() {
+ file_lxd_migration_migrate_proto_rawDescData = protoimpl.X.CompressGZIP(file_lxd_migration_migrate_proto_rawDescData)
+ })
+ return file_lxd_migration_migrate_proto_rawDescData
+}
+
+var file_lxd_migration_migrate_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
+var file_lxd_migration_migrate_proto_msgTypes = make([]protoimpl.MessageInfo, 13)
+var file_lxd_migration_migrate_proto_goTypes = []interface{}{
+ (MigrationFSType)(0), // 0: migration.MigrationFSType
+ (CRIUType)(0), // 1: migration.CRIUType
+ (*IDMapType)(nil), // 2: migration.IDMapType
+ (*Config)(nil), // 3: migration.Config
+ (*Device)(nil), // 4: migration.Device
+ (*Snapshot)(nil), // 5: migration.Snapshot
+ (*RsyncFeatures)(nil), // 6: migration.rsyncFeatures
+ (*ZfsFeatures)(nil), // 7: migration.zfsFeatures
+ (*BtrfsFeatures)(nil), // 8: migration.btrfsFeatures
+ (*MigrationHeader)(nil), // 9: migration.MigrationHeader
+ (*MigrationControl)(nil), // 10: migration.MigrationControl
+ (*MigrationSync)(nil), // 11: migration.MigrationSync
+ (*DumpStatsEntry)(nil), // 12: migration.dump_stats_entry
+ (*RestoreStatsEntry)(nil), // 13: migration.restore_stats_entry
+ (*StatsEntry)(nil), // 14: migration.stats_entry
+}
+var file_lxd_migration_migrate_proto_depIdxs = []int32{
+ 3, // 0: migration.Device.config:type_name -> migration.Config
+ 3, // 1: migration.Snapshot.localConfig:type_name -> migration.Config
+ 4, // 2: migration.Snapshot.localDevices:type_name -> migration.Device
+ 0, // 3: migration.MigrationHeader.fs:type_name -> migration.MigrationFSType
+ 1, // 4: migration.MigrationHeader.criu:type_name -> migration.CRIUType
+ 2, // 5: migration.MigrationHeader.idmap:type_name -> migration.IDMapType
+ 5, // 6: migration.MigrationHeader.snapshots:type_name -> migration.Snapshot
+ 6, // 7: migration.MigrationHeader.rsyncFeatures:type_name -> migration.rsyncFeatures
+ 7, // 8: migration.MigrationHeader.zfsFeatures:type_name -> migration.zfsFeatures
+ 8, // 9: migration.MigrationHeader.btrfsFeatures:type_name -> migration.btrfsFeatures
+ 12, // 10: migration.stats_entry.dump:type_name -> migration.dump_stats_entry
+ 13, // 11: migration.stats_entry.restore:type_name -> migration.restore_stats_entry
+ 12, // [12:12] is the sub-list for method output_type
+ 12, // [12:12] is the sub-list for method input_type
+ 12, // [12:12] is the sub-list for extension type_name
+ 12, // [12:12] is the sub-list for extension extendee
+ 0, // [0:12] is the sub-list for field type_name
+}
+
+func init() { file_lxd_migration_migrate_proto_init() }
+func file_lxd_migration_migrate_proto_init() {
+ if File_lxd_migration_migrate_proto != nil {
+ return
+ }
+ if !protoimpl.UnsafeEnabled {
+ file_lxd_migration_migrate_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*IDMapType); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_lxd_migration_migrate_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Config); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_lxd_migration_migrate_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Device); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_lxd_migration_migrate_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Snapshot); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_lxd_migration_migrate_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*RsyncFeatures); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_lxd_migration_migrate_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ZfsFeatures); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_lxd_migration_migrate_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*BtrfsFeatures); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_lxd_migration_migrate_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*MigrationHeader); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_lxd_migration_migrate_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*MigrationControl); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_lxd_migration_migrate_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*MigrationSync); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_lxd_migration_migrate_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*DumpStatsEntry); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_lxd_migration_migrate_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*RestoreStatsEntry); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_lxd_migration_migrate_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*StatsEntry); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_lxd_migration_migrate_proto_rawDesc,
+ NumEnums: 2,
+ NumMessages: 13,
+ NumExtensions: 0,
+ NumServices: 0,
+ },
+ GoTypes: file_lxd_migration_migrate_proto_goTypes,
+ DependencyIndexes: file_lxd_migration_migrate_proto_depIdxs,
+ EnumInfos: file_lxd_migration_migrate_proto_enumTypes,
+ MessageInfos: file_lxd_migration_migrate_proto_msgTypes,
+ }.Build()
+ File_lxd_migration_migrate_proto = out.File
+ file_lxd_migration_migrate_proto_rawDesc = nil
+ file_lxd_migration_migrate_proto_goTypes = nil
+ file_lxd_migration_migrate_proto_depIdxs = nil
}
From 2cd5b8f0f05754e22b139e6d233ccd7122b98cf0 Mon Sep 17 00:00:00 2001
From: Thomas Parrott <thomas.parrott at canonical.com>
Date: Mon, 4 Jan 2021 16:33:42 +0000
Subject: [PATCH 3/9] lxd/migration: Adds expiry_date field to snapshots
protobuf
Signed-off-by: Thomas Parrott <thomas.parrott at canonical.com>
---
lxd/migration/migrate.pb.go | 240 +++++++++++++++++++-----------------
lxd/migration/migrate.proto | 1 +
2 files changed, 126 insertions(+), 115 deletions(-)
diff --git a/lxd/migration/migrate.pb.go b/lxd/migration/migrate.pb.go
index 6aba7e59e2..0ad0958c69 100644
--- a/lxd/migration/migrate.pb.go
+++ b/lxd/migration/migrate.pb.go
@@ -349,6 +349,7 @@ type Snapshot struct {
Stateful *bool `protobuf:"varint,7,req,name=stateful" json:"stateful,omitempty"`
CreationDate *int64 `protobuf:"varint,8,opt,name=creation_date,json=creationDate" json:"creation_date,omitempty"`
LastUsedDate *int64 `protobuf:"varint,9,opt,name=last_used_date,json=lastUsedDate" json:"last_used_date,omitempty"`
+ ExpiryDate *int64 `protobuf:"varint,10,opt,name=expiry_date,json=expiryDate" json:"expiry_date,omitempty"`
}
func (x *Snapshot) Reset() {
@@ -446,6 +447,13 @@ func (x *Snapshot) GetLastUsedDate() int64 {
return 0
}
+func (x *Snapshot) GetExpiryDate() int64 {
+ if x != nil && x.ExpiryDate != nil {
+ return *x.ExpiryDate
+ }
+ return 0
+}
+
type RsyncFeatures struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -1132,7 +1140,7 @@ var file_lxd_migration_migrate_proto_rawDesc = []byte{
0x02, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x06, 0x63, 0x6f, 0x6e,
0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d, 0x69, 0x67, 0x72,
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f,
- 0x6e, 0x66, 0x69, 0x67, 0x22, 0xcf, 0x02, 0x0a, 0x08, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f,
+ 0x6e, 0x66, 0x69, 0x67, 0x22, 0xf0, 0x02, 0x0a, 0x08, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f,
0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52,
0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x0b, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x43, 0x6f,
0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d, 0x69, 0x67,
@@ -1153,120 +1161,122 @@ var file_lxd_migration_migrate_proto_rawDesc = []byte{
0x28, 0x03, 0x52, 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x65,
0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x5f, 0x64, 0x61,
0x74, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x73,
- 0x65, 0x64, 0x44, 0x61, 0x74, 0x65, 0x22, 0x81, 0x01, 0x0a, 0x0d, 0x72, 0x73, 0x79, 0x6e, 0x63,
- 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x78, 0x61, 0x74, 0x74,
- 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x78, 0x61, 0x74, 0x74, 0x72, 0x73,
- 0x12, 0x16, 0x0a, 0x06, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08,
- 0x52, 0x06, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6d, 0x70,
- 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x70,
- 0x72, 0x65, 0x73, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x62, 0x69, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74,
- 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x62, 0x69, 0x64,
- 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x22, 0x29, 0x0a, 0x0b, 0x7a, 0x66,
- 0x73, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6d,
- 0x70, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x63, 0x6f, 0x6d,
- 0x70, 0x72, 0x65, 0x73, 0x73, 0x22, 0x67, 0x0a, 0x0d, 0x62, 0x74, 0x72, 0x66, 0x73, 0x46, 0x65,
- 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08,
- 0x52, 0x0f, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65,
- 0x72, 0x12, 0x2b, 0x0a, 0x11, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x73, 0x75, 0x62, 0x76,
- 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x68, 0x65,
- 0x61, 0x64, 0x65, 0x72, 0x53, 0x75, 0x62, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x22, 0xf9,
- 0x03, 0x0a, 0x0f, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64,
- 0x65, 0x72, 0x12, 0x2a, 0x0a, 0x02, 0x66, 0x73, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0e, 0x32, 0x1a,
- 0x2e, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x69, 0x67, 0x72, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x53, 0x54, 0x79, 0x70, 0x65, 0x52, 0x02, 0x66, 0x73, 0x12, 0x27,
- 0x0a, 0x04, 0x63, 0x72, 0x69, 0x75, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x6d,
- 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x52, 0x49, 0x55, 0x54, 0x79, 0x70,
- 0x65, 0x52, 0x04, 0x63, 0x72, 0x69, 0x75, 0x12, 0x2a, 0x0a, 0x05, 0x69, 0x64, 0x6d, 0x61, 0x70,
- 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x2e, 0x49, 0x44, 0x4d, 0x61, 0x70, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x69, 0x64,
- 0x6d, 0x61, 0x70, 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x4e,
- 0x61, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x6e, 0x61, 0x70,
- 0x73, 0x68, 0x6f, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x31, 0x0a, 0x09, 0x73, 0x6e, 0x61,
- 0x70, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6d,
- 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f,
- 0x74, 0x52, 0x09, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07,
- 0x70, 0x72, 0x65, 0x64, 0x75, 0x6d, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x70,
- 0x72, 0x65, 0x64, 0x75, 0x6d, 0x70, 0x12, 0x3e, 0x0a, 0x0d, 0x72, 0x73, 0x79, 0x6e, 0x63, 0x46,
- 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e,
- 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x72, 0x73, 0x79, 0x6e, 0x63, 0x46,
- 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x0d, 0x72, 0x73, 0x79, 0x6e, 0x63, 0x46, 0x65,
- 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73,
- 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68,
- 0x12, 0x38, 0x0a, 0x0b, 0x7a, 0x66, 0x73, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18,
- 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x2e, 0x7a, 0x66, 0x73, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x0b, 0x7a,
- 0x66, 0x73, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x76, 0x6f,
- 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a,
- 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x3e, 0x0a, 0x0d, 0x62, 0x74,
- 0x72, 0x66, 0x73, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x18, 0x2e, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x62, 0x74,
- 0x72, 0x66, 0x73, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x0d, 0x62, 0x74, 0x72,
- 0x66, 0x73, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x22, 0x46, 0x0a, 0x10, 0x4d, 0x69,
- 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x18,
- 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x02, 0x28, 0x08, 0x52,
- 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73,
- 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61,
- 0x67, 0x65, 0x22, 0x33, 0x0a, 0x0d, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53,
- 0x79, 0x6e, 0x63, 0x12, 0x22, 0x0a, 0x0c, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x65, 0x44,
- 0x75, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x02, 0x28, 0x08, 0x52, 0x0c, 0x66, 0x69, 0x6e, 0x61, 0x6c,
- 0x50, 0x72, 0x65, 0x44, 0x75, 0x6d, 0x70, 0x22, 0xa5, 0x03, 0x0a, 0x10, 0x64, 0x75, 0x6d, 0x70,
- 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x23, 0x0a, 0x0d,
- 0x66, 0x72, 0x65, 0x65, 0x7a, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20,
- 0x02, 0x28, 0x0d, 0x52, 0x0c, 0x66, 0x72, 0x65, 0x65, 0x7a, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d,
- 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x72, 0x6f, 0x7a, 0x65, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65,
- 0x18, 0x02, 0x20, 0x02, 0x28, 0x0d, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x7a, 0x65, 0x6e, 0x54, 0x69,
- 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x65, 0x6d, 0x64, 0x75, 0x6d, 0x70, 0x5f, 0x74, 0x69,
- 0x6d, 0x65, 0x18, 0x03, 0x20, 0x02, 0x28, 0x0d, 0x52, 0x0b, 0x6d, 0x65, 0x6d, 0x64, 0x75, 0x6d,
- 0x70, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x65, 0x6d, 0x77, 0x72, 0x69, 0x74,
- 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x02, 0x28, 0x0d, 0x52, 0x0c, 0x6d, 0x65,
- 0x6d, 0x77, 0x72, 0x69, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x61,
- 0x67, 0x65, 0x73, 0x5f, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x18, 0x05, 0x20, 0x02, 0x28,
- 0x04, 0x52, 0x0c, 0x70, 0x61, 0x67, 0x65, 0x73, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x12,
- 0x30, 0x0a, 0x14, 0x70, 0x61, 0x67, 0x65, 0x73, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64,
- 0x5f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x02, 0x28, 0x04, 0x52, 0x12, 0x70,
- 0x61, 0x67, 0x65, 0x73, 0x53, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x50, 0x61, 0x72, 0x65, 0x6e,
- 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x61, 0x67, 0x65, 0x73, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x74,
- 0x65, 0x6e, 0x18, 0x07, 0x20, 0x02, 0x28, 0x04, 0x52, 0x0c, 0x70, 0x61, 0x67, 0x65, 0x73, 0x57,
- 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x72, 0x6d, 0x61, 0x70, 0x5f,
- 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x69,
- 0x72, 0x6d, 0x61, 0x70, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70,
- 0x61, 0x67, 0x65, 0x73, 0x5f, 0x6c, 0x61, 0x7a, 0x79, 0x18, 0x09, 0x20, 0x02, 0x28, 0x04, 0x52,
- 0x09, 0x70, 0x61, 0x67, 0x65, 0x73, 0x4c, 0x61, 0x7a, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61,
- 0x67, 0x65, 0x5f, 0x70, 0x69, 0x70, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09,
- 0x70, 0x61, 0x67, 0x65, 0x50, 0x69, 0x70, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x70, 0x61, 0x67,
- 0x65, 0x5f, 0x70, 0x69, 0x70, 0x65, 0x5f, 0x62, 0x75, 0x66, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28,
- 0x04, 0x52, 0x0c, 0x70, 0x61, 0x67, 0x65, 0x50, 0x69, 0x70, 0x65, 0x42, 0x75, 0x66, 0x73, 0x22,
- 0xd5, 0x01, 0x0a, 0x13, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74,
- 0x73, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x61, 0x67, 0x65, 0x73,
- 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x64, 0x18, 0x01, 0x20, 0x02, 0x28, 0x04, 0x52,
- 0x0d, 0x70, 0x61, 0x67, 0x65, 0x73, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x64, 0x12, 0x2a,
- 0x0a, 0x11, 0x70, 0x61, 0x67, 0x65, 0x73, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x5f,
- 0x63, 0x6f, 0x77, 0x18, 0x02, 0x20, 0x02, 0x28, 0x04, 0x52, 0x0f, 0x70, 0x61, 0x67, 0x65, 0x73,
- 0x53, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x43, 0x6f, 0x77, 0x12, 0x21, 0x0a, 0x0c, 0x66, 0x6f,
- 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x02, 0x28, 0x0d,
- 0x52, 0x0b, 0x66, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x21, 0x0a,
- 0x0c, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20,
- 0x02, 0x28, 0x0d, 0x52, 0x0b, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65,
- 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x61, 0x67, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72,
- 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x70, 0x61, 0x67, 0x65, 0x73, 0x52,
- 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x22, 0x78, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x73,
- 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x2f, 0x0a, 0x04, 0x64, 0x75, 0x6d, 0x70, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x2e, 0x64, 0x75, 0x6d, 0x70, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x65, 0x6e, 0x74, 0x72,
- 0x79, 0x52, 0x04, 0x64, 0x75, 0x6d, 0x70, 0x12, 0x38, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x74, 0x6f,
- 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6d, 0x69, 0x67, 0x72, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x73, 0x74, 0x61,
- 0x74, 0x73, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72,
- 0x65, 0x2a, 0x4e, 0x0a, 0x0f, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x53,
- 0x54, 0x79, 0x70, 0x65, 0x12, 0x09, 0x0a, 0x05, 0x52, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x00, 0x12,
- 0x09, 0x0a, 0x05, 0x42, 0x54, 0x52, 0x46, 0x53, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x5a, 0x46,
- 0x53, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x52, 0x42, 0x44, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f,
- 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x52, 0x53, 0x59, 0x4e, 0x43, 0x10,
- 0x04, 0x2a, 0x2f, 0x0a, 0x08, 0x43, 0x52, 0x49, 0x55, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a,
- 0x0a, 0x43, 0x52, 0x49, 0x55, 0x5f, 0x52, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x00, 0x12, 0x09, 0x0a,
- 0x05, 0x50, 0x48, 0x41, 0x55, 0x4c, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45,
- 0x10, 0x02,
+ 0x65, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x79,
+ 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x65, 0x78, 0x70,
+ 0x69, 0x72, 0x79, 0x44, 0x61, 0x74, 0x65, 0x22, 0x81, 0x01, 0x0a, 0x0d, 0x72, 0x73, 0x79, 0x6e,
+ 0x63, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x78, 0x61, 0x74,
+ 0x74, 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x78, 0x61, 0x74, 0x74, 0x72,
+ 0x73, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x08, 0x52, 0x06, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6d,
+ 0x70, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x63, 0x6f, 0x6d,
+ 0x70, 0x72, 0x65, 0x73, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x62, 0x69, 0x64, 0x69, 0x72, 0x65, 0x63,
+ 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x62, 0x69,
+ 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x22, 0x29, 0x0a, 0x0b, 0x7a,
+ 0x66, 0x73, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f,
+ 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x63, 0x6f,
+ 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x22, 0x67, 0x0a, 0x0d, 0x62, 0x74, 0x72, 0x66, 0x73, 0x46,
+ 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x6d, 0x69, 0x67, 0x72, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x08, 0x52, 0x0f, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64,
+ 0x65, 0x72, 0x12, 0x2b, 0x0a, 0x11, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x73, 0x75, 0x62,
+ 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x68,
+ 0x65, 0x61, 0x64, 0x65, 0x72, 0x53, 0x75, 0x62, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x22,
+ 0xf9, 0x03, 0x0a, 0x0f, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x61,
+ 0x64, 0x65, 0x72, 0x12, 0x2a, 0x0a, 0x02, 0x66, 0x73, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0e, 0x32,
+ 0x1a, 0x2e, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x69, 0x67, 0x72,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x53, 0x54, 0x79, 0x70, 0x65, 0x52, 0x02, 0x66, 0x73, 0x12,
+ 0x27, 0x0a, 0x04, 0x63, 0x72, 0x69, 0x75, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e,
+ 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x52, 0x49, 0x55, 0x54, 0x79,
+ 0x70, 0x65, 0x52, 0x04, 0x63, 0x72, 0x69, 0x75, 0x12, 0x2a, 0x0a, 0x05, 0x69, 0x64, 0x6d, 0x61,
+ 0x70, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x44, 0x4d, 0x61, 0x70, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x69,
+ 0x64, 0x6d, 0x61, 0x70, 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74,
+ 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x6e, 0x61,
+ 0x70, 0x73, 0x68, 0x6f, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x31, 0x0a, 0x09, 0x73, 0x6e,
+ 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e,
+ 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68,
+ 0x6f, 0x74, 0x52, 0x09, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x12, 0x18, 0x0a,
+ 0x07, 0x70, 0x72, 0x65, 0x64, 0x75, 0x6d, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07,
+ 0x70, 0x72, 0x65, 0x64, 0x75, 0x6d, 0x70, 0x12, 0x3e, 0x0a, 0x0d, 0x72, 0x73, 0x79, 0x6e, 0x63,
+ 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18,
+ 0x2e, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x72, 0x73, 0x79, 0x6e, 0x63,
+ 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x0d, 0x72, 0x73, 0x79, 0x6e, 0x63, 0x46,
+ 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x66, 0x72, 0x65,
+ 0x73, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73,
+ 0x68, 0x12, 0x38, 0x0a, 0x0b, 0x7a, 0x66, 0x73, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73,
+ 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x2e, 0x7a, 0x66, 0x73, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x0b,
+ 0x7a, 0x66, 0x73, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x76,
+ 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52,
+ 0x0a, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x3e, 0x0a, 0x0d, 0x62,
+ 0x74, 0x72, 0x66, 0x73, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x62,
+ 0x74, 0x72, 0x66, 0x73, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x0d, 0x62, 0x74,
+ 0x72, 0x66, 0x73, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x22, 0x46, 0x0a, 0x10, 0x4d,
+ 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12,
+ 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x02, 0x28, 0x08,
+ 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73,
+ 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73,
+ 0x61, 0x67, 0x65, 0x22, 0x33, 0x0a, 0x0d, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x53, 0x79, 0x6e, 0x63, 0x12, 0x22, 0x0a, 0x0c, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x65,
+ 0x44, 0x75, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x02, 0x28, 0x08, 0x52, 0x0c, 0x66, 0x69, 0x6e, 0x61,
+ 0x6c, 0x50, 0x72, 0x65, 0x44, 0x75, 0x6d, 0x70, 0x22, 0xa5, 0x03, 0x0a, 0x10, 0x64, 0x75, 0x6d,
+ 0x70, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x23, 0x0a,
+ 0x0d, 0x66, 0x72, 0x65, 0x65, 0x7a, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01,
+ 0x20, 0x02, 0x28, 0x0d, 0x52, 0x0c, 0x66, 0x72, 0x65, 0x65, 0x7a, 0x69, 0x6e, 0x67, 0x54, 0x69,
+ 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x72, 0x6f, 0x7a, 0x65, 0x6e, 0x5f, 0x74, 0x69, 0x6d,
+ 0x65, 0x18, 0x02, 0x20, 0x02, 0x28, 0x0d, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x7a, 0x65, 0x6e, 0x54,
+ 0x69, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x65, 0x6d, 0x64, 0x75, 0x6d, 0x70, 0x5f, 0x74,
+ 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x02, 0x28, 0x0d, 0x52, 0x0b, 0x6d, 0x65, 0x6d, 0x64, 0x75,
+ 0x6d, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x65, 0x6d, 0x77, 0x72, 0x69,
+ 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x02, 0x28, 0x0d, 0x52, 0x0c, 0x6d,
+ 0x65, 0x6d, 0x77, 0x72, 0x69, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x70,
+ 0x61, 0x67, 0x65, 0x73, 0x5f, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x18, 0x05, 0x20, 0x02,
+ 0x28, 0x04, 0x52, 0x0c, 0x70, 0x61, 0x67, 0x65, 0x73, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x64,
+ 0x12, 0x30, 0x0a, 0x14, 0x70, 0x61, 0x67, 0x65, 0x73, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x70, 0x65,
+ 0x64, 0x5f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x02, 0x28, 0x04, 0x52, 0x12,
+ 0x70, 0x61, 0x67, 0x65, 0x73, 0x53, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x50, 0x61, 0x72, 0x65,
+ 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x61, 0x67, 0x65, 0x73, 0x5f, 0x77, 0x72, 0x69, 0x74,
+ 0x74, 0x65, 0x6e, 0x18, 0x07, 0x20, 0x02, 0x28, 0x04, 0x52, 0x0c, 0x70, 0x61, 0x67, 0x65, 0x73,
+ 0x57, 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x72, 0x6d, 0x61, 0x70,
+ 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c,
+ 0x69, 0x72, 0x6d, 0x61, 0x70, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x12, 0x1d, 0x0a, 0x0a,
+ 0x70, 0x61, 0x67, 0x65, 0x73, 0x5f, 0x6c, 0x61, 0x7a, 0x79, 0x18, 0x09, 0x20, 0x02, 0x28, 0x04,
+ 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x73, 0x4c, 0x61, 0x7a, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x70,
+ 0x61, 0x67, 0x65, 0x5f, 0x70, 0x69, 0x70, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52,
+ 0x09, 0x70, 0x61, 0x67, 0x65, 0x50, 0x69, 0x70, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x70, 0x61,
+ 0x67, 0x65, 0x5f, 0x70, 0x69, 0x70, 0x65, 0x5f, 0x62, 0x75, 0x66, 0x73, 0x18, 0x0b, 0x20, 0x01,
+ 0x28, 0x04, 0x52, 0x0c, 0x70, 0x61, 0x67, 0x65, 0x50, 0x69, 0x70, 0x65, 0x42, 0x75, 0x66, 0x73,
+ 0x22, 0xd5, 0x01, 0x0a, 0x13, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x73, 0x74, 0x61,
+ 0x74, 0x73, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x61, 0x67, 0x65,
+ 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x64, 0x18, 0x01, 0x20, 0x02, 0x28, 0x04,
+ 0x52, 0x0d, 0x70, 0x61, 0x67, 0x65, 0x73, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x64, 0x12,
+ 0x2a, 0x0a, 0x11, 0x70, 0x61, 0x67, 0x65, 0x73, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64,
+ 0x5f, 0x63, 0x6f, 0x77, 0x18, 0x02, 0x20, 0x02, 0x28, 0x04, 0x52, 0x0f, 0x70, 0x61, 0x67, 0x65,
+ 0x73, 0x53, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x43, 0x6f, 0x77, 0x12, 0x21, 0x0a, 0x0c, 0x66,
+ 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x02, 0x28,
+ 0x0d, 0x52, 0x0b, 0x66, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x21,
+ 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04,
+ 0x20, 0x02, 0x28, 0x0d, 0x52, 0x0b, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x54, 0x69, 0x6d,
+ 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x61, 0x67, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x6f,
+ 0x72, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x70, 0x61, 0x67, 0x65, 0x73,
+ 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x22, 0x78, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x74,
+ 0x73, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x2f, 0x0a, 0x04, 0x64, 0x75, 0x6d, 0x70, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x2e, 0x64, 0x75, 0x6d, 0x70, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x65, 0x6e, 0x74,
+ 0x72, 0x79, 0x52, 0x04, 0x64, 0x75, 0x6d, 0x70, 0x12, 0x38, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x74,
+ 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6d, 0x69, 0x67, 0x72,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x73, 0x74,
+ 0x61, 0x74, 0x73, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x72, 0x65, 0x73, 0x74, 0x6f,
+ 0x72, 0x65, 0x2a, 0x4e, 0x0a, 0x0f, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46,
+ 0x53, 0x54, 0x79, 0x70, 0x65, 0x12, 0x09, 0x0a, 0x05, 0x52, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x00,
+ 0x12, 0x09, 0x0a, 0x05, 0x42, 0x54, 0x52, 0x46, 0x53, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x5a,
+ 0x46, 0x53, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x52, 0x42, 0x44, 0x10, 0x03, 0x12, 0x13, 0x0a,
+ 0x0f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x52, 0x53, 0x59, 0x4e, 0x43,
+ 0x10, 0x04, 0x2a, 0x2f, 0x0a, 0x08, 0x43, 0x52, 0x49, 0x55, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0e,
+ 0x0a, 0x0a, 0x43, 0x52, 0x49, 0x55, 0x5f, 0x52, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x00, 0x12, 0x09,
+ 0x0a, 0x05, 0x50, 0x48, 0x41, 0x55, 0x4c, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e,
+ 0x45, 0x10, 0x02,
}
var (
diff --git a/lxd/migration/migrate.proto b/lxd/migration/migrate.proto
index 257f038e21..dd423891d1 100644
--- a/lxd/migration/migrate.proto
+++ b/lxd/migration/migrate.proto
@@ -45,6 +45,7 @@ message Snapshot {
required bool stateful = 7;
optional int64 creation_date = 8;
optional int64 last_used_date = 9;
+ optional int64 expiry_date = 10;
}
message rsyncFeatures {
From b7ab5d357a14b07340a12c4ea6e8d2d6d9b42287 Mon Sep 17 00:00:00 2001
From: Thomas Parrott <thomas.parrott at canonical.com>
Date: Mon, 4 Jan 2021 16:50:24 +0000
Subject: [PATCH 4/9] lxd/migrate/instance: Populate expiry date in
snapshotToProtobuf
Signed-off-by: Thomas Parrott <thomas.parrott at canonical.com>
---
lxd/migrate_instance.go | 2 ++
1 file changed, 2 insertions(+)
diff --git a/lxd/migrate_instance.go b/lxd/migrate_instance.go
index 1b922e9760..bca1120aa0 100644
--- a/lxd/migrate_instance.go
+++ b/lxd/migrate_instance.go
@@ -115,6 +115,7 @@ func snapshotToProtobuf(c instance.Instance) *migration.Snapshot {
creationDate := c.CreationDate().UTC().Unix()
lastUsedDate := c.LastUsedDate().UTC().Unix()
+ expiryDate := c.ExpiryDate().UTC().Unix()
return &migration.Snapshot{
Name: &parts[len(parts)-1],
@@ -126,6 +127,7 @@ func snapshotToProtobuf(c instance.Instance) *migration.Snapshot {
Stateful: &stateful,
CreationDate: &creationDate,
LastUsedDate: &lastUsedDate,
+ ExpiryDate: &expiryDate,
}
}
From 3a637df08d906ad95cb14b4b36dc1472783fbe52 Mon Sep 17 00:00:00 2001
From: Thomas Parrott <thomas.parrott at canonical.com>
Date: Mon, 4 Jan 2021 16:50:43 +0000
Subject: [PATCH 5/9] lxd/migrate/storage/volumes: Populate zero expiry date in
volumeSnapshotToProtobuf
Signed-off-by: Thomas Parrott <thomas.parrott at canonical.com>
---
lxd/migrate_storage_volumes.go | 1 +
1 file changed, 1 insertion(+)
diff --git a/lxd/migrate_storage_volumes.go b/lxd/migrate_storage_volumes.go
index cb28c506a6..a5d006b856 100644
--- a/lxd/migrate_storage_volumes.go
+++ b/lxd/migrate_storage_volumes.go
@@ -422,5 +422,6 @@ func volumeSnapshotToProtobuf(vol *api.StorageVolume) *migration.Snapshot {
Stateful: proto.Bool(false),
CreationDate: proto.Int64(0),
LastUsedDate: proto.Int64(0),
+ ExpiryDate: proto.Int64(0),
}
}
From 99a3f54a08a5e74f4b43fc29d94f79ec9878753c Mon Sep 17 00:00:00 2001
From: Thomas Parrott <thomas.parrott at canonical.com>
Date: Mon, 4 Jan 2021 16:51:08 +0000
Subject: [PATCH 6/9] lxd/storage/migration: Populate expiry date in
snapshotProtobufToInstanceArgs
Signed-off-by: Thomas Parrott <thomas.parrott at canonical.com>
---
lxd/storage_migration.go | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/lxd/storage_migration.go b/lxd/storage_migration.go
index 5ff3e38896..703768da96 100644
--- a/lxd/storage_migration.go
+++ b/lxd/storage_migration.go
@@ -48,5 +48,9 @@ func snapshotProtobufToInstanceArgs(inst instance.Instance, snap *migration.Snap
args.LastUsedDate = time.Unix(snap.GetLastUsedDate(), 0)
}
+ if snap.GetExpiryDate() != 0 {
+ args.ExpiryDate = time.Unix(snap.GetExpiryDate(), 0)
+ }
+
return args
}
From 6a02e9a89f63fea275996edc1228200b5ed06be5 Mon Sep 17 00:00:00 2001
From: Thomas Parrott <thomas.parrott at canonical.com>
Date: Mon, 4 Jan 2021 17:12:08 +0000
Subject: [PATCH 7/9] lxd/migration/migration/volumes: Updates TypesToHeader
and MatchTypes to use a pointer to MigrationHeader
To avoid copying internal protobuf state lock.
Signed-off-by: Thomas Parrott <thomas.parrott at canonical.com>
---
lxd/migration/migration_volumes.go | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/lxd/migration/migration_volumes.go b/lxd/migration/migration_volumes.go
index 1aa186332f..015994ccfd 100644
--- a/lxd/migration/migration_volumes.go
+++ b/lxd/migration/migration_volumes.go
@@ -49,7 +49,7 @@ type VolumeTargetArgs struct {
// If the fallback Rsync type is present in any of the types even if it is not preferred, then its
// optional features are added to the header's RsyncFeatures, allowing for fallback negotiation to
// take place on the farside.
-func TypesToHeader(types ...Type) MigrationHeader {
+func TypesToHeader(types ...Type) *MigrationHeader {
missingFeature := false
hasFeature := true
var preferredType Type
@@ -120,7 +120,7 @@ func TypesToHeader(types ...Type) MigrationHeader {
break // Only use the first rsync transport type found to generate rsync features list.
}
- return header
+ return &header
}
// MatchTypes attempts to find matching migration transport types between an offered type sent from a remote
@@ -129,7 +129,7 @@ func TypesToHeader(types ...Type) MigrationHeader {
// fallback type which is used as an additional offer type preference in case the preferred remote type is not
// compatible with the local type available. It is expected that both sides of the migration will support the
// fallback type for the volume's content type that is being migrated.
-func MatchTypes(offer MigrationHeader, fallbackType MigrationFSType, ourTypes []Type) ([]Type, error) {
+func MatchTypes(offer *MigrationHeader, fallbackType MigrationFSType, ourTypes []Type) ([]Type, error) {
// Generate an offer types slice from the preferred type supplied from remote and the
// fallback type supplied based on the content type of the transfer.
offeredFSTypes := []MigrationFSType{offer.GetFs(), fallbackType}
From b4224b71887e8bb7632a646f5caebc3d213c1559 Mon Sep 17 00:00:00 2001
From: Thomas Parrott <thomas.parrott at canonical.com>
Date: Mon, 4 Jan 2021 17:10:54 +0000
Subject: [PATCH 8/9] lxd/migrate/instance: Avoid copying
migration.MigrationHeader due to new internal state lock added by protobuf
Signed-off-by: Thomas Parrott <thomas.parrott at canonical.com>
---
lxd/migrate_instance.go | 24 +++++++++++-------------
1 file changed, 11 insertions(+), 13 deletions(-)
diff --git a/lxd/migrate_instance.go b/lxd/migrate_instance.go
index bca1120aa0..7086d0160f 100644
--- a/lxd/migrate_instance.go
+++ b/lxd/migrate_instance.go
@@ -338,7 +338,6 @@ func (s *migrationSourceWs) preDumpLoop(state *state.State, args *preDumpLoopArg
func (s *migrationSourceWs) Do(state *state.State, migrateOp *operations.Operation) error {
<-s.allConnected
- var offerHeader migration.MigrationHeader
var poolMigrationTypes []migration.Type
pool, err := storagePools.GetPoolByInstance(state, s.instance)
@@ -357,7 +356,7 @@ func (s *migrationSourceWs) Do(state *state.State, migrateOp *operations.Operati
// Convert the pool's migration type options to an offer header to target.
// Populate the Fs, ZfsFeatures and RsyncFeatures fields.
- offerHeader = migration.TypesToHeader(poolMigrationTypes...)
+ offerHeader := migration.TypesToHeader(poolMigrationTypes...)
// Add CRIO info to source header.
criuType := migration.CRIUType_CRIU_RSYNC.Enum()
@@ -431,15 +430,15 @@ func (s *migrationSourceWs) Do(state *state.State, migrateOp *operations.Operati
offerHeader.Predump = proto.Bool(offerUsePreDumps)
// Send offer to target.
- err = s.send(&offerHeader)
+ err = s.send(offerHeader)
if err != nil {
s.sendControl(err)
return err
}
// Receive response from target.
- var respHeader migration.MigrationHeader
- err = s.recv(&respHeader)
+ respHeader := &migration.MigrationHeader{}
+ err = s.recv(respHeader)
if err != nil {
s.sendControl(err)
return err
@@ -822,8 +821,9 @@ func (c *migrationSink) Do(state *state.State, migrateOp *operations.Operation)
controller = c.dest.sendControl
}
- offerHeader := migration.MigrationHeader{}
- if err := receiver(&offerHeader); err != nil {
+ offerHeader := &migration.MigrationHeader{}
+ err = receiver(offerHeader)
+ if err != nil {
controller(err)
return err
}
@@ -845,9 +845,6 @@ func (c *migrationSink) Do(state *state.State, migrateOp *operations.Operation)
// The function that will be executed to receive the sender's migration data.
var myTarget func(conn *websocket.Conn, op *operations.Operation, args MigrationSinkArgs) error
- // The migration header to be sent back to source with our target options.
- var respHeader migration.MigrationHeader
-
pool, err := storagePools.GetPoolByInstance(state, c.src.instance)
if err != nil {
return err
@@ -862,8 +859,9 @@ func (c *migrationSink) Do(state *state.State, migrateOp *operations.Operation)
return err
}
+ // The migration header to be sent back to source with our target options.
// Convert response type to response header and copy snapshot info into it.
- respHeader = migration.TypesToHeader(respTypes...)
+ respHeader := migration.TypesToHeader(respTypes...)
respHeader.SnapshotNames = offerHeader.SnapshotNames
respHeader.Snapshots = offerHeader.Snapshots
respHeader.Refresh = &c.refresh
@@ -977,7 +975,7 @@ func (c *migrationSink) Do(state *state.State, migrateOp *operations.Operation)
// MigrationSinkArgs below.
rsyncFeatures := respHeader.GetRsyncFeaturesSlice()
- err = sender(&respHeader)
+ err = sender(respHeader)
if err != nil {
controller(err)
return err
@@ -1190,7 +1188,7 @@ func (c *migrationSink) Do(state *state.State, migrateOp *operations.Operation)
// The source can only tell us it failed (e.g. if checkpointing failed).
// We have to tell the source whether or not the restore was successful.
- logger.Debugf("Unknown message %v from source", msg)
+ logger.Debugf("Unknown message %q from source", *msg.Message)
}
}
}
From b06e5b286a4e98db126a727e7cb2145044131504 Mon Sep 17 00:00:00 2001
From: Thomas Parrott <thomas.parrott at canonical.com>
Date: Mon, 4 Jan 2021 17:11:43 +0000
Subject: [PATCH 9/9] lxd/migrate/storage/volumes: Avoid copying
migration.MigrationHeader due to new internal state lock added by protobuf
Signed-off-by: Thomas Parrott <thomas.parrott at canonical.com>
---
lxd/migrate_storage_volumes.go | 25 +++++++++++--------------
1 file changed, 11 insertions(+), 14 deletions(-)
diff --git a/lxd/migrate_storage_volumes.go b/lxd/migrate_storage_volumes.go
index a5d006b856..962febd8eb 100644
--- a/lxd/migrate_storage_volumes.go
+++ b/lxd/migrate_storage_volumes.go
@@ -40,7 +40,6 @@ func (s *migrationSourceWs) DoStorage(state *state.State, projectName string, po
<-s.allConnected
defer s.disconnect()
- var offerHeader migration.MigrationHeader
var poolMigrationTypes []migration.Type
pool, err := storagePools.GetPoolByName(state, poolName)
@@ -73,7 +72,7 @@ func (s *migrationSourceWs) DoStorage(state *state.State, projectName string, po
}
// Convert the pool's migration type options to an offer header to target.
- offerHeader = migration.TypesToHeader(poolMigrationTypes...)
+ offerHeader := migration.TypesToHeader(poolMigrationTypes...)
snapshots := []*migration.Snapshot{}
snapshotNames := []string{}
@@ -101,7 +100,7 @@ func (s *migrationSourceWs) DoStorage(state *state.State, projectName string, po
offerHeader.Snapshots = snapshots
// Send offer to target.
- err = s.send(&offerHeader)
+ err = s.send(offerHeader)
if err != nil {
logger.Errorf("Failed to send storage volume migration header")
s.sendControl(err)
@@ -109,9 +108,8 @@ func (s *migrationSourceWs) DoStorage(state *state.State, projectName string, po
}
// Receive response from target.
- var respHeader migration.MigrationHeader
- err = s.recv(&respHeader)
-
+ respHeader := &migration.MigrationHeader{}
+ err = s.recv(respHeader)
if err != nil {
logger.Errorf("Failed to receive storage volume migration header")
s.sendControl(err)
@@ -244,8 +242,9 @@ func (c *migrationSink) DoStorage(state *state.State, projectName string, poolNa
controller = c.dest.sendControl
}
- offerHeader := migration.MigrationHeader{}
- if err := receiver(&offerHeader); err != nil {
+ offerHeader := &migration.MigrationHeader{}
+ err = receiver(offerHeader)
+ if err != nil {
logger.Errorf("Failed to receive storage volume migration header")
controller(err)
return err
@@ -254,9 +253,6 @@ func (c *migrationSink) DoStorage(state *state.State, projectName string, poolNa
// The function that will be executed to receive the sender's migration data.
var myTarget func(conn *websocket.Conn, op *operations.Operation, args MigrationSinkArgs) error
- // The migration header to be sent back to source with our target options.
- var respHeader migration.MigrationHeader
-
pool, err := storagePools.GetPoolByName(state, poolName)
if err != nil {
return err
@@ -280,8 +276,9 @@ func (c *migrationSink) DoStorage(state *state.State, projectName string, poolNa
return err
}
+ // The migration header to be sent back to source with our target options.
// Convert response type to response header and copy snapshot info into it.
- respHeader = migration.TypesToHeader(respTypes...)
+ respHeader := migration.TypesToHeader(respTypes...)
respHeader.SnapshotNames = offerHeader.SnapshotNames
respHeader.Snapshots = offerHeader.Snapshots
@@ -309,7 +306,7 @@ func (c *migrationSink) DoStorage(state *state.State, projectName string, poolNa
return pool.CreateCustomVolumeFromMigration(projectName, &shared.WebsocketIO{Conn: conn}, volTargetArgs, op)
}
- err = sender(&respHeader)
+ err = sender(respHeader)
if err != nil {
logger.Errorf("Failed to send storage volume migration header")
controller(err)
@@ -392,7 +389,7 @@ func (c *migrationSink) DoStorage(state *state.State, projectName string, poolNa
// The source can only tell us it failed (e.g. if
// checkpointing failed). We have to tell the source
// whether or not the restore was successful.
- logger.Debugf("Unknown message %v from source", msg)
+ logger.Debugf("Unknown message %q from source", *msg.Message)
}
}
}
More information about the lxc-devel
mailing list