feat(region,hostdeployer): add f2fs feature support (#23178)

This commit is contained in:
wanyaoqi
2025-08-28 10:05:40 +08:00
committed by GitHub
parent a1bc7bc4fe
commit e264c84370
10 changed files with 417 additions and 224 deletions
+11 -4
View File
@@ -359,10 +359,11 @@ type DiskSnapshotpolicyInput struct {
}
type DiskRebuildInput struct {
BackupId *string `json:"backup_id,allowempty"`
TemplateId *string `json:"template_id,allowempty"`
Size *string `json:"size,allowempty"`
Fs *string `json:"fs,allowempty"`
BackupId *string `json:"backup_id,allowempty"`
TemplateId *string `json:"template_id,allowempty"`
Size *string `json:"size,allowempty"`
Fs *string `json:"fs,allowempty"`
FsFeatures *DiskFsFeatures `json:"fs_features,allowempty"`
}
type DiskFsExt4Features struct {
@@ -370,8 +371,14 @@ type DiskFsExt4Features struct {
ReservedBlocksPercentage int `json:"reserved_blocks_percentage"`
}
type DiskFsF2fsFeatures struct {
CaseInsensitive bool `json:"case_insensitive"`
OverprovisionRatioPercentage int `json:"overprovision_ratio_percentage"`
}
type DiskFsFeatures struct {
Ext4 *DiskFsExt4Features `json:"ext4"`
F2fs *DiskFsF2fsFeatures `json:"f2fs"`
}
func (d *DiskFsFeatures) String() string {
+10
View File
@@ -166,6 +166,16 @@ func ParseDiskConfig(diskStr string, idx int) (*compute.DiskConfig, error) {
return nil, errors.Errorf("invalid feature %s of %s", feature, diskConfig.Fs)
}
}
if diskConfig.Fs == "f2fs" {
if diskConfig.FsFeatures.F2fs == nil {
diskConfig.FsFeatures.F2fs = &compute.DiskFsF2fsFeatures{}
}
if feature == "casefold" {
diskConfig.FsFeatures.F2fs.CaseInsensitive = true
} else {
return nil, errors.Errorf("invalid feature %s of %s", feature, diskConfig.Fs)
}
}
}
case "format":
if !utils.IsInStringArray(str, osprofile.IMAGE_FORMAT_TYPES) {
@@ -102,6 +102,12 @@ func (d disk) validateCaseInsensitive(disk *models.SDisk, vm *apis.ContainerVolu
if !disk.FsFeatures.Ext4.CaseInsensitive {
return httperrors.NewInputParameterError("disk(%s) fs_features.ext4.case_insensitive is not set", disk.GetId())
}
if disk.FsFeatures.F2fs == nil {
return httperrors.NewInputParameterError("disk(%s) fs_features.f2fs is not set", disk.GetId())
}
if !disk.FsFeatures.F2fs.CaseInsensitive {
return httperrors.NewInputParameterError("disk(%s) fs_features.f2fs.case_insensitive is not set", disk.GetId())
}
if vm.Overlay != nil {
return httperrors.NewInputParameterError("can't use case_insensitive and overlay at the same time")
}
+18
View File
@@ -649,6 +649,14 @@ func (manager *SDiskManager) ValidateFsFeatures(fsType string, feature *api.Disk
return httperrors.NewInputParameterError("ext4.reserved_blocks_percentage must in range [1, 99]")
}
}
if feature.F2fs != nil {
if fsType != "f2fs" {
return httperrors.NewInputParameterError("only f2fs fs can set fs_features.f2fs, current is %q", fsType)
}
if feature.F2fs.OverprovisionRatioPercentage < 0 || feature.F2fs.OverprovisionRatioPercentage >= 100 {
return httperrors.NewInputParameterError("f2fs.reserved_blocks_percentage must in range [1, 99]")
}
}
return nil
}
@@ -3272,6 +3280,15 @@ func (disk *SDisk) resetDiskinfo(
if len(disk.FsFormat) == 0 {
return errors.Wrap(errors.ErrInvalidStatus, "fs_format must be set")
}
if input.Fs != nil {
if disk.FsFeatures != nil {
err := DiskManager.ValidateFsFeatures(*input.Fs, input.FsFeatures)
if err != nil {
return err
}
}
}
if input.TemplateId != nil {
if len(*input.TemplateId) > 0 {
imageObj, err := CachedimageManager.FetchByIdOrName(ctx, userCred, *input.TemplateId)
@@ -3320,6 +3337,7 @@ func (disk *SDisk) resetDiskinfo(
}
if input.Fs != nil {
disk.FsFormat = *input.Fs
disk.FsFeatures = input.FsFeatures
}
return nil
})
+13 -1
View File
@@ -441,7 +441,19 @@ func FormatPartition(path, fs, uuid string, fsFeatures *apis.FsFeatures) error {
cmd = []string{"mkfs.xfs", "-f", "-m", "crc=0", "-i", "projid32bit=0", "-n", "ftype=1"}
cmdUuid = []string{"xfs_admin", "-U", uuid}
case fs == "f2fs":
cmd = []string{"mkfs.f2fs", "-U", uuid, "-O", "extra_attr,inode_checksum,sb_checksum"}
cmd = []string{"mkfs.f2fs", "-U", uuid, "-O"}
options := "extra_attr,inode_checksum,sb_checksum"
if fsFeatures != nil && fsFeatures.F2Fs.CaseInsensitive {
options += ",casefold"
}
cmd = append(cmd, options)
if fsFeatures != nil && fsFeatures.F2Fs.CaseInsensitive {
cmd = append(cmd, "-C", "utf8")
}
if fsFeatures != nil && fsFeatures.F2Fs.OverprovisionRatioPercentage > 0 {
cmd = append(cmd, "-o", fmt.Sprintf("%d", fsFeatures.F2Fs.OverprovisionRatioPercentage))
}
}
if len(cmd) > 0 {
+300 -213
View File
@@ -11,12 +11,11 @@
package apis
import (
reflect "reflect"
sync "sync"
proto "github.com/golang/protobuf/proto"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
reflect "reflect"
sync "sync"
)
const (
@@ -1326,7 +1325,7 @@ type FsExt4Features struct {
unknownFields protoimpl.UnknownFields
CaseInsensitive bool `protobuf:"varint,1,opt,name=CaseInsensitive,proto3" json:"CaseInsensitive,omitempty"`
ReservedBlocksPercentage int32 `protobuf:"varint,2,opt,name=ReservedBlocksPercentage,proto3" json:"ReservedBlocksPercentage,omitempty"`
ReservedBlocksPercentage int32 `protobuf:"varint,2,opt,name=OverprovisionRatioPercentage,proto3" json:"OverprovisionRatioPercentage,omitempty"`
}
func (x *FsExt4Features) Reset() {
@@ -1375,18 +1374,74 @@ func (x *FsExt4Features) GetReservedBlocksPercentage() int32 {
return 0
}
type FsF2FsFeatures struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
CaseInsensitive bool `protobuf:"varint,1,opt,name=CaseInsensitive,proto3" json:"CaseInsensitive,omitempty"`
OverprovisionRatioPercentage int32 `protobuf:"varint,2,opt,name=OverprovisionRatioPercentage,proto3" json:"OverprovisionRatioPercentage,omitempty"`
}
func (x *FsF2FsFeatures) Reset() {
*x = FsF2FsFeatures{}
if protoimpl.UnsafeEnabled {
mi := &file_deploy_proto_msgTypes[14]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *FsF2FsFeatures) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*FsF2FsFeatures) ProtoMessage() {}
func (x *FsF2FsFeatures) ProtoReflect() protoreflect.Message {
mi := &file_deploy_proto_msgTypes[14]
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)
}
// Deprecated: Use FsF2FsFeatures.ProtoReflect.Descriptor instead.
func (*FsF2FsFeatures) Descriptor() ([]byte, []int) {
return file_deploy_proto_rawDescGZIP(), []int{14}
}
func (x *FsF2FsFeatures) GetCaseInsensitive() bool {
if x != nil {
return x.CaseInsensitive
}
return false
}
func (x *FsF2FsFeatures) GetOverprovisionRatioPercentage() int32 {
if x != nil {
return x.OverprovisionRatioPercentage
}
return 0
}
type FsFeatures struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Ext4 *FsExt4Features `protobuf:"bytes,1,opt,name=ext4,proto3" json:"ext4,omitempty"`
F2Fs *FsF2FsFeatures `protobuf:"bytes,2,opt,name=f2fs,proto3" json:"f2fs,omitempty"`
}
func (x *FsFeatures) Reset() {
*x = FsFeatures{}
if protoimpl.UnsafeEnabled {
mi := &file_deploy_proto_msgTypes[14]
mi := &file_deploy_proto_msgTypes[15]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1399,7 +1454,7 @@ func (x *FsFeatures) String() string {
func (*FsFeatures) ProtoMessage() {}
func (x *FsFeatures) ProtoReflect() protoreflect.Message {
mi := &file_deploy_proto_msgTypes[14]
mi := &file_deploy_proto_msgTypes[15]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1412,7 +1467,7 @@ func (x *FsFeatures) ProtoReflect() protoreflect.Message {
// Deprecated: Use FsFeatures.ProtoReflect.Descriptor instead.
func (*FsFeatures) Descriptor() ([]byte, []int) {
return file_deploy_proto_rawDescGZIP(), []int{14}
return file_deploy_proto_rawDescGZIP(), []int{15}
}
func (x *FsFeatures) GetExt4() *FsExt4Features {
@@ -1422,6 +1477,13 @@ func (x *FsFeatures) GetExt4() *FsExt4Features {
return nil
}
func (x *FsFeatures) GetF2Fs() *FsF2FsFeatures {
if x != nil {
return x.F2Fs
}
return nil
}
type FormatFsParams struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -1436,7 +1498,7 @@ type FormatFsParams struct {
func (x *FormatFsParams) Reset() {
*x = FormatFsParams{}
if protoimpl.UnsafeEnabled {
mi := &file_deploy_proto_msgTypes[15]
mi := &file_deploy_proto_msgTypes[16]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1449,7 +1511,7 @@ func (x *FormatFsParams) String() string {
func (*FormatFsParams) ProtoMessage() {}
func (x *FormatFsParams) ProtoReflect() protoreflect.Message {
mi := &file_deploy_proto_msgTypes[15]
mi := &file_deploy_proto_msgTypes[16]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1462,7 +1524,7 @@ func (x *FormatFsParams) ProtoReflect() protoreflect.Message {
// Deprecated: Use FormatFsParams.ProtoReflect.Descriptor instead.
func (*FormatFsParams) Descriptor() ([]byte, []int) {
return file_deploy_proto_rawDescGZIP(), []int{15}
return file_deploy_proto_rawDescGZIP(), []int{16}
}
func (x *FormatFsParams) GetDiskInfo() *DiskInfo {
@@ -1507,7 +1569,7 @@ type ReleaseInfo struct {
func (x *ReleaseInfo) Reset() {
*x = ReleaseInfo{}
if protoimpl.UnsafeEnabled {
mi := &file_deploy_proto_msgTypes[16]
mi := &file_deploy_proto_msgTypes[17]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1520,7 +1582,7 @@ func (x *ReleaseInfo) String() string {
func (*ReleaseInfo) ProtoMessage() {}
func (x *ReleaseInfo) ProtoReflect() protoreflect.Message {
mi := &file_deploy_proto_msgTypes[16]
mi := &file_deploy_proto_msgTypes[17]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1533,7 +1595,7 @@ func (x *ReleaseInfo) ProtoReflect() protoreflect.Message {
// Deprecated: Use ReleaseInfo.ProtoReflect.Descriptor instead.
func (*ReleaseInfo) Descriptor() ([]byte, []int) {
return file_deploy_proto_rawDescGZIP(), []int{16}
return file_deploy_proto_rawDescGZIP(), []int{17}
}
func (x *ReleaseInfo) GetDistro() string {
@@ -1576,7 +1638,7 @@ type SaveToGlanceParams struct {
func (x *SaveToGlanceParams) Reset() {
*x = SaveToGlanceParams{}
if protoimpl.UnsafeEnabled {
mi := &file_deploy_proto_msgTypes[17]
mi := &file_deploy_proto_msgTypes[18]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1589,7 +1651,7 @@ func (x *SaveToGlanceParams) String() string {
func (*SaveToGlanceParams) ProtoMessage() {}
func (x *SaveToGlanceParams) ProtoReflect() protoreflect.Message {
mi := &file_deploy_proto_msgTypes[17]
mi := &file_deploy_proto_msgTypes[18]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1602,7 +1664,7 @@ func (x *SaveToGlanceParams) ProtoReflect() protoreflect.Message {
// Deprecated: Use SaveToGlanceParams.ProtoReflect.Descriptor instead.
func (*SaveToGlanceParams) Descriptor() ([]byte, []int) {
return file_deploy_proto_rawDescGZIP(), []int{17}
return file_deploy_proto_rawDescGZIP(), []int{18}
}
func (x *SaveToGlanceParams) GetDiskInfo() *DiskInfo {
@@ -1631,7 +1693,7 @@ type SaveToGlanceResponse struct {
func (x *SaveToGlanceResponse) Reset() {
*x = SaveToGlanceResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_deploy_proto_msgTypes[18]
mi := &file_deploy_proto_msgTypes[19]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1644,7 +1706,7 @@ func (x *SaveToGlanceResponse) String() string {
func (*SaveToGlanceResponse) ProtoMessage() {}
func (x *SaveToGlanceResponse) ProtoReflect() protoreflect.Message {
mi := &file_deploy_proto_msgTypes[18]
mi := &file_deploy_proto_msgTypes[19]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1657,7 +1719,7 @@ func (x *SaveToGlanceResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use SaveToGlanceResponse.ProtoReflect.Descriptor instead.
func (*SaveToGlanceResponse) Descriptor() ([]byte, []int) {
return file_deploy_proto_rawDescGZIP(), []int{18}
return file_deploy_proto_rawDescGZIP(), []int{19}
}
func (x *SaveToGlanceResponse) GetOsInfo() string {
@@ -1685,7 +1747,7 @@ type ProbeImageInfoPramas struct {
func (x *ProbeImageInfoPramas) Reset() {
*x = ProbeImageInfoPramas{}
if protoimpl.UnsafeEnabled {
mi := &file_deploy_proto_msgTypes[19]
mi := &file_deploy_proto_msgTypes[20]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1698,7 +1760,7 @@ func (x *ProbeImageInfoPramas) String() string {
func (*ProbeImageInfoPramas) ProtoMessage() {}
func (x *ProbeImageInfoPramas) ProtoReflect() protoreflect.Message {
mi := &file_deploy_proto_msgTypes[19]
mi := &file_deploy_proto_msgTypes[20]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1711,7 +1773,7 @@ func (x *ProbeImageInfoPramas) ProtoReflect() protoreflect.Message {
// Deprecated: Use ProbeImageInfoPramas.ProtoReflect.Descriptor instead.
func (*ProbeImageInfoPramas) Descriptor() ([]byte, []int) {
return file_deploy_proto_rawDescGZIP(), []int{19}
return file_deploy_proto_rawDescGZIP(), []int{20}
}
func (x *ProbeImageInfoPramas) GetDiskInfo() *DiskInfo {
@@ -1738,7 +1800,7 @@ type ImageInfo struct {
func (x *ImageInfo) Reset() {
*x = ImageInfo{}
if protoimpl.UnsafeEnabled {
mi := &file_deploy_proto_msgTypes[20]
mi := &file_deploy_proto_msgTypes[21]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1751,7 +1813,7 @@ func (x *ImageInfo) String() string {
func (*ImageInfo) ProtoMessage() {}
func (x *ImageInfo) ProtoReflect() protoreflect.Message {
mi := &file_deploy_proto_msgTypes[20]
mi := &file_deploy_proto_msgTypes[21]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1764,7 +1826,7 @@ func (x *ImageInfo) ProtoReflect() protoreflect.Message {
// Deprecated: Use ImageInfo.ProtoReflect.Descriptor instead.
func (*ImageInfo) Descriptor() ([]byte, []int) {
return file_deploy_proto_rawDescGZIP(), []int{20}
return file_deploy_proto_rawDescGZIP(), []int{21}
}
func (x *ImageInfo) GetOsInfo() *ReleaseInfo {
@@ -1827,7 +1889,7 @@ type EsxiDiskInfo struct {
func (x *EsxiDiskInfo) Reset() {
*x = EsxiDiskInfo{}
if protoimpl.UnsafeEnabled {
mi := &file_deploy_proto_msgTypes[21]
mi := &file_deploy_proto_msgTypes[22]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1840,7 +1902,7 @@ func (x *EsxiDiskInfo) String() string {
func (*EsxiDiskInfo) ProtoMessage() {}
func (x *EsxiDiskInfo) ProtoReflect() protoreflect.Message {
mi := &file_deploy_proto_msgTypes[21]
mi := &file_deploy_proto_msgTypes[22]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1853,7 +1915,7 @@ func (x *EsxiDiskInfo) ProtoReflect() protoreflect.Message {
// Deprecated: Use EsxiDiskInfo.ProtoReflect.Descriptor instead.
func (*EsxiDiskInfo) Descriptor() ([]byte, []int) {
return file_deploy_proto_rawDescGZIP(), []int{21}
return file_deploy_proto_rawDescGZIP(), []int{22}
}
func (x *EsxiDiskInfo) GetDiskPath() string {
@@ -1875,7 +1937,7 @@ type ConnectEsxiDisksParams struct {
func (x *ConnectEsxiDisksParams) Reset() {
*x = ConnectEsxiDisksParams{}
if protoimpl.UnsafeEnabled {
mi := &file_deploy_proto_msgTypes[22]
mi := &file_deploy_proto_msgTypes[23]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1888,7 +1950,7 @@ func (x *ConnectEsxiDisksParams) String() string {
func (*ConnectEsxiDisksParams) ProtoMessage() {}
func (x *ConnectEsxiDisksParams) ProtoReflect() protoreflect.Message {
mi := &file_deploy_proto_msgTypes[22]
mi := &file_deploy_proto_msgTypes[23]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1901,7 +1963,7 @@ func (x *ConnectEsxiDisksParams) ProtoReflect() protoreflect.Message {
// Deprecated: Use ConnectEsxiDisksParams.ProtoReflect.Descriptor instead.
func (*ConnectEsxiDisksParams) Descriptor() ([]byte, []int) {
return file_deploy_proto_rawDescGZIP(), []int{22}
return file_deploy_proto_rawDescGZIP(), []int{23}
}
func (x *ConnectEsxiDisksParams) GetVddkInfo() *VDDKConInfo {
@@ -1929,7 +1991,7 @@ type EsxiDisksConnectionInfo struct {
func (x *EsxiDisksConnectionInfo) Reset() {
*x = EsxiDisksConnectionInfo{}
if protoimpl.UnsafeEnabled {
mi := &file_deploy_proto_msgTypes[23]
mi := &file_deploy_proto_msgTypes[24]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1942,7 +2004,7 @@ func (x *EsxiDisksConnectionInfo) String() string {
func (*EsxiDisksConnectionInfo) ProtoMessage() {}
func (x *EsxiDisksConnectionInfo) ProtoReflect() protoreflect.Message {
mi := &file_deploy_proto_msgTypes[23]
mi := &file_deploy_proto_msgTypes[24]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1955,7 +2017,7 @@ func (x *EsxiDisksConnectionInfo) ProtoReflect() protoreflect.Message {
// Deprecated: Use EsxiDisksConnectionInfo.ProtoReflect.Descriptor instead.
func (*EsxiDisksConnectionInfo) Descriptor() ([]byte, []int) {
return file_deploy_proto_rawDescGZIP(), []int{23}
return file_deploy_proto_rawDescGZIP(), []int{24}
}
func (x *EsxiDisksConnectionInfo) GetDisks() []*EsxiDiskInfo {
@@ -1979,7 +2041,7 @@ type BootDevices struct {
func (x *BootDevices) Reset() {
*x = BootDevices{}
if protoimpl.UnsafeEnabled {
mi := &file_deploy_proto_msgTypes[24]
mi := &file_deploy_proto_msgTypes[25]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1992,7 +2054,7 @@ func (x *BootDevices) String() string {
func (*BootDevices) ProtoMessage() {}
func (x *BootDevices) ProtoReflect() protoreflect.Message {
mi := &file_deploy_proto_msgTypes[24]
mi := &file_deploy_proto_msgTypes[25]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2005,7 +2067,7 @@ func (x *BootDevices) ProtoReflect() protoreflect.Message {
// Deprecated: Use BootDevices.ProtoReflect.Descriptor instead.
func (*BootDevices) Descriptor() ([]byte, []int) {
return file_deploy_proto_rawDescGZIP(), []int{24}
return file_deploy_proto_rawDescGZIP(), []int{25}
}
func (x *BootDevices) GetBootOrder() int32 {
@@ -2041,7 +2103,7 @@ type OvmfBootOrderParams struct {
func (x *OvmfBootOrderParams) Reset() {
*x = OvmfBootOrderParams{}
if protoimpl.UnsafeEnabled {
mi := &file_deploy_proto_msgTypes[25]
mi := &file_deploy_proto_msgTypes[26]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2054,7 +2116,7 @@ func (x *OvmfBootOrderParams) String() string {
func (*OvmfBootOrderParams) ProtoMessage() {}
func (x *OvmfBootOrderParams) ProtoReflect() protoreflect.Message {
mi := &file_deploy_proto_msgTypes[25]
mi := &file_deploy_proto_msgTypes[26]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2067,7 +2129,7 @@ func (x *OvmfBootOrderParams) ProtoReflect() protoreflect.Message {
// Deprecated: Use OvmfBootOrderParams.ProtoReflect.Descriptor instead.
func (*OvmfBootOrderParams) Descriptor() ([]byte, []int) {
return file_deploy_proto_rawDescGZIP(), []int{25}
return file_deploy_proto_rawDescGZIP(), []int{26}
}
func (x *OvmfBootOrderParams) GetOvmfVarsPath() string {
@@ -2287,128 +2349,139 @@ var file_deploy_proto_rawDesc = []byte{
0x65, 0x12, 0x3a, 0x0a, 0x18, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x42, 0x6c, 0x6f,
0x63, 0x6b, 0x73, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20,
0x01, 0x28, 0x05, 0x52, 0x18, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x42, 0x6c, 0x6f,
0x63, 0x6b, 0x73, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x22, 0x36, 0x0a,
0x63, 0x6b, 0x73, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x22, 0x7e, 0x0a,
0x0e, 0x46, 0x73, 0x46, 0x32, 0x66, 0x73, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12,
0x28, 0x0a, 0x0f, 0x43, 0x61, 0x73, 0x65, 0x49, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69,
0x76, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x43, 0x61, 0x73, 0x65, 0x49, 0x6e,
0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x12, 0x42, 0x0a, 0x1c, 0x4f, 0x76, 0x65,
0x72, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x50,
0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52,
0x1c, 0x4f, 0x76, 0x65, 0x72, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61,
0x74, 0x69, 0x6f, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x22, 0x60, 0x0a,
0x0a, 0x46, 0x73, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x04, 0x65,
0x78, 0x74, 0x34, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x73,
0x2e, 0x46, 0x73, 0x45, 0x78, 0x74, 0x34, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52,
0x04, 0x65, 0x78, 0x74, 0x34, 0x22, 0xa1, 0x01, 0x0a, 0x0e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74,
0x46, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2b, 0x0a, 0x09, 0x64, 0x69, 0x73, 0x6b,
0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x61, 0x70,
0x69, 0x73, 0x2e, 0x44, 0x69, 0x73, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x64, 0x69, 0x73,
0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x73, 0x5f, 0x66, 0x6f, 0x72, 0x6d,
0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x73, 0x46, 0x6f, 0x72, 0x6d,
0x61, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x31, 0x0a, 0x0b, 0x66, 0x73, 0x5f, 0x66, 0x65, 0x61,
0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x70,
0x69, 0x73, 0x2e, 0x46, 0x73, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x0a, 0x66,
0x73, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x22, 0x6f, 0x0a, 0x0b, 0x52, 0x65, 0x6c,
0x65, 0x61, 0x73, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x73, 0x74,
0x72, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x73, 0x74, 0x72, 0x6f,
0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28,
0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72,
0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x63, 0x68, 0x12, 0x1a,
0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x22, 0x5d, 0x0a, 0x12, 0x53, 0x61,
0x76, 0x65, 0x54, 0x6f, 0x47, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73,
0x12, 0x2b, 0x0a, 0x09, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x44, 0x69, 0x73, 0x6b, 0x49,
0x6e, 0x66, 0x6f, 0x52, 0x08, 0x64, 0x69, 0x73, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a,
0x08, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52,
0x08, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x22, 0x65, 0x0a, 0x14, 0x53, 0x61, 0x76,
0x65, 0x54, 0x6f, 0x47, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x65, 0x12, 0x17, 0x0a, 0x07, 0x6f, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01,
0x28, 0x09, 0x52, 0x06, 0x6f, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x34, 0x0a, 0x0c, 0x72, 0x65,
0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x11, 0x2e, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x49,
0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x49, 0x6e, 0x66, 0x6f,
0x22, 0x43, 0x0a, 0x14, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x6e,
0x66, 0x6f, 0x50, 0x72, 0x61, 0x6d, 0x61, 0x73, 0x12, 0x2b, 0x0a, 0x09, 0x64, 0x69, 0x73, 0x6b,
0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x61, 0x70,
0x69, 0x73, 0x2e, 0x44, 0x69, 0x73, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x64, 0x69, 0x73,
0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xb2, 0x02, 0x0a, 0x09, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x49,
0x6e, 0x66, 0x6f, 0x12, 0x2a, 0x0a, 0x07, 0x6f, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x52, 0x65, 0x6c, 0x65,
0x61, 0x73, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x6f, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12,
0x17, 0x0a, 0x07, 0x6f, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
0x52, 0x06, 0x6f, 0x73, 0x54, 0x79, 0x70, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x73, 0x5f, 0x75,
0x65, 0x66, 0x69, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28,
0x08, 0x52, 0x0d, 0x69, 0x73, 0x55, 0x65, 0x66, 0x69, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74,
0x12, 0x28, 0x0a, 0x10, 0x69, 0x73, 0x5f, 0x6c, 0x76, 0x6d, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69,
0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x73, 0x4c, 0x76,
0x6d, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x73,
0x5f, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52,
0x0a, 0x69, 0x73, 0x52, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x12, 0x36, 0x0a, 0x17, 0x70,
0x68, 0x79, 0x73, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f,
0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x70, 0x68,
0x79, 0x73, 0x69, 0x63, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54,
0x79, 0x70, 0x65, 0x12, 0x35, 0x0a, 0x17, 0x69, 0x73, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c,
0x6c, 0x65, 0x64, 0x5f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x18, 0x07,
0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x69, 0x73, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65,
0x64, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x49, 0x6e, 0x69, 0x74, 0x22, 0x2b, 0x0a, 0x0c, 0x45, 0x73,
0x78, 0x69, 0x44, 0x69, 0x73, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x69,
0x73, 0x6b, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64,
0x69, 0x73, 0x6b, 0x50, 0x61, 0x74, 0x68, 0x22, 0x7d, 0x0a, 0x16, 0x43, 0x6f, 0x6e, 0x6e, 0x65,
0x63, 0x74, 0x45, 0x73, 0x78, 0x69, 0x44, 0x69, 0x73, 0x6b, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d,
0x73, 0x12, 0x2e, 0x0a, 0x09, 0x76, 0x64, 0x64, 0x6b, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x56, 0x44, 0x44, 0x4b,
0x43, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x76, 0x64, 0x64, 0x6b, 0x49, 0x6e, 0x66,
0x6f, 0x12, 0x33, 0x0a, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x6f,
0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x45, 0x73,
0x78, 0x69, 0x44, 0x69, 0x73, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x61, 0x63, 0x63, 0x65,
0x73, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x43, 0x0a, 0x17, 0x45, 0x73, 0x78, 0x69, 0x44, 0x69,
0x73, 0x6b, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66,
0x6f, 0x12, 0x28, 0x0a, 0x05, 0x64, 0x69, 0x73, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
0x04, 0x65, 0x78, 0x74, 0x34, 0x12, 0x28, 0x0a, 0x04, 0x66, 0x32, 0x66, 0x73, 0x18, 0x02, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x46, 0x73, 0x46, 0x32, 0x66,
0x73, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x04, 0x66, 0x32, 0x66, 0x73, 0x22,
0xa1, 0x01, 0x0a, 0x0e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x46, 0x73, 0x50, 0x61, 0x72, 0x61,
0x6d, 0x73, 0x12, 0x2b, 0x0a, 0x09, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18,
0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x44, 0x69, 0x73,
0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x64, 0x69, 0x73, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12,
0x1b, 0x0a, 0x09, 0x66, 0x73, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01,
0x28, 0x09, 0x52, 0x08, 0x66, 0x73, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x12, 0x0a, 0x04,
0x75, 0x75, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64,
0x12, 0x31, 0x0a, 0x0b, 0x66, 0x73, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18,
0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x46, 0x73, 0x46,
0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x0a, 0x66, 0x73, 0x46, 0x65, 0x61, 0x74, 0x75,
0x72, 0x65, 0x73, 0x22, 0x6f, 0x0a, 0x0b, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x49, 0x6e,
0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x73, 0x74, 0x72, 0x6f, 0x18, 0x01, 0x20, 0x01,
0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x73, 0x74, 0x72, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65,
0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72,
0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01,
0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x63, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67,
0x75, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67,
0x75, 0x61, 0x67, 0x65, 0x22, 0x5d, 0x0a, 0x12, 0x53, 0x61, 0x76, 0x65, 0x54, 0x6f, 0x47, 0x6c,
0x61, 0x6e, 0x63, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2b, 0x0a, 0x09, 0x64, 0x69,
0x73, 0x6b, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e,
0x61, 0x70, 0x69, 0x73, 0x2e, 0x44, 0x69, 0x73, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x64,
0x69, 0x73, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6d, 0x70, 0x72,
0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x70, 0x72,
0x65, 0x73, 0x73, 0x22, 0x65, 0x0a, 0x14, 0x53, 0x61, 0x76, 0x65, 0x54, 0x6f, 0x47, 0x6c, 0x61,
0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x6f,
0x73, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x73,
0x49, 0x6e, 0x66, 0x6f, 0x12, 0x34, 0x0a, 0x0c, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f,
0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x61, 0x70, 0x69,
0x73, 0x2e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x72,
0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x43, 0x0a, 0x14, 0x50, 0x72,
0x6f, 0x62, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x50, 0x72, 0x61, 0x6d,
0x61, 0x73, 0x12, 0x2b, 0x0a, 0x09, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18,
0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x44, 0x69, 0x73,
0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x64, 0x69, 0x73, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x22,
0xb2, 0x02, 0x0a, 0x09, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2a, 0x0a,
0x07, 0x6f, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11,
0x2e, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x49, 0x6e, 0x66,
0x6f, 0x52, 0x06, 0x6f, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x17, 0x0a, 0x07, 0x6f, 0x73, 0x5f,
0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x73, 0x54, 0x79,
0x70, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x73, 0x5f, 0x75, 0x65, 0x66, 0x69, 0x5f, 0x73, 0x75,
0x70, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x73, 0x55,
0x65, 0x66, 0x69, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x69, 0x73,
0x5f, 0x6c, 0x76, 0x6d, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04,
0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x73, 0x4c, 0x76, 0x6d, 0x50, 0x61, 0x72, 0x74, 0x69,
0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x6f,
0x6e, 0x6c, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, 0x52, 0x65, 0x61,
0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x12, 0x36, 0x0a, 0x17, 0x70, 0x68, 0x79, 0x73, 0x69, 0x63, 0x61,
0x6c, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65,
0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x70, 0x68, 0x79, 0x73, 0x69, 0x63, 0x61, 0x6c,
0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x35, 0x0a,
0x17, 0x69, 0x73, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x5f, 0x63, 0x6c,
0x6f, 0x75, 0x64, 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14,
0x69, 0x73, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x43, 0x6c, 0x6f, 0x75, 0x64,
0x49, 0x6e, 0x69, 0x74, 0x22, 0x2b, 0x0a, 0x0c, 0x45, 0x73, 0x78, 0x69, 0x44, 0x69, 0x73, 0x6b,
0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x70, 0x61, 0x74,
0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x69, 0x73, 0x6b, 0x50, 0x61, 0x74,
0x68, 0x22, 0x7d, 0x0a, 0x16, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x45, 0x73, 0x78, 0x69,
0x44, 0x69, 0x73, 0x6b, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2e, 0x0a, 0x09, 0x76,
0x64, 0x64, 0x6b, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11,
0x2e, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x56, 0x44, 0x44, 0x4b, 0x43, 0x6f, 0x6e, 0x49, 0x6e, 0x66,
0x6f, 0x52, 0x08, 0x76, 0x64, 0x64, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x33, 0x0a, 0x0b, 0x61,
0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b,
0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x45, 0x73, 0x78, 0x69, 0x44, 0x69, 0x73, 0x6b,
0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x64, 0x69, 0x73, 0x6b, 0x73, 0x22, 0x67, 0x0a, 0x0b, 0x42,
0x6f, 0x6f, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x6f,
0x6f, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x42,
0x6f, 0x6f, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x44, 0x65, 0x76, 0x54,
0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x44, 0x65, 0x76, 0x54, 0x79,
0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x4f, 0x72, 0x64, 0x65,
0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x4f,
0x72, 0x64, 0x65, 0x72, 0x22, 0x60, 0x0a, 0x13, 0x4f, 0x76, 0x6d, 0x66, 0x42, 0x6f, 0x6f, 0x74,
0x4f, 0x72, 0x64, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x4f,
0x76, 0x6d, 0x66, 0x56, 0x61, 0x72, 0x73, 0x50, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x52, 0x0c, 0x4f, 0x76, 0x6d, 0x66, 0x56, 0x61, 0x72, 0x73, 0x50, 0x61, 0x74, 0x68, 0x12,
0x25, 0x0a, 0x04, 0x64, 0x65, 0x76, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e,
0x61, 0x70, 0x69, 0x73, 0x2e, 0x42, 0x6f, 0x6f, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73,
0x52, 0x04, 0x64, 0x65, 0x76, 0x73, 0x32, 0x82, 0x04, 0x0a, 0x0b, 0x44, 0x65, 0x70, 0x6c, 0x6f,
0x79, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x40, 0x0a, 0x0d, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79,
0x47, 0x75, 0x65, 0x73, 0x74, 0x46, 0x73, 0x12, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x44,
0x65, 0x70, 0x6c, 0x6f, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x1b, 0x2e, 0x61, 0x70,
0x69, 0x73, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x47, 0x75, 0x65, 0x73, 0x74, 0x46, 0x73,
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x69,
0x7a, 0x65, 0x46, 0x73, 0x12, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x69,
0x7a, 0x65, 0x46, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x0b, 0x2e, 0x61, 0x70, 0x69,
0x73, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x2d, 0x0a, 0x08, 0x46, 0x6f, 0x72, 0x6d, 0x61,
0x74, 0x46, 0x73, 0x12, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61,
0x74, 0x46, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x0b, 0x2e, 0x61, 0x70, 0x69, 0x73,
0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x44, 0x0a, 0x0c, 0x53, 0x61, 0x76, 0x65, 0x54, 0x6f,
0x47, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x53, 0x61,
0x76, 0x65, 0x54, 0x6f, 0x47, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73,
0x1a, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x54, 0x6f, 0x47, 0x6c,
0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0e,
0x50, 0x72, 0x6f, 0x62, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a,
0x2e, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65,
0x49, 0x6e, 0x66, 0x6f, 0x50, 0x72, 0x61, 0x6d, 0x61, 0x73, 0x1a, 0x0f, 0x2e, 0x61, 0x70, 0x69,
0x73, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x4f, 0x0a, 0x10, 0x43,
0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x45, 0x73, 0x78, 0x69, 0x44, 0x69, 0x73, 0x6b, 0x73, 0x12,
0x1c, 0x2e, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x45, 0x73,
0x78, 0x69, 0x44, 0x69, 0x73, 0x6b, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x1d, 0x2e,
0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x66, 0x6f,
0x22, 0x43, 0x0a, 0x17, 0x45, 0x73, 0x78, 0x69, 0x44, 0x69, 0x73, 0x6b, 0x73, 0x43, 0x6f, 0x6e,
0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x28, 0x0a, 0x05, 0x64,
0x69, 0x73, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69,
0x73, 0x2e, 0x45, 0x73, 0x78, 0x69, 0x44, 0x69, 0x73, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05,
0x64, 0x69, 0x73, 0x6b, 0x73, 0x22, 0x67, 0x0a, 0x0b, 0x42, 0x6f, 0x6f, 0x74, 0x44, 0x65, 0x76,
0x69, 0x63, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x6f, 0x6f, 0x74, 0x4f, 0x72, 0x64, 0x65,
0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x42, 0x6f, 0x6f, 0x74, 0x4f, 0x72, 0x64,
0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x44, 0x65, 0x76, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20,
0x01, 0x28, 0x05, 0x52, 0x07, 0x44, 0x65, 0x76, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b,
0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28,
0x05, 0x52, 0x0b, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x22, 0x60,
0x0a, 0x13, 0x4f, 0x76, 0x6d, 0x66, 0x42, 0x6f, 0x6f, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x50,
0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x4f, 0x76, 0x6d, 0x66, 0x56, 0x61, 0x72,
0x73, 0x50, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x4f, 0x76, 0x6d,
0x66, 0x56, 0x61, 0x72, 0x73, 0x50, 0x61, 0x74, 0x68, 0x12, 0x25, 0x0a, 0x04, 0x64, 0x65, 0x76,
0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x42,
0x6f, 0x6f, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x04, 0x64, 0x65, 0x76, 0x73,
0x32, 0x82, 0x04, 0x0a, 0x0b, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x41, 0x67, 0x65, 0x6e, 0x74,
0x12, 0x40, 0x0a, 0x0d, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x47, 0x75, 0x65, 0x73, 0x74, 0x46,
0x73, 0x12, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x50,
0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x44, 0x65, 0x70,
0x6c, 0x6f, 0x79, 0x47, 0x75, 0x65, 0x73, 0x74, 0x46, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
0x73, 0x65, 0x12, 0x2d, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x69, 0x7a, 0x65, 0x46, 0x73, 0x12, 0x14,
0x2e, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x69, 0x7a, 0x65, 0x46, 0x73, 0x50, 0x61,
0x72, 0x61, 0x6d, 0x73, 0x1a, 0x0b, 0x2e, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x45, 0x6d, 0x70, 0x74,
0x79, 0x12, 0x2d, 0x0a, 0x08, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x46, 0x73, 0x12, 0x14, 0x2e,
0x61, 0x70, 0x69, 0x73, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x46, 0x73, 0x50, 0x61, 0x72,
0x61, 0x6d, 0x73, 0x1a, 0x0b, 0x2e, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79,
0x12, 0x44, 0x0a, 0x0c, 0x53, 0x61, 0x76, 0x65, 0x54, 0x6f, 0x47, 0x6c, 0x61, 0x6e, 0x63, 0x65,
0x12, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x54, 0x6f, 0x47, 0x6c,
0x61, 0x6e, 0x63, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x1a, 0x2e, 0x61, 0x70, 0x69,
0x73, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x54, 0x6f, 0x47, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65,
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x49,
0x6d, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x73, 0x2e,
0x50, 0x72, 0x6f, 0x62, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x50, 0x72,
0x61, 0x6d, 0x61, 0x73, 0x1a, 0x0f, 0x2e, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x49, 0x6d, 0x61, 0x67,
0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x4f, 0x0a, 0x10, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74,
0x45, 0x73, 0x78, 0x69, 0x44, 0x69, 0x73, 0x6b, 0x73, 0x12, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x73,
0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x45, 0x73, 0x78, 0x69, 0x44, 0x69, 0x73, 0x6b,
0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x45,
0x73, 0x78, 0x69, 0x44, 0x69, 0x73, 0x6b, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69,
0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x41, 0x0a, 0x13, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x6e,
0x6e, 0x65, 0x63, 0x74, 0x45, 0x73, 0x78, 0x69, 0x44, 0x69, 0x73, 0x6b, 0x73, 0x12, 0x1d, 0x2e,
0x61, 0x70, 0x69, 0x73, 0x2e, 0x45, 0x73, 0x78, 0x69, 0x44, 0x69, 0x73, 0x6b, 0x73, 0x43, 0x6f,
0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x41, 0x0a, 0x13,
0x44, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x45, 0x73, 0x78, 0x69, 0x44, 0x69,
0x73, 0x6b, 0x73, 0x12, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x45, 0x73, 0x78, 0x69, 0x44,
0x69, 0x73, 0x6b, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e,
0x66, 0x6f, 0x1a, 0x0b, 0x2e, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12,
0x3a, 0x0a, 0x10, 0x53, 0x65, 0x74, 0x4f, 0x76, 0x6d, 0x66, 0x42, 0x6f, 0x6f, 0x74, 0x4f, 0x72,
0x64, 0x65, 0x72, 0x12, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x4f, 0x76, 0x6d, 0x66, 0x42,
0x6f, 0x6f, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x0b,
0x2e, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x42, 0x34, 0x5a, 0x32, 0x79,
0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x2e, 0x69, 0x6f, 0x2f, 0x78, 0x2f, 0x6f, 0x6e, 0x65, 0x63, 0x6c,
0x6f, 0x75, 0x64, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x68, 0x6f, 0x73, 0x74, 0x6d, 0x61, 0x6e, 0x2f,
0x68, 0x6f, 0x73, 0x74, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x72, 0x2f, 0x61, 0x70, 0x69,
0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x0b, 0x2e, 0x61,
0x70, 0x69, 0x73, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x3a, 0x0a, 0x10, 0x53, 0x65, 0x74,
0x4f, 0x76, 0x6d, 0x66, 0x42, 0x6f, 0x6f, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x19, 0x2e,
0x61, 0x70, 0x69, 0x73, 0x2e, 0x4f, 0x76, 0x6d, 0x66, 0x42, 0x6f, 0x6f, 0x74, 0x4f, 0x72, 0x64,
0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x0b, 0x2e, 0x61, 0x70, 0x69, 0x73, 0x2e,
0x45, 0x6d, 0x70, 0x74, 0x79, 0x42, 0x34, 0x5a, 0x32, 0x79, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x2e,
0x69, 0x6f, 0x2f, 0x78, 0x2f, 0x6f, 0x6e, 0x65, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x70, 0x6b,
0x67, 0x2f, 0x68, 0x6f, 0x73, 0x74, 0x6d, 0x61, 0x6e, 0x2f, 0x68, 0x6f, 0x73, 0x74, 0x64, 0x65,
0x70, 0x6c, 0x6f, 0x79, 0x65, 0x72, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x33,
}
var (
@@ -2423,7 +2496,7 @@ func file_deploy_proto_rawDescGZIP() []byte {
return file_deploy_proto_rawDescData
}
var file_deploy_proto_msgTypes = make([]protoimpl.MessageInfo, 26)
var file_deploy_proto_msgTypes = make([]protoimpl.MessageInfo, 27)
var file_deploy_proto_goTypes = []interface{}{
(*GuestDesc)(nil), // 0: apis.GuestDesc
(*Disk)(nil), // 1: apis.Disk
@@ -2439,18 +2512,19 @@ var file_deploy_proto_goTypes = []interface{}{
(*DeployParams)(nil), // 11: apis.DeployParams
(*ResizeFsParams)(nil), // 12: apis.ResizeFsParams
(*FsExt4Features)(nil), // 13: apis.FsExt4Features
(*FsFeatures)(nil), // 14: apis.FsFeatures
(*FormatFsParams)(nil), // 15: apis.FormatFsParams
(*ReleaseInfo)(nil), // 16: apis.ReleaseInfo
(*SaveToGlanceParams)(nil), // 17: apis.SaveToGlanceParams
(*SaveToGlanceResponse)(nil), // 18: apis.SaveToGlanceResponse
(*ProbeImageInfoPramas)(nil), // 19: apis.ProbeImageInfoPramas
(*ImageInfo)(nil), // 20: apis.ImageInfo
(*EsxiDiskInfo)(nil), // 21: apis.EsxiDiskInfo
(*ConnectEsxiDisksParams)(nil), // 22: apis.ConnectEsxiDisksParams
(*EsxiDisksConnectionInfo)(nil), // 23: apis.EsxiDisksConnectionInfo
(*BootDevices)(nil), // 24: apis.BootDevices
(*OvmfBootOrderParams)(nil), // 25: apis.OvmfBootOrderParams
(*FsF2FsFeatures)(nil), // 14: apis.FsF2fsFeatures
(*FsFeatures)(nil), // 15: apis.FsFeatures
(*FormatFsParams)(nil), // 16: apis.FormatFsParams
(*ReleaseInfo)(nil), // 17: apis.ReleaseInfo
(*SaveToGlanceParams)(nil), // 18: apis.SaveToGlanceParams
(*SaveToGlanceResponse)(nil), // 19: apis.SaveToGlanceResponse
(*ProbeImageInfoPramas)(nil), // 20: apis.ProbeImageInfoPramas
(*ImageInfo)(nil), // 21: apis.ImageInfo
(*EsxiDiskInfo)(nil), // 22: apis.EsxiDiskInfo
(*ConnectEsxiDisksParams)(nil), // 23: apis.ConnectEsxiDisksParams
(*EsxiDisksConnectionInfo)(nil), // 24: apis.EsxiDisksConnectionInfo
(*BootDevices)(nil), // 25: apis.BootDevices
(*OvmfBootOrderParams)(nil), // 26: apis.OvmfBootOrderParams
}
var file_deploy_proto_depIdxs = []int32{
2, // 0: apis.GuestDesc.nics:type_name -> apis.Nic
@@ -2466,37 +2540,38 @@ var file_deploy_proto_depIdxs = []int32{
10, // 10: apis.ResizeFsParams.disk_info:type_name -> apis.DiskInfo
3, // 11: apis.ResizeFsParams.vddk_info:type_name -> apis.VDDKConInfo
13, // 12: apis.FsFeatures.ext4:type_name -> apis.FsExt4Features
10, // 13: apis.FormatFsParams.disk_info:type_name -> apis.DiskInfo
14, // 14: apis.FormatFsParams.fs_features:type_name -> apis.FsFeatures
10, // 15: apis.SaveToGlanceParams.disk_info:type_name -> apis.DiskInfo
16, // 16: apis.SaveToGlanceResponse.release_info:type_name -> apis.ReleaseInfo
10, // 17: apis.ProbeImageInfoPramas.disk_info:type_name -> apis.DiskInfo
16, // 18: apis.ImageInfo.os_info:type_name -> apis.ReleaseInfo
3, // 19: apis.ConnectEsxiDisksParams.vddk_info:type_name -> apis.VDDKConInfo
21, // 20: apis.ConnectEsxiDisksParams.access_info:type_name -> apis.EsxiDiskInfo
21, // 21: apis.EsxiDisksConnectionInfo.disks:type_name -> apis.EsxiDiskInfo
24, // 22: apis.OvmfBootOrderParams.devs:type_name -> apis.BootDevices
11, // 23: apis.DeployAgent.DeployGuestFs:input_type -> apis.DeployParams
12, // 24: apis.DeployAgent.ResizeFs:input_type -> apis.ResizeFsParams
15, // 25: apis.DeployAgent.FormatFs:input_type -> apis.FormatFsParams
17, // 26: apis.DeployAgent.SaveToGlance:input_type -> apis.SaveToGlanceParams
19, // 27: apis.DeployAgent.ProbeImageInfo:input_type -> apis.ProbeImageInfoPramas
22, // 28: apis.DeployAgent.ConnectEsxiDisks:input_type -> apis.ConnectEsxiDisksParams
23, // 29: apis.DeployAgent.DisconnectEsxiDisks:input_type -> apis.EsxiDisksConnectionInfo
25, // 30: apis.DeployAgent.SetOvmfBootOrder:input_type -> apis.OvmfBootOrderParams
9, // 31: apis.DeployAgent.DeployGuestFs:output_type -> apis.DeployGuestFsResponse
8, // 32: apis.DeployAgent.ResizeFs:output_type -> apis.Empty
8, // 33: apis.DeployAgent.FormatFs:output_type -> apis.Empty
18, // 34: apis.DeployAgent.SaveToGlance:output_type -> apis.SaveToGlanceResponse
20, // 35: apis.DeployAgent.ProbeImageInfo:output_type -> apis.ImageInfo
23, // 36: apis.DeployAgent.ConnectEsxiDisks:output_type -> apis.EsxiDisksConnectionInfo
8, // 37: apis.DeployAgent.DisconnectEsxiDisks:output_type -> apis.Empty
8, // 38: apis.DeployAgent.SetOvmfBootOrder:output_type -> apis.Empty
31, // [31:39] is the sub-list for method output_type
23, // [23:31] is the sub-list for method input_type
23, // [23:23] is the sub-list for extension type_name
23, // [23:23] is the sub-list for extension extendee
0, // [0:23] is the sub-list for field type_name
14, // 13: apis.FsFeatures.f2fs:type_name -> apis.FsF2fsFeatures
10, // 14: apis.FormatFsParams.disk_info:type_name -> apis.DiskInfo
15, // 15: apis.FormatFsParams.fs_features:type_name -> apis.FsFeatures
10, // 16: apis.SaveToGlanceParams.disk_info:type_name -> apis.DiskInfo
17, // 17: apis.SaveToGlanceResponse.release_info:type_name -> apis.ReleaseInfo
10, // 18: apis.ProbeImageInfoPramas.disk_info:type_name -> apis.DiskInfo
17, // 19: apis.ImageInfo.os_info:type_name -> apis.ReleaseInfo
3, // 20: apis.ConnectEsxiDisksParams.vddk_info:type_name -> apis.VDDKConInfo
22, // 21: apis.ConnectEsxiDisksParams.access_info:type_name -> apis.EsxiDiskInfo
22, // 22: apis.EsxiDisksConnectionInfo.disks:type_name -> apis.EsxiDiskInfo
25, // 23: apis.OvmfBootOrderParams.devs:type_name -> apis.BootDevices
11, // 24: apis.DeployAgent.DeployGuestFs:input_type -> apis.DeployParams
12, // 25: apis.DeployAgent.ResizeFs:input_type -> apis.ResizeFsParams
16, // 26: apis.DeployAgent.FormatFs:input_type -> apis.FormatFsParams
18, // 27: apis.DeployAgent.SaveToGlance:input_type -> apis.SaveToGlanceParams
20, // 28: apis.DeployAgent.ProbeImageInfo:input_type -> apis.ProbeImageInfoPramas
23, // 29: apis.DeployAgent.ConnectEsxiDisks:input_type -> apis.ConnectEsxiDisksParams
24, // 30: apis.DeployAgent.DisconnectEsxiDisks:input_type -> apis.EsxiDisksConnectionInfo
26, // 31: apis.DeployAgent.SetOvmfBootOrder:input_type -> apis.OvmfBootOrderParams
9, // 32: apis.DeployAgent.DeployGuestFs:output_type -> apis.DeployGuestFsResponse
8, // 33: apis.DeployAgent.ResizeFs:output_type -> apis.Empty
8, // 34: apis.DeployAgent.FormatFs:output_type -> apis.Empty
19, // 35: apis.DeployAgent.SaveToGlance:output_type -> apis.SaveToGlanceResponse
21, // 36: apis.DeployAgent.ProbeImageInfo:output_type -> apis.ImageInfo
24, // 37: apis.DeployAgent.ConnectEsxiDisks:output_type -> apis.EsxiDisksConnectionInfo
8, // 38: apis.DeployAgent.DisconnectEsxiDisks:output_type -> apis.Empty
8, // 39: apis.DeployAgent.SetOvmfBootOrder:output_type -> apis.Empty
32, // [32:40] is the sub-list for method output_type
24, // [24:32] is the sub-list for method input_type
24, // [24:24] is the sub-list for extension type_name
24, // [24:24] is the sub-list for extension extendee
0, // [0:24] is the sub-list for field type_name
}
func init() { file_deploy_proto_init() }
@@ -2674,7 +2749,7 @@ func file_deploy_proto_init() {
}
}
file_deploy_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*FsFeatures); i {
switch v := v.(*FsF2FsFeatures); i {
case 0:
return &v.state
case 1:
@@ -2686,7 +2761,7 @@ func file_deploy_proto_init() {
}
}
file_deploy_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*FormatFsParams); i {
switch v := v.(*FsFeatures); i {
case 0:
return &v.state
case 1:
@@ -2698,7 +2773,7 @@ func file_deploy_proto_init() {
}
}
file_deploy_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ReleaseInfo); i {
switch v := v.(*FormatFsParams); i {
case 0:
return &v.state
case 1:
@@ -2710,7 +2785,7 @@ func file_deploy_proto_init() {
}
}
file_deploy_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SaveToGlanceParams); i {
switch v := v.(*ReleaseInfo); i {
case 0:
return &v.state
case 1:
@@ -2722,7 +2797,7 @@ func file_deploy_proto_init() {
}
}
file_deploy_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SaveToGlanceResponse); i {
switch v := v.(*SaveToGlanceParams); i {
case 0:
return &v.state
case 1:
@@ -2734,7 +2809,7 @@ func file_deploy_proto_init() {
}
}
file_deploy_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ProbeImageInfoPramas); i {
switch v := v.(*SaveToGlanceResponse); i {
case 0:
return &v.state
case 1:
@@ -2746,7 +2821,7 @@ func file_deploy_proto_init() {
}
}
file_deploy_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ImageInfo); i {
switch v := v.(*ProbeImageInfoPramas); i {
case 0:
return &v.state
case 1:
@@ -2758,7 +2833,7 @@ func file_deploy_proto_init() {
}
}
file_deploy_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*EsxiDiskInfo); i {
switch v := v.(*ImageInfo); i {
case 0:
return &v.state
case 1:
@@ -2770,7 +2845,7 @@ func file_deploy_proto_init() {
}
}
file_deploy_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ConnectEsxiDisksParams); i {
switch v := v.(*EsxiDiskInfo); i {
case 0:
return &v.state
case 1:
@@ -2782,7 +2857,7 @@ func file_deploy_proto_init() {
}
}
file_deploy_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*EsxiDisksConnectionInfo); i {
switch v := v.(*ConnectEsxiDisksParams); i {
case 0:
return &v.state
case 1:
@@ -2794,7 +2869,7 @@ func file_deploy_proto_init() {
}
}
file_deploy_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*BootDevices); i {
switch v := v.(*EsxiDisksConnectionInfo); i {
case 0:
return &v.state
case 1:
@@ -2806,6 +2881,18 @@ func file_deploy_proto_init() {
}
}
file_deploy_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*BootDevices); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_deploy_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*OvmfBootOrderParams); i {
case 0:
return &v.state
@@ -2824,7 +2911,7 @@ func file_deploy_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_deploy_proto_rawDesc,
NumEnums: 0,
NumMessages: 26,
NumMessages: 27,
NumExtensions: 0,
NumServices: 1,
},
@@ -151,8 +151,14 @@ message FsExt4Features {
int32 ReservedBlocksPercentage = 2;
}
message FsF2fsFeatures {
bool CaseInsensitive = 1;
int32 OverprovisionRatioPercentage = 2;
}
message FsFeatures {
FsExt4Features ext4 = 1;
FsF2fsFeatures f2fs = 2;
}
message FormatFsParams {
@@ -4,7 +4,6 @@ package apis
import (
context "context"
grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes"
status "google.golang.org/grpc/status"
+6
View File
@@ -232,6 +232,12 @@ func ConvertDiskFsFeaturesToDeploy(fsFeatures *api.DiskFsFeatures) *deployapi.Fs
ReservedBlocksPercentage: int32(fsFeatures.Ext4.ReservedBlocksPercentage),
}
}
if fsFeatures.F2fs != nil {
ret.F2Fs = &deployapi.FsF2FsFeatures{
CaseInsensitive: fsFeatures.F2fs.CaseInsensitive,
OverprovisionRatioPercentage: int32((fsFeatures.F2fs.OverprovisionRatioPercentage)),
}
}
return ret
}
+47 -5
View File
@@ -108,14 +108,56 @@ func (o *DiskResetTemplateOptions) Params() (jsonutils.JSONObject, error) {
type DiskRebuildOptions struct {
options.ResourceIdOptions
BackupId string `help:"disk backup id" json:"backup_id"`
TemplateId string `help:"disk template id" json:"template_id"`
Size string `help:"disk size in MB" json:"size"`
Fs string `help:"disk fs type"`
BackupId string `help:"disk backup id" json:"backup_id"`
TemplateId string `help:"disk template id" json:"template_id"`
Size string `help:"disk size in MB" json:"size"`
Fs string `help:"disk fs type"`
FsFeatureF2fsCaseInsensitive *bool `help:"f2fs enable CaseInsensitive" json:"-"`
FsFeatureF2fsOverprovisionRatioPercentage *int `help:"f2fs OverprovisionRatioPercentage" json:"-"`
FsFeatureExt4CaseInsensitive *bool `help:"ext4 enable CaseInsensitive" json:"-"`
FsFeatureExt4ReservedBlocksPercentage *int `help:"ext4 ReservedBlocksPercentage" json:"-"`
}
func (o *DiskRebuildOptions) Params() (jsonutils.JSONObject, error) {
return jsonutils.Marshal(o), nil
res := api.DiskRebuildInput{}
if o.BackupId != "" {
res.BackupId = &o.BackupId
}
if o.TemplateId != "" {
res.TemplateId = &o.TemplateId
}
if o.Size != "" {
res.TemplateId = &o.Size
}
if o.Fs != "" {
res.Fs = &o.Fs
}
if o.FsFeatureExt4CaseInsensitive != nil || o.FsFeatureExt4ReservedBlocksPercentage != nil {
if res.FsFeatures == nil {
res.FsFeatures = &api.DiskFsFeatures{}
}
res.FsFeatures.Ext4 = &api.DiskFsExt4Features{}
if o.FsFeatureExt4CaseInsensitive != nil {
res.FsFeatures.Ext4.CaseInsensitive = *o.FsFeatureExt4CaseInsensitive
}
if o.FsFeatureExt4ReservedBlocksPercentage != nil {
res.FsFeatures.Ext4.ReservedBlocksPercentage = *o.FsFeatureExt4ReservedBlocksPercentage
}
}
if o.FsFeatureF2fsCaseInsensitive != nil || o.FsFeatureF2fsOverprovisionRatioPercentage != nil {
if res.FsFeatures == nil {
res.FsFeatures = &api.DiskFsFeatures{}
}
res.FsFeatures.F2fs = &api.DiskFsF2fsFeatures{}
if o.FsFeatureF2fsCaseInsensitive != nil {
res.FsFeatures.F2fs.CaseInsensitive = *o.FsFeatureF2fsCaseInsensitive
}
if o.FsFeatureF2fsOverprovisionRatioPercentage != nil {
res.FsFeatures.F2fs.OverprovisionRatioPercentage = *o.FsFeatureF2fsOverprovisionRatioPercentage
}
}
return jsonutils.Marshal(res), nil
}
type DiskListOptions struct {