blob: 7df2ad54b750ed2e4b5b6305cbdde3e4997bd7fd [file] [log] [blame]
Samuel A. Falvo IId3617102014-01-20 18:27:42 -08001package main
2
3import (
4 "flag"
5 "fmt"
6 "github.com/rackspace/gophercloud"
7)
8
9var quiet = flag.Bool("quiet", false, "Quiet mode, for acceptance testing. $? still indicates errors though.")
10
11func main() {
12 flag.Parse()
13 withIdentity(false, func(acc gophercloud.AccessProvider) {
14 withServerApi(acc, func(api gophercloud.CloudServersProvider) {
15 log("Creating server")
16 id, err := createServer(api, "", "", "", "")
17 if err != nil {
18 panic(err)
19 }
20 waitForServerState(api, id, "ACTIVE")
21 defer api.DeleteServerById(id)
22
23 tryAllAddresses(id, api)
24
25 log("Done")
26 })
27 })
28}
29
30func tryAllAddresses(id string, api gophercloud.CloudServersProvider) {
31 log("Getting the server instance")
32 s, err := api.ServerById(id)
33 if err != nil {
34 panic(err)
35 }
36
37 log("Getting the complete set of pools")
38 ps, err := s.AllAddressPools()
39 if err != nil {
40 panic(err)
41 }
42
43 log("Listing IPs for each pool")
44 for k, v := range ps {
45 log(fmt.Sprintf(" Pool %s", k))
46 for _, a := range v {
47 log(fmt.Sprintf(" IP: %s, Version: %d", a.Addr, a.Version))
48 }
49 }
50}
51
52func log(s ...interface{}) {
53 if !*quiet {
54 fmt.Println(s...)
55 }
56}