From 4afc5cdba359cb2128d1181e3a662879cb244426 Mon Sep 17 00:00:00 2001
From: kayrus <kay.diam@gmail.com>
Date: Tue, 22 Oct 2024 14:55:34 +0200
Subject: [PATCH] [andromeda] allow pool_id to be optional in gslb member

---
 ccloud/resource_ccloud_gslb_member_v1.go    | 13 +++++++++----
 website/docs/r/gslb_member_v1.html.markdown |  2 +-
 2 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/ccloud/resource_ccloud_gslb_member_v1.go b/ccloud/resource_ccloud_gslb_member_v1.go
index 8023e762..0e730b96 100644
--- a/ccloud/resource_ccloud_gslb_member_v1.go
+++ b/ccloud/resource_ccloud_gslb_member_v1.go
@@ -50,7 +50,7 @@ func resourceCCloudGSLBMemberV1() *schema.Resource {
 			},
 			"pool_id": {
 				Type:     schema.TypeString,
-				Required: true,
+				Optional: true,
 			},
 			"port": {
 				Type:     schema.TypeInt,
@@ -96,12 +96,10 @@ func resourceCCloudGSLBMemberV1Create(ctx context.Context, d *schema.ResourceDat
 	adminStateUp := d.Get("admin_state_up").(bool)
 	address := strfmt.IPv4(d.Get("address").(string))
 	port := int64(d.Get("port").(int))
-	poolID := strfmt.UUID(d.Get("pool_id").(string))
 	member := &models.Member{
 		Address:      &address,
 		AdminStateUp: &adminStateUp,
 		Port:         &port,
-		PoolID:       &poolID,
 	}
 	if v, ok := d.GetOk("datacenter_id"); ok && v != "" {
 		v := strfmt.UUID(v.(string))
@@ -113,6 +111,10 @@ func resourceCCloudGSLBMemberV1Create(ctx context.Context, d *schema.ResourceDat
 	if v, ok := d.GetOk("project_id"); ok && v != "" {
 		member.ProjectID = ptr(v.(string))
 	}
+	if v, ok := d.GetOk("pool_id"); ok && v != "" {
+		v := strfmt.UUID(v.(string))
+		member.PoolID = &v
+	}
 
 	opts := &members.PostMembersParams{
 		Member: members.PostMembersBody{
@@ -181,7 +183,6 @@ func resourceCCloudGSLBMemberV1Update(ctx context.Context, d *schema.ResourceDat
 	id := d.Id()
 	member := &models.Member{
 		Address:      ptr(strfmt.IPv4(d.Get("address").(string))),
-		PoolID:       ptr(strfmt.UUID(d.Get("pool_id").(string))),
 		DatacenterID: ptr(strfmt.UUID(d.Get("datacenter_id").(string))),
 		Port:         ptr(int64(d.Get("port").(int))),
 	}
@@ -198,6 +199,10 @@ func resourceCCloudGSLBMemberV1Update(ctx context.Context, d *schema.ResourceDat
 		v := d.Get("project_id").(string)
 		member.ProjectID = &v
 	}
+	if d.HasChange("pool_id") {
+		v := strfmt.UUID(d.Get("pool_id").(string))
+		member.PoolID = &v
+	}
 
 	opts := &members.PutMembersMemberIDParams{
 		Member: members.PutMembersMemberIDBody{
diff --git a/website/docs/r/gslb_member_v1.html.markdown b/website/docs/r/gslb_member_v1.html.markdown
index a52954b6..8bff152a 100644
--- a/website/docs/r/gslb_member_v1.html.markdown
+++ b/website/docs/r/gslb_member_v1.html.markdown
@@ -42,7 +42,7 @@ The following arguments are supported:
 
 * `name` - (Optional) The name of the GSLB member.
 
-* `pool_id` - (Required) The UUID of the GSLB pool to which the member belongs.
+* `pool_id` - (Optional) The UUID of the GSLB pool to which the member belongs.
 
 * `port` - (Required) The port on which the member is accepting traffic.