/
health_aws.go
105 lines (94 loc) · 4.08 KB
/
health_aws.go
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
package health
import "strings"
const (
AWSResourceTypeEBS string = "ebs"
AWSResourceTypeEC2 string = "ec2"
AWSResourceTypeEKS string = "eks"
AWSResourceTypeELB string = "elb"
AWSResourceTypeRDS string = "rds"
AWSResourceTypeVPC string = "vpc"
AWSResourceTypeSubnet string = "subnet"
)
// MapAWSStatus maps an AWS resource's statuses to a Health Code
func MapAWSStatus(status string, resourceType string) string {
if resourceStatuses, found := awsStatusMap[resourceType]; found {
if v, found := resourceStatuses[strings.ToLower(status)]; found {
return string(v)
}
}
return string(HealthStatusUnknown)
}
var awsStatusMap = map[string]map[string]HealthStatusCode{
AWSResourceTypeEC2: {
"pending": HealthStatusPending,
"running": HealthStatusHealthy,
"shutting-down": HealthStatusDeleting,
"stopped": HealthStatusStopped,
"stopping": HealthStatusStopping,
"terminated": HealthStatusDeleted,
},
AWSResourceTypeEKS: {
"creating": HealthStatusCreating,
"active": HealthStatusHealthy,
"deleting": HealthStatusDeleting,
"failed": HealthStatusError,
"updating": HealthStatusUpdating,
"pending": HealthStatusPending,
},
AWSResourceTypeEBS: {
"creating": HealthStatusCreating,
"available": HealthStatusStopped,
"in-use": HealthStatusHealthy,
"deleting": HealthStatusDeleting,
"deleted": HealthStatusDeleted,
"error": HealthStatusError,
},
AWSResourceTypeRDS: {
"available": HealthStatusHealthy,
"billed": HealthStatusHealthy,
"backing-up": HealthStatusMaintenance,
"configuring-enhanced-monitoring": HealthStatusMaintenance,
"configuring-iam-database-auth": HealthStatusMaintenance,
"configuring-log-exports": HealthStatusMaintenance,
"converting-to-vpc": HealthStatusUpdating,
"creating": HealthStatusCreating,
"delete-precheck": HealthStatusMaintenance,
"deleting": HealthStatusDeleting,
"failed": HealthStatusUnhealthy,
"inaccessible-encryption-credentials": HealthStatusInaccesible,
"inaccessible-encryption-credentials-recoverable": HealthStatusInaccesible,
"incompatible-network": HealthStatusUnhealthy,
"incompatible-option-group": HealthStatusUnhealthy,
"incompatible-parameters": HealthStatusUnhealthy,
"incompatible-restore": HealthStatusUnhealthy,
"insufficient-capacity": HealthStatusUnhealthy,
"maintenance": HealthStatusMaintenance,
"modifying": HealthStatusUpdating,
"moving-to-vpc": HealthStatusMaintenance,
"rebooting": HealthStatusRestart,
"resetting-master-credentials": HealthStatusMaintenance,
"renaming": HealthStatusMaintenance,
"restore-error": HealthStatusError,
"starting": HealthStatusStarting,
"stopped": HealthStatusStopped,
"stopping": HealthStatusStopping,
"storage-config-upgrade": HealthStatusUpdating,
"storage-full": HealthStatusUnhealthy,
"storage-optimization": HealthStatusMaintenance,
"upgrading": HealthStatusUpdating,
},
AWSResourceTypeELB: {
"active": HealthStatusHealthy,
"provisioning": HealthStatusCreating,
"active_impaired": HealthStatusWarning,
"failed": HealthStatusError,
},
AWSResourceTypeVPC: {
"pending": HealthStatusPending,
"available": HealthStatusHealthy,
},
AWSResourceTypeSubnet: {
"pending": HealthStatusPending,
"available": HealthStatusHealthy,
},
}