@@ -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