@@ -47,6 +47,7 @@ const (
4747 DiscoveryGkeClusters = "gke-clusters"
4848 DiscoveryComputeInstances = "instances"
4949 DiscoveryStorageBuckets = "storage-buckets"
50+ DiscoverSecretManager = "secretmanager-secrets"
5051)
5152
5253var All = []string {
@@ -78,6 +79,7 @@ var Auto = []string{
7879 DiscoverMemorystoreRedis ,
7980 DiscoverMemorystoreRedisCluster ,
8081 DiscoveryComputeInstances ,
82+ DiscoverSecretManager ,
8183}
8284
8385var AllAPIResources = []string {
@@ -96,6 +98,7 @@ var AllAPIResources = []string{
9698 DiscoverMemorystoreRedis ,
9799 DiscoverMemorystoreRedisCluster ,
98100 DiscoveryComputeInstances ,
101+ DiscoverSecretManager ,
99102}
100103
101104// List of all CloudSQL types, this will be used during discovery
@@ -813,6 +816,35 @@ func discoverProject(conn *connection.GcpConnection, gcpProject *mqlGcpProject,
813816 })
814817 }
815818 }
819+ if stringx .ContainsAnyOf (discoveryTargets , DiscoverSecretManager ) {
820+ secretmanagerService := gcpProject .GetSecretmanager ()
821+ if secretmanagerService .Error != nil {
822+ return nil , secretmanagerService .Error
823+ }
824+ secrets := secretmanagerService .Data .GetSecrets ()
825+ if secrets .Error != nil {
826+ return nil , secrets .Error
827+ }
828+ for i := range secrets .Data {
829+ secret := secrets .Data [i ].(* mqlGcpProjectSecretmanagerServiceSecret )
830+ assetList = append (assetList , & inventory.Asset {
831+ PlatformIds : []string {
832+ connection .NewResourcePlatformID ("secretmanager" , gcpProject .Id .Data , "global" , "secret" , secret .Name .Data ),
833+ },
834+ Name : secret .Name .Data ,
835+ Platform : & inventory.Platform {
836+ Name : "gcp-secretmanager-secret" ,
837+ Title : connection .GetTitleForPlatformName ("gcp-secretmanager-secret" ),
838+ Runtime : "gcp" ,
839+ Kind : "gcp-object" ,
840+ Family : []string {"google" },
841+ TechnologyUrlSegments : connection .ResourceTechnologyUrl ("secretmanager" , gcpProject .Id .Data , "global" , "secret" , secret .Name .Data ),
842+ },
843+ Labels : mapStrInterfaceToMapStrStr (secret .GetLabels ().Data ),
844+ Connections : []* inventory.Config {conn .Conf .Clone (inventory .WithoutDiscovery (), inventory .WithParentConnectionId (conn .Conf .Id ))},
845+ })
846+ }
847+ }
816848
817849 return assetList , nil
818850}
0 commit comments