diff --git a/pkg/util/aws/disk.go b/pkg/util/aws/disk.go index edef37c559..2b3535f6ad 100644 --- a/pkg/util/aws/disk.go +++ b/pkg/util/aws/disk.go @@ -389,5 +389,11 @@ func (self *SRegion) CreateDisk(zoneId string, category string, name string, siz return "", err } + paramsWait := &ec2.DescribeVolumesInput{} + paramsWait.SetVolumeIds([]*string{ret.VolumeId}) + err = self.ec2Client.WaitUntilVolumeAvailable(paramsWait) + if err != nil { + return "", err + } return StrVal(ret.VolumeId), nil } diff --git a/pkg/util/aws/instance.go b/pkg/util/aws/instance.go index 4deb29516e..13748b02fd 100644 --- a/pkg/util/aws/instance.go +++ b/pkg/util/aws/instance.go @@ -374,12 +374,18 @@ func (self *SInstance) GetVNCInfo() (jsonutils.JSONObject, error) { } func (self *SInstance) AttachDisk(diskId string) error { - // todo:bugfix . self.DeviceNames => self.GetDeviceNames() name, err := NextDeviceName(self.DeviceNames) if err != nil { return err } - return self.host.zone.region.AttachDisk(self.InstanceId, diskId, name) + + err = self.host.zone.region.AttachDisk(self.InstanceId, diskId, name) + if err != nil { + return err + } + + self.DeviceNames = append(self.DeviceNames, name) + return nil } func (self *SInstance) DetachDisk(diskId string) error {