blob: dbee8e37443b68f5df9abee5ca029158c180a4c2 [file] [log] [blame]
Joe Topjianaa8aff12016-07-25 19:43:52 +00001// +build acceptance compute defsecrules
2
3package v2
4
5import (
6 "testing"
7
8 "github.com/gophercloud/gophercloud"
9 "github.com/gophercloud/gophercloud/acceptance/tools"
10 dsr "github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/defsecrules"
11)
12
13func TestDefSecRulesList(t *testing.T) {
14 client, err := newClient()
15 if err != nil {
16 t.Fatalf("Unable to create a compute client: %v", err)
17 }
18
19 allPages, err := dsr.List(client).AllPages()
20 if err != nil {
21 t.Fatalf("Unable to list default rules: %v", err)
22 }
23
24 allDefaultRules, err := dsr.ExtractDefaultRules(allPages)
25 if err != nil {
26 t.Fatalf("Unable to extract default rules: %v", err)
27 }
28
29 for _, defaultRule := range allDefaultRules {
30 printDefaultRule(t, &defaultRule)
31 }
32}
33
34func TestDefSecRulesCreate(t *testing.T) {
35 client, err := newClient()
36 if err != nil {
37 t.Fatalf("Unable to create a compute client: %v", err)
38 }
39
40 defaultRule, err := createDefaultRule(t, client)
41 if err != nil {
42 t.Fatalf("Unable to create default rule: %v", err)
43 }
44 defer deleteDefaultRule(t, client, defaultRule)
45
46 printDefaultRule(t, &defaultRule)
47}
48
49func TestDefSecRulesGet(t *testing.T) {
50 client, err := newClient()
51 if err != nil {
52 t.Fatalf("Unable to create a compute client: %v", err)
53 }
54
55 defaultRule, err := createDefaultRule(t, client)
56 if err != nil {
57 t.Fatalf("Unable to create default rule: %v", err)
58 }
59 defer deleteDefaultRule(t, client, defaultRule)
60
61 newDefaultRule, err := dsr.Get(client, defaultRule.ID).Extract()
62 if err != nil {
63 t.Fatalf("Unable to get default rule %s: %v", defaultRule.ID, err)
64 }
65
66 printDefaultRule(t, newDefaultRule)
67}
68
69func createDefaultRule(t *testing.T, client *gophercloud.ServiceClient) (dsr.DefaultRule, error) {
70 createOpts := dsr.CreateOpts{
71 FromPort: tools.RandomInt(80, 89),
72 ToPort: tools.RandomInt(90, 99),
73 IPProtocol: "TCP",
74 CIDR: "0.0.0.0/0",
75 }
76
77 defaultRule, err := dsr.Create(client, createOpts).Extract()
78 if err != nil {
79 return *defaultRule, err
80 }
81
82 t.Logf("Created default rule: %s", defaultRule.ID)
83
84 return *defaultRule, nil
85}
86
87func deleteDefaultRule(t *testing.T, client *gophercloud.ServiceClient, defaultRule dsr.DefaultRule) {
88 err := dsr.Delete(client, defaultRule.ID).ExtractErr()
89 if err != nil {
90 t.Fatalf("Unable to delete default rule %s: %v", defaultRule.ID, err)
91 }
92
93 t.Logf("Deleted default rule: %s", defaultRule.ID)
94}
95
96func printDefaultRule(t *testing.T, defaultRule *dsr.DefaultRule) {
97 t.Logf("\tID: %s", defaultRule.ID)
98 t.Logf("\tFrom Port: %d", defaultRule.FromPort)
99 t.Logf("\tTo Port: %d", defaultRule.ToPort)
100 t.Logf("\tIP Protocol: %s", defaultRule.IPProtocol)
101 t.Logf("\tIP Range: %s", defaultRule.IPRange.CIDR)
102 t.Logf("\tParent Group ID: %s", defaultRule.ParentGroupID)
103 t.Logf("\tGroup Tenant ID: %s", defaultRule.Group.TenantID)
104 t.Logf("\tGroup Name: %s", defaultRule.Group.Name)
105}