func GetStrategy()

in internal/flavors/benchmark/strategy.go [41:80]


func GetStrategy(cfg *config.Config, log *clog.Logger) (Strategy, error) {
	switch cfg.Benchmark {
	case config.CIS_AWS:
		if cfg.CloudConfig.Aws.AccountType == config.OrganizationAccount {
			return &AWSOrg{
				IAMProvider:      &iam.Provider{},
				IdentityProvider: awslib.IdentityProvider{Logger: log},
				AccountProvider:  awslib.AccountProvider{},
			}, nil
		}

		return &AWS{
			IdentityProvider: awslib.IdentityProvider{Logger: log},
		}, nil
	case config.CIS_EKS:
		return &EKS{
			AWSIdentityProvider:    awslib.IdentityProvider{Logger: log},
			AWSMetadataProvider:    awslib.Ec2MetadataProvider{},
			EKSClusterNameProvider: awslib.EKSClusterNameProvider{},
			ClientProvider:         k8s.ClientGetter{},
			leaderElector:          nil,
		}, nil
	case config.CIS_K8S:
		return &K8S{
			ClientProvider: k8s.ClientGetter{},
			leaderElector:  nil,
		}, nil
	case config.CIS_GCP:
		return &GCP{
			CfgProvider:          &gcp_auth.ConfigProvider{AuthProvider: &gcp_auth.GoogleAuthProvider{}},
			inventoryInitializer: &gcp_inventory.ProviderInitializer{},
		}, nil
	case config.CIS_AZURE:
		return &Azure{
			cfgProvider:         &azure_auth.ConfigProvider{AuthProvider: &azure_auth.AzureAuthProvider{}},
			providerInitializer: &azurelib.ProviderInitializer{},
		}, nil
	}
	return nil, fmt.Errorf("unknown benchmark: '%s'", cfg.Benchmark)
}