go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/_motor/discovery/k8s/resolver.go (about) 1 // Copyright (c) Mondoo, Inc. 2 // SPDX-License-Identifier: BUSL-1.1 3 4 package k8s 5 6 import ( 7 "context" 8 9 "go.mondoo.com/cnquery/motor/asset" 10 "go.mondoo.com/cnquery/motor/discovery/common" 11 "go.mondoo.com/cnquery/motor/providers" 12 "go.mondoo.com/cnquery/motor/providers/k8s/resources" 13 "go.mondoo.com/cnquery/motor/vault" 14 ) 15 16 var _ common.ContextInitializer = (*NamespaceResolver)(nil) 17 18 type Resolver struct{} 19 20 func (r *Resolver) Name() string { 21 return "Kubernetes Resolver" 22 } 23 24 func (r *Resolver) AvailableDiscoveryTargets() []string { 25 return []string{ 26 common.DiscoveryAuto, 27 common.DiscoveryAll, 28 DiscoveryClusters, 29 DiscoveryPods, 30 DiscoveryJobs, 31 DiscoveryCronJobs, 32 DiscoveryStatefulSets, 33 DiscoveryDeployments, 34 DiscoveryReplicaSets, 35 DiscoveryDaemonSets, 36 DiscoveryContainerImages, 37 DiscoveryAdmissionReviews, 38 DiscoveryIngresses, 39 DiscoveryNamespaces, 40 } 41 } 42 43 func (r *Resolver) InitCtx(ctx context.Context) context.Context { 44 return resources.SetDiscoveryCache(ctx, resources.NewDiscoveryCache()) 45 } 46 47 func (r *Resolver) Resolve(ctx context.Context, root *asset.Asset, tc *providers.Config, credsResolver vault.Resolver, sfn common.QuerySecretFn, userIdDetectors ...providers.PlatformIdDetector) ([]*asset.Asset, error) { 48 nsFilter := tc.Options["namespaces"] 49 if len(nsFilter) > 0 { 50 return (&NamespaceResolver{}).Resolve(ctx, root, tc, credsResolver, sfn, userIdDetectors...) 51 } 52 return (&ClusterResolver{}).Resolve(ctx, root, tc, credsResolver, sfn, userIdDetectors...) 53 }