Merge branch 'master' of https://github.com/yunionio/cloudpods into feature/zxc-agent-metirc

This commit is contained in:
zhaoxiangchun
2021-08-15 18:02:12 +08:00
156 changed files with 1628 additions and 1579 deletions
+14 -2
View File
@@ -69,7 +69,7 @@ Cloudpods提供了如下的功能:
## 快速开始
我们可以通过以下简单步将Cloudpods安装在一台至少8GiB内存和100GB硬盘的Linux主机上(目前CentOS 7和Debian 10经过充分测试)
我们可以通过以下简单步将Cloudpods安装在一台至少8GiB内存和100GB硬盘的Linux主机上(目前CentOS 7和Debian 10经过充分测试)
(下面假设该主机的IP为 *10.168.26.216*)
@@ -87,7 +87,19 @@ $ ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.168.26.216
$ ssh root@10.168.26.216 "hostname"
```
### 2. 安装Cloudpods
### 2. 安装git和相关工具
#### CentOS 7安装git和epel源
```bash
yum install -y git epel-release
```
#### Debian 10安装git
```bash
apt install -y git
```
### 3. 安装Cloudpods
通过以下命令开始安装Cloudpods:
+14 -2
View File
@@ -69,7 +69,7 @@ Cloudpods is a cloud-native open source unified multi/hybrid-cloud platform deve
## Quick start
You may install Cloudpods in a Linux box (currently CentOS 7 and Debian 10 are fully tested) with at least 8GiB RAM and 100GB storage by following two steps.
You may install Cloudpods in a Linux box (currently CentOS 7 and Debian 10 are fully tested) with at least 8GiB RAM and 100GB storage by following three steps.
(Assuming that you install Cloudpods on a Linux box with IP *10.168.26.216*):
@@ -90,7 +90,19 @@ $ ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.168.26.216
$ ssh root@10.168.26.216 "hostname"
```
### 2. Install Cloudpods
### 2. Install git and relevant tools
#### For CentOS 7
```bash
yum install -y git epel-release
```
#### For Debian 10
```bash
apt install -y git
```
### 3. Install Cloudpods
Run the following commands to start installing Cloudpods.
+2 -2
View File
@@ -1,7 +1,7 @@
FROM registry.cn-beijing.aliyuncs.com/yunionio/ansibleserver-base:v1.0.3
# install playbook and telegraf install pkg
COPY --from=registry.cn-beijing.aliyuncs.com/yunionio/file-repo:v0.2.2 /opt/yunion/playbook /opt/yunion/playbook
COPY --from=registry.cn-beijing.aliyuncs.com/yunionio/file-repo:v0.2.2 /opt/yunion/ansible-install-pkg /opt/yunion/ansible-install-pkg
COPY --from=registry.cn-beijing.aliyuncs.com/yunionio/file-repo:v0.3.3 /opt/yunion/playbook /opt/yunion/playbook
COPY --from=registry.cn-beijing.aliyuncs.com/yunionio/file-repo:v0.3.3 /opt/yunion/ansible-install-pkg /opt/yunion/ansible-install-pkg
ADD ./_output/alpine-build/bin/ansibleserver /opt/yunion/bin/ansibleserver
+4 -4
View File
@@ -11,10 +11,10 @@ RUN set -x \
# install default playbook and install pkg
Run mkdir -p /opt/yunion/ansible-install-pkg
Run wget https://yunioniso.oss-cn-beijing.aliyuncs.com/rpms/telegraf/telegraf-1.5.0~yn-1.aarch64.rpm -P /opt/yunion/ansible-install-pkg
Run wget https://yunioniso.oss-cn-beijing.aliyuncs.com/rpms/telegraf/telegraf-1.5.0~yn-1.x86_64.rpm -P /opt/yunion/ansible-install-pkg
Run wget https://yunioniso.oss-cn-beijing.aliyuncs.com/rpms/telegraf/telegraf_1.5.0~yn-1_amd64.deb -P /opt/yunion/ansible-install-pkg
Run wget https://yunioniso.oss-cn-beijing.aliyuncs.com/rpms/telegraf/telegraf_1.5.0~yn-1_arm64.deb -P /opt/yunion/ansible-install-pkg
Run wget https://yunioniso.oss-cn-beijing.aliyuncs.com/rpms/telegraf/telegraf-1.19.2-yn~fe11a96b-0.aarch64.rpm -P /opt/yunion/ansible-install-pkg
Run wget https://yunioniso.oss-cn-beijing.aliyuncs.com/rpms/telegraf/telegraf-1.19.2-yn~fe11a96b-0.x86_64.rpm -P /opt/yunion/ansible-install-pkg
Run wget https://yunioniso.oss-cn-beijing.aliyuncs.com/rpms/telegraf/telegraf_1.19.2-yn~fe11a96b-0_amd64.deb -P /opt/yunion/ansible-install-pkg
Run wget https://yunioniso.oss-cn-beijing.aliyuncs.com/rpms/telegraf/telegraf_1.19.2-yn~fe11a96b-0_arm64.deb -P /opt/yunion/ansible-install-pkg
Run mkdir -p /opt/yunion/playbook
Run mkdir /opt/yunion/playbook/monitor-agent
+2 -2
View File
@@ -1,7 +1,7 @@
FROM registry.cn-beijing.aliyuncs.com/yunionio/torrent:20200820
FROM registry.cn-beijing.aliyuncs.com/yunionio/torrent:20210815.0
MAINTAINER "Zexi Li <lizexi@yunionyun.com>"
RUN apk add --no-cache s3fs-fuse --repository=http://dl-cdn.alpinelinux.org/alpine/edge/testing
RUN mkdir -p /opt/yunion/bin
ADD ./_output/alpine-build/bin/glance /opt/yunion/bin/glance
ADD ./_output/alpine-build/bin/glance /opt/yunion/bin/glance
+2 -1
View File
@@ -1,4 +1,5 @@
FROM alpine:3.11
# TODO: use 3.14 will lead 'apk add qemu-img fail on arm64'
FROM alpine:3.13.5
MAINTAINER "Zexi Li <lizexi@yunionyun.com>"
+7 -7
View File
@@ -1,15 +1,15 @@
FROM registry.cn-beijing.aliyuncs.com/yunionio/onecloud-base:v0.2
FROM registry.cn-beijing.aliyuncs.com/yunionio/onecloud-base:v0.3.5
MAINTAINER "Yaoqi Wan <wanyaoqi@yunionyun.com>"
MAINTAINER "Zexi Li <zexi.li@icloud.com>"
# HACK: use v3.14 alpine mirror to upgrade qemu-img
RUN echo http://dl-cdn.alpinelinux.org/alpine/v3.14/main > /etc/apk/repositories
RUN echo http://dl-cdn.alpinelinux.org/alpine/v3.14/community >> /etc/apk/repositories
RUN apk update && \
apk add --no-cache tzdata ca-certificates qemu-img && \
apk add --no-cache qemu-img && \
rm -rf /var/cache/apk/*
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ENV TZ Asia/Shanghai
# add executable file torrent
# make cmd/torrent
RUN mkdir -p /opt/yunion/bin
+6 -1
View File
@@ -7,6 +7,11 @@ debian10-base:
docker buildx build --platform linux/arm64,linux/amd64 --push \
-t registry.cn-beijing.aliyuncs.com/yunionio/debian10-base:1.0 -f ./Dockerfile.debian-base .
ONECLOUD_BASE_VERSION = v0.3.5
onecloud-base:
$(DOCKER_BUILDX)/onecloud-base:$(ONECLOUD_BASE_VERSION) -f ./Dockerfile.onecloud-base .
CLIMC_BASE_VERSION = 20210701
climc-base:
@@ -19,7 +24,7 @@ baremetal-base:
$(DOCKER_BUILDX)/baremetal-base:$(BAREMETAL_BASE_VERSION) -f ./Dockerfile.baremetal-base .
#docker push $(REGISTRY)/baremetal-base:$(BAREMETAL_BASE_VERSION)
FILE_REPO_VERSION = v0.2.2
FILE_REPO_VERSION = v0.3.3
file-repo:
$(DOCKER_BUILDX)/file-repo:$(FILE_REPO_VERSION) -f ./Dockerfile.file-repo .
+9 -9
View File
@@ -1,24 +1,24 @@
FROM registry.cn-beijing.aliyuncs.com/yunionio/alpine-build:1.0-5 as build
ARG TARGETPLATFORM
ARG BUILDPLATFORM
RUN mkdir -p /root/go/src/yunion.io/x/onecloud
COPY . /root/go/src/yunion.io/x/onecloud
RUN cd /root/go/src/yunion.io/x/onecloud && make cmd/torrent
WORKDIR /root/go/src/yunion.io/x/onecloud
RUN make cmd/torrent
FROM registry.cn-beijing.aliyuncs.com/yunionio/onecloud-base:v0.3.5
FROM registry.cn-beijing.aliyuncs.com/yunionio/onecloud-base:v0.2
MAINTAINER "Zexi Li <zexi.li@icloud.com>"
MAINTAINER "Yaoqi Wan <wanyaoqi@yunionyun.com>"
# HACK: use v3.14 alpine mirror to upgrade qemu-img
RUN echo http://dl-cdn.alpinelinux.org/alpine/v3.14/main > /etc/apk/repositories
RUN echo http://dl-cdn.alpinelinux.org/alpine/v3.14/community >> /etc/apk/repositories
RUN apk update && \
apk add --no-cache tzdata ca-certificates qemu-img && \
apk add --no-cache qemu-img && \
rm -rf /var/cache/apk/*
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ENV TZ Asia/Shanghai
# TAG=20210815.0
# add executable file torrent
# make cmd/torrent
RUN mkdir -p /opt/yunion/bin
@@ -0,0 +1,2 @@
_output/alpine-build/_cache
+1
View File
@@ -55,6 +55,7 @@ type MongoDBListInput struct {
type MongoDBDetails struct {
apis.VirtualResourceDetails
CloudregionResourceInfo
ZoneResourceInfoBase
ManagedResourceInfo
VpcResourceInfoBase
+21 -2
View File
@@ -303,8 +303,9 @@ func (self *SCloudprovider) GetNextTimeRange() (time.Time, time.Time, error) {
}
type SCloudproviderDelegate struct {
Id string
Name string
Id string
Name string
CloudaccountId string
Enabled bool
Status string
@@ -317,6 +318,11 @@ type SCloudproviderDelegate struct {
Provider string
Brand string
Options struct {
cloudprovider.SApsaraEndpoints
cloudprovider.SHuaweiCloudStackEndpoints
}
ProxySetting proxyapi.SProxySetting
}
@@ -331,6 +337,16 @@ func (self *SCloudprovider) GetDelegate() (*SCloudproviderDelegate, error) {
if err != nil {
return nil, errors.Wrap(err, "result.Unmarshal")
}
if provider.Provider == api.CLOUD_PROVIDER_APSARA || provider.Provider == api.CLOUD_PROVIDER_HUAWEI_CLOUD_STACK {
result, err := modules.Cloudaccounts.Get(s, provider.CloudaccountId, nil)
if err != nil {
return nil, errors.Wrapf(err, "modules.Cloudaccounts.Get")
}
err = result.Unmarshal(&provider.Options, "options")
if err != nil {
return nil, errors.Wrap(err, "result.Unmarshal")
}
}
return provider, nil
}
@@ -391,6 +407,9 @@ func (self *SCloudprovider) GetProvider() (cloudprovider.ICloudProvider, error)
Secret: passwd,
ProxyFunc: proxyFunc,
SHuaweiCloudStackEndpoints: delegate.Options.SHuaweiCloudStackEndpoints,
SApsaraEndpoints: delegate.Options.SApsaraEndpoints,
},
)
}
+45
View File
@@ -45,6 +45,7 @@ import (
"yunion.io/x/onecloud/pkg/mcclient/modules"
"yunion.io/x/onecloud/pkg/util/httputils"
"yunion.io/x/onecloud/pkg/util/logclient"
"yunion.io/x/onecloud/pkg/util/samlutils"
"yunion.io/x/onecloud/pkg/util/stringutils2"
)
@@ -349,9 +350,42 @@ func (manager *SCloudaccountManager) newFromICloudaccount(ctx context.Context, u
if err != nil {
return nil, errors.Wrap(err, "Insert")
}
account.registerHuaweSaml(ctx)
return account, nil
}
func (self *SCloudaccount) registerHuaweSaml(ctx context.Context) error {
if self.Provider != computeapi.CLOUD_PROVIDER_HUAWEI_CLOUD_STACK {
return nil
}
delegate, err := self.getCloudDelegate(ctx)
if err != nil {
return err
}
domain := delegate.Options.EndpointDomain
driv := SHuaweiSAMLDriver{
EntityId: domain,
MetadataFileName: fmt.Sprintf("%s.xml", domain),
MetadataUrl: fmt.Sprintf("https://auth.%s/authui/saml/metadata.xml", domain),
}
metadata, err := GetMetadata(&driv)
if err != nil {
return errors.Wrapf(err, "GetMetadata")
}
ed, err := samlutils.ParseMetadata(metadata)
if err != nil {
return errors.Wrapf(err, "ParseMetadata")
}
if FindDriver(ed.EntityId) != nil {
return nil
}
driv.EntityId = ed.EntityId
SamlIdpInstance().AddSPMetadata(metadata)
Register(&driv)
return nil
}
func (self *SCloudaccount) syncWithICloudaccount(ctx context.Context, userCred mcclient.TokenCredential, account SCloudaccount) error {
_, err := db.UpdateWithLock(ctx, self, func() error {
self.Name = account.Name
@@ -366,6 +400,10 @@ func (self *SCloudaccount) syncWithICloudaccount(ctx context.Context, userCred m
if err != nil {
return errors.Wrap(err, "db.UpdateWithLock")
}
err = self.registerHuaweSaml(ctx)
if err != nil {
log.Errorf("regiester %s saml sp error: %s", self.Name, err)
}
self.StartSAMLProviderCreateTask(ctx, userCred)
return nil
}
@@ -443,6 +481,10 @@ type SCloudDelegate struct {
Provider string
Brand string
Options struct {
cloudprovider.SHuaweiCloudStackEndpoints
cloudprovider.SApsaraEndpoints
}
ProxySetting proxyapi.SProxySetting
}
@@ -526,6 +568,9 @@ func (account *SCloudDelegate) GetProvider() (cloudprovider.ICloudProvider, erro
Secret: passwd,
ProxyFunc: proxyFunc,
SApsaraEndpoints: account.Options.SApsaraEndpoints,
SHuaweiCloudStackEndpoints: account.Options.SHuaweiCloudStackEndpoints,
AccountId: account.Id,
})
}
@@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
package huawei
package models
import (
"context"
@@ -21,7 +21,6 @@ import (
"yunion.io/x/pkg/errors"
api "yunion.io/x/onecloud/pkg/apis/compute"
"yunion.io/x/onecloud/pkg/cloudid/models"
"yunion.io/x/onecloud/pkg/httperrors"
"yunion.io/x/onecloud/pkg/mcclient"
"yunion.io/x/onecloud/pkg/util/samlutils"
@@ -38,15 +37,15 @@ func (d *SHuaweiSAMLDriver) GetIdpInitiatedLoginData(ctx context.Context, userCr
func (d *SHuaweiSAMLDriver) GetSpInitiatedLoginData(ctx context.Context, userCred mcclient.TokenCredential, cloudAccountId string, sp *idp.SSAMLServiceProvider) (samlutils.SSAMLSpInitiatedLoginData, error) {
data := samlutils.SSAMLSpInitiatedLoginData{}
_account, err := models.CloudaccountManager.FetchById(cloudAccountId)
_account, err := CloudaccountManager.FetchById(cloudAccountId)
if err != nil {
if errors.Cause(err) == sql.ErrNoRows {
return data, httperrors.NewResourceNotFoundError2("cloudaccount", cloudAccountId)
}
return data, httperrors.NewGeneralError(err)
}
account := _account.(*models.SCloudaccount)
if account.Provider != api.CLOUD_PROVIDER_HUAWEI {
account := _account.(*SCloudaccount)
if account.Provider != api.CLOUD_PROVIDER_HUAWEI && account.Provider != api.CLOUD_PROVIDER_HUAWEI_CLOUD_STACK {
return data, httperrors.NewClientError("cloudaccount %s is %s not %s", account.Id, account.Provider, api.CLOUD_PROVIDER_HUAWEI)
}
if account.SAMLAuth.IsFalse() {
@@ -70,7 +69,7 @@ func (d *SHuaweiSAMLDriver) GetSpInitiatedLoginData(ctx context.Context, userCre
data.NameIdFormat = samlutils.NAME_ID_FORMAT_TRANSIENT
data.AudienceRestriction = sp.GetEntityId()
for k, v := range map[string][]string{
"User": []string{userCred.GetUserName()},
"User": {userCred.GetUserName()},
"Groups": groups,
} {
data.Attributes = append(data.Attributes, samlutils.SSAMLResponseAttribute{
+33
View File
@@ -0,0 +1,33 @@
// Copyright 2019 Yunion
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package models
type SHuaweiSAMLDriver struct {
EntityId string
MetadataFileName string
MetadataUrl string
}
func (d *SHuaweiSAMLDriver) GetEntityID() string {
return d.EntityId
}
func (d *SHuaweiSAMLDriver) GetMetadataFilename() string {
return d.MetadataFileName
}
func (d *SHuaweiSAMLDriver) GetMetadataUrl() string {
return d.MetadataUrl
}
+34
View File
@@ -16,8 +16,15 @@ package models
import (
"context"
"io/ioutil"
"path"
"yunion.io/x/log"
"yunion.io/x/pkg/errors"
"yunion.io/x/onecloud/pkg/cloudid/options"
"yunion.io/x/onecloud/pkg/mcclient"
"yunion.io/x/onecloud/pkg/util/httputils"
"yunion.io/x/onecloud/pkg/util/samlutils"
"yunion.io/x/onecloud/pkg/util/samlutils/idp"
)
@@ -46,6 +53,10 @@ func Register(driver ICloudSAMLLoginDriver) {
driverTable[driver.GetEntityID()] = driver
}
func UnRegister(entityId string) {
delete(driverTable, entityId)
}
func FindDriver(entityId string) ICloudSAMLLoginDriver {
if driver, ok := driverTable[entityId]; ok {
return driver
@@ -56,3 +67,26 @@ func FindDriver(entityId string) ICloudSAMLLoginDriver {
func AllDrivers() map[string]ICloudSAMLLoginDriver {
return driverTable
}
func GetMetadata(driver ICloudSAMLLoginDriver) ([]byte, error) {
filePath := path.Join(options.Options.CloudSAMLMetadataPath, driver.GetMetadataFilename())
metaBytes, err := ioutil.ReadFile(filePath)
if err != nil || len(metaBytes) == 0 {
metaUrl := driver.GetMetadataUrl()
if len(metaUrl) > 0 {
log.Debugf("[%s] metadata file load failed, try download from %s", driver.GetEntityID(), metaUrl)
httpcli := httputils.GetDefaultClient()
resp, err := httpcli.Get(metaUrl)
if err != nil {
return nil, errors.Wrapf(err, "http get %s fail", metaUrl)
}
metaBytes, err = ioutil.ReadAll(resp.Body)
if err != nil {
return nil, errors.Wrapf(err, "read body %s fail", metaUrl)
}
} else {
return nil, errors.Wrapf(err, "read file %s fail", filePath)
}
}
return metaBytes, nil
}
+4 -22
View File
@@ -17,8 +17,6 @@ package saml
import (
"context"
"fmt"
"io/ioutil"
"path"
"yunion.io/x/log"
"yunion.io/x/pkg/errors"
@@ -30,7 +28,6 @@ import (
"yunion.io/x/onecloud/pkg/httperrors"
"yunion.io/x/onecloud/pkg/i18n"
"yunion.io/x/onecloud/pkg/mcclient/auth"
"yunion.io/x/onecloud/pkg/util/httputils"
"yunion.io/x/onecloud/pkg/util/samlutils"
"yunion.io/x/onecloud/pkg/util/samlutils/idp"
)
@@ -85,25 +82,10 @@ func initSAMLIdp(app *appsrv.Application, prefix string) error {
}
idpInst := idp.NewIdpInstance(saml, spFunc, idpFunc, logoutFunc)
for entityId, drvFactory := range models.AllDrivers() {
filePath := path.Join(options.Options.CloudSAMLMetadataPath, drvFactory.GetMetadataFilename())
metaBytes, err := ioutil.ReadFile(filePath)
if err != nil || len(metaBytes) == 0 {
metaUrl := drvFactory.GetMetadataUrl()
if len(metaUrl) > 0 {
log.Debugf("[%s] metadata file load failed, try download from %s", entityId, metaUrl)
httpcli := httputils.GetDefaultClient()
resp, err := httpcli.Get(metaUrl)
if err != nil {
return errors.Wrapf(err, "http get %s fail", metaUrl)
}
metaBytes, err = ioutil.ReadAll(resp.Body)
if err != nil {
return errors.Wrapf(err, "read body %s fail", metaUrl)
}
} else {
return errors.Wrapf(err, "read file %s fail", filePath)
}
for _, drvFactory := range models.AllDrivers() {
metaBytes, err := models.GetMetadata(drvFactory)
if err != nil {
return err
}
err = idpInst.AddSPMetadata(metaBytes)
if err != nil {
+5 -15
View File
@@ -19,20 +19,10 @@ import (
"yunion.io/x/onecloud/pkg/cloudprovider"
)
type SHuaweiSAMLDriver struct{}
func (d *SHuaweiSAMLDriver) GetEntityID() string {
return cloudprovider.SAML_ENTITY_ID_HUAWEI_CLOUD
}
func (d *SHuaweiSAMLDriver) GetMetadataFilename() string {
return "huawei.xml"
}
func (d *SHuaweiSAMLDriver) GetMetadataUrl() string {
return "https://auth.huaweicloud.com/authui/saml/metadata.xml"
}
func init() {
models.Register(&SHuaweiSAMLDriver{})
models.Register(&models.SHuaweiSAMLDriver{
EntityId: cloudprovider.SAML_ENTITY_ID_HUAWEI_CLOUD,
MetadataFileName: "huawei.xml",
MetadataUrl: "https://auth.huaweicloud.com/authui/saml/metadata.xml",
})
}
+1
View File
@@ -35,6 +35,7 @@ import (
_ "yunion.io/x/onecloud/pkg/multicloud/esxi/provider"
_ "yunion.io/x/onecloud/pkg/multicloud/google/provider"
_ "yunion.io/x/onecloud/pkg/multicloud/huawei/provider"
_ "yunion.io/x/onecloud/pkg/multicloud/huaweistack/provider"
_ "yunion.io/x/onecloud/pkg/multicloud/jdcloud/provider"
_ "yunion.io/x/onecloud/pkg/multicloud/qcloud/provider"
_ "yunion.io/x/onecloud/pkg/multicloud/zstack/provider"
+17 -9
View File
@@ -124,24 +124,30 @@ func (self *CloudReportBase) InitProviderInstance() (cloudprovider.ICloudProvide
return nil, errors.Wrap(err, "getCloudAccount error")
}
endpoints := cloudprovider.SApsaraEndpoints{}
hwendpoints := cloudprovider.SHuaweiCloudStackEndpoints{}
options, err := cloudAccout.Get("options")
if err == nil {
err := options.Unmarshal(&endpoints)
if err != nil {
log.Errorf("Unmarshal SApsaraEndpoints err:%v", err)
}
err = options.Unmarshal(&hwendpoints)
if err != nil {
log.Errorf("Unmarshal SHuaweiCloudStackEndpoints err:%v", err)
}
} else {
log.Errorf("get cloudAccout options err:%v", err)
}
cfg := cloudprovider.ProviderConfig{
Id: self.SProvider.Id,
Name: self.SProvider.Name,
URL: self.SProvider.AccessUrl,
Account: self.SProvider.Account,
Secret: secretDe,
Vendor: self.SProvider.Provider,
ProxyFunc: proxyFunc,
SApsaraEndpoints: endpoints,
Id: self.SProvider.Id,
Name: self.SProvider.Name,
URL: self.SProvider.AccessUrl,
Account: self.SProvider.Account,
Secret: secretDe,
Vendor: self.SProvider.Provider,
ProxyFunc: proxyFunc,
SApsaraEndpoints: endpoints,
SHuaweiCloudStackEndpoints: hwendpoints,
}
return cloudprovider.GetProvider(cfg)
}
@@ -169,7 +175,9 @@ func (self *CloudReportBase) GetAllRegionOfServers(servers []jsonutils.JSONObjec
extranleIdMap[region_external_id] = ""
region, err := providerInstance.GetIRegionById(region_external_id)
if err != nil {
return nil, nil, err
name, _ := server.GetString("name")
log.Errorf("name:%s,region_external_id:%s,err:%v", name, region_external_id, err)
continue
}
regionServerList = append(regionServerList, region)
regionServers := make([]jsonutils.JSONObject, 0)
@@ -81,7 +81,7 @@ type ReportOptions struct {
Timeout int64 `help:"command timeout unit:second" default:"10"`
SinceTime string `help:"sinceTime"`
EndTime string `help:"endTime"`
Provider []string `help:"List objects from the provider" choices:"VMware|Aliyun|Qcloud|Azure|Aws|Huawei|ZStack|Google|Apsara|JDcloud|Ecloud" json:"provider,omitempty"`
Provider []string `help:"List objects from the provider" choices:"VMware|Aliyun|Qcloud|Azure|Aws|Huawei|ZStack|Google|Apsara|JDcloud|Ecloud|HuaweiCloudStack" json:"provider,omitempty"`
PingProbeOptions
}
@@ -26,6 +26,11 @@ import (
func init() {
factory := SHwCloudReportFactory{}
common.RegisterFactory(&factory)
stackFactory := SHwStackCloudReportFactory{
&SHwCloudReportFactory{},
}
common.RegisterFactory(&stackFactory)
}
type SHwCloudReportFactory struct {
@@ -97,3 +102,11 @@ func (self *SHwCloudReport) Report() error {
}
return nil
}
type SHwStackCloudReportFactory struct {
*SHwCloudReportFactory
}
func (self *SHwStackCloudReportFactory) GetId() string {
return compute.CLOUD_PROVIDER_HUAWEI_CLOUD_STACK
}
+16 -3
View File
@@ -22,16 +22,17 @@ import (
"yunion.io/x/jsonutils"
"yunion.io/x/log"
"yunion.io/x/onecloud/pkg/apis/compute"
"yunion.io/x/onecloud/pkg/cloudmon/collectors/common"
"yunion.io/x/onecloud/pkg/cloudprovider"
"yunion.io/x/onecloud/pkg/multicloud/huawei"
hw_moudules "yunion.io/x/onecloud/pkg/multicloud/huawei/client/modules"
"yunion.io/x/onecloud/pkg/multicloud/huaweistack"
"yunion.io/x/onecloud/pkg/util/influxdb"
)
func (self *SHwCloudReport) collectRegionMetricOfHost(region cloudprovider.ICloudRegion, servers []jsonutils.JSONObject) error {
dataList := make([]influxdb.SMetricData, 0)
hwReg := region.(*huawei.SRegion)
since, until, err := common.TimeRangeFromArgs(self.Args)
if err != nil {
return err
@@ -52,8 +53,7 @@ func (self *SHwCloudReport) collectRegionMetricOfHost(region cloudprovider.IClou
hwMeta.Dimensions = append(hwMeta.Dimensions, hw_moudules.SMetricDimension{Name: "instance_id", Value: instanceId})
metas = append(metas, hwMeta)
}
metricDatas, err := hwReg.GetMetricsData(metas, since, until)
metricDatas, err := self.GetMetricData(region, metas, since, until)
if err != nil {
log.Errorln(err)
continue
@@ -339,3 +339,16 @@ func (self *SHwCloudReport) collectMetricFromThisServer(server jsonutils.JSONObj
self.AddMetricTag(&metric, common.OtherVmTags)
return metric, nil
}
func (self *SHwCloudReport) GetMetricData(region cloudprovider.ICloudRegion, metrics []hw_moudules.SMetricMeta,
since time.Time, until time.Time) ([]hw_moudules.SMetricData, error) {
switch self.SProvider.Provider {
case compute.CLOUD_PROVIDER_HUAWEI_CLOUD_STACK:
hwReg := region.(*huaweistack.SRegion)
return hwReg.GetMetricsData(metrics, since, until)
default:
hwReg := region.(*huawei.SRegion)
return hwReg.GetMetricsData(metrics, since, until)
}
}
+17
View File
@@ -194,6 +194,7 @@ type ICloudProviderFactory interface {
IsPublicCloud() bool
IsOnPremise() bool
IsMultiTenant() bool
IsSupportPrepaidResources() bool
NeedSyncSkuFromCloud() bool
@@ -628,6 +629,10 @@ func (factory *baseProviderFactory) IsOnPremise() bool {
return false
}
func (factory *baseProviderFactory) IsMultiTenant() bool {
return false
}
func (factory *baseProviderFactory) IsCloudeventRegional() bool {
return false
}
@@ -766,6 +771,10 @@ func (factory *SPremiseBaseProviderFactory) IsOnPremise() bool {
return true
}
func (factory *SPremiseBaseProviderFactory) IsMultiTenant() bool {
return false
}
func (factory *SPremiseBaseProviderFactory) NeedSyncSkuFromCloud() bool {
return false
}
@@ -774,6 +783,10 @@ type SPublicCloudBaseProviderFactory struct {
baseProviderFactory
}
func (factory *SPublicCloudBaseProviderFactory) IsMultiTenant() bool {
return true
}
func (factory *SPublicCloudBaseProviderFactory) IsPublicCloud() bool {
return true
}
@@ -790,6 +803,10 @@ type SPrivateCloudBaseProviderFactory struct {
baseProviderFactory
}
func (factory *SPrivateCloudBaseProviderFactory) IsMultiTenant() bool {
return false
}
func (factory *SPrivateCloudBaseProviderFactory) IsPublicCloud() bool {
return false
}
+5
View File
@@ -53,6 +53,11 @@ type SHuaweiCloudStackEndpoints struct {
// required: true
DefaultRegion string `default:"$HUAWEI_DEFAULT_REGION" metavar:"$HUAWEI_DEFAULT_REGION"`
// 默认DNS
// example: 10.125.0.26,10.125.0.27
// required: false
DefaultSubnetDns string `default:"$HUAWEI_DEFAULT_SUBNET_DNS" metavar:"$HUAWEI_DEFAULT_SUBNET_DNS"`
// 弹性云服务
Ecs string `default:"$HUAWEI_ECS_ENDPOINT"`
// 云容器服务
+2
View File
@@ -332,6 +332,7 @@ type ICloudVM interface {
GetBootOrder() string
GetVga() string
GetVdi() string
GetOSArch() string
GetOSType() string
GetOSName() string
GetBios() string
@@ -800,6 +801,7 @@ type ICloudSku interface {
GetPrepaidStatus() string
GetPostpaidStatus() string
GetCpuArch() string
GetCpuCoreCount() int
GetMemorySizeMB() int
+5 -3
View File
@@ -163,9 +163,11 @@ func (self *SBaremetalGuestDriver) GetNamedNetworkConfiguration(guest *models.SG
reuseAddr := false
hn := host.GetAttach2Network(netConfig.Network)
if hn != nil && options.Options.BaremetalServerReuseHostIp {
// try to reuse host network IP address
netConfig.Address = hn.IpAddr
reuseAddr = true
if netConfig.Address == "" || netConfig.Address == hn.IpAddr {
// try to reuse host network IP address
netConfig.Address = hn.IpAddr
reuseAddr = true
}
}
return net, nicConfs, api.IPAllocationStepup, reuseAddr, nil
+5 -1
View File
@@ -45,6 +45,10 @@ func (self *SHuaweiCloudStackGuestDriver) GetProvider() string {
return api.CLOUD_PROVIDER_HUAWEI_CLOUD_STACK
}
func (self *SHuaweiCloudStackGuestDriver) DoScheduleSKUFilter() bool {
return false
}
func (self *SHuaweiCloudStackGuestDriver) GetComputeQuotaKeys(scope rbacutils.TRbacScope, ownerId mcclient.IIdentityProvider, brand string) models.SComputeResourceKeys {
keys := models.SComputeResourceKeys{}
keys.SBaseProjectQuotaKeys = quotas.OwnerIdProjectQuotaKeys(scope, ownerId)
@@ -153,5 +157,5 @@ func (self *SHuaweiCloudStackGuestDriver) IsNeedInjectPasswordByCloudInit(desc *
}
func (self *SHuaweiCloudStackGuestDriver) IsSupportSetAutoRenew() bool {
return true
return false
}
@@ -479,14 +479,6 @@ func (self *SAccessGroupCache) syncWithAccessGroup(ctx context.Context, userCred
return group.SyncRules(ctx, userCred, src)
}
func (self *SAccessGroupCache) GetRegion() (*SCloudregion, error) {
region, err := CloudregionManager.FetchById(self.CloudregionId)
if err != nil {
return nil, errors.Wrapf(err, "CloudregionManager.FetchById(%s)", self.CloudregionId)
}
return region.(*SCloudregion), nil
}
func (self *SAccessGroupCache) GetIRegion() (cloudprovider.ICloudRegion, error) {
provider, err := self.GetDriver()
if err != nil {
-8
View File
@@ -375,14 +375,6 @@ func (a *SApp) PerformSyncstatus(ctx context.Context, userCred mcclient.TokenCre
return nil, StartResourceSyncStatusTask(ctx, userCred, a, "AppSyncstatusTask", "")
}
func (a *SApp) GetRegion() (*SCloudregion, error) {
region, err := CloudregionManager.FetchById(a.CloudregionId)
if err != nil {
return nil, errors.Wrapf(err, "CloudregionManager.FetchById(%s)", a.CloudregionId)
}
return region.(*SCloudregion), nil
}
func (a *SApp) GetIRegion() (cloudprovider.ICloudRegion, error) {
region, err := a.GetRegion()
if err != nil {
-8
View File
@@ -379,14 +379,6 @@ func (bucket *SBucket) StartBucketDeleteTask(ctx context.Context, userCred mccli
return nil
}
func (bucket *SBucket) GetRegion() (*SCloudregion, error) {
region, err := CloudregionManager.FetchById(bucket.CloudregionId)
if err != nil {
return nil, errors.Wrap(err, "CloudregionManager.FetchById")
}
return region.(*SCloudregion), nil
}
func (bucket *SBucket) GetIRegion() (cloudprovider.ICloudRegion, error) {
provider, err := bucket.GetDriver()
if err != nil {
+10 -14
View File
@@ -111,15 +111,6 @@ func (self *SCloudproviderregion) GetAccount() *SCloudaccount {
return nil
}
func (self *SCloudproviderregion) GetRegion() *SCloudregion {
regionObj, err := CloudregionManager.FetchById(self.CloudregionId)
if err != nil {
log.Errorf("CloudregionManager.FetchById(%s) fail %s", self.CloudregionId, err)
return nil
}
return regionObj.(*SCloudregion)
}
func (manager *SCloudproviderregionManager) FetchCustomizeColumns(
ctx context.Context,
userCred mcclient.TokenCredential,
@@ -402,7 +393,10 @@ func (set SSyncResultSet) Add(manager db.IModelManager, result compare.SyncResul
func (self *SCloudproviderregion) DoSync(ctx context.Context, userCred mcclient.TokenCredential, syncRange SSyncRange) error {
syncResults := SSyncResultSet{}
localRegion := self.GetRegion()
localRegion, err := self.GetRegion()
if err != nil {
return errors.Wrapf(err, "GetRegion")
}
provider := self.GetProvider()
self.markSyncing(userCred)
@@ -449,12 +443,14 @@ func (self *SCloudproviderregion) DoSync(ctx context.Context, userCred mcclient.
}
func (self *SCloudproviderregion) getSyncTaskKey() string {
region := self.GetRegion()
region, err := self.GetRegion()
if err != nil {
return self.CloudregionId
}
if len(region.ExternalId) > 0 {
return region.ExternalId
} else {
return self.CloudproviderId
}
return self.CloudproviderId
}
func (self *SCloudproviderregion) submitSyncTask(ctx context.Context, userCred mcclient.TokenCredential, syncRange SSyncRange) {
@@ -511,7 +507,7 @@ func (cpr *SCloudproviderregion) needAutoSyncInternal() bool {
if intval > 24*3600 { // at least once everyday
intval = 24 * 3600
}
region := cpr.GetRegion()
region, _ := cpr.GetRegion()
log.Debugf("empty region %s! no need to check so frequently", region.GetName())
}
if time.Now().Sub(cpr.LastSync) > time.Duration(intval)*time.Second {
+27 -4
View File
@@ -26,6 +26,7 @@ import (
api "yunion.io/x/onecloud/pkg/apis/compute"
"yunion.io/x/onecloud/pkg/cloudcommon/db"
"yunion.io/x/onecloud/pkg/cloudprovider"
"yunion.io/x/onecloud/pkg/httperrors"
"yunion.io/x/onecloud/pkg/mcclient"
"yunion.io/x/onecloud/pkg/util/stringutils2"
@@ -51,13 +52,35 @@ func ValidateCloudregionResourceInput(userCred mcclient.TokenCredential, input a
return regionObj.(*SCloudregion), input, nil
}
func (self *SCloudregionResourceBase) GetRegion() *SCloudregion {
func (self *SCloudregionResourceBase) GetRegion() (*SCloudregion, error) {
region, err := CloudregionManager.FetchById(self.CloudregionId)
if err != nil {
log.Errorf("failed to find cloudregion %s error: %v", self.CloudregionId, err)
return nil
return nil, errors.Wrapf(err, "GetRegion(%s)", self.CloudregionId)
}
return region.(*SCloudregion)
return region.(*SCloudregion), nil
}
func (self *SCloudregionResourceBase) GetZoneBySuffix(suffix string) (*SZone, error) {
sq := ZoneManager.Query().SubQuery()
q := sq.Query().Filter(
sqlchemy.AND(
sqlchemy.Equals(sq.Field("cloudregion_id"), self.CloudregionId),
sqlchemy.Endswith(sq.Field("external_id"), suffix),
),
)
count, err := q.CountWithError()
if err != nil {
return nil, err
}
if count == 0 {
return nil, errors.Wrapf(cloudprovider.ErrNotFound, suffix)
}
if count > 1 {
return nil, errors.Wrapf(cloudprovider.ErrDuplicateId, suffix)
}
zone := &SZone{}
zone.SetModelManager(ZoneManager, zone)
return zone, q.First(zone)
}
func (manager *SCloudregionResourceBaseManager) FetchCustomizeColumns(
+24 -1
View File
@@ -162,6 +162,29 @@ func (self *SCloudregion) GetZones() ([]SZone, error) {
return zones, nil
}
func (self *SCloudregion) GetZoneBySuffix(suffix string) (*SZone, error) {
sq := ZoneManager.Query().SubQuery()
q := sq.Query().Filter(
sqlchemy.AND(
sqlchemy.Equals(sq.Field("cloudregion_id"), self.Id),
sqlchemy.Endswith(sq.Field("external_id"), suffix),
),
)
count, err := q.CountWithError()
if err != nil {
return nil, err
}
if count == 0 {
return nil, errors.Wrapf(cloudprovider.ErrNotFound, suffix)
}
if count > 1 {
return nil, errors.Wrapf(cloudprovider.ErrDuplicateId, suffix)
}
zone := &SZone{}
zone.SetModelManager(ZoneManager, zone)
return zone, q.First(zone)
}
func (self *SCloudregion) GetGuestCount() (int, error) {
return self.getGuestCountInternal(false)
}
@@ -493,7 +516,7 @@ func (self *SCloudregion) syncWithCloudRegion(ctx context.Context, userCred mccl
self.IsEmulated = cloudRegion.IsEmulated()
if !factory.IsPublicCloud() && !factory.IsOnPremise() {
if !factory.IsPublicCloud() && !factory.IsOnPremise() && !factory.IsMultiTenant() {
self.ManagerId = provider.Id
}
+4 -1
View File
@@ -1166,7 +1166,10 @@ func syncDBInstanceBackups(ctx context.Context, userCred mcclient.TokenCredentia
return errors.Wrapf(err, "GetIDBInstanceBackups")
}
region := localInstance.GetRegion()
region, err := localInstance.GetRegion()
if err != nil {
return errors.Wrapf(err, "GetRegion")
}
provider := localInstance.GetCloudprovider()
result := DBInstanceBackupManager.SyncDBInstanceBackups(ctx, userCred, provider, localInstance, region, backups)
+20 -6
View File
@@ -328,9 +328,9 @@ func (manager *SDBInstanceAccountManager) ValidateCreateData(ctx context.Context
if instance.Status != api.DBINSTANCE_RUNNING {
return nil, httperrors.NewInputParameterError("DBInstance %s(%s) status is %s require status is %s", instance.Name, instance.Id, instance.Status, api.DBINSTANCE_RUNNING)
}
region := instance.GetRegion()
if region == nil {
return nil, httperrors.NewInputParameterError("failed to found region for dbinstance %s(%s)", instance.Name, instance.Id)
region, err := instance.GetRegion()
if err != nil {
return nil, httperrors.NewGeneralError(errors.Wrapf(err, "GetRegion"))
}
for i, privilege := range input.Privileges {
database, err := instance.GetDBInstanceDatabase(privilege.Database)
@@ -417,7 +417,12 @@ func (self *SDBInstanceAccount) PerformGrantPrivilege(ctx context.Context, userC
return nil, httperrors.NewInputParameterError("The account %s(%s) has permission %s to the database %s(%s)", self.Name, self.Id, privilege.Privilege, database.Name, database.Id)
}
err = instance.GetRegion().GetDriver().ValidateDBInstanceAccountPrivilege(ctx, userCred, instance, self.Name, privilegeStr)
region, err := instance.GetRegion()
if err != nil {
return nil, httperrors.NewGeneralError(errors.Wrapf(err, "GetRegion"))
}
err = region.GetDriver().ValidateDBInstanceAccountPrivilege(ctx, userCred, instance, self.Name, privilegeStr)
if err != nil {
return nil, err
}
@@ -447,13 +452,18 @@ func (self *SDBInstanceAccount) PerformSetPrivileges(ctx context.Context, userCr
"input": map[string]string{},
}
region, err := instance.GetRegion()
if err != nil {
return nil, errors.Wrapf(err, "GetRegion")
}
for i, privilege := range input.Privileges {
database, err := instance.GetDBInstanceDatabase(privilege.Database)
if err != nil {
return nil, httperrors.NewInputParameterError("Failed to found database %s for dbinstance %s(%s): %v", privilege.Database, instance.Name, instance.Id, err)
}
input.Privileges[i].DBInstancedatabaseId = database.Id
err = instance.GetRegion().GetDriver().ValidateDBInstanceAccountPrivilege(ctx, userCred, instance, self.Name, privilege.Privilege)
err = region.GetDriver().ValidateDBInstanceAccountPrivilege(ctx, userCred, instance, self.Name, privilege.Privilege)
if err != nil {
return nil, err
}
@@ -571,7 +581,11 @@ func (self *SDBInstanceAccount) PerformResetPassword(ctx context.Context, userCr
return nil, err
}
}
err = instance.GetRegion().GetDriver().ValidateResetDBInstancePassword(ctx, userCred, instance, self.Name)
region, err := instance.GetRegion()
if err != nil {
return nil, err
}
err = region.GetDriver().ValidateResetDBInstancePassword(ctx, userCred, instance, self.Name)
if err != nil {
return nil, err
}
+6 -10
View File
@@ -230,9 +230,9 @@ func (manager *SDBInstanceBackupManager) ValidateCreateData(ctx context.Context,
if instance.Status != api.DBINSTANCE_RUNNING {
return nil, httperrors.NewInputParameterError("DBInstance %s(%s) status is %s require status is %s", instance.Name, instance.Id, instance.Status, api.DBINSTANCE_RUNNING)
}
region := instance.GetRegion()
if region == nil {
return nil, httperrors.NewInputParameterError("failed to found region for dbinstance %s(%s)", instance.Name, instance.Id)
region, err := instance.GetRegion()
if err != nil {
return nil, err
}
input.CloudregionId = region.Id
input, err = region.GetDriver().ValidateCreateDBInstanceBackupData(ctx, userCred, ownerId, instance, input)
@@ -347,9 +347,9 @@ func (self *SDBInstanceBackup) PerformSyncstatus(ctx context.Context, userCred m
}
func (backup *SDBInstanceBackup) GetIRegion() (cloudprovider.ICloudRegion, error) {
region := backup.GetRegion()
if region == nil {
return nil, errors.Wrap(httperrors.ErrInvalidStatus, "no valid cloudregion")
region, err := backup.GetRegion()
if err != nil {
return nil, err
}
provider, err := backup.GetDriver()
if err != nil {
@@ -570,10 +570,6 @@ func (self *SDBInstanceBackup) GetCloudprovider() *SCloudprovider {
return self.SManagedResourceBase.GetCloudprovider()
}
func (self *SDBInstanceBackup) GetRegion() *SCloudregion {
return self.SCloudregionResourceBase.GetRegion()
}
func (manager *SDBInstanceBackupManager) ListItemExportKeys(ctx context.Context,
q *sqlchemy.SQuery,
userCred mcclient.TokenCredential,
+3 -3
View File
@@ -237,9 +237,9 @@ func (manager *SDBInstanceDatabaseManager) ValidateCreateData(ctx context.Contex
if instance.Status != api.DBINSTANCE_RUNNING {
return nil, httperrors.NewInputParameterError("DBInstance %s(%s) status is %s require status is %s", instance.Name, instance.Id, instance.Status, api.DBINSTANCE_RUNNING)
}
region := instance.GetRegion()
if region == nil {
return nil, httperrors.NewInputParameterError("failed to found region for dbinstance %s(%s)", instance.Name, instance.Id)
region, err := instance.GetRegion()
if err != nil {
return nil, err
}
for i, _account := range input.Accounts {
account, err := instance.GetDBInstanceAccount(_account.Account)
+3 -3
View File
@@ -652,9 +652,9 @@ func (manager *SDBInstanceSkuManager) ListItemExportKeys(ctx context.Context,
func (self *SDBInstanceSku) GetZoneInfo() (cloudprovider.SZoneInfo, error) {
zoneInfo := cloudprovider.SZoneInfo{ZoneId: self.ZoneId}
region := self.GetRegion()
if region == nil {
return zoneInfo, fmt.Errorf("empyt region for rds sku %s(%s)", self.Name, self.Id)
region, err := self.GetRegion()
if err != nil {
return zoneInfo, nil
}
var cloudZoneId = func(id string) (string, error) {
if len(id) == 0 {
+28 -19
View File
@@ -979,7 +979,12 @@ func (self *SDBInstance) PerformRenew(ctx context.Context, userCred mcclient.Tok
return nil, httperrors.NewInputParameterError("invalid duration %s: %s", durationStr, err)
}
if !self.GetRegion().GetDriver().IsSupportedBillingCycle(bc, DBInstanceManager.KeywordPlural()) {
region, err := self.GetRegion()
if err != nil {
return nil, err
}
if !region.GetDriver().IsSupportedBillingCycle(bc, DBInstanceManager.KeywordPlural()) {
return nil, httperrors.NewInputParameterError("unsupported duration %s", durationStr)
}
@@ -1057,9 +1062,9 @@ func (self *SDBInstance) PerformPublicConnection(ctx context.Context, userCred m
return nil, httperrors.NewInputParameterError("The extranet connection is not open")
}
region := self.GetRegion()
if region == nil {
return nil, httperrors.NewGeneralError(fmt.Errorf("failed to found region for dbinstance %s(%s)", self.Name, self.Id))
region, err := self.GetRegion()
if err != nil {
return nil, err
}
if !region.GetDriver().IsSupportDBInstancePublicConnection() {
@@ -1585,9 +1590,9 @@ func (self *SDBInstance) SetZoneInfo(ctx context.Context, userCred mcclient.Toke
}
func (self *SDBInstance) SetZoneIds(extInstance cloudprovider.ICloudDBInstance) error {
region := self.GetRegion()
if region == nil {
return fmt.Errorf("failed found region for dbinstance %s", self.Name)
region, err := self.GetRegion()
if err != nil {
return err
}
zones, err := region.GetZones()
if err != nil {
@@ -1667,7 +1672,10 @@ func (self *SDBInstance) SyncWithCloudDBInstance(ctx context.Context, userCred m
}
}
if len(self.VpcId) == 0 {
region := self.GetRegion()
region, err := self.GetRegion()
if err != nil {
return err
}
vpc, err := VpcManager.GetOrCreateVpcForClassicNetwork(ctx, provider, region)
if err != nil {
log.Errorf("failed to create classic vpc for region %s error: %v", region.Name, err)
@@ -1815,12 +1823,13 @@ func (man *SDBInstanceManager) TotalCount(
return stat, err
}
func (dbinstance *SDBInstance) GetQuotaKeys() quotas.IQuotaKeys {
func (self *SDBInstance) GetQuotaKeys() quotas.IQuotaKeys {
region, _ := self.GetRegion()
return fetchRegionalQuotaKeys(
rbacutils.ScopeProject,
dbinstance.GetOwnerId(),
dbinstance.GetRegion(),
dbinstance.GetCloudprovider(),
self.GetOwnerId(),
region,
self.GetCloudprovider(),
)
}
@@ -1836,14 +1845,14 @@ func (dbinstance *SDBInstance) GetUsages() []db.IUsage {
}
}
func (dbinstance *SDBInstance) GetIRegion() (cloudprovider.ICloudRegion, error) {
region := dbinstance.GetRegion()
if region == nil {
return nil, errors.Wrap(httperrors.ErrInvalidStatus, "no valid cloudregion")
}
provider, err := dbinstance.GetDriver()
func (self *SDBInstance) GetIRegion() (cloudprovider.ICloudRegion, error) {
region, err := self.GetRegion()
if err != nil {
return nil, errors.Wrap(err, "dbinstance.GetDriver")
return nil, err
}
provider, err := self.GetDriver()
if err != nil {
return nil, errors.Wrap(err, "self.GetDriver")
}
return provider.GetIRegionById(region.GetExternalId())
}
+2 -2
View File
@@ -1907,7 +1907,7 @@ func (self *SDisk) PerformPurge(ctx context.Context, userCred mcclient.TokenCred
}
provider := self.GetCloudprovider()
if provider != nil && provider.Provider == api.CLOUD_PROVIDER_HUAWEI {
if provider != nil && utils.IsInStringArray(provider.Provider, []string{api.CLOUD_PROVIDER_HUAWEI, api.CLOUD_PROVIDER_HUAWEI_CLOUD_STACK}) {
cnt, err := self.GetSnapshotCount()
if err != nil {
return nil, httperrors.NewInternalServerError("GetSnapshotCount fail %s", err)
@@ -1922,7 +1922,7 @@ func (self *SDisk) PerformPurge(ctx context.Context, userCred mcclient.TokenCred
func (self *SDisk) CustomizeDelete(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, data jsonutils.JSONObject) error {
if !jsonutils.QueryBoolean(query, "delete_snapshots", false) {
if provider := self.GetCloudprovider(); provider != nil && provider.Provider == api.CLOUD_PROVIDER_HUAWEI {
if provider := self.GetCloudprovider(); provider != nil && utils.IsInStringArray(provider.Provider, []string{api.CLOUD_PROVIDER_HUAWEI, api.CLOUD_PROVIDER_HUAWEI_CLOUD_STACK}) {
cnt, err := self.GetSnapshotCount()
if err != nil {
return httperrors.NewInternalServerError("GetSnapshotCount fail %s", err)
-8
View File
@@ -368,14 +368,6 @@ func (self *SElasticSearch) StartDeleteTask(ctx context.Context, userCred mcclie
return nil
}
func (self *SElasticSearch) GetRegion() (*SCloudregion, error) {
region, err := CloudregionManager.FetchById(self.CloudregionId)
if err != nil {
return nil, errors.Wrapf(err, "CloudregionManager.FetchById(%s)", self.CloudregionId)
}
return region.(*SCloudregion), nil
}
func (self *SElasticSearch) GetIRegion() (cloudprovider.ICloudRegion, error) {
region, err := self.GetRegion()
if err != nil {
+1 -9
View File
@@ -152,7 +152,7 @@ func (manager *SElasticipManager) ListItemFilter(
return nil, httperrors.NewGeneralError(err)
}
guest := serverObj.(*SGuest)
if guest.Hypervisor == api.HYPERVISOR_KVM || utils.IsInStringArray(guest.Hypervisor, api.PRIVATE_CLOUD_HYPERVISORS) {
if guest.Hypervisor == api.HYPERVISOR_KVM || (utils.IsInStringArray(guest.Hypervisor, api.PRIVATE_CLOUD_HYPERVISORS) && guest.Hypervisor != api.HYPERVISOR_HUAWEI_CLOUD_STACK) {
zone, _ := guest.getZone()
networks := NetworkManager.Query().SubQuery()
wires := WireManager.Query().SubQuery()
@@ -271,14 +271,6 @@ func (manager *SElasticipManager) QueryDistinctExtraField(q *sqlchemy.SQuery, fi
return q, httperrors.ErrNotFound
}
func (self *SElasticip) GetRegion() (*SCloudregion, error) {
region, err := CloudregionManager.FetchById(self.CloudregionId)
if err != nil {
return nil, errors.Wrapf(err, "CloudregionManager.FetchById")
}
return region.(*SCloudregion), nil
}
func (self *SElasticip) GetNetwork() (*SNetwork, error) {
network, err := NetworkManager.FetchById(self.NetworkId)
if err != nil {
-8
View File
@@ -526,14 +526,6 @@ func (self *SFileSystem) StartSyncstatus(ctx context.Context, userCred mcclient.
return StartResourceSyncStatusTask(ctx, userCred, self, "FileSystemSyncstatusTask", parentTaskId)
}
func (self *SFileSystem) GetRegion() (*SCloudregion, error) {
region, err := CloudregionManager.FetchById(self.CloudregionId)
if err != nil {
return nil, errors.Wrap(err, "CloudregionManager.FetchById")
}
return region.(*SCloudregion), nil
}
func (self *SFileSystem) GetIRegion() (cloudprovider.ICloudRegion, error) {
provider, err := self.GetDriver()
if err != nil {
+2
View File
@@ -2494,6 +2494,7 @@ func (self *SGuest) syncWithCloudVM(ctx context.Context, userCred mcclient.Token
self.BootOrder = extVM.GetBootOrder()
self.Vga = extVM.GetVga()
self.Vdi = extVM.GetVdi()
self.OsArch = extVM.GetOSArch()
self.OsType = extVM.GetOSType()
self.Bios = extVM.GetBios()
self.Machine = extVM.GetMachine()
@@ -2573,6 +2574,7 @@ func (manager *SGuestManager) newCloudVM(ctx context.Context, userCred mcclient.
guest.BootOrder = extVM.GetBootOrder()
guest.Vga = extVM.GetVga()
guest.Vdi = extVM.GetVdi()
guest.OsArch = extVM.GetOSArch()
guest.OsType = extVM.GetOSType()
guest.Bios = extVM.GetBios()
guest.Machine = extVM.GetMachine()
+2 -1
View File
@@ -458,10 +458,11 @@ func (self *SInstanceSnapshot) GetSnapshots() ([]SSnapshot, error) {
}
func (self *SInstanceSnapshot) GetQuotaKeys() quotas.IQuotaKeys {
region, _ := self.GetRegion()
return fetchRegionalQuotaKeys(
rbacutils.ScopeProject,
self.GetOwnerId(),
self.GetRegion(),
region,
self.GetCloudprovider(),
)
}
-8
View File
@@ -365,14 +365,6 @@ func (self *SKafka) StartDeleteTask(ctx context.Context, userCred mcclient.Token
return nil
}
func (self *SKafka) GetRegion() (*SCloudregion, error) {
region, err := CloudregionManager.FetchById(self.CloudregionId)
if err != nil {
return nil, errors.Wrapf(err, "CloudregionManager.FetchById(%s)", self.CloudregionId)
}
return region.(*SCloudregion), nil
}
func (self *SKafka) GetIRegion() (cloudprovider.ICloudRegion, error) {
region, err := self.GetRegion()
if err != nil {
@@ -24,7 +24,6 @@ import (
api "yunion.io/x/onecloud/pkg/apis/compute"
"yunion.io/x/onecloud/pkg/cloudcommon/db"
"yunion.io/x/onecloud/pkg/httperrors"
"yunion.io/x/onecloud/pkg/mcclient"
"yunion.io/x/onecloud/pkg/util/influxdb"
)
@@ -60,9 +59,9 @@ func (lbr *SLoadbalancerListenerRule) GetDetailsBackendStatus(ctx context.Contex
if provider != nil {
return jsonutils.NewArray(), nil
}
lblis := lbr.GetLoadbalancerListener()
if lblis == nil {
return nil, httperrors.NewNotFoundError("find listener of listener rule %s(%s)", lbr.Name, lbr.Id)
lblis, err := lbr.GetLoadbalancerListener()
if err != nil {
return nil, err
}
pxname := fmt.Sprintf("backends_rule-%s", lbr.Id)
return lbGetBackendGroupCheckStatus(ctx, userCred, lblis.LoadbalancerId, pxname, lbr.BackendGroupId)
@@ -53,61 +53,60 @@ func ValidateLoadbalancerBackendgroupResourceInput(userCred mcclient.TokenCreden
return lbbgObj.(*SLoadbalancerBackendGroup), input, nil
}
func (self *SLoadbalancerBackendgroupResourceBase) GetLoadbalancerBackendGroup() *SLoadbalancerBackendGroup {
w, _ := LoadbalancerBackendGroupManager.FetchById(self.BackendGroupId)
if w != nil {
return w.(*SLoadbalancerBackendGroup)
func (self *SLoadbalancerBackendgroupResourceBase) GetLoadbalancerBackendGroup() (*SLoadbalancerBackendGroup, error) {
w, err := LoadbalancerBackendGroupManager.FetchById(self.BackendGroupId)
if err != nil {
return nil, err
}
return nil
return w.(*SLoadbalancerBackendGroup), nil
}
func (self *SLoadbalancerBackendgroupResourceBase) GetLoadbalancer() *SLoadbalancer {
lbbg := self.GetLoadbalancerBackendGroup()
if lbbg != nil {
return lbbg.GetLoadbalancer()
func (self *SLoadbalancerBackendgroupResourceBase) GetLoadbalancer() (*SLoadbalancer, error) {
lbbg, err := self.GetLoadbalancerBackendGroup()
if err != nil {
return nil, err
}
return nil
return lbbg.GetLoadbalancer()
}
func (self *SLoadbalancerBackendgroupResourceBase) GetVpc() *SVpc {
lb := self.GetLoadbalancer()
if lb != nil {
return lb.GetVpc()
func (self *SLoadbalancerBackendgroupResourceBase) GetVpc() (*SVpc, error) {
lb, err := self.GetLoadbalancer()
if err != nil {
return nil, errors.Wrapf(err, "GetLoadbalancer")
}
return nil
return lb.GetVpc()
}
func (self *SLoadbalancerBackendgroupResourceBase) GetCloudprovider() *SCloudprovider {
lb := self.GetLoadbalancer()
if lb != nil {
return lb.GetCloudprovider()
func (self *SLoadbalancerBackendgroupResourceBase) GetCloudprovider() (*SCloudprovider, error) {
lb, err := self.GetLoadbalancer()
if err != nil {
return nil, err
}
return nil
return lb.GetCloudprovider(), nil
}
func (self *SLoadbalancerBackendgroupResourceBase) GetProviderName() string {
lb := self.GetLoadbalancer()
if lb != nil {
return lb.SManagedResourceBase.GetProviderName()
lb, err := self.GetLoadbalancer()
if err != nil {
return ""
}
return ""
return lb.SManagedResourceBase.GetProviderName()
}
func (self *SLoadbalancerBackendgroupResourceBase) GetRegion() *SCloudregion {
vpc := self.GetVpc()
if vpc == nil {
return nil
func (self *SLoadbalancerBackendgroupResourceBase) GetRegion() (*SCloudregion, error) {
vpc, err := self.GetVpc()
if err != nil {
return nil, err
}
region, _ := vpc.GetRegion()
return region
return vpc.GetRegion()
}
func (self *SLoadbalancerBackendgroupResourceBase) GetZone() *SZone {
lb := self.GetLoadbalancer()
if lb != nil {
return lb.GetZone()
func (self *SLoadbalancerBackendgroupResourceBase) GetZone() (*SZone, error) {
lb, err := self.GetLoadbalancer()
if err != nil {
return nil, err
}
return nil
return lb.GetZone()
}
func (manager *SLoadbalancerBackendgroupResourceBaseManager) FetchCustomizeColumns(
+26 -26
View File
@@ -191,7 +191,7 @@ func (man *SLoadbalancerBackendGroupManager) ValidateCreateData(ctx context.Cont
var (
lb = lbV.Model.(*SLoadbalancer)
lbRegion = lb.GetRegion()
lbRegion, _ = lb.GetRegion()
lbIsManaged = lb.IsManaged()
backends = []cloudprovider.SLoadbalancerBackend{}
)
@@ -267,9 +267,9 @@ func (man *SLoadbalancerBackendGroupManager) ValidateCreateData(ctx context.Cont
}
}
data.Set("backends", jsonutils.Marshal(backends))
region := lb.GetRegion()
if region == nil {
return nil, httperrors.NewResourceNotFoundError("failed to find region for loadbalancer %s", lb.Name)
region, err := lb.GetRegion()
if err != nil {
return nil, err
}
return region.GetDriver().ValidateCreateLoadbalancerBackendGroupData(ctx, userCred, data, lb, backends)
}
@@ -294,27 +294,28 @@ func (lbbg *SLoadbalancerBackendGroup) GetLoadbalancerListeners() ([]SLoadbalanc
return listeners, nil
}
func (lbbg *SLoadbalancerBackendGroup) GetLoadbalancer() *SLoadbalancer {
func (lbbg *SLoadbalancerBackendGroup) GetLoadbalancer() (*SLoadbalancer, error) {
lb, err := LoadbalancerManager.FetchById(lbbg.LoadbalancerId)
if err != nil {
log.Errorf("failed to find loadbalancer for backendgroup %s", lbbg.Name)
return nil
return nil, err
}
return lb.(*SLoadbalancer)
return lb.(*SLoadbalancer), nil
}
func (llbg *SLoadbalancerBackendGroup) GetRegion() *SCloudregion {
if loadbalancer := llbg.GetLoadbalancer(); loadbalancer != nil {
return loadbalancer.GetRegion()
func (llbg *SLoadbalancerBackendGroup) GetRegion() (*SCloudregion, error) {
loadbalancer, err := llbg.GetLoadbalancer()
if err != nil {
return nil, err
}
return nil
return loadbalancer.GetRegion()
}
func (lbbg *SLoadbalancerBackendGroup) GetIRegion() (cloudprovider.ICloudRegion, error) {
if loadbalancer := lbbg.GetLoadbalancer(); loadbalancer != nil {
return loadbalancer.GetIRegion()
loadbalancer, err := lbbg.GetLoadbalancer()
if err != nil {
return nil, errors.Wrapf(err, "GetLoadbalancer")
}
return nil, fmt.Errorf("failed to find loadbalancer for backendgroup %s", lbbg.Name)
return loadbalancer.GetIRegion()
}
func (lbbg *SLoadbalancerBackendGroup) GetBackends() ([]SLoadbalancerBackend, error) {
@@ -554,7 +555,7 @@ func (lbbg *SLoadbalancerBackendGroup) StartOpenstackLoadBalancerBackendGroupCre
}
func (lbbg *SLoadbalancerBackendGroup) LBPendingDelete(ctx context.Context, userCred mcclient.TokenCredential) {
if lb := lbbg.GetLoadbalancer(); lb != nil && lb.BackendGroupId == lbbg.Id {
if lb, _ := lbbg.GetLoadbalancer(); lb != nil && lb.BackendGroupId == lbbg.Id {
if _, err := db.UpdateWithLock(ctx, lb, func() error {
lb.BackendGroupId = ""
return nil
@@ -635,7 +636,7 @@ func (lbbg *SLoadbalancerBackendGroup) GetBackendGroupParams() (*cloudprovider.S
ListenerID: listenerId,
}
loadbalancer := lbbg.GetLoadbalancer()
loadbalancer, _ := lbbg.GetLoadbalancer()
if loadbalancer != nil {
ret.VpcId = loadbalancer.VpcId
ret.LoadbalancerID = loadbalancer.ExternalId
@@ -745,14 +746,13 @@ func (lbbg *SLoadbalancerBackendGroup) GetAwsBackendGroupParams(lblis *SLoadbala
ret.ListenerID = lblis.GetExternalId()
lb := lblis.GetLoadbalancer()
lb, _ := lblis.GetLoadbalancer()
if lb != nil {
vpc := lb.GetVpc()
if vpc != nil {
ret.VpcId = vpc.GetExternalId()
} else {
return nil, fmt.Errorf("loadbalancer %s related vpc not found", lb.GetId())
vpc, err := lb.GetVpc()
if err != nil {
return nil, errors.Wrapf(err, "GetVpc")
}
ret.VpcId = vpc.GetExternalId()
}
ret.ListenType = lblis.ListenerType
ret.ListenPort = lblis.ListenerPort
@@ -860,9 +860,9 @@ func (lbbg *SLoadbalancerBackendGroup) GetICloudLoadbalancerBackendGroup() (clou
return nil, fmt.Errorf("backendgroup %s has no external id", lbbg.GetId())
}
lb := lbbg.GetLoadbalancer()
if lb == nil {
return nil, fmt.Errorf("backendgroup %s releated loadbalancer not found", lbbg.GetId())
lb, err := lbbg.GetLoadbalancer()
if err != nil {
return nil, errors.Wrapf(err, "GetLoadbalacer")
}
iregion, err := lb.GetIRegion()
+34 -27
View File
@@ -174,9 +174,9 @@ func (man *SLoadbalancerBackendManager) QueryDistinctExtraField(q *sqlchemy.SQue
}
func (man *SLoadbalancerBackendManager) ValidateBackendVpc(lb *SLoadbalancer, guest *SGuest, backendgroup *SLoadbalancerBackendGroup) error {
region := lb.GetRegion()
if region == nil {
return httperrors.NewResourceNotFoundError("failed to find region for loadbalancer %s", lb.Name)
region, err := lb.GetRegion()
if err != nil {
return err
}
requireStatus := region.GetDriver().GetBackendStatusForAdd()
if !utils.IsInStringArray(guest.Status, requireStatus) {
@@ -187,7 +187,10 @@ func (man *SLoadbalancerBackendManager) ValidateBackendVpc(lb *SLoadbalancer, gu
return httperrors.NewBadRequestError("%s", err)
}
if len(lb.VpcId) > 0 {
lbVpc := lb.GetVpc()
lbVpc, err := lb.GetVpc()
if err != nil {
return err
}
if lbVpc != nil && !lbVpc.IsEmulated && vpc.Id != lb.VpcId {
return httperrors.NewBadRequestError("guest %s(%s) vpc %s(%s) not same as loadbalancer vpc %s", guest.Name, guest.Id, vpc.Name, vpc.Id, lb.VpcId)
}
@@ -238,11 +241,14 @@ func (man *SLoadbalancerBackendManager) ValidateCreateData(ctx context.Context,
backendType := backendTypeV.Value
backendGroup := backendGroupV.Model.(*SLoadbalancerBackendGroup)
lb := backendGroup.GetLoadbalancer()
lb, err := backendGroup.GetLoadbalancer()
if err != nil {
return nil, err
}
var backendModel db.IModel
input := apis.VirtualResourceCreateInput{}
err := data.Unmarshal(&input)
err = data.Unmarshal(&input)
if err != nil {
return nil, httperrors.NewInternalServerError("unmarshal VirtualResourceCreateInput fail %s", err)
}
@@ -252,9 +258,9 @@ func (man *SLoadbalancerBackendManager) ValidateCreateData(ctx context.Context,
}
data.Update(jsonutils.Marshal(input))
region := lb.GetRegion()
if region == nil {
return nil, httperrors.NewResourceNotFoundError("failed to find region for loadbalancer %s", lb.Name)
region, err := lb.GetRegion()
if err != nil {
return nil, err
}
ctx = context.WithValue(ctx, "ownerId", ownerId)
@@ -266,20 +272,19 @@ func (lbb *SLoadbalancerBackend) AllowPerformStatus(ctx context.Context, userCre
}
func (lbb *SLoadbalancerBackend) GetCloudproviderId() string {
lbbg := lbb.GetLoadbalancerBackendGroup()
lbbg, _ := lbb.GetLoadbalancerBackendGroup()
if lbbg != nil {
return lbbg.GetCloudproviderId()
}
return ""
}
func (lbb *SLoadbalancerBackend) GetLoadbalancerBackendGroup() *SLoadbalancerBackendGroup {
func (lbb *SLoadbalancerBackend) GetLoadbalancerBackendGroup() (*SLoadbalancerBackendGroup, error) {
backendgroup, err := LoadbalancerBackendGroupManager.FetchById(lbb.BackendGroupId)
if err != nil {
log.Errorf("failed to find backendgroup for backend %s", lbb.Name)
return nil
return nil, errors.Wrapf(err, "GetLoadbalancerBackendGroup(%s)", lbb.BackendGroupId)
}
return backendgroup.(*SLoadbalancerBackendGroup)
return backendgroup.(*SLoadbalancerBackendGroup), nil
}
func (lbb *SLoadbalancerBackend) GetGuest() *SGuest {
@@ -290,18 +295,20 @@ func (lbb *SLoadbalancerBackend) GetGuest() *SGuest {
return guest.(*SGuest)
}
func (lbb *SLoadbalancerBackend) GetRegion() *SCloudregion {
if backendgroup := lbb.GetLoadbalancerBackendGroup(); backendgroup != nil {
return backendgroup.GetRegion()
func (lbb *SLoadbalancerBackend) GetRegion() (*SCloudregion, error) {
backendgroup, err := lbb.GetLoadbalancerBackendGroup()
if err != nil {
return nil, err
}
return nil
return backendgroup.GetRegion()
}
func (lbb *SLoadbalancerBackend) GetIRegion() (cloudprovider.ICloudRegion, error) {
if backendgroup := lbb.GetLoadbalancerBackendGroup(); backendgroup != nil {
return backendgroup.GetIRegion()
backendgroup, err := lbb.GetLoadbalancerBackendGroup()
if err != nil {
return nil, err
}
return nil, fmt.Errorf("failed to find region for backend %s", lbb.Name)
return backendgroup.GetIRegion()
}
func (man *SLoadbalancerBackendManager) GetGuestAddress(guest *SGuest) (string, error) {
@@ -330,13 +337,13 @@ func (lbb *SLoadbalancerBackend) ValidateUpdateData(ctx context.Context, userCre
}
data.Update(jsonutils.Marshal(input))
region := lbb.GetRegion()
if region == nil {
return nil, httperrors.NewResourceNotFoundError("failed to found region for loadbalancer backend %s", lbb.Name)
region, err := lbb.GetRegion()
if err != nil {
return nil, err
}
lbbg := lbb.GetLoadbalancerBackendGroup()
if lbbg == nil {
return nil, httperrors.NewResourceNotFoundError("failed to found backendgroup for backend %s(%s)", lbb.Name, lbb.Id)
lbbg, err := lbb.GetLoadbalancerBackendGroup()
if err != nil {
return nil, err
}
data.Set("backend_id", jsonutils.NewString(lbb.BackendId))
+7 -6
View File
@@ -22,6 +22,7 @@ import (
"yunion.io/x/log"
"yunion.io/x/pkg/errors"
"yunion.io/x/pkg/util/compare"
"yunion.io/x/pkg/utils"
"yunion.io/x/sqlchemy"
"yunion.io/x/onecloud/pkg/apis"
@@ -124,7 +125,7 @@ func (man *SCachedLoadbalancerAclManager) ValidateCreateData(ctx context.Context
}
}
if providerV.Model.(*SCloudprovider).Provider == api.CLOUD_PROVIDER_HUAWEI {
if utils.IsInStringArray(providerV.Model.(*SCloudprovider).Provider, []string{api.CLOUD_PROVIDER_HUAWEI, api.CLOUD_PROVIDER_HUAWEI_CLOUD_STACK}) {
listenerV := validators.NewModelIdOrNameValidator("listener", "loadbalancerlistener", ownerId)
if err := listenerV.Validate(data); err != nil {
return nil, err
@@ -313,7 +314,7 @@ func (self *SCachedLoadbalancerAcl) syncRemoveCloudLoadbalanceAcl(ctx context.Co
func (acl *SCachedLoadbalancerAcl) SyncWithCloudLoadbalancerAcl(ctx context.Context, userCred mcclient.TokenCredential, extAcl cloudprovider.ICloudLoadbalancerAcl, projectId mcclient.IIdentityProvider) error {
diff, err := db.UpdateWithLock(ctx, acl, func() error {
// todo: 华为云acl没有name字段应此不需要同步名称
if api.CLOUD_PROVIDER_HUAWEI != acl.GetProviderName() {
if !utils.IsInStringArray(acl.GetProviderName(), []string{api.CLOUD_PROVIDER_HUAWEI, api.CLOUD_PROVIDER_HUAWEI_CLOUD_STACK}) {
acl.Name = extAcl.GetName()
} else {
ext_listener_id := extAcl.GetAclListenerID()
@@ -349,16 +350,16 @@ func (man *SCachedLoadbalancerAclManager) GetOrCreateCachedAcl(ctx context.Conte
defer lockman.ReleaseClass(ctx, man, ownerProjId)
listenerId := ""
if lblis.GetProviderName() == api.CLOUD_PROVIDER_HUAWEI {
if utils.IsInStringArray(lblis.GetProviderName(), []string{api.CLOUD_PROVIDER_HUAWEI, api.CLOUD_PROVIDER_HUAWEI_CLOUD_STACK}) {
listenerId = lblis.Id
}
if lblis.GetProviderName() == api.CLOUD_PROVIDER_OPENSTACK {
listenerId = lblis.Id
}
region := lblis.GetRegion()
if region == nil {
return nil, errors.Wrap(httperrors.ErrInvalidStatus, "Loadbalancer listenser is not attached region")
region, err := lblis.GetRegion()
if err != nil {
return nil, err
}
lbacl, err := man.getLoadbalancerAclByRegion(provider, region.Id, acl.Id, listenerId)
if err == nil {
@@ -255,9 +255,9 @@ func (man *SCachedLoadbalancerCertificateManager) GetOrCreateCachedCertificate(c
lockman.LockClass(ctx, man, ownerProjId)
defer lockman.ReleaseClass(ctx, man, ownerProjId)
region := lblis.GetRegion()
if region == nil {
return nil, errors.Wrap(httperrors.ErrInvalidStatus, "loadbalancer listener is not attached to any region?")
region, err := lblis.GetRegion()
if err != nil {
return nil, err
}
lbcert, err := man.getLoadbalancerCertificateByRegion(provider, region.Id, cert.Id)
if err == nil {
@@ -296,9 +296,9 @@ func (man *SHuaweiCachedLbManager) newFromCloudLoadbalancerBackend(ctx context.C
}
func newLocalBackendFromCloudLoadbalancerBackend(ctx context.Context, userCred mcclient.TokenCredential, loadbalancerBackendgroup *SLoadbalancerBackendGroup, extLoadbalancerBackend cloudprovider.ICloudLoadbalancerBackend, syncOwnerId mcclient.IIdentityProvider) (*SLoadbalancerBackend, error) {
lbbgRegion := loadbalancerBackendgroup.GetRegion()
if lbbgRegion == nil {
return nil, errors.Wrap(httperrors.ErrInvalidStatus, "loadbalancerBackendgroup is not attached to any region")
lbbgRegion, err := loadbalancerBackendgroup.GetRegion()
if err != nil {
return nil, err
}
lbbgProvider := loadbalancerBackendgroup.GetCloudprovider()
if lbbgProvider == nil {
@@ -29,7 +29,6 @@ import (
"yunion.io/x/onecloud/pkg/cloudcommon/db"
"yunion.io/x/onecloud/pkg/cloudcommon/db/lockman"
"yunion.io/x/onecloud/pkg/cloudprovider"
"yunion.io/x/onecloud/pkg/httperrors"
"yunion.io/x/onecloud/pkg/mcclient"
)
@@ -337,9 +336,9 @@ func (man *SHuaweiCachedLbbgManager) newFromCloudLoadbalancerBackendgroup(ctx co
lbbg := &SHuaweiCachedLbbg{}
lbbg.SetModelManager(man, lbbg)
region := lb.GetRegion()
if region == nil {
return nil, errors.Wrap(httperrors.ErrInvalidStatus, "loadbalancer is not attached to any region")
region, err := lb.GetRegion()
if err != nil {
return nil, err
}
lbbg.ManagerId = provider.Id
@@ -53,13 +53,12 @@ func ValidateLoadbalancerListenerResourceInput(userCred mcclient.TokenCredential
return listenerObj.(*SLoadbalancerListener), input, nil
}
func (self *SLoadbalancerListenerResourceBase) GetLoadbalancerListener() *SLoadbalancerListener {
func (self *SLoadbalancerListenerResourceBase) GetLoadbalancerListener() (*SLoadbalancerListener, error) {
listener, err := LoadbalancerListenerManager.FetchById(self.ListenerId)
if err != nil {
log.Errorf("failed to find LoadbalancerCluster %s error: %v", self.ListenerId, err)
return nil
return nil, errors.Wrapf(err, "GetLoadbalancerListener(%s)", self.ListenerId)
}
return listener.(*SLoadbalancerListener)
return listener.(*SLoadbalancerListener), nil
}
func (self *SLoadbalancerListenerResourceBase) GetCloudproviderId() string {
@@ -71,7 +70,7 @@ func (self *SLoadbalancerListenerResourceBase) GetCloudproviderId() string {
}
func (self *SLoadbalancerListenerResourceBase) GetCloudprovider() *SCloudprovider {
listener := self.GetLoadbalancerListener()
listener, _ := self.GetLoadbalancerListener()
if listener != nil {
return listener.GetCloudprovider()
}
@@ -79,7 +78,7 @@ func (self *SLoadbalancerListenerResourceBase) GetCloudprovider() *SCloudprovide
}
func (self *SLoadbalancerListenerResourceBase) GetProviderName() string {
listener := self.GetLoadbalancerListener()
listener, _ := self.GetLoadbalancerListener()
if listener != nil {
return listener.GetProviderName()
}
+12 -20
View File
@@ -494,9 +494,9 @@ func (man *SLoadbalancerListenerRuleManager) ValidateCreateData(ctx context.Cont
}
listener := listenerV.Model.(*SLoadbalancerListener)
region := listener.GetRegion()
if region == nil {
return nil, httperrors.NewResourceNotFoundError("failed to find region for loadbalancer listener %s", listener.Name)
region, err := listener.GetRegion()
if err != nil {
return nil, err
}
backendGroupV := validators.NewModelIdOrNameValidator("backend_group", "loadbalancerbackendgroup", ownerId)
@@ -579,9 +579,9 @@ func (lbr *SLoadbalancerListenerRule) ValidateUpdateData(ctx context.Context, us
}
data.Update(jsonutils.Marshal(input))
region := lbr.GetRegion()
if region == nil {
return nil, httperrors.NewResourceNotFoundError("failed to find region for loadbalancer listener rule %s", lbr.Name)
region, err := lbr.GetRegion()
if err != nil {
return nil, err
}
ctx = context.WithValue(ctx, "lbr", lbr)
@@ -628,20 +628,12 @@ func (man *SLoadbalancerListenerRuleManager) FetchCustomizeColumns(
return rows
}
/*func (lbr *SLoadbalancerListenerRule) GetLoadbalancerListener() *SLoadbalancerListener {
listener, err := LoadbalancerListenerManager.FetchById(lbr.ListenerId)
func (lbr *SLoadbalancerListenerRule) GetRegion() (*SCloudregion, error) {
listener, err := lbr.GetLoadbalancerListener()
if err != nil {
log.Errorf("failed to find listener for loadbalancer listener rule %s", lbr.Name)
return nil
return nil, err
}
return listener.(*SLoadbalancerListener)
}*/
func (lbr *SLoadbalancerListenerRule) GetRegion() *SCloudregion {
if listener := lbr.GetLoadbalancerListener(); listener != nil {
return listener.GetRegion()
}
return nil
return listener.GetRegion()
}
func (lbr *SLoadbalancerListenerRule) GetLoadbalancerBackendGroup() *SLoadbalancerBackendGroup {
@@ -740,7 +732,7 @@ func (lbr *SLoadbalancerListenerRule) constructFieldsFromCloudListenerRule(userC
}
if groupId := extRule.GetBackendGroupId(); len(groupId) > 0 {
if lbr.GetProviderName() == api.CLOUD_PROVIDER_HUAWEI {
if utils.IsInStringArray(lbr.GetProviderName(), []string{api.CLOUD_PROVIDER_HUAWEI, api.CLOUD_PROVIDER_HUAWEI_CLOUD_STACK}) {
group, err := db.FetchByExternalId(HuaweiCachedLbbgManager, groupId)
if err != nil {
if err == sql.ErrNoRows {
@@ -782,7 +774,7 @@ func (lbr *SLoadbalancerListenerRule) updateCachedLoadbalancerBackendGroupAssoci
}
switch lbr.GetProviderName() {
case api.CLOUD_PROVIDER_HUAWEI:
case api.CLOUD_PROVIDER_HUAWEI, api.CLOUD_PROVIDER_HUAWEI_CLOUD_STACK:
_group, err := db.FetchByExternalId(HuaweiCachedLbbgManager, exteralLbbgId)
if err != nil {
if err == sql.ErrNoRows {
+27 -30
View File
@@ -339,14 +339,11 @@ func (man *SLoadbalancerListenerManager) ValidateCreateData(ctx context.Context,
data.Update(jsonutils.Marshal(input))
lb := lbV.Model.(*SLoadbalancer)
region := lb.GetRegion()
if region == nil {
return nil, httperrors.NewResourceNotFoundError("failed to find region for loadbalancer %s", lb.Name)
region, err := lb.GetRegion()
if err != nil {
return nil, err
}
// if len(lb.ManagerId) > 0 {
// data.Set("manager_id", jsonutils.NewString(lb.ManagerId))
// }
return region.GetDriver().ValidateCreateLoadbalancerListenerData(ctx, userCred, ownerId, data, lb, backendGroupV.Model)
}
@@ -372,7 +369,7 @@ func (man *SLoadbalancerListenerManager) ValidateAcl(aclStatusV *validators.Vali
return httperrors.NewMissingParameterError("acl_type")
}
} else {
if providerName != api.CLOUD_PROVIDER_HUAWEI {
if !utils.IsInStringArray(providerName, []string{api.CLOUD_PROVIDER_HUAWEI, api.CLOUD_PROVIDER_HUAWEI_CLOUD_STACK}) {
data.Set("acl_id", jsonutils.NewString(""))
data.Set("cached_acl_id", jsonutils.NewString(""))
}
@@ -452,9 +449,9 @@ func (lblis *SLoadbalancerListener) ValidateUpdateData(ctx context.Context, user
}
data.Update(jsonutils.Marshal(input))
region := lblis.GetRegion()
if region == nil {
return nil, httperrors.NewResourceNotFoundError("failed to find region for loadbalancer listener %s", lblis.Name)
region, err := lblis.GetRegion()
if err != nil {
return nil, err
}
return region.GetDriver().ValidateUpdateLoadbalancerListenerData(ctx, userCred, data, lblis, backendGroupV.Model)
@@ -669,7 +666,7 @@ func (lblis *SLoadbalancerListener) GetLoadbalancerListenerParams() (*cloudprovi
listener.BackendGroupType = backendgroup.Type
}
if loadbalancer := lblis.GetLoadbalancer(); loadbalancer != nil {
if loadbalancer, _ := lblis.GetLoadbalancer(); loadbalancer != nil {
listener.LoadbalancerID = loadbalancer.ExternalId
}
@@ -734,7 +731,7 @@ func (lblis *SLoadbalancerListener) GetAwsLoadbalancerListenerParams() (*cloudpr
return nil, err
}
lb := lblis.GetLoadbalancer()
lb, _ := lblis.GetLoadbalancer()
if lb != nil {
listener.LoadbalancerID = lb.ExternalId
}
@@ -857,32 +854,32 @@ func (lblis *SLoadbalancerListener) GetLoadbalancerBackendGroup() *SLoadbalancer
return group
}
func (lblis *SLoadbalancerListener) GetLoadbalancer() *SLoadbalancer {
func (lblis *SLoadbalancerListener) GetLoadbalancer() (*SLoadbalancer, error) {
_loadbalancer, err := LoadbalancerManager.FetchById(lblis.LoadbalancerId)
if err != nil {
log.Errorf("failed to find loadbalancer for loadbalancer listener %s", lblis.Name)
return nil
return nil, err
}
loadbalancer := _loadbalancer.(*SLoadbalancer)
if loadbalancer.PendingDeleted {
log.Errorf("loadbalancer %s(%s) has been deleted", loadbalancer.Name, loadbalancer.Id)
return nil
return nil, errors.Wrapf(cloudprovider.ErrNotFound, "pending deleted")
}
return loadbalancer
return loadbalancer, nil
}
func (lblis *SLoadbalancerListener) GetRegion() *SCloudregion {
if loadbalancer := lblis.GetLoadbalancer(); loadbalancer != nil {
return loadbalancer.GetRegion()
func (lblis *SLoadbalancerListener) GetRegion() (*SCloudregion, error) {
loadbalancer, err := lblis.GetLoadbalancer()
if err != nil {
return nil, err
}
return nil
return loadbalancer.GetRegion()
}
func (lblis *SLoadbalancerListener) GetIRegion() (cloudprovider.ICloudRegion, error) {
if loadbalancer := lblis.GetLoadbalancer(); loadbalancer != nil {
return loadbalancer.GetIRegion()
loadbalancer, err := lblis.GetLoadbalancer()
if err != nil {
return nil, err
}
return nil, fmt.Errorf("failed to find loadbalancer for lblis %s", lblis.Name)
return loadbalancer.GetIRegion()
}
func (man *SLoadbalancerListenerManager) getLoadbalancerListenersByLoadbalancer(lb *SLoadbalancer) ([]SLoadbalancerListener, error) {
@@ -1016,7 +1013,7 @@ func (lblis *SLoadbalancerListener) constructFieldsFromCloudListener(userCred mc
switch lblis.ListenerType {
case api.LB_LISTENER_TYPE_UDP:
if lblis.GetProviderName() != api.CLOUD_PROVIDER_HUAWEI {
if !utils.IsInStringArray(lblis.GetProviderName(), []string{api.CLOUD_PROVIDER_HUAWEI, api.CLOUD_PROVIDER_HUAWEI_CLOUD_STACK}) {
lblis.HealthCheckExp = extListener.GetHealthCheckExp()
lblis.HealthCheckReq = extListener.GetHealthCheckReq()
}
@@ -1059,7 +1056,7 @@ func (lblis *SLoadbalancerListener) constructFieldsFromCloudListener(userCred mc
groupId := extListener.GetBackendGroupId()
switch lblis.GetProviderName() {
case api.CLOUD_PROVIDER_HUAWEI:
case api.CLOUD_PROVIDER_HUAWEI, api.CLOUD_PROVIDER_HUAWEI_CLOUD_STACK:
if len(groupId) > 0 {
group, err := db.FetchByExternalIdAndManagerId(HuaweiCachedLbbgManager, groupId, func(q *sqlchemy.SQuery) *sqlchemy.SQuery {
return q.Equals("manager_id", lb.ManagerId)
@@ -1097,7 +1094,7 @@ func (lblis *SLoadbalancerListener) constructFieldsFromCloudListener(userCred mc
}
case api.CLOUD_PROVIDER_QCLOUD:
if len(groupId) > 0 {
lb := lblis.GetLoadbalancer()
lb, _ := lblis.GetLoadbalancer()
if forward, _ := lb.LBInfo.Int("Forward"); forward == 1 {
// 应用型负载均衡
group, err := db.FetchByExternalIdAndManagerId(QcloudCachedLbbgManager, groupId, func(q *sqlchemy.SQuery) *sqlchemy.SQuery {
@@ -1151,7 +1148,7 @@ func (lblis *SLoadbalancerListener) updateCachedLoadbalancerBackendGroupAssociat
}
switch lblis.GetProviderName() {
case api.CLOUD_PROVIDER_HUAWEI:
case api.CLOUD_PROVIDER_HUAWEI, api.CLOUD_PROVIDER_HUAWEI_CLOUD_STACK:
_group, err := db.FetchByExternalIdAndManagerId(HuaweiCachedLbbgManager, exteralLbbgId, func(q *sqlchemy.SQuery) *sqlchemy.SQuery {
return q.Equals("manager_id", managerId)
})
@@ -1177,7 +1174,7 @@ func (lblis *SLoadbalancerListener) updateCachedLoadbalancerBackendGroupAssociat
}
}
case api.CLOUD_PROVIDER_QCLOUD:
lb := lblis.GetLoadbalancer()
lb, _ := lblis.GetLoadbalancer()
if forward, _ := lb.LBInfo.Int("Forward"); forward == 1 {
_group, err := db.FetchByExternalIdAndManagerId(QcloudCachedLbbgManager, exteralLbbgId, func(q *sqlchemy.SQuery) *sqlchemy.SQuery {
return q.Equals("manager_id", managerId)
@@ -29,7 +29,6 @@ import (
"yunion.io/x/onecloud/pkg/cloudcommon/db"
"yunion.io/x/onecloud/pkg/cloudcommon/db/lockman"
"yunion.io/x/onecloud/pkg/cloudprovider"
"yunion.io/x/onecloud/pkg/httperrors"
"yunion.io/x/onecloud/pkg/mcclient"
)
@@ -363,9 +362,9 @@ func (man *SOpenstackCachedLbbgManager) newFromCloudLoadbalancerBackendgroup(ctx
lbbg := &SOpenstackCachedLbbg{}
lbbg.SetModelManager(man, lbbg)
region := lb.GetRegion()
if region == nil {
return nil, errors.Wrap(httperrors.ErrInvalidStatus, "loadbalancer is not attached to any region")
region, err := lb.GetRegion()
if err != nil {
return nil, err
}
lbbg.ManagerId = provider.Id
@@ -30,7 +30,6 @@ import (
"yunion.io/x/onecloud/pkg/cloudcommon/db"
"yunion.io/x/onecloud/pkg/cloudcommon/db/lockman"
"yunion.io/x/onecloud/pkg/cloudprovider"
"yunion.io/x/onecloud/pkg/httperrors"
"yunion.io/x/onecloud/pkg/mcclient"
)
@@ -321,9 +320,9 @@ func (man *SQcloudCachedLbbgManager) newFromCloudLoadbalancerBackendgroup(ctx co
lbbg := &SQcloudCachedLbbg{}
lbbg.SetModelManager(man, lbbg)
region := lb.GetRegion()
if region == nil {
return nil, errors.Wrap(httperrors.ErrInvalidStatus, "loadbalancer is not attached to any region")
region, err := lb.GetRegion()
if err != nil {
return nil, err
}
lbbg.ManagerId = provider.Id
lbbg.CloudregionId = region.Id
+26 -27
View File
@@ -54,29 +54,29 @@ func ValidateLoadbalancerResourceInput(userCred mcclient.TokenCredential, input
return lbObj.(*SLoadbalancer), input, nil
}
func (self *SLoadbalancerResourceBase) GetLoadbalancer() *SLoadbalancer {
w, _ := LoadbalancerManager.FetchById(self.LoadbalancerId)
if w != nil {
return w.(*SLoadbalancer)
func (self *SLoadbalancerResourceBase) GetLoadbalancer() (*SLoadbalancer, error) {
w, err := LoadbalancerManager.FetchById(self.LoadbalancerId)
if err != nil {
return nil, err
}
return nil
return w.(*SLoadbalancer), nil
}
func (self *SLoadbalancerResourceBase) GetVpc() *SVpc {
lb := self.GetLoadbalancer()
if lb != nil {
return lb.GetVpc()
func (self *SLoadbalancerResourceBase) GetVpc() (*SVpc, error) {
lb, err := self.GetLoadbalancer()
if err != nil {
return nil, err
}
return nil
return lb.GetVpc()
}
func (self *SLoadbalancerResourceBase) GetCloudprovider() *SCloudprovider {
vpc := self.GetVpc()
vpc, _ := self.GetVpc()
if vpc != nil {
return vpc.GetCloudprovider()
}
lb := self.GetLoadbalancer()
lb, _ := self.GetLoadbalancer()
if lb != nil {
return lb.GetCloudprovider()
}
@@ -93,7 +93,7 @@ func (self *SLoadbalancerResourceBase) GetCloudproviderId() string {
}
func (self *SLoadbalancerResourceBase) GetProviderName() string {
vpc := self.GetVpc()
vpc, _ := self.GetVpc()
if vpc != nil {
return vpc.GetProviderName()
}
@@ -101,36 +101,35 @@ func (self *SLoadbalancerResourceBase) GetProviderName() string {
}
func (self *SLoadbalancerResourceBase) GetCloudaccount() *SCloudaccount {
vpc := self.GetVpc()
vpc, _ := self.GetVpc()
if vpc != nil {
return vpc.GetCloudaccount()
}
return nil
}
func (self *SLoadbalancerResourceBase) GetRegion() *SCloudregion {
vpc := self.GetVpc()
if vpc == nil {
return nil
func (self *SLoadbalancerResourceBase) GetRegion() (*SCloudregion, error) {
vpc, err := self.GetVpc()
if err != nil {
return nil, err
}
region, _ := vpc.GetRegion()
return region
return vpc.GetRegion()
}
func (self *SLoadbalancerResourceBase) GetRegionId() string {
region := self.GetRegion()
region, _ := self.GetRegion()
if region != nil {
return region.Id
}
return ""
}
func (self *SLoadbalancerResourceBase) GetZone() *SZone {
lb := self.GetLoadbalancer()
if lb != nil {
return lb.GetZone()
func (self *SLoadbalancerResourceBase) GetZone() (*SZone, error) {
lb, err := self.GetLoadbalancer()
if err != nil {
return nil, err
}
return nil
return lb.GetZone()
}
func (manager *SLoadbalancerResourceBaseManager) FetchCustomizeColumns(
@@ -340,7 +339,7 @@ func (manager *SLoadbalancerResourceBaseManager) GetExportKeys() []string {
}
func (self *SLoadbalancerResourceBase) GetChangeOwnerCandidateDomainIds() []string {
lb := self.GetLoadbalancer()
lb, _ := self.GetLoadbalancer()
if lb != nil {
return lb.GetChangeOwnerCandidateDomainIds()
}
+26 -25
View File
@@ -420,22 +420,20 @@ func (lb *SLoadbalancer) GetCloudprovider() *SCloudprovider {
return lb.SManagedResourceBase.GetCloudprovider()
}
func (lb *SLoadbalancer) GetRegion() *SCloudregion {
return lb.SCloudregionResourceBase.GetRegion()
}
func (lb *SLoadbalancer) GetCloudproviderId() string {
return lb.SManagedResourceBase.GetCloudproviderId()
}
func (lb *SLoadbalancer) GetZone() *SZone {
zone, _ := lb.SZoneResourceBase.GetZone()
return zone
func (lb *SLoadbalancer) GetRegion() (*SCloudregion, error) {
return lb.SCloudregionResourceBase.GetRegion()
}
func (lb *SLoadbalancer) GetVpc() *SVpc {
vpc, _ := lb.SVpcResourceBase.GetVpc()
return vpc
func (lb *SLoadbalancer) GetVpc() (*SVpc, error) {
return lb.SVpcResourceBase.GetVpc()
}
func (lb *SLoadbalancer) GetZone() (*SZone, error) {
return lb.SZoneResourceBase.GetZone()
}
func (lb *SLoadbalancer) GetNetworks() ([]SNetwork, error) {
@@ -462,9 +460,9 @@ func (lb *SLoadbalancer) GetIRegion() (cloudprovider.ICloudRegion, error) {
if err != nil {
return nil, errors.Wrap(err, "lb.GetDriver")
}
region := lb.GetRegion()
if region == nil {
return nil, fmt.Errorf("failed to get region for lb %s", lb.Name)
region, err := lb.GetRegion()
if err != nil {
return nil, errors.Wrapf(err, "GetRegion")
}
return provider.GetIRegionById(region.ExternalId)
}
@@ -480,9 +478,9 @@ func (lb *SLoadbalancer) GetCreateLoadbalancerParams(iRegion cloudprovider.IClou
params.Tags, _ = lb.GetAllUserMetadata()
if len(lb.ZoneId) > 0 {
zone := lb.GetZone()
if zone == nil {
return nil, fmt.Errorf("failed to find zone for lb %s", lb.Name)
zone, err := lb.GetZone()
if err != nil {
return nil, err
}
iZone, err := iRegion.GetIZoneById(zone.ExternalId)
if err != nil {
@@ -507,10 +505,10 @@ func (lb *SLoadbalancer) GetCreateLoadbalancerParams(iRegion cloudprovider.IClou
params.EgressMbps = lb.EgressMbps
}
if lb.AddressType == api.LB_ADDR_TYPE_INTRANET || utils.IsInStringArray(lb.SManagedResourceBase.GetProviderName(), []string{api.CLOUD_PROVIDER_HUAWEI, api.CLOUD_PROVIDER_AWS, api.CLOUD_PROVIDER_QCLOUD}) {
vpc := lb.GetVpc()
if vpc == nil {
return nil, fmt.Errorf("failed to find vpc for lb %s", lb.Name)
if lb.AddressType == api.LB_ADDR_TYPE_INTRANET || utils.IsInStringArray(lb.SManagedResourceBase.GetProviderName(), []string{api.CLOUD_PROVIDER_HUAWEI_CLOUD_STACK, api.CLOUD_PROVIDER_HUAWEI, api.CLOUD_PROVIDER_AWS, api.CLOUD_PROVIDER_QCLOUD}) {
vpc, err := lb.GetVpc()
if err != nil {
return nil, err
}
iVpc, err := iRegion.GetIVpcById(vpc.ExternalId)
if err != nil {
@@ -519,7 +517,7 @@ func (lb *SLoadbalancer) GetCreateLoadbalancerParams(iRegion cloudprovider.IClou
params.VpcID = iVpc.GetId()
}
if lb.AddressType == api.LB_ADDR_TYPE_INTRANET || utils.IsInStringArray(lb.SManagedResourceBase.GetProviderName(), []string{api.CLOUD_PROVIDER_HUAWEI, api.CLOUD_PROVIDER_AWS}) {
if lb.AddressType == api.LB_ADDR_TYPE_INTRANET || utils.IsInStringArray(lb.SManagedResourceBase.GetProviderName(), []string{api.CLOUD_PROVIDER_HUAWEI_CLOUD_STACK, api.CLOUD_PROVIDER_HUAWEI, api.CLOUD_PROVIDER_AWS}) {
networks, err := lb.GetNetworks()
if err != nil {
return nil, fmt.Errorf("failed to find network for lb %s: %s", lb.Name, err)
@@ -722,7 +720,7 @@ func (lb *SLoadbalancer) ValidateDeleteCondition(ctx context.Context) error {
}
func (lb *SLoadbalancer) validatePurgeCondition(ctx context.Context) error {
region := lb.GetRegion()
region, _ := lb.GetRegion()
if region != nil {
if err := region.GetDriver().ValidateDeleteLoadbalancerCondition(ctx, lb); err != nil {
return err
@@ -1089,7 +1087,8 @@ func (self *SLoadbalancer) SyncLoadbalancerEip(ctx context.Context, userCred mcc
// do nothing
} else if eip == nil && extEip != nil {
// add
neip, err := ElasticipManager.getEipByExtEip(ctx, userCred, extEip, provider, self.GetRegion(), provider.GetOwnerId())
region, _ := self.GetRegion()
neip, err := ElasticipManager.getEipByExtEip(ctx, userCred, extEip, provider, region, provider.GetOwnerId())
if err != nil {
log.Errorf("getEipByExtEip error %v", err)
result.AddError(err)
@@ -1120,7 +1119,8 @@ func (self *SLoadbalancer) SyncLoadbalancerEip(ctx context.Context, userCred mcc
result.DeleteError(err)
} else {
result.Delete()
neip, err := ElasticipManager.getEipByExtEip(ctx, userCred, extEip, provider, self.GetRegion(), provider.GetOwnerId())
region, _ := self.GetRegion()
neip, err := ElasticipManager.getEipByExtEip(ctx, userCred, extEip, provider, region, provider.GetOwnerId())
if err != nil {
result.AddError(err)
} else {
@@ -1308,10 +1308,11 @@ func (man *SLoadbalancerManager) TotalCount(
}
func (lb *SLoadbalancer) GetQuotaKeys() quotas.IQuotaKeys {
region, _ := lb.GetRegion()
return fetchRegionalQuotaKeys(
rbacutils.ScopeProject,
lb.GetOwnerId(),
lb.GetRegion(),
region,
lb.GetCloudprovider(),
)
}
+58 -13
View File
@@ -17,7 +17,6 @@ package models
import (
"context"
"fmt"
"strings"
"time"
"yunion.io/x/jsonutils"
@@ -247,8 +246,9 @@ func (manager *SMongoDBManager) FetchCustomizeColumns(
manRows := manager.SManagedResourceBaseManager.FetchCustomizeColumns(ctx, userCred, query, objs, fields, isList)
regRows := manager.SCloudregionResourceBaseManager.FetchCustomizeColumns(ctx, userCred, query, objs, fields, isList)
rdsIds := make([]string, len(rows))
vpcIds := make([]string, len(rows))
netIds := make([]string, len(rows))
zoneIds := make([]string, len(rows))
for i := range rows {
rows[i] = api.MongoDBDetails{
VirtualResourceDetails: virtRows[i],
@@ -256,8 +256,9 @@ func (manager *SMongoDBManager) FetchCustomizeColumns(
CloudregionResourceInfo: regRows[i],
}
instance := objs[i].(*SMongoDB)
rdsIds[i] = instance.Id
vpcIds[i] = instance.VpcId
netIds[i] = instance.NetworkId
zoneIds[i] = instance.ZoneId
}
vpcs := make(map[string]SVpc)
@@ -268,11 +269,23 @@ func (manager *SMongoDBManager) FetchCustomizeColumns(
return rows
}
netMaps, err := db.FetchIdNameMap2(NetworkManager, netIds)
if err != nil {
return rows
}
zoneMaps, err := db.FetchIdNameMap2(ZoneManager, zoneIds)
if err != nil {
return rows
}
for i := range rows {
if vpc, ok := vpcs[vpcIds[i]]; ok {
rows[i].Vpc = vpc.Name
rows[i].VpcExtId = vpc.ExternalId
}
rows[i].Network, _ = netMaps[netIds[i]]
rows[i].Zone, _ = zoneMaps[zoneIds[i]]
}
return rows
@@ -477,6 +490,40 @@ func (self *SMongoDB) SyncWithCloudMongoDB(ctx context.Context, userCred mcclien
self.MaintainTime = ext.GetMaintainTime()
self.Status = ext.GetStatus()
self.Port = ext.GetPort()
if vpcId := ext.GetVpcId(); len(vpcId) > 0 {
vpc, err := db.FetchByExternalIdAndManagerId(VpcManager, vpcId, func(q *sqlchemy.SQuery) *sqlchemy.SQuery {
return q.Equals("manager_id", self.ManagerId)
})
if err != nil {
log.Errorf("FetchVpcId(%s) error: %v", vpcId, err)
} else {
self.VpcId = vpc.GetId()
}
}
if networkId := ext.GetNetworkId(); len(networkId) > 0 {
network, err := db.FetchByExternalIdAndManagerId(NetworkManager, networkId, func(q *sqlchemy.SQuery) *sqlchemy.SQuery {
wire := WireManager.Query().SubQuery()
vpc := VpcManager.Query().SubQuery()
return q.Join(wire, sqlchemy.Equals(wire.Field("id"), q.Field("wire_id"))).
Join(vpc, sqlchemy.Equals(vpc.Field("id"), wire.Field("vpc_id"))).
Filter(sqlchemy.Equals(vpc.Field("manager_id"), self.ManagerId))
})
if err == nil {
self.NetworkId = network.GetId()
}
}
if zoneId := ext.GetZoneId(); len(zoneId) > 0 {
zone, err := self.GetZoneBySuffix(zoneId)
if err != nil {
log.Errorf("find zone %s error: %v", zoneId, err)
} else {
self.ZoneId = zone.Id
}
}
return nil
})
if err != nil {
@@ -511,12 +558,9 @@ func (self *SCloudregion) newFromCloudMongoDB(ctx context.Context, userCred mccl
ins.ReplicationNum = ext.GetReplicationNum()
if zoneId := ext.GetZoneId(); len(zoneId) > 0 {
zones, _ := self.GetZones()
for _, zone := range zones {
if strings.HasSuffix(zone.ExternalId, zoneId) {
ins.ZoneId = zone.Id
break
}
zone, err := self.GetZoneBySuffix(zoneId)
if err == nil {
ins.ZoneId = zone.Id
}
}
@@ -609,10 +653,11 @@ func (man *SMongoDBManager) TotalCount(
}
func (self *SMongoDB) GetQuotaKeys() quotas.IQuotaKeys {
region, _ := self.GetRegion()
return fetchRegionalQuotaKeys(
rbacutils.ScopeProject,
self.GetOwnerId(),
self.GetRegion(),
region,
self.GetCloudprovider(),
)
}
@@ -630,9 +675,9 @@ func (self *SMongoDB) GetUsages() []db.IUsage {
}
func (self *SMongoDB) GetIRegion() (cloudprovider.ICloudRegion, error) {
region := self.GetRegion()
if region == nil {
return nil, errors.Wrap(httperrors.ErrInvalidStatus, "no valid cloudregion")
region, err := self.GetRegion()
if err != nil {
return nil, err
}
provider, err := self.GetDriver()
if err != nil {
+1 -1
View File
@@ -362,7 +362,7 @@ func (self *SMountTarget) ValidateDeleteCondition(ctx context.Context) error {
if err != nil {
return httperrors.NewGeneralError(errors.Wrapf(err, "GetRegion"))
}
if region.Provider == api.CLOUD_PROVIDER_HUAWEI {
if utils.IsInStringArray(region.Provider, []string{api.CLOUD_PROVIDER_HUAWEI, api.CLOUD_PROVIDER_HUAWEI_CLOUD_STACK}) {
return httperrors.NewNotSupportedError("not allow to delete")
}
return self.SStatusStandaloneResourceBase.ValidateDeleteCondition(ctx)
+2 -2
View File
@@ -551,7 +551,7 @@ func (lbbg *SLoadbalancerBackendGroup) purgeCachedlbbg(ctx context.Context, user
switch lbbg.GetProviderName() {
case api.CLOUD_PROVIDER_AWS:
return lbbg.purgeAwsCachedlbbg(ctx, userCred)
case api.CLOUD_PROVIDER_HUAWEI:
case api.CLOUD_PROVIDER_HUAWEI, api.CLOUD_PROVIDER_HUAWEI_CLOUD_STACK:
return lbbg.purgeHuaweiCachedlbbg(ctx, userCred)
}
@@ -632,7 +632,7 @@ func (lbb *SLoadbalancerBackend) purgeCachedlbb(ctx context.Context, userCred mc
switch lbb.GetProviderName() {
case api.CLOUD_PROVIDER_AWS:
return lbb.purgeAwsCachedlbb(ctx, userCred)
case api.CLOUD_PROVIDER_HUAWEI:
case api.CLOUD_PROVIDER_HUAWEI, api.CLOUD_PROVIDER_HUAWEI_CLOUD_STACK:
return lbb.purgeHuaweiCachedlbb(ctx, userCred)
}
+3 -3
View File
@@ -806,9 +806,9 @@ func (self *SSecurityGroupCache) GetSecuritRuleSet() (cloudprovider.SecurityRule
}
func (self *SSecurityGroupCache) SyncRules() error {
region := self.GetRegion()
if region == nil {
return fmt.Errorf("failed to get region for secgroupcache %s(%s)", self.Name, self.Id)
region, err := self.GetRegion()
if err != nil {
return err
}
iSecgroup, err := self.GetISecurityGroup()
if err != nil {
+1 -8
View File
@@ -400,14 +400,6 @@ func (self *SServerSku) GetPrivateCloudproviders() ([]SCloudprovider, error) {
return providers, nil
}
func (self *SServerSku) GetRegion() (*SCloudregion, error) {
regionObj, err := CloudregionManager.FetchById(self.CloudregionId)
if err != nil {
return nil, err
}
return regionObj.(*SCloudregion), nil
}
func (self *SServerSkuManager) ClearSchedDescCache(wait bool) error {
s := auth.GetAdminSession(context.Background(), options.Options.Region, "")
_, err := modules.SchedManager.SyncSku(s, true)
@@ -1091,6 +1083,7 @@ func (self *SServerSku) constructSku(extSku cloudprovider.ICloudSku) {
self.PrepaidStatus = extSku.GetPrepaidStatus()
self.PostpaidStatus = extSku.GetPostpaidStatus()
self.CpuArch = extSku.GetCpuArch()
self.CpuCoreCount = extSku.GetCpuCoreCount()
self.MemorySizeMB = extSku.GetMemorySizeMB()
+14 -17
View File
@@ -355,9 +355,9 @@ func (manager *SSnapshotManager) ValidateCreateData(
input.StorageId = disk.StorageId
}
input.ManagerId = storage.ManagerId
region, _ := storage.GetRegion()
if region == nil {
return input, httperrors.NewInputParameterError("failed to found region for disk's storage %s(%s)", storage.Name, storage.Id)
region, err := storage.GetRegion()
if err != nil {
return input, err
}
input.CloudregionId = region.Id
@@ -641,7 +641,7 @@ func (self *SSnapshot) GetStorageType() string {
}
func (self *SSnapshot) GetRegionDriver() IRegionDriver {
cloudRegion := self.GetRegion()
cloudRegion, _ := self.GetRegion()
if cloudRegion != nil {
return cloudRegion.GetDriver()
}
@@ -1003,19 +1003,15 @@ func (manager *SSnapshotManager) SyncSnapshots(ctx context.Context, userCred mcc
return syncResult
}
func (self *SSnapshot) GetRegion() *SCloudregion {
return CloudregionManager.FetchRegionById(self.CloudregionId)
}
func (self *SSnapshot) GetISnapshotRegion() (cloudprovider.ICloudRegion, error) {
provider, err := self.GetDriver()
if err != nil {
return nil, err
}
region := self.GetRegion()
if region == nil {
return nil, fmt.Errorf("fail to find region for snapshot")
region, err := self.GetRegion()
if err != nil {
return nil, err
}
return provider.GetIRegionById(region.GetExternalId())
}
@@ -1040,7 +1036,7 @@ func (self *SSnapshot) PerformPurge(ctx context.Context, userCred mcclient.Token
}
func (self *SSnapshot) getCloudProviderInfo() SCloudProviderInfo {
region := self.GetRegion()
region, _ := self.GetRegion()
provider := self.GetCloudprovider()
return MakeCloudProviderInfo(region, nil, provider)
}
@@ -1066,7 +1062,7 @@ func (manager *SSnapshotManager) CleanupSnapshots(ctx context.Context, userCred
}
snapshot.SetModelManager(manager, snapshot)
region := snapshot.GetRegion()
region, _ := snapshot.GetRegion()
if err = manager.StartSnapshotCleanupTask(ctx, userCred, region, now); err != nil {
log.Errorf("Start snaphsot cleanup task failed %s", err)
return
@@ -1087,12 +1083,13 @@ func (manager *SSnapshotManager) StartSnapshotCleanupTask(
return nil
}
func (snapshot *SSnapshot) GetQuotaKeys() quotas.IQuotaKeys {
func (self *SSnapshot) GetQuotaKeys() quotas.IQuotaKeys {
region, _ := self.GetRegion()
return fetchRegionalQuotaKeys(
rbacutils.ScopeProject,
snapshot.GetOwnerId(),
snapshot.GetRegion(),
snapshot.GetCloudprovider(),
self.GetOwnerId(),
region,
self.GetCloudprovider(),
)
}
+4 -4
View File
@@ -145,11 +145,11 @@ func (self *SStoragecache) GetHost() (*SHost, error) {
func (self *SStoragecache) GetRegion() (*SCloudregion, error) {
host, err := self.GetHost()
if err != nil {
return nil, err
return nil, errors.Wrapf(err, "GetHost")
}
region, _ := host.GetRegion()
if region == nil {
return nil, fmt.Errorf("failed to get region for host %s(%s)", host.Name, host.Id)
region, err := host.GetRegion()
if err != nil {
return nil, errors.Wrapf(err, "GetRegion")
}
return region, nil
}
-8
View File
@@ -385,14 +385,6 @@ func (self *SWafInstance) syncRemove(ctx context.Context, userCred mcclient.Toke
return self.RealDelete(ctx, userCred)
}
func (self *SWafInstance) GetRegion() (*SCloudregion, error) {
region, err := CloudregionManager.FetchById(self.CloudregionId)
if err != nil {
return nil, errors.Wrapf(err, "CloudregionManager.FetchById")
}
return region.(*SCloudregion), nil
}
func (self *SWafInstance) GetIRegion() (cloudprovider.ICloudRegion, error) {
region, err := self.GetRegion()
if err != nil {
-8
View File
@@ -213,14 +213,6 @@ func (self *SWafIPSetCache) StartDeleteTask(ctx context.Context, userCred mcclie
return task.ScheduleRun(nil)
}
func (self *SWafIPSetCache) GetRegion() (*SCloudregion, error) {
region, err := CloudregionManager.FetchById(self.CloudregionId)
if err != nil {
return nil, errors.Wrapf(err, "CloudregionManager.FetchById")
}
return region.(*SCloudregion), nil
}
func (self *SWafIPSetCache) GetIRegion() (cloudprovider.ICloudRegion, error) {
region, err := self.GetRegion()
if err != nil {
@@ -213,14 +213,6 @@ func (self *SWafRegexSetCache) StartDeleteTask(ctx context.Context, userCred mcc
return task.ScheduleRun(nil)
}
func (self *SWafRegexSetCache) GetRegion() (*SCloudregion, error) {
region, err := CloudregionManager.FetchById(self.CloudregionId)
if err != nil {
return nil, errors.Wrapf(err, "CloudregionManager.FetchById")
}
return region.(*SCloudregion), nil
}
func (self *SWafRegexSetCache) GetIRegion() (cloudprovider.ICloudRegion, error) {
region, err := self.GetRegion()
if err != nil {
@@ -213,14 +213,6 @@ func (self *SWafRuleGroupCache) StartDeleteTask(ctx context.Context, userCred mc
return task.ScheduleRun(nil)
}
func (self *SWafRuleGroupCache) GetRegion() (*SCloudregion, error) {
region, err := CloudregionManager.FetchById(self.CloudregionId)
if err != nil {
return nil, errors.Wrapf(err, "CloudregionManager.FetchById")
}
return region.(*SCloudregion), nil
}
func (self *SWafRuleGroupCache) GetIRegion() (cloudprovider.ICloudRegion, error) {
region, err := self.GetRegion()
if err != nil {
+1 -1
View File
@@ -86,7 +86,7 @@ func (manager *SZoneManager) AllowListItems(ctx context.Context, userCred mcclie
func (zone *SZone) ValidateDeleteCondition(ctx context.Context) error {
usage := zone.GeneralUsage()
if !usage.IsEmpty() {
return httperrors.NewNotEmptyError("not empty zone")
return httperrors.NewNotEmptyError("not empty zone: %s", zone.Id)
}
return zone.SStandaloneResourceBase.ValidateDeleteCondition(ctx)
}
+7 -7
View File
@@ -303,7 +303,7 @@ func (self *SAliyunRegionDriver) ValidateCreateLoadbalancerBackendData(ctx conte
}
hostRegion, _ := host.GetRegion()
lbRegion := lb.GetRegion()
lbRegion, _ := lb.GetRegion()
if hostRegion.Id != lbRegion.Id {
return nil, httperrors.NewInputParameterError("region of host %q (%s) != region of loadbalancer %q (%s))",
host.Name, host.ZoneId, lb.Name, lb.ZoneId)
@@ -611,7 +611,7 @@ func (self *SAliyunRegionDriver) ValidateCreateLoadbalancerListenerData(ctx cont
}
// check scheduler limiations
cloudregion := lb.GetRegion()
cloudregion, _ := lb.GetRegion()
if cloudregion == nil {
return nil, httperrors.NewResourceNotFoundError("failed to find loadbalancer's %s(%s) region", lb.Name, lb.Id)
}
@@ -707,9 +707,9 @@ func (self *SAliyunRegionDriver) ValidateUpdateLoadbalancerListenerData(ctx cont
listenerType, _ := data.GetString("listener_type")
lb := lblis.GetLoadbalancer()
if lb == nil {
return nil, httperrors.NewInternalServerError("failed to found loadbalancer for listener %s(%s)", lblis.Name, lblis.Id)
lb, err := lblis.GetLoadbalancer()
if err != nil {
return nil, err
}
egressMbps := 5000
@@ -748,7 +748,7 @@ func (self *SAliyunRegionDriver) ValidateUpdateLoadbalancerListenerData(ctx cont
if len(lb.LoadbalancerSpec) == 0 {
return nil, httperrors.NewInputParameterError("The specified Scheduler %s is invalid for performance sharing loadbalancer", scheduler)
}
cloudregion := lb.GetRegion()
cloudregion, _ := lb.GetRegion()
if cloudregion == nil {
return nil, httperrors.NewResourceNotFoundError("failed to find loadbalancer's %s(%s) region", lb.Name, lb.Id)
}
@@ -810,7 +810,7 @@ func (self *SAliyunRegionDriver) ValidateUpdateLoadbalancerListenerData(ctx cont
}
}
lb := backendgroup.GetLoadbalancer()
lb, _ := backendgroup.GetLoadbalancer()
if tlsCipherPolicy, _ := data.GetString("tls_cipher_policy"); len(tlsCipherPolicy) > 0 && len(lb.LoadbalancerSpec) == 0 {
data.Set("tls_cipher_policy", jsonutils.NewString(""))
}
+27 -27
View File
@@ -565,9 +565,9 @@ func (self *SAwsRegionDriver) validateUpdateNetworkListenerData(ctx context.Cont
func (self *SAwsRegionDriver) ValidateUpdateLoadbalancerListenerData(ctx context.Context, userCred mcclient.TokenCredential, data *jsonutils.JSONDict, lblis *models.SLoadbalancerListener, backendGroup db.IModel) (*jsonutils.JSONDict, error) {
ownerId := lblis.GetOwnerId()
lb := lblis.GetLoadbalancer()
if lb == nil {
return nil, httperrors.NewResourceNotFoundError("loadbalancer listener %s related loadbalancer %s not found", lblis.Id, lblis.LoadbalancerId)
lb, err := lblis.GetLoadbalancer()
if err != nil {
return nil, err
}
if lb.LoadbalancerSpec == api.LB_AWS_SPEC_APPLICATION {
@@ -898,13 +898,13 @@ func (self *SAwsRegionDriver) RequestCreateLoadbalancerBackendGroup(ctx context.
func (self *SAwsRegionDriver) RequestCreateLoadbalancerBackend(ctx context.Context, userCred mcclient.TokenCredential, lbb *models.SLoadbalancerBackend, task taskman.ITask) error {
taskman.LocalTaskRun(task, func() (jsonutils.JSONObject, error) {
lbbg := lbb.GetLoadbalancerBackendGroup()
if lbbg == nil {
return nil, fmt.Errorf("failed to find lbbg for backend %s", lbb.Name)
lbbg, err := lbb.GetLoadbalancerBackendGroup()
if err != nil {
return nil, err
}
lb := lbbg.GetLoadbalancer()
if lb == nil {
return nil, fmt.Errorf("failed to find lb for backendgroup %s", lbbg.Name)
lb, err := lbbg.GetLoadbalancer()
if err != nil {
return nil, err
}
cachedlbbgs, err := models.AwsCachedLbbgManager.GetCachedBackendGroups(lbbg.GetId())
@@ -1004,9 +1004,9 @@ func (self *SAwsRegionDriver) RequestDeleteLoadbalancerBackend(ctx context.Conte
func (self *SAwsRegionDriver) RequestCreateLoadbalancerListener(ctx context.Context, userCred mcclient.TokenCredential, lblis *models.SLoadbalancerListener, task taskman.ITask) error {
taskman.LocalTaskRun(task, func() (jsonutils.JSONObject, error) {
loadbalancer := lblis.GetLoadbalancer()
if loadbalancer == nil {
return nil, fmt.Errorf("failed to find loadbalancer for lblis %s", lblis.Name)
loadbalancer, err := lblis.GetLoadbalancer()
if err != nil {
return nil, err
}
{
@@ -1109,13 +1109,13 @@ func (self *SAwsRegionDriver) RequestCreateLoadbalancerListener(ctx context.Cont
func (self *SAwsRegionDriver) RequestCreateLoadbalancerListenerRule(ctx context.Context, userCred mcclient.TokenCredential, lbr *models.SLoadbalancerListenerRule, task taskman.ITask) error {
taskman.LocalTaskRun(task, func() (jsonutils.JSONObject, error) {
listener := lbr.GetLoadbalancerListener()
if listener == nil {
return nil, fmt.Errorf("failed to find listener for listnener rule %s", lbr.Name)
listener, err := lbr.GetLoadbalancerListener()
if err != nil {
return nil, err
}
loadbalancer := listener.GetLoadbalancer()
if loadbalancer == nil {
return nil, fmt.Errorf("failed to find loadbalancer for listener %s", listener.Name)
loadbalancer, err := listener.GetLoadbalancer()
if err != nil {
return nil, err
}
iRegion, err := loadbalancer.GetIRegion()
if err != nil {
@@ -1164,9 +1164,9 @@ func (self *SAwsRegionDriver) RequestDeleteLoadbalancerBackendGroup(ctx context.
if err != nil {
return nil, errors.Wrap(err, "AwsRegionDriver.RequestDeleteLoadbalancerBackendGroup.GetIRegion")
}
loadbalancer := lbbg.GetLoadbalancer()
if loadbalancer == nil {
return nil, fmt.Errorf("failed to find loadbalancer for backendgroup %s", lbbg.Name)
loadbalancer, err := lbbg.GetLoadbalancer()
if err != nil {
return nil, err
}
iLoadbalancer, err := iRegion.GetILoadBalancerById(loadbalancer.ExternalId)
if err != nil {
@@ -1355,9 +1355,9 @@ func (self *SAwsRegionDriver) RequestSyncLoadbalancerListener(ctx context.Contex
if err != nil {
return nil, errors.Wrap(err, "awsRegionDriver.RequestSyncLoadbalancerListener.GetAwsLoadbalancerListenerParams")
}
loadbalancer := lblis.GetLoadbalancer()
if loadbalancer == nil {
return nil, fmt.Errorf("failed to find loadbalancer for lblis %s", lblis.Name)
loadbalancer, err := lblis.GetLoadbalancer()
if err != nil {
return nil, err
}
iRegion, err := loadbalancer.GetIRegion()
if err != nil {
@@ -1389,9 +1389,9 @@ func (self *SAwsRegionDriver) RequestSyncLoadbalancerBackendGroup(ctx context.Co
return errors.Wrap(err, "AwsRegionDriver.RequestSyncLoadbalancerBackendGroup.GetLoadbalancerBackendGroup")
}
lb := lblis.GetLoadbalancer()
if lb == nil {
return errors.Wrap(fmt.Errorf("listener %s related loadbalancer not found", lblis.GetId()), "AwsRegionDriver.RequestSyncLoadbalancerBackendGroup.GetLoadbalancer")
lb, err := lblis.GetLoadbalancer()
if err != nil {
return err
}
cachedLbbg, err := models.AwsCachedLbbgManager.GetUsableCachedBackendGroup(lb.GetId(), lblis.BackendGroupId, lblis.ListenerType, lblis.HealthCheckType, lblis.HealthCheckInterval)
+3 -1
View File
@@ -259,7 +259,9 @@ func (self *SGoogleRegionDriver) RequestCreateDBInstanceBackup(ctx context.Conte
return nil, errors.Wrap(err, "iRds.GetIDBInstanceBackups")
}
result := models.DBInstanceBackupManager.SyncDBInstanceBackups(ctx, userCred, backup.GetCloudprovider(), instance, backup.GetRegion(), backups)
region, _ := backup.GetRegion()
result := models.DBInstanceBackupManager.SyncDBInstanceBackups(ctx, userCred, backup.GetCloudprovider(), instance, region, backups)
log.Infof("SyncDBInstanceBackups for dbinstance %s(%s) result: %s", instance.Name, instance.Id, result.Result())
instance.SetStatus(userCred, api.DBINSTANCE_RUNNING, "")
return nil, nil
+31 -30
View File
@@ -663,9 +663,9 @@ func (self *SHuaWeiRegionDriver) createLoadbalancerBackendGroup(ctx context.Cont
if err != nil {
return nil, err
}
lb := lbbg.GetLoadbalancer()
if lb == nil {
return nil, fmt.Errorf("failed to find loadbalancer for backendgroup %s", lbbg.Name)
lb, err := lbbg.GetLoadbalancer()
if err != nil {
return nil, err
}
iLoadbalancer, err := iRegion.GetILoadBalancerById(lb.ExternalId)
if err != nil {
@@ -725,7 +725,7 @@ func (self *SHuaWeiRegionDriver) RequestCreateLoadbalancerBackendGroup(ctx conte
}
rule = _rule.(*models.SLoadbalancerListenerRule)
listener = rule.GetLoadbalancerListener()
listener, _ = rule.GetLoadbalancerListener()
} else {
_listener, err := db.FetchById(models.LoadbalancerListenerManager, listenerId)
if err != nil {
@@ -898,7 +898,7 @@ func (self *SHuaWeiRegionDriver) RequestSyncLoadbalancerBackendGroup(ctx context
return nil, err
}
lb := lbbg.GetLoadbalancer()
lb, _ := lbbg.GetLoadbalancer()
ilb, err := iRegion.GetILoadBalancerById(lb.GetExternalId())
if err != nil {
return nil, err
@@ -1230,9 +1230,9 @@ func (self *SHuaWeiRegionDriver) RequestCreateLoadbalancerListener(ctx context.C
if err != nil {
return nil, errors.Wrap(err, "huaweiRegionDriver.RequestCreateLoadbalancerListener.GetHuaweiLoadbalancerListenerParams")
}
loadbalancer := lblis.GetLoadbalancer()
if loadbalancer == nil {
return nil, fmt.Errorf("failed to find loadbalancer for lblis %s", lblis.Name)
loadbalancer, err := lblis.GetLoadbalancer()
if err != nil {
return nil, err
}
iRegion, err := loadbalancer.GetIRegion()
if err != nil {
@@ -1375,9 +1375,9 @@ func (self *SHuaWeiRegionDriver) RequestSyncLoadbalancerListener(ctx context.Con
if err != nil {
return nil, err
}
loadbalancer := lblis.GetLoadbalancer()
if loadbalancer == nil {
return nil, fmt.Errorf("failed to find loadbalancer for lblis %s", lblis.Name)
loadbalancer, err := lblis.GetLoadbalancer()
if err != nil {
return nil, err
}
iRegion, err := loadbalancer.GetIRegion()
if err != nil {
@@ -1617,9 +1617,9 @@ func (self *SHuaWeiRegionDriver) RequestDeleteLoadbalancerListener(ctx context.C
if jsonutils.QueryBoolean(task.GetParams(), "purge", false) {
return nil, nil
}
loadbalancer := lblis.GetLoadbalancer()
if loadbalancer == nil {
return nil, fmt.Errorf("failed to find loadbalancer for lblis %s", lblis.Name)
loadbalancer, err := lblis.GetLoadbalancer()
if err != nil {
return nil, err
}
iRegion, err := loadbalancer.GetIRegion()
if err != nil {
@@ -1745,9 +1745,9 @@ func (self *SHuaWeiRegionDriver) RequestDeleteLoadbalancerBackendGroup(ctx conte
if err != nil {
return nil, errors.Wrap(err, "huaweiRegionDriver.RequestDeleteLoadbalancerBackendGroup.")
}
loadbalancer := lbbg.GetLoadbalancer()
if loadbalancer == nil {
return nil, fmt.Errorf("failed to find loadbalancer for backendgroup %s", lbbg.Name)
loadbalancer, err := lbbg.GetLoadbalancer()
if err != nil {
return nil, err
}
iLoadbalancer, err := iRegion.GetILoadBalancerById(loadbalancer.ExternalId)
if err != nil {
@@ -1923,7 +1923,8 @@ func (self *SHuaWeiRegionDriver) RequestCreateLoadbalancer(ctx context.Context,
}
}
if err := lb.SyncWithCloudLoadbalancer(ctx, userCred, iLoadbalancer, nil, lb.GetCloudprovider(), lb.GetRegion()); err != nil {
region, _ := lb.GetRegion()
if err := lb.SyncWithCloudLoadbalancer(ctx, userCred, iLoadbalancer, nil, lb.GetCloudprovider(), region); err != nil {
return nil, errors.Wrap(err, "Huawei.RequestCreateLoadbalancer.SyncWithCloudLoadbalancer")
}
lbbgs, err := iLoadbalancer.GetILoadBalancerBackendGroups()
@@ -2020,13 +2021,13 @@ func (self *SHuaWeiRegionDriver) RequestSyncLoadbalancerBackend(ctx context.Cont
func (self *SHuaWeiRegionDriver) RequestCreateLoadbalancerBackend(ctx context.Context, userCred mcclient.TokenCredential, lbb *models.SLoadbalancerBackend, task taskman.ITask) error {
taskman.LocalTaskRun(task, func() (jsonutils.JSONObject, error) {
lbbg := lbb.GetLoadbalancerBackendGroup()
if lbbg == nil {
return nil, fmt.Errorf("failed to find lbbg for backend %s", lbb.Name)
lbbg, err := lbb.GetLoadbalancerBackendGroup()
if err != nil {
return nil, err
}
lb := lbbg.GetLoadbalancer()
if lb == nil {
return nil, fmt.Errorf("failed to find lb for backendgroup %s", lbbg.Name)
lb, err := lbbg.GetLoadbalancer()
if err != nil {
return nil, err
}
cachedlbbgs, err := models.HuaweiCachedLbbgManager.GetCachedBackendGroups(lbbg.GetId())
@@ -2077,13 +2078,13 @@ func (self *SHuaWeiRegionDriver) RequestCreateLoadbalancerBackend(ctx context.Co
func (self *SHuaWeiRegionDriver) RequestCreateLoadbalancerListenerRule(ctx context.Context, userCred mcclient.TokenCredential, lbr *models.SLoadbalancerListenerRule, task taskman.ITask) error {
taskman.LocalTaskRun(task, func() (jsonutils.JSONObject, error) {
listener := lbr.GetLoadbalancerListener()
if listener == nil {
return nil, fmt.Errorf("failed to find listener for listnener rule %s", lbr.Name)
listener, err := lbr.GetLoadbalancerListener()
if err != nil {
return nil, err
}
loadbalancer := listener.GetLoadbalancer()
if loadbalancer == nil {
return nil, fmt.Errorf("failed to find loadbalancer for listener %s", listener.Name)
loadbalancer, err := listener.GetLoadbalancer()
if err != nil {
return nil, err
}
iRegion, err := loadbalancer.GetIRegion()
if err != nil {
+4
View File
@@ -17,3 +17,7 @@ func init() {
func (self *SHuaweiCloudStackRegionDriver) GetProvider() string {
return api.CLOUD_PROVIDER_HUAWEI_CLOUD_STACK
}
func (self *SHuaweiCloudStackRegionDriver) IsSupportedElasticcache() bool {
return false
}
+2 -2
View File
@@ -239,7 +239,7 @@ func (self *SKVMRegionDriver) ValidateCreateLoadbalancerBackendData(ctx context.
return nil, httperrors.NewInputParameterError("error loadbalancer of backend group %s", backendGroup.GetId())
}
var (
lbRegion = lb.GetRegion()
lbRegion, _ = lb.GetRegion()
hostRegion, _ = host.GetRegion()
)
if lbRegion.Id != hostRegion.Id {
@@ -408,7 +408,7 @@ func (self *SKVMRegionDriver) ValidateUpdateLoadbalancerListenerRuleData(ctx con
if redirectType != api.LB_REDIRECT_OFF {
if redirectType == api.LB_REDIRECT_RAW {
var (
lblis = lbr.GetLoadbalancerListener()
lblis, _ = lbr.GetLoadbalancerListener()
listenerType = lblis.ListenerType
)
scheme, host, path := redirectSchemeV.Value, redirectHostV.Value, redirectPathV.Value
+66 -56
View File
@@ -92,7 +92,7 @@ func (self *SManagedVirtualizationRegionDriver) ValidateCreateLoadbalancerBacken
return nil, fmt.Errorf("error loadbalancer of backend group %s", backendGroup.GetId())
}
hostRegion, _ := host.GetRegion()
lbRegion := lb.GetRegion()
lbRegion, _ := lb.GetRegion()
if hostRegion.Id != lbRegion.Id {
return nil, httperrors.NewInputParameterError("region of host %q (%s) != region of loadbalancer %q (%s))",
host.Name, host.ZoneId, lb.Name, lb.ZoneId)
@@ -242,7 +242,8 @@ func (self *SManagedVirtualizationRegionDriver) RequestCreateLoadbalancer(ctx co
if err := db.SetExternalId(lb, userCred, iLoadbalancer.GetGlobalId()); err != nil {
return nil, err
}
if err := lb.SyncWithCloudLoadbalancer(ctx, userCred, iLoadbalancer, nil, lb.GetCloudprovider(), lb.GetRegion()); err != nil {
region, _ := lb.GetRegion()
if err := lb.SyncWithCloudLoadbalancer(ctx, userCred, iLoadbalancer, nil, lb.GetCloudprovider(), region); err != nil {
return nil, err
}
//公网lb,需要同步public ip
@@ -567,9 +568,9 @@ func (self *SManagedVirtualizationRegionDriver) RequestCreateLoadbalancerBackend
if err != nil {
return nil, err
}
loadbalancer := lbbg.GetLoadbalancer()
if loadbalancer == nil {
return nil, fmt.Errorf("failed to find loadbalancer for backendgroup %s", lbbg.Name)
loadbalancer, err := lbbg.GetLoadbalancer()
if err != nil {
return nil, err
}
iLoadbalancer, err := iRegion.GetILoadBalancerById(loadbalancer.ExternalId)
if err != nil {
@@ -612,9 +613,9 @@ func (self *SManagedVirtualizationRegionDriver) RequestDeleteLoadbalancerBackend
if err != nil {
return nil, err
}
loadbalancer := lbbg.GetLoadbalancer()
if loadbalancer == nil {
return nil, fmt.Errorf("failed to find loadbalancer for backendgroup %s", lbbg.Name)
loadbalancer, err := lbbg.GetLoadbalancer()
if err != nil {
return nil, err
}
iLoadbalancer, err := iRegion.GetILoadBalancerById(loadbalancer.ExternalId)
if err != nil {
@@ -662,13 +663,13 @@ func (self *SManagedVirtualizationRegionDriver) RequestPullLoadbalancerBackendGr
func (self *SManagedVirtualizationRegionDriver) RequestCreateLoadbalancerBackend(ctx context.Context, userCred mcclient.TokenCredential, lbb *models.SLoadbalancerBackend, task taskman.ITask) error {
taskman.LocalTaskRun(task, func() (jsonutils.JSONObject, error) {
lbbg := lbb.GetLoadbalancerBackendGroup()
if lbbg == nil {
return nil, fmt.Errorf("failed to find lbbg for backend %s", lbb.Name)
lbbg, err := lbb.GetLoadbalancerBackendGroup()
if err != nil {
return nil, err
}
lb := lbbg.GetLoadbalancer()
if lb == nil {
return nil, fmt.Errorf("failed to find lb for backendgroup %s", lbbg.Name)
lb, err := lbbg.GetLoadbalancer()
if err != nil {
return nil, err
}
iRegion, err := lb.GetIRegion()
if err != nil {
@@ -703,13 +704,13 @@ func (self *SManagedVirtualizationRegionDriver) RequestDeleteLoadbalancerBackend
if jsonutils.QueryBoolean(task.GetParams(), "purge", false) {
return nil, nil
}
lbbg := lbb.GetLoadbalancerBackendGroup()
if lbbg == nil {
return nil, fmt.Errorf("failed to find lbbg for backend %s", lbb.Name)
lbbg, err := lbb.GetLoadbalancerBackendGroup()
if err != nil {
return nil, err
}
lb := lbbg.GetLoadbalancer()
if lb == nil {
return nil, fmt.Errorf("failed to find lb for backendgroup %s", lbbg.Name)
lb, err := lbbg.GetLoadbalancer()
if err != nil {
return nil, err
}
iRegion, err := lb.GetIRegion()
if err != nil {
@@ -742,13 +743,13 @@ func (self *SManagedVirtualizationRegionDriver) RequestDeleteLoadbalancerBackend
func (self *SManagedVirtualizationRegionDriver) RequestSyncLoadbalancerBackend(ctx context.Context, userCred mcclient.TokenCredential, lbb *models.SLoadbalancerBackend, task taskman.ITask) error {
taskman.LocalTaskRun(task, func() (jsonutils.JSONObject, error) {
lbbg := lbb.GetLoadbalancerBackendGroup()
if lbbg == nil {
return nil, fmt.Errorf("failed to find lbbg for backend %s", lbb.Name)
lbbg, err := lbb.GetLoadbalancerBackendGroup()
if err != nil {
return nil, err
}
lb := lbbg.GetLoadbalancer()
if lb == nil {
return nil, fmt.Errorf("failed to find lb for backendgroup %s", lbbg.Name)
lb, err := lbbg.GetLoadbalancer()
if err != nil {
return nil, err
}
iRegion, err := lb.GetIRegion()
if err != nil {
@@ -859,9 +860,9 @@ func (self *SManagedVirtualizationRegionDriver) RequestCreateLoadbalancerListene
if err != nil {
return nil, errors.Wrapf(err, "lblis.GetLoadbalancerListenerParams")
}
loadbalancer := lblis.GetLoadbalancer()
if loadbalancer == nil {
return nil, fmt.Errorf("failed to find loadbalancer for lblis %s", lblis.Name)
loadbalancer, err := lblis.GetLoadbalancer()
if err != nil {
return nil, err
}
iRegion, err := loadbalancer.GetIRegion()
if err != nil {
@@ -888,9 +889,9 @@ func (self *SManagedVirtualizationRegionDriver) RequestDeleteLoadbalancerListene
if jsonutils.QueryBoolean(task.GetParams(), "purge", false) {
return nil, nil
}
loadbalancer := lblis.GetLoadbalancer()
if loadbalancer == nil {
return nil, fmt.Errorf("failed to find loadbalancer for lblis %s", lblis.Name)
loadbalancer, err := lblis.GetLoadbalancer()
if err != nil {
return nil, err
}
iRegion, err := loadbalancer.GetIRegion()
if err != nil {
@@ -924,9 +925,9 @@ func (self *SManagedVirtualizationRegionDriver) RequestDeleteLoadbalancerListene
func (self *SManagedVirtualizationRegionDriver) RequestStartLoadbalancerListener(ctx context.Context, userCred mcclient.TokenCredential, lblis *models.SLoadbalancerListener, task taskman.ITask) error {
taskman.LocalTaskRun(task, func() (jsonutils.JSONObject, error) {
loadbalancer := lblis.GetLoadbalancer()
if loadbalancer == nil {
return nil, fmt.Errorf("failed to find loadbalancer for lblis %s", lblis.Name)
loadbalancer, err := lblis.GetLoadbalancer()
if err != nil {
return nil, err
}
iRegion, err := loadbalancer.GetIRegion()
if err != nil {
@@ -1027,7 +1028,10 @@ func (self *SManagedVirtualizationRegionDriver) RequestSyncLoadbalancerListener(
if err != nil {
return nil, errors.Wrap(err, "regionDriver.RequestSyncLoadbalancerListener.GetParams")
}
loadbalancer := lblis.GetLoadbalancer()
loadbalancer, err := lblis.GetLoadbalancer()
if err != nil {
return nil, err
}
if loadbalancer == nil {
return nil, fmt.Errorf("failed to find loadbalancer for lblis %s", lblis.Name)
}
@@ -1056,9 +1060,9 @@ func (self *SManagedVirtualizationRegionDriver) RequestSyncLoadbalancerListener(
func (self *SManagedVirtualizationRegionDriver) RequestStopLoadbalancerListener(ctx context.Context, userCred mcclient.TokenCredential, lblis *models.SLoadbalancerListener, task taskman.ITask) error {
taskman.LocalTaskRun(task, func() (jsonutils.JSONObject, error) {
loadbalancer := lblis.GetLoadbalancer()
if loadbalancer == nil {
return nil, fmt.Errorf("failed to find loadbalancer for lblis %s", lblis.Name)
loadbalancer, err := lblis.GetLoadbalancer()
if err != nil {
return nil, err
}
iRegion, err := loadbalancer.GetIRegion()
if err != nil {
@@ -1079,9 +1083,9 @@ func (self *SManagedVirtualizationRegionDriver) RequestStopLoadbalancerListener(
func (self *SManagedVirtualizationRegionDriver) RequestSyncstatusLoadbalancerListener(ctx context.Context, userCred mcclient.TokenCredential, lblis *models.SLoadbalancerListener, task taskman.ITask) error {
taskman.LocalTaskRun(task, func() (jsonutils.JSONObject, error) {
loadbalancer := lblis.GetLoadbalancer()
if loadbalancer == nil {
return nil, fmt.Errorf("failed to find loadbalancer for lblis %s", lblis.Name)
loadbalancer, err := lblis.GetLoadbalancer()
if err != nil {
return nil, err
}
iRegion, err := loadbalancer.GetIRegion()
if err != nil {
@@ -1106,13 +1110,13 @@ func (self *SManagedVirtualizationRegionDriver) RequestSyncstatusLoadbalancerLis
func (self *SManagedVirtualizationRegionDriver) RequestCreateLoadbalancerListenerRule(ctx context.Context, userCred mcclient.TokenCredential, lbr *models.SLoadbalancerListenerRule, task taskman.ITask) error {
taskman.LocalTaskRun(task, func() (jsonutils.JSONObject, error) {
listener := lbr.GetLoadbalancerListener()
if listener == nil {
return nil, fmt.Errorf("failed to find listener for listnener rule %s", lbr.Name)
listener, err := lbr.GetLoadbalancerListener()
if err != nil {
return nil, err
}
loadbalancer := listener.GetLoadbalancer()
if loadbalancer == nil {
return nil, fmt.Errorf("failed to find loadbalancer for listener %s", listener.Name)
loadbalancer, err := listener.GetLoadbalancer()
if err != nil {
return nil, err
}
iRegion, err := loadbalancer.GetIRegion()
if err != nil {
@@ -1156,13 +1160,13 @@ func (self *SManagedVirtualizationRegionDriver) RequestDeleteLoadbalancerListene
if jsonutils.QueryBoolean(task.GetParams(), "purge", false) {
return nil, nil
}
listener := lbr.GetLoadbalancerListener()
if listener == nil {
return nil, fmt.Errorf("failed to find listener for listnener rule %s", lbr.Name)
listener, err := lbr.GetLoadbalancerListener()
if err != nil {
return nil, err
}
loadbalancer := listener.GetLoadbalancer()
if loadbalancer == nil {
return nil, fmt.Errorf("failed to find loadbalancer for listener %s", listener.Name)
loadbalancer, err := listener.GetLoadbalancer()
if err != nil {
return nil, err
}
iRegion, err := loadbalancer.GetIRegion()
if err != nil {
@@ -1610,7 +1614,10 @@ func (self *SManagedVirtualizationRegionDriver) RequestCreateDBInstance(ctx cont
log.Errorf("failed to sync project %s for create %s rds %s error: %v", dbinstance.ProjectId, _cloudprovider.Provider, dbinstance.Name, err)
}
region := dbinstance.GetRegion()
region, err := dbinstance.GetRegion()
if err != nil {
return nil, err
}
err = region.GetDriver().InitDBInstanceUser(ctx, dbinstance, task, &desc)
if err != nil {
@@ -1769,7 +1776,10 @@ func (self *SManagedVirtualizationRegionDriver) RequestCreateDBInstanceFromBacku
log.Errorf("failed to sync project %s for create %s rds %s error: %v", rds.ProjectId, _cloudprovider.Provider, rds.Name, err)
}
region := rds.GetRegion()
region, err := rds.GetRegion()
if err != nil {
return nil, err
}
err = region.GetDriver().InitDBInstanceUser(ctx, rds, task, &desc)
if err != nil {
+38 -37
View File
@@ -174,7 +174,8 @@ func (self *SOpenStackRegionDriver) RequestCreateLoadbalancer(ctx context.Contex
return nil, errors.Wrap(fmt.Errorf("status error"), "check status")
}
if err := lb.SyncWithCloudLoadbalancer(ctx, userCred, iLoadbalancer, nil, lb.GetCloudprovider(), lb.GetRegion()); err != nil {
region, _ := lb.GetRegion()
if err := lb.SyncWithCloudLoadbalancer(ctx, userCred, iLoadbalancer, nil, lb.GetCloudprovider(), region); err != nil {
return nil, err
}
@@ -425,9 +426,9 @@ func (self *SOpenStackRegionDriver) RequestCreateLoadbalancerListener(ctx contex
if err != nil {
return nil, errors.Wrapf(err, "lblis.GetLoadbalancerListenerParams")
}
loadbalancer := lblis.GetLoadbalancer()
if loadbalancer == nil {
return nil, fmt.Errorf("failed to find loadbalancer for lblis %s", lblis.Name)
loadbalancer, err := lblis.GetLoadbalancer()
if err != nil {
return nil, err
}
iRegion, err := loadbalancer.GetIRegion()
if err != nil {
@@ -643,9 +644,9 @@ func (self *SOpenStackRegionDriver) RequestSyncLoadbalancerListener(ctx context.
if err != nil {
return nil, err
}
loadbalancer := lblis.GetLoadbalancer()
if loadbalancer == nil {
return nil, fmt.Errorf("failed to find loadbalancer for lblis %s", lblis.Name)
loadbalancer, err := lblis.GetLoadbalancer()
if err != nil {
return nil, err
}
iRegion, err := loadbalancer.GetIRegion()
if err != nil {
@@ -722,9 +723,9 @@ func (self *SOpenStackRegionDriver) RequestDeleteLoadbalancerListener(ctx contex
if jsonutils.QueryBoolean(task.GetParams(), "purge", false) {
return nil, nil
}
loadbalancer := lblis.GetLoadbalancer()
if loadbalancer == nil {
return nil, fmt.Errorf("failed to find loadbalancer for lblis %s", lblis.Name)
loadbalancer, err := lblis.GetLoadbalancer()
if err != nil {
return nil, err
}
iRegion, err := loadbalancer.GetIRegion()
if err != nil {
@@ -1004,7 +1005,7 @@ func (self *SOpenStackRegionDriver) ValidateUpdateLoadbalancerListenerRuleData(c
if redirectType != api.LB_REDIRECT_OFF {
if redirectType == api.LB_REDIRECT_RAW {
var (
lblis = lbr.GetLoadbalancerListener()
lblis, _ = lbr.GetLoadbalancerListener()
listenerType = lblis.ListenerType
)
scheme, host, path := redirectSchemeV.Value, redirectHostV.Value, redirectPathV.Value
@@ -1034,13 +1035,13 @@ func (self *SOpenStackRegionDriver) ValidateUpdateLoadbalancerListenerRuleData(c
func (self *SOpenStackRegionDriver) RequestCreateLoadbalancerListenerRule(ctx context.Context, userCred mcclient.TokenCredential, lbr *models.SLoadbalancerListenerRule, task taskman.ITask) error {
taskman.LocalTaskRun(task, func() (jsonutils.JSONObject, error) {
listener := lbr.GetLoadbalancerListener()
if listener == nil {
return nil, fmt.Errorf("failed to find listener for listnener rule %s", lbr.Name)
listener, err := lbr.GetLoadbalancerListener()
if err != nil {
return nil, err
}
loadbalancer := listener.GetLoadbalancer()
if loadbalancer == nil {
return nil, fmt.Errorf("failed to find loadbalancer for listener %s", listener.Name)
loadbalancer, err := listener.GetLoadbalancer()
if err != nil {
return nil, err
}
iRegion, err := loadbalancer.GetIRegion()
if err != nil {
@@ -1099,13 +1100,13 @@ func (self *SOpenStackRegionDriver) RequestDeleteLoadbalancerListenerRule(ctx co
if jsonutils.QueryBoolean(task.GetParams(), "purge", false) {
return nil, nil
}
listener := lbr.GetLoadbalancerListener()
if listener == nil {
return nil, fmt.Errorf("failed to find listener for listnener rule %s", lbr.Name)
listener, err := lbr.GetLoadbalancerListener()
if err != nil {
return nil, err
}
loadbalancer := listener.GetLoadbalancer()
if loadbalancer == nil {
return nil, fmt.Errorf("failed to find loadbalancer for listener %s", listener.Name)
loadbalancer, err := listener.GetLoadbalancer()
if err != nil {
return nil, err
}
iRegion, err := loadbalancer.GetIRegion()
if err != nil {
@@ -1315,9 +1316,9 @@ func (self *SOpenStackRegionDriver) createLoadbalancerBackendGroup(ctx context.C
if err != nil {
return nil, err
}
lb := lbbg.GetLoadbalancer()
if lb == nil {
return nil, fmt.Errorf("failed to find loadbalancer for backendgroup %s", lbbg.Name)
lb, err := lbbg.GetLoadbalancer()
if err != nil {
return nil, err
}
iLoadbalancer, err := iRegion.GetILoadBalancerById(lb.ExternalId)
if err != nil {
@@ -1526,7 +1527,7 @@ func (self *SOpenStackRegionDriver) RequestCreateLoadbalancerBackendGroup(ctx co
}
rule = _rule.(*models.SLoadbalancerListenerRule)
listener = rule.GetLoadbalancerListener()
listener, _ = rule.GetLoadbalancerListener()
} else {
_listener, err := db.FetchById(models.LoadbalancerListenerManager, listenerId)
if err != nil {
@@ -1604,7 +1605,7 @@ func (self *SOpenStackRegionDriver) RequestSyncLoadbalancerBackendGroup(ctx cont
return nil, err
}
lb := lbbg.GetLoadbalancer()
lb, _ := lbbg.GetLoadbalancer()
ilb, err := iRegion.GetILoadBalancerById(lb.GetExternalId())
if err != nil {
return nil, err
@@ -1754,9 +1755,9 @@ func (self *SOpenStackRegionDriver) RequestDeleteLoadbalancerBackendGroup(ctx co
if err != nil {
return nil, errors.Wrap(err, "openstackRegionDriver.RequestDeleteLoadbalancerBackendGroup.")
}
loadbalancer := lbbg.GetLoadbalancer()
if loadbalancer == nil {
return nil, fmt.Errorf("failed to find loadbalancer for backendgroup %s", lbbg.Name)
loadbalancer, err := lbbg.GetLoadbalancer()
if err != nil {
return nil, err
}
iLoadbalancer, err := iRegion.GetILoadBalancerById(loadbalancer.ExternalId)
if err != nil {
@@ -1933,13 +1934,13 @@ func (self *SOpenStackRegionDriver) ValidateUpdateLoadbalancerBackendData(ctx co
func (self *SOpenStackRegionDriver) RequestCreateLoadbalancerBackend(ctx context.Context, userCred mcclient.TokenCredential, lbb *models.SLoadbalancerBackend, task taskman.ITask) error {
taskman.LocalTaskRun(task, func() (jsonutils.JSONObject, error) {
lbbg := lbb.GetLoadbalancerBackendGroup()
if lbbg == nil {
return nil, fmt.Errorf("failed to find lbbg for backend %s", lbb.Name)
lbbg, err := lbb.GetLoadbalancerBackendGroup()
if err != nil {
return nil, err
}
lb := lbbg.GetLoadbalancer()
if lb == nil {
return nil, fmt.Errorf("failed to find lb for backendgroup %s", lbbg.Name)
lb, err := lbbg.GetLoadbalancer()
if err != nil {
return nil, err
}
cachedlbbgs, err := models.OpenstackCachedLbbgManager.GetCachedBackendGroups(lbbg.GetId())
+28 -28
View File
@@ -260,9 +260,9 @@ func (self *SQcloudRegionDriver) RequestCreateLoadbalancerBackendGroup(ctx conte
return nil, nil
}
loadbalancer := lbbg.GetLoadbalancer()
if loadbalancer == nil {
return nil, fmt.Errorf("failed to find loadbalancer for backendgroup %s", lbbg.Name)
loadbalancer, err := lbbg.GetLoadbalancer()
if err != nil {
return nil, err
}
iLoadbalancer, err := iRegion.GetILoadBalancerById(loadbalancer.ExternalId)
if err != nil {
@@ -298,13 +298,13 @@ func (self *SQcloudRegionDriver) RequestCreateLoadbalancerBackendGroup(ctx conte
func (self *SQcloudRegionDriver) RequestCreateLoadbalancerBackend(ctx context.Context, userCred mcclient.TokenCredential, lbb *models.SLoadbalancerBackend, task taskman.ITask) error {
taskman.LocalTaskRun(task, func() (jsonutils.JSONObject, error) {
lbbg := lbb.GetLoadbalancerBackendGroup()
if lbbg == nil {
return nil, fmt.Errorf("failed to find lbbg for backend %s", lbb.Name)
lbbg, err := lbb.GetLoadbalancerBackendGroup()
if err != nil {
return nil, err
}
lb := lbbg.GetLoadbalancer()
if lb == nil {
return nil, fmt.Errorf("failed to find lb for backendgroup %s", lbbg.Name)
lb, err := lbbg.GetLoadbalancer()
if err != nil {
return nil, err
}
cachedlbbgs, err := models.QcloudCachedLbbgManager.GetCachedBackendGroups(lbbg.GetId())
@@ -478,9 +478,9 @@ func (self *SQcloudRegionDriver) createLoadbalancerBackendGroup(ctx context.Cont
if err != nil {
return nil, errors.Wrap(err, "SQcloudRegionDriver.createLoadbalancerBackendGroup.GetIRegion")
}
lb := lbbg.GetLoadbalancer()
if lb == nil {
return nil, fmt.Errorf("failed to find loadbalancer for backendgroup %s", lbbg.Name)
lb, err := lbbg.GetLoadbalancer()
if err != nil {
return nil, err
}
iLoadbalancer, err := iRegion.GetILoadBalancerById(lb.ExternalId)
if err != nil {
@@ -489,9 +489,9 @@ func (self *SQcloudRegionDriver) createLoadbalancerBackendGroup(ctx context.Cont
var ilbbg cloudprovider.ICloudLoadbalancerBackendGroup
if lbr != nil {
l := lbr.GetLoadbalancerListener()
if l == nil {
return nil, fmt.Errorf("could not create loadbalancer backendgroup, loadbalancer listener rule %s related listener not found", lbr.GetName())
l, err := lbr.GetLoadbalancerListener()
if err != nil {
return nil, err
}
ilblis, err := iLoadbalancer.GetILoadBalancerListenerById(l.ExternalId)
@@ -588,9 +588,9 @@ func (self *SQcloudRegionDriver) RequestCreateLoadbalancerListener(ctx context.C
if err != nil {
return nil, errors.Wrap(err, "qcloudRegionDriver.RequestCreateLoadbalancerListener.GetQcloudLoadbalancerListenerParams")
}
loadbalancer := lblis.GetLoadbalancer()
if loadbalancer == nil {
return nil, fmt.Errorf("failed to find loadbalancer for lblis %s", lblis.Name)
loadbalancer, err := lblis.GetLoadbalancer()
if err != nil {
return nil, err
}
iRegion, err := loadbalancer.GetIRegion()
if err != nil {
@@ -676,13 +676,13 @@ func (self *SQcloudRegionDriver) GetLoadbalancerListenerRuleInputParams(lblis *m
func (self *SQcloudRegionDriver) RequestCreateLoadbalancerListenerRule(ctx context.Context, userCred mcclient.TokenCredential, lbr *models.SLoadbalancerListenerRule, task taskman.ITask) error {
taskman.LocalTaskRun(task, func() (jsonutils.JSONObject, error) {
listener := lbr.GetLoadbalancerListener()
if listener == nil {
return nil, fmt.Errorf("failed to find listener for listnener rule %s", lbr.Name)
listener, err := lbr.GetLoadbalancerListener()
if err != nil {
return nil, err
}
loadbalancer := listener.GetLoadbalancer()
if loadbalancer == nil {
return nil, fmt.Errorf("failed to find loadbalancer for listener %s", listener.Name)
loadbalancer, err := listener.GetLoadbalancer()
if err != nil {
return nil, err
}
iRegion, err := loadbalancer.GetIRegion()
if err != nil {
@@ -1226,7 +1226,7 @@ func (self *SQcloudRegionDriver) RequestSyncLoadbalancerBackendGroup(ctx context
return nil, errors.Wrap(err, "QcloudRegionDriver.RequestSyncLoadbalancerbackendGroup.GetIRegion")
}
lb := lbbg.GetLoadbalancer()
lb, _ := lbbg.GetLoadbalancer()
ilb, err := iRegion.GetILoadBalancerById(lb.GetExternalId())
if err != nil {
return nil, errors.Wrap(err, "QcloudRegionDriver.RequestSyncLoadbalancerbackendGroup.GetILoadBalancerById")
@@ -1355,9 +1355,9 @@ func (self *SQcloudRegionDriver) RequestSyncLoadbalancerListener(ctx context.Con
if err != nil {
return nil, errors.Wrap(err, "regionDriver.RequestSyncLoadbalancerListener.GetParams")
}
loadbalancer := lblis.GetLoadbalancer()
if loadbalancer == nil {
return nil, fmt.Errorf("failed to find loadbalancer for lblis %s", lblis.Name)
loadbalancer, err := lblis.GetLoadbalancer()
if err != nil {
return nil, err
}
iRegion, err := loadbalancer.GetIRegion()
if err != nil {
@@ -67,7 +67,7 @@ func (self *CloudAccountSyncSkusTask) OnInit(ctx context.Context, obj db.IStanda
_regions := provider.(*models.SCloudprovider).GetCloudproviderRegions()
for i := range _regions {
region := _regions[i].GetRegion()
region, _ := _regions[i].GetRegion()
regions = append(regions, *region)
}
} else {
@@ -76,7 +76,7 @@ func (self *CloudAccountSyncSkusTask) OnInit(ctx context.Context, obj db.IStanda
ids := []string{}
_regions := provider.GetCloudproviderRegions()
for i := range _regions {
region := _regions[i].GetRegion()
region, _ := _regions[i].GetRegion()
if region != nil && !utils.IsInStringArray(region.GetId(), ids) {
regions = append(regions, *region)
ids = append(ids, region.GetId())
@@ -40,9 +40,9 @@ func (self *DBInstanceBackupCreateTask) taskFailed(ctx context.Context, backup *
backup.SetStatus(self.UserCred, api.DBINSTANCE_BACKUP_CREATE_FAILED, err.Error())
db.OpsLog.LogEvent(backup, db.ACT_CREATE, err, self.GetUserCred())
logclient.AddActionLogWithStartable(self, backup, logclient.ACT_CREATE, err, self.UserCred, false)
instance, _ := backup.GetDBInstance()
if instance != nil {
instance.SetStatus(self.UserCred, api.DBINSTANCE_BACKING_UP_FAILED, err.Error())
rds, _ := backup.GetDBInstance()
if rds != nil {
rds.SetStatus(self.UserCred, api.DBINSTANCE_BACKING_UP_FAILED, err.Error())
}
self.SetStageFailed(ctx, jsonutils.NewString(err.Error()))
}
@@ -53,14 +53,20 @@ func (self *DBInstanceBackupCreateTask) OnInit(ctx context.Context, obj db.IStan
}
func (self *DBInstanceBackupCreateTask) CreateDBInstanceBackup(ctx context.Context, backup *models.SDBInstanceBackup) {
instance, err := backup.GetDBInstance()
rds, err := backup.GetDBInstance()
if err != nil {
self.taskFailed(ctx, backup, errors.Wrap(err, "backup.GetDBInstance"))
return
}
self.SetStage("OnCreateDBInstanceBackupComplete", nil)
err = instance.GetRegion().GetDriver().RequestCreateDBInstanceBackup(ctx, self.UserCred, instance, backup, self)
region, err := rds.GetRegion()
if err != nil {
self.taskFailed(ctx, backup, errors.Wrapf(err, "GetRegion"))
return
}
err = region.GetDriver().RequestCreateDBInstanceBackup(ctx, self.UserCred, rds, backup, self)
if err != nil {
self.taskFailed(ctx, backup, errors.Wrap(err, "RequestCreateDBInstanceBackup"))
return
@@ -46,14 +46,14 @@ func (self *DBInstanceBackupSyncstatusTask) taskFailed(ctx context.Context, back
func (self *DBInstanceBackupSyncstatusTask) OnInit(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) {
backup := obj.(*models.SDBInstanceBackup)
region := backup.GetRegion()
if region == nil {
self.taskFailed(ctx, backup, fmt.Errorf("failed to found cloudregion for backup storage %s(%s)", backup.Name, backup.Id))
region, err := backup.GetRegion()
if err != nil {
self.taskFailed(ctx, backup, errors.Wrapf(err, "GetRegion"))
return
}
self.SetStage("OnDBInstanceBackupSyncStatusComplete", nil)
err := region.GetDriver().RequestSyncDBInstanceBackupStatus(ctx, self.GetUserCred(), backup, self)
err = region.GetDriver().RequestSyncDBInstanceBackupStatus(ctx, self.GetUserCred(), backup, self)
if err != nil {
self.taskFailed(ctx, backup, errors.Wrap(err, "RequestSyncDBInstanceBackupStatus"))
return
+16 -10
View File
@@ -37,12 +37,12 @@ func init() {
taskman.RegisterTask(DBInstanceChangeConfigTask{})
}
func (self *DBInstanceChangeConfigTask) taskFailed(ctx context.Context, dbinstance *models.SDBInstance, err error) {
dbinstance.SetStatus(self.UserCred, api.DBINSTANCE_CHANGE_CONFIG_FAILED, err.Error())
db.OpsLog.LogEvent(dbinstance, db.ACT_CHANGE_CONFIG, err, self.GetUserCred())
logclient.AddActionLogWithStartable(self, dbinstance, logclient.ACT_CHANGE_CONFIG, err, self.UserCred, false)
func (self *DBInstanceChangeConfigTask) taskFailed(ctx context.Context, rds *models.SDBInstance, err error) {
rds.SetStatus(self.UserCred, api.DBINSTANCE_CHANGE_CONFIG_FAILED, err.Error())
db.OpsLog.LogEvent(rds, db.ACT_CHANGE_CONFIG, err, self.GetUserCred())
logclient.AddActionLogWithStartable(self, rds, logclient.ACT_CHANGE_CONFIG, err, self.UserCred, false)
notifyclient.EventNotify(ctx, self.UserCred, notifyclient.SEventNotifyParam{
Obj: dbinstance,
Obj: rds,
Action: notifyclient.ActionChangeConfig,
IsFail: true,
})
@@ -59,7 +59,13 @@ func (self *DBInstanceChangeConfigTask) OnInit(ctx context.Context, obj db.IStan
return
}
err = rds.GetRegion().GetDriver().RequestChangeDBInstanceConfig(ctx, self.UserCred, rds, input, self)
region, err := rds.GetRegion()
if err != nil {
self.taskFailed(ctx, rds, errors.Wrapf(err, "GetRegion"))
return
}
err = region.GetDriver().RequestChangeDBInstanceConfig(ctx, self.UserCred, rds, input, self)
if err != nil {
self.taskFailed(ctx, rds, err)
return
@@ -67,14 +73,14 @@ func (self *DBInstanceChangeConfigTask) OnInit(ctx context.Context, obj db.IStan
}
func (self *DBInstanceChangeConfigTask) OnDBInstanceChangeConfigComplete(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) {
dbinstance := obj.(*models.SDBInstance)
logclient.AddActionLogWithStartable(self, dbinstance, logclient.ACT_CHANGE_CONFIG, nil, self.UserCred, true)
rds := obj.(*models.SDBInstance)
logclient.AddActionLogWithStartable(self, rds, logclient.ACT_CHANGE_CONFIG, nil, self.UserCred, true)
notifyclient.EventNotify(ctx, self.UserCred, notifyclient.SEventNotifyParam{
Obj: dbinstance,
Obj: rds,
Action: notifyclient.ActionChangeConfig,
})
self.SetStage("OnSyncDBInstanceStatusComplete", nil)
models.StartResourceSyncStatusTask(ctx, self.UserCred, dbinstance, "DBInstanceSyncStatusTask", self.GetTaskId())
models.StartResourceSyncStatusTask(ctx, self.UserCred, rds, "DBInstanceSyncStatusTask", self.GetTaskId())
}
func (self *DBInstanceChangeConfigTask) OnDBInstanceChangeConfigCompleteFailed(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) {
+21 -17
View File
@@ -19,6 +19,7 @@ import (
"fmt"
"yunion.io/x/jsonutils"
"yunion.io/x/pkg/errors"
api "yunion.io/x/onecloud/pkg/apis/compute"
"yunion.io/x/onecloud/pkg/cloudcommon/db"
@@ -36,12 +37,12 @@ func init() {
taskman.RegisterTask(DBInstanceCreateTask{})
}
func (self *DBInstanceCreateTask) taskFailed(ctx context.Context, dbinstance *models.SDBInstance, err error) {
dbinstance.SetStatus(self.UserCred, api.DBINSTANCE_CREATE_FAILED, err.Error())
db.OpsLog.LogEvent(dbinstance, db.ACT_CREATE, err, self.GetUserCred())
logclient.AddActionLogWithStartable(self, dbinstance, logclient.ACT_CREATE, err, self.UserCred, false)
func (self *DBInstanceCreateTask) taskFailed(ctx context.Context, rds *models.SDBInstance, err error) {
rds.SetStatus(self.UserCred, api.DBINSTANCE_CREATE_FAILED, err.Error())
db.OpsLog.LogEvent(rds, db.ACT_CREATE, err, self.GetUserCred())
logclient.AddActionLogWithStartable(self, rds, logclient.ACT_CREATE, err, self.UserCred, false)
notifyclient.EventNotify(ctx, self.GetUserCred(), notifyclient.SEventNotifyParam{
Obj: dbinstance,
Obj: rds,
Action: notifyclient.ActionCreate,
IsFail: true,
})
@@ -49,14 +50,17 @@ func (self *DBInstanceCreateTask) taskFailed(ctx context.Context, dbinstance *mo
}
func (self *DBInstanceCreateTask) OnInit(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) {
dbinstance := obj.(*models.SDBInstance)
self.CreateDBInstance(ctx, dbinstance)
rds := obj.(*models.SDBInstance)
self.CreateDBInstance(ctx, rds)
}
func (self *DBInstanceCreateTask) CreateDBInstance(ctx context.Context, rds *models.SDBInstance) {
region := rds.GetRegion()
region, err := rds.GetRegion()
if err != nil {
self.taskFailed(ctx, rds, errors.Wrapf(err, "GetRegion"))
return
}
self.SetStage("OnCreateDBInstanceComplete", nil)
var err error
if len(rds.DBInstancebackupId) > 0 {
err = region.GetDriver().RequestCreateDBInstanceFromBackup(ctx, self.UserCred, rds, self)
} else {
@@ -69,22 +73,22 @@ func (self *DBInstanceCreateTask) CreateDBInstance(ctx context.Context, rds *mod
}
func (self *DBInstanceCreateTask) OnCreateDBInstanceComplete(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) {
dbinstance := obj.(*models.SDBInstance)
logclient.AddActionLogWithStartable(self, dbinstance, logclient.ACT_CREATE, nil, self.UserCred, true)
rds := obj.(*models.SDBInstance)
logclient.AddActionLogWithStartable(self, rds, logclient.ACT_CREATE, nil, self.UserCred, true)
self.SetStage("OnSyncDBInstanceStatusComplete", nil)
models.StartResourceSyncStatusTask(ctx, self.UserCred, dbinstance, "DBInstanceSyncStatusTask", self.GetTaskId())
models.StartResourceSyncStatusTask(ctx, self.UserCred, rds, "DBInstanceSyncStatusTask", self.GetTaskId())
}
func (self *DBInstanceCreateTask) OnCreateDBInstanceCompleteFailed(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) {
dbinstance := obj.(*models.SDBInstance)
self.taskFailed(ctx, dbinstance, fmt.Errorf("%s", data.String()))
rds := obj.(*models.SDBInstance)
self.taskFailed(ctx, rds, fmt.Errorf("%s", data.String()))
}
func (self *DBInstanceCreateTask) OnSyncDBInstanceStatusComplete(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) {
dbinstance := obj.(*models.SDBInstance)
//notifyclient.NotifyWebhook(ctx, self.UserCred, dbinstance, notifyclient.ActionCreate)
rds := obj.(*models.SDBInstance)
//notifyclient.NotifyWebhook(ctx, self.UserCred, rds, notifyclient.ActionCreate)
notifyclient.EventNotify(ctx, self.UserCred, notifyclient.SEventNotifyParam{
Obj: dbinstance,
Obj: rds,
Action: notifyclient.ActionCreate,
})
self.SetStageComplete(ctx, nil)
+30 -25
View File
@@ -37,12 +37,12 @@ func init() {
taskman.RegisterTask(DBInstanceDeleteTask{})
}
func (self *DBInstanceDeleteTask) taskFailed(ctx context.Context, dbinstance *models.SDBInstance, err error) {
dbinstance.SetStatus(self.UserCred, api.DBINSTANCE_DELETE_FAILED, err.Error())
db.OpsLog.LogEvent(dbinstance, db.ACT_DELETE, err, self.GetUserCred())
logclient.AddActionLogWithStartable(self, dbinstance, logclient.ACT_DELETE, err, self.UserCred, false)
func (self *DBInstanceDeleteTask) taskFailed(ctx context.Context, rds *models.SDBInstance, err error) {
rds.SetStatus(self.UserCred, api.DBINSTANCE_DELETE_FAILED, err.Error())
db.OpsLog.LogEvent(rds, db.ACT_DELETE, err, self.GetUserCred())
logclient.AddActionLogWithStartable(self, rds, logclient.ACT_DELETE, err, self.UserCred, false)
notifyclient.EventNotify(ctx, self.GetUserCred(), notifyclient.SEventNotifyParam{
Obj: dbinstance,
Obj: rds,
Action: notifyclient.ActionDelete,
IsFail: true,
})
@@ -50,57 +50,62 @@ func (self *DBInstanceDeleteTask) taskFailed(ctx context.Context, dbinstance *mo
}
func (self *DBInstanceDeleteTask) OnInit(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) {
dbinstance := obj.(*models.SDBInstance)
self.DeleteDBInstance(ctx, dbinstance)
rds := obj.(*models.SDBInstance)
self.DeleteDBInstance(ctx, rds)
}
func (self *DBInstanceDeleteTask) DeleteDBInstance(ctx context.Context, dbinstance *models.SDBInstance) {
idbinstance, err := dbinstance.GetIDBInstance()
func (self *DBInstanceDeleteTask) DeleteDBInstance(ctx context.Context, rds *models.SDBInstance) {
irds, err := rds.GetIDBInstance()
if err != nil {
if errors.Cause(err) == cloudprovider.ErrNotFound {
self.DeleteDBInstanceComplete(ctx, dbinstance)
self.DeleteDBInstanceComplete(ctx, rds)
return
}
self.taskFailed(ctx, dbinstance, err)
self.taskFailed(ctx, rds, err)
return
}
if !jsonutils.QueryBoolean(self.Params, "purge", false) {
err = idbinstance.Delete()
err = irds.Delete()
if err != nil {
self.taskFailed(ctx, dbinstance, err)
self.taskFailed(ctx, rds, err)
return
}
}
self.DeleteDBInstanceComplete(ctx, dbinstance)
self.DeleteDBInstanceComplete(ctx, rds)
}
func (self *DBInstanceDeleteTask) DeleteDBInstanceComplete(ctx context.Context, dbinstance *models.SDBInstance) {
if !dbinstance.GetRegion().GetDriver().IsSupportKeepDBInstanceManualBackup() || jsonutils.QueryBoolean(self.Params, "purge", false) {
err := dbinstance.PurgeBackups(ctx, self.UserCred, api.BACKUP_MODE_MANUAL)
func (self *DBInstanceDeleteTask) DeleteDBInstanceComplete(ctx context.Context, rds *models.SDBInstance) {
region, err := rds.GetRegion()
if err != nil {
self.taskFailed(ctx, rds, errors.Wrapf(err, "GetRegion"))
return
}
if !region.GetDriver().IsSupportKeepDBInstanceManualBackup() || jsonutils.QueryBoolean(self.Params, "purge", false) {
err := rds.PurgeBackups(ctx, self.UserCred, api.BACKUP_MODE_MANUAL)
if err != nil {
self.taskFailed(ctx, dbinstance, errors.Wrap(err, "dbinstance.PurgeManualBackups"))
self.taskFailed(ctx, rds, errors.Wrap(err, "rds.PurgeManualBackups"))
return
}
err = dbinstance.Purge(ctx, self.UserCred)
err = rds.Purge(ctx, self.UserCred)
if err != nil {
self.taskFailed(ctx, dbinstance, errors.Wrap(err, "dbinstance.Purge"))
self.taskFailed(ctx, rds, errors.Wrap(err, "rds.Purge"))
return
}
//notifyclient.NotifyWebhook(ctx, self.UserCred, dbinstance, notifyclient.ActionDelete)
//notifyclient.NotifyWebhook(ctx, self.UserCred, rds, notifyclient.ActionDelete)
notifyclient.EventNotify(ctx, self.UserCred, notifyclient.SEventNotifyParam{
Obj: dbinstance,
Obj: rds,
Action: notifyclient.ActionDelete,
})
self.SetStageComplete(ctx, nil)
return
}
self.DeleteBackups(ctx, dbinstance, nil)
//notifyclient.NotifyWebhook(ctx, self.UserCred, dbinstance, notifyclient.ActionDelete)
self.DeleteBackups(ctx, rds, nil)
//notifyclient.NotifyWebhook(ctx, self.UserCred, rds, notifyclient.ActionDelete)
notifyclient.EventNotify(ctx, self.UserCred, notifyclient.SEventNotifyParam{
Obj: dbinstance,
Obj: rds,
Action: notifyclient.ActionDelete,
})
}
@@ -18,6 +18,7 @@ import (
"context"
"yunion.io/x/jsonutils"
"yunion.io/x/pkg/errors"
api "yunion.io/x/onecloud/pkg/apis/compute"
"yunion.io/x/onecloud/pkg/cloudcommon/db"
@@ -33,34 +34,41 @@ func init() {
taskman.RegisterTask(DBInstanceRemoteUpdateTask{})
}
func (self *DBInstanceRemoteUpdateTask) taskFail(ctx context.Context, dbinstance *models.SDBInstance, reason jsonutils.JSONObject) {
dbinstance.SetStatus(self.UserCred, api.DBINSTANCE_UPDATE_TAGS_FAILED, reason.String())
self.SetStageFailed(ctx, reason)
func (self *DBInstanceRemoteUpdateTask) taskFail(ctx context.Context, rds *models.SDBInstance, err error) {
rds.SetStatus(self.UserCred, api.DBINSTANCE_UPDATE_TAGS_FAILED, err.Error())
self.SetStageFailed(ctx, jsonutils.NewString(err.Error()))
}
func (self *DBInstanceRemoteUpdateTask) OnInit(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) {
instance := obj.(*models.SDBInstance)
rds := obj.(*models.SDBInstance)
self.SetStage("OnRemoteUpdateComplete", nil)
replaceTags := jsonutils.QueryBoolean(self.Params, "replace_tags", false)
if err := instance.GetRegion().GetDriver().RequestRemoteUpdateDBInstance(ctx, self.GetUserCred(), instance, replaceTags, self); err != nil {
self.taskFail(ctx, instance, jsonutils.NewString(err.Error()))
region, err := rds.GetRegion()
if err != nil {
self.taskFail(ctx, rds, errors.Wrapf(err, "GetRegion"))
return
}
if err := region.GetDriver().RequestRemoteUpdateDBInstance(ctx, self.GetUserCred(), rds, replaceTags, self); err != nil {
self.taskFail(ctx, rds, err)
return
}
}
func (self *DBInstanceRemoteUpdateTask) OnRemoteUpdateComplete(ctx context.Context, dbinstance *models.SDBInstance, data jsonutils.JSONObject) {
func (self *DBInstanceRemoteUpdateTask) OnRemoteUpdateComplete(ctx context.Context, rds *models.SDBInstance, data jsonutils.JSONObject) {
self.SetStage("OnSyncStatusComplete", nil)
models.StartResourceSyncStatusTask(ctx, self.UserCred, dbinstance, "DBInstanceSyncStatusTask", self.GetTaskId())
models.StartResourceSyncStatusTask(ctx, self.UserCred, rds, "DBInstanceSyncStatusTask", self.GetTaskId())
}
func (self *DBInstanceRemoteUpdateTask) OnRemoteUpdateCompleteFailed(ctx context.Context, dbinstance *models.SDBInstance, data jsonutils.JSONObject) {
self.taskFail(ctx, dbinstance, data)
func (self *DBInstanceRemoteUpdateTask) OnRemoteUpdateCompleteFailed(ctx context.Context, rds *models.SDBInstance, data jsonutils.JSONObject) {
self.taskFail(ctx, rds, errors.Errorf(data.String()))
}
func (self *DBInstanceRemoteUpdateTask) OnSyncStatusComplete(ctx context.Context, dbinstance *models.SDBInstance, data jsonutils.JSONObject) {
func (self *DBInstanceRemoteUpdateTask) OnSyncStatusComplete(ctx context.Context, rds *models.SDBInstance, data jsonutils.JSONObject) {
self.SetStageComplete(ctx, nil)
}
func (self *DBInstanceRemoteUpdateTask) OnSyncStatusCompleteFailed(ctx context.Context, dbinstance *models.SDBInstance, data jsonutils.JSONObject) {
func (self *DBInstanceRemoteUpdateTask) OnSyncStatusCompleteFailed(ctx context.Context, rds *models.SDBInstance, data jsonutils.JSONObject) {
self.SetStageFailed(ctx, data)
}
@@ -16,7 +16,6 @@ package tasks
import (
"context"
"fmt"
"yunion.io/x/jsonutils"
@@ -41,7 +40,7 @@ func (self *LoadbalancerBackendCreateTask) taskFail(ctx context.Context, lbb *mo
db.OpsLog.LogEvent(lbb, db.ACT_ALLOCATE_FAIL, reason, self.UserCred)
logclient.AddActionLogWithStartable(self, lbb, logclient.ACT_CREATE, reason, self.UserCred, false)
notifyclient.NotifySystemErrorWithCtx(ctx, lbb.Id, lbb.Name, api.LB_CREATE_FAILED, reason.String())
lbbg := lbb.GetLoadbalancerBackendGroup()
lbbg, _ := lbb.GetLoadbalancerBackendGroup()
if lbbg != nil {
logclient.AddActionLogWithStartable(self, lbbg, logclient.ACT_LB_ADD_BACKEND, reason, self.UserCred, false)
}
@@ -50,9 +49,9 @@ func (self *LoadbalancerBackendCreateTask) taskFail(ctx context.Context, lbb *mo
func (self *LoadbalancerBackendCreateTask) OnInit(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) {
lbb := obj.(*models.SLoadbalancerBackend)
region := lbb.GetRegion()
if region == nil {
self.taskFail(ctx, lbb, jsonutils.NewString(fmt.Sprintf("failed to find region for lbb %s", lbb.Name)))
region, err := lbb.GetRegion()
if err != nil {
self.taskFail(ctx, lbb, jsonutils.NewString(err.Error()))
return
}
@@ -66,7 +65,7 @@ func (self *LoadbalancerBackendCreateTask) OnLoadbalancerBackendCreateComplete(c
lbb.SetStatus(self.GetUserCred(), api.LB_STATUS_ENABLED, "")
db.OpsLog.LogEvent(lbb, db.ACT_ALLOCATE, lbb.GetShortDesc(ctx), self.UserCred)
logclient.AddActionLogWithStartable(self, lbb, logclient.ACT_CREATE, nil, self.UserCred, true)
lbbg := lbb.GetLoadbalancerBackendGroup()
lbbg, _ := lbb.GetLoadbalancerBackendGroup()
if lbbg != nil {
logclient.AddActionLogWithStartable(self, lbbg, logclient.ACT_LB_ADD_BACKEND, nil, self.UserCred, true)
}
@@ -16,7 +16,6 @@ package tasks
import (
"context"
"fmt"
"yunion.io/x/jsonutils"
@@ -40,7 +39,7 @@ func (self *LoadbalancerBackendDeleteTask) taskFail(ctx context.Context, lbb *mo
lbb.SetStatus(self.GetUserCred(), api.LB_STATUS_DELETE_FAILED, reason.String())
db.OpsLog.LogEvent(lbb, db.ACT_DELOCATE_FAIL, reason, self.UserCred)
logclient.AddActionLogWithStartable(self, lbb, logclient.ACT_DELOCATE, reason, self.UserCred, false)
lbbg := lbb.GetLoadbalancerBackendGroup()
lbbg, _ := lbb.GetLoadbalancerBackendGroup()
if lbbg != nil {
logclient.AddActionLogWithStartable(self, lbbg, logclient.ACT_LB_REMOVE_BACKEND, reason, self.UserCred, false)
}
@@ -49,9 +48,9 @@ func (self *LoadbalancerBackendDeleteTask) taskFail(ctx context.Context, lbb *mo
func (self *LoadbalancerBackendDeleteTask) OnInit(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) {
lbb := obj.(*models.SLoadbalancerBackend)
region := lbb.GetRegion()
if region == nil {
self.taskFail(ctx, lbb, jsonutils.NewString(fmt.Sprintf("failed to find region for lbb %s", lbb.Name)))
region, err := lbb.GetRegion()
if err != nil {
self.taskFail(ctx, lbb, jsonutils.NewString(err.Error()))
return
}
self.SetStage("OnLoadbalancerBackendDeleteComplete", nil)
@@ -64,7 +63,7 @@ func (self *LoadbalancerBackendDeleteTask) OnLoadbalancerBackendDeleteComplete(c
lbb.DoPendingDelete(ctx, self.GetUserCred())
db.OpsLog.LogEvent(lbb, db.ACT_DELETE, lbb.GetShortDesc(ctx), self.UserCred)
logclient.AddActionLogWithStartable(self, lbb, logclient.ACT_DELOCATE, nil, self.UserCred, true)
lbbg := lbb.GetLoadbalancerBackendGroup()
lbbg, _ := lbb.GetLoadbalancerBackendGroup()
if lbbg != nil {
logclient.AddActionLogWithStartable(self, lbbg, logclient.ACT_LB_REMOVE_BACKEND, nil, self.UserCred, true)
}
@@ -16,7 +16,6 @@ package tasks
import (
"context"
"fmt"
"yunion.io/x/jsonutils"
@@ -41,7 +40,7 @@ func (self *LoadbalancerBackendSyncTask) taskFail(ctx context.Context, lbb *mode
db.OpsLog.LogEvent(lbb, db.ACT_SYNC_CONF, reason, self.UserCred)
logclient.AddActionLogWithStartable(self, lbb, logclient.ACT_SYNC_CONF, reason, self.UserCred, false)
notifyclient.NotifySystemErrorWithCtx(ctx, lbb.Id, lbb.Name, api.LB_SYNC_CONF_FAILED, reason.String())
lbbg := lbb.GetLoadbalancerBackendGroup()
lbbg, _ := lbb.GetLoadbalancerBackendGroup()
if lbbg != nil {
logclient.AddActionLogWithStartable(self, lbbg, logclient.ACL_LB_SYNC_BACKEND_CONF, reason, self.UserCred, false)
}
@@ -50,9 +49,9 @@ func (self *LoadbalancerBackendSyncTask) taskFail(ctx context.Context, lbb *mode
func (self *LoadbalancerBackendSyncTask) OnInit(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) {
lbb := obj.(*models.SLoadbalancerBackend)
region := lbb.GetRegion()
if region == nil {
self.taskFail(ctx, lbb, jsonutils.NewString(fmt.Sprintf("failed to find region for lbb %s", lbb.Name)))
region, err := lbb.GetRegion()
if err != nil {
self.taskFail(ctx, lbb, jsonutils.NewString(err.Error()))
return
}
self.SetStage("OnLoadbalancerBackendCreateComplete", nil)
@@ -65,7 +64,7 @@ func (self *LoadbalancerBackendSyncTask) OnLoadbalancerBackendCreateComplete(ctx
lbb.SetStatus(self.GetUserCred(), api.LB_STATUS_ENABLED, "")
db.OpsLog.LogEvent(lbb, db.ACT_SYNC_CONF, lbb.GetShortDesc(ctx), self.UserCred)
logclient.AddActionLogWithStartable(self, lbb, logclient.ACT_SYNC_CONF, nil, self.UserCred, true)
lbbg := lbb.GetLoadbalancerBackendGroup()
lbbg, _ := lbb.GetLoadbalancerBackendGroup()
if lbbg != nil {
logclient.AddActionLogWithStartable(self, lbbg, logclient.ACL_LB_SYNC_BACKEND_CONF, nil, self.UserCred, true)
}
@@ -62,9 +62,9 @@ func (self *LoadbalancerLoadbalancerBackendGroupCreateTask) taskFail(ctx context
func (self *LoadbalancerLoadbalancerBackendGroupCreateTask) OnInit(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) {
lbbg := obj.(*models.SLoadbalancerBackendGroup)
region := lbbg.GetRegion()
if region == nil {
self.taskFail(ctx, lbbg, jsonutils.NewString(fmt.Sprintf("failed to find region for lb backendgroup %s", lbbg.Name)))
region, err := lbbg.GetRegion()
if err != nil {
self.taskFail(ctx, lbbg, jsonutils.NewString(err.Error()))
return
}
backends := []cloudprovider.SLoadbalancerBackend{}
@@ -90,9 +90,9 @@ func (self *LoadbalancerLoadbalancerBackendGroupCreateTask) OnLoadbalancerBacken
func (self *HuaweiLoadbalancerLoadbalancerBackendGroupCreateTask) OnInit(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) {
lbbg := obj.(*models.SLoadbalancerBackendGroup)
region := lbbg.GetRegion()
if region == nil {
self.taskFail(ctx, lbbg, jsonutils.NewString(fmt.Sprintf("failed to find region for lb backendgroup %s", lbbg.Name)))
region, err := lbbg.GetRegion()
if err != nil {
self.taskFail(ctx, lbbg, jsonutils.NewString(err.Error()))
return
}
@@ -118,9 +118,9 @@ func (self *HuaweiLoadbalancerLoadbalancerBackendGroupCreateTask) OnInit(ctx con
func (self *AwsLoadbalancerLoadbalancerBackendGroupCreateTask) OnInit(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) {
lbbg := obj.(*models.SLoadbalancerBackendGroup)
region := lbbg.GetRegion()
if region == nil {
self.taskFail(ctx, lbbg, jsonutils.NewString(fmt.Sprintf("failed to find region for lb backendgroup %s", lbbg.Name)))
region, err := lbbg.GetRegion()
if err != nil {
self.taskFail(ctx, lbbg, jsonutils.NewString(err.Error()))
return
}
@@ -145,9 +145,9 @@ func (self *AwsLoadbalancerLoadbalancerBackendGroupCreateTask) OnInit(ctx contex
func (self *OpenstackLoadbalancerLoadbalancerBackendGroupCreateTask) OnInit(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) {
lbbg := obj.(*models.SLoadbalancerBackendGroup)
region := lbbg.GetRegion()
if region == nil {
self.taskFail(ctx, lbbg, jsonutils.NewString(fmt.Sprintf("failed to find region for lb backendgroup %s", lbbg.Name)))
region, err := lbbg.GetRegion()
if err != nil {
self.taskFail(ctx, lbbg, jsonutils.NewString(err.Error()))
return
}
@@ -16,7 +16,6 @@ package tasks
import (
"context"
"fmt"
"yunion.io/x/jsonutils"
@@ -46,9 +45,9 @@ func (self *LoadbalancerBackendGroupDeleteTask) taskFail(ctx context.Context, lb
func (self *LoadbalancerBackendGroupDeleteTask) OnInit(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) {
lbbg := obj.(*models.SLoadbalancerBackendGroup)
region := lbbg.GetRegion()
if region == nil {
self.taskFail(ctx, lbbg, jsonutils.NewString(fmt.Sprintf("failed to find region for lb %s", lbbg.Name)))
region, err := lbbg.GetRegion()
if err != nil {
self.taskFail(ctx, lbbg, jsonutils.NewString(err.Error()))
return
}
self.SetStage("OnLoadbalancerBackendGroupDeleteComplete", nil)
@@ -16,7 +16,6 @@ package tasks
import (
"context"
"fmt"
"yunion.io/x/jsonutils"
@@ -51,9 +50,9 @@ func (self *LoadbalancerCreateTask) taskFail(ctx context.Context, lb *models.SLo
func (self *LoadbalancerCreateTask) OnInit(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) {
lb := obj.(*models.SLoadbalancer)
region := lb.GetRegion()
if region == nil {
self.taskFail(ctx, lb, jsonutils.NewString(fmt.Sprintf("failed to find region for lb %s", lb.Name)))
region, err := lb.GetRegion()
if err != nil {
self.taskFail(ctx, lb, jsonutils.NewString(err.Error()))
return
}
self.SetStage("OnLoadbalancerCreateComplete", nil)
@@ -16,7 +16,6 @@ package tasks
import (
"context"
"fmt"
"yunion.io/x/jsonutils"
@@ -50,9 +49,9 @@ func (self *LoadbalancerDeleteTask) taskFail(ctx context.Context, lb *models.SLo
func (self *LoadbalancerDeleteTask) OnInit(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) {
lb := obj.(*models.SLoadbalancer)
region := lb.GetRegion()
if region == nil {
self.taskFail(ctx, lb, jsonutils.NewString(fmt.Sprintf("failed to find region for lb %s", lb.Name)))
region, err := lb.GetRegion()
if err != nil {
self.taskFail(ctx, lb, jsonutils.NewString(err.Error()))
return
}
self.SetStage("OnLoadbalancerDeleteComplete", nil)
@@ -17,7 +17,6 @@ package tasks
import (
"context"
"database/sql"
"fmt"
"yunion.io/x/jsonutils"
@@ -39,7 +38,7 @@ func init() {
func getOnLoadbalancerListenerCreateCompleteFunc(provider string) func(ctx context.Context, lblis *models.SLoadbalancerListener, data jsonutils.JSONObject, self *LoadbalancerListenerCreateTask) {
switch provider {
case api.CLOUD_PROVIDER_HUAWEI:
case api.CLOUD_PROVIDER_HUAWEI, api.CLOUD_PROVIDER_HUAWEI_CLOUD_STACK:
return onHuaweiLoadbalancerListenerCreateComplete
case api.CLOUD_PROVIDER_OPENSTACK:
return onOpenstackLoadbalancerListenerCreateComplete
@@ -169,9 +168,9 @@ func (self *LoadbalancerListenerCreateTask) taskFail(ctx context.Context, lblis
func (self *LoadbalancerListenerCreateTask) OnInit(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) {
lblis := obj.(*models.SLoadbalancerListener)
region := lblis.GetRegion()
if region == nil {
self.taskFail(ctx, lblis, jsonutils.NewString(fmt.Sprintf("failed to find region for lblis %s", lblis.Name)))
region, err := lblis.GetRegion()
if err != nil {
self.taskFail(ctx, lblis, jsonutils.NewString(err.Error()))
return
}
self.SetStage("OnLoadbalancerListenerCreateComplete", nil)
@@ -16,7 +16,6 @@ package tasks
import (
"context"
"fmt"
"yunion.io/x/jsonutils"
@@ -50,9 +49,9 @@ func (self *LoadbalancerListenerDeleteTask) taskFail(ctx context.Context, lblis
func (self *LoadbalancerListenerDeleteTask) OnInit(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) {
lblis := obj.(*models.SLoadbalancerListener)
region := lblis.GetRegion()
if region == nil {
self.taskFail(ctx, lblis, jsonutils.NewString(fmt.Sprintf("failed to find region for lblis %s", lblis.Name)))
region, err := lblis.GetRegion()
if err != nil {
self.taskFail(ctx, lblis, jsonutils.NewString(err.Error()))
return
}
self.SetStage("OnLoadbalancerListenerDeleteComplete", nil)
@@ -16,7 +16,6 @@ package tasks
import (
"context"
"fmt"
"yunion.io/x/jsonutils"
@@ -38,7 +37,7 @@ func init() {
func getOnPrepareLoadbalancerBackendgroupFunc(provider string) func(ctx context.Context, region *models.SCloudregion, lbr *models.SLoadbalancerListenerRule, data jsonutils.JSONObject, self *LoadbalancerListenerRuleCreateTask) {
switch provider {
case api.CLOUD_PROVIDER_HUAWEI:
case api.CLOUD_PROVIDER_HUAWEI, api.CLOUD_PROVIDER_HUAWEI_CLOUD_STACK:
return onHuaiweiPrepareLoadbalancerBackendgroup
case api.CLOUD_PROVIDER_AWS:
return onAwsPrepareLoadbalancerBackendgroup
@@ -61,9 +60,9 @@ func onHuaiweiPrepareLoadbalancerBackendgroup(ctx context.Context, region *model
return
}
lblis := lbr.GetLoadbalancerListener()
if lblis == nil {
self.taskFail(ctx, lbr, jsonutils.NewString("huawei loadbalancer listener rule releated listener not found"))
lblis, err := lbr.GetLoadbalancerListener()
if err != nil {
self.taskFail(ctx, lbr, jsonutils.NewString(err.Error()))
return
}
@@ -114,9 +113,9 @@ func onAwsPrepareLoadbalancerBackendgroup(ctx context.Context, region *models.SC
return
}
lblis := lbr.GetLoadbalancerListener()
if lblis == nil {
self.taskFail(ctx, lbr, jsonutils.NewString("aws loadbalancer listener rule releated listener not found"))
lblis, err := lbr.GetLoadbalancerListener()
if err != nil {
self.taskFail(ctx, lbr, jsonutils.NewString(err.Error()))
return
}
@@ -156,9 +155,9 @@ func onOpenstackPrepareLoadbalancerBackendgroup(ctx context.Context, region *mod
return
}
lblis := lbr.GetLoadbalancerListener()
if lblis == nil {
self.taskFail(ctx, lbr, jsonutils.NewString("openstack loadbalancer listener rule releated listener not found"))
lblis, err := lbr.GetLoadbalancerListener()
if err != nil {
self.taskFail(ctx, lbr, jsonutils.NewString(err.Error()))
return
}
@@ -207,7 +206,7 @@ func (self *LoadbalancerListenerRuleCreateTask) taskFail(ctx context.Context, lb
db.OpsLog.LogEvent(lbr, db.ACT_ALLOCATE_FAIL, reason, self.UserCred)
logclient.AddActionLogWithStartable(self, lbr, logclient.ACT_CREATE, reason, self.UserCred, false)
notifyclient.NotifySystemErrorWithCtx(ctx, lbr.Id, lbr.Name, api.LB_CREATE_FAILED, reason.String())
lblis := lbr.GetLoadbalancerListener()
lblis, _ := lbr.GetLoadbalancerListener()
if lblis != nil {
logclient.AddActionLogWithStartable(self, lblis, logclient.ACT_LB_ADD_LISTENER_RULE, reason, self.UserCred, false)
}
@@ -216,9 +215,9 @@ func (self *LoadbalancerListenerRuleCreateTask) taskFail(ctx context.Context, lb
func (self *LoadbalancerListenerRuleCreateTask) OnInit(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) {
lbr := obj.(*models.SLoadbalancerListenerRule)
region := lbr.GetRegion()
if region == nil {
self.taskFail(ctx, lbr, jsonutils.NewString(fmt.Sprintf("failed to find region for lbr %s", lbr.Name)))
region, err := lbr.GetRegion()
if err != nil {
self.taskFail(ctx, lbr, jsonutils.NewString(err.Error()))
return
}
@@ -231,9 +230,9 @@ func (self *LoadbalancerListenerRuleCreateTask) OnPrepareLoadbalancerBackendgrou
}
func (self *LoadbalancerListenerRuleCreateTask) OnCreateLoadbalancerListenerRule(ctx context.Context, lbr *models.SLoadbalancerListenerRule, data jsonutils.JSONObject) {
region := lbr.GetRegion()
if region == nil {
self.taskFail(ctx, lbr, jsonutils.NewString(fmt.Sprintf("failed to find region for lbr %s", lbr.Name)))
region, err := lbr.GetRegion()
if err != nil {
self.taskFail(ctx, lbr, jsonutils.NewString(err.Error()))
return
}
self.SetStage("OnLoadbalancerListenerRuleCreateComplete", nil)
@@ -251,7 +250,7 @@ func (self *LoadbalancerListenerRuleCreateTask) OnLoadbalancerListenerRuleCreate
db.OpsLog.LogEvent(lbr, db.ACT_ALLOCATE, lbr.GetShortDesc(ctx), self.UserCred)
logclient.AddActionLogWithStartable(self, lbr, logclient.ACT_CREATE, nil, self.UserCred, true)
notifyclient.NotifyWebhook(ctx, self.UserCred, lbr, notifyclient.ActionCreate)
lblis := lbr.GetLoadbalancerListener()
lblis, _ := lbr.GetLoadbalancerListener()
if lblis != nil {
logclient.AddActionLogWithStartable(self, lblis, logclient.ACT_LB_ADD_LISTENER_RULE, nil, self.UserCred, true)
}

Some files were not shown because too many files have changed in this diff Show More