zones.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package ecs
  2. import "github.com/denverdino/aliyungo/common"
  3. type ResourceType string
  4. const (
  5. ResourceTypeInstance = ResourceType("Instance")
  6. ResourceTypeDisk = ResourceType("Disk")
  7. ResourceTypeVSwitch = ResourceType("VSwitch")
  8. ResourceTypeIOOptimizedInstance = ResourceType("IoOptimized")
  9. )
  10. type DescribeZonesArgs struct {
  11. RegionId common.Region
  12. }
  13. //
  14. // You can read doc at http://docs.aliyun.com/#/pub/ecs/open-api/datatype&availableresourcecreationtype
  15. type AvailableResourceCreationType struct {
  16. ResourceTypes []ResourceType //enum for Instance, Disk, VSwitch
  17. }
  18. //
  19. // You can read doc at http://docs.aliyun.com/#/pub/ecs/open-api/datatype&availablediskcategoriestype
  20. type AvailableDiskCategoriesType struct {
  21. DiskCategories []DiskCategory //enum for cloud, ephemeral, ephemeral_ssd
  22. }
  23. //
  24. // You can read doc at http://docs.aliyun.com/#/pub/ecs/open-api/datatype&zonetype
  25. type ZoneType struct {
  26. ZoneId string
  27. LocalName string
  28. AvailableResourceCreation AvailableResourceCreationType
  29. AvailableDiskCategories AvailableDiskCategoriesType
  30. }
  31. type DescribeZonesResponse struct {
  32. common.Response
  33. Zones struct {
  34. Zone []ZoneType
  35. }
  36. }
  37. // DescribeZones describes zones
  38. func (client *Client) DescribeZones(regionId common.Region) (zones []ZoneType, err error) {
  39. args := DescribeZonesArgs{
  40. RegionId: regionId,
  41. }
  42. response := DescribeZonesResponse{}
  43. err = client.Invoke("DescribeZones", &args, &response)
  44. if err == nil {
  45. return response.Zones.Zone, nil
  46. }
  47. return []ZoneType{}, err
  48. }