Samuel A. Falvo II | e91ff6d | 2013-07-11 15:46:10 -0700 | [diff] [blame] | 1 | package main |
| 2 | |
| 3 | import ( |
| 4 | "flag" |
| 5 | "fmt" |
Samuel A. Falvo II | e91ff6d | 2013-07-11 15:46:10 -0700 | [diff] [blame] | 6 | "github.com/rackspace/gophercloud" |
| 7 | ) |
| 8 | |
Samuel A. Falvo II | 4b0ba75 | 2013-07-11 17:42:26 -0700 | [diff] [blame] | 9 | var provider, username, password string |
| 10 | |
Samuel A. Falvo II | e91ff6d | 2013-07-11 15:46:10 -0700 | [diff] [blame] | 11 | var region, serverName, imageRef, flavorRef *string |
| 12 | var adminPass = flag.String("a", "", "Administrator password (auto-assigned if none)") |
Samuel A. Falvo II | 4b0ba75 | 2013-07-11 17:42:26 -0700 | [diff] [blame] | 13 | var quiet = flag.Bool("quiet", false, "Quiet mode for acceptance tests. $? non-zero if error.") |
Samuel A. Falvo II | e91ff6d | 2013-07-11 15:46:10 -0700 | [diff] [blame] | 14 | |
Samuel A. Falvo II | 4b0ba75 | 2013-07-11 17:42:26 -0700 | [diff] [blame] | 15 | func configure() { |
| 16 | provider, username, password = getCredentials() |
Samuel A. Falvo II | e91ff6d | 2013-07-11 15:46:10 -0700 | [diff] [blame] | 17 | region = flag.String("r", "DFW", "Rackspace region in which to create the server") |
Samuel A. Falvo II | e3b2d7a | 2013-07-12 11:08:02 -0700 | [diff] [blame] | 18 | serverName = flag.String("n", randomString("ACPTTEST--", 16), "Server name (what you see in the control panel)") |
Samuel A. Falvo II | 4b0ba75 | 2013-07-11 17:42:26 -0700 | [diff] [blame] | 19 | imageRef = flag.String("i", "", "ID of image to deploy onto the server") |
| 20 | flavorRef = flag.String("f", "", "Flavor of server to deploy image upon") |
Samuel A. Falvo II | e91ff6d | 2013-07-11 15:46:10 -0700 | [diff] [blame] | 21 | |
| 22 | flag.Parse() |
Samuel A. Falvo II | 4b0ba75 | 2013-07-11 17:42:26 -0700 | [diff] [blame] | 23 | } |
Samuel A. Falvo II | e91ff6d | 2013-07-11 15:46:10 -0700 | [diff] [blame] | 24 | |
Samuel A. Falvo II | 4b0ba75 | 2013-07-11 17:42:26 -0700 | [diff] [blame] | 25 | func main() { |
| 26 | configure() |
Samuel A. Falvo II | e91ff6d | 2013-07-11 15:46:10 -0700 | [diff] [blame] | 27 | |
| 28 | auth, err := gophercloud.Authenticate( |
| 29 | provider, |
| 30 | gophercloud.AuthOptions{ |
| 31 | Username: username, |
| 32 | Password: password, |
| 33 | }, |
| 34 | ) |
| 35 | if err != nil { |
| 36 | panic(err) |
| 37 | } |
| 38 | |
| 39 | servers, err := gophercloud.ServersApi(auth, gophercloud.ApiCriteria{ |
| 40 | Name: "cloudServersOpenStack", |
| 41 | Region: *region, |
| 42 | VersionId: "2", |
| 43 | UrlChoice: gophercloud.PublicURL, |
| 44 | }) |
| 45 | if err != nil { |
| 46 | panic(err) |
| 47 | } |
| 48 | |
Samuel A. Falvo II | 8069960 | 2013-07-25 23:35:57 -0700 | [diff] [blame] | 49 | _, err = createServer(servers, *imageRef, *flavorRef, *serverName, *adminPass) |
Samuel A. Falvo II | e91ff6d | 2013-07-11 15:46:10 -0700 | [diff] [blame] | 50 | if err != nil { |
| 51 | panic(err) |
| 52 | } |
| 53 | |
| 54 | allServers, err := servers.ListServers() |
| 55 | if err != nil { |
| 56 | panic(err) |
| 57 | } |
| 58 | |
Samuel A. Falvo II | 4b0ba75 | 2013-07-11 17:42:26 -0700 | [diff] [blame] | 59 | if !*quiet { |
| 60 | fmt.Printf("ID,Name,Status,Progress\n") |
| 61 | for _, i := range allServers { |
| 62 | fmt.Printf("%s,\"%s\",%s,%d\n", i.Id, i.Name, i.Status, i.Progress) |
| 63 | } |
Samuel A. Falvo II | e91ff6d | 2013-07-11 15:46:10 -0700 | [diff] [blame] | 64 | } |
| 65 | } |