func()

in internal/flavors/assetinventory/strategy.go [50:78]


func (s *strategy) NewAssetInventory(ctx context.Context, client beat.Client) (inventory.AssetInventory, error) {
	var fetchers []inventory.AssetFetcher
	var err error

	switch s.cfg.AssetInventoryProvider {
	case config.ProviderAWS:
		switch s.cfg.CloudConfig.Aws.AccountType {
		case config.SingleAccount, config.OrganizationAccount:
			fetchers, err = s.initAwsFetchers(ctx)
		default:
			err = fmt.Errorf("unsupported account_type: %q", s.cfg.CloudConfig.Aws.AccountType)
		}
	case config.ProviderAzure:
		fetchers, err = s.initAzureFetchers(ctx)
	case config.ProviderGCP:
		fetchers, err = s.initGcpFetchers(ctx)
	case "":
		err = errors.New("missing config.v1.asset_inventory_provider setting")
	default:
		err = fmt.Errorf("unsupported Asset Inventory provider %q", s.cfg.AssetInventoryProvider)
	}
	if err != nil {
		return inventory.AssetInventory{}, err
	}
	s.logger.Infof("Creating %s AssetInventory", strings.ToUpper(s.cfg.AssetInventoryProvider))

	now := func() time.Time { return time.Now() } //nolint:gocritic
	return inventory.NewAssetInventory(s.logger, fetchers, client, now, s.cfg.Period), nil
}