forked from IBM-Cloud/terraform-provider-ibm
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
IBM Cloud Object destination resources and data sources and docs upda…
…te (IBM-Cloud#4534) * adding new destination, updating email subscription and integrayion resources for event notification service * Update go.mod updating event notification package * Update go.sum updating event-notifications entry in go.sum * adding resources for servicenow destination and FCM API changes * updating secrets baseline * fixing bo build issue * fixing bo build issue * formatting fix for provider file * updating ibmcloud code engine destination resources * updating continous delievery sdk * ibm cloud cos object destination resources addition and documentation update and correction
- Loading branch information
1 parent
44be56d
commit 1cfd564
Showing
17 changed files
with
978 additions
and
10 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
197 changes: 197 additions & 0 deletions
197
ibm/service/eventnotification/data_source_ibm_en_destination_cos.go
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,197 @@ | ||
// Copyright IBM Corp. 2021 All Rights Reserved. | ||
// Licensed under the Mozilla Public License v2.0 | ||
|
||
package eventnotification | ||
|
||
import ( | ||
"context" | ||
"fmt" | ||
|
||
"github.com/IBM-Cloud/terraform-provider-ibm/ibm/conns" | ||
"github.com/IBM-Cloud/terraform-provider-ibm/ibm/flex" | ||
"github.com/hashicorp/terraform-plugin-sdk/v2/diag" | ||
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" | ||
|
||
en "github.com/IBM/event-notifications-go-admin-sdk/eventnotificationsv1" | ||
) | ||
|
||
func DataSourceIBMEnCOSDestination() *schema.Resource { | ||
return &schema.Resource{ | ||
ReadContext: dataSourceIBMEnCOSDestinationRead, | ||
|
||
Schema: map[string]*schema.Schema{ | ||
"instance_guid": { | ||
Type: schema.TypeString, | ||
Required: true, | ||
Description: "Unique identifier for IBM Cloud Event Notifications instance.", | ||
}, | ||
"destination_id": { | ||
Type: schema.TypeString, | ||
Required: true, | ||
Description: "Unique identifier for Destination.", | ||
}, | ||
"name": { | ||
Type: schema.TypeString, | ||
Computed: true, | ||
Description: "Destination name.", | ||
}, | ||
"description": { | ||
Type: schema.TypeString, | ||
Computed: true, | ||
Description: "Destination description.", | ||
}, | ||
"type": { | ||
Type: schema.TypeString, | ||
Computed: true, | ||
Description: "Destination type ibmcf.", | ||
}, | ||
"config": { | ||
Type: schema.TypeList, | ||
Computed: true, | ||
Description: "Payload describing a destination configuration.", | ||
Elem: &schema.Resource{ | ||
Schema: map[string]*schema.Schema{ | ||
"params": { | ||
Type: schema.TypeList, | ||
Computed: true, | ||
Elem: &schema.Resource{ | ||
Schema: map[string]*schema.Schema{ | ||
"bucket_name": { | ||
Type: schema.TypeString, | ||
Required: true, | ||
Description: "The COS bucket name", | ||
}, | ||
"instance_id": { | ||
Type: schema.TypeString, | ||
Required: true, | ||
Description: "The instance id for COS instance", | ||
}, | ||
"endpoint": { | ||
Type: schema.TypeString, | ||
Required: true, | ||
Description: "The endpoint for the COS bucket endpoint", | ||
}, | ||
}, | ||
}, | ||
}, | ||
}, | ||
}, | ||
}, | ||
"updated_at": { | ||
Type: schema.TypeString, | ||
Computed: true, | ||
Description: "Last updated time.", | ||
}, | ||
"subscription_count": { | ||
Type: schema.TypeInt, | ||
Computed: true, | ||
Description: "Number of subscriptions.", | ||
}, | ||
"subscription_names": { | ||
Type: schema.TypeList, | ||
Computed: true, | ||
Description: "List of subscriptions.", | ||
Elem: &schema.Schema{ | ||
Type: schema.TypeString, | ||
}, | ||
}, | ||
}, | ||
} | ||
} | ||
|
||
func dataSourceIBMEnCOSDestinationRead(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { | ||
enClient, err := meta.(conns.ClientSession).EventNotificationsApiV1() | ||
if err != nil { | ||
return diag.FromErr(err) | ||
} | ||
|
||
options := &en.GetDestinationOptions{} | ||
|
||
options.SetInstanceID(d.Get("instance_guid").(string)) | ||
options.SetID(d.Get("destination_id").(string)) | ||
|
||
result, response, err := enClient.GetDestinationWithContext(context, options) | ||
if err != nil { | ||
return diag.FromErr(fmt.Errorf("GetDestination failed %s\n%s", err, response)) | ||
} | ||
|
||
d.SetId(fmt.Sprintf("%s/%s", *options.InstanceID, *options.ID)) | ||
|
||
if err = d.Set("name", result.Name); err != nil { | ||
return diag.FromErr(fmt.Errorf("[ERROR] Error setting name: %s", err)) | ||
} | ||
|
||
if result.Description != nil { | ||
if err = d.Set("description", result.Description); err != nil { | ||
return diag.FromErr(fmt.Errorf("[ERROR] Error setting description: %s", err)) | ||
} | ||
} | ||
|
||
if err = d.Set("type", result.Type); err != nil { | ||
return diag.FromErr(fmt.Errorf("[ERROR] Error setting type: %s", err)) | ||
} | ||
|
||
if result.Config != nil { | ||
err = d.Set("config", enCOSDestinationFlattenConfig(*result.Config)) | ||
if err != nil { | ||
return diag.FromErr(fmt.Errorf("[ERROR] Error setting config %s", err)) | ||
} | ||
} | ||
|
||
if result.SubscriptionNames != nil { | ||
err = d.Set("subscription_names", result.SubscriptionNames) | ||
if err != nil { | ||
return diag.FromErr(fmt.Errorf("[ERROR] Error setting subscription_names %s", err)) | ||
} | ||
} | ||
|
||
if err = d.Set("updated_at", flex.DateTimeToString(result.UpdatedAt)); err != nil { | ||
return diag.FromErr(fmt.Errorf("[ERROR] Error setting updated_at: %s", err)) | ||
} | ||
|
||
if err = d.Set("subscription_count", flex.IntValue(result.SubscriptionCount)); err != nil { | ||
return diag.FromErr(fmt.Errorf("[ERROR] Error setting subscription_count: %s", err)) | ||
} | ||
|
||
return nil | ||
} | ||
|
||
func enCOSDestinationFlattenConfig(result en.DestinationConfig) (finalList []map[string]interface{}) { | ||
finalList = []map[string]interface{}{} | ||
finalMap := enCOSDestinationConfigToMap(result) | ||
finalList = append(finalList, finalMap) | ||
|
||
return finalList | ||
} | ||
|
||
func enCOSDestinationConfigToMap(configItem en.DestinationConfig) (configMap map[string]interface{}) { | ||
configMap = map[string]interface{}{} | ||
|
||
if configItem.Params != nil { | ||
paramsList := []map[string]interface{}{} | ||
paramsMap := enCOSDestinationConfigParamsToMap(configItem.Params) | ||
paramsList = append(paramsList, paramsMap) | ||
configMap["params"] = paramsList | ||
} | ||
|
||
return configMap | ||
} | ||
|
||
func enCOSDestinationConfigParamsToMap(paramsItem en.DestinationConfigOneOfIntf) (paramsMap map[string]interface{}) { | ||
paramsMap = map[string]interface{}{} | ||
|
||
params := paramsItem.(*en.DestinationConfigOneOf) | ||
|
||
if params.BucketName != nil { | ||
paramsMap["bucket_name"] = params.BucketName | ||
} | ||
|
||
if params.InstanceID != nil { | ||
paramsMap["instance_id"] = params.InstanceID | ||
} | ||
|
||
if params.Endpoint != nil { | ||
paramsMap["endpoint"] = params.Endpoint | ||
} | ||
return paramsMap | ||
} |
69 changes: 69 additions & 0 deletions
69
ibm/service/eventnotification/data_source_ibm_en_destination_cos_test.go
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
// Copyright IBM Corp. 2021 All Rights Reserved. | ||
// Licensed under the Mozilla Public License v2.0 | ||
|
||
package eventnotification_test | ||
|
||
import ( | ||
"fmt" | ||
"testing" | ||
|
||
acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" | ||
|
||
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest" | ||
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" | ||
) | ||
|
||
func TestAccIBMEnCOSDestinationDataSourceBasic(t *testing.T) { | ||
name := fmt.Sprintf("tf_name_%d", acctest.RandIntRange(10, 100)) | ||
instanceName := fmt.Sprintf("tf_name_%d", acctest.RandIntRange(10, 100)) | ||
description := fmt.Sprintf("tf_description_%d", acctest.RandIntRange(10, 100)) | ||
resource.Test(t, resource.TestCase{ | ||
PreCheck: func() { acc.TestAccPreCheck(t) }, | ||
Providers: acc.TestAccProviders, | ||
Steps: []resource.TestStep{ | ||
{ | ||
Config: testAccCheckIBMEnCOSDestinationDataSourceConfigBasic(instanceName, name, description), | ||
Check: resource.ComposeTestCheckFunc( | ||
resource.TestCheckResourceAttrSet("data.ibm_en_destination_cos.en_destination_data_6", "id"), | ||
resource.TestCheckResourceAttrSet("data.ibm_en_destination_cos.en_destination_data_6", "instance_guid"), | ||
resource.TestCheckResourceAttrSet("data.ibm_en_destination_cos.en_destination_data_6", "name"), | ||
resource.TestCheckResourceAttrSet("data.ibm_en_destination_cos.en_destination_data_6", "description"), | ||
resource.TestCheckResourceAttrSet("data.ibm_en_destination_cos.en_destination_data_6", "type"), | ||
resource.TestCheckResourceAttrSet("data.ibm_en_destination_cos.en_destination_data_6", "updated_at"), | ||
resource.TestCheckResourceAttrSet("data.ibm_en_destination_cos.en_destination_data_6", "destination_id"), | ||
resource.TestCheckResourceAttrSet("data.ibm_en_destination_cos.en_destination_data_6", "subscription_count"), | ||
), | ||
}, | ||
}, | ||
}) | ||
} | ||
|
||
func testAccCheckIBMEnCOSDestinationDataSourceConfigBasic(instanceName, name, description string) string { | ||
return fmt.Sprintf(` | ||
resource "ibm_resource_instance" "en_destination_datasource2" { | ||
name = "%s" | ||
location = "us-south" | ||
plan = "standard" | ||
service = "event-notifications" | ||
} | ||
resource "ibm_en_destination_cos" "en_destination_datasource_4" { | ||
instance_guid = ibm_resource_instance.en_destination_resource.guid | ||
name = "%s" | ||
type = "ibmcos" | ||
description = "%s" | ||
config { | ||
params { | ||
bucket_name = "cos-destination-en-bucket" | ||
instance_id = "42e13636e-0548-41a0-a178-e95be28464773" | ||
endpoint = "https://s3.us-west.cloud-object-storage.test.appdomain.cloud" | ||
} | ||
} | ||
} | ||
data "ibm_en_destination_cos" "en_destination_data_6" { | ||
instance_guid = ibm_resource_instance.en_destination_datasource2.guid | ||
destination_id = ibm_en_destination_cos.en_destination_datasource_4.destination_id | ||
} | ||
`, instanceName, name, description) | ||
} |
Oops, something went wrong.