From 8297970ac3cb222f29471b1ed1b7e0ccad040d23 Mon Sep 17 00:00:00 2001 From: Zexi Date: Sun, 5 May 2019 18:42:35 +0800 Subject: [PATCH] fix baremetal disk config auto extend not work and ipmi_info not record --- cmd/climc/shell/hosts.go | 4 ++++ pkg/apis/compute/disk_const.go | 2 ++ pkg/compute/models/disks.go | 2 +- pkg/compute/models/guests.go | 2 +- pkg/compute/models/hosts.go | 1 - pkg/mcclient/modules/mod_hosts.go | 6 +++++- 6 files changed, 13 insertions(+), 4 deletions(-) diff --git a/cmd/climc/shell/hosts.go b/cmd/climc/shell/hosts.go index e9a579a127..7b9a3118e7 100644 --- a/cmd/climc/shell/hosts.go +++ b/cmd/climc/shell/hosts.go @@ -465,6 +465,7 @@ func init() { MAC string `help:"Default MAC address of baremetal"` Rack string `help:"Rack number of baremetal"` Slots string `help:"Slots number of baremetal"` + IpmiUser string `help:"IPMI user name"` IpmiPasswd string `help:"IPMI user password"` IpmiAddr string `help:"IPMI IP address"` } @@ -479,6 +480,9 @@ func init() { if len(args.Slots) > 0 { params.Add(jsonutils.NewString(args.Slots), "slots") } + if len(args.IpmiUser) > 0 { + params.Add(jsonutils.NewString(args.IpmiUser), "ipmi_username") + } if len(args.IpmiPasswd) > 0 { params.Add(jsonutils.NewString(args.IpmiPasswd), "ipmi_password") } diff --git a/pkg/apis/compute/disk_const.go b/pkg/apis/compute/disk_const.go index 95944cb846..62b3dfff8f 100644 --- a/pkg/apis/compute/disk_const.go +++ b/pkg/apis/compute/disk_const.go @@ -51,4 +51,6 @@ const ( DISK_TYPE_VOLUME = "volume" DISK_BACKING_IMAGE = "image" + + DISK_SIZE_AUTOEXTEND = -1 ) diff --git a/pkg/compute/models/disks.go b/pkg/compute/models/disks.go index 7352ce94dc..d3d40b6959 100644 --- a/pkg/compute/models/disks.go +++ b/pkg/compute/models/disks.go @@ -1245,7 +1245,7 @@ func fillDiskConfigByImage(ctx context.Context, userCred mcclient.TokenCredentia // } // diskConfig.ImageDiskFormat = image.DiskFormat CachedimageManager.ImageAddRefCount(image.Id) - if diskConfig.SizeMb < image.MinDiskMB { + if diskConfig.SizeMb != api.DISK_SIZE_AUTOEXTEND && diskConfig.SizeMb < image.MinDiskMB { diskConfig.SizeMb = image.MinDiskMB // MB } } diff --git a/pkg/compute/models/guests.go b/pkg/compute/models/guests.go index 783a8c4197..45fa8ef29b 100644 --- a/pkg/compute/models/guests.go +++ b/pkg/compute/models/guests.go @@ -964,7 +964,7 @@ func (manager *SGuestManager) ValidateCreateData(ctx context.Context, userCred m } } sysMinDiskMB := GetDriver(hypervisor).GetMinimalSysDiskSizeGb() * 1024 - if rootDiskConfig.SizeMb < sysMinDiskMB { + if rootDiskConfig.SizeMb != api.DISK_SIZE_AUTOEXTEND && rootDiskConfig.SizeMb < sysMinDiskMB { rootDiskConfig.SizeMb = sysMinDiskMB } } diff --git a/pkg/compute/models/hosts.go b/pkg/compute/models/hosts.go index 93a936b059..e88425858d 100644 --- a/pkg/compute/models/hosts.go +++ b/pkg/compute/models/hosts.go @@ -2597,7 +2597,6 @@ func fetchIpmiInfo(data *jsonutils.JSONDict, hostId string) (*jsonutils.JSONDict if strings.HasPrefix(key, IPMI_KEY_PERFIX) { value, _ := data.GetString(key) subkey := key[len(IPMI_KEY_PERFIX):] - data.Remove(key) if subkey == "password" && len(hostId) > 0 { value, err = utils.EncryptAESBase64(hostId, value) if err != nil { diff --git a/pkg/mcclient/modules/mod_hosts.go b/pkg/mcclient/modules/mod_hosts.go index 44ea398a9d..e3c23ad195 100644 --- a/pkg/mcclient/modules/mod_hosts.go +++ b/pkg/mcclient/modules/mod_hosts.go @@ -100,7 +100,7 @@ func parseHosts(data string) ([]jsonutils.JSONObject, string) { } fields := strings.Split(host, ",") - if len(fields) != 4 { + if len(fields) != 5 { msg += fmt.Sprintf("第%d行: %s (格式不正确)\n", i, host) continue } @@ -129,6 +129,10 @@ func parseHosts(data string) ([]jsonutils.JSONObject, string) { params.Add(jsonutils.NewString(fields[3]), "ipmi_password") } + if len(fields[4]) > 0 { + params.Add(jsonutils.NewString(fields[4]), "ipmi_username") + } + ret = append(ret, params) }