@@ -354,6 +354,11 @@ func dataSourceSysdigSecureCloudIngestionAssets() *schema.Resource {
354354 Type : schema .TypeString ,
355355 Optional : true ,
356356 },
357+ "component_type" : {
358+ Type : schema .TypeString ,
359+ Optional : true ,
360+ ValidateFunc : validation .StringInSlice ([]string {"COMPONENT_WEBHOOK_DATASOURCE" }, false ),
361+ },
357362 "aws" : {
358363 Type : schema .TypeMap ,
359364 Computed : true ,
@@ -380,38 +385,78 @@ func dataSourceSysdigSecureCloudIngestionAssetsRead(ctx context.Context, d *sche
380385 return diag .FromErr (err )
381386 }
382387
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 )
386391 }
387392
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+ }
390397
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 )
394401 }
395402
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 )
403404 if err != nil {
404405 return diag .FromErr (err )
405406 }
406407
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+ }
410423 }
411424
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+ }
415460 }
416461
417462 return nil
0 commit comments