mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-24 16:03:43 +08:00
Merge pull request #10166 from tb365/bugfix/tb-bugfix-01020502
warp aws err with errors.Wrap
This commit is contained in:
+13
-10
@@ -163,7 +163,7 @@ func (self *SAwsClient) GetSubAccounts() ([]cloudprovider.SSubAccount, error) {
|
||||
// todo: implement me
|
||||
err := self.fetchRegions()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "fetchRegions")
|
||||
}
|
||||
subAccount := cloudprovider.SSubAccount{}
|
||||
subAccount.Name = self.cpcfg.Name
|
||||
@@ -234,7 +234,7 @@ func (client *SAwsClient) getAwsSession(regionId string) (*session.Session, erro
|
||||
CredentialsChainVerboseErrors: sdk.Bool(true),
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "getAwsSession.NewSession")
|
||||
}
|
||||
if client.debug {
|
||||
logLevel := aws.LogLevelType(uint(aws.LogDebugWithRequestErrors) + uint(aws.LogDebugWithHTTPBody) + uint(aws.LogDebugWithSigning))
|
||||
@@ -387,7 +387,7 @@ func (self *SAwsClient) getIRegionByRegionId(id string) (cloudprovider.ICloudReg
|
||||
return self.iregions[i], nil
|
||||
}
|
||||
}
|
||||
return nil, ErrorNotFound()
|
||||
return nil, errors.Wrap(cloudprovider.ErrNotFound, "getIRegionByRegionId")
|
||||
}
|
||||
|
||||
func (self *SAwsClient) GetIRegionById(id string) (cloudprovider.ICloudRegion, error) {
|
||||
@@ -396,7 +396,7 @@ func (self *SAwsClient) GetIRegionById(id string) (cloudprovider.ICloudRegion, e
|
||||
return self.iregions[i], nil
|
||||
}
|
||||
}
|
||||
return nil, ErrorNotFound()
|
||||
return nil, errors.Wrap(cloudprovider.ErrNotFound, "GetIRegionById")
|
||||
}
|
||||
|
||||
func (self *SAwsClient) GetIHostById(id string) (cloudprovider.ICloudHost, error) {
|
||||
@@ -405,10 +405,11 @@ func (self *SAwsClient) GetIHostById(id string) (cloudprovider.ICloudHost, error
|
||||
if err == nil {
|
||||
return ihost, nil
|
||||
} else if errors.Cause(err) != cloudprovider.ErrNotFound {
|
||||
return nil, err
|
||||
log.Errorf("GetIHostById %s: %s", id, err)
|
||||
return nil, errors.Wrap(err, "GetIHostById")
|
||||
}
|
||||
}
|
||||
return nil, ErrorNotFound()
|
||||
return nil, errors.Wrap(cloudprovider.ErrNotFound, "GetIHostById")
|
||||
}
|
||||
|
||||
func (self *SAwsClient) GetIVpcById(id string) (cloudprovider.ICloudVpc, error) {
|
||||
@@ -417,10 +418,11 @@ func (self *SAwsClient) GetIVpcById(id string) (cloudprovider.ICloudVpc, error)
|
||||
if err == nil {
|
||||
return ihost, nil
|
||||
} else if errors.Cause(err) != cloudprovider.ErrNotFound {
|
||||
return nil, err
|
||||
log.Errorf("GetIVpcById %s: %s", id, err)
|
||||
return nil, errors.Wrap(err, "GetIVpcById")
|
||||
}
|
||||
}
|
||||
return nil, ErrorNotFound()
|
||||
return nil, errors.Wrap(cloudprovider.ErrNotFound, "GetIVpcById")
|
||||
}
|
||||
|
||||
func (self *SAwsClient) GetIStorageById(id string) (cloudprovider.ICloudStorage, error) {
|
||||
@@ -429,10 +431,11 @@ func (self *SAwsClient) GetIStorageById(id string) (cloudprovider.ICloudStorage,
|
||||
if err == nil {
|
||||
return ihost, nil
|
||||
} else if errors.Cause(err) != cloudprovider.ErrNotFound {
|
||||
return nil, err
|
||||
log.Errorf("GetIStorageById %s: %s", id, err)
|
||||
return nil, errors.Wrap(err, "GetIStorageById")
|
||||
}
|
||||
}
|
||||
return nil, ErrorNotFound()
|
||||
return nil, errors.Wrap(cloudprovider.ErrNotFound, "GetIStorageById")
|
||||
}
|
||||
|
||||
type SAccountBalance struct {
|
||||
|
||||
@@ -20,6 +20,7 @@ import (
|
||||
|
||||
"yunion.io/x/jsonutils"
|
||||
"yunion.io/x/log"
|
||||
"yunion.io/x/pkg/errors"
|
||||
|
||||
billing "yunion.io/x/onecloud/pkg/apis/billing"
|
||||
api "yunion.io/x/onecloud/pkg/apis/compute"
|
||||
@@ -214,7 +215,7 @@ func (rds *SDBInstance) Refresh() error {
|
||||
func (region *SRegion) GetDBInstance(instanceId string) (*SDBInstance, error) {
|
||||
instances, err := region.GetDBInstances(instanceId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetDBInstances")
|
||||
}
|
||||
|
||||
if len(instances) == 1 {
|
||||
@@ -279,7 +280,7 @@ func (rds *SDBInstance) GetConnectionStr() string {
|
||||
func (rds *SDBInstance) GetIDBInstanceParameters() ([]cloudprovider.ICloudDBInstanceParameter, error) {
|
||||
parameters, err := rds.region.GetDBInstanceParameters(rds.DBParameterGroups[0].DBParameterGroupName)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetDBInstanceParameters")
|
||||
}
|
||||
iparams := []cloudprovider.ICloudDBInstanceParameter{}
|
||||
for i := 0; i < len(parameters); i++ {
|
||||
@@ -308,7 +309,7 @@ func (region *SRegion) GetDBInstances(instanceId string) ([]SDBInstance, error)
|
||||
}
|
||||
err := region.rdsRequest("DescribeDBInstances", map[string]string{}, &instances)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "DescribeDBInstances")
|
||||
}
|
||||
return instances.DBInstances, nil
|
||||
}
|
||||
@@ -316,7 +317,7 @@ func (region *SRegion) GetDBInstances(instanceId string) ([]SDBInstance, error)
|
||||
func (region *SRegion) GetIDBInstances() ([]cloudprovider.ICloudDBInstance, error) {
|
||||
instances, err := region.GetDBInstances("")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetDBInstances")
|
||||
}
|
||||
idbinstances := []cloudprovider.ICloudDBInstance{}
|
||||
for i := 0; i < len(instances); i++ {
|
||||
|
||||
@@ -14,6 +14,8 @@
|
||||
|
||||
package aws
|
||||
|
||||
import "yunion.io/x/pkg/errors"
|
||||
|
||||
type SDBInstanceParameter struct {
|
||||
instance *SDBInstance
|
||||
|
||||
@@ -53,7 +55,7 @@ func (region *SRegion) GetDBInstanceParameters(name string) ([]SDBInstanceParame
|
||||
parameters := SDBInstanceParameters{}
|
||||
err := region.rdsRequest("DescribeDBParameters", param, ¶meters)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "DescribeDBParameters")
|
||||
}
|
||||
return parameters.Parameters, nil
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@ import (
|
||||
"time"
|
||||
|
||||
"yunion.io/x/log"
|
||||
"yunion.io/x/pkg/errors"
|
||||
|
||||
api "yunion.io/x/onecloud/pkg/apis/compute"
|
||||
"yunion.io/x/onecloud/pkg/cloudprovider"
|
||||
@@ -124,7 +125,7 @@ func (region *SRegion) GetDBInstanceSnapshots(instanceId string) ([]SDBInstanceS
|
||||
|
||||
err := region.rdsRequest("DescribeDBSnapshots", params, &snapshots)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "DescribeDBSnapshots")
|
||||
}
|
||||
return snapshots.Snapshots, nil
|
||||
}
|
||||
@@ -132,7 +133,7 @@ func (region *SRegion) GetDBInstanceSnapshots(instanceId string) ([]SDBInstanceS
|
||||
func (region *SRegion) GetIDBInstanceBackups() ([]cloudprovider.ICloudDBInstanceBackup, error) {
|
||||
snapshots, err := region.GetDBInstanceSnapshots("")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetDBInstanceSnapshots")
|
||||
}
|
||||
isnapshots := []cloudprovider.ICloudDBInstanceBackup{}
|
||||
for i := 0; i < len(snapshots); i++ {
|
||||
|
||||
+13
-12
@@ -205,13 +205,14 @@ func (self *SDisk) Delete(ctx context.Context) error {
|
||||
func (self *SDisk) CreateISnapshot(ctx context.Context, name string, desc string) (cloudprovider.ICloudSnapshot, error) {
|
||||
if snapshotId, err := self.storage.zone.region.CreateSnapshot(self.DiskId, name, desc); err != nil {
|
||||
log.Errorf("createSnapshot fail %s", err)
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "CreateSnapshot")
|
||||
} else if snapshot, err := self.getSnapshot(snapshotId); err != nil {
|
||||
return nil, err
|
||||
log.Errorf("getSnapshot %s", snapshotId)
|
||||
return nil, errors.Wrap(err, "getSnapshot")
|
||||
} else {
|
||||
snapshot.region = self.storage.zone.region
|
||||
if err := cloudprovider.WaitStatus(snapshot, api.SNAPSHOT_READY, 15*time.Second, 3600*time.Second); err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "WaitStatus.snapshot")
|
||||
}
|
||||
return snapshot, nil
|
||||
}
|
||||
@@ -219,7 +220,7 @@ func (self *SDisk) CreateISnapshot(ctx context.Context, name string, desc string
|
||||
|
||||
func (self *SDisk) GetISnapshot(snapshotId string) (cloudprovider.ICloudSnapshot, error) {
|
||||
if snapshot, err := self.getSnapshot(snapshotId); err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "getSnapshot")
|
||||
} else {
|
||||
snapshot.region = self.storage.zone.region
|
||||
return snapshot, nil
|
||||
@@ -230,8 +231,8 @@ func (self *SDisk) GetISnapshots() ([]cloudprovider.ICloudSnapshot, error) {
|
||||
snapshots := make([]SSnapshot, 0)
|
||||
for {
|
||||
if parts, total, err := self.storage.zone.region.GetSnapshots("", self.DiskId, "", []string{}, 0, 20); err != nil {
|
||||
log.Errorf("GetDisks fail %s", err)
|
||||
return nil, err
|
||||
log.Errorf("GetSnapshots fail %s", err)
|
||||
return nil, errors.Wrap(err, "GetSnapshots")
|
||||
} else {
|
||||
snapshots = append(snapshots, parts...)
|
||||
if len(snapshots) >= total {
|
||||
@@ -266,9 +267,9 @@ func (self *SDisk) getSnapshot(snapshotId string) (*SSnapshot, error) {
|
||||
}
|
||||
|
||||
if snapshots, total, err := self.storage.zone.region.GetSnapshots("", "", "", []string{snapshotId}, 0, 1); err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetSnapshots")
|
||||
} else if total != 1 {
|
||||
return nil, ErrorNotFound()
|
||||
return nil, errors.Wrap(cloudprovider.ErrNotFound, "GetSnapshots")
|
||||
} else {
|
||||
return &snapshots[0], nil
|
||||
}
|
||||
@@ -371,18 +372,18 @@ func (self *SRegion) GetDisks(instanceId string, zoneId string, storageType stri
|
||||
func (self *SRegion) GetDisk(diskId string) (*SDisk, error) {
|
||||
if len(diskId) == 0 {
|
||||
// return nil, fmt.Errorf("GetDisk diskId should not be empty.")
|
||||
return nil, ErrorNotFound()
|
||||
return nil, errors.Wrap(cloudprovider.ErrNotFound, "GetDisk")
|
||||
}
|
||||
disks, total, err := self.GetDisks("", "", "", []string{diskId}, 0, 1)
|
||||
if err != nil {
|
||||
if strings.Contains(err.Error(), "InvalidVolume.NotFound") {
|
||||
return nil, ErrorNotFound()
|
||||
return nil, errors.Wrap(cloudprovider.ErrNotFound, "GetDisks")
|
||||
} else {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetDisks")
|
||||
}
|
||||
}
|
||||
if total != 1 {
|
||||
return nil, ErrorNotFound()
|
||||
return nil, errors.Wrap(cloudprovider.ErrNotFound, "GetDisk")
|
||||
}
|
||||
return &disks[0], nil
|
||||
}
|
||||
|
||||
@@ -22,6 +22,7 @@ import (
|
||||
|
||||
"yunion.io/x/jsonutils"
|
||||
"yunion.io/x/log"
|
||||
"yunion.io/x/pkg/errors"
|
||||
|
||||
"yunion.io/x/onecloud/pkg/apis/billing"
|
||||
api "yunion.io/x/onecloud/pkg/apis/compute"
|
||||
@@ -216,10 +217,11 @@ func (self *SRegion) GetEip(eipId string) (*SEipAddress, error) {
|
||||
|
||||
eips, total, err := self.GetEips(eipId, "", 0, 0)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
log.Errorf("GetEips %s: %s", eipId, err)
|
||||
return nil, errors.Wrap(err, "GetEips")
|
||||
}
|
||||
if total != 1 {
|
||||
return nil, ErrorNotFound()
|
||||
return nil, errors.Wrap(cloudprovider.ErrNotFound, "GetEips")
|
||||
}
|
||||
return &eips[0], nil
|
||||
}
|
||||
@@ -227,11 +229,12 @@ func (self *SRegion) GetEip(eipId string) (*SEipAddress, error) {
|
||||
func (self *SRegion) GetEipByIpAddress(eipAddress string) (*SEipAddress, error) {
|
||||
eips, total, err := self.GetEips("", eipAddress, 0, 0)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
log.Errorf("GetEips %s: %s", eipAddress, err)
|
||||
return nil, errors.Wrap(err, "GetEips")
|
||||
}
|
||||
|
||||
if total != 1 {
|
||||
return nil, ErrorNotFound()
|
||||
return nil, errors.Wrap(cloudprovider.ErrNotFound, "GetEips")
|
||||
}
|
||||
return &eips[0], nil
|
||||
}
|
||||
@@ -242,12 +245,12 @@ func (self *SRegion) AllocateEIP(domainType string) (*SEipAddress, error) {
|
||||
eip, err := self.ec2Client.AllocateAddress(params)
|
||||
if err != nil {
|
||||
log.Errorf("AllocateEipAddress fail %s", err)
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "AllocateAddress")
|
||||
}
|
||||
|
||||
err = self.fetchInfrastructure()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "fetchInfrastructure")
|
||||
}
|
||||
return self.GetEip(*eip.AllocationId)
|
||||
}
|
||||
|
||||
@@ -17,6 +17,8 @@ package aws
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
|
||||
"yunion.io/x/jsonutils"
|
||||
"yunion.io/x/log"
|
||||
|
||||
@@ -58,7 +60,7 @@ func (self *SHost) GetIVMs() ([]cloudprovider.ICloudVM, error) {
|
||||
vms := make([]SInstance, 0)
|
||||
vms, _, err := self.zone.region.GetInstances(self.zone.ZoneId, nil, len(vms), 50)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetInstances")
|
||||
}
|
||||
|
||||
ivms := make([]cloudprovider.ICloudVM, len(vms))
|
||||
@@ -72,15 +74,15 @@ func (self *SHost) GetIVMs() ([]cloudprovider.ICloudVM, error) {
|
||||
func (self *SHost) GetIVMById(gid string) (cloudprovider.ICloudVM, error) {
|
||||
if len(gid) == 0 {
|
||||
log.Errorf("GetIVMById guest id is empty")
|
||||
return nil, ErrorNotFound()
|
||||
return nil, errors.Wrap(cloudprovider.ErrNotFound, "GetIVMById")
|
||||
}
|
||||
|
||||
ivms, _, err := self.zone.region.GetInstances(self.zone.ZoneId, []string{gid}, 0, 1)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetInstances")
|
||||
}
|
||||
if len(ivms) == 0 {
|
||||
return nil, ErrorNotFound()
|
||||
return nil, errors.Wrap(cloudprovider.ErrNotFound, "GetInstances")
|
||||
}
|
||||
if len(ivms) > 1 {
|
||||
return nil, cloudprovider.ErrDuplicateId
|
||||
@@ -162,7 +164,8 @@ func (self *SHost) GetHostType() string {
|
||||
func (self *SHost) GetInstanceById(instanceId string) (*SInstance, error) {
|
||||
inst, err := self.zone.region.GetInstance(instanceId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
log.Errorf("GetInstance %s: %s", instanceId, err)
|
||||
return nil, errors.Wrap(err, "GetInstance")
|
||||
}
|
||||
inst.host = self
|
||||
return inst, nil
|
||||
@@ -173,12 +176,13 @@ func (self *SHost) CreateVM(desc *cloudprovider.SManagedVMCreateConfig) (cloudpr
|
||||
desc.ExternalNetworkId, desc.IpAddr, desc.Description, desc.Password, desc.DataDisks,
|
||||
desc.PublicKey, desc.ExternalSecgroupId, desc.UserData, desc.Tags)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "_createVM")
|
||||
}
|
||||
|
||||
vm, err := self.GetInstanceById(vmId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
log.Errorf("GetInstanceById %s: %s", vmId, err)
|
||||
return nil, errors.Wrap(err, "GetInstanceById")
|
||||
}
|
||||
|
||||
return vm, err
|
||||
|
||||
@@ -306,7 +306,7 @@ func (self *SRegion) ImportImage(name string, osArch string, osType string, osDi
|
||||
params.SetLicenseType("BYOL") // todo: AWS?
|
||||
ret, err := self.ec2Client.ImportImage(params)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "ImportImage")
|
||||
}
|
||||
log.Debugf("ImportImage task: %s", ret.String())
|
||||
return &ImageImportTask{ImageId: StrVal(ret.ImageId), RegionId: self.RegionId, TaskId: *ret.ImportTaskId, Status: StrVal(ret.Status), region: self}, nil
|
||||
@@ -330,7 +330,7 @@ func (self *SRegion) ExportImage(instanceId string, imageId string) (*ImageExpor
|
||||
params.SetExportToS3Task(spec)
|
||||
ret, err := self.ec2Client.CreateInstanceExportTask(params)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "CreateInstanceExportTask")
|
||||
}
|
||||
|
||||
return &ImageExportTask{ImageId: imageId, RegionId: self.RegionId, TaskId: *ret.ExportTask.ExportTaskId}, nil
|
||||
@@ -343,10 +343,10 @@ func (self *SRegion) GetImage(imageId string) (*SImage, error) {
|
||||
|
||||
images, err := self.getImages("", ImageOwnerAll, []string{imageId}, "", "", nil, "")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "getImages")
|
||||
}
|
||||
if len(images) == 0 {
|
||||
return nil, ErrorNotFound()
|
||||
return nil, errors.Wrap(cloudprovider.ErrNotFound, "getImages")
|
||||
}
|
||||
return &images[0], nil
|
||||
}
|
||||
@@ -358,10 +358,10 @@ func (self *SRegion) GetImageByName(name string, owners []TImageOwnerType) (*SIm
|
||||
|
||||
images, err := self.getImages("", owners, nil, name, "hvm", nil, "")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "getImages")
|
||||
}
|
||||
if len(images) == 0 {
|
||||
return nil, ErrorNotFound()
|
||||
return nil, errors.Wrap(cloudprovider.ErrNotFound, "getImages")
|
||||
}
|
||||
|
||||
log.Debugf("%d image found match name %s", len(images), name)
|
||||
@@ -401,7 +401,7 @@ func getLatestImage(images []SImage) SImage {
|
||||
func (self *SRegion) GetImages(status ImageStatusType, owners []TImageOwnerType, imageId []string, name string, virtualizationType string, ownerIds []string, volumeType string, latest bool) ([]SImage, error) {
|
||||
images, err := self.getImages(status, owners, imageId, name, virtualizationType, ownerIds, volumeType)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "getImages")
|
||||
}
|
||||
if !latest {
|
||||
return images, err
|
||||
@@ -461,7 +461,7 @@ func (self *SRegion) getImages(status ImageStatusType, owners []TImageOwnerType,
|
||||
ret, err := self.ec2Client.DescribeImages(params)
|
||||
err = parseNotFoundError(err)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "parseNotFoundError")
|
||||
}
|
||||
|
||||
images := []SImage{}
|
||||
@@ -469,7 +469,7 @@ func (self *SRegion) getImages(status ImageStatusType, owners []TImageOwnerType,
|
||||
image := ret.Images[i]
|
||||
|
||||
if err := FillZero(image); err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "FillZero.image")
|
||||
}
|
||||
|
||||
tagspec := TagSpec{}
|
||||
|
||||
@@ -297,14 +297,14 @@ func (self *SInstance) GetIDisks() ([]cloudprovider.ICloudDisk, error) {
|
||||
disks, _, err := self.host.zone.region.GetDisks(self.InstanceId, "", "", nil, 0, 0)
|
||||
if err != nil {
|
||||
log.Errorf("fetchDisks fail %s", err)
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetDisks")
|
||||
}
|
||||
|
||||
idisks := make([]cloudprovider.ICloudDisk, len(disks))
|
||||
for i := 0; i < len(disks); i += 1 {
|
||||
store, err := self.host.zone.getStorageByCategory(disks[i].Category)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "getStorageByCategory")
|
||||
}
|
||||
disks[i].storage = store
|
||||
idisks[i] = &disks[i]
|
||||
@@ -598,7 +598,7 @@ func (self *SRegion) GetInstances(zoneId string, ids []string, offset int, limit
|
||||
res, err := self.ec2Client.DescribeInstances(params)
|
||||
if err != nil {
|
||||
if strings.Contains(err.Error(), "InvalidInstanceID.NotFound") {
|
||||
return nil, 0, ErrorNotFound()
|
||||
return nil, 0, errors.Wrap(cloudprovider.ErrNotFound, "DescribeInstances")
|
||||
} else {
|
||||
return nil, 0, err
|
||||
}
|
||||
@@ -732,10 +732,11 @@ func (self *SRegion) GetInstance(instanceId string) (*SInstance, error) {
|
||||
|
||||
instances, _, err := self.GetInstances("", []string{instanceId}, 0, 1)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
log.Errorf("GetInstances %s: %s", instanceId, err)
|
||||
return nil, errors.Wrap(err, "GetInstances")
|
||||
}
|
||||
if len(instances) == 0 {
|
||||
return nil, ErrorNotFound()
|
||||
return nil, errors.Wrap(cloudprovider.ErrNotFound, "GetInstances")
|
||||
}
|
||||
return &instances[0], nil
|
||||
}
|
||||
|
||||
@@ -27,6 +27,8 @@ import (
|
||||
"github.com/aws/aws-sdk-go/service/ec2"
|
||||
"golang.org/x/crypto/ssh"
|
||||
|
||||
"yunion.io/x/pkg/errors"
|
||||
|
||||
"yunion.io/x/onecloud/pkg/cloudprovider"
|
||||
)
|
||||
|
||||
@@ -113,7 +115,7 @@ func (self *SRegion) ImportKeypair(name string, pubKey string) (*SKeypair, error
|
||||
params.SetPublicKeyMaterial([]byte(pubKey))
|
||||
ret, err := self.ec2Client.ImportKeyPair(params)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "ImportKeyPair")
|
||||
} else {
|
||||
return &SKeypair{StrVal(ret.KeyFingerprint), StrVal(ret.KeyName)}, nil
|
||||
}
|
||||
|
||||
@@ -249,7 +249,7 @@ func (self *SElb) Stop() error {
|
||||
func (self *SElb) GetILoadBalancerListeners() ([]cloudprovider.ICloudLoadbalancerListener, error) {
|
||||
listeners, err := self.region.GetElbListeners(self.GetId())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetElbListeners")
|
||||
}
|
||||
|
||||
ret := make([]cloudprovider.ICloudLoadbalancerListener, len(listeners))
|
||||
@@ -264,7 +264,7 @@ func (self *SElb) GetILoadBalancerListeners() ([]cloudprovider.ICloudLoadbalance
|
||||
func (self *SElb) GetILoadBalancerBackendGroups() ([]cloudprovider.ICloudLoadbalancerBackendGroup, error) {
|
||||
backendgroups, err := self.region.GetElbBackendgroups(self.GetId(), nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetElbBackendgroups")
|
||||
}
|
||||
|
||||
ibackendgroups := make([]cloudprovider.ICloudLoadbalancerBackendGroup, len(backendgroups))
|
||||
@@ -279,7 +279,7 @@ func (self *SElb) GetILoadBalancerBackendGroups() ([]cloudprovider.ICloudLoadbal
|
||||
func (self *SElb) CreateILoadBalancerBackendGroup(group *cloudprovider.SLoadbalancerBackendGroup) (cloudprovider.ICloudLoadbalancerBackendGroup, error) {
|
||||
backendgroup, err := self.region.CreateElbBackendgroup(group)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "CreateElbBackendgroup")
|
||||
}
|
||||
|
||||
backendgroup.lb = self
|
||||
@@ -293,7 +293,7 @@ func (self *SElb) GetILoadBalancerBackendGroupById(groupId string) (cloudprovide
|
||||
func (self *SElb) CreateILoadBalancerListener(ctx context.Context, listener *cloudprovider.SLoadbalancerListener) (cloudprovider.ICloudLoadbalancerListener, error) {
|
||||
ret, err := self.region.CreateElbListener(listener)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "CreateElbListener")
|
||||
}
|
||||
|
||||
ret.lb = self
|
||||
@@ -302,7 +302,7 @@ func (self *SElb) CreateILoadBalancerListener(ctx context.Context, listener *clo
|
||||
|
||||
func (self *SElb) GetILoadBalancerListenerById(listenerId string) (cloudprovider.ICloudLoadbalancerListener, error) {
|
||||
if listenerId == "" {
|
||||
return nil, ErrorNotFound()
|
||||
return nil, errors.Wrap(cloudprovider.ErrNotFound, "GetILoadBalancerListenerById")
|
||||
}
|
||||
|
||||
return self.region.GetElbListener(listenerId)
|
||||
@@ -315,14 +315,14 @@ func (self *SElb) GetIEIP() (cloudprovider.ICloudEIP, error) {
|
||||
func (self *SRegion) DeleteElb(elbId string) error {
|
||||
client, err := self.GetElbV2Client()
|
||||
if err != nil {
|
||||
return err
|
||||
return errors.Wrap(err, "GetElbV2Client")
|
||||
}
|
||||
|
||||
params := &elbv2.DeleteLoadBalancerInput{}
|
||||
params.SetLoadBalancerArn(elbId)
|
||||
_, err = client.DeleteLoadBalancer(params)
|
||||
if err != nil {
|
||||
return err
|
||||
return errors.Wrap(err, "DeleteLoadBalancer")
|
||||
}
|
||||
|
||||
return nil
|
||||
@@ -331,7 +331,7 @@ func (self *SRegion) DeleteElb(elbId string) error {
|
||||
func (self *SRegion) GetElbBackendgroups(elbId string, backendgroupIds []string) ([]SElbBackendGroup, error) {
|
||||
client, err := self.GetElbV2Client()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetElbV2Client")
|
||||
}
|
||||
|
||||
params := &elbv2.DescribeTargetGroupsInput{}
|
||||
@@ -350,13 +350,13 @@ func (self *SRegion) GetElbBackendgroups(elbId string, backendgroupIds []string)
|
||||
|
||||
ret, err := client.DescribeTargetGroups(params)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "DescribeTargetGroups")
|
||||
}
|
||||
|
||||
backendgroups := []SElbBackendGroup{}
|
||||
err = unmarshalAwsOutput(ret, "TargetGroups", &backendgroups)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "unmarshalAwsOutput.TargetGroups")
|
||||
}
|
||||
|
||||
for i := range backendgroups {
|
||||
@@ -369,7 +369,7 @@ func (self *SRegion) GetElbBackendgroups(elbId string, backendgroupIds []string)
|
||||
func (self *SRegion) GetElbBackendgroup(backendgroupId string) (*SElbBackendGroup, error) {
|
||||
client, err := self.GetElbV2Client()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetElbV2Client")
|
||||
}
|
||||
|
||||
params := &elbv2.DescribeTargetGroupsInput{}
|
||||
@@ -380,13 +380,13 @@ func (self *SRegion) GetElbBackendgroup(backendgroupId string) (*SElbBackendGrou
|
||||
if strings.Contains(err.Error(), "TargetGroupNotFound") {
|
||||
return nil, cloudprovider.ErrNotFound
|
||||
}
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "DescribeTargetGroups")
|
||||
}
|
||||
|
||||
backendgroups := []SElbBackendGroup{}
|
||||
err = unmarshalAwsOutput(ret, "TargetGroups", &backendgroups)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "unmarshalAwsOutput.TargetGroups")
|
||||
}
|
||||
|
||||
if len(backendgroups) == 1 {
|
||||
@@ -394,7 +394,7 @@ func (self *SRegion) GetElbBackendgroup(backendgroupId string) (*SElbBackendGrou
|
||||
return &backendgroups[0], nil
|
||||
}
|
||||
|
||||
return nil, ErrorNotFound()
|
||||
return nil, errors.Wrap(cloudprovider.ErrNotFound, "GetElbBackendgroup")
|
||||
}
|
||||
|
||||
func ToAwsHealthCode(s string) string {
|
||||
@@ -482,18 +482,18 @@ func (self *SRegion) CreateElbBackendgroup(group *cloudprovider.SLoadbalancerBac
|
||||
|
||||
client, err := self.GetElbV2Client()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetElbV2Client")
|
||||
}
|
||||
|
||||
ret, err := client.CreateTargetGroup(params)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "CreateTargetGroup")
|
||||
}
|
||||
|
||||
backendgroups := []SElbBackendGroup{}
|
||||
err = unmarshalAwsOutput(ret, "TargetGroups", &backendgroups)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "unmarshalAwsOutput.TargetGroups")
|
||||
}
|
||||
|
||||
if len(backendgroups) == 1 {
|
||||
@@ -519,7 +519,7 @@ func (self *SElb) SetTags(tags map[string]string, replace bool) error {
|
||||
func (self *SRegion) FetchElbTags(arn string) (map[string]string, error) {
|
||||
client, err := self.GetElbV2Client()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetElbV2Client")
|
||||
}
|
||||
params := elbv2.DescribeTagsInput{}
|
||||
params.SetResourceArns([]*string{&arn})
|
||||
|
||||
@@ -21,8 +21,10 @@ import (
|
||||
"strings"
|
||||
|
||||
"github.com/aws/aws-sdk-go/service/elbv2"
|
||||
"github.com/pkg/errors"
|
||||
|
||||
"yunion.io/x/jsonutils"
|
||||
"yunion.io/x/log"
|
||||
"yunion.io/x/pkg/utils"
|
||||
|
||||
api "yunion.io/x/onecloud/pkg/apis/compute"
|
||||
@@ -135,7 +137,7 @@ func (self *SElbBackendGroup) GetType() string {
|
||||
func (self *SElbBackendGroup) GetILoadbalancerBackends() ([]cloudprovider.ICloudLoadbalancerBackend, error) {
|
||||
backends, err := self.region.GetELbBackends(self.GetId())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetELbBackends")
|
||||
}
|
||||
|
||||
ibackends := make([]cloudprovider.ICloudLoadbalancerBackend, len(backends))
|
||||
@@ -151,7 +153,7 @@ func (self *SElbBackendGroup) GetILoadbalancerBackends() ([]cloudprovider.ICloud
|
||||
func (self *SElbBackendGroup) GetILoadbalancerBackendById(backendId string) (cloudprovider.ICloudLoadbalancerBackend, error) {
|
||||
backend, err := self.region.GetELbBackend(backendId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetELbBackend")
|
||||
}
|
||||
|
||||
backend.group = self
|
||||
@@ -195,7 +197,7 @@ func (self *SElbBackendGroup) GetHealthCheck() (*cloudprovider.SLoadbalancerHeal
|
||||
func (self *SElbBackendGroup) GetStickySession() (*cloudprovider.SLoadbalancerStickySession, error) {
|
||||
attrs, err := self.region.GetElbBackendgroupAttributesById(self.GetId())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetElbBackendgroupAttributesById")
|
||||
}
|
||||
|
||||
cookieTime := 0
|
||||
@@ -216,7 +218,7 @@ func (self *SElbBackendGroup) GetStickySession() (*cloudprovider.SLoadbalancerSt
|
||||
func (self *SElbBackendGroup) AddBackendServer(serverId string, weight int, port int) (cloudprovider.ICloudLoadbalancerBackend, error) {
|
||||
backend, err := self.region.AddElbBackend(self.GetId(), serverId, weight, port)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "AddElbBackend")
|
||||
}
|
||||
|
||||
backend.region = self.region
|
||||
@@ -239,25 +241,25 @@ func (self *SElbBackendGroup) Sync(ctx context.Context, group *cloudprovider.SLo
|
||||
func (self *SRegion) GetELbBackends(backendgroupId string) ([]SElbBackend, error) {
|
||||
client, err := self.GetElbV2Client()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetElbV2Client")
|
||||
}
|
||||
|
||||
group, err := self.GetElbBackendgroup(backendgroupId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetElbBackendgroup")
|
||||
}
|
||||
|
||||
params := &elbv2.DescribeTargetHealthInput{}
|
||||
params.SetTargetGroupArn(backendgroupId)
|
||||
output, err := client.DescribeTargetHealth(params)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "DescribeTargetHealth")
|
||||
}
|
||||
|
||||
backends := []SElbBackend{}
|
||||
err = unmarshalAwsOutput(output, "TargetHealthDescriptions", &backends)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "unmarshalAwsOutput.TargetHealthDescriptions")
|
||||
}
|
||||
|
||||
ret := []SElbBackend{}
|
||||
@@ -275,12 +277,13 @@ func (self *SRegion) GetELbBackends(backendgroupId string) ([]SElbBackend, error
|
||||
func (self *SRegion) GetELbBackend(backendId string) (*SElbBackend, error) {
|
||||
client, err := self.GetElbV2Client()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetElbV2Client")
|
||||
}
|
||||
|
||||
groupId, instanceId, port, err := parseElbBackendId(backendId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
log.Errorf("parseElbBackendId %s: %s", backendId, err)
|
||||
return nil, errors.Wrap(err, "parseElbBackendId")
|
||||
}
|
||||
|
||||
params := &elbv2.DescribeTargetHealthInput{}
|
||||
@@ -291,13 +294,13 @@ func (self *SRegion) GetELbBackend(backendId string) (*SElbBackend, error) {
|
||||
params.SetTargetGroupArn(groupId)
|
||||
ret, err := client.DescribeTargetHealth(params)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "DescribeTargetHealth")
|
||||
}
|
||||
|
||||
backends := []SElbBackend{}
|
||||
err = unmarshalAwsOutput(ret, "TargetHealthDescriptions", &backends)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "unmarshalAwsOutput.TargetHealthDescriptions")
|
||||
}
|
||||
|
||||
if len(backends) == 1 {
|
||||
@@ -305,7 +308,7 @@ func (self *SRegion) GetELbBackend(backendId string) (*SElbBackend, error) {
|
||||
return &backends[0], nil
|
||||
}
|
||||
|
||||
return nil, ErrorNotFound()
|
||||
return nil, errors.Wrap(cloudprovider.ErrNotFound, "GetELbBackend")
|
||||
}
|
||||
|
||||
func parseElbBackendId(id string) (string, string, int, error) {
|
||||
@@ -329,7 +332,7 @@ func genElbBackendId(backendgroupId string, serverId string, port int) string {
|
||||
func (self *SRegion) AddElbBackend(backendgroupId, serverId string, weight int, port int) (*SElbBackend, error) {
|
||||
client, err := self.GetElbV2Client()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetElbV2Client")
|
||||
}
|
||||
|
||||
params := &elbv2.RegisterTargetsInput{}
|
||||
@@ -340,7 +343,7 @@ func (self *SRegion) AddElbBackend(backendgroupId, serverId string, weight int,
|
||||
params.SetTargets([]*elbv2.TargetDescription{desc})
|
||||
_, err = client.RegisterTargets(params)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "RegisterTargets")
|
||||
}
|
||||
|
||||
return self.GetELbBackend(genElbBackendId(backendgroupId, serverId, port))
|
||||
@@ -349,7 +352,7 @@ func (self *SRegion) AddElbBackend(backendgroupId, serverId string, weight int,
|
||||
func (self *SRegion) RemoveElbBackend(backendgroupId, serverId string, weight int, port int) error {
|
||||
client, err := self.GetElbV2Client()
|
||||
if err != nil {
|
||||
return err
|
||||
return errors.Wrap(err, "GetElbV2Client")
|
||||
}
|
||||
|
||||
params := &elbv2.DeregisterTargetsInput{}
|
||||
@@ -360,7 +363,7 @@ func (self *SRegion) RemoveElbBackend(backendgroupId, serverId string, weight in
|
||||
params.SetTargets([]*elbv2.TargetDescription{desc})
|
||||
_, err = client.DeregisterTargets(params)
|
||||
if err != nil {
|
||||
return err
|
||||
return errors.Wrap(err, "DeregisterTargets")
|
||||
}
|
||||
|
||||
return nil
|
||||
@@ -369,14 +372,14 @@ func (self *SRegion) RemoveElbBackend(backendgroupId, serverId string, weight in
|
||||
func (self *SRegion) DeleteElbBackendGroup(backendgroupId string) error {
|
||||
client, err := self.GetElbV2Client()
|
||||
if err != nil {
|
||||
return err
|
||||
return errors.Wrap(err, "GetElbV2Client")
|
||||
}
|
||||
|
||||
params := &elbv2.DeleteTargetGroupInput{}
|
||||
params.SetTargetGroupArn(backendgroupId)
|
||||
_, err = client.DeleteTargetGroup(params)
|
||||
if err != nil {
|
||||
return err
|
||||
return errors.Wrap(err, "DeleteTargetGroup")
|
||||
}
|
||||
|
||||
return nil
|
||||
@@ -385,12 +388,13 @@ func (self *SRegion) DeleteElbBackendGroup(backendgroupId string) error {
|
||||
func (self *SRegion) SyncELbBackendGroup(backendgroupId string, group *cloudprovider.SLoadbalancerBackendGroup) error {
|
||||
err := self.modifyELbBackendGroup(backendgroupId, group.HealthCheck)
|
||||
if err != nil {
|
||||
return err
|
||||
return errors.Wrap(err, "modifyELbBackendGroup")
|
||||
}
|
||||
|
||||
err = self.RemoveElbBackends(backendgroupId)
|
||||
if err != nil {
|
||||
return err
|
||||
log.Errorf("RemoveElbBackends %s: %s", backendgroupId, err)
|
||||
return errors.Wrap(err, "RemoveElbBackends")
|
||||
}
|
||||
|
||||
return self.AddElbBackends(backendgroupId, group.Backends)
|
||||
@@ -425,7 +429,7 @@ func (self *SRegion) modifyELbBackendGroup(backendgroupId string, healthCheck *c
|
||||
|
||||
_, err = client.ModifyTargetGroup(params)
|
||||
if err != nil {
|
||||
return err
|
||||
return errors.Wrap(err, "ModifyTargetGroup")
|
||||
}
|
||||
|
||||
return nil
|
||||
@@ -439,7 +443,7 @@ func (self *SRegion) RemoveElbBackends(backendgroupId string) error {
|
||||
|
||||
backends, err := self.GetELbBackends(backendgroupId)
|
||||
if err != nil {
|
||||
return err
|
||||
return errors.Wrap(err, "GetELbBackends")
|
||||
}
|
||||
|
||||
if len(backends) == 0 {
|
||||
@@ -459,7 +463,7 @@ func (self *SRegion) RemoveElbBackends(backendgroupId string) error {
|
||||
params.SetTargets(targets)
|
||||
_, err = client.DeregisterTargets(params)
|
||||
if err != nil {
|
||||
return err
|
||||
return errors.Wrap(err, "DeregisterTargets")
|
||||
}
|
||||
|
||||
return nil
|
||||
@@ -488,7 +492,7 @@ func (self *SRegion) AddElbBackends(backendgroupId string, backends []cloudprovi
|
||||
params.SetTargets(targets)
|
||||
_, err = client.RegisterTargets(params)
|
||||
if err != nil {
|
||||
return err
|
||||
return errors.Wrap(err, "RegisterTargets")
|
||||
}
|
||||
|
||||
return nil
|
||||
@@ -497,7 +501,7 @@ func (self *SRegion) AddElbBackends(backendgroupId string, backends []cloudprovi
|
||||
func (self *SRegion) GetElbBackendgroupAttributesById(backendgroupId string) (map[string]string, error) {
|
||||
client, err := self.GetElbV2Client()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetElbV2Client")
|
||||
}
|
||||
|
||||
params := &elbv2.DescribeTargetGroupAttributesInput{}
|
||||
@@ -505,13 +509,13 @@ func (self *SRegion) GetElbBackendgroupAttributesById(backendgroupId string) (ma
|
||||
|
||||
output, err := client.DescribeTargetGroupAttributes(params)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "DescribeTargetGroupAttributes")
|
||||
}
|
||||
|
||||
attrs := []map[string]string{}
|
||||
err = unmarshalAwsOutput(output, "Attributes", &attrs)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "unmarshalAwsOutput.Attributes")
|
||||
}
|
||||
|
||||
ret := map[string]string{}
|
||||
|
||||
@@ -26,6 +26,7 @@ import (
|
||||
|
||||
"yunion.io/x/jsonutils"
|
||||
"yunion.io/x/log"
|
||||
"yunion.io/x/pkg/errors"
|
||||
|
||||
api "yunion.io/x/onecloud/pkg/apis/compute"
|
||||
"yunion.io/x/onecloud/pkg/cloudprovider"
|
||||
@@ -161,7 +162,7 @@ func (self *SElbCertificate) ParsePublicKey() (*x509.Certificate, error) {
|
||||
block, _ := pem.Decode([]byte(publicKey))
|
||||
cert, err := x509.ParseCertificate(block.Bytes)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "ParseCertificate")
|
||||
}
|
||||
|
||||
self.cert = cert
|
||||
|
||||
@@ -165,7 +165,7 @@ func (self *SElbListener) getBackendGroup() (*SElbBackendGroup, error) {
|
||||
|
||||
lbbg, err := self.region.GetElbBackendgroup(self.DefaultActions[0].TargetGroupArn)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetElbBackendgroup")
|
||||
}
|
||||
|
||||
self.group = lbbg
|
||||
@@ -323,16 +323,16 @@ func (self *SElbListener) GetHealthCheckCode() string {
|
||||
func (self *SElbListener) CreateILoadBalancerListenerRule(rule *cloudprovider.SLoadbalancerListenerRule) (cloudprovider.ICloudLoadbalancerListenerRule, error) {
|
||||
rules, err := self.GetILoadbalancerListenerRules()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetILoadbalancerListenerRules")
|
||||
} else {
|
||||
if err := self.region.UpdateRulesPriority(rules); err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "UpdateRulesPriority")
|
||||
}
|
||||
}
|
||||
|
||||
ret, err := self.region.CreateElbListenerRule(self.GetId(), rule)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "CreateElbListenerRule")
|
||||
}
|
||||
|
||||
ret.listener = self
|
||||
@@ -343,7 +343,7 @@ func (self *SElbListener) CreateILoadBalancerListenerRule(rule *cloudprovider.SL
|
||||
func (self *SElbListener) GetILoadBalancerListenerRuleById(ruleId string) (cloudprovider.ICloudLoadbalancerListenerRule, error) {
|
||||
rule, err := self.region.GetElbListenerRuleById(ruleId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetElbListenerRuleById")
|
||||
}
|
||||
|
||||
rule.listener = self
|
||||
@@ -353,7 +353,7 @@ func (self *SElbListener) GetILoadBalancerListenerRuleById(ruleId string) (cloud
|
||||
func (self *SElbListener) GetILoadbalancerListenerRules() ([]cloudprovider.ICloudLoadbalancerListenerRule, error) {
|
||||
rules, err := self.region.GetElbListenerRules(self.GetId(), "")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetElbListenerRules")
|
||||
}
|
||||
|
||||
irules := make([]cloudprovider.ICloudLoadbalancerListenerRule, len(rules))
|
||||
@@ -464,20 +464,20 @@ func (self *SElbListener) Delete(ctx context.Context) error {
|
||||
func (self *SRegion) GetElbListeners(elbId string) ([]SElbListener, error) {
|
||||
client, err := self.GetElbV2Client()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetElbV2Client")
|
||||
}
|
||||
|
||||
params := &elbv2.DescribeListenersInput{}
|
||||
params.SetLoadBalancerArn(elbId)
|
||||
ret, err := client.DescribeListeners(params)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "DescribeListeners")
|
||||
}
|
||||
|
||||
listeners := []SElbListener{}
|
||||
err = unmarshalAwsOutput(ret, "Listeners", &listeners)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "unmarshalAwsOutput.Listeners")
|
||||
}
|
||||
|
||||
for i := range listeners {
|
||||
@@ -516,20 +516,20 @@ func unmarshalAwsOutput(output interface{}, respKey string, result interface{})
|
||||
func (self *SRegion) GetElbListener(listenerId string) (*SElbListener, error) {
|
||||
client, err := self.GetElbV2Client()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetElbV2Client")
|
||||
}
|
||||
|
||||
params := &elbv2.DescribeListenersInput{}
|
||||
params.SetListenerArns([]*string{&listenerId})
|
||||
ret, err := client.DescribeListeners(params)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "DescribeListeners")
|
||||
}
|
||||
|
||||
listeners := []SElbListener{}
|
||||
err = unmarshalAwsOutput(ret, "Listeners", &listeners)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "unmarshalAwsOutput.Listeners")
|
||||
}
|
||||
|
||||
if len(listeners) == 1 {
|
||||
@@ -537,13 +537,13 @@ func (self *SRegion) GetElbListener(listenerId string) (*SElbListener, error) {
|
||||
return &listeners[0], nil
|
||||
}
|
||||
|
||||
return nil, ErrorNotFound()
|
||||
return nil, errors.Wrap(cloudprovider.ErrNotFound, "GetElbListener")
|
||||
}
|
||||
|
||||
func (self *SRegion) CreateElbListener(listener *cloudprovider.SLoadbalancerListener) (*SElbListener, error) {
|
||||
client, err := self.GetElbV2Client()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetElbV2Client")
|
||||
}
|
||||
|
||||
listenerType := strings.ToUpper(listener.ListenerType)
|
||||
@@ -581,7 +581,7 @@ func (self *SRegion) CreateElbListener(listener *cloudprovider.SLoadbalancerList
|
||||
listeners := []SElbListener{}
|
||||
err = unmarshalAwsOutput(ret, "Listeners", &listeners)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "unmarshalAwsOutput.Listeners")
|
||||
}
|
||||
|
||||
if len(listeners) == 1 {
|
||||
@@ -595,7 +595,7 @@ func (self *SRegion) CreateElbListener(listener *cloudprovider.SLoadbalancerList
|
||||
func (self *SRegion) GetElbListenerRules(listenerId string, ruleId string) ([]SElbListenerRule, error) {
|
||||
client, err := self.GetElbV2Client()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetElbV2Client")
|
||||
}
|
||||
|
||||
params := &elbv2.DescribeRulesInput{}
|
||||
@@ -609,13 +609,13 @@ func (self *SRegion) GetElbListenerRules(listenerId string, ruleId string) ([]SE
|
||||
|
||||
ret, err := client.DescribeRules(params)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "DescribeRules")
|
||||
}
|
||||
|
||||
rules := []SElbListenerRule{}
|
||||
err = unmarshalAwsOutput(ret, "Rules", &rules)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "unmarshalAwsOutput.Rules")
|
||||
}
|
||||
|
||||
for i := range rules {
|
||||
@@ -628,7 +628,7 @@ func (self *SRegion) GetElbListenerRules(listenerId string, ruleId string) ([]SE
|
||||
func (self *SRegion) GetElbListenerRuleById(ruleId string) (*SElbListenerRule, error) {
|
||||
client, err := self.GetElbV2Client()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetElbV2Client")
|
||||
}
|
||||
|
||||
params := &elbv2.DescribeRulesInput{}
|
||||
@@ -638,13 +638,13 @@ func (self *SRegion) GetElbListenerRuleById(ruleId string) (*SElbListenerRule, e
|
||||
|
||||
ret, err := client.DescribeRules(params)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "DescribeRules")
|
||||
}
|
||||
|
||||
rules := []SElbListenerRule{}
|
||||
err = unmarshalAwsOutput(ret, "Rules", &rules)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "unmarshalAwsOutput.Rules")
|
||||
}
|
||||
|
||||
if len(rules) == 1 {
|
||||
@@ -652,7 +652,7 @@ func (self *SRegion) GetElbListenerRuleById(ruleId string) (*SElbListenerRule, e
|
||||
return &rules[0], nil
|
||||
} else {
|
||||
log.Errorf("GetElbListenerRuleById %s %d found", ruleId, len(rules))
|
||||
return nil, ErrorNotFound()
|
||||
return nil, errors.Wrap(cloudprovider.ErrNotFound, "GetElbListenerRuleById")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -187,7 +187,7 @@ func (self *SRegion) DeleteElbListenerRule(ruleId string) error {
|
||||
func (self *SRegion) CreateElbListenerRule(listenerId string, config *cloudprovider.SLoadbalancerListenerRule) (*SElbListenerRule, error) {
|
||||
client, err := self.GetElbV2Client()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetElbV2Client")
|
||||
}
|
||||
|
||||
forward := "forward"
|
||||
@@ -198,7 +198,7 @@ func (self *SRegion) CreateElbListenerRule(listenerId string, config *cloudprovi
|
||||
|
||||
condtions, err := parseConditions(config.Condition)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "parseConditions")
|
||||
}
|
||||
|
||||
params := &elbv2.CreateRuleInput{}
|
||||
@@ -208,7 +208,7 @@ func (self *SRegion) CreateElbListenerRule(listenerId string, config *cloudprovi
|
||||
params.SetPriority(int64(1))
|
||||
ret, err := client.CreateRule(params)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "CreateRule")
|
||||
}
|
||||
|
||||
if len(ret.Rules) == 0 {
|
||||
@@ -218,7 +218,7 @@ func (self *SRegion) CreateElbListenerRule(listenerId string, config *cloudprovi
|
||||
rule := SElbListenerRule{}
|
||||
err = unmarshalAwsOutput(ret.Rules[0], "", &rule)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "unmarshalAwsOutput.rule")
|
||||
}
|
||||
|
||||
rule.region = self
|
||||
@@ -228,7 +228,7 @@ func (self *SRegion) CreateElbListenerRule(listenerId string, config *cloudprovi
|
||||
func parseConditions(conditions string) ([]*elbv2.RuleCondition, error) {
|
||||
obj, err := jsonutils.ParseString(conditions)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "ParseString.conditions")
|
||||
}
|
||||
|
||||
conditionArray, ok := obj.(*jsonutils.JSONArray)
|
||||
@@ -241,7 +241,7 @@ func parseConditions(conditions string) ([]*elbv2.RuleCondition, error) {
|
||||
for i := range cs {
|
||||
c, err := parseCondition(cs[i])
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "parseCondition")
|
||||
}
|
||||
|
||||
ret = append(ret, c)
|
||||
@@ -287,7 +287,7 @@ func parseHttpHeaderCondition(conditon *jsonutils.JSONDict) (*elbv2.RuleConditio
|
||||
|
||||
values, err := conditon.GetMap("httpHeaderConfig")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetMap")
|
||||
}
|
||||
|
||||
name, ok := values["HttpHeaderName"]
|
||||
@@ -311,7 +311,7 @@ func parseHttpHeaderCondition(conditon *jsonutils.JSONDict) (*elbv2.RuleConditio
|
||||
|
||||
_vs, err := parseConditionStringArrayValues(vs)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "parseConditionStringArrayValues")
|
||||
}
|
||||
config.SetValues(_vs)
|
||||
ret.SetHttpHeaderConfig(config)
|
||||
@@ -324,7 +324,7 @@ func parsePathPatternCondition(condition *jsonutils.JSONDict) (*elbv2.RuleCondit
|
||||
|
||||
values, err := condition.GetMap("pathPatternConfig")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetMap")
|
||||
}
|
||||
|
||||
config := &elbv2.PathPatternConditionConfig{}
|
||||
@@ -335,7 +335,7 @@ func parsePathPatternCondition(condition *jsonutils.JSONDict) (*elbv2.RuleCondit
|
||||
|
||||
_vs, err := parseConditionStringArrayValues(vs)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "parseConditionStringArrayValues")
|
||||
}
|
||||
config.SetValues(_vs)
|
||||
ret.SetPathPatternConfig(config)
|
||||
@@ -349,7 +349,7 @@ func parseRequestModthdCondition(condition *jsonutils.JSONDict) (*elbv2.RuleCond
|
||||
|
||||
values, err := condition.GetMap("httpRequestMethodConfig")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetMap.httpRequestMethodConfig")
|
||||
}
|
||||
|
||||
config := &elbv2.HttpRequestMethodConditionConfig{}
|
||||
@@ -360,7 +360,7 @@ func parseRequestModthdCondition(condition *jsonutils.JSONDict) (*elbv2.RuleCond
|
||||
|
||||
_vs, err := parseConditionStringArrayValues(vs)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "parseConditionStringArrayValues")
|
||||
}
|
||||
config.SetValues(_vs)
|
||||
return ret, nil
|
||||
@@ -372,7 +372,7 @@ func parseHostHeaderCondition(condition *jsonutils.JSONDict) (*elbv2.RuleConditi
|
||||
|
||||
values, err := condition.GetMap("hostHeaderConfig")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetMap.hostHeaderConfig")
|
||||
}
|
||||
|
||||
config := &elbv2.HostHeaderConditionConfig{}
|
||||
@@ -383,7 +383,7 @@ func parseHostHeaderCondition(condition *jsonutils.JSONDict) (*elbv2.RuleConditi
|
||||
|
||||
_vs, err := parseConditionStringArrayValues(vs)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "parseConditionStringArrayValues")
|
||||
}
|
||||
config.SetValues(_vs)
|
||||
ret.SetHostHeaderConfig(config)
|
||||
@@ -396,7 +396,7 @@ func parseQueryStringCondition(condition *jsonutils.JSONDict) (*elbv2.RuleCondit
|
||||
|
||||
values, err := condition.GetMap("queryStringConfig")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetMap.queryStringConfig")
|
||||
}
|
||||
|
||||
config := &elbv2.QueryStringConditionConfig{}
|
||||
@@ -407,7 +407,7 @@ func parseQueryStringCondition(condition *jsonutils.JSONDict) (*elbv2.RuleCondit
|
||||
|
||||
_vs, err := parseConditionDictArrayValues(vs)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "parseConditionDictArrayValues")
|
||||
}
|
||||
config.SetValues(_vs)
|
||||
ret.SetQueryStringConfig(config)
|
||||
@@ -420,7 +420,7 @@ func parseSourceIpCondition(condition *jsonutils.JSONDict) (*elbv2.RuleCondition
|
||||
|
||||
values, err := condition.GetMap("sourceIpConfig")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetMap.sourceIpConfig")
|
||||
}
|
||||
|
||||
config := &elbv2.SourceIpConditionConfig{}
|
||||
@@ -431,7 +431,7 @@ func parseSourceIpCondition(condition *jsonutils.JSONDict) (*elbv2.RuleCondition
|
||||
|
||||
_vs, err := parseConditionStringArrayValues(vs)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "parseConditionStringArrayValues")
|
||||
}
|
||||
config.SetValues(_vs)
|
||||
return ret, nil
|
||||
@@ -474,12 +474,12 @@ func parseConditionDictArrayValues(values jsonutils.JSONObject) ([]*elbv2.QueryS
|
||||
|
||||
key, err := v.GetString("key")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetString.key")
|
||||
}
|
||||
|
||||
value, err := v.GetString("value")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetString.value")
|
||||
}
|
||||
|
||||
pair := &elbv2.QueryStringKeyValuePair{}
|
||||
|
||||
@@ -24,6 +24,7 @@ import (
|
||||
|
||||
"yunion.io/x/jsonutils"
|
||||
"yunion.io/x/log"
|
||||
"yunion.io/x/pkg/errors"
|
||||
"yunion.io/x/pkg/util/netutils"
|
||||
|
||||
api "yunion.io/x/onecloud/pkg/apis/compute"
|
||||
@@ -211,10 +212,11 @@ func (self *SRegion) getNetwork(networkId string) (*SNetwork, error) {
|
||||
}
|
||||
networks, total, err := self.GetNetwroks([]string{networkId}, "", 0, 0)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
log.Errorf("GetNetwroks %s: %s", networkId, err)
|
||||
return nil, errors.Wrap(err, "GetNetwroks")
|
||||
}
|
||||
if total != 1 {
|
||||
return nil, ErrorNotFound()
|
||||
return nil, errors.Wrap(cloudprovider.ErrNotFound, "getNetwork")
|
||||
}
|
||||
return &networks[0], nil
|
||||
}
|
||||
|
||||
@@ -14,7 +14,11 @@
|
||||
|
||||
package aws
|
||||
|
||||
import "time"
|
||||
import (
|
||||
"time"
|
||||
|
||||
"yunion.io/x/pkg/errors"
|
||||
)
|
||||
|
||||
type SGroupSet struct {
|
||||
GroupId string `xml:"groupId"`
|
||||
@@ -65,7 +69,7 @@ func (region *SRegion) GetNetworkInterfaces() ([]SNetworkInterface, error) {
|
||||
interfaces := SNetworkInterfaces{}
|
||||
err := region.ec2Request("DescribeNetworkInterfaces", params, &interfaces)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "DescribeNetworkInterfaces")
|
||||
}
|
||||
return interfaces.NetworkInterface, nil
|
||||
}
|
||||
|
||||
@@ -194,7 +194,7 @@ func (self *SAwsProviderFactory) GetProvider(cfg cloudprovider.ProviderConfig) (
|
||||
).CloudproviderConfig(cfg),
|
||||
)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "NewAwsClient")
|
||||
}
|
||||
return &SAwsProvider{
|
||||
SBaseProvider: cloudprovider.NewBaseProvider(self),
|
||||
|
||||
@@ -159,7 +159,7 @@ func (self *SRegion) getEc2Client() (*ec2.EC2, error) {
|
||||
s, err := self.getAwsSession()
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "getAwsSession")
|
||||
}
|
||||
|
||||
self.ec2Client = ec2.New(s)
|
||||
@@ -174,7 +174,7 @@ func (self *SRegion) getIamClient() (*iam.IAM, error) {
|
||||
s, err := self.getAwsSession()
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "getAwsSession")
|
||||
}
|
||||
|
||||
self.iamClient = iam.New(s)
|
||||
@@ -187,7 +187,7 @@ func (self *SRegion) GetS3Client() (*s3.S3, error) {
|
||||
if self.s3Client == nil {
|
||||
s, err := self.getAwsSession()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "getAwsSession")
|
||||
}
|
||||
self.s3Client = s3.New(s)
|
||||
}
|
||||
@@ -198,7 +198,7 @@ func (self *SRegion) getResourceGroupTagClient() (*resourcegroupstaggingapi.Reso
|
||||
if self.resourceGroupTagClient == nil {
|
||||
s, err := self.getAwsSession()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "getAwsSession")
|
||||
}
|
||||
self.resourceGroupTagClient = resourcegroupstaggingapi.New(s)
|
||||
}
|
||||
@@ -349,7 +349,7 @@ func (self *SRegion) GetElbV2Client() (*elbv2.ELBV2, error) {
|
||||
s, err := self.getAwsSession()
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "getAwsSession")
|
||||
}
|
||||
|
||||
self.elbv2Client = elbv2.New(s)
|
||||
@@ -491,7 +491,7 @@ func (self *SRegion) GetGeographicInfo() cloudprovider.SGeographicInfo {
|
||||
func (self *SRegion) GetIZones() ([]cloudprovider.ICloudZone, error) {
|
||||
if self.izones == nil {
|
||||
if err := self.fetchInfrastructure(); err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "fetchInfrastructure")
|
||||
}
|
||||
}
|
||||
return self.izones, nil
|
||||
@@ -501,7 +501,7 @@ func (self *SRegion) GetIVpcs() ([]cloudprovider.ICloudVpc, error) {
|
||||
if self.ivpcs == nil {
|
||||
err := self.fetchInfrastructure()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "fetchInfrastructure")
|
||||
}
|
||||
}
|
||||
return self.ivpcs, nil
|
||||
@@ -518,12 +518,12 @@ func (self *SRegion) GetIDiskById(id string) (cloudprovider.ICloudDisk, error) {
|
||||
func (self *SRegion) GetIEips() ([]cloudprovider.ICloudEIP, error) {
|
||||
_, err := self.getEc2Client()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "getEc2Client")
|
||||
}
|
||||
|
||||
eips, total, err := self.GetEips("", "", 0, 0)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetEips")
|
||||
}
|
||||
|
||||
ret := make([]cloudprovider.ICloudEIP, total)
|
||||
@@ -536,7 +536,7 @@ func (self *SRegion) GetIEips() ([]cloudprovider.ICloudEIP, error) {
|
||||
func (self *SRegion) GetISnapshots() ([]cloudprovider.ICloudSnapshot, error) {
|
||||
snapshots, _, err := self.GetSnapshots("", "", "", []string{}, 0, 0)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetSnapshots")
|
||||
}
|
||||
|
||||
ret := make([]cloudprovider.ICloudSnapshot, len(snapshots))
|
||||
@@ -549,7 +549,7 @@ func (self *SRegion) GetISnapshots() ([]cloudprovider.ICloudSnapshot, error) {
|
||||
func (self *SRegion) GetIZoneById(id string) (cloudprovider.ICloudZone, error) {
|
||||
izones, err := self.GetIZones()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetIZones")
|
||||
}
|
||||
|
||||
for _, zone := range izones {
|
||||
@@ -558,13 +558,13 @@ func (self *SRegion) GetIZoneById(id string) (cloudprovider.ICloudZone, error) {
|
||||
}
|
||||
}
|
||||
|
||||
return nil, ErrorNotFound()
|
||||
return nil, errors.Wrap(cloudprovider.ErrNotFound, "GetIZoneById")
|
||||
}
|
||||
|
||||
func (self *SRegion) GetIVpcById(id string) (cloudprovider.ICloudVpc, error) {
|
||||
ivpcs, err := self.GetIVpcs()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetIVpcs")
|
||||
}
|
||||
|
||||
for _, vpc := range ivpcs {
|
||||
@@ -573,39 +573,41 @@ func (self *SRegion) GetIVpcById(id string) (cloudprovider.ICloudVpc, error) {
|
||||
}
|
||||
}
|
||||
|
||||
return nil, ErrorNotFound()
|
||||
return nil, errors.Wrap(cloudprovider.ErrNotFound, "GetIVpcById")
|
||||
}
|
||||
|
||||
func (self *SRegion) GetIHostById(id string) (cloudprovider.ICloudHost, error) {
|
||||
izones, err := self.GetIZones()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetIZones")
|
||||
}
|
||||
for i := 0; i < len(izones); i += 1 {
|
||||
ihost, err := izones[i].GetIHostById(id)
|
||||
if err == nil {
|
||||
return ihost, nil
|
||||
} else if errors.Cause(err) != cloudprovider.ErrNotFound {
|
||||
return nil, err
|
||||
log.Errorf("GetIHostById %s: %s", id, err)
|
||||
return nil, errors.Wrap(err, "GetIHostById")
|
||||
}
|
||||
}
|
||||
return nil, ErrorNotFound()
|
||||
return nil, errors.Wrap(cloudprovider.ErrNotFound, "GetIHostById")
|
||||
}
|
||||
|
||||
func (self *SRegion) GetIStorageById(id string) (cloudprovider.ICloudStorage, error) {
|
||||
izones, err := self.GetIZones()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetIZones")
|
||||
}
|
||||
for i := 0; i < len(izones); i += 1 {
|
||||
istore, err := izones[i].GetIStorageById(id)
|
||||
if err == nil {
|
||||
return istore, nil
|
||||
} else if errors.Cause(err) != cloudprovider.ErrNotFound {
|
||||
return nil, err
|
||||
log.Errorf("GetIStorageById %s: %s", id, err)
|
||||
return nil, errors.Wrap(err, "GetIStorageById")
|
||||
}
|
||||
}
|
||||
return nil, ErrorNotFound()
|
||||
return nil, errors.Wrap(cloudprovider.ErrNotFound, "GetIStorageById")
|
||||
}
|
||||
|
||||
func (self *SRegion) GetIHosts() ([]cloudprovider.ICloudHost, error) {
|
||||
@@ -613,12 +615,12 @@ func (self *SRegion) GetIHosts() ([]cloudprovider.ICloudHost, error) {
|
||||
|
||||
izones, err := self.GetIZones()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetIZones")
|
||||
}
|
||||
for i := 0; i < len(izones); i += 1 {
|
||||
iZoneHost, err := izones[i].GetIHosts()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetIHosts")
|
||||
}
|
||||
iHosts = append(iHosts, iZoneHost...)
|
||||
}
|
||||
@@ -630,12 +632,12 @@ func (self *SRegion) GetIStorages() ([]cloudprovider.ICloudStorage, error) {
|
||||
|
||||
izones, err := self.GetIZones()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetIZones")
|
||||
}
|
||||
for i := 0; i < len(izones); i += 1 {
|
||||
iZoneStores, err := izones[i].GetIStorages()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetIStorages")
|
||||
}
|
||||
iStores = append(iStores, iZoneStores...)
|
||||
}
|
||||
@@ -650,7 +652,7 @@ func (self *SRegion) GetIStoragecacheById(id string) (cloudprovider.ICloudStorag
|
||||
if self.storageCache.GetGlobalId() == id {
|
||||
return self.storageCache, nil
|
||||
}
|
||||
return nil, ErrorNotFound()
|
||||
return nil, errors.Wrap(cloudprovider.ErrNotFound, "GetIStoragecacheById")
|
||||
|
||||
}
|
||||
|
||||
@@ -666,13 +668,13 @@ func (self *SRegion) CreateIVpc(name string, desc string, cidr string) (cloudpro
|
||||
|
||||
spec, err := tagspec.GetTagSpecifications()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetTagSpecifications")
|
||||
}
|
||||
|
||||
// start create vpc
|
||||
vpc, err := self.ec2Client.CreateVpc(&ec2.CreateVpcInput{CidrBlock: &cidr})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "CreateVpc")
|
||||
}
|
||||
|
||||
tagsParams := &ec2.CreateTagsInput{Resources: []*string{vpc.Vpc.VpcId}, Tags: spec.Tags}
|
||||
@@ -683,7 +685,7 @@ func (self *SRegion) CreateIVpc(name string, desc string, cidr string) (cloudpro
|
||||
|
||||
err = self.fetchInfrastructure()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "fetchInfrastructure")
|
||||
}
|
||||
return self.GetIVpcById(*vpc.Vpc.VpcId)
|
||||
}
|
||||
@@ -691,10 +693,11 @@ func (self *SRegion) CreateIVpc(name string, desc string, cidr string) (cloudpro
|
||||
func (self *SRegion) GetIEipById(eipId string) (cloudprovider.ICloudEIP, error) {
|
||||
eips, total, err := self.GetEips(eipId, "", 0, 0)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
log.Errorf("GetEips %s: %s", eipId, err)
|
||||
return nil, errors.Wrap(err, "GetEips")
|
||||
}
|
||||
if total == 0 {
|
||||
return nil, ErrorNotFound()
|
||||
return nil, errors.Wrap(cloudprovider.ErrNotFound, "GetIEipById")
|
||||
}
|
||||
if total > 1 {
|
||||
return nil, cloudprovider.ErrDuplicateId
|
||||
@@ -713,7 +716,7 @@ func (self *SRegion) GetCloudEnv() string {
|
||||
func (self *SRegion) CreateInstanceSimple(name string, imgId string, cpu int, memGB int, storageType string, dataDiskSizesGB []int, networkId string, publicKey string) (*SInstance, error) {
|
||||
izones, err := self.GetIZones()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetIZones")
|
||||
}
|
||||
for i := 0; i < len(izones); i += 1 {
|
||||
z := izones[i].(*SZone)
|
||||
@@ -735,7 +738,7 @@ func (self *SRegion) CreateInstanceSimple(name string, imgId string, cpu int, me
|
||||
}
|
||||
inst, err := z.getHost().CreateVM(desc)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "CreateVM")
|
||||
}
|
||||
return inst.(*SInstance), nil
|
||||
}
|
||||
@@ -746,19 +749,19 @@ func (self *SRegion) CreateInstanceSimple(name string, imgId string, cpu int, me
|
||||
func (self *SRegion) GetILoadBalancers() ([]cloudprovider.ICloudLoadbalancer, error) {
|
||||
client, err := self.GetElbV2Client()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetElbV2Client")
|
||||
}
|
||||
|
||||
params := &elbv2.DescribeLoadBalancersInput{}
|
||||
ret, err := client.DescribeLoadBalancers(params)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "DescribeLoadBalancers")
|
||||
}
|
||||
|
||||
result := make([]SElb, 0)
|
||||
err = unmarshalAwsOutput(ret, "LoadBalancers", &result)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "unmarshalAwsOutput.LoadBalancers")
|
||||
}
|
||||
|
||||
ielbs := make([]cloudprovider.ICloudLoadbalancer, len(result))
|
||||
@@ -773,7 +776,7 @@ func (self *SRegion) GetILoadBalancers() ([]cloudprovider.ICloudLoadbalancer, er
|
||||
func (self *SRegion) GetILoadBalancerById(loadbalancerId string) (cloudprovider.ICloudLoadbalancer, error) {
|
||||
client, err := self.GetElbV2Client()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetElbV2Client")
|
||||
}
|
||||
|
||||
params := &elbv2.DescribeLoadBalancersInput{}
|
||||
@@ -784,13 +787,13 @@ func (self *SRegion) GetILoadBalancerById(loadbalancerId string) (cloudprovider.
|
||||
return nil, cloudprovider.ErrNotFound
|
||||
}
|
||||
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "DescribeLoadBalancers")
|
||||
}
|
||||
|
||||
elbs := []SElb{}
|
||||
err = unmarshalAwsOutput(ret, "LoadBalancers", &elbs)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "unmarshalAwsOutput.LoadBalancers")
|
||||
}
|
||||
|
||||
if len(elbs) == 1 {
|
||||
@@ -798,26 +801,26 @@ func (self *SRegion) GetILoadBalancerById(loadbalancerId string) (cloudprovider.
|
||||
return &elbs[0], nil
|
||||
}
|
||||
|
||||
return nil, ErrorNotFound()
|
||||
return nil, errors.Wrap(cloudprovider.ErrNotFound, "GetILoadBalancerById")
|
||||
}
|
||||
|
||||
func (self *SRegion) getElbAttributesById(loadbalancerId string) (map[string]string, error) {
|
||||
client, err := self.GetElbV2Client()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetElbV2Client")
|
||||
}
|
||||
|
||||
params := &elbv2.DescribeLoadBalancerAttributesInput{}
|
||||
params.SetLoadBalancerArn(loadbalancerId)
|
||||
output, err := client.DescribeLoadBalancerAttributes(params)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "DescribeLoadBalancerAttributes")
|
||||
}
|
||||
|
||||
attrs := []map[string]string{}
|
||||
err = unmarshalAwsOutput(output, "Attributes", &attrs)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "unmarshalAwsOutput.Attributes")
|
||||
}
|
||||
|
||||
ret := map[string]string{}
|
||||
@@ -837,7 +840,7 @@ func (self *SRegion) GetILoadBalancerAclById(aclId string) (cloudprovider.ICloud
|
||||
func (self *SRegion) GetILoadBalancerCertificateById(certId string) (cloudprovider.ICloudLoadbalancerCertificate, error) {
|
||||
certs, err := self.GetILoadBalancerCertificates()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetILoadBalancerCertificates")
|
||||
}
|
||||
|
||||
for i := range certs {
|
||||
@@ -846,7 +849,7 @@ func (self *SRegion) GetILoadBalancerCertificateById(certId string) (cloudprovid
|
||||
}
|
||||
}
|
||||
|
||||
return nil, ErrorNotFound()
|
||||
return nil, errors.Wrap(cloudprovider.ErrNotFound, "GetILoadBalancerCertificateById")
|
||||
}
|
||||
|
||||
func (self *SRegion) CreateILoadBalancerCertificate(cert *cloudprovider.SLoadbalancerCertificate) (cloudprovider.ICloudLoadbalancerCertificate, error) {
|
||||
@@ -891,19 +894,19 @@ func (self *SRegion) GetILoadBalancerAcls() ([]cloudprovider.ICloudLoadbalancerA
|
||||
func (self *SRegion) GetILoadBalancerCertificates() ([]cloudprovider.ICloudLoadbalancerCertificate, error) {
|
||||
client, err := self.getIamClient()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "getIamClient")
|
||||
}
|
||||
|
||||
params := &iam.ListServerCertificatesInput{}
|
||||
ret, err := client.ListServerCertificates(params)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "ListServerCertificates")
|
||||
}
|
||||
|
||||
certs := []SElbCertificate{}
|
||||
err = unmarshalAwsOutput(ret, "ServerCertificateMetadataList", &certs)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "unmarshalAwsOutput.ServerCertificateMetadataList")
|
||||
}
|
||||
|
||||
icerts := make([]cloudprovider.ICloudLoadbalancerCertificate, len(certs))
|
||||
@@ -918,7 +921,7 @@ func (self *SRegion) GetILoadBalancerCertificates() ([]cloudprovider.ICloudLoadb
|
||||
func (self *SRegion) CreateILoadBalancer(loadbalancer *cloudprovider.SLoadbalancer) (cloudprovider.ICloudLoadbalancer, error) {
|
||||
client, err := self.GetElbV2Client()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetElbV2Client")
|
||||
}
|
||||
|
||||
params := &elbv2.CreateLoadBalancerInput{}
|
||||
@@ -953,13 +956,13 @@ func (self *SRegion) CreateILoadBalancer(loadbalancer *cloudprovider.SLoadbalanc
|
||||
|
||||
ret, err := client.CreateLoadBalancer(params)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "CreateLoadBalancer")
|
||||
}
|
||||
|
||||
elbs := []SElb{}
|
||||
err = unmarshalAwsOutput(ret, "LoadBalancers", &elbs)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "unmarshalAwsOutput.LoadBalancers")
|
||||
}
|
||||
|
||||
if len(elbs) == 1 {
|
||||
@@ -1095,7 +1098,7 @@ func (self *SRegion) GetSkus(zoneId string) ([]cloudprovider.ICloudSku, error) {
|
||||
func (self *SRegion) GetILoadBalancerBackendGroups() ([]cloudprovider.ICloudLoadbalancerBackendGroup, error) {
|
||||
backendgroups, err := self.GetElbBackendgroups("", nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetElbBackendgroups")
|
||||
}
|
||||
|
||||
ret := make([]cloudprovider.ICloudLoadbalancerBackendGroup, len(backendgroups))
|
||||
@@ -1109,7 +1112,7 @@ func (self *SRegion) GetILoadBalancerBackendGroups() ([]cloudprovider.ICloudLoad
|
||||
func (self *SRegion) GetISecurityGroupById(secgroupId string) (cloudprovider.ICloudSecurityGroup, error) {
|
||||
secgroups, total, err := self.GetSecurityGroups("", "", secgroupId, 0, 1)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetSecurityGroups")
|
||||
}
|
||||
if total == 0 {
|
||||
return nil, cloudprovider.ErrNotFound
|
||||
@@ -1123,7 +1126,7 @@ func (self *SRegion) GetISecurityGroupById(secgroupId string) (cloudprovider.ICl
|
||||
func (self *SRegion) GetISecurityGroupByName(opts *cloudprovider.SecurityGroupFilterOptions) (cloudprovider.ICloudSecurityGroup, error) {
|
||||
secgroups, total, err := self.GetSecurityGroups(opts.VpcId, opts.Name, "", 0, 1)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetSecurityGroups")
|
||||
}
|
||||
if total == 0 {
|
||||
return nil, cloudprovider.ErrNotFound
|
||||
@@ -1137,7 +1140,7 @@ func (self *SRegion) GetISecurityGroupByName(opts *cloudprovider.SecurityGroupFi
|
||||
func (self *SRegion) CreateISecurityGroup(conf *cloudprovider.SecurityGroupCreateInput) (cloudprovider.ICloudSecurityGroup, error) {
|
||||
groupId, err := self.CreateSecurityGroup(conf.VpcId, conf.Name, "", conf.Desc)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "CreateSecurityGroup")
|
||||
}
|
||||
return self.GetISecurityGroupById(groupId)
|
||||
}
|
||||
|
||||
@@ -131,7 +131,7 @@ func (self *SSecurityGroup) GetDescription() string {
|
||||
func (self *SSecurityGroup) GetRules() ([]cloudprovider.SecurityRule, error) {
|
||||
secgrp, err := self.vpc.region.GetSecurityGroupDetails(self.SecurityGroupId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetSecurityGroupDetails")
|
||||
}
|
||||
return secgrp.Permissions, nil
|
||||
}
|
||||
@@ -309,7 +309,7 @@ func (self *SRegion) GetSecurityGroupDetails(secGroupId string) (*SSecurityGroup
|
||||
ret, err := self.ec2Client.DescribeSecurityGroups(params)
|
||||
err = parseNotFoundError(err)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "DescribeSecurityGroups")
|
||||
}
|
||||
|
||||
if len(ret.SecurityGroups) == 1 {
|
||||
@@ -342,7 +342,8 @@ func (self *SRegion) getSecurityGroupById(vpcId, secgroupId string) (*SSecurityG
|
||||
|
||||
secgroups, total, err := self.GetSecurityGroups(vpcId, "", secgroupId, 0, 0)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
log.Errorf("GetSecurityGroups vpc %s secgroupId %s: %s", vpcId, secgroupId, err)
|
||||
return nil, errors.Wrap(err, "GetSecurityGroups")
|
||||
}
|
||||
|
||||
if total != 1 {
|
||||
|
||||
@@ -22,6 +22,7 @@ import (
|
||||
|
||||
"yunion.io/x/jsonutils"
|
||||
"yunion.io/x/log"
|
||||
"yunion.io/x/pkg/errors"
|
||||
|
||||
api "yunion.io/x/onecloud/pkg/apis/compute"
|
||||
"yunion.io/x/onecloud/pkg/cloudprovider"
|
||||
@@ -86,7 +87,7 @@ func (self *SSnapshot) Refresh() error {
|
||||
if snapshots, total, err := self.region.GetSnapshots("", "", "", []string{self.SnapshotId}, 0, 1); err != nil {
|
||||
return err
|
||||
} else if total != 1 {
|
||||
return ErrorNotFound()
|
||||
return errors.Wrap(cloudprovider.ErrNotFound, "GetSnapshots")
|
||||
} else if err := jsonutils.Update(self, snapshots[0]); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -139,7 +140,7 @@ func (self *SRegion) GetSnapshots(instanceId string, diskId string, snapshotName
|
||||
err = parseNotFoundError(err)
|
||||
if err != nil {
|
||||
if strings.Contains(err.Error(), "InvalidSnapshot.NotFound") {
|
||||
return nil, 0, ErrorNotFound()
|
||||
return nil, 0, errors.Wrap(cloudprovider.ErrNotFound, "parseNotFoundError")
|
||||
}
|
||||
|
||||
return nil, 0, err
|
||||
@@ -172,9 +173,9 @@ func (self *SRegion) GetSnapshots(instanceId string, diskId string, snapshotName
|
||||
|
||||
func (self *SRegion) GetISnapshotById(snapshotId string) (cloudprovider.ICloudSnapshot, error) {
|
||||
if snapshots, total, err := self.GetSnapshots("", "", "", []string{snapshotId}, 0, 1); err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetSnapshots")
|
||||
} else if total != 1 {
|
||||
return nil, ErrorNotFound()
|
||||
return nil, errors.Wrap(cloudprovider.ErrNotFound, "GetSnapshots")
|
||||
} else {
|
||||
return &snapshots[0], nil
|
||||
}
|
||||
|
||||
@@ -19,6 +19,7 @@ import (
|
||||
|
||||
"yunion.io/x/jsonutils"
|
||||
"yunion.io/x/log"
|
||||
"yunion.io/x/pkg/errors"
|
||||
|
||||
api "yunion.io/x/onecloud/pkg/apis/compute"
|
||||
"yunion.io/x/onecloud/pkg/cloudprovider"
|
||||
@@ -69,7 +70,7 @@ func (self *SStorage) GetIDisks() ([]cloudprovider.ICloudDisk, error) {
|
||||
parts, total, err := self.zone.region.GetDisks("", self.zone.GetId(), self.storageType, nil, len(disks), 50)
|
||||
if err != nil {
|
||||
log.Errorf("GetDisks fail %s", err)
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetDisks")
|
||||
}
|
||||
disks = append(disks, parts...)
|
||||
if len(disks) >= total {
|
||||
@@ -117,12 +118,12 @@ func (self *SStorage) CreateIDisk(conf *cloudprovider.DiskCreateConfig) (cloudpr
|
||||
diskId, err := self.zone.region.CreateDisk(self.zone.ZoneId, self.storageType, conf.Name, conf.SizeGb, "", conf.Desc)
|
||||
if err != nil {
|
||||
log.Errorf("createDisk fail %s", err)
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "CreateDisk")
|
||||
}
|
||||
disk, err := self.zone.region.GetDisk(diskId)
|
||||
if err != nil {
|
||||
log.Errorf("getDisk fail %s", err)
|
||||
return nil, err
|
||||
log.Errorf("getDisk %s fail %s", diskId, err)
|
||||
return nil, errors.Wrap(err, "GetDisk")
|
||||
}
|
||||
disk.storage = self
|
||||
return disk, nil
|
||||
@@ -130,7 +131,8 @@ func (self *SStorage) CreateIDisk(conf *cloudprovider.DiskCreateConfig) (cloudpr
|
||||
|
||||
func (self *SStorage) GetIDiskById(idStr string) (cloudprovider.ICloudDisk, error) {
|
||||
if disk, err := self.zone.region.GetDisk(idStr); err != nil {
|
||||
return nil, err
|
||||
log.Errorf("GetDisk %s: %s", idStr, err)
|
||||
return nil, errors.Wrap(err, "GetDisk")
|
||||
} else {
|
||||
disk.storage = self
|
||||
return disk, nil
|
||||
|
||||
@@ -90,7 +90,8 @@ func (self *SStoragecache) GetIImageById(extId string) (cloudprovider.ICloudImag
|
||||
|
||||
part, err := self.region.GetImage(extId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
log.Errorf("GetImage %s %s", extId, err)
|
||||
return nil, errors.Wrap(err, "GetImage")
|
||||
}
|
||||
part.storageCache = self
|
||||
return part, nil
|
||||
@@ -103,18 +104,20 @@ func (self *SStoragecache) GetPath() string {
|
||||
func (self *SStoragecache) CreateIImage(snapshotId, imageName, osType, imageDesc string) (cloudprovider.ICloudImage, error) {
|
||||
imageId, err := self.region.createIImage(snapshotId, imageName, imageDesc)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
log.Errorf("createIImage %s %s %s: %s", snapshotId, imageName, imageDesc, err)
|
||||
return nil, errors.Wrap(err, "createIImage")
|
||||
}
|
||||
image, err := self.region.GetImage(imageId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
log.Errorf("GetImage %s: %s", imageId, err)
|
||||
return nil, errors.Wrap(err, "GetImage")
|
||||
}
|
||||
image.storageCache = self
|
||||
iimage := make([]cloudprovider.ICloudImage, 1)
|
||||
iimage[0] = image
|
||||
//todo : implement me
|
||||
if err := cloudprovider.WaitStatus(iimage[0], "avaliable", 15*time.Second, 3600*time.Second); err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "WaitStatus.iimage")
|
||||
}
|
||||
return iimage[0], nil
|
||||
}
|
||||
@@ -239,28 +242,32 @@ func (self *SStoragecache) downloadImage(userCred mcclient.TokenCredential, imag
|
||||
// aws 导出镜像限制比较多。https://docs.aws.amazon.com/zh_cn/vm-import/latest/userguide/vmexport.html
|
||||
bucketName := GetBucketName(self.region.GetId(), imageId)
|
||||
if err := self.region.checkBucket(bucketName); err != nil {
|
||||
return nil, err
|
||||
log.Errorf("checkBucket %s: %s", bucketName, err)
|
||||
return nil, errors.Wrap(err, "checkBucket")
|
||||
}
|
||||
|
||||
instanceId, err := self.region.GetInstanceIdByImageId(extId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
log.Errorf("GetInstanceIdByImageId %s: %s", extId, err)
|
||||
return nil, errors.Wrap(err, "GetInstanceIdByImageId")
|
||||
}
|
||||
|
||||
task, err := self.region.ExportImage(instanceId, imageId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
log.Errorf("ExportImage %s %s: %s", instanceId, imageId, err)
|
||||
return nil, errors.Wrap(err, "ExportImage")
|
||||
}
|
||||
|
||||
taskParams := &ec2.DescribeExportTasksInput{}
|
||||
taskParams.SetExportTaskIds([]*string{&task.TaskId})
|
||||
if err := self.region.ec2Client.WaitUntilExportTaskCompleted(taskParams); err != nil {
|
||||
return nil, err
|
||||
log.Errorf("WaitUntilExportTaskCompleted %#v %s", taskParams, err)
|
||||
return nil, errors.Wrap(err, "WaitUntilExportTaskCompleted")
|
||||
}
|
||||
|
||||
s3Client, err := self.region.GetS3Client()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetS3Client")
|
||||
}
|
||||
|
||||
i := &s3.GetObjectInput{}
|
||||
@@ -268,13 +275,14 @@ func (self *SStoragecache) downloadImage(userCred mcclient.TokenCredential, imag
|
||||
i.SetKey(fmt.Sprintf("%s.%s", task.TaskId, "ova"))
|
||||
ret, err := s3Client.GetObject(i)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
log.Errorf("GetObject %#v: %s", i, err)
|
||||
return nil, errors.Wrap(err, "GetObject")
|
||||
}
|
||||
|
||||
s := auth.GetAdminSession(context.Background(), options.Options.Region, "")
|
||||
params := jsonutils.Marshal(map[string]string{"image_id": imageId, "disk-format": "raw"})
|
||||
if result, err := modules.Images.Upload(s, params, ret.Body, IntVal(ret.ContentLength)); err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "Images.Images")
|
||||
} else {
|
||||
return result, nil
|
||||
}
|
||||
@@ -287,7 +295,8 @@ func (self *SRegion) CheckBucket(bucketName string) error {
|
||||
func (self *SRegion) checkBucket(bucketName string) error {
|
||||
exists, err := self.IsBucketExist(bucketName)
|
||||
if err != nil {
|
||||
return err
|
||||
log.Errorf("IsBucketExist %s: %s", bucketName, err)
|
||||
return errors.Wrap(err, "IsBucketExist")
|
||||
}
|
||||
|
||||
if !exists {
|
||||
@@ -301,13 +310,13 @@ func (self *SRegion) checkBucket(bucketName string) error {
|
||||
func (self *SRegion) IsBucketExist(bucketName string) (bool, error) {
|
||||
s3Client, err := self.GetS3Client()
|
||||
if err != nil {
|
||||
return false, err
|
||||
return false, errors.Wrap(err, "IsBucketExist.GetS3Client")
|
||||
}
|
||||
|
||||
params := &s3.ListBucketsInput{}
|
||||
ret, err := s3Client.ListBuckets(params)
|
||||
if err != nil {
|
||||
return false, err
|
||||
return false, errors.Wrap(err, "ListBuckets")
|
||||
}
|
||||
|
||||
for _, bucket := range ret.Buckets {
|
||||
|
||||
@@ -25,6 +25,7 @@ import (
|
||||
|
||||
"yunion.io/x/jsonutils"
|
||||
"yunion.io/x/log"
|
||||
"yunion.io/x/pkg/errors"
|
||||
"yunion.io/x/pkg/util/secrules"
|
||||
|
||||
"yunion.io/x/onecloud/pkg/cloudprovider"
|
||||
@@ -494,12 +495,8 @@ func parseNotFoundError(err error) error {
|
||||
}
|
||||
|
||||
if strings.Contains(err.Error(), ".NotFound") {
|
||||
return ErrorNotFound()
|
||||
return errors.Wrap(cloudprovider.ErrNotFound, "parseNotFoundError")
|
||||
} else {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
func ErrorNotFound() error {
|
||||
return cloudprovider.ErrNotFound
|
||||
}
|
||||
|
||||
@@ -111,7 +111,7 @@ func (self *SVpc) GetIWires() ([]cloudprovider.ICloudWire, error) {
|
||||
if self.iwires == nil {
|
||||
err := self.fetchNetworks()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "fetchNetworks")
|
||||
}
|
||||
}
|
||||
return self.iwires, nil
|
||||
@@ -121,7 +121,7 @@ func (self *SVpc) GetISecurityGroups() ([]cloudprovider.ICloudSecurityGroup, err
|
||||
if self.secgroups == nil {
|
||||
err := self.fetchSecurityGroups()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "fetchSecurityGroups")
|
||||
}
|
||||
}
|
||||
return self.secgroups, nil
|
||||
@@ -192,7 +192,7 @@ func (self *SVpc) GetIWireById(wireId string) (cloudprovider.ICloudWire, error)
|
||||
if self.iwires == nil {
|
||||
err := self.fetchNetworks()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "fetchNetworks")
|
||||
}
|
||||
}
|
||||
for i := 0; i < len(self.iwires); i += 1 {
|
||||
@@ -200,7 +200,7 @@ func (self *SVpc) GetIWireById(wireId string) (cloudprovider.ICloudWire, error)
|
||||
return self.iwires[i], nil
|
||||
}
|
||||
}
|
||||
return nil, ErrorNotFound()
|
||||
return nil, errors.Wrap(cloudprovider.ErrNotFound, "GetIWireById")
|
||||
}
|
||||
|
||||
func (self *SVpc) getWireByZoneId(zoneId string) *SWire {
|
||||
@@ -554,10 +554,11 @@ func (self *SRegion) getVpc(vpcId string) (*SVpc, error) {
|
||||
|
||||
vpcs, total, err := self.GetVpcs([]string{vpcId}, 0, 1)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
log.Errorf("GetVpcs %s: %s", vpcId, err)
|
||||
return nil, errors.Wrap(err, "GetVpcs")
|
||||
}
|
||||
if total != 1 {
|
||||
return nil, ErrorNotFound()
|
||||
return nil, errors.Wrap(cloudprovider.ErrNotFound, "getVpc")
|
||||
}
|
||||
vpcs[0].region = self
|
||||
return &vpcs[0], nil
|
||||
|
||||
@@ -18,6 +18,7 @@ import (
|
||||
"fmt"
|
||||
|
||||
"yunion.io/x/log"
|
||||
"yunion.io/x/pkg/errors"
|
||||
|
||||
"yunion.io/x/onecloud/pkg/cloudprovider"
|
||||
"yunion.io/x/onecloud/pkg/multicloud"
|
||||
@@ -67,7 +68,7 @@ func (self *SWire) GetINetworks() ([]cloudprovider.ICloudNetwork, error) {
|
||||
if self.inetworks == nil {
|
||||
err := self.vpc.fetchNetworks()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "fetchNetworks")
|
||||
}
|
||||
}
|
||||
return self.inetworks, nil
|
||||
@@ -80,27 +81,27 @@ func (self *SWire) GetBandwidth() int {
|
||||
func (self *SWire) GetINetworkById(netid string) (cloudprovider.ICloudNetwork, error) {
|
||||
networks, err := self.GetINetworks()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetINetworks")
|
||||
}
|
||||
for i := 0; i < len(networks); i += 1 {
|
||||
if networks[i].GetGlobalId() == netid {
|
||||
return networks[i], nil
|
||||
}
|
||||
}
|
||||
return nil, ErrorNotFound()
|
||||
return nil, errors.Wrap(cloudprovider.ErrNotFound, "GetINetworkById")
|
||||
}
|
||||
|
||||
func (self *SWire) CreateINetwork(opts *cloudprovider.SNetworkCreateOptions) (cloudprovider.ICloudNetwork, error) {
|
||||
networkId, err := self.zone.region.createNetwork(self.zone.ZoneId, self.vpc.VpcId, opts.Name, opts.Cidr, opts.Desc)
|
||||
if err != nil {
|
||||
log.Errorf("createNetwork error %s", err)
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "createNetwork")
|
||||
}
|
||||
self.inetworks = nil
|
||||
network := self.getNetworkById(networkId)
|
||||
if network == nil {
|
||||
log.Errorf("cannot find network after create????")
|
||||
return nil, ErrorNotFound()
|
||||
return nil, errors.Wrap(cloudprovider.ErrNotFound, "getNetworkById")
|
||||
}
|
||||
return network, nil
|
||||
}
|
||||
|
||||
@@ -153,7 +153,7 @@ func (self *SZone) GetIHostById(id string) (cloudprovider.ICloudHost, error) {
|
||||
if host.GetGlobalId() == id {
|
||||
return host, nil
|
||||
}
|
||||
return nil, ErrorNotFound()
|
||||
return nil, errors.Wrap(cloudprovider.ErrNotFound, "GetIHostById")
|
||||
}
|
||||
|
||||
func (self *SZone) GetIStorages() ([]cloudprovider.ICloudStorage, error) {
|
||||
@@ -184,7 +184,7 @@ func (self *SZone) GetIStorageById(id string) (cloudprovider.ICloudStorage, erro
|
||||
func (self *SZone) getStorageByCategory(category string) (*SStorage, error) {
|
||||
storages, err := self.GetIStorages()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetIStorages")
|
||||
}
|
||||
for i := 0; i < len(storages); i += 1 {
|
||||
storage := storages[i].(*SStorage)
|
||||
@@ -198,7 +198,7 @@ func (self *SZone) getStorageByCategory(category string) (*SStorage, error) {
|
||||
func (self *SRegion) getZoneById(id string) (*SZone, error) {
|
||||
izones, err := self.GetIZones()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "GetIZones")
|
||||
}
|
||||
for i := 0; i < len(izones); i += 1 {
|
||||
zone := izones[i].(*SZone)
|
||||
|
||||
Reference in New Issue
Block a user