Skip to content

Commit f91f0d0

Browse files
committed
add api dest
1 parent 2669264 commit f91f0d0

File tree

3 files changed

+82
-31
lines changed

3 files changed

+82
-31
lines changed

sysdig/data_source_sysdig_secure_onboarding.go

Lines changed: 66 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -375,45 +375,84 @@ func dataSourceSysdigSecureCloudIngestionAssets() *schema.Resource {
375375

376376
// Retrieves the information of a resource form the file and loads it in Terraform
377377
func dataSourceSysdigSecureCloudIngestionAssetsRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
378+
var assets map[string]any
379+
var err error
380+
378381
client, err := getSecureOnboardingClient(meta.(SysdigClients))
379382
if err != nil {
380383
return diag.FromErr(err)
381384
}
382385

383-
assets, err := client.GetCloudIngestionAssetsSecure(ctx, d.Get("cloud_provider").(string), d.Get("cloud_provider_id").(string))
384-
if err != nil {
385-
return diag.FromErr(err)
386+
cloudProvider, ok := d.GetOk("cloud_provider")
387+
if !ok {
388+
// GCP case
389+
assets, err = client.GetCloudIngestionAssetsSecure(ctx, "", "", "")
390+
if err != nil {
391+
return diag.FromErr(err)
392+
}
393+
assetsGcp, _ := assets["gcp"].(map[string]interface{})
394+
err = d.Set("gcp_routing_key", assetsGcp["routingKey"])
395+
if err != nil {
396+
return diag.FromErr(err)
397+
}
398+
399+
err = d.Set("gcp_metadata", assetsGcp["metadata"])
400+
if err != nil {
401+
return diag.FromErr(err)
402+
}
403+
return nil
386404
}
387405

388-
assetsAws, _ := assets["aws"].(map[string]interface{})
389-
assetsGcp, _ := assets["gcp"].(map[string]interface{})
406+
componentType, ok := d.GetOk("component_type")
407+
if !ok {
408+
// AWS SNS case
409+
assets, err = client.GetCloudIngestionAssetsSecure(ctx, cloudProvider.(string), d.Get("cloud_provider_id").(string), "")
410+
if err != nil {
411+
return diag.FromErr(err)
412+
}
413+
assetsAws, _ := assets["aws"].(map[string]interface{})
390414

391-
var ingestionURL string
392-
if assetsAws["snsMetadata"] != nil {
393-
ingestionURL = assetsAws["snsMetadata"].(map[string]interface{})["ingestionURL"].(string)
394-
}
415+
var ingestionURL string
416+
if assetsAws["snsMetadata"] != nil {
417+
ingestionURL = assetsAws["snsMetadata"].(map[string]interface{})["ingestionURL"].(string)
418+
}
395419

396-
d.SetId("cloudIngestionAssets")
397-
err = d.Set("aws", map[string]interface{}{
398-
"eventBusARN": assetsAws["eventBusARN"],
399-
"eventBusARNGov": assetsAws["eventBusARNGov"],
400-
"sns_routing_key": assetsAws["snsRoutingKey"],
401-
"sns_routing_url": ingestionURL,
402-
})
403-
if err != nil {
404-
return diag.FromErr(err)
405-
}
420+
d.SetId("cloudIngestionAssets")
421+
err = d.Set("aws", map[string]interface{}{
422+
"eventBusARN": assetsAws["eventBusARN"],
423+
"eventBusARNGov": assetsAws["eventBusARNGov"],
424+
"sns_routing_key": assetsAws["snsRoutingKey"],
425+
"sns_routing_url": ingestionURL,
426+
})
427+
if err != nil {
428+
return diag.FromErr(err)
429+
}
430+
} else {
431+
// AWS Api Destination case
432+
assets, err = client.GetCloudIngestionAssetsSecure(ctx, d.Get("cloud_provider").(string), d.Get("cloud_provider_id").(string), componentType.(string))
433+
if err != nil {
434+
return diag.FromErr(err)
435+
}
406436

407-
err = d.Set("gcp_routing_key", assetsGcp["routingKey"])
408-
if err != nil {
409-
return diag.FromErr(err)
410-
}
437+
assetsAws, _ := assets["aws"].(map[string]interface{})
411438

412-
err = d.Set("gcp_metadata", assetsGcp["metadata"])
413-
if err != nil {
414-
return diag.FromErr(err)
415-
}
439+
var ingestionURL string
440+
if assetsAws["apiDestMetadata"] != nil {
441+
ingestionURL = assetsAws["apiDestMetadata"].(map[string]interface{})["ingestionURL"].(string)
442+
}
416443

444+
d.SetId("cloudIngestionAssets")
445+
err = d.Set("aws", map[string]interface{}{
446+
"eventBusARN": assetsAws["eventBusARN"],
447+
"eventBusARNGov": assetsAws["eventBusARNGov"],
448+
"api_dest_routing_key": assetsAws["apiDestRoutingKey"],
449+
"api_dest_routing_url": ingestionURL,
450+
"api_dest_token": assetsAws["apiDestToken"],
451+
})
452+
if err != nil {
453+
return diag.FromErr(err)
454+
}
455+
}
417456
return nil
418457
}
419458

sysdig/data_source_sysdig_secure_onboarding_test.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,18 @@ func TestAccCloudIngestionAssetsDataSource(t *testing.T) {
205205
resource.TestCheckResourceAttrSet("data.sysdig_secure_cloud_ingestion_assets.assets", "aws.sns_routing_url"),
206206
),
207207
},
208+
{
209+
Config: `data "sysdig_secure_cloud_ingestion_assets" "assets" {
210+
cloud_provider = "aws"
211+
cloud_provider_id = "012345678901"
212+
component_type = "COMPONENT_WEBHOOK_DATASOURCE"
213+
}`,
214+
Check: resource.ComposeTestCheckFunc(
215+
resource.TestCheckResourceAttrSet("data.sysdig_secure_cloud_ingestion_assets.assets", "aws.api_dest_routing_key"),
216+
resource.TestCheckResourceAttrSet("data.sysdig_secure_cloud_ingestion_assets.assets", "aws.api_dest_routing_url"),
217+
resource.TestCheckResourceAttrSet("data.sysdig_secure_cloud_ingestion_assets.assets", "aws.api_dest_token"),
218+
),
219+
},
208220
},
209221
})
210222
}

