blob: 1d7d26b54d13da025eb342e0d118ad706380b867 [file] [log] [blame]
Samuel A. Falvo II2dd7d2f2014-06-30 16:18:08 -07001// +build acceptance,old
2
Samuel A. Falvo IIe21808f2013-08-14 14:48:09 -07003package main
4
5import (
Samuel A. Falvo IIe21808f2013-08-14 14:48:09 -07006 "flag"
Jon Perritt7152a1c2013-12-13 17:20:22 -06007 "fmt"
Max Lincoln28b49562013-12-13 13:23:44 -03008 "github.com/rackspace/gophercloud"
Samuel A. Falvo IIe21808f2013-08-14 14:48:09 -07009)
10
11var quiet = flag.Bool("quiet", false, "Quiet mode, for acceptance testing. $? still indicates errors though.")
12
13func main() {
14 flag.Parse()
15 withIdentity(false, func(acc gophercloud.AccessProvider) {
Jon Perritt499dce12013-10-29 15:41:14 -050016 withServerApi(acc, func(api gophercloud.CloudServersProvider) {
Samuel A. Falvo IIe21808f2013-08-14 14:48:09 -070017 log("Creating server")
Jon Perritt499dce12013-10-29 15:41:14 -050018 id, err := createServer(api, "", "", "", "")
Samuel A. Falvo IIe21808f2013-08-14 14:48:09 -070019 if err != nil {
20 panic(err)
21 }
Jon Perritt499dce12013-10-29 15:41:14 -050022 waitForServerState(api, id, "ACTIVE")
23 defer api.DeleteServerById(id)
Jon Perritt7152a1c2013-12-13 17:20:22 -060024
Jon Perritt499dce12013-10-29 15:41:14 -050025 tryAllAddresses(id, api)
Jon Perritt499dce12013-10-29 15:41:14 -050026 tryAddressesByNetwork("private", id, api)
Samuel A. Falvo IIe21808f2013-08-14 14:48:09 -070027
28 log("Done")
29 })
30 })
31}
32
Jon Perritt499dce12013-10-29 15:41:14 -050033func tryAllAddresses(id string, api gophercloud.CloudServersProvider) {
34 log("Getting list of all addresses...")
35 addresses, err := api.ListAddresses(id)
Jon Perritt7152a1c2013-12-13 17:20:22 -060036 if (err != nil) && (err != gophercloud.WarnUnauthoritative) {
37 panic(err)
38 }
39 if err == gophercloud.WarnUnauthoritative {
40 log("Uh oh -- got a response back, but it's not authoritative for some reason.")
41 }
42 if !*quiet {
43 fmt.Println("Addresses:")
44 fmt.Printf("%+v\n", addresses)
45 }
Jon Perritt499dce12013-10-29 15:41:14 -050046}
47
48func tryAddressesByNetwork(networkLabel string, id string, api gophercloud.CloudServersProvider) {
49 log("Getting list of addresses on", networkLabel, "network...")
Jon Perritt7152a1c2013-12-13 17:20:22 -060050 network, err := api.ListAddressesByNetwork(id, networkLabel)
51 if (err != nil) && (err != gophercloud.WarnUnauthoritative) {
52 panic(err)
53 }
54 if err == gophercloud.WarnUnauthoritative {
55 log("Uh oh -- got a response back, but it's not authoritative for some reason.")
56 }
57 for _, addr := range network[networkLabel] {
Jon Perritt499dce12013-10-29 15:41:14 -050058 log("Address:", addr.Addr, " IPv", addr.Version)
59 }
60}
61
Jon Perritt7152a1c2013-12-13 17:20:22 -060062func log(s ...interface{}) {
Samuel A. Falvo IIe21808f2013-08-14 14:48:09 -070063 if !*quiet {
64 fmt.Println(s...)
65 }
66}