Backport compute availabilityzones extension from the upstream
Change-Id: I2b824285af94669e1e57f61e4787b398e0db94d0
Related-PROD: PROD-34531
diff --git a/openstack/compute/v2/extensions/availabilityzones/doc.go b/openstack/compute/v2/extensions/availabilityzones/doc.go
new file mode 100644
index 0000000..29b554d
--- /dev/null
+++ b/openstack/compute/v2/extensions/availabilityzones/doc.go
@@ -0,0 +1,61 @@
+/*
+Package availabilityzones provides the ability to get lists and detailed
+availability zone information and to extend a server result with
+availability zone information.
+
+Example of Extend server result with Availability Zone Information:
+
+ type ServerWithAZ struct {
+ servers.Server
+ availabilityzones.ServerAvailabilityZoneExt
+ }
+
+ var allServers []ServerWithAZ
+
+ allPages, err := servers.List(client, nil).AllPages()
+ if err != nil {
+ panic("Unable to retrieve servers: %s", err)
+ }
+
+ err = servers.ExtractServersInto(allPages, &allServers)
+ if err != nil {
+ panic("Unable to extract servers: %s", err)
+ }
+
+ for _, server := range allServers {
+ fmt.Println(server.AvailabilityZone)
+ }
+
+Example of Get Availability Zone Information
+
+ allPages, err := availabilityzones.List(computeClient).AllPages()
+ if err != nil {
+ panic(err)
+ }
+
+ availabilityZoneInfo, err := availabilityzones.ExtractAvailabilityZones(allPages)
+ if err != nil {
+ panic(err)
+ }
+
+ for _, zoneInfo := range availabilityZoneInfo {
+ fmt.Printf("%+v\n", zoneInfo)
+ }
+
+Example of Get Detailed Availability Zone Information
+
+ allPages, err := availabilityzones.ListDetail(computeClient).AllPages()
+ if err != nil {
+ panic(err)
+ }
+
+ availabilityZoneInfo, err := availabilityzones.ExtractAvailabilityZones(allPages)
+ if err != nil {
+ panic(err)
+ }
+
+ for _, zoneInfo := range availabilityZoneInfo {
+ fmt.Printf("%+v\n", zoneInfo)
+ }
+*/
+package availabilityzones