// DeleteSecurityGroup will delete a security group. A fatal error will occur // if the group failed to be deleted. This works best as a deferred function. func DeleteSecurityGroup(t *testing.T, client *gophercloud.ServiceClient, securityGroup secgroups.SecurityGroup) { err := secgroups.Delete(client, securityGroup.ID).ExtractErr() if err != nil { t.Fatalf("Unable to delete security group %s: %s", securityGroup.ID, err) } t.Logf("Deleted security group: %s", securityGroup.ID) }
func TestDelete(t *testing.T) { th.SetupHTTP() defer th.TeardownHTTP() mockDeleteGroupResponse(t, groupID) err := secgroups.Delete(client.ServiceClient(), groupID).ExtractErr() th.AssertNoErr(t, err) }
// tearDown achieves the aims of TearDown() func (p *openstackp) tearDown(resources *Resources) (err error) { // throughout we'll ignore errors because we want to try and delete // as much as possible; we'll end up returning the last error we encountered // delete servers, except for ourselves pager := servers.List(p.computeClient, servers.ListOpts{}) err = pager.EachPage(func(page pagination.Page) (bool, error) { serverList, err := servers.ExtractServers(page) if err != nil { return false, err } for _, server := range serverList { if p.ownName != server.Name && strings.HasPrefix(server.Name, resources.ResourceName) { p.destroyServer(server.ID) // ignore errors, just try to delete others } } return true, nil }) if p.ownName == "" { // delete router if id := resources.Details["router"]; id != "" { if subnetid := resources.Details["subnet"]; subnetid != "" { // remove the interface from our router first _, err = routers.RemoveInterface(p.networkClient, id, routers.RemoveInterfaceOpts{SubnetID: subnetid}).Extract() } err = routers.Delete(p.networkClient, id).ExtractErr() } // delete network (and its subnet) if id := resources.Details["network"]; id != "" { err = networks.Delete(p.networkClient, id).ExtractErr() } // delete secgroup if id := resources.Details["secgroup"]; id != "" { err = secgroups.Delete(p.computeClient, id).ExtractErr() } } // delete keypair, unless we're running in OpenStack and securityGroup and // keypair have the same resourcename, indicating our current server needs // the same keypair we used to spawn our servers if id := resources.Details["keypair"]; id != "" { if p.ownName == "" || (p.securityGroup != "" && p.securityGroup != id) { err = keypairs.Delete(p.computeClient, id).ExtractErr() resources.PrivateKey = "" } } return }
func SecGroupV2StateRefreshFunc(computeClient *gophercloud.ServiceClient, d *schema.ResourceData) resource.StateRefreshFunc { return func() (interface{}, string, error) { log.Printf("[DEBUG] Attempting to delete Security Group %s.\n", d.Id()) err := secgroups.Delete(computeClient, d.Id()).ExtractErr() if err != nil { return nil, "", err } s, err := secgroups.Get(computeClient, d.Id()).Extract() if err != nil { err = CheckDeleted(d, err, "Security Group") if err != nil { return s, "", err } else { log.Printf("[DEBUG] Successfully deleted Security Group %s", d.Id()) return s, "DELETED", nil } } log.Printf("[DEBUG] Security Group %s still active.\n", d.Id()) return s, "ACTIVE", nil } }