• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

elastic / cloudbeat / 8596844961

08 Apr 2024 08:19AM UTC coverage: 75.999% (-0.008%) from 76.007%
8596844961

push

github

web-flow
Merge ca9e98def into 61b21ecb2

4 of 8 new or added lines in 3 files covered. (50.0%)

7324 of 9637 relevant lines covered (76.0%)

18.24 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

86.84
/internal/flavors/benchmark/strategy.go
1
// Licensed to Elasticsearch B.V. under one or more contributor
2
// license agreements. See the NOTICE file distributed with
3
// this work for additional information regarding copyright
4
// ownership. Elasticsearch B.V. licenses this file to you under
5
// the Apache License, Version 2.0 (the "License"); you may
6
// not use this file except in compliance with the License.
7
// You may obtain a copy of the License at
8
//
9
//     http://www.apache.org/licenses/LICENSE-2.0
10
//
11
// Unless required by applicable law or agreed to in writing,
12
// software distributed under the License is distributed on an
13
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
// KIND, either express or implied.  See the License for the
15
// specific language governing permissions and limitations
16
// under the License.
17

18
package benchmark
19

20
import (
21
        "context"
22
        "fmt"
23

24
        "github.com/elastic/elastic-agent-libs/logp"
25

26
        "github.com/elastic/cloudbeat/internal/config"
27
        "github.com/elastic/cloudbeat/internal/dataprovider/providers/k8s"
28
        "github.com/elastic/cloudbeat/internal/flavors/benchmark/builder"
29
        "github.com/elastic/cloudbeat/internal/resources/providers/awslib"
30
        "github.com/elastic/cloudbeat/internal/resources/providers/awslib/iam"
31
        "github.com/elastic/cloudbeat/internal/resources/providers/azurelib"
32
        azure_auth "github.com/elastic/cloudbeat/internal/resources/providers/azurelib/auth"
33
        gcp_auth "github.com/elastic/cloudbeat/internal/resources/providers/gcplib/auth"
34
        gcp_inventory "github.com/elastic/cloudbeat/internal/resources/providers/gcplib/inventory"
35
)
36

37
type Strategy interface {
38
        NewBenchmark(ctx context.Context, log *logp.Logger, cfg *config.Config) (builder.Benchmark, error)
39
        checkDependencies() error
40
}
41

42
func GetStrategy(cfg *config.Config, log *logp.Logger) (Strategy, error) {
7✔
43
        switch cfg.Benchmark {
7✔
44
        case config.CIS_AWS:
3✔
45
                if cfg.CloudConfig.Aws.AccountType == config.OrganizationAccount {
4✔
46
                        return &AWSOrg{
1✔
47
                                IAMProvider:      &iam.Provider{},
1✔
48
                                IdentityProvider: awslib.IdentityProvider{Logger: log},
1✔
49
                                AccountProvider:  awslib.AccountProvider{},
1✔
50
                        }, nil
1✔
51
                }
1✔
52

53
                return &AWS{
2✔
54
                        IdentityProvider: awslib.IdentityProvider{Logger: log},
2✔
55
                }, nil
2✔
56
        case config.CIS_EKS:
1✔
57
                return &EKS{
1✔
58
                        AWSCfgProvider:         awslib.ConfigProvider{MetadataProvider: awslib.Ec2MetadataProvider{}},
1✔
59
                        AWSIdentityProvider:    awslib.IdentityProvider{Logger: log},
1✔
60
                        AWSMetadataProvider:    awslib.Ec2MetadataProvider{},
1✔
61
                        EKSClusterNameProvider: awslib.EKSClusterNameProvider{},
1✔
62
                        ClientProvider:         k8s.ClientGetter{},
1✔
63
                        leaderElector:          nil,
1✔
64
                }, nil
1✔
65
        case config.CIS_K8S:
1✔
66
                return &K8S{
1✔
67
                        ClientProvider: k8s.ClientGetter{},
1✔
68
                        leaderElector:  nil,
1✔
69
                }, nil
1✔
70
        case config.CIS_GCP:
1✔
71
                return &GCP{
1✔
72
                        CfgProvider:          &gcp_auth.ConfigProvider{AuthProvider: &gcp_auth.GoogleAuthProvider{}},
1✔
73
                        inventoryInitializer: &gcp_inventory.ProviderInitializer{},
1✔
74
                }, nil
1✔
75
        case config.CIS_AZURE:
×
76
                return &Azure{
×
77
                        cfgProvider:         &azure_auth.ConfigProvider{AuthProvider: &azure_auth.AzureAuthProvider{}},
×
NEW
78
                        providerInitializer: &azurelib.ProviderInitializer{},
×
NEW
79
                }, nil
×
80
        }
81
        return nil, fmt.Errorf("unknown benchmark: '%s'", cfg.Benchmark)
1✔
82
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc