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  }