@@ -354,6 +354,11 @@ func dataSourceSysdigSecureCloudIngestionAssets() *schema.Resource {
354
354
Type : schema .TypeString ,
355
355
Optional : true ,
356
356
},
357
+ "component_type" : {
358
+ Type : schema .TypeString ,
359
+ Optional : true ,
360
+ ValidateFunc : validation .StringInSlice ([]string {"COMPONENT_WEBHOOK_DATASOURCE" }, false ),
361
+ },
357
362
"aws" : {
358
363
Type : schema .TypeMap ,
359
364
Computed : true ,
@@ -380,38 +385,78 @@ func dataSourceSysdigSecureCloudIngestionAssetsRead(ctx context.Context, d *sche
380
385
return diag .FromErr (err )
381
386
}
382
387
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 )
388
+ cloudProvider := ""
389
+ if v , ok := d . GetOk ( "cloud_provider" ); ok {
390
+ cloudProvider = v .( string )
386
391
}
387
392
388
- assetsAws , _ := assets ["aws" ].(map [string ]interface {})
389
- assetsGcp , _ := assets ["gcp" ].(map [string ]interface {})
393
+ cloudProviderID := ""
394
+ if v , ok := d .GetOk ("cloud_provider_id" ); ok {
395
+ cloudProviderID = v .(string )
396
+ }
390
397
391
- var ingestionURL string
392
- if assetsAws [ "snsMetadata" ] != nil {
393
- ingestionURL = assetsAws [ "snsMetadata" ].( map [ string ] interface {})[ "ingestionURL" ] .(string )
398
+ componentType := ""
399
+ if v , ok := d . GetOk ( "component_type" ); ok {
400
+ componentType = v .(string )
394
401
}
395
402
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
+ assets , err := client .GetCloudIngestionAssetsSecure (ctx , cloudProvider , cloudProviderID , componentType )
403
404
if err != nil {
404
405
return diag .FromErr (err )
405
406
}
406
407
407
- err = d .Set ("gcp_routing_key" , assetsGcp ["routingKey" ])
408
- if err != nil {
409
- return diag .FromErr (err )
408
+ d .SetId ("cloudIngestionAssets" )
409
+
410
+ // Set GCP data if available
411
+ if gcpAssets , ok := assets ["gcp" ].(map [string ]interface {}); ok {
412
+ if routingKey , exists := gcpAssets ["routingKey" ]; exists {
413
+ if err := d .Set ("gcp_routing_key" , routingKey ); err != nil {
414
+ return diag .FromErr (err )
415
+ }
416
+ }
417
+
418
+ if metadata , exists := gcpAssets ["metadata" ]; exists {
419
+ if err := d .Set ("gcp_metadata" , metadata ); err != nil {
420
+ return diag .FromErr (err )
421
+ }
422
+ }
410
423
}
411
424
412
- err = d .Set ("gcp_metadata" , assetsGcp ["metadata" ])
413
- if err != nil {
414
- return diag .FromErr (err )
425
+ // Set AWS data if available
426
+ if awsAssets , ok := assets ["aws" ].(map [string ]interface {}); ok {
427
+ awsData := map [string ]interface {}{
428
+ "eventBusARN" : awsAssets ["eventBusARN" ],
429
+ "eventBusARNGov" : awsAssets ["eventBusARNGov" ],
430
+ }
431
+
432
+ // Add SNS specific fields if available
433
+ if awsAssets ["snsRoutingKey" ] != nil {
434
+ awsData ["sns_routing_key" ] = awsAssets ["snsRoutingKey" ]
435
+ }
436
+
437
+ if snsMetadata , ok := awsAssets ["snsMetadata" ].(map [string ]interface {}); ok && snsMetadata != nil {
438
+ if ingestionURL , exists := snsMetadata ["ingestionURL" ]; exists {
439
+ awsData ["sns_routing_url" ] = ingestionURL
440
+ }
441
+ }
442
+
443
+ // Add EventBridge specific fields if available
444
+ if awsAssets ["ebRoutingKey" ] != nil {
445
+ awsData ["eb_routing_key" ] = awsAssets ["ebRoutingKey" ]
446
+ }
447
+
448
+ if ebMetadata , ok := awsAssets ["ebMetadata" ].(map [string ]interface {}); ok && ebMetadata != nil {
449
+ if ingestionURL , exists := ebMetadata ["ingestionURL" ]; exists {
450
+ awsData ["eb_routing_url" ] = ingestionURL
451
+ }
452
+ if apiKey , exists := ebMetadata ["apiKey" ]; exists {
453
+ awsData ["eb_api_key" ] = apiKey
454
+ }
455
+ }
456
+
457
+ if err := d .Set ("aws" , awsData ); err != nil {
458
+ return diag .FromErr (err )
459
+ }
415
460
}
416
461
417
462
return nil
0 commit comments