-
Notifications
You must be signed in to change notification settings - Fork 1.4k
/
get.go
91 lines (77 loc) · 3.02 KB
/
get.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
package nodegroup
import (
"strings"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/service/eks"
"github.com/pkg/errors"
"github.com/weaveworks/eksctl/pkg/cfn/manager"
)
func (m *Manager) GetAll() ([]*manager.NodeGroupSummary, error) {
summaries, err := m.stackManager.GetUnmanagedNodeGroupSummaries("")
if err != nil {
return nil, errors.Wrap(err, "getting nodegroup stack summaries")
}
managedNodeGroups, err := m.ctl.Provider.EKS().ListNodegroups(&eks.ListNodegroupsInput{
ClusterName: &m.cfg.Metadata.Name,
})
if err != nil {
return nil, err
}
for _, managedNodeGroup := range managedNodeGroups.Nodegroups {
describeOutput, err := m.ctl.Provider.EKS().DescribeNodegroup(&eks.DescribeNodegroupInput{
ClusterName: &m.cfg.Metadata.Name,
NodegroupName: managedNodeGroup,
})
if err != nil {
return nil, err
}
asgs := []string{}
if describeOutput.Nodegroup.Resources != nil {
for _, v := range describeOutput.Nodegroup.Resources.AutoScalingGroups {
asgs = append(asgs, aws.StringValue(v.Name))
}
}
summaries = append(summaries, &manager.NodeGroupSummary{
Name: *describeOutput.Nodegroup.NodegroupName,
Cluster: *describeOutput.Nodegroup.ClusterName,
Status: *describeOutput.Nodegroup.Status,
MaxSize: int(*describeOutput.Nodegroup.ScalingConfig.MaxSize),
MinSize: int(*describeOutput.Nodegroup.ScalingConfig.MinSize),
DesiredCapacity: int(*describeOutput.Nodegroup.ScalingConfig.DesiredSize),
InstanceType: *describeOutput.Nodegroup.InstanceTypes[0],
ImageID: *describeOutput.Nodegroup.AmiType,
CreationTime: describeOutput.Nodegroup.CreatedAt,
NodeInstanceRoleARN: *describeOutput.Nodegroup.NodeRole,
AutoScalingGroupName: strings.Join(asgs, ","),
})
}
return summaries, nil
}
func (m *Manager) Get(name string) (*manager.NodeGroupSummary, error) {
summaries, err := m.stackManager.GetUnmanagedNodeGroupSummaries(name)
if err != nil {
return nil, errors.Wrap(err, "getting nodegroup stack summaries")
}
if len(summaries) > 0 {
return summaries[0], nil
}
describeOutput, err := m.ctl.Provider.EKS().DescribeNodegroup(&eks.DescribeNodegroupInput{
ClusterName: &m.cfg.Metadata.Name,
NodegroupName: &name,
})
if err != nil {
return nil, err
}
return &manager.NodeGroupSummary{
Name: *describeOutput.Nodegroup.NodegroupName,
Cluster: *describeOutput.Nodegroup.ClusterName,
Status: *describeOutput.Nodegroup.Status,
MaxSize: int(*describeOutput.Nodegroup.ScalingConfig.MaxSize),
MinSize: int(*describeOutput.Nodegroup.ScalingConfig.MinSize),
DesiredCapacity: int(*describeOutput.Nodegroup.ScalingConfig.DesiredSize),
InstanceType: *describeOutput.Nodegroup.InstanceTypes[0],
ImageID: *describeOutput.Nodegroup.AmiType,
CreationTime: describeOutput.Nodegroup.CreatedAt,
NodeInstanceRoleARN: *describeOutput.Nodegroup.NodeRole,
}, nil
}