-
Notifications
You must be signed in to change notification settings - Fork 0
/
autoscaling.go
68 lines (57 loc) · 1.91 KB
/
autoscaling.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
package services
import (
"fmt"
"github.com/aws/aws-sdk-go/service/autoscaling"
)
type AutoscalingClientInterface interface {
DescribeAccountLimits(input *autoscaling.DescribeAccountLimitsInput) (*autoscaling.DescribeAccountLimitsOutput, error)
}
func NewAutoscalingChecker() Svcquota {
serviceCode := "autoscaling"
supportedQuotas := map[string]func(ServiceChecker) (ret []AWSQuotaInfo){
"Auto Scaling groups per region": ServiceChecker.getAutoscalingGroupsUsage,
"Launch configurations per region": ServiceChecker.getAutoscalingLaunchConfigsUsage,
}
requiredPermissions := []string{"autoscaling:DescribeAccountLimits"}
return NewServiceChecker(serviceCode, supportedQuotas, requiredPermissions)
}
func (c ServiceChecker) getAutoscalingGroupsUsage() (ret []AWSQuotaInfo) {
ret = []AWSQuotaInfo{}
result, err := conf.Autoscaling.DescribeAccountLimits(nil)
quotaInfo := AWSQuotaInfo{
Service: c.ServiceCode,
QuotaName: "Auto Scaling groups per region",
Region: c.Region,
Quotacode: "",
Unit: "",
Global: true,
}
if err != nil {
fmt.Printf("Unable to retrieve Autoscaling limits, %v", err)
return
}
quotaInfo.QuotaValue = float64(*result.MaxNumberOfAutoScalingGroups)
quotaInfo.UsageValue = float64(*result.NumberOfAutoScalingGroups)
ret = append(ret, quotaInfo)
return
}
func (c ServiceChecker) getAutoscalingLaunchConfigsUsage() (ret []AWSQuotaInfo) {
ret = []AWSQuotaInfo{}
result, err := conf.Autoscaling.DescribeAccountLimits(nil)
quotaInfo := AWSQuotaInfo{
Service: c.ServiceCode,
QuotaName: "Launch configurations per region",
Region: c.Region,
Quotacode: "",
Unit: "",
Global: true,
}
if err != nil {
fmt.Printf("Unable to retrieve Autoscaling limits, %v", err)
return
}
quotaInfo.QuotaValue = float64(*result.MaxNumberOfLaunchConfigurations)
quotaInfo.UsageValue = float64(*result.NumberOfLaunchConfigurations)
ret = append(ret, quotaInfo)
return
}