// createServer creates a new server in a manner compatible with acceptance testing. // In particular, it ensures that the name of the server always starts with "ACPTTEST--", // which the delete servers acceptance test relies on to identify servers to delete. // Passing in empty image and flavor references will force the use of reasonable defaults. // An empty name string will result in a dynamically created name prefixed with "ACPTTEST--". // A blank admin password will cause a password to be automatically generated; however, // at present no means of recovering this password exists, as no acceptance tests yet require // this data. func createServer(servers gophercloud.CloudServersProvider, imageRef, flavorRef, name, adminPass string) (string, error) { if imageRef == "" { imageRef = aSuitableImage(servers) } if flavorRef == "" { flavorRef = aSuitableFlavor(servers) } if len(name) < 1 { name = randomString("ACPTTEST", 16) } if (len(name) < 8) || (name[0:8] != "ACPTTEST") { name = fmt.Sprintf("ACPTTEST--%s", name) } newServer, err := servers.CreateServer(gophercloud.NewServer{ Name: name, ImageRef: imageRef, FlavorRef: flavorRef, AdminPass: adminPass, }) if err != nil { return "", err } return newServer.Id, nil }