zones.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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. type AvailableInstanceTypesType struct {
  24. InstanceTypes []string
  25. }
  26. //
  27. // You can read doc at http://docs.aliyun.com/#/pub/ecs/open-api/datatype&zonetype
  28. type ZoneType struct {
  29. ZoneId string
  30. LocalName string
  31. AvailableInstanceTypes AvailableInstanceTypesType
  32. AvailableResourceCreation AvailableResourceCreationType
  33. AvailableDiskCategories AvailableDiskCategoriesType
  34. }
  35. type DescribeZonesResponse struct {
  36. common.Response
  37. Zones struct {
  38. Zone []ZoneType
  39. }
  40. }
  41. // DescribeZones describes zones
  42. func (client *Client) DescribeZones(regionId common.Region) (zones []ZoneType, err error) {
  43. args := DescribeZonesArgs{
  44. RegionId: regionId,
  45. }
  46. response := DescribeZonesResponse{}
  47. err = client.Invoke("DescribeZones", &args, &response)
  48. if err == nil {
  49. return response.Zones.Zone, nil
  50. }
  51. return []ZoneType{}, err
  52. }