func NewVulnerability()

in internal/flavors/vulnerability.go [51:106]


func NewVulnerability(b *beat.Beat, cfg *agentconfig.C) (beat.Beater, error) {
	log := clog.NewLogger("vulnerability")

	// Override trivy's logger
	scanLog := zap.New(log.Core()).Sugar()
	dlog.SetLogger(scanLog)
	xlog.SetLogger(scanLog)
	tlog.SetDefault(slog.New(zapslog.NewHandler(log.Core())))

	ctx, cancel := context.WithCancel(context.Background())

	c, err := config.New(cfg)
	if err != nil {
		cancel()
		return nil, fmt.Errorf("error reading config file: %w", err)
	}
	log.Info("Config initiated with cycle period of ", c.Period)

	bdp, err := getAWSDataProvider(ctx, *c, log)
	if err != nil {
		cancel()
		return nil, fmt.Errorf("failed to init common data provider: %w", err)
	}

	cdp, err := common.New(version.CloudbeatVersionInfo{Version: version.CloudbeatVersion()}, c)
	if err != nil {
		cancel()
		return nil, err
	}

	client, err := NewClient(b.Publisher, c.Processors)
	if err != nil {
		cancel()
		return nil, fmt.Errorf("failed to init client: %w", err)
	}
	log.Infof("vulnerability configured %d processors", len(c.Processors))

	publisher := NewPublisher(log, flushInterval, eventsThreshold, client)

	base := flavorBase{
		ctx:       ctx,
		cancel:    cancel,
		publisher: publisher,
		config:    c,
		log:       log,
		client:    client,
	}

	bt := &vulnerability{
		flavorBase: base,
		bdp:        bdp,
		cdp:        cdp,
	}

	return bt, nil
}