func TestCreate(t *testing.T) { th.SetupHTTP() defer th.TeardownHTTP() th.Mux.HandleFunc("/v2.0/fw/firewalls", func(w http.ResponseWriter, r *http.Request) { th.TestMethod(t, r, "POST") th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) th.TestHeader(t, r, "Content-Type", "application/json") th.TestHeader(t, r, "Accept", "application/json") th.TestJSONRequest(t, r, ` { "firewall":{ "name": "fw", "description": "OpenStack firewall", "admin_state_up": true, "firewall_policy_id": "19ab8c87-4a32-4e6a-a74e-b77fffb89a0c", "tenant_id": "b4eedccc6fb74fa8a7ad6b08382b852b" } } `) w.Header().Add("Content-Type", "application/json") w.WriteHeader(http.StatusCreated) fmt.Fprintf(w, ` { "firewall":{ "status": "PENDING_CREATE", "name": "fw", "description": "OpenStack firewall", "admin_state_up": true, "tenant_id": "b4eedccc6fb74fa8a7ad6b08382b852b", "firewall_policy_id": "19ab8c87-4a32-4e6a-a74e-b77fffb89a0c" } } `) }) options := firewalls.CreateOpts{ TenantID: "b4eedccc6fb74fa8a7ad6b08382b852b", Name: "fw", Description: "OpenStack firewall", AdminStateUp: gophercloud.Enabled, PolicyID: "19ab8c87-4a32-4e6a-a74e-b77fffb89a0c", } _, err := firewalls.Create(fake.ServiceClient(), options).Extract() th.AssertNoErr(t, err) }
func resourceFWFirewallV1Create(d *schema.ResourceData, meta interface{}) error { config := meta.(*Config) networkingClient, err := config.networkingV2Client(GetRegion(d)) if err != nil { return fmt.Errorf("Error creating OpenStack networking client: %s", err) } adminStateUp := d.Get("admin_state_up").(bool) firewallConfiguration := FirewallCreateOpts{ firewalls.CreateOpts{ Name: d.Get("name").(string), Description: d.Get("description").(string), PolicyID: d.Get("policy_id").(string), AdminStateUp: &adminStateUp, TenantID: d.Get("tenant_id").(string), }, MapValueSpecs(d), } log.Printf("[DEBUG] Create firewall: %#v", firewallConfiguration) firewall, err := firewalls.Create(networkingClient, firewallConfiguration).Extract() if err != nil { return err } log.Printf("[DEBUG] Firewall created: %#v", firewall) stateConf := &resource.StateChangeConf{ Pending: []string{"PENDING_CREATE"}, Target: []string{"ACTIVE"}, Refresh: waitForFirewallActive(networkingClient, firewall.ID), Timeout: 30 * time.Second, Delay: 0, MinTimeout: 2 * time.Second, } _, err = stateConf.WaitForState() d.SetId(firewall.ID) return resourceFWFirewallV1Read(d, meta) }
// CreateFirewall will create a Firewaill with a random name and a specified // policy ID. An error will be returned if the firewall could not be created. func CreateFirewall(t *testing.T, client *gophercloud.ServiceClient, policyID string) (*firewalls.Firewall, error) { firewallName := tools.RandomString("TESTACC-", 8) t.Logf("Attempting to create firewall %s", firewallName) createOpts := firewalls.CreateOpts{ Name: firewallName, PolicyID: policyID, } firewall, err := firewalls.Create(client, createOpts).Extract() if err != nil { return firewall, err } t.Logf("Waiting for firewall to become active.") if err := WaitForFirewallState(client, firewall.ID, "ACTIVE", 60); err != nil { return firewall, err } t.Logf("Successfully created firewall %s", firewallName) return firewall, nil }