sysdig/internal/client/v2/onboarding.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ const (
1111
onboardingTrustedAzureAppPath = "%s/api/secure/onboarding/v2/trustedAzureApp?app=%s"
1212
onboardingTenantExternaIDPath = "%s/api/secure/onboarding/v2/externalID"
1313
onboardingAgentlessScanningAssetsPath = "%s/api/secure/onboarding/v2/agentlessScanningAssets"
14-
onboardingCloudIngestionAssetsPath = "%s/api/secure/onboarding/v2/cloudIngestionAssets?provider=%s&providerID=%s"
14+
onboardingCloudIngestionAssetsPath = "%s/api/secure/onboarding/v2/cloudIngestionAssets?provider=%s&providerID=%s&componentType=%s"
1515
onboardingTrustedRegulationAssetsPath = "%s/api/secure/onboarding/v2/trustedRegulationAssets?provider=%s"
1616
onboardingTrustedOracleAppPath = "%s/api/secure/onboarding/v2/trustedOracleApp?app=%s"
1717
)
@@ -22,7 +22,7 @@ type OnboardingSecureInterface interface {
2222
GetTrustedAzureAppSecure(ctx context.Context, app string) (map[string]string, error)
2323
GetTenantExternalIDSecure(ctx context.Context) (string, error)
2424
GetAgentlessScanningAssetsSecure(ctx context.Context) (map[string]any, error)
25-
GetCloudIngestionAssetsSecure(ctx context.Context, provider, providerID string) (map[string]any, error)
25+
GetCloudIngestionAssetsSecure(ctx context.Context, provider, providerID, componentType string) (map[string]any, error)
2626
GetTrustedCloudRegulationAssetsSecure(ctx context.Context, provider string) (map[string]string, error)
2727
GetTrustedOracleAppSecure(ctx context.Context, app string) (map[string]string, error)
2828
}
@@ -83,8 +83,8 @@ func (client *Client) GetAgentlessScanningAssetsSecure(ctx context.Context) (map
8383
return Unmarshal[map[string]interface{}](response.Body)
8484
}
8585

86-
func (client *Client) GetCloudIngestionAssetsSecure(ctx context.Context, provider, providerID string) (map[string]interface{}, error) {
87-
response, err := client.requester.Request(ctx, http.MethodGet, fmt.Sprintf(onboardingCloudIngestionAssetsPath, client.config.url, provider, providerID), nil)
86+
func (client *Client) GetCloudIngestionAssetsSecure(ctx context.Context, provider, providerID, componentType string) (map[string]interface{}, error) {
87+
response, err := client.requester.Request(ctx, http.MethodGet, fmt.Sprintf(onboardingCloudIngestionAssetsPath, client.config.url, provider, providerID, componentType), nil)
8888
if err != nil {
8989
return nil, err
9090
}

0 commit comments

Comments
 (0)