From 2e720737a5a67e94abe84ec7f43d4e6a2c5fabe1 Mon Sep 17 00:00:00 2001 From: Qu Xuan Date: Mon, 26 Jul 2021 15:26:23 +0800 Subject: [PATCH] fix(region): openstack ip pre allocate --- pkg/multicloud/openstack/instance.go | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/pkg/multicloud/openstack/instance.go b/pkg/multicloud/openstack/instance.go index feeb22dcb1..a980582a1c 100644 --- a/pkg/multicloud/openstack/instance.go +++ b/pkg/multicloud/openstack/instance.go @@ -1014,24 +1014,28 @@ func (zone *SZone) CreateVM(hypervisor string, opts *cloudprovider.SManagedVMCre az = fmt.Sprintf("%s:%s", zone.ZoneName, hypervisor) } + net := map[string]string{ + "uuid": network.NetworkId, + } + if len(opts.IpAddr) > 0 { + net["fixed_ip"] = opts.IpAddr + } + params := map[string]map[string]interface{}{ "server": { - "name": opts.Name, - "adminPass": opts.Password, - "accessIPv4": opts.IpAddr, - "availability_zone": az, - "networks": []map[string]string{ - { - "uuid": network.NetworkId, - "fixed_ip": opts.IpAddr, - }, - }, + "name": opts.Name, + "adminPass": opts.Password, + "availability_zone": az, + "networks": []map[string]string{net}, "security_groups": secgroups, "user_data": opts.UserData, "imageRef": opts.ExternalImageId, "block_device_mapping_v2": BlockDeviceMappingV2, }, } + if len(opts.IpAddr) > 0 { + params["server"]["accessIPv4"] = opts.IpAddr + } flavor, err := region.syncFlavor(opts.InstanceType, opts.Cpu, opts.MemoryMB, opts.SysDisk.SizeGB) if err != nil {