diff --git a/builtin/providers/clc/resource_clc_load_balancer.go b/builtin/providers/clc/resource_clc_load_balancer.go index 67773a936..0f0017506 100644 --- a/builtin/providers/clc/resource_clc_load_balancer.go +++ b/builtin/providers/clc/resource_clc_load_balancer.go @@ -109,6 +109,7 @@ func resourceCLCLoadBalancerUpdate(d *schema.ResourceData, meta interface{}) err update.Status = d.Get("status").(string) } if update.Name != "" || update.Description != "" || update.Status != "" { + update.Name = d.Get("name").(string) // required on every PUT err := client.LB.Update(dc, id, update) if err != nil { return fmt.Errorf("Failed updating load balancer under %v/%v: %v", dc, id, err) diff --git a/builtin/providers/clc/resource_clc_load_balancer_pool_test.go b/builtin/providers/clc/resource_clc_load_balancer_pool_test.go index 4b104efc8..e231e1f93 100644 --- a/builtin/providers/clc/resource_clc_load_balancer_pool_test.go +++ b/builtin/providers/clc/resource_clc_load_balancer_pool_test.go @@ -29,6 +29,15 @@ func TestAccLBPoolBasic(t *testing.T) { resource.TestCheckResourceAttr("clc_load_balancer_pool.acc_test_pool", "port", "80"), ), }, + resource.TestStep{ + Config: testAccCheckLBPConfigUpdates, + Check: resource.ComposeTestCheckFunc( + testAccCheckLBPExists("clc_load_balancer_pool.acc_test_pool", &pool), + resource.TestCheckResourceAttr("clc_load_balancer.acc_test_lbp", "description", "description modified"), + resource.TestCheckResourceAttr("clc_load_balancer.acc_test_lbp", "status", "disabled"), + resource.TestCheckResourceAttr("clc_load_balancer_pool.acc_test_pool", "nodes.0.privatePort", "8080"), + ), + }, }, }) } @@ -85,7 +94,7 @@ resource "clc_group" "acc_test_lbp_group" { # need a server here because we need to reference an ip owned by this account resource "clc_server" "acc_test_lbp_server" { name_template = "node" - description = "load balanced in ${clc_load_balancer.acc_test_lbp.id}" + description = "load balanced" source_server_id = "UBUNTU-14-64-TEMPLATE" type = "standard" group_id = "${clc_group.acc_test_lbp_group.id}" @@ -101,6 +110,7 @@ resource "clc_load_balancer" "acc_test_lbp" { name = "acc_test_lb" description = "load balancer test" status = "enabled" + depends_on = ["clc_server.acc_test_lbp_server"] } resource "clc_load_balancer_pool" "acc_test_pool" { @@ -113,5 +123,51 @@ resource "clc_load_balancer_pool" "acc_test_pool" { ipAddress = "${clc_server.acc_test_lbp_server.private_ip_address}" privatePort = 80 } + depends_on = ["clc_server.acc_test_lbp_server"] +} +` + +const testAccCheckLBPConfigUpdates = ` +variable "dc" { default = "IL1" } + +resource "clc_group" "acc_test_lbp_group" { + location_id = "${var.dc}" + name = "acc_test_lbp_group" + parent = "Default Group" +} + +# need a server here because we need to reference an ip owned by this account +resource "clc_server" "acc_test_lbp_server" { + name_template = "node" + description = "load balanced" + source_server_id = "UBUNTU-14-64-TEMPLATE" + type = "standard" + group_id = "${clc_group.acc_test_lbp_group.id}" + cpu = 1 + memory_mb = 1024 + password = "Green123$" + power_state = "started" + +} + +resource "clc_load_balancer" "acc_test_lbp" { + data_center = "${var.dc}" + name = "acc_test_lb" + description = "description modified" + status = "disabled" + depends_on = ["clc_server.acc_test_lbp_server"] +} + +resource "clc_load_balancer_pool" "acc_test_pool" { + port = 80 + data_center = "${var.dc}" + load_balancer = "${clc_load_balancer.acc_test_lbp.id}" + nodes + { + status = "enabled" + ipAddress = "${clc_server.acc_test_lbp_server.private_ip_address}" + privatePort = 8080 + } + depends_on = ["clc_server.acc_test_lbp_server"] } ` diff --git a/builtin/providers/clc/resource_clc_load_balancer_test.go b/builtin/providers/clc/resource_clc_load_balancer_test.go index 8e8a68ed3..9bfc9d335 100644 --- a/builtin/providers/clc/resource_clc_load_balancer_test.go +++ b/builtin/providers/clc/resource_clc_load_balancer_test.go @@ -1,101 +1,3 @@ package clc -import ( - "fmt" - "testing" - - clc "github.com/CenturyLinkCloud/clc-sdk" - lb "github.com/CenturyLinkCloud/clc-sdk/lb" - "github.com/hashicorp/terraform/helper/resource" - "github.com/hashicorp/terraform/terraform" -) - -// things to test: -// updates name/desc -// toggles status -// created w/o pool - -func TestAccLoadBalancerBasic(t *testing.T) { - var resp lb.LoadBalancer - resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, - CheckDestroy: testAccCheckLBDestroy, - Steps: []resource.TestStep{ - resource.TestStep{ - Config: testAccCheckLBConfigBasic, - Check: resource.ComposeTestCheckFunc( - testAccCheckLBExists("clc_load_balancer.acc_test_lb", &resp), - resource.TestCheckResourceAttr("clc_load_balancer.acc_test_lb", "name", "acc_test_lb"), - resource.TestCheckResourceAttr("clc_load_balancer.acc_test_lb", "data_center", testAccDC), - resource.TestCheckResourceAttr("clc_load_balancer.acc_test_lb", "status", "enabled"), - ), - }, - // update simple attrs - resource.TestStep{ - Config: testAccCheckLBConfigNameDesc, - Check: resource.ComposeTestCheckFunc( - testAccCheckLBExists("clc_load_balancer.acc_test_lb", &resp), - resource.TestCheckResourceAttr("clc_load_balancer.acc_test_lb", "name", "foobar"), - resource.TestCheckResourceAttr("clc_load_balancer.acc_test_lb", "description", "foobar"), - resource.TestCheckResourceAttr("clc_load_balancer.acc_test_lb", "status", "disabled"), - ), - }, - }, - }) -} - -func testAccCheckLBDestroy(s *terraform.State) error { - client := testAccProvider.Meta().(*clc.Client) - for _, rs := range s.RootModule().Resources { - if rs.Type != "clc_load_balancer" { - continue - } - if _, err := client.LB.Get(testAccDC, rs.Primary.ID); err == nil { - return fmt.Errorf("LB still exists") - } - } - return nil -} - -func testAccCheckLBExists(n string, resp *lb.LoadBalancer) resource.TestCheckFunc { - return func(s *terraform.State) error { - rs, ok := s.RootModule().Resources[n] - if !ok { - return fmt.Errorf("Not found: %s", n) - } - if rs.Primary.ID == "" { - return fmt.Errorf("No ID is set") - } - client := testAccProvider.Meta().(*clc.Client) - l, err := client.LB.Get(testAccDC, rs.Primary.ID) - if err != nil { - return err - } - if l.ID != rs.Primary.ID { - return fmt.Errorf("LB not found") - } - *resp = *l - return nil - } -} - -const testAccCheckLBConfigBasic = ` -variable "dc" { default = "IL1" } - -resource "clc_load_balancer" "acc_test_lb" { - data_center = "${var.dc}" - name = "acc_test_lb" - description = "load balancer test" - status = "enabled" -}` - -const testAccCheckLBConfigNameDesc = ` -variable "dc" { default = "IL1" } - -resource "clc_load_balancer" "acc_test_lb" { - data_center = "${var.dc}" - name = "foobar" - description = "foobar" - status = "disabled" -}` +// clc_load_balancer covered by clc_load_balancer_pool tests: resource_clc_load_balancer_pool_test.go