github.com/gophercloud/gophercloud@v1.11.0/openstack/blockstorage/extensions/availabilityzones/results.go (about)

     1  package availabilityzones
     2  
     3  import (
     4  	"github.com/gophercloud/gophercloud/pagination"
     5  )
     6  
     7  // ZoneState represents the current state of the availability zone.
     8  type ZoneState struct {
     9  	// Returns true if the availability zone is available
    10  	Available bool `json:"available"`
    11  }
    12  
    13  // AvailabilityZone contains all the information associated with an OpenStack
    14  // AvailabilityZone.
    15  type AvailabilityZone struct {
    16  	// The availability zone name
    17  	ZoneName  string    `json:"zoneName"`
    18  	ZoneState ZoneState `json:"zoneState"`
    19  }
    20  
    21  type AvailabilityZonePage struct {
    22  	pagination.SinglePageBase
    23  }
    24  
    25  // ExtractAvailabilityZones returns a slice of AvailabilityZones contained in a
    26  // single page of results.
    27  func ExtractAvailabilityZones(r pagination.Page) ([]AvailabilityZone, error) {
    28  	var s struct {
    29  		AvailabilityZoneInfo []AvailabilityZone `json:"availabilityZoneInfo"`
    30  	}
    31  	err := (r.(AvailabilityZonePage)).ExtractInto(&s)
    32  	return s.AvailabilityZoneInfo, err
    33  }