PageRenderTime 56ms CodeModel.GetById 25ms app.highlight 21ms RepoModel.GetById 0ms app.codeStats 0ms

/Godeps/_workspace/src/github.com/rackspace/gophercloud/acceptance/openstack/compute/v2/keypairs_test.go

https://gitlab.com/Red54/machine
Go | 74 lines | 57 code | 16 blank | 1 comment | 4 complexity | 11ce6788e0b28bb6015e71948861d6d3 MD5 | raw file
 1// +build acceptance
 2
 3package v2
 4
 5import (
 6	"crypto/rand"
 7	"crypto/rsa"
 8	"testing"
 9
10	"github.com/rackspace/gophercloud/acceptance/tools"
11	"github.com/rackspace/gophercloud/openstack/compute/v2/extensions/keypairs"
12	"github.com/rackspace/gophercloud/openstack/compute/v2/servers"
13	th "github.com/rackspace/gophercloud/testhelper"
14
15	"code.google.com/p/go.crypto/ssh"
16)
17
18const keyName = "gophercloud_test_key_pair"
19
20func TestCreateServerWithKeyPair(t *testing.T) {
21	client, err := newClient()
22	th.AssertNoErr(t, err)
23
24	if testing.Short() {
25		t.Skip("Skipping test that requires server creation in short mode.")
26	}
27
28	privateKey, err := rsa.GenerateKey(rand.Reader, 2048)
29	publicKey := privateKey.PublicKey
30	pub, err := ssh.NewPublicKey(&publicKey)
31	th.AssertNoErr(t, err)
32	pubBytes := ssh.MarshalAuthorizedKey(pub)
33	pk := string(pubBytes)
34
35	kp, err := keypairs.Create(client, keypairs.CreateOpts{
36		Name:      keyName,
37		PublicKey: pk,
38	}).Extract()
39	th.AssertNoErr(t, err)
40	t.Logf("Created key pair: %s\n", kp)
41
42	choices, err := ComputeChoicesFromEnv()
43	th.AssertNoErr(t, err)
44
45	name := tools.RandomString("Gophercloud-", 8)
46	t.Logf("Creating server [%s] with key pair.", name)
47
48	serverCreateOpts := servers.CreateOpts{
49		Name:      name,
50		FlavorRef: choices.FlavorID,
51		ImageRef:  choices.ImageID,
52	}
53
54	server, err := servers.Create(client, keypairs.CreateOptsExt{
55		serverCreateOpts,
56		keyName,
57	}).Extract()
58	th.AssertNoErr(t, err)
59	defer servers.Delete(client, server.ID)
60	if err = waitForStatus(client, server, "ACTIVE"); err != nil {
61		t.Fatalf("Unable to wait for server: %v", err)
62	}
63
64	server, err = servers.Get(client, server.ID).Extract()
65	t.Logf("Created server: %+v\n", server)
66	th.AssertNoErr(t, err)
67	th.AssertEquals(t, server.KeyName, keyName)
68
69	t.Logf("Deleting key pair [%s]...", kp.Name)
70	err = keypairs.Delete(client, keyName).ExtractErr()
71	th.AssertNoErr(t, err)
72
73	t.Logf("Deleting server [%s]...", name)
74}