Skip to content

Commit 17983b5

Browse files
Merge pull request #58 from hairyhenderson/55-default-region
Adding ability to provide default for ec2region function
2 parents 1fb1dbb + e6a2cfb commit 17983b5

3 files changed

Lines changed: 25 additions & 4 deletions

File tree

README.md

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -245,14 +245,23 @@ us-east-1
245245

246246
#### `ec2region`
247247

248-
Queries AWS to get the region. Returns `unknown` if it can't be determined for some reason.
248+
Queries AWS to get the region. An optional default can be provided, or returns
249+
`unknown` if it can't be determined for some reason.
249250

250251
##### Example
251252

253+
_In EC2_
252254
```console
253255
$ echo '{{ ec2region }}' | ./gomplate
254256
us-east-1
255257
```
258+
_Not in EC2_
259+
```console
260+
$ echo '{{ ec2region }}' | ./gomplate
261+
unknown
262+
$ echo '{{ ec2region "foo" }}' | ./gomplate
263+
foo
264+
```
256265

257266
#### `ec2tag`
258267

aws/ec2meta.go

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,10 +71,15 @@ func (e *Ec2Meta) Dynamic(key string, def ...string) string {
7171
}
7272

7373
// Region -
74-
func (e *Ec2Meta) Region() string {
75-
doc := e.Dynamic("instance-identity/document", `{"region":"unknown"}`)
74+
func (e *Ec2Meta) Region(def ...string) string {
75+
defaultRegion := returnDefault(def)
76+
if defaultRegion == "" {
77+
defaultRegion = "unknown"
78+
}
79+
80+
doc := e.Dynamic("instance-identity/document", `{"region":"`+defaultRegion+`"}`)
7681
obj := &InstanceDocument{
77-
Region: "unknown",
82+
Region: defaultRegion,
7883
}
7984
err := json.Unmarshal([]byte(doc), &obj)
8085
if err != nil {

aws/ec2meta_test.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,13 @@ func TestRegion_NoRegion(t *testing.T) {
4545
assert.Equal(t, "unknown", ec2meta.Region())
4646
}
4747

48+
func TestRegion_NoRegionWithDefault(t *testing.T) {
49+
server, ec2meta := MockServer(200, "{}")
50+
defer server.Close()
51+
52+
assert.Equal(t, "foo", ec2meta.Region("foo"))
53+
}
54+
4855
func TestRegion_KnownRegion(t *testing.T) {
4956
server, ec2meta := MockServer(200, `{"region":"us-east-1"}`)
5057
defer server.Close()

0 commit comments

Comments
 (0)