/
filters.go
68 lines (61 loc) · 1.15 KB
/
filters.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 ec2
import (
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/service/ec2"
)
func notTerminated() *ec2.Filter {
return &ec2.Filter{
Name: aws.String("instance-state-name"),
Values: aws.StringSlice(
[]string{
"pending",
"running",
"shutting-down",
"stopping",
"stopped",
},
),
}
}
func inOrg(org string) *ec2.Filter {
return &ec2.Filter{
// TODO: switch to "tag:spinup:org"
// Name: aws.String("tag:spinup:org"),
Name: aws.String("tag:yale:org"),
Values: aws.StringSlice(
[]string{org},
),
}
}
func inVpc(vpc string) *ec2.Filter {
return &ec2.Filter{
Name: aws.String("vpc-id"),
Values: aws.StringSlice(
[]string{vpc},
),
}
}
func withInstanceId(id string) *ec2.Filter {
return &ec2.Filter{
Name: aws.String("tag:spinup:instanceid"),
Values: aws.StringSlice(
[]string{id},
),
}
}
func withVolumeId(id string) *ec2.Filter {
return &ec2.Filter{
Name: aws.String("volume-id"),
Values: aws.StringSlice(
[]string{id},
),
}
}
func isAvailable() *ec2.Filter {
return &ec2.Filter{
Name: aws.String("state"),
Values: aws.StringSlice(
[]string{"available"},
),
}
}