diff --git a/pkg/compute/models/elasticips.go b/pkg/compute/models/elasticips.go index 8166c05e35..c520dd0932 100644 --- a/pkg/compute/models/elasticips.go +++ b/pkg/compute/models/elasticips.go @@ -366,7 +366,9 @@ func (self *SElasticip) SyncWithCloudEip(ctx context.Context, userCred mcclient. self.ExternalId = ext.GetGlobalId() self.IsEmulated = ext.IsEmulated() - self.ChargeType = ext.GetInternetChargeType() + if chargeType := ext.GetInternetChargeType(); len(chargeType) > 0 { + self.ChargeType = chargeType + } factory, _ := provider.GetProviderFactory() if factory != nil && factory.IsSupportPrepaidResources() { diff --git a/pkg/multicloud/ctyun/eip.go b/pkg/multicloud/ctyun/eip.go index d51ca6b67b..8cb4693dee 100644 --- a/pkg/multicloud/ctyun/eip.go +++ b/pkg/multicloud/ctyun/eip.go @@ -188,7 +188,7 @@ func (self *SEip) GetBandwidth() int { func (self *SEip) GetInternetChargeType() string { // todo: fix me - return api.EIP_CHARGE_TYPE_BY_BANDWIDTH + return "" } func (self *SEip) Delete() error { diff --git a/pkg/multicloud/ctyun/host.go b/pkg/multicloud/ctyun/host.go index 5627646113..b1ebbd21ec 100644 --- a/pkg/multicloud/ctyun/host.go +++ b/pkg/multicloud/ctyun/host.go @@ -265,6 +265,10 @@ func (self *SRegion) GetVMs() ([]SInstance, error) { } func (self *SRegion) GetVMById(vmId string) (*SInstance, error) { + if len(vmId) == 0 { + return nil, errors.Wrap(cloudprovider.ErrNotFound, "SRegion.GetVMById.EmptyVmID") + } + vms, err := self.getVMs(vmId) if err != nil { return nil, errors.Wrap(err, "SRegion.GetVMById") diff --git a/pkg/multicloud/ctyun/instance.go b/pkg/multicloud/ctyun/instance.go index 048fc61293..4cb3d9aec3 100644 --- a/pkg/multicloud/ctyun/instance.go +++ b/pkg/multicloud/ctyun/instance.go @@ -166,6 +166,13 @@ func (self *SInstance) Refresh() error { return cloudprovider.ErrNotFound } + // update details + detail, err := self.host.zone.region.GetVMDetails(self.GetId()) + if err != nil { + return errors.Wrap(err, "SInstance.Refresh.GetDetails") + } + + self.vmDetails = detail return jsonutils.Update(self, new) } diff --git a/pkg/multicloud/ctyun/region.go b/pkg/multicloud/ctyun/region.go index ffcdb1bb0e..a119051a8e 100644 --- a/pkg/multicloud/ctyun/region.go +++ b/pkg/multicloud/ctyun/region.go @@ -115,6 +115,7 @@ func (self *SRegion) CreateVpc(name, cidr string) (*SVpc, error) { return nil, err } + vpc.ResVpcID, _ = resp.GetString("returnObj", "id") vpc.region = self return vpc, nil } diff --git a/pkg/multicloud/ctyun/vpc.go b/pkg/multicloud/ctyun/vpc.go index ca5dc46616..fc6502f208 100644 --- a/pkg/multicloud/ctyun/vpc.go +++ b/pkg/multicloud/ctyun/vpc.go @@ -203,6 +203,10 @@ func (self *SRegion) GetVpc(vpcId string) (*SVpc, error) { return nil, errors.Wrap(err, "SRegion.GetVpc.DoGet") } + if id, _ := resp.GetString("returnObj", "resVpcId"); len(id) == 0 { + return nil, errors.Wrap(cloudprovider.ErrNotFound, "SRegion.GetVpc.GetID") + } + err = resp.Unmarshal(vpc, "returnObj") if err != nil { return nil, errors.Wrap(err, "SRegion.GetVpc.Unmarshal")