mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-19 02:37:24 +08:00
365 lines
12 KiB
Go
365 lines
12 KiB
Go
// 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 compute
|
|
|
|
import (
|
|
"yunion.io/x/cloudmux/pkg/apis/compute"
|
|
"yunion.io/x/cloudmux/pkg/cloudprovider"
|
|
|
|
"yunion.io/x/onecloud/pkg/apis"
|
|
"yunion.io/x/onecloud/pkg/util/choices"
|
|
)
|
|
|
|
const (
|
|
CLOUD_PROVIDER_INIT = "init"
|
|
CLOUD_PROVIDER_CONNECTED = "connected"
|
|
CLOUD_PROVIDER_DISCONNECTED = "disconnected"
|
|
CLOUD_PROVIDER_START_DELETE = "start_delete"
|
|
CLOUD_PROVIDER_DELETING = "deleting"
|
|
CLOUD_PROVIDER_DELETED = "deleted"
|
|
CLOUD_PROVIDER_DELETE_FAILED = "delete_failed"
|
|
CLOUD_PROVIDER_SYNC_NETWORK = "sync_network"
|
|
|
|
CLOUD_PROVIDER_SYNC_NETWORK_FAILED = "sync_net_failed"
|
|
|
|
CLOUD_PROVIDER_SYNC_STATUS_QUEUING = "queuing"
|
|
CLOUD_PROVIDER_SYNC_STATUS_QUEUED = "queued"
|
|
CLOUD_PROVIDER_SYNC_STATUS_SYNCING = "syncing"
|
|
CLOUD_PROVIDER_SYNC_STATUS_IDLE = "idle"
|
|
CLOUD_PROVIDER_SYNC_STATUS_ERROR = "error"
|
|
|
|
CLOUD_PROVIDER_ONECLOUD = compute.CLOUD_PROVIDER_ONECLOUD
|
|
CLOUD_PROVIDER_VMWARE = compute.CLOUD_PROVIDER_VMWARE
|
|
CLOUD_PROVIDER_NUTANIX = compute.CLOUD_PROVIDER_NUTANIX
|
|
CLOUD_PROVIDER_ALIYUN = compute.CLOUD_PROVIDER_ALIYUN
|
|
CLOUD_PROVIDER_APSARA = compute.CLOUD_PROVIDER_APSARA
|
|
CLOUD_PROVIDER_QCLOUD = compute.CLOUD_PROVIDER_QCLOUD
|
|
CLOUD_PROVIDER_AZURE = compute.CLOUD_PROVIDER_AZURE
|
|
CLOUD_PROVIDER_AWS = compute.CLOUD_PROVIDER_AWS
|
|
CLOUD_PROVIDER_HUAWEI = compute.CLOUD_PROVIDER_HUAWEI
|
|
CLOUD_PROVIDER_HCSO = compute.CLOUD_PROVIDER_HCSO
|
|
CLOUD_PROVIDER_HCSOP = compute.CLOUD_PROVIDER_HCSOP
|
|
CLOUD_PROVIDER_HCS = compute.CLOUD_PROVIDER_HCS
|
|
CLOUD_PROVIDER_OPENSTACK = compute.CLOUD_PROVIDER_OPENSTACK
|
|
CLOUD_PROVIDER_UCLOUD = compute.CLOUD_PROVIDER_UCLOUD
|
|
CLOUD_PROVIDER_VOLCENGINE = compute.CLOUD_PROVIDER_VOLCENGINE
|
|
CLOUD_PROVIDER_ZSTACK = compute.CLOUD_PROVIDER_ZSTACK
|
|
CLOUD_PROVIDER_GOOGLE = compute.CLOUD_PROVIDER_GOOGLE
|
|
CLOUD_PROVIDER_CTYUN = compute.CLOUD_PROVIDER_CTYUN
|
|
CLOUD_PROVIDER_ECLOUD = compute.CLOUD_PROVIDER_ECLOUD
|
|
CLOUD_PROVIDER_JDCLOUD = compute.CLOUD_PROVIDER_JDCLOUD
|
|
CLOUD_PROVIDER_CLOUDPODS = compute.CLOUD_PROVIDER_CLOUDPODS
|
|
CLOUD_PROVIDER_BINGO_CLOUD = compute.CLOUD_PROVIDER_BINGO_CLOUD
|
|
CLOUD_PROVIDER_INCLOUD_SPHERE = compute.CLOUD_PROVIDER_INCLOUD_SPHERE
|
|
CLOUD_PROVIDER_PROXMOX = compute.CLOUD_PROVIDER_PROXMOX
|
|
CLOUD_PROVIDER_REMOTEFILE = compute.CLOUD_PROVIDER_REMOTEFILE
|
|
CLOUD_PROVIDER_H3C = compute.CLOUD_PROVIDER_H3C
|
|
CLOUD_PROVIDER_KSYUN = compute.CLOUD_PROVIDER_KSYUN
|
|
CLOUD_PROVIDER_BAIDU = compute.CLOUD_PROVIDER_BAIDU
|
|
CLOUD_PROVIDER_CUCLOUD = compute.CLOUD_PROVIDER_CUCLOUD
|
|
CLOUD_PROVIDER_QINGCLOUD = compute.CLOUD_PROVIDER_QINGCLOUD
|
|
CLOUD_PROVIDER_ORACLE = compute.CLOUD_PROVIDER_ORACLE
|
|
CLOUD_PROVIDER_SANGFOR = compute.CLOUD_PROVIDER_SANGFOR
|
|
CLOUD_PROVIDER_ZETTAKIT = compute.CLOUD_PROVIDER_ZETTAKIT
|
|
CLOUD_PROVIDER_UIS = compute.CLOUD_PROVIDER_UIS
|
|
CLOUD_PROVIDER_CAS = compute.CLOUD_PROVIDER_CAS
|
|
CLOUD_PROVIDER_CLOUDFLARE = compute.CLOUD_PROVIDER_CLOUDFLARE
|
|
CLOUD_PROVIDER_CNWARE = compute.CLOUD_PROVIDER_CNWARE
|
|
CLOUD_PROVIDER_OCEANBASE = compute.CLOUD_PROVIDER_OCEANBASE
|
|
CLOUD_PROVIDER_ROCKBASE = compute.CLOUD_PROVIDER_ROCKBASE
|
|
|
|
CLOUD_PROVIDER_GENERICS3 = compute.CLOUD_PROVIDER_GENERICS3
|
|
CLOUD_PROVIDER_CEPH = compute.CLOUD_PROVIDER_CEPH
|
|
CLOUD_PROVIDER_XSKY = compute.CLOUD_PROVIDER_XSKY
|
|
CLOUD_PROVIDER_CEPHFS = compute.CLOUD_PROVIDER_CEPHFS
|
|
|
|
CLOUD_PROVIDER_HEALTH_NORMAL = compute.CLOUD_PROVIDER_HEALTH_NORMAL // 远端处于健康状态
|
|
CLOUD_PROVIDER_HEALTH_INSUFFICIENT = compute.CLOUD_PROVIDER_HEALTH_INSUFFICIENT // 不足按需资源余额
|
|
CLOUD_PROVIDER_HEALTH_SUSPENDED = compute.CLOUD_PROVIDER_HEALTH_SUSPENDED // 远端处于冻结状态
|
|
CLOUD_PROVIDER_HEALTH_ARREARS = compute.CLOUD_PROVIDER_HEALTH_ARREARS // 远端处于欠费状态
|
|
CLOUD_PROVIDER_HEALTH_UNKNOWN = compute.CLOUD_PROVIDER_HEALTH_UNKNOWN // 未知状态,查询失败
|
|
CLOUD_PROVIDER_HEALTH_NO_PERMISSION = compute.CLOUD_PROVIDER_HEALTH_NO_PERMISSION // 没有权限获取账单信息
|
|
|
|
ONECLOUD_BRAND_ONECLOUD = "OneCloud"
|
|
|
|
CLOUD_ACCOUNT_WIRE_LEVEL_VCENTER = "vcenter"
|
|
CLOUD_ACCOUNT_WIRE_LEVEL_DATACENTER = "datacenter"
|
|
CLOUD_ACCOUNT_WIRE_LEVEL_CLUSTER = "cluster"
|
|
)
|
|
|
|
var CLOUD_ACCOUNT_WIRE_LEVELS = choices.NewChoices(
|
|
CLOUD_ACCOUNT_WIRE_LEVEL_VCENTER,
|
|
CLOUD_ACCOUNT_WIRE_LEVEL_DATACENTER,
|
|
CLOUD_ACCOUNT_WIRE_LEVEL_CLUSTER,
|
|
)
|
|
|
|
const (
|
|
CLOUD_ACCESS_ENV_AWS_GLOBAL = compute.CLOUD_ACCESS_ENV_AWS_GLOBAL
|
|
CLOUD_ACCESS_ENV_AWS_CHINA = compute.CLOUD_ACCESS_ENV_AWS_CHINA
|
|
CLOUD_ACCESS_ENV_AZURE_GLOBAL = compute.CLOUD_ACCESS_ENV_AZURE_GLOBAL
|
|
CLOUD_ACCESS_ENV_AZURE_GERMAN = compute.CLOUD_ACCESS_ENV_AZURE_GERMAN
|
|
CLOUD_ACCESS_ENV_AZURE_US_GOVERNMENT = compute.CLOUD_ACCESS_ENV_AZURE_US_GOVERNMENT
|
|
CLOUD_ACCESS_ENV_AZURE_CHINA = compute.CLOUD_ACCESS_ENV_AZURE_CHINA
|
|
CLOUD_ACCESS_ENV_ALIYUN_GLOBAL = compute.CLOUD_ACCESS_ENV_ALIYUN_GLOBAL
|
|
CLOUD_ACCESS_ENV_ALIYUN_FINANCE = compute.CLOUD_ACCESS_ENV_ALIYUN_FINANCE
|
|
CLOUD_ACCESS_ENV_CTYUN_CHINA = compute.CLOUD_ACCESS_ENV_CTYUN_CHINA
|
|
CLOUD_ACCESS_ENV_ECLOUD_CHINA = compute.CLOUD_ACCESS_ENV_ECLOUD_CHINA
|
|
CLOUD_ACCESS_ENV_JDCLOUD_CHINA = compute.CLOUD_ACCESS_ENV_JDCLOUD_CHINA
|
|
)
|
|
|
|
var (
|
|
CLOUD_PROVIDER_VALID_STATUS = []string{CLOUD_PROVIDER_CONNECTED}
|
|
CLOUD_PROVIDER_VALID_HEALTH_STATUS = []string{CLOUD_PROVIDER_HEALTH_NORMAL, CLOUD_PROVIDER_HEALTH_NO_PERMISSION}
|
|
PRIVATE_CLOUD_PROVIDERS = []string{
|
|
CLOUD_PROVIDER_NUTANIX, CLOUD_PROVIDER_BINGO_CLOUD, CLOUD_PROVIDER_CLOUDPODS,
|
|
CLOUD_PROVIDER_ZSTACK, CLOUD_PROVIDER_OPENSTACK, CLOUD_PROVIDER_APSARA,
|
|
CLOUD_PROVIDER_HCSO, CLOUD_PROVIDER_HCS, CLOUD_PROVIDER_HCSOP,
|
|
CLOUD_PROVIDER_INCLOUD_SPHERE, CLOUD_PROVIDER_PROXMOX, CLOUD_PROVIDER_REMOTEFILE,
|
|
CLOUD_PROVIDER_H3C, CLOUD_PROVIDER_SANGFOR, CLOUD_PROVIDER_ZSTACK, CLOUD_PROVIDER_UIS,
|
|
CLOUD_PROVIDER_ZETTAKIT, CLOUD_PROVIDER_CAS, CLOUD_PROVIDER_CNWARE,
|
|
}
|
|
PUBLIC_CLOUD_PROVIDERS = []string{
|
|
CLOUD_PROVIDER_ALIYUN,
|
|
CLOUD_PROVIDER_AWS,
|
|
CLOUD_PROVIDER_AZURE,
|
|
CLOUD_PROVIDER_BAIDU,
|
|
CLOUD_PROVIDER_CTYUN,
|
|
CLOUD_PROVIDER_CUCLOUD,
|
|
CLOUD_PROVIDER_ECLOUD,
|
|
CLOUD_PROVIDER_HUAWEI,
|
|
CLOUD_PROVIDER_QCLOUD,
|
|
CLOUD_PROVIDER_UCLOUD,
|
|
CLOUD_PROVIDER_GOOGLE,
|
|
CLOUD_PROVIDER_KSYUN,
|
|
CLOUD_PROVIDER_QINGCLOUD,
|
|
CLOUD_PROVIDER_JDCLOUD,
|
|
CLOUD_PROVIDER_VOLCENGINE,
|
|
CLOUD_PROVIDER_ORACLE,
|
|
CLOUD_PROVIDER_CLOUDFLARE,
|
|
CLOUD_PROVIDER_ROCKBASE,
|
|
}
|
|
|
|
CLOUD_PROVIDERS = []string{
|
|
CLOUD_PROVIDER_ONECLOUD,
|
|
CLOUD_PROVIDER_VMWARE,
|
|
CLOUD_PROVIDER_ALIYUN,
|
|
CLOUD_PROVIDER_APSARA,
|
|
CLOUD_PROVIDER_QCLOUD,
|
|
CLOUD_PROVIDER_AZURE,
|
|
CLOUD_PROVIDER_AWS,
|
|
CLOUD_PROVIDER_HUAWEI,
|
|
CLOUD_PROVIDER_HCSO,
|
|
CLOUD_PROVIDER_HCSOP,
|
|
CLOUD_PROVIDER_HCS,
|
|
CLOUD_PROVIDER_OPENSTACK,
|
|
CLOUD_PROVIDER_UCLOUD,
|
|
CLOUD_PROVIDER_VOLCENGINE,
|
|
CLOUD_PROVIDER_ZSTACK,
|
|
CLOUD_PROVIDER_GOOGLE,
|
|
CLOUD_PROVIDER_CTYUN,
|
|
CLOUD_PROVIDER_ECLOUD,
|
|
CLOUD_PROVIDER_JDCLOUD,
|
|
CLOUD_PROVIDER_CLOUDPODS,
|
|
CLOUD_PROVIDER_NUTANIX,
|
|
CLOUD_PROVIDER_BINGO_CLOUD,
|
|
CLOUD_PROVIDER_INCLOUD_SPHERE,
|
|
CLOUD_PROVIDER_PROXMOX,
|
|
CLOUD_PROVIDER_REMOTEFILE,
|
|
CLOUD_PROVIDER_H3C,
|
|
CLOUD_PROVIDER_KSYUN,
|
|
CLOUD_PROVIDER_BAIDU,
|
|
CLOUD_PROVIDER_CUCLOUD,
|
|
CLOUD_PROVIDER_QINGCLOUD,
|
|
CLOUD_PROVIDER_ORACLE,
|
|
CLOUD_PROVIDER_SANGFOR,
|
|
CLOUD_PROVIDER_ZETTAKIT,
|
|
CLOUD_PROVIDER_UIS,
|
|
CLOUD_PROVIDER_CAS,
|
|
CLOUD_PROVIDER_CLOUDFLARE,
|
|
CLOUD_PROVIDER_CNWARE,
|
|
CLOUD_PROVIDER_OCEANBASE,
|
|
CLOUD_PROVIDER_ROCKBASE,
|
|
}
|
|
|
|
CLOUD_PROVIDER_HOST_TYPE_MAP = map[string][]string{
|
|
CLOUD_PROVIDER_ONECLOUD: {
|
|
HOST_TYPE_KVM,
|
|
HOST_TYPE_BAREMETAL,
|
|
HOST_TYPE_HYPERVISOR,
|
|
HOST_TYPE_CONTAINER,
|
|
},
|
|
CLOUD_PROVIDER_VMWARE: {
|
|
HOST_TYPE_ESXI,
|
|
},
|
|
CLOUD_PROVIDER_ALIYUN: {
|
|
HOST_TYPE_ALIYUN,
|
|
},
|
|
CLOUD_PROVIDER_APSARA: {
|
|
HOST_TYPE_APSARA,
|
|
},
|
|
CLOUD_PROVIDER_QCLOUD: {
|
|
HOST_TYPE_QCLOUD,
|
|
},
|
|
CLOUD_PROVIDER_AZURE: {
|
|
HOST_TYPE_AZURE,
|
|
},
|
|
CLOUD_PROVIDER_AWS: {
|
|
HOST_TYPE_AWS,
|
|
HOST_TYPE_DEDICATED,
|
|
},
|
|
CLOUD_PROVIDER_HUAWEI: {
|
|
HOST_TYPE_HUAWEI,
|
|
},
|
|
CLOUD_PROVIDER_HCSO: {
|
|
HOST_TYPE_HCSO,
|
|
},
|
|
CLOUD_PROVIDER_HCSOP: {
|
|
HOST_TYPE_HCSOP,
|
|
},
|
|
CLOUD_PROVIDER_HCS: {
|
|
HOST_TYPE_HCS,
|
|
},
|
|
CLOUD_PROVIDER_OPENSTACK: {
|
|
HOST_TYPE_OPENSTACK,
|
|
},
|
|
CLOUD_PROVIDER_UCLOUD: {
|
|
HOST_TYPE_UCLOUD,
|
|
},
|
|
CLOUD_PROVIDER_VOLCENGINE: {
|
|
HOST_TYPE_VOLCENGINE,
|
|
},
|
|
CLOUD_PROVIDER_ZSTACK: {
|
|
HOST_TYPE_ZSTACK,
|
|
},
|
|
CLOUD_PROVIDER_GOOGLE: {
|
|
HOST_TYPE_GOOGLE,
|
|
},
|
|
CLOUD_PROVIDER_CTYUN: {
|
|
HOST_TYPE_CTYUN,
|
|
},
|
|
CLOUD_PROVIDER_ECLOUD: {
|
|
HOST_TYPE_ECLOUD,
|
|
},
|
|
CLOUD_PROVIDER_JDCLOUD: {
|
|
HOST_TYPE_JDCLOUD,
|
|
},
|
|
CLOUD_PROVIDER_CLOUDPODS: {
|
|
HOST_TYPE_CLOUDPODS,
|
|
},
|
|
CLOUD_PROVIDER_NUTANIX: {
|
|
HOST_TYPE_NUTANIX,
|
|
},
|
|
CLOUD_PROVIDER_BINGO_CLOUD: {
|
|
HOST_TYPE_BINGO_CLOUD,
|
|
},
|
|
CLOUD_PROVIDER_INCLOUD_SPHERE: {
|
|
HOST_TYPE_INCLOUD_SPHERE,
|
|
},
|
|
CLOUD_PROVIDER_PROXMOX: {
|
|
HOST_TYPE_PROXMOX,
|
|
},
|
|
CLOUD_PROVIDER_REMOTEFILE: {
|
|
HOST_TYPE_REMOTEFILE,
|
|
},
|
|
CLOUD_PROVIDER_H3C: {
|
|
HOST_TYPE_H3C,
|
|
},
|
|
CLOUD_PROVIDER_KSYUN: {
|
|
HOST_TYPE_KSYUN,
|
|
},
|
|
CLOUD_PROVIDER_BAIDU: {
|
|
HOST_TYPE_BAIDU,
|
|
},
|
|
CLOUD_PROVIDER_CUCLOUD: {
|
|
HOST_TYPE_CUCLOUD,
|
|
},
|
|
CLOUD_PROVIDER_QINGCLOUD: {
|
|
HOST_TYPE_QINGCLOUD,
|
|
},
|
|
CLOUD_PROVIDER_ORACLE: {
|
|
HOST_TYPE_ORACLE,
|
|
},
|
|
CLOUD_PROVIDER_SANGFOR: {
|
|
HOST_TYPE_SANGFOR,
|
|
},
|
|
CLOUD_PROVIDER_ZETTAKIT: {
|
|
HOST_TYPE_ZETTAKIT,
|
|
},
|
|
CLOUD_PROVIDER_UIS: {
|
|
HOST_TYPE_UIS,
|
|
},
|
|
CLOUD_PROVIDER_CAS: {
|
|
HOST_TYPE_CAS,
|
|
},
|
|
CLOUD_PROVIDER_CNWARE: {
|
|
HOST_TYPE_CNWARE,
|
|
},
|
|
CLOUD_PROVIDER_ROCKBASE: {
|
|
HOST_TYPE_ROCKBASE,
|
|
},
|
|
}
|
|
)
|
|
|
|
const (
|
|
CLOUD_ENV_PUBLIC_CLOUD = cloudprovider.CLOUD_ENV_PUBLIC_CLOUD
|
|
CLOUD_ENV_PRIVATE_CLOUD = cloudprovider.CLOUD_ENV_PRIVATE_CLOUD
|
|
CLOUD_ENV_ON_PREMISE = cloudprovider.CLOUD_ENV_ON_PREMISE
|
|
|
|
CLOUD_ENV_PRIVATE_ON_PREMISE = cloudprovider.CLOUD_ENV_PRIVATE_ON_PREMISE
|
|
)
|
|
|
|
const (
|
|
CLOUD_ACCOUNT_SHARE_MODE_ACCOUNT_DOMAIN = apis.CLOUD_ACCOUNT_SHARE_MODE_ACCOUNT_DOMAIN
|
|
CLOUD_ACCOUNT_SHARE_MODE_SYSTEM = apis.CLOUD_ACCOUNT_SHARE_MODE_SYSTEM
|
|
CLOUD_ACCOUNT_SHARE_MODE_PROVIDER_DOMAIN = apis.CLOUD_ACCOUNT_SHARE_MODE_PROVIDER_DOMAIN
|
|
)
|
|
|
|
var (
|
|
CLOUD_ACCOUNT_SHARE_MODES = []string{
|
|
CLOUD_ACCOUNT_SHARE_MODE_ACCOUNT_DOMAIN,
|
|
CLOUD_ACCOUNT_SHARE_MODE_SYSTEM,
|
|
CLOUD_ACCOUNT_SHARE_MODE_PROVIDER_DOMAIN,
|
|
}
|
|
|
|
CLOUD_ENV_MAP = map[string]map[string]string{
|
|
CLOUD_PROVIDER_AZURE: {
|
|
"AzureGermanCloud": CLOUD_ACCESS_ENV_AZURE_GERMAN,
|
|
"AzureChinaCloud": CLOUD_ACCESS_ENV_AZURE_CHINA,
|
|
"AzureUSGovernmentCloud": CLOUD_ACCESS_ENV_AZURE_US_GOVERNMENT,
|
|
"AzurePublicCloud": CLOUD_ACCESS_ENV_AZURE_GLOBAL,
|
|
},
|
|
CLOUD_PROVIDER_AWS: {
|
|
"InternationalCloud": CLOUD_ACCESS_ENV_AWS_GLOBAL,
|
|
"ChinaCloud": CLOUD_ACCESS_ENV_AWS_CHINA,
|
|
},
|
|
CLOUD_PROVIDER_ALIYUN: {
|
|
"InternationalCloud": CLOUD_PROVIDER_ALIYUN,
|
|
"FinanceCloud": CLOUD_ACCESS_ENV_ALIYUN_FINANCE,
|
|
},
|
|
}
|
|
)
|
|
|
|
func GetCloudEnv(provider, accessUrl string) string {
|
|
envMap, ok := CLOUD_ENV_MAP[provider]
|
|
if !ok {
|
|
return provider
|
|
}
|
|
env, ok := envMap[accessUrl]
|
|
if !ok {
|
|
return provider
|
|
}
|
|
return env
|
|
}
|