blob: dbee8e37443b68f5df9abee5ca029158c180a4c2 [file] [log] [blame]
// +build acceptance compute defsecrules
package v2
import (
"testing"
"github.com/gophercloud/gophercloud"
"github.com/gophercloud/gophercloud/acceptance/tools"
dsr "github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/defsecrules"
)
func TestDefSecRulesList(t *testing.T) {
client, err := newClient()
if err != nil {
t.Fatalf("Unable to create a compute client: %v", err)
}
allPages, err := dsr.List(client).AllPages()
if err != nil {
t.Fatalf("Unable to list default rules: %v", err)
}
allDefaultRules, err := dsr.ExtractDefaultRules(allPages)
if err != nil {
t.Fatalf("Unable to extract default rules: %v", err)
}
for _, defaultRule := range allDefaultRules {
printDefaultRule(t, &defaultRule)
}
}
func TestDefSecRulesCreate(t *testing.T) {
client, err := newClient()
if err != nil {
t.Fatalf("Unable to create a compute client: %v", err)
}
defaultRule, err := createDefaultRule(t, client)
if err != nil {
t.Fatalf("Unable to create default rule: %v", err)
}
defer deleteDefaultRule(t, client, defaultRule)
printDefaultRule(t, &defaultRule)
}
func TestDefSecRulesGet(t *testing.T) {
client, err := newClient()
if err != nil {
t.Fatalf("Unable to create a compute client: %v", err)
}
defaultRule, err := createDefaultRule(t, client)
if err != nil {
t.Fatalf("Unable to create default rule: %v", err)
}
defer deleteDefaultRule(t, client, defaultRule)
newDefaultRule, err := dsr.Get(client, defaultRule.ID).Extract()
if err != nil {
t.Fatalf("Unable to get default rule %s: %v", defaultRule.ID, err)
}
printDefaultRule(t, newDefaultRule)
}
func createDefaultRule(t *testing.T, client *gophercloud.ServiceClient) (dsr.DefaultRule, error) {
createOpts := dsr.CreateOpts{
FromPort: tools.RandomInt(80, 89),
ToPort: tools.RandomInt(90, 99),
IPProtocol: "TCP",
CIDR: "0.0.0.0/0",
}
defaultRule, err := dsr.Create(client, createOpts).Extract()
if err != nil {
return *defaultRule, err
}
t.Logf("Created default rule: %s", defaultRule.ID)
return *defaultRule, nil
}
func deleteDefaultRule(t *testing.T, client *gophercloud.ServiceClient, defaultRule dsr.DefaultRule) {
err := dsr.Delete(client, defaultRule.ID).ExtractErr()
if err != nil {
t.Fatalf("Unable to delete default rule %s: %v", defaultRule.ID, err)
}
t.Logf("Deleted default rule: %s", defaultRule.ID)
}
func printDefaultRule(t *testing.T, defaultRule *dsr.DefaultRule) {
t.Logf("\tID: %s", defaultRule.ID)
t.Logf("\tFrom Port: %d", defaultRule.FromPort)
t.Logf("\tTo Port: %d", defaultRule.ToPort)
t.Logf("\tIP Protocol: %s", defaultRule.IPProtocol)
t.Logf("\tIP Range: %s", defaultRule.IPRange.CIDR)
t.Logf("\tParent Group ID: %s", defaultRule.ParentGroupID)
t.Logf("\tGroup Tenant ID: %s", defaultRule.Group.TenantID)
t.Logf("\tGroup Name: %s", defaultRule.Group.Name)
}