Skip to content

Commit 4bd74fa

Browse files
authored
Merge pull request #231 from NetApp/integration/main
Sync bitbucket and GitHub
2 parents faf3acf + d4c1ea6 commit 4bd74fa

4 files changed

Lines changed: 25 additions & 23 deletions

File tree

CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
NEW FEATURES:
33
* resource/cvo_azure: Supports configuration of `storage_account_network_access` while creating Azure SN and HA CVO.
44
* resource/aggregate: now supports import.
5-
* resource/cvo_gcp: Supports configuration of `rootVolumeAggregate` during SVM creation in existing GCP HA CVO
5+
* resource/cvo_gcp: Supports multi-SVM creation for GCP SN CVO and also supports configuration of `rootVolumeAggregate` during SVM creation in existing GCP HA and SN CVO.
66
* resource/cvo_azure: Supports multi-SVM creation for new and existing Azure SN and HA CVOs.
77

88
BREAKING CHANGE: (Please refer to guide website/docs/guides/27.0.0_upgrade_guide.md for guidance on upgrading to 27.0.0 version)

cloudmanager/cvo_gcp.go

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -219,9 +219,9 @@ func (c *Client) deleteCVOGCP(id string, isHA bool, clientID string, isSaas bool
219219
return err
220220
}
221221

