forked from openshift/osd-network-verifier
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.go
More file actions
118 lines (99 loc) · 2.97 KB
/
main.go
File metadata and controls
118 lines (99 loc) · 2.97 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
package main
import (
"context"
"flag"
"fmt"
"log"
"os"
"time"
ocmlog "github.com/openshift-online/ocm-sdk-go/logging"
inttestaws "github.com/openshift/osd-network-verifier/integration/pkg/aws"
"github.com/openshift/osd-network-verifier/pkg/verifier"
awsverifier "github.com/openshift/osd-network-verifier/pkg/verifier/aws"
"github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/aws-sdk-go-v2/config"
)
func main() {
f := flag.NewFlagSet(os.Args[0], flag.ExitOnError)
region := f.String("region", "us-east-1", "AWS Region")
profile := f.String("profile", "", "AWS Profile")
platform := f.String("platform", "aws", "(Optional) Platform type to validate, defaults to `aws`")
createOnly := f.Bool("create-only", false, "When specified, only create infrastructure and do not delete")
deleteOnly := f.Bool("delete-only", false, "When specified, delete infrastructure in an idempotent fashion")
if err := f.Parse(os.Args[1:]); err != nil {
panic(err)
}
var (
cfg aws.Config
err error
)
if *profile == "" {
cfg, err = config.LoadDefaultConfig(context.TODO(), config.WithRegion(*region))
if err != nil {
panic(err)
}
} else {
cfg, err = config.LoadDefaultConfig(context.TODO(), config.WithRegion(*region), config.WithSharedConfigProfile(*profile))
if err != nil {
panic(err)
}
}
data := inttestaws.NewIntegrationTestData(cfg)
if *deleteOnly {
if err := data.Cleanup(context.TODO()); err != nil {
panic(err)
}
return
}
if err := data.Setup(context.TODO()); err != nil {
log.Printf("setup err, starting cleanup: %s", err)
if err := data.Cleanup(context.TODO()); err != nil {
panic(err)
}
}
if *createOnly {
// Don't run egress check and cleanup afterwards
return
}
if err := onvEgressCheck(cfg, *platform, *data.GetPrivateSubnetId()); err != nil {
panic(err)
}
if err := data.Cleanup(context.TODO()); err != nil {
panic(err)
}
}
func onvEgressCheck(cfg aws.Config, platform, subnetId string) error {
builder := ocmlog.NewStdLoggerBuilder()
logger, err := builder.Build()
if err != nil {
return fmt.Errorf("unable to build logger: %s", err)
}
awsVerifier, err := awsverifier.NewAwsVerifierFromConfig(cfg, logger)
if err != nil {
return err
}
// Example required values
defaultTags := map[string]string{"osd-network-verifier": "owned", "red-hat-managed": "true", "Name": "osd-network-verifier"}
vei := verifier.ValidateEgressInput{
Timeout: 2 * time.Second,
Ctx: context.TODO(),
PlatformType: platform,
SubnetID: subnetId,
InstanceType: "t3.micro",
Tags: defaultTags,
}
// Call egress validator
log.Println("Starting ONV egress validation")
out := verifier.ValidateEgress(awsVerifier, vei)
out.Summary(false)
egressFailures := out.GetEgressURLFailures()
for _, ef := range egressFailures {
log.Printf("egress failure: %s", ef.EgressURL())
}
if out.IsSuccessful() {
log.Println("ONV egress validation: Success!")
} else {
log.Println("ONV egress validation: Failure!")
}
return nil
}