func TestUpdate(t *testing.T) { th.SetupHTTP() defer th.TeardownHTTP() th.Mux.HandleFunc("/v2.0/fw/firewalls/ea5b5315-64f6-4ea3-8e58-981cc37c6576", func(w http.ResponseWriter, r *http.Request) { th.TestMethod(t, r, "PUT") 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": "updated fw", "admin_state_up":false, "firewall_policy_id": "19ab8c87-4a32-4e6a-a74e-b77fffb89a0c" } } `) w.Header().Add("Content-Type", "application/json") w.WriteHeader(http.StatusOK) fmt.Fprintf(w, ` { "firewall": { "status": "ACTIVE", "name": "fw", "admin_state_up": false, "tenant_id": "b4eedccc6fb74fa8a7ad6b08382b852b", "firewall_policy_id": "19ab8c87-4a32-4e6a-a74e-b77fffb89a0c", "id": "ea5b5315-64f6-4ea3-8e58-981cc37c6576", "description": "OpenStack firewall" } } `) }) options := firewalls.UpdateOpts{ Name: "fw", Description: "updated fw", AdminStateUp: gophercloud.Disabled, PolicyID: "19ab8c87-4a32-4e6a-a74e-b77fffb89a0c", } _, err := firewalls.Update(fake.ServiceClient(), "ea5b5315-64f6-4ea3-8e58-981cc37c6576", options).Extract() th.AssertNoErr(t, err) }
func resourceFWFirewallV1Update(d *schema.ResourceData, meta interface{}) error { config := meta.(*Config) networkingClient, err := config.networkingV2Client(d.Get("region").(string)) if err != nil { return fmt.Errorf("Error creating OpenStack networking client: %s", err) } opts := firewalls.UpdateOpts{} if d.HasChange("name") { opts.Name = d.Get("name").(string) } if d.HasChange("description") { opts.Description = d.Get("description").(string) } if d.HasChange("policy_id") { opts.PolicyID = d.Get("policy_id").(string) } if d.HasChange("admin_state_up") { adminStateUp := d.Get("admin_state_up").(bool) opts.AdminStateUp = &adminStateUp } log.Printf("[DEBUG] Updating firewall with id %s: %#v", d.Id(), opts) stateConf := &resource.StateChangeConf{ Pending: []string{"PENDING_CREATE", "PENDING_UPDATE"}, Target: []string{"ACTIVE"}, Refresh: waitForFirewallActive(networkingClient, d.Id()), Timeout: 30 * time.Second, Delay: 0, MinTimeout: 2 * time.Second, } _, err = stateConf.WaitForState() err = firewalls.Update(networkingClient, d.Id(), opts).Err if err != nil { return err } return resourceFWFirewallV1Read(d, meta) }
func TestFirewallCRUD(t *testing.T) { client, err := clients.NewNetworkV2Client() if err != nil { t.Fatalf("Unable to create a network client: %v", err) } rule, err := CreateRule(t, client) if err != nil { t.Fatalf("Unable to create rule: %v", err) } defer DeleteRule(t, client, rule.ID) PrintRule(t, rule) policy, err := CreatePolicy(t, client, rule.ID) if err != nil { t.Fatalf("Unable to create policy: %v", err) } defer DeletePolicy(t, client, policy.ID) PrintPolicy(t, policy) firewall, err := CreateFirewall(t, client, policy.ID) if err != nil { t.Fatalf("Unable to create firewall: %v", err) } defer DeleteFirewall(t, client, firewall.ID) PrintFirewall(t, firewall) updateOpts := firewalls.UpdateOpts{ PolicyID: policy.ID, Description: "Some firewall description", } _, err = firewalls.Update(client, firewall.ID, updateOpts).Extract() if err != nil { t.Fatalf("Unable to update firewall: %v", err) } newFirewall, err := firewalls.Get(client, firewall.ID).Extract() if err != nil { t.Fatalf("Unable to get firewall: %v", err) } PrintFirewall(t, newFirewall) }