DiskClient.go 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571
  1. // Copyright 2018 JDCLOUD.COM
  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. //
  15. // NOTE: This class is auto generated by the jdcloud code generator program.
  16. package client
  17. import (
  18. "github.com/jdcloud-api/jdcloud-sdk-go/core"
  19. disk "github.com/jdcloud-api/jdcloud-sdk-go/services/disk/apis"
  20. "encoding/json"
  21. "errors"
  22. )
  23. type DiskClient struct {
  24. core.JDCloudClient
  25. }
  26. func NewDiskClient(credential *core.Credential) *DiskClient {
  27. if credential == nil {
  28. return nil
  29. }
  30. config := core.NewConfig()
  31. config.SetEndpoint("disk.jdcloud-api.com")
  32. return &DiskClient{
  33. core.JDCloudClient{
  34. Credential: *credential,
  35. Config: *config,
  36. ServiceName: "disk",
  37. Revision: "0.12.6",
  38. Logger: core.NewDefaultLogger(core.LogInfo),
  39. }}
  40. }
  41. func (c *DiskClient) SetConfig(config *core.Config) {
  42. c.Config = *config
  43. }
  44. func (c *DiskClient) SetLogger(logger core.Logger) {
  45. c.Logger = logger
  46. }
  47. func (c *DiskClient) DisableLogger() {
  48. c.Logger = core.NewDummyLogger()
  49. }
  50. /* 查询快照策略 */
  51. func (c *DiskClient) DescribeSnapPolices(request *disk.DescribeSnapPolicesRequest) (*disk.DescribeSnapPolicesResponse, error) {
  52. if request == nil {
  53. return nil, errors.New("Request object is nil. ")
  54. }
  55. resp, err := c.Send(request, c.ServiceName)
  56. if err != nil {
  57. return nil, err
  58. }
  59. jdResp := &disk.DescribeSnapPolicesResponse{}
  60. err = json.Unmarshal(resp, jdResp)
  61. if err != nil {
  62. c.Logger.Log(core.LogError, "Unmarshal json failed, resp: %s", string(resp))
  63. return nil, err
  64. }
  65. return jdResp, err
  66. }
  67. /* 修改快照的名字或描述信息 */
  68. func (c *DiskClient) ModifySnapshotAttribute(request *disk.ModifySnapshotAttributeRequest) (*disk.ModifySnapshotAttributeResponse, error) {
  69. if request == nil {
  70. return nil, errors.New("Request object is nil. ")
  71. }
  72. resp, err := c.Send(request, c.ServiceName)
  73. if err != nil {
  74. return nil, err
  75. }
  76. jdResp := &disk.ModifySnapshotAttributeResponse{}
  77. err = json.Unmarshal(resp, jdResp)
  78. if err != nil {
  79. c.Logger.Log(core.LogError, "Unmarshal json failed, resp: %s", string(resp))
  80. return nil, err
  81. }
  82. return jdResp, err
  83. }
  84. /* - 删除云硬盘快照:快照状态必须为 available 或 error 状态。
  85. - 快照独立于云硬盘生命周期,删除快照不会对创建快照的云硬盘有任何影响。
  86. - 快照删除后不可恢复,请谨慎操作。
  87. */
  88. func (c *DiskClient) DeleteSnapshots(request *disk.DeleteSnapshotsRequest) (*disk.DeleteSnapshotsResponse, error) {
  89. if request == nil {
  90. return nil, errors.New("Request object is nil. ")
  91. }
  92. resp, err := c.Send(request, c.ServiceName)
  93. if err != nil {
  94. return nil, err
  95. }
  96. jdResp := &disk.DeleteSnapshotsResponse{}
  97. err = json.Unmarshal(resp, jdResp)
  98. if err != nil {
  99. c.Logger.Log(core.LogError, "Unmarshal json failed, resp: %s", string(resp))
  100. return nil, err
  101. }
  102. return jdResp, err
  103. }
  104. /* 修改快照策略 */
  105. func (c *DiskClient) UpdateSnapshotPolicy(request *disk.UpdateSnapshotPolicyRequest) (*disk.UpdateSnapshotPolicyResponse, error) {
  106. if request == nil {
  107. return nil, errors.New("Request object is nil. ")
  108. }
  109. resp, err := c.Send(request, c.ServiceName)
  110. if err != nil {
  111. return nil, err
  112. }
  113. jdResp := &disk.UpdateSnapshotPolicyResponse{}
  114. err = json.Unmarshal(resp, jdResp)
  115. if err != nil {
  116. c.Logger.Log(core.LogError, "Unmarshal json failed, resp: %s", string(resp))
  117. return nil, err
  118. }
  119. return jdResp, err
  120. }
  121. /* 查询快照链的快照个数和快照总容量 */
  122. func (c *DiskClient) DescribeSnapshotChain(request *disk.DescribeSnapshotChainRequest) (*disk.DescribeSnapshotChainResponse, error) {
  123. if request == nil {
  124. return nil, errors.New("Request object is nil. ")
  125. }
  126. resp, err := c.Send(request, c.ServiceName)
  127. if err != nil {
  128. return nil, err
  129. }
  130. jdResp := &disk.DescribeSnapshotChainResponse{}
  131. err = json.Unmarshal(resp, jdResp)
  132. if err != nil {
  133. c.Logger.Log(core.LogError, "Unmarshal json failed, resp: %s", string(resp))
  134. return nil, err
  135. }
  136. return jdResp, err
  137. }
  138. /* 查询快照策略与磁盘绑定关系 */
  139. func (c *DiskClient) DescribeSnapshotPolicyDiskRelations(request *disk.DescribeSnapshotPolicyDiskRelationsRequest) (*disk.DescribeSnapshotPolicyDiskRelationsResponse, error) {
  140. if request == nil {
  141. return nil, errors.New("Request object is nil. ")
  142. }
  143. resp, err := c.Send(request, c.ServiceName)
  144. if err != nil {
  145. return nil, err
  146. }
  147. jdResp := &disk.DescribeSnapshotPolicyDiskRelationsResponse{}
  148. err = json.Unmarshal(resp, jdResp)
  149. if err != nil {
  150. c.Logger.Log(core.LogError, "Unmarshal json failed, resp: %s", string(resp))
  151. return nil, err
  152. }
  153. return jdResp, err
  154. }
  155. /* 删除快照策略 */
  156. func (c *DiskClient) DeleteSnapshotPolicy(request *disk.DeleteSnapshotPolicyRequest) (*disk.DeleteSnapshotPolicyResponse, error) {
  157. if request == nil {
  158. return nil, errors.New("Request object is nil. ")
  159. }
  160. resp, err := c.Send(request, c.ServiceName)
  161. if err != nil {
  162. return nil, err
  163. }
  164. jdResp := &disk.DeleteSnapshotPolicyResponse{}
  165. err = json.Unmarshal(resp, jdResp)
  166. if err != nil {
  167. c.Logger.Log(core.LogError, "Unmarshal json failed, resp: %s", string(resp))
  168. return nil, err
  169. }
  170. return jdResp, err
  171. }
  172. /* 查询某一块云硬盘的信息详情 */
  173. func (c *DiskClient) DescribeDisk(request *disk.DescribeDiskRequest) (*disk.DescribeDiskResponse, error) {
  174. if request == nil {
  175. return nil, errors.New("Request object is nil. ")
  176. }
  177. resp, err := c.Send(request, c.ServiceName)
  178. if err != nil {
  179. return nil, err
  180. }
  181. jdResp := &disk.DescribeDiskResponse{}
  182. err = json.Unmarshal(resp, jdResp)
  183. if err != nil {
  184. c.Logger.Log(core.LogError, "Unmarshal json failed, resp: %s", string(resp))
  185. return nil, err
  186. }
  187. return jdResp, err
  188. }
  189. /* - 扩容云硬盘到指定大小,云硬盘状态必须为 available。
  190. - 当云硬盘正在创建快照时,不允许扩容。
  191. */
  192. func (c *DiskClient) ExtendDisk(request *disk.ExtendDiskRequest) (*disk.ExtendDiskResponse, error) {
  193. if request == nil {
  194. return nil, errors.New("Request object is nil. ")
  195. }
  196. resp, err := c.Send(request, c.ServiceName)
  197. if err != nil {
  198. return nil, err
  199. }
  200. jdResp := &disk.ExtendDiskResponse{}
  201. err = json.Unmarshal(resp, jdResp)
  202. if err != nil {
  203. c.Logger.Log(core.LogError, "Unmarshal json failed, resp: %s", string(resp))
  204. return nil, err
  205. }
  206. return jdResp, err
  207. }
  208. /* - 查询您已经创建的云硬盘。
  209. - filters多个过滤条件之间是逻辑与(AND),每个条件内部的多个取值是逻辑或(OR)
  210. */
  211. func (c *DiskClient) DescribeVolumesIgnoreServiceCode(request *disk.DescribeVolumesIgnoreServiceCodeRequest) (*disk.DescribeVolumesIgnoreServiceCodeResponse, error) {
  212. if request == nil {
  213. return nil, errors.New("Request object is nil. ")
  214. }
  215. resp, err := c.Send(request, c.ServiceName)
  216. if err != nil {
  217. return nil, err
  218. }
  219. jdResp := &disk.DescribeVolumesIgnoreServiceCodeResponse{}
  220. err = json.Unmarshal(resp, jdResp)
  221. if err != nil {
  222. c.Logger.Log(core.LogError, "Unmarshal json failed, resp: %s", string(resp))
  223. return nil, err
  224. }
  225. return jdResp, err
  226. }
  227. /* 修改云硬盘的名字或描述信息,名字或描述信息至少要指定一个。 */
  228. func (c *DiskClient) ModifyDiskAttribute(request *disk.ModifyDiskAttributeRequest) (*disk.ModifyDiskAttributeResponse, error) {
  229. if request == nil {
  230. return nil, errors.New("Request object is nil. ")
  231. }
  232. resp, err := c.Send(request, c.ServiceName)
  233. if err != nil {
  234. return nil, err
  235. }
  236. jdResp := &disk.ModifyDiskAttributeResponse{}
  237. err = json.Unmarshal(resp, jdResp)
  238. if err != nil {
  239. c.Logger.Log(core.LogError, "Unmarshal json failed, resp: %s", string(resp))
  240. return nil, err
  241. }
  242. return jdResp, err
  243. }
  244. /* 绑定/解绑快照策略与磁盘关系 */
  245. func (c *DiskClient) ApplySnapshotPolicies(request *disk.ApplySnapshotPoliciesRequest) (*disk.ApplySnapshotPoliciesResponse, error) {
  246. if request == nil {
  247. return nil, errors.New("Request object is nil. ")
  248. }
  249. resp, err := c.Send(request, c.ServiceName)
  250. if err != nil {
  251. return nil, err
  252. }
  253. jdResp := &disk.ApplySnapshotPoliciesResponse{}
  254. err = json.Unmarshal(resp, jdResp)
  255. if err != nil {
  256. c.Logger.Log(core.LogError, "Unmarshal json failed, resp: %s", string(resp))
  257. return nil, err
  258. }
  259. return jdResp, err
  260. }
  261. /* 查询快照容量 */
  262. func (c *DiskClient) DescribeSnapshotsCapacity(request *disk.DescribeSnapshotsCapacityRequest) (*disk.DescribeSnapshotsCapacityResponse, error) {
  263. if request == nil {
  264. return nil, errors.New("Request object is nil. ")
  265. }
  266. resp, err := c.Send(request, c.ServiceName)
  267. if err != nil {
  268. return nil, err
  269. }
  270. jdResp := &disk.DescribeSnapshotsCapacityResponse{}
  271. err = json.Unmarshal(resp, jdResp)
  272. if err != nil {
  273. c.Logger.Log(core.LogError, "Unmarshal json failed, resp: %s", string(resp))
  274. return nil, err
  275. }
  276. return jdResp, err
  277. }
  278. /* - 创建一块或多块按配置或者按使用时长付费的云硬盘。
  279. - 云硬盘类型包括高效云盘(premium-hdd)、SSD云盘(ssd)、通用型SSD(ssd.gp1)、性能型SSD(ssd.io1)、容量型HDD(hdd.std1)。
  280. - 计费方式默认为按配置付费。
  281. - 创建完成后,云硬盘状态为 available。
  282. - 可选参数快照 ID用于从快照创建新盘。
  283. - 批量创建时,云硬盘的命名为 硬盘名称-数字,例如 myDisk-1,myDisk-2。
  284. - maxCount为最大努力,不保证一定能达到maxCount。
  285. - userTags 为创建云盘时打的标签
  286. */
  287. func (c *DiskClient) CreateDisks(request *disk.CreateDisksRequest) (*disk.CreateDisksResponse, error) {
  288. if request == nil {
  289. return nil, errors.New("Request object is nil. ")
  290. }
  291. resp, err := c.Send(request, c.ServiceName)
  292. if err != nil {
  293. return nil, err
  294. }
  295. jdResp := &disk.CreateDisksResponse{}
  296. err = json.Unmarshal(resp, jdResp)
  297. if err != nil {
  298. c.Logger.Log(core.LogError, "Unmarshal json failed, resp: %s", string(resp))
  299. return nil, err
  300. }
  301. return jdResp, err
  302. }
  303. /* - 删除单个云硬盘快照:快照状态必须为 available 或 error 状态。
  304. - 快照独立于云硬盘生命周期,删除快照不会对创建快照的云硬盘有任何影响。
  305. - 快照删除后不可恢复,请谨慎操作。
  306. */
  307. func (c *DiskClient) DeleteSnapshot(request *disk.DeleteSnapshotRequest) (*disk.DeleteSnapshotResponse, error) {
  308. if request == nil {
  309. return nil, errors.New("Request object is nil. ")
  310. }
  311. resp, err := c.Send(request, c.ServiceName)
  312. if err != nil {
  313. return nil, err
  314. }
  315. jdResp := &disk.DeleteSnapshotResponse{}
  316. err = json.Unmarshal(resp, jdResp)
  317. if err != nil {
  318. c.Logger.Log(core.LogError, "Unmarshal json failed, resp: %s", string(resp))
  319. return nil, err
  320. }
  321. return jdResp, err
  322. }
  323. /* 查询云硬盘快照列表,filters多个过滤条件之间是逻辑与(AND),每个条件内部的多个取值是逻辑或(OR) */
  324. func (c *DiskClient) DescribeSnapshots(request *disk.DescribeSnapshotsRequest) (*disk.DescribeSnapshotsResponse, error) {
  325. if request == nil {
  326. return nil, errors.New("Request object is nil. ")
  327. }
  328. resp, err := c.Send(request, c.ServiceName)
  329. if err != nil {
  330. return nil, err
  331. }
  332. jdResp := &disk.DescribeSnapshotsResponse{}
  333. err = json.Unmarshal(resp, jdResp)
  334. if err != nil {
  335. c.Logger.Log(core.LogError, "Unmarshal json failed, resp: %s", string(resp))
  336. return nil, err
  337. }
  338. return jdResp, err
  339. }
  340. /* - 仅可对制作快照的源硬盘进行数据恢复操作。
  341. - 仅源硬盘处于可用状态时才能使用快照进行数据恢复操作。
  342. - 云硬盘恢复后,当前数据将被清除,请您谨慎操作。
  343. */
  344. func (c *DiskClient) RestoreDisk(request *disk.RestoreDiskRequest) (*disk.RestoreDiskResponse, error) {
  345. if request == nil {
  346. return nil, errors.New("Request object is nil. ")
  347. }
  348. resp, err := c.Send(request, c.ServiceName)
  349. if err != nil {
  350. return nil, err
  351. }
  352. jdResp := &disk.RestoreDiskResponse{}
  353. err = json.Unmarshal(resp, jdResp)
  354. if err != nil {
  355. c.Logger.Log(core.LogError, "Unmarshal json failed, resp: %s", string(resp))
  356. return nil, err
  357. }
  358. return jdResp, err
  359. }
  360. /* 创建快照策略 */
  361. func (c *DiskClient) CreateSnapshotPolicy(request *disk.CreateSnapshotPolicyRequest) (*disk.CreateSnapshotPolicyResponse, error) {
  362. if request == nil {
  363. return nil, errors.New("Request object is nil. ")
  364. }
  365. resp, err := c.Send(request, c.ServiceName)
  366. if err != nil {
  367. return nil, err
  368. }
  369. jdResp := &disk.CreateSnapshotPolicyResponse{}
  370. err = json.Unmarshal(resp, jdResp)
  371. if err != nil {
  372. c.Logger.Log(core.LogError, "Unmarshal json failed, resp: %s", string(resp))
  373. return nil, err
  374. }
  375. return jdResp, err
  376. }
  377. /* 查询快照策略 */
  378. func (c *DiskClient) DescribeSnapshotPolicies(request *disk.DescribeSnapshotPoliciesRequest) (*disk.DescribeSnapshotPoliciesResponse, error) {
  379. if request == nil {
  380. return nil, errors.New("Request object is nil. ")
  381. }
  382. resp, err := c.Send(request, c.ServiceName)
  383. if err != nil {
  384. return nil, err
  385. }
  386. jdResp := &disk.DescribeSnapshotPoliciesResponse{}
  387. err = json.Unmarshal(resp, jdResp)
  388. if err != nil {
  389. c.Logger.Log(core.LogError, "Unmarshal json failed, resp: %s", string(resp))
  390. return nil, err
  391. }
  392. return jdResp, err
  393. }
  394. /* - 查询您已经创建的云硬盘。
  395. - filters多个过滤条件之间是逻辑与(AND),每个条件内部的多个取值是逻辑或(OR)
  396. */
  397. func (c *DiskClient) DescribeDisks(request *disk.DescribeDisksRequest) (*disk.DescribeDisksResponse, error) {
  398. if request == nil {
  399. return nil, errors.New("Request object is nil. ")
  400. }
  401. resp, err := c.Send(request, c.ServiceName)
  402. if err != nil {
  403. return nil, err
  404. }
  405. jdResp := &disk.DescribeDisksResponse{}
  406. err = json.Unmarshal(resp, jdResp)
  407. if err != nil {
  408. c.Logger.Log(core.LogError, "Unmarshal json failed, resp: %s", string(resp))
  409. return nil, err
  410. }
  411. return jdResp, err
  412. }
  413. /* - 删除一块按配置计费的云硬盘,云盘类型包括高效云盘、SSD云盘、通用型SSD、性能型SSD和容量型HDD。
  414. - 删除云盘时,云盘的状态必须为 待挂载(Available)。
  415. - 云盘被删除后,云硬盘快照可以被保留。
  416. */
  417. func (c *DiskClient) DeleteDisk(request *disk.DeleteDiskRequest) (*disk.DeleteDiskResponse, error) {
  418. if request == nil {
  419. return nil, errors.New("Request object is nil. ")
  420. }
  421. resp, err := c.Send(request, c.ServiceName)
  422. if err != nil {
  423. return nil, err
  424. }
  425. jdResp := &disk.DeleteDiskResponse{}
  426. err = json.Unmarshal(resp, jdResp)
  427. if err != nil {
  428. c.Logger.Log(core.LogError, "Unmarshal json failed, resp: %s", string(resp))
  429. return nil, err
  430. }
  431. return jdResp, err
  432. }
  433. /* - 为指定云硬盘创建快照,新生成的快照的状态为creating。
  434. - 同一地域下单用户快照的配额为15块。
  435. - 为保证数据完整性,请您在创建快照之前,停止对云硬盘进行写入操作,以保证快照数据的完整性。
  436. - 在执行创建快照前,建议您对云硬盘进行卸载操作,创建快照后再重新挂载到云主机上。
  437. - 手动快照的生命周期独立于云硬盘,请您及时删除不需要的快照。
  438. - 创建快照所需时间取决于云硬盘容量的大小,云硬盘容量越大耗时越长。
  439. */
  440. func (c *DiskClient) CreateSnapshot(request *disk.CreateSnapshotRequest) (*disk.CreateSnapshotResponse, error) {
  441. if request == nil {
  442. return nil, errors.New("Request object is nil. ")
  443. }
  444. resp, err := c.Send(request, c.ServiceName)
  445. if err != nil {
  446. return nil, err
  447. }
  448. jdResp := &disk.CreateSnapshotResponse{}
  449. err = json.Unmarshal(resp, jdResp)
  450. if err != nil {
  451. c.Logger.Log(core.LogError, "Unmarshal json failed, resp: %s", string(resp))
  452. return nil, err
  453. }
  454. return jdResp, err
  455. }
  456. /* 查询云硬盘快照信息详情 */
  457. func (c *DiskClient) DescribeSnapshot(request *disk.DescribeSnapshotRequest) (*disk.DescribeSnapshotResponse, error) {
  458. if request == nil {
  459. return nil, errors.New("Request object is nil. ")
  460. }
  461. resp, err := c.Send(request, c.ServiceName)
  462. if err != nil {
  463. return nil, err
  464. }
  465. jdResp := &disk.DescribeSnapshotResponse{}
  466. err = json.Unmarshal(resp, jdResp)
  467. if err != nil {
  468. c.Logger.Log(core.LogError, "Unmarshal json failed, resp: %s", string(resp))
  469. return nil, err
  470. }
  471. return jdResp, err
  472. }
  473. /* 查询云硬盘和快照资源的配额 */
  474. func (c *DiskClient) DescribeQuota(request *disk.DescribeQuotaRequest) (*disk.DescribeQuotaResponse, error) {
  475. if request == nil {
  476. return nil, errors.New("Request object is nil. ")
  477. }
  478. resp, err := c.Send(request, c.ServiceName)
  479. if err != nil {
  480. return nil, err
  481. }
  482. jdResp := &disk.DescribeQuotaResponse{}
  483. err = json.Unmarshal(resp, jdResp)
  484. if err != nil {
  485. c.Logger.Log(core.LogError, "Unmarshal json failed, resp: %s", string(resp))
  486. return nil, err
  487. }
  488. return jdResp, err
  489. }