cloudaccount_const.go 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356
  1. // Copyright 2019 Yunion
  2. //
  3. // Licensed under the Apache License, Version 2.0 (the "License");
  4. // you may not use this file except in compliance with the License.
  5. // You may obtain a copy of the License at
  6. //
  7. // http://www.apache.org/licenses/LICENSE-2.0
  8. //
  9. // Unless required by applicable law or agreed to in writing, software
  10. // distributed under the License is distributed on an "AS IS" BASIS,
  11. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. // See the License for the specific language governing permissions and
  13. // limitations under the License.
  14. package compute
  15. import (
  16. "yunion.io/x/cloudmux/pkg/apis/compute"
  17. "yunion.io/x/cloudmux/pkg/cloudprovider"
  18. "yunion.io/x/onecloud/pkg/apis"
  19. "yunion.io/x/onecloud/pkg/util/choices"
  20. )
  21. const (
  22. CLOUD_PROVIDER_INIT = "init"
  23. CLOUD_PROVIDER_CONNECTED = "connected"
  24. CLOUD_PROVIDER_DISCONNECTED = "disconnected"
  25. CLOUD_PROVIDER_START_DELETE = "start_delete"
  26. CLOUD_PROVIDER_DELETING = "deleting"
  27. CLOUD_PROVIDER_DELETED = "deleted"
  28. CLOUD_PROVIDER_DELETE_FAILED = "delete_failed"
  29. CLOUD_PROVIDER_SYNC_NETWORK = "sync_network"
  30. CLOUD_PROVIDER_SYNC_NETWORK_FAILED = "sync_net_failed"
  31. CLOUD_PROVIDER_SYNC_STATUS_QUEUING = "queuing"
  32. CLOUD_PROVIDER_SYNC_STATUS_QUEUED = "queued"
  33. CLOUD_PROVIDER_SYNC_STATUS_SYNCING = "syncing"
  34. CLOUD_PROVIDER_SYNC_STATUS_IDLE = "idle"
  35. CLOUD_PROVIDER_SYNC_STATUS_ERROR = "error"
  36. CLOUD_PROVIDER_ONECLOUD = compute.CLOUD_PROVIDER_ONECLOUD
  37. CLOUD_PROVIDER_VMWARE = compute.CLOUD_PROVIDER_VMWARE
  38. CLOUD_PROVIDER_NUTANIX = compute.CLOUD_PROVIDER_NUTANIX
  39. CLOUD_PROVIDER_ALIYUN = compute.CLOUD_PROVIDER_ALIYUN
  40. CLOUD_PROVIDER_APSARA = compute.CLOUD_PROVIDER_APSARA
  41. CLOUD_PROVIDER_QCLOUD = compute.CLOUD_PROVIDER_QCLOUD
  42. CLOUD_PROVIDER_AZURE = compute.CLOUD_PROVIDER_AZURE
  43. CLOUD_PROVIDER_AWS = compute.CLOUD_PROVIDER_AWS
  44. CLOUD_PROVIDER_HUAWEI = compute.CLOUD_PROVIDER_HUAWEI
  45. CLOUD_PROVIDER_HCSO = compute.CLOUD_PROVIDER_HCSO
  46. CLOUD_PROVIDER_HCSOP = compute.CLOUD_PROVIDER_HCSOP
  47. CLOUD_PROVIDER_HCS = compute.CLOUD_PROVIDER_HCS
  48. CLOUD_PROVIDER_OPENSTACK = compute.CLOUD_PROVIDER_OPENSTACK
  49. CLOUD_PROVIDER_UCLOUD = compute.CLOUD_PROVIDER_UCLOUD
  50. CLOUD_PROVIDER_VOLCENGINE = compute.CLOUD_PROVIDER_VOLCENGINE
  51. CLOUD_PROVIDER_ZSTACK = compute.CLOUD_PROVIDER_ZSTACK
  52. CLOUD_PROVIDER_GOOGLE = compute.CLOUD_PROVIDER_GOOGLE
  53. CLOUD_PROVIDER_CTYUN = compute.CLOUD_PROVIDER_CTYUN
  54. CLOUD_PROVIDER_ECLOUD = compute.CLOUD_PROVIDER_ECLOUD
  55. CLOUD_PROVIDER_JDCLOUD = compute.CLOUD_PROVIDER_JDCLOUD
  56. CLOUD_PROVIDER_CLOUDPODS = compute.CLOUD_PROVIDER_CLOUDPODS
  57. CLOUD_PROVIDER_BINGO_CLOUD = compute.CLOUD_PROVIDER_BINGO_CLOUD
  58. CLOUD_PROVIDER_INCLOUD_SPHERE = compute.CLOUD_PROVIDER_INCLOUD_SPHERE
  59. CLOUD_PROVIDER_PROXMOX = compute.CLOUD_PROVIDER_PROXMOX
  60. CLOUD_PROVIDER_REMOTEFILE = compute.CLOUD_PROVIDER_REMOTEFILE
  61. CLOUD_PROVIDER_H3C = compute.CLOUD_PROVIDER_H3C
  62. CLOUD_PROVIDER_KSYUN = compute.CLOUD_PROVIDER_KSYUN
  63. CLOUD_PROVIDER_BAIDU = compute.CLOUD_PROVIDER_BAIDU
  64. CLOUD_PROVIDER_CUCLOUD = compute.CLOUD_PROVIDER_CUCLOUD
  65. CLOUD_PROVIDER_QINGCLOUD = compute.CLOUD_PROVIDER_QINGCLOUD
  66. CLOUD_PROVIDER_ORACLE = compute.CLOUD_PROVIDER_ORACLE
  67. CLOUD_PROVIDER_SANGFOR = compute.CLOUD_PROVIDER_SANGFOR
  68. CLOUD_PROVIDER_ZETTAKIT = compute.CLOUD_PROVIDER_ZETTAKIT
  69. CLOUD_PROVIDER_UIS = compute.CLOUD_PROVIDER_UIS
  70. CLOUD_PROVIDER_CAS = compute.CLOUD_PROVIDER_CAS
  71. CLOUD_PROVIDER_CLOUDFLARE = compute.CLOUD_PROVIDER_CLOUDFLARE
  72. CLOUD_PROVIDER_CNWARE = compute.CLOUD_PROVIDER_CNWARE
  73. CLOUD_PROVIDER_OCEANBASE = compute.CLOUD_PROVIDER_OCEANBASE
  74. CLOUD_PROVIDER_GENERICS3 = compute.CLOUD_PROVIDER_GENERICS3
  75. CLOUD_PROVIDER_CEPH = compute.CLOUD_PROVIDER_CEPH
  76. CLOUD_PROVIDER_XSKY = compute.CLOUD_PROVIDER_XSKY
  77. CLOUD_PROVIDER_CEPHFS = compute.CLOUD_PROVIDER_CEPHFS
  78. CLOUD_PROVIDER_HEALTH_NORMAL = compute.CLOUD_PROVIDER_HEALTH_NORMAL // 远端处于健康状态
  79. CLOUD_PROVIDER_HEALTH_INSUFFICIENT = compute.CLOUD_PROVIDER_HEALTH_INSUFFICIENT // 不足按需资源余额
  80. CLOUD_PROVIDER_HEALTH_SUSPENDED = compute.CLOUD_PROVIDER_HEALTH_SUSPENDED // 远端处于冻结状态
  81. CLOUD_PROVIDER_HEALTH_ARREARS = compute.CLOUD_PROVIDER_HEALTH_ARREARS // 远端处于欠费状态
  82. CLOUD_PROVIDER_HEALTH_UNKNOWN = compute.CLOUD_PROVIDER_HEALTH_UNKNOWN // 未知状态,查询失败
  83. CLOUD_PROVIDER_HEALTH_NO_PERMISSION = compute.CLOUD_PROVIDER_HEALTH_NO_PERMISSION // 没有权限获取账单信息
  84. ONECLOUD_BRAND_ONECLOUD = "OneCloud"
  85. CLOUD_ACCOUNT_WIRE_LEVEL_VCENTER = "vcenter"
  86. CLOUD_ACCOUNT_WIRE_LEVEL_DATACENTER = "datacenter"
  87. CLOUD_ACCOUNT_WIRE_LEVEL_CLUSTER = "cluster"
  88. )
  89. var CLOUD_ACCOUNT_WIRE_LEVELS = choices.NewChoices(
  90. CLOUD_ACCOUNT_WIRE_LEVEL_VCENTER,
  91. CLOUD_ACCOUNT_WIRE_LEVEL_DATACENTER,
  92. CLOUD_ACCOUNT_WIRE_LEVEL_CLUSTER,
  93. )
  94. const (
  95. CLOUD_ACCESS_ENV_AWS_GLOBAL = compute.CLOUD_ACCESS_ENV_AWS_GLOBAL
  96. CLOUD_ACCESS_ENV_AWS_CHINA = compute.CLOUD_ACCESS_ENV_AWS_CHINA
  97. CLOUD_ACCESS_ENV_AZURE_GLOBAL = compute.CLOUD_ACCESS_ENV_AZURE_GLOBAL
  98. CLOUD_ACCESS_ENV_AZURE_GERMAN = compute.CLOUD_ACCESS_ENV_AZURE_GERMAN
  99. CLOUD_ACCESS_ENV_AZURE_US_GOVERNMENT = compute.CLOUD_ACCESS_ENV_AZURE_US_GOVERNMENT
  100. CLOUD_ACCESS_ENV_AZURE_CHINA = compute.CLOUD_ACCESS_ENV_AZURE_CHINA
  101. CLOUD_ACCESS_ENV_ALIYUN_GLOBAL = compute.CLOUD_ACCESS_ENV_ALIYUN_GLOBAL
  102. CLOUD_ACCESS_ENV_ALIYUN_FINANCE = compute.CLOUD_ACCESS_ENV_ALIYUN_FINANCE
  103. CLOUD_ACCESS_ENV_CTYUN_CHINA = compute.CLOUD_ACCESS_ENV_CTYUN_CHINA
  104. CLOUD_ACCESS_ENV_ECLOUD_CHINA = compute.CLOUD_ACCESS_ENV_ECLOUD_CHINA
  105. CLOUD_ACCESS_ENV_JDCLOUD_CHINA = compute.CLOUD_ACCESS_ENV_JDCLOUD_CHINA
  106. )
  107. var (
  108. CLOUD_PROVIDER_VALID_STATUS = []string{CLOUD_PROVIDER_CONNECTED}
  109. CLOUD_PROVIDER_VALID_HEALTH_STATUS = []string{CLOUD_PROVIDER_HEALTH_NORMAL, CLOUD_PROVIDER_HEALTH_NO_PERMISSION}
  110. PRIVATE_CLOUD_PROVIDERS = []string{
  111. CLOUD_PROVIDER_NUTANIX, CLOUD_PROVIDER_BINGO_CLOUD, CLOUD_PROVIDER_CLOUDPODS,
  112. CLOUD_PROVIDER_ZSTACK, CLOUD_PROVIDER_OPENSTACK, CLOUD_PROVIDER_APSARA,
  113. CLOUD_PROVIDER_HCSO, CLOUD_PROVIDER_HCS, CLOUD_PROVIDER_HCSOP,
  114. CLOUD_PROVIDER_INCLOUD_SPHERE, CLOUD_PROVIDER_PROXMOX, CLOUD_PROVIDER_REMOTEFILE,
  115. CLOUD_PROVIDER_H3C, CLOUD_PROVIDER_SANGFOR, CLOUD_PROVIDER_ZSTACK, CLOUD_PROVIDER_UIS,
  116. CLOUD_PROVIDER_ZETTAKIT, CLOUD_PROVIDER_CAS, CLOUD_PROVIDER_CNWARE,
  117. }
  118. PUBLIC_CLOUD_PROVIDERS = []string{
  119. CLOUD_PROVIDER_ALIYUN,
  120. CLOUD_PROVIDER_AWS,
  121. CLOUD_PROVIDER_AZURE,
  122. CLOUD_PROVIDER_BAIDU,
  123. CLOUD_PROVIDER_CTYUN,
  124. CLOUD_PROVIDER_CUCLOUD,
  125. CLOUD_PROVIDER_ECLOUD,
  126. CLOUD_PROVIDER_HUAWEI,
  127. CLOUD_PROVIDER_QCLOUD,
  128. CLOUD_PROVIDER_UCLOUD,
  129. CLOUD_PROVIDER_GOOGLE,
  130. CLOUD_PROVIDER_KSYUN,
  131. CLOUD_PROVIDER_QINGCLOUD,
  132. CLOUD_PROVIDER_JDCLOUD,
  133. CLOUD_PROVIDER_VOLCENGINE,
  134. CLOUD_PROVIDER_ORACLE,
  135. CLOUD_PROVIDER_CLOUDFLARE,
  136. }
  137. CLOUD_PROVIDERS = []string{
  138. CLOUD_PROVIDER_ONECLOUD,
  139. CLOUD_PROVIDER_VMWARE,
  140. CLOUD_PROVIDER_ALIYUN,
  141. CLOUD_PROVIDER_APSARA,
  142. CLOUD_PROVIDER_QCLOUD,
  143. CLOUD_PROVIDER_AZURE,
  144. CLOUD_PROVIDER_AWS,
  145. CLOUD_PROVIDER_HUAWEI,
  146. CLOUD_PROVIDER_HCSO,
  147. CLOUD_PROVIDER_HCSOP,
  148. CLOUD_PROVIDER_HCS,
  149. CLOUD_PROVIDER_OPENSTACK,
  150. CLOUD_PROVIDER_UCLOUD,
  151. CLOUD_PROVIDER_VOLCENGINE,
  152. CLOUD_PROVIDER_ZSTACK,
  153. CLOUD_PROVIDER_GOOGLE,
  154. CLOUD_PROVIDER_CTYUN,
  155. CLOUD_PROVIDER_ECLOUD,
  156. CLOUD_PROVIDER_JDCLOUD,
  157. CLOUD_PROVIDER_CLOUDPODS,
  158. CLOUD_PROVIDER_NUTANIX,
  159. CLOUD_PROVIDER_BINGO_CLOUD,
  160. CLOUD_PROVIDER_INCLOUD_SPHERE,
  161. CLOUD_PROVIDER_PROXMOX,
  162. CLOUD_PROVIDER_REMOTEFILE,
  163. CLOUD_PROVIDER_H3C,
  164. CLOUD_PROVIDER_KSYUN,
  165. CLOUD_PROVIDER_BAIDU,
  166. CLOUD_PROVIDER_CUCLOUD,
  167. CLOUD_PROVIDER_QINGCLOUD,
  168. CLOUD_PROVIDER_ORACLE,
  169. CLOUD_PROVIDER_SANGFOR,
  170. CLOUD_PROVIDER_ZETTAKIT,
  171. CLOUD_PROVIDER_UIS,
  172. CLOUD_PROVIDER_CAS,
  173. CLOUD_PROVIDER_CLOUDFLARE,
  174. CLOUD_PROVIDER_CNWARE,
  175. CLOUD_PROVIDER_OCEANBASE,
  176. }
  177. CLOUD_PROVIDER_HOST_TYPE_MAP = map[string][]string{
  178. CLOUD_PROVIDER_ONECLOUD: {
  179. HOST_TYPE_KVM,
  180. HOST_TYPE_BAREMETAL,
  181. HOST_TYPE_HYPERVISOR,
  182. },
  183. CLOUD_PROVIDER_VMWARE: {
  184. HOST_TYPE_ESXI,
  185. },
  186. CLOUD_PROVIDER_ALIYUN: {
  187. HOST_TYPE_ALIYUN,
  188. },
  189. CLOUD_PROVIDER_APSARA: {
  190. HOST_TYPE_APSARA,
  191. },
  192. CLOUD_PROVIDER_QCLOUD: {
  193. HOST_TYPE_QCLOUD,
  194. },
  195. CLOUD_PROVIDER_AZURE: {
  196. HOST_TYPE_AZURE,
  197. },
  198. CLOUD_PROVIDER_AWS: {
  199. HOST_TYPE_AWS,
  200. },
  201. CLOUD_PROVIDER_HUAWEI: {
  202. HOST_TYPE_HUAWEI,
  203. },
  204. CLOUD_PROVIDER_HCSO: {
  205. HOST_TYPE_HCSO,
  206. },
  207. CLOUD_PROVIDER_HCSOP: {
  208. HOST_TYPE_HCSOP,
  209. },
  210. CLOUD_PROVIDER_HCS: {
  211. HOST_TYPE_HCS,
  212. },
  213. CLOUD_PROVIDER_OPENSTACK: {
  214. HOST_TYPE_OPENSTACK,
  215. },
  216. CLOUD_PROVIDER_UCLOUD: {
  217. HOST_TYPE_UCLOUD,
  218. },
  219. CLOUD_PROVIDER_VOLCENGINE: {
  220. HOST_TYPE_VOLCENGINE,
  221. },
  222. CLOUD_PROVIDER_ZSTACK: {
  223. HOST_TYPE_ZSTACK,
  224. },
  225. CLOUD_PROVIDER_GOOGLE: {
  226. HOST_TYPE_GOOGLE,
  227. },
  228. CLOUD_PROVIDER_CTYUN: {
  229. HOST_TYPE_CTYUN,
  230. },
  231. CLOUD_PROVIDER_ECLOUD: {
  232. HOST_TYPE_ECLOUD,
  233. },
  234. CLOUD_PROVIDER_JDCLOUD: {
  235. HOST_TYPE_JDCLOUD,
  236. },
  237. CLOUD_PROVIDER_CLOUDPODS: {
  238. HOST_TYPE_CLOUDPODS,
  239. },
  240. CLOUD_PROVIDER_NUTANIX: {
  241. HOST_TYPE_NUTANIX,
  242. },
  243. CLOUD_PROVIDER_BINGO_CLOUD: {
  244. HOST_TYPE_BINGO_CLOUD,
  245. },
  246. CLOUD_PROVIDER_INCLOUD_SPHERE: {
  247. HOST_TYPE_INCLOUD_SPHERE,
  248. },
  249. CLOUD_PROVIDER_PROXMOX: {
  250. HOST_TYPE_PROXMOX,
  251. },
  252. CLOUD_PROVIDER_REMOTEFILE: {
  253. HOST_TYPE_REMOTEFILE,
  254. },
  255. CLOUD_PROVIDER_H3C: {
  256. HOST_TYPE_H3C,
  257. },
  258. CLOUD_PROVIDER_KSYUN: {
  259. HOST_TYPE_KSYUN,
  260. },
  261. CLOUD_PROVIDER_BAIDU: {
  262. HOST_TYPE_BAIDU,
  263. },
  264. CLOUD_PROVIDER_CUCLOUD: {
  265. HOST_TYPE_CUCLOUD,
  266. },
  267. CLOUD_PROVIDER_QINGCLOUD: {
  268. HOST_TYPE_QINGCLOUD,
  269. },
  270. CLOUD_PROVIDER_ORACLE: {
  271. HOST_TYPE_ORACLE,
  272. },
  273. CLOUD_PROVIDER_SANGFOR: {
  274. HOST_TYPE_SANGFOR,
  275. },
  276. CLOUD_PROVIDER_ZETTAKIT: {
  277. HOST_TYPE_ZETTAKIT,
  278. },
  279. CLOUD_PROVIDER_UIS: {
  280. HOST_TYPE_UIS,
  281. },
  282. CLOUD_PROVIDER_CAS: {
  283. HOST_TYPE_CAS,
  284. },
  285. CLOUD_PROVIDER_CNWARE: {
  286. HOST_TYPE_CNWARE,
  287. },
  288. }
  289. )
  290. const (
  291. CLOUD_ENV_PUBLIC_CLOUD = cloudprovider.CLOUD_ENV_PUBLIC_CLOUD
  292. CLOUD_ENV_PRIVATE_CLOUD = cloudprovider.CLOUD_ENV_PRIVATE_CLOUD
  293. CLOUD_ENV_ON_PREMISE = cloudprovider.CLOUD_ENV_ON_PREMISE
  294. CLOUD_ENV_PRIVATE_ON_PREMISE = cloudprovider.CLOUD_ENV_PRIVATE_ON_PREMISE
  295. )
  296. const (
  297. CLOUD_ACCOUNT_SHARE_MODE_ACCOUNT_DOMAIN = apis.CLOUD_ACCOUNT_SHARE_MODE_ACCOUNT_DOMAIN
  298. CLOUD_ACCOUNT_SHARE_MODE_SYSTEM = apis.CLOUD_ACCOUNT_SHARE_MODE_SYSTEM
  299. CLOUD_ACCOUNT_SHARE_MODE_PROVIDER_DOMAIN = apis.CLOUD_ACCOUNT_SHARE_MODE_PROVIDER_DOMAIN
  300. )
  301. var (
  302. CLOUD_ACCOUNT_SHARE_MODES = []string{
  303. CLOUD_ACCOUNT_SHARE_MODE_ACCOUNT_DOMAIN,
  304. CLOUD_ACCOUNT_SHARE_MODE_SYSTEM,
  305. CLOUD_ACCOUNT_SHARE_MODE_PROVIDER_DOMAIN,
  306. }
  307. CLOUD_ENV_MAP = map[string]map[string]string{
  308. CLOUD_PROVIDER_AZURE: {
  309. "AzureGermanCloud": CLOUD_ACCESS_ENV_AZURE_GERMAN,
  310. "AzureChinaCloud": CLOUD_ACCESS_ENV_AZURE_CHINA,
  311. "AzureUSGovernmentCloud": CLOUD_ACCESS_ENV_AZURE_US_GOVERNMENT,
  312. "AzurePublicCloud": CLOUD_ACCESS_ENV_AZURE_GLOBAL,
  313. },
  314. CLOUD_PROVIDER_AWS: {
  315. "InternationalCloud": CLOUD_ACCESS_ENV_AWS_GLOBAL,
  316. "ChinaCloud": CLOUD_ACCESS_ENV_AWS_CHINA,
  317. },
  318. CLOUD_PROVIDER_ALIYUN: {
  319. "InternationalCloud": CLOUD_PROVIDER_ALIYUN,
  320. "FinanceCloud": CLOUD_ACCESS_ENV_ALIYUN_FINANCE,
  321. },
  322. }
  323. )
  324. func GetCloudEnv(provider, accessUrl string) string {
  325. envMap, ok := CLOUD_ENV_MAP[provider]
  326. if !ok {
  327. return provider
  328. }
  329. env, ok := envMap[accessUrl]
  330. if !ok {
  331. return provider
  332. }
  333. return env
  334. }