go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/_motor/discovery/vcd/resolver.go (about) 1 // Copyright (c) Mondoo, Inc. 2 // SPDX-License-Identifier: BUSL-1.1 3 4 package vcd 5 6 import ( 7 "context" 8 "errors" 9 10 "go.mondoo.com/cnquery/motor/asset" 11 "go.mondoo.com/cnquery/motor/discovery/common" 12 "go.mondoo.com/cnquery/motor/providers" 13 "go.mondoo.com/cnquery/motor/providers/resolver" 14 vcd_provider "go.mondoo.com/cnquery/motor/providers/vcd" 15 "go.mondoo.com/cnquery/motor/vault" 16 ) 17 18 type Resolver struct{} 19 20 func (k *Resolver) Name() string { 21 return "VMware Cloud Director Resolver" 22 } 23 24 func (r *Resolver) AvailableDiscoveryTargets() []string { 25 return []string{common.DiscoveryAuto, common.DiscoveryAll} 26 } 27 28 func (r *Resolver) Resolve(ctx context.Context, root *asset.Asset, cc *providers.Config, credsResolver vault.Resolver, sfn common.QuerySecretFn, userIdDetectors ...providers.PlatformIdDetector) ([]*asset.Asset, error) { 29 resolved := []*asset.Asset{} 30 31 m, err := resolver.NewMotorConnection(ctx, cc, credsResolver) 32 if err != nil { 33 return nil, err 34 } 35 defer m.Close() 36 37 provider, ok := m.Provider.(*vcd_provider.Provider) 38 if !ok { 39 return nil, errors.New("could not create VMware Cloud Director provider") 40 } 41 42 identifier, err := provider.Identifier() 43 if err != nil { 44 return nil, err 45 } 46 47 // detect platform info for the asset 48 pf, err := m.Platform() 49 if err != nil { 50 return nil, err 51 } 52 53 if cc.IncludesOneOfDiscoveryTarget(common.DiscoveryAuto, common.DiscoveryAll) { 54 resolved = append(resolved, &asset.Asset{ 55 PlatformIds: []string{identifier}, 56 Name: "VMware Cloud Director", 57 Platform: pf, 58 Connections: []*providers.Config{cc}, // pass-in the current config 59 Labels: map[string]string{}, 60 }) 61 } 62 63 return resolved, nil 64 }