resources.go 45 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898
  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 cloudprovider
  15. import (
  16. "context"
  17. "time"
  18. "yunion.io/x/jsonutils"
  19. "yunion.io/x/pkg/errors"
  20. "yunion.io/x/pkg/tristate"
  21. "yunion.io/x/pkg/util/billing"
  22. "yunion.io/x/pkg/util/rbacscope"
  23. "yunion.io/x/pkg/util/samlutils"
  24. "yunion.io/x/pkg/util/secrules"
  25. api "yunion.io/x/cloudmux/pkg/apis/cloudid"
  26. )
  27. type ICloudResource interface {
  28. GetId() string
  29. GetName() string
  30. GetGlobalId() string
  31. GetCreatedAt() time.Time
  32. GetDescription() string
  33. GetStatus() string
  34. Refresh() error
  35. IsEmulated() bool
  36. GetSysTags() map[string]string
  37. GetTags() (map[string]string, error)
  38. SetTags(tags map[string]string, replace bool) error
  39. }
  40. type ICloudEnabledResource interface {
  41. ICloudResource
  42. GetEnabled() bool
  43. }
  44. type IVirtualResource interface {
  45. ICloudResource
  46. GetProjectId() string
  47. }
  48. type IBillingResource interface {
  49. GetBillingType() string
  50. GetExpiredAt() time.Time
  51. SetAutoRenew(bc billing.SBillingCycle) error
  52. Renew(bc billing.SBillingCycle) error
  53. ChangeBillingType(billType string) error
  54. IsAutoRenew() bool
  55. }
  56. type ICloudI18nResource interface {
  57. GetI18n() SModelI18nTable
  58. }
  59. type ICloudRegion interface {
  60. ICloudResource
  61. ICloudI18nResource
  62. GetGeographicInfo() SGeographicInfo
  63. GetIZones() ([]ICloudZone, error)
  64. GetIVpcs() ([]ICloudVpc, error)
  65. GetIEips() ([]ICloudEIP, error)
  66. GetIVpcById(id string) (ICloudVpc, error)
  67. GetIZoneById(id string) (ICloudZone, error)
  68. GetIEipById(id string) (ICloudEIP, error)
  69. // ICoudVM 的 GetGlobalId 接口不能panic
  70. GetIVMs() ([]ICloudVM, error)
  71. // Esxi没有zone,需要通过region确认vm是否被删除
  72. GetIVMById(id string) (ICloudVM, error)
  73. GetIDiskById(id string) (ICloudDisk, error)
  74. // 仅返回region级别的安全组, vpc下面的安全组需要在ICloudVpc底下返回
  75. GetISecurityGroups() ([]ICloudSecurityGroup, error)
  76. GetISecurityGroupById(secgroupId string) (ICloudSecurityGroup, error)
  77. CreateISecurityGroup(opts *SecurityGroupCreateInput) (ICloudSecurityGroup, error)
  78. CreateIVpc(opts *VpcCreateOptions) (ICloudVpc, error)
  79. CreateInternetGateway() (ICloudInternetGateway, error)
  80. CreateEIP(eip *SEip) (ICloudEIP, error)
  81. GetISnapshots() ([]ICloudSnapshot, error)
  82. GetISnapshotById(snapshotId string) (ICloudSnapshot, error)
  83. CreateSnapshotPolicy(*SnapshotPolicyInput) (string, error)
  84. GetISnapshotPolicies() ([]ICloudSnapshotPolicy, error)
  85. GetISnapshotPolicyById(id string) (ICloudSnapshotPolicy, error)
  86. GetIHosts() ([]ICloudHost, error)
  87. GetIHostById(id string) (ICloudHost, error)
  88. GetIStorages() ([]ICloudStorage, error)
  89. GetIStorageById(id string) (ICloudStorage, error)
  90. GetIStoragecaches() ([]ICloudStoragecache, error)
  91. GetIStoragecacheById(id string) (ICloudStoragecache, error)
  92. GetILoadBalancers() ([]ICloudLoadbalancer, error)
  93. GetILoadBalancerAcls() ([]ICloudLoadbalancerAcl, error)
  94. GetILoadBalancerHealthChecks() ([]ICloudLoadbalancerHealthCheck, error)
  95. GetILoadBalancerCertificates() ([]ICloudLoadbalancerCertificate, error)
  96. GetILoadBalancerById(loadbalancerId string) (ICloudLoadbalancer, error)
  97. GetILoadBalancerAclById(aclId string) (ICloudLoadbalancerAcl, error)
  98. GetILoadBalancerCertificateById(certId string) (ICloudLoadbalancerCertificate, error)
  99. CreateILoadBalancer(loadbalancer *SLoadbalancerCreateOptions) (ICloudLoadbalancer, error)
  100. CreateILoadBalancerAcl(acl *SLoadbalancerAccessControlList) (ICloudLoadbalancerAcl, error)
  101. CreateILoadBalancerCertificate(cert *SLoadbalancerCertificate) (ICloudLoadbalancerCertificate, error)
  102. CreateILoadBalancerHealthCheck(healthCheck *SLoadbalancerHealthCheck) (ICloudLoadbalancerHealthCheck, error)
  103. GetISkus() ([]ICloudSku, error)
  104. CreateISku(opts *SServerSkuCreateOption) (ICloudSku, error)
  105. GetICloudNatSkus() ([]ICloudNatSku, error)
  106. GetINetworkInterfaces() ([]ICloudNetworkInterface, error)
  107. GetIBuckets() ([]ICloudBucket, error)
  108. CreateIBucket(name string, storageClassStr string, acl string) error
  109. DeleteIBucket(name string) error
  110. IBucketExist(name string) (bool, error)
  111. GetIBucketById(name string) (ICloudBucket, error)
  112. GetIBucketByName(name string) (ICloudBucket, error)
  113. GetIDBInstances() ([]ICloudDBInstance, error)
  114. GetIDBInstanceById(instanceId string) (ICloudDBInstance, error)
  115. GetIDBInstanceBackups() ([]ICloudDBInstanceBackup, error)
  116. GetIDBInstanceBackupById(backupId string) (ICloudDBInstanceBackup, error)
  117. GetIDBInstanceSkus() ([]ICloudDBInstanceSku, error)
  118. CreateIDBInstance(desc *SManagedDBInstanceCreateConfig) (ICloudDBInstance, error)
  119. GetIElasticcaches() ([]ICloudElasticcache, error)
  120. GetIElasticcacheSkus() ([]ICloudElasticcacheSku, error)
  121. GetIElasticcacheById(id string) (ICloudElasticcache, error)
  122. CreateIElasticcaches(ec *SCloudElasticCacheInput) (ICloudElasticcache, error)
  123. GetCloudEnv() string
  124. GetProvider() string
  125. GetICloudEvents(start time.Time, end time.Time, withReadEvent bool) ([]ICloudEvent, error) //获取公有云操作日志接口
  126. GetCapabilities() []string
  127. GetICloudQuotas() ([]ICloudQuota, error)
  128. GetICloudFileSystems() ([]ICloudFileSystem, error)
  129. GetICloudFileSystemById(id string) (ICloudFileSystem, error)
  130. CreateICloudFileSystem(opts *FileSystemCraeteOptions) (ICloudFileSystem, error)
  131. GetICloudAccessGroups() ([]ICloudAccessGroup, error)
  132. CreateICloudAccessGroup(opts *SAccessGroup) (ICloudAccessGroup, error)
  133. GetICloudAccessGroupById(id string) (ICloudAccessGroup, error)
  134. GetICloudWafIPSets() ([]ICloudWafIPSet, error)
  135. GetICloudWafRegexSets() ([]ICloudWafRegexSet, error)
  136. GetICloudWafInstances() ([]ICloudWafInstance, error)
  137. GetICloudWafInstanceById(id string) (ICloudWafInstance, error)
  138. CreateICloudWafInstance(opts *WafCreateOptions) (ICloudWafInstance, error)
  139. GetICloudWafRuleGroups() ([]ICloudWafRuleGroup, error)
  140. GetICloudMongoDBs() ([]ICloudMongoDB, error)
  141. GetICloudMongoDBById(id string) (ICloudMongoDB, error)
  142. GetIElasticSearchs() ([]ICloudElasticSearch, error)
  143. GetIElasticSearchById(id string) (ICloudElasticSearch, error)
  144. GetICloudKafkas() ([]ICloudKafka, error)
  145. GetICloudKafkaById(id string) (ICloudKafka, error)
  146. GetICloudApps() ([]ICloudApp, error)
  147. GetICloudAppById(id string) (ICloudApp, error)
  148. GetICloudKubeClusters() ([]ICloudKubeCluster, error)
  149. GetICloudKubeClusterById(id string) (ICloudKubeCluster, error)
  150. CreateIKubeCluster(opts *KubeClusterCreateOptions) (ICloudKubeCluster, error)
  151. GetICloudTablestores() ([]ICloudTablestore, error)
  152. GetIModelartsPools() ([]ICloudModelartsPool, error)
  153. GetIModelartsPoolById(id string) (ICloudModelartsPool, error)
  154. CreateIModelartsPool(pool *ModelartsPoolCreateOption, callback func(externalId string)) (ICloudModelartsPool, error)
  155. GetIModelartsPoolSku() ([]ICloudModelartsPoolSku, error)
  156. GetIMiscResources() ([]ICloudMiscResource, error)
  157. }
  158. type ICloudZone interface {
  159. ICloudResource
  160. ICloudI18nResource
  161. GetIRegion() ICloudRegion
  162. GetIHosts() ([]ICloudHost, error)
  163. GetIHostById(id string) (ICloudHost, error)
  164. GetIStorages() ([]ICloudStorage, error)
  165. GetIStorageById(id string) (ICloudStorage, error)
  166. }
  167. type ICloudImage interface {
  168. IVirtualResource
  169. IOSInfo
  170. Delete(ctx context.Context) error
  171. GetIStoragecache() ICloudStoragecache
  172. GetSizeByte() int64
  173. GetImageType() TImageType
  174. GetImageStatus() string
  175. GetMinOsDiskSizeGb() int
  176. GetMinRamSizeMb() int
  177. GetImageFormat() string
  178. GetPublicScope() rbacscope.TRbacScope
  179. GetSubImages() []SSubImage
  180. Export(opts *SImageExportOptions) ([]SImageExportInfo, error)
  181. }
  182. type ICloudStoragecache interface {
  183. ICloudResource
  184. // 私有云需要实现
  185. GetICloudImages() ([]ICloudImage, error)
  186. // 公有云需要实现
  187. GetICustomizedCloudImages() ([]ICloudImage, error)
  188. GetIImageById(extId string) (ICloudImage, error)
  189. GetPath() string
  190. UploadImage(ctx context.Context, image *SImageCreateOption, callback func(float32)) (string, error)
  191. }
  192. type ICloudStorage interface {
  193. ICloudResource
  194. GetIStoragecache() ICloudStoragecache
  195. GetIZone() ICloudZone
  196. GetIDisks() ([]ICloudDisk, error)
  197. GetStorageType() string
  198. GetMediumType() string
  199. GetCapacityMB() int64 // MB
  200. GetCapacityUsedMB() int64
  201. GetStorageConf() jsonutils.JSONObject
  202. GetEnabled() bool
  203. CreateIDisk(conf *DiskCreateConfig) (ICloudDisk, error)
  204. GetIDiskById(idStr string) (ICloudDisk, error)
  205. GetMountPoint() string
  206. IsSysDiskStore() bool
  207. DisableSync() bool
  208. }
  209. type ICloudHost interface {
  210. ICloudResource
  211. GetIVMs() ([]ICloudVM, error)
  212. GetIVMById(id string) (ICloudVM, error)
  213. GetIStorages() ([]ICloudStorage, error)
  214. GetIStorageById(id string) (ICloudStorage, error)
  215. GetEnabled() bool // is enabled
  216. GetHostStatus() string // service status
  217. GetAccessIp() string //
  218. GetAccessMac() string //
  219. GetSysInfo() jsonutils.JSONObject
  220. GetSN() string
  221. GetCpuCount() int
  222. GetNodeCount() int8
  223. GetCpuDesc() string
  224. GetCpuMhz() int
  225. GetCpuCmtbound() float32
  226. GetCpuArchitecture() string
  227. GetMemSizeMB() int
  228. GetMemCmtbound() float32
  229. GetReservedMemoryMb() int
  230. GetStorageSizeMB() int64
  231. GetStorageType() string
  232. GetHostType() string
  233. GetStorageDriver() string
  234. GetStorageInfo() jsonutils.JSONObject
  235. GetIsMaintenance() bool
  236. GetVersion() string
  237. CreateVM(desc *SManagedVMCreateConfig) (ICloudVM, error)
  238. GetIHostNics() ([]ICloudHostNetInterface, error)
  239. GetSchedtags() ([]Schedtag, error)
  240. GetOvnVersion() string // just for cloudpods host
  241. GetIsolateDevices() ([]IsolateDevice, error)
  242. GetIpmiInfo() jsonutils.JSONObject
  243. }
  244. type IsolateDevice interface {
  245. GetName() string
  246. GetGlobalId() string
  247. GetModel() string
  248. GetAddr() string
  249. GetDevType() string
  250. GetNumaNode() int8
  251. GetVendorDeviceId() string
  252. GetSharedProjectIds() ([]string, error)
  253. }
  254. type ICloudVM interface {
  255. IBillingResource
  256. IVirtualResource
  257. IOSInfo
  258. ConvertPublicIpToEip() error
  259. GetHostname() string
  260. GetIHost() ICloudHost
  261. GetIHostId() string
  262. GetIDisks() ([]ICloudDisk, error)
  263. GetINics() ([]ICloudNic, error)
  264. GetIEIP() (ICloudEIP, error)
  265. GetInternetMaxBandwidthOut() int
  266. GetThroughput() int
  267. GetSerialOutput(port int) (string, error) // 目前仅谷歌云windows机器会使用到此接口
  268. GetCpuSockets() int
  269. GetVcpuCount() int
  270. GetVmemSizeMB() int //MB
  271. GetBootOrder() string
  272. GetVga() string
  273. GetVdi() string
  274. GetMachine() string
  275. GetInstanceType() string
  276. GetSecurityGroupIds() ([]string, error)
  277. SetSecurityGroups(secgroupIds []string) error
  278. GetHypervisor() string
  279. StartVM(ctx context.Context) error
  280. StopVM(ctx context.Context, opts *ServerStopOptions) error
  281. // 需要删除挂载的磁盘
  282. DeleteVM(ctx context.Context) error
  283. UpdateVM(ctx context.Context, input SInstanceUpdateOptions) error
  284. UpdateUserData(userData string) error
  285. RebuildRoot(ctx context.Context, config *SManagedVMRebuildRootConfig) (string, error)
  286. DeployVM(ctx context.Context, opts *SInstanceDeployOptions) error
  287. ChangeConfig(ctx context.Context, config *SManagedVMChangeConfig) error
  288. // 获取实例可变更类型
  289. GetModificationTypes() ([]SInstanceModificationType, error)
  290. GetVNCInfo(input *ServerVncInput) (*ServerVncOutput, error)
  291. // 若有跟随主机删除的选项,需要设置为True
  292. AttachDisk(ctx context.Context, diskId string) error
  293. DetachDisk(ctx context.Context, diskId string) error
  294. CreateDisk(ctx context.Context, opts *GuestDiskCreateOptions) (string, error)
  295. MigrateVM(hostid string) error
  296. LiveMigrateVM(hostid string) error
  297. GetError() error
  298. CreateInstanceSnapshot(ctx context.Context, name string, desc string) (ICloudInstanceSnapshot, error)
  299. GetInstanceSnapshot(idStr string) (ICloudInstanceSnapshot, error)
  300. GetInstanceSnapshots() ([]ICloudInstanceSnapshot, error)
  301. ResetToInstanceSnapshot(ctx context.Context, idStr string) error
  302. SaveImage(opts *SaveImageOptions) (ICloudImage, error)
  303. AllocatePublicIpAddress() (string, error)
  304. GetPowerStates() string
  305. GetHealthStatus() string
  306. GetIsolateDeviceIds() ([]string, error)
  307. GetContainers() ([]ICloudContainer, error)
  308. }
  309. type SContainerEnv struct {
  310. Key string
  311. Value string
  312. }
  313. type ICloudContainer interface {
  314. ICloudResource
  315. GetImage() string
  316. GetCommand() []string
  317. GetEnvs() []SContainerEnv
  318. GetStartedAt() time.Time
  319. GetLastFinishedAt() time.Time
  320. GetRestartCount() int
  321. GetVolumentMounts() ([]ICloudVolumeMount, error)
  322. GetDevices() ([]IContainerDevice, error)
  323. }
  324. type ICloudVolumeMount interface {
  325. GetName() string
  326. IsReadOnly() bool
  327. GetType() string
  328. }
  329. type IContainerDevice interface {
  330. GetId() string
  331. GetType() string
  332. }
  333. type ICloudNic interface {
  334. GetId() string
  335. GetIP() string
  336. GetIP6() string
  337. GetMAC() string
  338. InClassicNetwork() bool
  339. GetDriver() string
  340. GetINetworkId() string
  341. // GetSubAddress returns non-primary/secondary/alias ipv4 addresses of
  342. // the network interface
  343. //
  344. // Implement it when any AssignXx ops methods are implemented
  345. GetSubAddress() ([]string, error)
  346. AssignNAddress(count int) ([]string, error)
  347. AssignAddress(ipAddrs []string) error
  348. // UnassignAddress should not return error if the network interface is
  349. // now not present, or the addresses is not assigned to the network
  350. // interface in the first place
  351. UnassignAddress(ipAddrs []string) error
  352. }
  353. const ErrAddressCountExceed = errors.Error("ErrAddressCountExceed")
  354. type DummyICloudNic struct{}
  355. var _ ICloudNic = DummyICloudNic{}
  356. func (d DummyICloudNic) GetId() string { panic(errors.ErrNotImplemented) }
  357. func (d DummyICloudNic) GetIP() string { panic(errors.ErrNotImplemented) }
  358. func (d DummyICloudNic) GetIP6() string { return "" }
  359. func (d DummyICloudNic) GetMAC() string { panic(errors.ErrNotImplemented) }
  360. func (d DummyICloudNic) InClassicNetwork() bool { panic(errors.ErrNotImplemented) }
  361. func (d DummyICloudNic) GetDriver() string { panic(errors.ErrNotImplemented) }
  362. func (d DummyICloudNic) GetINetworkId() string { panic(errors.ErrNotImplemented) }
  363. func (d DummyICloudNic) GetSubAddress() ([]string, error) {
  364. return nil, nil
  365. }
  366. func (d DummyICloudNic) AssignNAddress(count int) ([]string, error) {
  367. return nil, errors.ErrNotImplemented
  368. }
  369. func (d DummyICloudNic) AssignAddress(ipAddrs []string) error { return errors.ErrNotImplemented }
  370. func (d DummyICloudNic) UnassignAddress(ipAddrs []string) error { return errors.ErrNotImplemented }
  371. type ICloudEIP interface {
  372. IBillingResource
  373. IVirtualResource
  374. GetIpAddr() string
  375. GetMode() string
  376. GetINetworkId() string
  377. GetAssociationType() string
  378. GetAssociationExternalId() string
  379. GetBandwidth() int
  380. GetInternetChargeType() string
  381. Delete() error
  382. Associate(conf *AssociateConfig) error
  383. Dissociate() error
  384. ChangeBandwidth(bw int) error
  385. }
  386. type ICloudSecurityGroup interface {
  387. IVirtualResource
  388. GetDescription() string
  389. // 返回的优先级字段(priority)要求数字越大优先级越高, 若有默认不可修改的allow规则依然需要返回
  390. GetRules() ([]ISecurityGroupRule, error)
  391. GetVpcId() string
  392. CreateRule(opts *SecurityGroupRuleCreateOptions) (ISecurityGroupRule, error)
  393. GetReferences() ([]SecurityGroupReference, error)
  394. Delete() error
  395. }
  396. type ISecurityGroupRule interface {
  397. GetGlobalId() string
  398. GetDirection() secrules.TSecurityRuleDirection
  399. GetPriority() int
  400. GetAction() secrules.TSecurityRuleAction
  401. GetProtocol() string
  402. GetPorts() string
  403. GetDescription() string
  404. GetCIDRs() []string
  405. Update(opts *SecurityGroupRuleUpdateOptions) error
  406. Delete() error
  407. }
  408. type ICloudRouteTable interface {
  409. ICloudResource
  410. GetAssociations() []RouteTableAssociation
  411. GetDescription() string
  412. GetRegionId() string
  413. GetVpcId() string
  414. GetType() RouteTableType
  415. GetIRoutes() ([]ICloudRoute, error)
  416. CreateRoute(route RouteSet) error
  417. UpdateRoute(route RouteSet) error
  418. RemoveRoute(route RouteSet) error
  419. }
  420. type ICloudRoute interface {
  421. ICloudResource
  422. GetType() string
  423. GetCidr() string
  424. GetNextHopType() string
  425. GetNextHop() string
  426. }
  427. type ICloudDisk interface {
  428. IBillingResource
  429. IVirtualResource
  430. GetIStorage() (ICloudStorage, error)
  431. GetIStorageId() string
  432. // GetStatus() string
  433. GetDiskFormat() string
  434. GetDiskSizeMB() int // MB
  435. GetDeviceName() string
  436. GetIsAutoDelete() bool
  437. GetTemplateId() string
  438. GetDiskType() string
  439. GetFsFormat() string
  440. GetIsNonPersistent() bool
  441. GetIops() int
  442. GetDriver() string
  443. GetCacheMode() string
  444. GetMountpoint() string
  445. GetAccessPath() string
  446. Delete(ctx context.Context) error
  447. CreateISnapshot(ctx context.Context, name string, desc string) (ICloudSnapshot, error)
  448. GetISnapshots() ([]ICloudSnapshot, error)
  449. Resize(ctx context.Context, newSizeMB int64) error
  450. Reset(ctx context.Context, snapshotId string) (string, error)
  451. Rebuild(ctx context.Context) error
  452. GetPreallocation() string
  453. ChangeStorage(ctx context.Context, opts *ChangeStorageOptions) error
  454. }
  455. type ICloudSnapshot interface {
  456. IVirtualResource
  457. GetSizeMb() int32
  458. GetDiskId() string
  459. GetDiskType() string
  460. Delete() error
  461. }
  462. type ICloudInstanceSnapshot interface {
  463. IVirtualResource
  464. GetDescription() string
  465. Delete() error
  466. }
  467. type ICloudSnapshotPolicy interface {
  468. IVirtualResource
  469. GetRetentionDays() int
  470. GetRepeatWeekdays() ([]int, error)
  471. GetTimePoints() ([]int, error)
  472. Delete() error
  473. ApplyDisks(ids []string) error
  474. CancelDisks(ids []string) error
  475. GetApplyDiskIds() ([]string, error)
  476. }
  477. type ICloudGlobalVpc interface {
  478. ICloudResource
  479. GetISecurityGroups() ([]ICloudSecurityGroup, error)
  480. CreateISecurityGroup(opts *SecurityGroupCreateInput) (ICloudSecurityGroup, error)
  481. Delete() error
  482. }
  483. type ICloudIPv6Gateway interface {
  484. IVirtualResource
  485. GetInstanceType() string
  486. }
  487. type ICloudVpc interface {
  488. ICloudResource
  489. GetGlobalVpcId() string
  490. IsSupportSetExternalAccess() bool // 是否支持Attach互联网网关.
  491. GetExternalAccessMode() string
  492. AttachInternetGateway(igwId string) error
  493. GetRegion() ICloudRegion
  494. GetIsDefault() bool
  495. GetCidrBlock() string
  496. GetCidrBlock6() string
  497. GetIWires() ([]ICloudWire, error)
  498. CreateIWire(opts *SWireCreateOptions) (ICloudWire, error)
  499. GetISecurityGroups() ([]ICloudSecurityGroup, error)
  500. GetIRouteTables() ([]ICloudRouteTable, error)
  501. GetIRouteTableById(routeTableId string) (ICloudRouteTable, error)
  502. Delete() error
  503. GetIWireById(wireId string) (ICloudWire, error)
  504. GetINatGateways() ([]ICloudNatGateway, error)
  505. CreateINatGateway(opts *NatGatewayCreateOptions) (ICloudNatGateway, error)
  506. GetICloudVpcPeeringConnections() ([]ICloudVpcPeeringConnection, error)
  507. GetICloudAccepterVpcPeeringConnections() ([]ICloudVpcPeeringConnection, error)
  508. GetICloudVpcPeeringConnectionById(id string) (ICloudVpcPeeringConnection, error)
  509. CreateICloudVpcPeeringConnection(opts *VpcPeeringConnectionCreateOptions) (ICloudVpcPeeringConnection, error)
  510. AcceptICloudVpcPeeringConnection(id string) error
  511. GetAuthorityOwnerId() string
  512. ProposeJoinICloudInterVpcNetwork(opts *SVpcJointInterVpcNetworkOption) error
  513. GetICloudIPv6Gateways() ([]ICloudIPv6Gateway, error)
  514. }
  515. type ICloudInternetGateway interface {
  516. ICloudResource
  517. }
  518. type ICloudWire interface {
  519. ICloudResource
  520. GetIVpc() ICloudVpc
  521. GetIZone() ICloudZone
  522. GetINetworks() ([]ICloudNetwork, error)
  523. GetBandwidth() int
  524. GetINetworkById(netid string) (ICloudNetwork, error)
  525. CreateINetwork(opts *SNetworkCreateOptions) (ICloudNetwork, error)
  526. }
  527. type ICloudNetwork interface {
  528. IVirtualResource
  529. GetIWire() ICloudWire
  530. GetIpStart() string
  531. GetIpEnd() string
  532. GetIpMask() int8
  533. GetGateway() string
  534. // IPv6
  535. GetIp6Start() string
  536. GetIp6End() string
  537. GetIp6Mask() uint8
  538. GetGateway6() string
  539. GetServerType() string
  540. //GetIsPublic() bool
  541. // 仅私有云有用,公有云无效
  542. // 1. scope = none 非共享, network仅会属于一个项目,并且私有
  543. // 2. scope = system 系统共享 云账号共享会跟随云账号共享,云账号非共享,会共享到network所在域
  544. GetPublicScope() rbacscope.TRbacScope
  545. Delete() error
  546. GetAllocTimeoutSeconds() int
  547. }
  548. type ICloudHostNetInterface interface {
  549. GetDevice() string
  550. GetDriver() string
  551. GetMac() string
  552. GetVlanId() int
  553. GetIndex() int8
  554. IsLinkUp() tristate.TriState
  555. GetIpAddr() string
  556. GetMtu() int32
  557. GetNicType() string
  558. GetBridge() string
  559. GetIWire() ICloudWire
  560. }
  561. type ICloudLoadbalancer interface {
  562. IVirtualResource
  563. GetAddress() string
  564. GetAddressType() string
  565. GetNetworkType() string
  566. GetNetworkIds() []string
  567. GetVpcId() string
  568. GetZoneId() string
  569. GetZone1Id() string // first slave zone
  570. GetLoadbalancerSpec() string
  571. GetChargeType() string
  572. GetEgressMbps() int
  573. GetIEIPs() ([]ICloudEIP, error)
  574. Delete(ctx context.Context) error
  575. Start() error
  576. Stop() error
  577. GetILoadBalancerListeners() ([]ICloudLoadbalancerListener, error)
  578. GetILoadBalancerBackendGroups() ([]ICloudLoadbalancerBackendGroup, error)
  579. CreateILoadBalancerBackendGroup(group *SLoadbalancerBackendGroup) (ICloudLoadbalancerBackendGroup, error)
  580. GetILoadBalancerBackendGroupById(groupId string) (ICloudLoadbalancerBackendGroup, error)
  581. CreateILoadBalancerListener(ctx context.Context, listener *SLoadbalancerListenerCreateOptions) (ICloudLoadbalancerListener, error)
  582. GetILoadBalancerListenerById(listenerId string) (ICloudLoadbalancerListener, error)
  583. GetSecurityGroupIds() ([]string, error)
  584. }
  585. type ICloudLoadbalancerRedirect interface {
  586. GetRedirect() string
  587. GetRedirectCode() int64
  588. GetRedirectScheme() string
  589. GetRedirectHost() string
  590. GetRedirectPath() string
  591. }
  592. type ICloudloadbalancerHealthCheckInfo interface {
  593. GetHealthCheck() string
  594. GetHealthCheckType() string
  595. GetHealthCheckTimeout() int
  596. GetHealthCheckInterval() int
  597. GetHealthCheckRise() int
  598. GetHealthCheckFail() int
  599. GetHealthCheckReq() string
  600. GetHealthCheckExp() string
  601. // HTTP && HTTPS
  602. GetHealthCheckDomain() string
  603. GetHealthCheckURI() string
  604. GetHealthCheckMethod() string
  605. GetHealthCheckPort() int
  606. GetHealthCheckCode() string
  607. }
  608. type ICloudLoadbalancerHealthCheck interface {
  609. IVirtualResource
  610. ICloudloadbalancerHealthCheckInfo
  611. Delete() error
  612. Update(ctx context.Context, opts *SLoadbalancerHealthCheck) error
  613. }
  614. type ICloudLoadbalancerListener interface {
  615. ICloudResource
  616. GetListenerType() string
  617. GetListenerPort() int
  618. GetScheduler() string
  619. GetAclStatus() string
  620. GetAclType() string
  621. GetAclId() string
  622. GetEgressMbps() int
  623. GetBackendGroupId() string
  624. GetBackendServerPort() int
  625. GetClientIdleTimeout() int
  626. GetBackendConnectTimeout() int
  627. // HTTP && HTTPS
  628. CreateILoadBalancerListenerRule(rule *SLoadbalancerListenerRule) (ICloudLoadbalancerListenerRule, error)
  629. GetILoadBalancerListenerRuleById(ruleId string) (ICloudLoadbalancerListenerRule, error)
  630. GetILoadbalancerListenerRules() ([]ICloudLoadbalancerListenerRule, error)
  631. GetStickySession() string
  632. GetStickySessionType() string
  633. GetStickySessionCookie() string
  634. GetStickySessionCookieTimeout() int
  635. XForwardedForEnabled() bool
  636. GzipEnabled() bool
  637. // HTTPS
  638. GetCertificateId() string
  639. GetTLSCipherPolicy() string
  640. HTTP2Enabled() bool
  641. // http redirect
  642. ICloudLoadbalancerRedirect
  643. ICloudloadbalancerHealthCheckInfo
  644. Start() error
  645. Stop() error
  646. ChangeScheduler(ctx context.Context, opts *ChangeListenerSchedulerOptions) error
  647. SetHealthCheck(ctx context.Context, opts *ListenerHealthCheckOptions) error
  648. ChangeCertificate(ctx context.Context, opts *ListenerCertificateOptions) error
  649. SetAcl(ctx context.Context, opts *ListenerAclOptions) error
  650. Delete(ctx context.Context) error
  651. }
  652. type ICloudLoadbalancerListenerRule interface {
  653. ICloudResource
  654. // http redirect
  655. ICloudLoadbalancerRedirect
  656. IsDefault() bool
  657. GetDomain() string
  658. GetPath() string
  659. GetCondition() string
  660. GetBackendGroupId() string
  661. GetBackendGroups() ([]string, error)
  662. GetRedirectPool() (SRedirectPool, error)
  663. Delete(ctx context.Context) error
  664. Update(ctx context.Context, rule *SLoadbalancerListenerRule) error
  665. }
  666. type ICloudLoadbalancerBackendGroup interface {
  667. ICloudResource
  668. IsDefault() bool
  669. GetType() string
  670. GetScheduler() string
  671. GetHealthCheckId() string
  672. GetILoadbalancerBackends() ([]ICloudLoadbalancerBackend, error)
  673. GetILoadbalancerBackendById(backendId string) (ICloudLoadbalancerBackend, error)
  674. AddBackendServer(opts *SLoadbalancerBackend) (ICloudLoadbalancerBackend, error)
  675. RemoveBackendServer(opts *SLoadbalancerBackend) error
  676. Delete(ctx context.Context) error
  677. Update(ctx context.Context, opts *SLoadbalancerBackendGroup) error
  678. }
  679. type ICloudLoadbalancerBackend interface {
  680. GetId() string
  681. GetName() string
  682. GetGlobalId() string
  683. GetCreatedAt() time.Time
  684. GetDescription() string
  685. GetStatus() string
  686. GetWeight() int
  687. GetPort() int
  688. GetBackendType() string
  689. GetBackendRole() string
  690. GetBackendId() string
  691. GetIpAddress() string // backend type is ip
  692. Update(ctx context.Context, opts *SLoadbalancerBackend) error
  693. }
  694. type ICloudLoadbalancerCertificate interface {
  695. IVirtualResource
  696. Delete() error
  697. GetCommonName() string
  698. GetSubjectAlternativeNames() string
  699. GetFingerprint() string // return value format: <algo>:<fingerprint>,比如sha1:7454a14fdb8ae1ea8b2f72e458a24a76bd23ec19
  700. GetExpireTime() time.Time
  701. GetPublickKey() string
  702. GetPrivateKey() string
  703. }
  704. type ICloudLoadbalancerAcl interface {
  705. IVirtualResource
  706. GetAclEntries() []SLoadbalancerAccessControlListEntry
  707. Sync(acl *SLoadbalancerAccessControlList) error
  708. Delete() error
  709. }
  710. type ICloudSku interface {
  711. ICloudResource
  712. GetInstanceTypeFamily() string
  713. GetInstanceTypeCategory() string
  714. GetPrepaidStatus() string
  715. GetPostpaidStatus() string
  716. GetCpuArch() string
  717. GetCpuCoreCount() int
  718. GetMemorySizeMB() int
  719. GetOsName() string
  720. GetSysDiskResizable() bool
  721. GetSysDiskType() string
  722. GetSysDiskMinSizeGB() int
  723. GetSysDiskMaxSizeGB() int
  724. GetAttachedDiskType() string
  725. GetAttachedDiskSizeGB() int
  726. GetAttachedDiskCount() int
  727. GetDataDiskTypes() string
  728. GetDataDiskMaxCount() int
  729. GetNicType() string
  730. GetNicMaxCount() int
  731. GetGpuAttachable() bool
  732. GetGpuSpec() string
  733. GetGpuCount() string
  734. GetGpuMaxCount() int
  735. Delete() error
  736. }
  737. type ICloudProject interface {
  738. ICloudResource
  739. }
  740. type ICloudNatGateway interface {
  741. ICloudResource
  742. IBillingResource
  743. // 获取 NAT 规格
  744. GetNatSpec() string
  745. GetIEips() ([]ICloudEIP, error)
  746. GetINatDTable() ([]ICloudNatDEntry, error)
  747. GetINatSTable() ([]ICloudNatSEntry, error)
  748. // ID is the ID of snat entry/rule or dnat entry/rule.
  749. GetINatDEntryById(id string) (ICloudNatDEntry, error)
  750. GetINatSEntryById(id string) (ICloudNatSEntry, error)
  751. // Read the description of these two structures before using.
  752. CreateINatDEntry(rule SNatDRule) (ICloudNatDEntry, error)
  753. CreateINatSEntry(rule SNatSRule) (ICloudNatSEntry, error)
  754. GetINetworkId() string
  755. // internet(公网) or intranet(VPC)
  756. GetNetworkType() string
  757. GetBandwidthMb() int
  758. GetIpAddr() string
  759. Delete() error
  760. }
  761. // ICloudNatDEntry describe a DNat rule which transfer externalIp:externalPort to
  762. // internalIp:internalPort with IpProtocol(tcp/udp)
  763. type ICloudNatDEntry interface {
  764. ICloudResource
  765. GetIpProtocol() string
  766. GetExternalIp() string
  767. GetExternalPort() int
  768. GetInternalIp() string
  769. GetInternalPort() int
  770. Delete() error
  771. }
  772. // ICloudNatSEntry describe a SNat rule which transfer internalIp(GetIP()) to externalIp which from sourceCIDR
  773. type ICloudNatSEntry interface {
  774. ICloudResource
  775. GetIP() string
  776. GetSourceCIDR() string
  777. GetNetworkId() string
  778. Delete() error
  779. }
  780. type ICloudNetworkInterface interface {
  781. ICloudResource
  782. GetMacAddress() string
  783. GetAssociateType() string
  784. GetAssociateId() string
  785. GetICloudInterfaceAddresses() ([]ICloudInterfaceAddress, error)
  786. }
  787. type ICloudInterfaceAddress interface {
  788. GetGlobalId() string //返回IP即可
  789. GetINetworkId() string
  790. GetIP() string
  791. IsPrimary() bool
  792. }
  793. type ICloudDBInstance interface {
  794. IVirtualResource
  795. IBillingResource
  796. Reboot() error
  797. GetMasterInstanceId() string
  798. GetSecurityGroupIds() ([]string, error)
  799. SetSecurityGroups(ids []string) error
  800. GetPort() int
  801. GetEngine() string
  802. GetEngineVersion() string
  803. //实例规格
  804. GetInstanceType() string
  805. GetVcpuCount() int
  806. GetVmemSizeMB() int //MB
  807. GetDiskSizeGB() int
  808. GetDiskSizeUsedMB() int
  809. //基础版、高可用?
  810. GetCategory() string
  811. GetStorageType() string
  812. GetMaintainTime() string
  813. GetConnectionStr() string
  814. GetInternalConnectionStr() string
  815. GetZone1Id() string
  816. GetZone2Id() string
  817. GetZone3Id() string
  818. GetIVpcId() string
  819. GetIops() int
  820. GetDBNetworks() ([]SDBInstanceNetwork, error)
  821. GetIDBInstanceParameters() ([]ICloudDBInstanceParameter, error)
  822. GetIDBInstanceDatabases() ([]ICloudDBInstanceDatabase, error)
  823. GetIDBInstanceAccounts() ([]ICloudDBInstanceAccount, error)
  824. GetIDBInstanceBackups() ([]ICloudDBInstanceBackup, error)
  825. ChangeConfig(ctx context.Context, config *SManagedDBInstanceChangeConfig) error
  826. OpenPublicConnection() error
  827. ClosePublicConnection() error
  828. CreateDatabase(conf *SDBInstanceDatabaseCreateConfig) error
  829. CreateAccount(conf *SDBInstanceAccountCreateConfig) error
  830. CreateIBackup(conf *SDBInstanceBackupCreateConfig) (string, error)
  831. RecoveryFromBackup(conf *SDBInstanceRecoveryConfig) error
  832. Update(ctx context.Context, input SDBInstanceUpdateOptions) error
  833. Delete() error
  834. }
  835. type ICloudDBInstanceParameter interface {
  836. GetGlobalId() string
  837. GetKey() string
  838. GetValue() string
  839. GetDescription() string
  840. }
  841. type ICloudDBInstanceBackup interface {
  842. IVirtualResource
  843. GetEngine() string
  844. GetEngineVersion() string
  845. GetDBInstanceId() string
  846. GetStartTime() time.Time
  847. GetEndTime() time.Time
  848. GetBackupSizeMb() int
  849. GetDBNames() string
  850. GetBackupMode() string
  851. GetBackupMethod() TBackupMethod
  852. CreateICloudDBInstance(opts *SManagedDBInstanceCreateConfig) (ICloudDBInstance, error)
  853. Delete() error
  854. }
  855. type ICloudDBInstanceDatabase interface {
  856. ICloudResource
  857. GetCharacterSet() string
  858. Delete() error
  859. }
  860. type ICloudDBInstanceAccount interface {
  861. GetName() string
  862. GetStatus() string
  863. GetHost() string
  864. GetIDBInstanceAccountPrivileges() ([]ICloudDBInstanceAccountPrivilege, error)
  865. ResetPassword(password string) error
  866. GrantPrivilege(database, privilege string) error
  867. RevokePrivilege(database string) error
  868. Delete() error
  869. }
  870. type ICloudDBInstanceAccountPrivilege interface {
  871. GetGlobalId() string
  872. GetPrivilege() string
  873. GetDBName() string
  874. }
  875. type ICloudElasticcacheSku interface {
  876. GetName() string
  877. GetGlobalId() string
  878. GetZoneId() string
  879. GetSlaveZoneId() string
  880. GetEngineArch() string
  881. GetLocalCategory() string
  882. GetPrepaidStatus() string
  883. GetPostpaidStatus() string
  884. GetEngine() string
  885. GetEngineVersion() string
  886. GetCpuArch() string
  887. GetStorageType() string
  888. GetMemorySizeMb() int
  889. GetPerformanceType() string
  890. GetNodeType() string
  891. GetDiskSizeGb() int
  892. GetShardNum() int
  893. GetMaxShardNum() int
  894. GetReplicasNum() int
  895. GetMaxReplicasNum() int
  896. GetMaxClients() int
  897. GetMaxConnections() int
  898. GetMaxInBandwidthMb() int
  899. GetMaxMemoryMb() int
  900. GetQps() int
  901. }
  902. type ICloudElasticcache interface {
  903. IVirtualResource
  904. IBillingResource
  905. GetInstanceType() string
  906. GetCapacityMB() int
  907. GetArchType() string
  908. GetNodeType() string
  909. GetEngine() string
  910. GetEngineVersion() string
  911. GetVpcId() string
  912. GetZoneId() string
  913. GetNetworkType() string
  914. GetNetworkId() string
  915. GetBandwidth() int
  916. GetConnections() int
  917. GetPrivateDNS() string
  918. GetPrivateIpAddr() string
  919. GetPrivateConnectPort() int
  920. GetPublicDNS() string
  921. GetPublicIpAddr() string
  922. GetPublicConnectPort() int
  923. GetMaintainStartTime() string
  924. GetMaintainEndTime() string
  925. GetAuthMode() string
  926. GetSecurityGroupIds() ([]string, error)
  927. GetICloudElasticcacheAccounts() ([]ICloudElasticcacheAccount, error)
  928. GetICloudElasticcacheAcls() ([]ICloudElasticcacheAcl, error)
  929. GetICloudElasticcacheBackups() ([]ICloudElasticcacheBackup, error)
  930. GetICloudElasticcacheParameters() ([]ICloudElasticcacheParameter, error)
  931. GetICloudElasticcacheAccount(accountId string) (ICloudElasticcacheAccount, error)
  932. GetICloudElasticcacheAcl(aclId string) (ICloudElasticcacheAcl, error)
  933. GetICloudElasticcacheBackup(backupId string) (ICloudElasticcacheBackup, error)
  934. Restart() error
  935. Delete() error
  936. ChangeInstanceSpec(spec string) error
  937. SetMaintainTime(maintainStartTime, maintainEndTime string) error
  938. AllocatePublicConnection(port int) (string, error) // return url & error info
  939. ReleasePublicConnection() error
  940. CreateAccount(account SCloudElasticCacheAccountInput) (ICloudElasticcacheAccount, error)
  941. CreateAcl(aclName, securityIps string) (ICloudElasticcacheAcl, error)
  942. CreateBackup(desc string) (ICloudElasticcacheBackup, error)
  943. FlushInstance(input SCloudElasticCacheFlushInstanceInput) error
  944. UpdateAuthMode(noPasswordAccess bool, password string) error
  945. UpdateInstanceParameters(config jsonutils.JSONObject) error
  946. UpdateBackupPolicy(config SCloudElasticCacheBackupPolicyUpdateInput) error
  947. UpdateSecurityGroups(secgroupIds []string) error
  948. }
  949. type ICloudElasticcacheAccount interface {
  950. ICloudResource
  951. GetAccountType() string
  952. GetAccountPrivilege() string
  953. Delete() error
  954. ResetPassword(input SCloudElasticCacheAccountResetPasswordInput) error
  955. UpdateAccount(input SCloudElasticCacheAccountUpdateInput) error
  956. }
  957. type ICloudElasticcacheAcl interface {
  958. ICloudResource
  959. GetIpList() string
  960. Delete() error
  961. UpdateAcl(securityIps string) error
  962. }
  963. type ICloudElasticcacheBackup interface {
  964. ICloudResource
  965. GetBackupSizeMb() int
  966. GetBackupType() string
  967. GetBackupMode() string
  968. GetDownloadURL() string
  969. GetStartTime() time.Time
  970. GetEndTime() time.Time
  971. Delete() error
  972. RestoreInstance(instanceId string) error
  973. }
  974. type ICloudElasticcacheParameter interface {
  975. ICloudResource
  976. GetParameterKey() string
  977. GetParameterValue() string
  978. GetParameterValueRange() string
  979. GetDescription() string
  980. GetModifiable() bool
  981. GetForceRestart() bool
  982. }
  983. type ICloudEvent interface {
  984. GetName() string
  985. GetService() string
  986. GetAction() string
  987. GetResourceType() string
  988. GetRequestId() string
  989. GetRequest() jsonutils.JSONObject
  990. GetAccount() string
  991. IsSuccess() bool
  992. GetCreatedAt() time.Time
  993. }
  994. type ICloudQuota interface {
  995. GetGlobalId() string
  996. GetDesc() string
  997. GetQuotaType() string
  998. GetMaxQuotaCount() int
  999. GetCurrentQuotaUsedCount() int
  1000. }
  1001. type SClouduserEnableOptions struct {
  1002. Password string
  1003. EnableMfa bool
  1004. PasswordResetRequired bool
  1005. }
  1006. // 公有云子账号
  1007. type IClouduser interface {
  1008. GetGlobalId() string
  1009. GetName() string
  1010. GetEmailAddr() string
  1011. GetInviteUrl() string
  1012. GetICloudgroups() ([]ICloudgroup, error)
  1013. GetICloudpolicies() ([]ICloudpolicy, error)
  1014. AttachPolicy(policyName string, policyType api.TPolicyType) error
  1015. DetachPolicy(policyName string, policyType api.TPolicyType) error
  1016. SetEnable(opts *SClouduserEnableOptions) error
  1017. SetDisable() error
  1018. Delete() error
  1019. ResetPassword(password string) error
  1020. IsConsoleLogin() bool
  1021. CreateAccessKey(name string) (*SAccessKey, error)
  1022. DeleteAccessKey(accessKey string) error
  1023. GetAccessKeys() ([]SAccessKey, error)
  1024. }
  1025. // 公有云子账号权限
  1026. type ICloudpolicy interface {
  1027. GetGlobalId() string
  1028. GetName() string
  1029. GetDescription() string
  1030. GetPolicyType() api.TPolicyType
  1031. GetDocument() (*jsonutils.JSONDict, error)
  1032. UpdateDocument(*jsonutils.JSONDict) error
  1033. Delete() error
  1034. }
  1035. // 公有云用户组
  1036. type ICloudgroup interface {
  1037. GetGlobalId() string
  1038. GetName() string
  1039. GetDescription() string
  1040. GetICloudpolicies() ([]ICloudpolicy, error)
  1041. GetICloudusers() ([]IClouduser, error)
  1042. AddUser(name string) error
  1043. RemoveUser(name string) error
  1044. AttachPolicy(policyName string, policyType api.TPolicyType) error
  1045. DetachPolicy(policyName string, policyType api.TPolicyType) error
  1046. Delete() error
  1047. }
  1048. type ICloudDnsZone interface {
  1049. IVirtualResource
  1050. GetZoneType() TDnsZoneType
  1051. GetICloudVpcIds() ([]string, error)
  1052. AddVpc(*SPrivateZoneVpc) error
  1053. RemoveVpc(*SPrivateZoneVpc) error
  1054. GetIDnsRecords() ([]ICloudDnsRecord, error)
  1055. GetIDnsRecordById(id string) (ICloudDnsRecord, error)
  1056. AddDnsRecord(*DnsRecord) (string, error)
  1057. GetNameServers() ([]string, error)
  1058. GetOriginalNameServers() ([]string, error)
  1059. GetRegistrar() string
  1060. Delete() error
  1061. GetDnsProductType() TDnsProductType
  1062. }
  1063. type ICloudDnsRecord interface {
  1064. GetGlobalId() string
  1065. GetDnsName() string
  1066. GetStatus() string
  1067. IsProxied() bool
  1068. GetEnabled() bool
  1069. GetDnsType() TDnsType
  1070. GetDnsValue() string
  1071. GetTTL() int64
  1072. GetMxPriority() int64
  1073. GetExtraAddresses() ([]string, error)
  1074. Update(*DnsRecord) error
  1075. Enable() error
  1076. Disable() error
  1077. GetPolicyType() TDnsPolicyType
  1078. GetPolicyValue() TDnsPolicyValue
  1079. Delete() error
  1080. }
  1081. type ICloudVpcPeeringConnection interface {
  1082. ICloudResource
  1083. GetPeerVpcId() string
  1084. GetPeerAccountId() string
  1085. GetEnabled() bool
  1086. Delete() error
  1087. }
  1088. type ICloudSAMLProvider interface {
  1089. ICloudResource
  1090. GetMetadataDocument() (*samlutils.EntityDescriptor, error)
  1091. UpdateMetadata(samlutils.EntityDescriptor) error
  1092. GetAuthUrl(apiServer string) string
  1093. Delete() error
  1094. }
  1095. type ICloudrole interface {
  1096. GetGlobalId() string
  1097. GetName() string
  1098. GetDocument() *jsonutils.JSONDict
  1099. GetSAMLProvider() string
  1100. GetICloudpolicies() ([]ICloudpolicy, error)
  1101. AttachPolicy(policyName string, policyType api.TPolicyType) error
  1102. DetachPolicy(policyName string, policyType api.TPolicyType) error
  1103. Delete() error
  1104. }
  1105. type ICloudInterVpcNetwork interface {
  1106. ICloudResource
  1107. GetAuthorityOwnerId() string
  1108. GetICloudVpcIds() ([]string, error)
  1109. AttachVpc(opts *SInterVpcNetworkAttachVpcOption) error
  1110. DetachVpc(opts *SInterVpcNetworkDetachVpcOption) error
  1111. Delete() error
  1112. GetIRoutes() ([]ICloudInterVpcNetworkRoute, error)
  1113. EnableRouteEntry(routeId string) error
  1114. DisableRouteEntry(routeId string) error
  1115. }
  1116. type ICloudInterVpcNetworkRoute interface {
  1117. ICloudResource
  1118. GetInstanceId() string
  1119. GetInstanceType() string
  1120. GetInstanceRegionId() string
  1121. GetEnabled() bool
  1122. GetCidr() string
  1123. }
  1124. type ICloudFileSystem interface {
  1125. IVirtualResource
  1126. IBillingResource
  1127. GetFileSystemType() string
  1128. GetStorageType() string
  1129. GetProtocol() string
  1130. GetCapacityGb() int64
  1131. GetUsedCapacityGb() int64
  1132. GetMountTargetCountLimit() int
  1133. GetZoneId() string
  1134. GetMountTargets() ([]ICloudMountTarget, error)
  1135. CreateMountTarget(opts *SMountTargetCreateOptions) (ICloudMountTarget, error)
  1136. SetQuota(input *SFileSystemSetQuotaInput) error
  1137. Delete() error
  1138. }
  1139. type ICloudMountTarget interface {
  1140. GetGlobalId() string
  1141. GetName() string
  1142. GetAccessGroupId() string
  1143. GetDomainName() string
  1144. GetNetworkType() string
  1145. GetVpcId() string
  1146. GetNetworkId() string
  1147. GetStatus() string
  1148. Delete() error
  1149. }
  1150. type ICloudAccessGroup interface {
  1151. GetGlobalId() string
  1152. GetName() string
  1153. GetDesc() string
  1154. GetSupporedUserAccessTypes() []TUserAccessType
  1155. GetNetworkType() string
  1156. GetFileSystemType() string
  1157. GetMountTargetCount() int
  1158. GetRules() ([]IAccessGroupRule, error)
  1159. CreateRule(opts *AccessGroupRule) (IAccessGroupRule, error)
  1160. Delete() error
  1161. }
  1162. type IAccessGroupRule interface {
  1163. GetGlobalId() string
  1164. GetPriority() int
  1165. GetRWAccessType() TRWAccessType
  1166. GetUserAccessType() TUserAccessType
  1167. GetSource() string
  1168. Delete() error
  1169. }
  1170. type ICloudWafIPSet interface {
  1171. GetName() string
  1172. GetDesc() string
  1173. GetType() TWafType
  1174. GetGlobalId() string
  1175. GetAddresses() WafAddresses
  1176. Delete() error
  1177. }
  1178. type ICloudWafRegexSet interface {
  1179. GetName() string
  1180. GetDesc() string
  1181. GetType() TWafType
  1182. GetGlobalId() string
  1183. GetRegexPatterns() WafRegexPatterns
  1184. Delete() error
  1185. }
  1186. type ICloudWafInstance interface {
  1187. ICloudEnabledResource
  1188. GetWafType() TWafType
  1189. GetDefaultAction() *DefaultAction
  1190. GetRules() ([]ICloudWafRule, error)
  1191. AddRule(opts *SWafRule) (ICloudWafRule, error)
  1192. // 绑定的资源列表
  1193. GetCloudResources() ([]SCloudResource, error)
  1194. // 前面是否有代理服务
  1195. GetIsAccessProduct() bool
  1196. GetAccessHeaders() []string
  1197. GetHttpPorts() []int
  1198. GetHttpsPorts() []int
  1199. GetCname() string
  1200. // 源站地址
  1201. GetSourceIps() []string
  1202. // 回源地址
  1203. GetCcList() []string
  1204. GetCertId() string
  1205. GetCertName() string
  1206. GetUpstreamScheme() string
  1207. GetUpstreamPort() int
  1208. Delete() error
  1209. }
  1210. type ICloudWafRuleGroup interface {
  1211. GetName() string
  1212. GetDesc() string
  1213. GetGlobalId() string
  1214. GetWafType() TWafType
  1215. GetRules() ([]ICloudWafRule, error)
  1216. }
  1217. type ICloudWafRule interface {
  1218. GetName() string
  1219. GetDesc() string
  1220. GetGlobalId() string
  1221. GetPriority() int
  1222. GetType() string
  1223. GetAction() *DefaultAction
  1224. GetStatementCondition() TWafStatementCondition
  1225. GetExpression() string
  1226. GetStatements() ([]SWafStatement, error)
  1227. GetConfig() (jsonutils.JSONObject, error)
  1228. GetEnabled() bool
  1229. Enable() error
  1230. Disable() error
  1231. Update(opts *SWafRule) error
  1232. Delete() error
  1233. }
  1234. type ICloudMongoDB interface {
  1235. IVirtualResource
  1236. IBillingResource
  1237. GetVpcId() string
  1238. GetNetworkId() string
  1239. GetIpAddr() string
  1240. GetVcpuCount() int
  1241. GetVmemSizeMb() int
  1242. GetDiskSizeMb() int
  1243. GetZoneId() string
  1244. GetReplicationNum() int
  1245. GetCategory() string
  1246. GetEngine() string
  1247. GetEngineVersion() string
  1248. GetInstanceType() string
  1249. GetMaintainTime() string
  1250. GetPort() int
  1251. GetIops() int
  1252. GetMaxConnections() int
  1253. GetNetworkAddress() string
  1254. GetIBackups() ([]SMongoDBBackup, error)
  1255. Delete() error
  1256. }
  1257. type ICloudElasticSearch interface {
  1258. IVirtualResource
  1259. IBillingResource
  1260. GetVersion() string
  1261. GetStorageType() string
  1262. GetDiskSizeGb() int
  1263. GetCategory() string
  1264. GetInstanceType() string
  1265. GetVcpuCount() int
  1266. GetVmemSizeGb() int
  1267. GetVpcId() string
  1268. GetNetworkId() string
  1269. GetZoneId() string
  1270. IsMultiAz() bool
  1271. GetAccessInfo() (*ElasticSearchAccessInfo, error)
  1272. Delete() error
  1273. }
  1274. type ICloudKafka interface {
  1275. IVirtualResource
  1276. IBillingResource
  1277. GetNetworkId() string
  1278. GetVpcId() string
  1279. GetZoneId() string
  1280. GetInstanceType() string
  1281. GetVersion() string
  1282. GetDiskSizeGb() int
  1283. GetStorageType() string
  1284. GetBandwidthMb() int
  1285. GetEndpoint() string
  1286. GetMsgRetentionMinute() int
  1287. IsMultiAz() bool
  1288. GetTopics() ([]SKafkaTopic, error)
  1289. Delete() error
  1290. }
  1291. type AppBackupConfig struct {
  1292. Enabled bool
  1293. FrequencyInterval int
  1294. FrequencyUnit string
  1295. RetentionPeriodInDays int
  1296. }
  1297. type ICloudApp interface {
  1298. IVirtualResource
  1299. GetEnvironments() ([]ICloudAppEnvironment, error)
  1300. GetTechStack() string
  1301. GetOsType() TOsType
  1302. GetIpAddress() string
  1303. GetHostname() string
  1304. GetServerFarm() string
  1305. GetBackups() ([]IAppBackup, error)
  1306. GetPublicNetworkAccess() string
  1307. GetNetworkId() string
  1308. GetHybirdConnections() ([]IAppHybirdConnection, error)
  1309. GetCertificates() ([]IAppCertificate, error)
  1310. GetBackupConfig() AppBackupConfig
  1311. GetDomains() ([]IAppDomain, error)
  1312. }
  1313. type IAppDomain interface {
  1314. GetGlobalId() string
  1315. GetName() string
  1316. GetStatus() string
  1317. GetSslState() string
  1318. }
  1319. type IAppCertificate interface {
  1320. GetGlobalId() string
  1321. GetName() string
  1322. GetSubjectName() string
  1323. GetIssuer() string
  1324. GetIssueDate() time.Time
  1325. GetThumbprint() string
  1326. GetExpireTime() time.Time
  1327. }
  1328. type IAppHybirdConnection interface {
  1329. GetGlobalId() string
  1330. GetName() string
  1331. GetHostname() string
  1332. GetNamespace() string
  1333. GetPort() int
  1334. }
  1335. type IAppBackup interface {
  1336. GetGlobalId() string
  1337. GetName() string
  1338. GetType() string
  1339. }
  1340. type ICloudAppEnvironment interface {
  1341. IVirtualResource
  1342. }
  1343. type ICloudDBInstanceSku interface {
  1344. GetName() string
  1345. GetGlobalId() string
  1346. GetStatus() string
  1347. GetEngine() string
  1348. GetEngineVersion() string
  1349. GetStorageType() string
  1350. GetDiskSizeStep() int
  1351. GetMaxDiskSizeGb() int
  1352. GetMinDiskSizeGb() int
  1353. GetIOPS() int
  1354. GetTPS() int
  1355. GetQPS() int
  1356. GetMaxConnections() int
  1357. GetVcpuCount() int
  1358. GetVmemSizeMb() int
  1359. GetCategory() string
  1360. GetZone1Id() string
  1361. GetZone2Id() string
  1362. GetZone3Id() string
  1363. GetZoneId() string
  1364. }
  1365. type ICloudNatSku interface {
  1366. GetName() string
  1367. GetDesc() string
  1368. GetGlobalId() string
  1369. GetPrepaidStatus() string
  1370. GetPostpaidStatus() string
  1371. }
  1372. type ICloudCDNDomain interface {
  1373. IVirtualResource
  1374. GetEnabled() bool
  1375. GetArea() string
  1376. GetServiceType() string
  1377. GetCname() string
  1378. GetOrigins() *SCdnOrigins
  1379. // 是否忽略参数
  1380. GetCacheKeys() (*SCDNCacheKeys, error)
  1381. // 是否分片回源
  1382. GetRangeOriginPull() (*SCDNRangeOriginPull, error)
  1383. // 缓存配置
  1384. GetCache() (*SCDNCache, error)
  1385. // https配置
  1386. GetHTTPS() (*SCDNHttps, error)
  1387. // 强制跳转
  1388. GetForceRedirect() (*SCDNForceRedirect, error)
  1389. // 防盗链配置
  1390. GetReferer() (*SCDNReferer, error)
  1391. // 浏览器缓存配置
  1392. GetMaxAge() (*SCDNMaxAge, error)
  1393. GetDNSSECEnabled() bool
  1394. // SSL/TLS加密模式
  1395. GetSSLSetting() string
  1396. GetHTTPSRewrites() bool
  1397. GetCacheLevel() string
  1398. ClearCache(opts *CacheClearOptions) error
  1399. GetBrowserCacheTTL() int
  1400. ChangeConfig(opts *CacheConfig) error
  1401. GetCustomHostnames() ([]CustomHostname, error)
  1402. AddCustomHostname(opts *CustomHostnameCreateOptions) error
  1403. DeleteCustomHostname(id string) error
  1404. Delete() error
  1405. }
  1406. type ICloudKubeCluster interface {
  1407. ICloudEnabledResource
  1408. GetKubeConfig(private bool, expireMinutes int) (*SKubeconfig, error)
  1409. GetVersion() string
  1410. GetVpcId() string
  1411. GetNetworkIds() []string
  1412. GetIKubeNodePools() ([]ICloudKubeNodePool, error)
  1413. CreateIKubeNodePool(opts *KubeNodePoolCreateOptions) (ICloudKubeNodePool, error)
  1414. GetIKubeNodes() ([]ICloudKubeNode, error)
  1415. Delete(isRetain bool) error
  1416. }
  1417. type ICloudKubeNode interface {
  1418. ICloudResource
  1419. GetINodePoolId() string
  1420. }
  1421. type ICloudKubeNodePool interface {
  1422. ICloudResource
  1423. GetMinInstanceCount() int
  1424. GetMaxInstanceCount() int
  1425. GetDesiredInstanceCount() int
  1426. GetRootDiskSizeGb() int
  1427. GetInstanceTypes() []string
  1428. GetNetworkIds() []string
  1429. Delete() error
  1430. }
  1431. type ICloudTablestore interface {
  1432. IVirtualResource
  1433. }
  1434. type ICloudMiscResource interface {
  1435. IVirtualResource
  1436. GetResourceType() string
  1437. GetConfig() jsonutils.JSONObject
  1438. }
  1439. type ICloudSSLCertificate interface {
  1440. IVirtualResource
  1441. GetSans() string
  1442. GetStartDate() time.Time
  1443. GetProvince() string
  1444. GetCommon() string
  1445. GetCountry() string
  1446. GetIssuer() string
  1447. GetEndDate() time.Time
  1448. GetFingerprint() string
  1449. GetCity() string
  1450. GetOrgName() string
  1451. GetIsUpload() bool
  1452. GetCert() string
  1453. GetKey() string
  1454. GetDnsZoneId() string
  1455. Delete() error
  1456. }
  1457. type IAiGateway interface {
  1458. IVirtualResource
  1459. IsAuthentication() bool
  1460. IsCacheInvalidateOnUpdate() bool
  1461. GetCacheTTL() int
  1462. IsCollectLogs() bool
  1463. GetRateLimitingInterval() int
  1464. GetRateLimitingLimit() int
  1465. GetRateLimitingTechnique() string
  1466. ChangeConfig(opts *AiGatewayChangeConfigOptions) error
  1467. Delete() error
  1468. }