222-
// This is used on GCP CVO HA only
223-
func (c *Client) addSVMtoCVO(id string, clientID string, svmName string, isSaas bool, connectorIP string, rootVolumeAggregate string) error {
224-
log.Printf("addSVMtoCVO: id %s client %s svm %s rootVolumeAggregate %s", id, clientID, svmName, rootVolumeAggregate)
222+
// Add SVM to GCP CVO (supports both single-node and HA)
223+
func (c *Client) addSVMtoCVO(id string, clientID string, svmName string, isHA bool, isSaas bool, connectorIP string, rootVolumeAggregate string) error {
224+
log.Printf("addSVMtoCVO: id %s client %s svm %s isHA %v rootVolumeAggregate %s", id, clientID, svmName, isHA, rootVolumeAggregate)
225225

226226
accessTokenResult, err := c.getAccessToken()
227227
if err != nil {
@@ -230,8 +230,8 @@ func (c *Client) addSVMtoCVO(id string, clientID string, svmName string, isSaas
230230
}
231231
c.Token = accessTokenResult.Token
232232

233-
// GCP CVO SVM add and deletion only support HA
234-
baseURL := getAPIRootForWorkingEnvironment(true, id) + "/svm"
233+
// Base URL depends on deployment mode (single-node or HA)
234+
baseURL := getAPIRootForWorkingEnvironment(isHA, id) + "/svm"
235235
hostType := "CloudManagerHost"
236236
if !isSaas {
237237
hostType = "http://" + connectorIP
@@ -264,8 +264,9 @@ func (c *Client) addSVMtoCVO(id string, clientID string, svmName string, isSaas
264264
return err
265265
}
266266

267-
func (c *Client) deleteSVMfromCVO(id string, clientID string, svmName string, isSaas bool, connectorIP string) error {
268-
log.Printf("deleteSVMfromCVO: id %s client %s svm %s", id, clientID, svmName)
267+
// Delete SVM from GCP CVO (supports both single-node and HA)
268+
func (c *Client) deleteSVMfromCVO(id string, clientID string, svmName string, isHA bool, isSaas bool, connectorIP string) error {
269+
log.Printf("deleteSVMfromCVO: id %s client %s svm %s isHA %v", id, clientID, svmName, isHA)
269270

270271
accessTokenResult, err := c.getAccessToken()
271272
if err != nil {
@@ -274,8 +275,8 @@ func (c *Client) deleteSVMfromCVO(id string, clientID string, svmName string, is
274275
}
275276
c.Token = accessTokenResult.Token
276277

277-
// GCP CVO SVM add and deletion only support HA
278-
baseURL := getAPIRootForWorkingEnvironment(true, id)
278+
// Base URL depends on deployment mode (single-node or HA)
279+
baseURL := getAPIRootForWorkingEnvironment(isHA, id)
279280
baseURL = fmt.Sprintf("%s/svm/%s", baseURL, svmName)
280281
log.Print("\tDelete svm url: ", baseURL)
281282

cloudmanager/helper.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1280,8 +1280,8 @@ func updateCVOSVMPassword(d *schema.ResourceData, meta interface{}, clientID str
12801280
return nil
12811281
}
12821282

1283-
// update SVMs on GCP CVO HA
1284-
func (c *Client) updateCVOSVMs(d *schema.ResourceData, clientID string, isSaas bool, connectorIP string) error {
1283+
// update SVMs on GCP CVO (supports single-node and HA)
1284+
func (c *Client) updateCVOSVMs(d *schema.ResourceData, clientID string, isHA bool, isSaas bool, connectorIP string) error {
12851285
id := d.Id()
12861286
currentSVMs, expectSVMs := d.GetChange("svm")
12871287
cSVMs := expandGCPSVMs(currentSVMs.(*schema.Set))
@@ -1322,7 +1322,7 @@ func (c *Client) updateCVOSVMs(d *schema.ResourceData, clientID string, isSaas b
13221322
j++
13231323
} else {
13241324
// add SVM
1325-
respErr := c.addSVMtoCVO(id, clientID, svmName, isSaas, connectorIP, rootVolAggregate)
1325+
respErr := c.addSVMtoCVO(id, clientID, svmName, isHA, isSaas, connectorIP, rootVolAggregate)
13261326
if respErr != nil {
13271327
log.Printf("Error adding SVM %v: %v", svmName, respErr)
13281328
return respErr
@@ -1332,7 +1332,7 @@ func (c *Client) updateCVOSVMs(d *schema.ResourceData, clientID string, isSaas b
13321332
if len(currentList) > 0 {
13331333
for _, svmName := range currentList {
13341334
// delete SVM
1335-
respErr := c.deleteSVMfromCVO(id, clientID, svmName, isSaas, connectorIP)
1335+
respErr := c.deleteSVMfromCVO(id, clientID, svmName, isHA, isSaas, connectorIP)
13361336
if respErr != nil {
13371337
log.Printf("Error deleting SVM %v: %v", svmName, respErr)
13381338
return respErr

cloudmanager/resource_netapp_cloudmanager_cvo_gcp.go

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -654,10 +654,11 @@ func resourceCVOGCPCreate(d *schema.ResourceData, meta interface{}) error {
654654
if c, ok := d.GetOk("vpc3_firewall_rule_tag_name"); ok {
655655
cvoDetails.HAParams.VPC3FirewallRuleTagName = c.(string)
656656
}
657-
if c, ok := d.GetOk("svm"); ok {
658-
svms := c.(*schema.Set)
659-
svmList = expandGCPSVMs(svms)
660-
}
657+
}
658+
// Collect additional SVMs if provided (applies to both single-node and HA)
659+
if c, ok := d.GetOk("svm"); ok {
660+
svms := c.(*schema.Set)
661+
svmList = expandGCPSVMs(svms)
661662
}
662663

663664
err = validateCVOGCPParams(cvoDetails)
@@ -677,9 +678,9 @@ func resourceCVOGCPCreate(d *schema.ResourceData, meta interface{}) error {
677678
d.Set("writing_speed_state", res.OntapClusterProperties.WritingSpeedState)
678679
log.Printf("Created cvo: %v", res)
679680

680-
// Add SVMs on GCP CVO HA
681+
// Add SVMs (supports single-node and HA)
681682
for _, svm := range svmList {
682-
err := client.addSVMtoCVO(res.PublicID, clientID, svm.SvmName, isSaas, connectorIP, "")
683+
err := client.addSVMtoCVO(res.PublicID, clientID, svm.SvmName, cvoDetails.IsHA, isSaas, connectorIP, "")
683684
if err != nil {
684685
log.Printf("Error adding SVM %v: %v", svm.SvmName, err)
685686
return err
@@ -768,9 +769,9 @@ func resourceCVOGCPUpdate(d *schema.ResourceData, meta interface{}) error {
768769
}
769770
}
770771

771-
// check if svm list changes
772-
if d.Get("is_ha").(bool) && d.HasChange("svm") {
773-
respErr := client.updateCVOSVMs(d, clientID, isSaas, connectorIP)
772+
// check if svm list changes (supports single-node and HA)
773+
if d.HasChange("svm") {
774+
respErr := client.updateCVOSVMs(d, clientID, d.Get("is_ha").(bool), isSaas, connectorIP)
774775
if respErr != nil {
775776
return respErr
776777
}

0 commit comments

Comments
 (0)