github.com/gophercloud/gophercloud@v1.11.0/internal/acceptance/openstack/compute/v2/secgroup_test.go (about) 1 //go:build acceptance || compute || secgroups 2 // +build acceptance compute secgroups 3 4 package v2 5 6 import ( 7 "testing" 8 9 "github.com/gophercloud/gophercloud/internal/acceptance/clients" 10 "github.com/gophercloud/gophercloud/internal/acceptance/tools" 11 "github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/secgroups" 12 "github.com/gophercloud/gophercloud/openstack/compute/v2/servers" 13 th "github.com/gophercloud/gophercloud/testhelper" 14 ) 15 16 func TestSecGroupsList(t *testing.T) { 17 client, err := clients.NewComputeV2Client() 18 th.AssertNoErr(t, err) 19 20 allPages, err := secgroups.List(client).AllPages() 21 th.AssertNoErr(t, err) 22 23 allSecGroups, err := secgroups.ExtractSecurityGroups(allPages) 24 th.AssertNoErr(t, err) 25 26 var found bool 27 for _, secgroup := range allSecGroups { 28 tools.PrintResource(t, secgroup) 29 30 if secgroup.Name == "default" { 31 found = true 32 } 33 } 34 35 th.AssertEquals(t, found, true) 36 } 37 38 func TestSecGroupsCRUD(t *testing.T) { 39 client, err := clients.NewComputeV2Client() 40 th.AssertNoErr(t, err) 41 42 securityGroup, err := CreateSecurityGroup(t, client) 43 th.AssertNoErr(t, err) 44 defer DeleteSecurityGroup(t, client, securityGroup.ID) 45 46 tools.PrintResource(t, securityGroup) 47 48 newName := tools.RandomString("secgroup_", 4) 49 description := "" 50 updateOpts := secgroups.UpdateOpts{ 51 Name: newName, 52 Description: &description, 53 } 54 updatedSecurityGroup, err := secgroups.Update(client, securityGroup.ID, updateOpts).Extract() 55 th.AssertNoErr(t, err) 56 57 tools.PrintResource(t, updatedSecurityGroup) 58 59 t.Logf("Updated %s's name to %s", updatedSecurityGroup.ID, updatedSecurityGroup.Name) 60 61 th.AssertEquals(t, updatedSecurityGroup.Name, newName) 62 th.AssertEquals(t, updatedSecurityGroup.Description, description) 63 } 64 65 func TestSecGroupsRuleCreate(t *testing.T) { 66 client, err := clients.NewComputeV2Client() 67 th.AssertNoErr(t, err) 68 69 securityGroup, err := CreateSecurityGroup(t, client) 70 th.AssertNoErr(t, err) 71 defer DeleteSecurityGroup(t, client, securityGroup.ID) 72 73 tools.PrintResource(t, securityGroup) 74 75 rule, err := CreateSecurityGroupRule(t, client, securityGroup.ID) 76 th.AssertNoErr(t, err) 77 defer DeleteSecurityGroupRule(t, client, rule.ID) 78 79 tools.PrintResource(t, rule) 80 81 newSecurityGroup, err := secgroups.Get(client, securityGroup.ID).Extract() 82 th.AssertNoErr(t, err) 83 84 tools.PrintResource(t, newSecurityGroup) 85 86 th.AssertEquals(t, len(newSecurityGroup.Rules), 1) 87 } 88 89 func TestSecGroupsAddGroupToServer(t *testing.T) { 90 clients.RequireLong(t) 91 92 client, err := clients.NewComputeV2Client() 93 th.AssertNoErr(t, err) 94 95 server, err := CreateServer(t, client) 96 th.AssertNoErr(t, err) 97 defer DeleteServer(t, client, server) 98 99 securityGroup, err := CreateSecurityGroup(t, client) 100 th.AssertNoErr(t, err) 101 defer DeleteSecurityGroup(t, client, securityGroup.ID) 102 103 rule, err := CreateSecurityGroupRule(t, client, securityGroup.ID) 104 th.AssertNoErr(t, err) 105 defer DeleteSecurityGroupRule(t, client, rule.ID) 106 107 t.Logf("Adding group %s to server %s", securityGroup.ID, server.ID) 108 err = secgroups.AddServer(client, server.ID, securityGroup.Name).ExtractErr() 109 th.AssertNoErr(t, err) 110 111 server, err = servers.Get(client, server.ID).Extract() 112 th.AssertNoErr(t, err) 113 114 tools.PrintResource(t, server) 115 116 var found bool 117 for _, sg := range server.SecurityGroups { 118 if sg["name"] == securityGroup.Name { 119 found = true 120 } 121 } 122 123 th.AssertEquals(t, found, true) 124 125 t.Logf("Removing group %s from server %s", securityGroup.ID, server.ID) 126 err = secgroups.RemoveServer(client, server.ID, securityGroup.Name).ExtractErr() 127 th.AssertNoErr(t, err) 128 129 server, err = servers.Get(client, server.ID).Extract() 130 th.AssertNoErr(t, err) 131 132 found = false 133 134 tools.PrintResource(t, server) 135 136 for _, sg := range server.SecurityGroups { 137 if sg["name"] == securityGroup.Name { 138 found = true 139 } 140 } 141 142 th.AssertEquals(t, found, false) 143 }