Skip to content

Commit 4fffe33

Browse files
authored
Merge pull request #17 from codesuki/detect-cluster
Automatically detect region
2 parents 0a6fbd0 + de03145 commit 4fffe33

File tree

3 files changed

+51
-15
lines changed

3 files changed

+51
-15
lines changed

Diff for: Makefile

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ docker:
1616
build: deps
1717
for GOOS in darwin linux; do \
1818
for GOARCH in 386 amd64; do \
19-
go build -ldflags "$(LDFLAGS)" -v -o build/$(NAME)-$$GOOS-$$GOARCH ; \
19+
GOOS=$$GOOS GOARCH=$$GOARCH go build -ldflags "$(LDFLAGS)" -v -o build/$(NAME)-$$GOOS-$$GOARCH ; \
2020
done \
2121
done
2222

Diff for: ec2.go

+16-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package main
22

33
import (
44
"github.com/aws/aws-sdk-go/aws"
5+
"github.com/aws/aws-sdk-go/aws/ec2metadata"
56
"github.com/aws/aws-sdk-go/aws/session"
67
"github.com/aws/aws-sdk-go/service/ec2"
78
)
@@ -11,7 +12,9 @@ type ec2Client struct {
1112
}
1213

1314
func newEC2(region string, sess *session.Session) *ec2Client {
14-
return &ec2Client{ec2.New(sess, aws.NewConfig().WithRegion(region))}
15+
return &ec2Client{
16+
ec2: ec2.New(sess, aws.NewConfig().WithRegion(region)),
17+
}
1518
}
1619

1720
func (e *ec2Client) describeInstance(id *string) (*ec2.Instance, error) {
@@ -26,3 +29,15 @@ func (e *ec2Client) describeInstance(id *string) (*ec2.Instance, error) {
2629
}
2730
return resp.Reservations[0].Instances[0], nil
2831
}
32+
33+
type ec2Meta struct {
34+
metadata *ec2metadata.EC2Metadata
35+
}
36+
37+
func NewEC2Metadata(sess *session.Session) *ec2Meta {
38+
return &ec2Meta{metadata: ec2metadata.New(sess)}
39+
}
40+
41+
func (m *ec2Meta) region() (string, error) {
42+
return m.metadata.Region()
43+
}

Diff for: main.go

+34-13
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ var (
3737
var (
3838
app = kingpin.New("ecs-gen", "docker-gen for AWS ECS.")
3939

40-
region = app.Flag("region", "AWS region.").Short('r').Default("ap-northeast-1").String()
40+
region = app.Flag("region", "AWS region.").Short('r').String()
4141
cluster = app.Flag("cluster", "ECS cluster name.").Short('c').String()
4242
templateFile = app.Flag("template", "Path to template file.").Short('t').Required().ExistingFile()
4343
outputFile = app.Flag("output", "Path to output file.").Short('o').Required().String()
@@ -56,21 +56,14 @@ func main() {
5656
app.Version(version)
5757
app.DefaultEnvars()
5858
kingpin.MustParse(app.Parse(os.Args[1:]))
59-
if *hostVar == "" {
60-
log.Fatalf("host-var must not be empty")
61-
}
62-
if *cluster == "" {
63-
var err error
64-
cluster, err = findClusterName()
65-
if err != nil || *cluster == "" {
66-
log.Fatalf("could not determine cluster name. please define using --cluster / -c")
67-
}
68-
log.Println("found cluster name to be:", *cluster)
69-
}
7059
sess, err := session.NewSession()
7160
if err != nil {
72-
panic(err)
61+
log.Fatal(err)
7362
}
63+
meta := NewEC2Metadata(sess)
64+
checkRegionFlag(meta)
65+
checkHostVarFlag()
66+
checkClusterFlag()
7467
ec2 := newEC2(*region, sess)
7568
ecs := newECS(*region, sess)
7669
if *once {
@@ -83,6 +76,34 @@ func main() {
8376
}
8477
}
8578

79+
func checkHostVarFlag() {
80+
if *hostVar == "" {
81+
log.Fatalf("host-var must not be empty")
82+
}
83+
}
84+
85+
func checkClusterFlag() {
86+
if *cluster == "" {
87+
var err error
88+
cluster, err = findClusterName()
89+
if err != nil || *cluster == "" {
90+
log.Fatalf("could not determine cluster name. please define using --cluster / -c")
91+
}
92+
log.Println("found cluster name to be:", *cluster)
93+
}
94+
}
95+
96+
func checkRegionFlag(meta *ec2Meta) {
97+
if *region == "" {
98+
r, err := meta.region()
99+
if err != nil {
100+
log.Fatalf("could not determine cluster region. please define using --region / -r")
101+
}
102+
*region = r
103+
log.Println("found cluster region to be:", *region)
104+
}
105+
}
106+
86107
func execute(ec2 *ec2Client, ecs *ecsClient) {
87108
updateAndWrite(ec2, ecs)
88109
var err error

0 commit comments

Comments
 (0)