Merge lp:~axwalk/juju-core/lp1222664-maas-instance-stringer into lp:~go-bot/juju-core/trunk

Proposed by Andrew Wilkins
Status: Merged
Approved by: Andrew Wilkins
Approved revision: no longer in the source branch.
Merged at revision: 1777
Proposed branch: lp:~axwalk/juju-core/lp1222664-maas-instance-stringer
Merge into: lp:~go-bot/juju-core/trunk
Diff against target: 67 lines (+32/-0)
2 files modified
provider/maas/instance.go (+11/-0)
provider/maas/instance_test.go (+21/-0)
To merge this branch: bzr merge lp:~axwalk/juju-core/lp1222664-maas-instance-stringer
Reviewer Review Type Date Requested Status
Julian Edwards (community) Approve
Juju Engineering Pending
Review via email: mp+184505@code.launchpad.net

Commit message

provider/maas: add String method to maasInstance

https://codereview.appspot.com/13620043/

Description of the change

provider/maas: add String method to maasInstance

https://codereview.appspot.com/13620043/

To post a comment you must log in.
Revision history for this message
Andrew Wilkins (axwalk) wrote :

Reviewers: mp+184505_code.launchpad.net,

Message:
Please take a look.

Description:
provider/maas: add String method to maasInstance

https://code.launchpad.net/~axwalk/juju-core/lp1222664-maas-instance-stringer/+merge/184505

(do not edit description out of merge proposal)

Please review this at https://codereview.appspot.com/13620043/

Affected files (+15, -0 lines):
   A [revision details]
   M provider/maas/instance.go
   M provider/maas/instance_test.go

Index: [revision details]
=== added file '[revision details]'
--- [revision details] 2012-01-01 00:00:00 +0000
+++ [revision details] 2012-01-01 00:00:00 +0000
@@ -0,0 +1,2 @@
+Old revision: tarmac-20130908094110-qc1z761lrq29tdua
+New revision: <email address hidden>

Index: provider/maas/instance.go
=== modified file 'provider/maas/instance.go'
--- provider/maas/instance.go 2013-09-04 15:11:51 +0000
+++ provider/maas/instance.go 2013-09-09 06:35:14 +0000
@@ -17,6 +17,10 @@

  var _ instance.Instance = (*maasInstance)(nil)

+func (mi *maasInstance) String() string {
+ return string(mi.Id())
+}
+
  func (mi *maasInstance) Id() instance.Id {
   // Use the node's 'resource_uri' value.
   return instance.Id(mi.maasObject.URI().String())

Index: provider/maas/instance_test.go
=== modified file 'provider/maas/instance_test.go'
--- provider/maas/instance_test.go 2013-09-04 15:11:51 +0000
+++ provider/maas/instance_test.go 2013-09-09 06:35:14 +0000
@@ -4,6 +4,8 @@
  package maas

  import (
+ "fmt"
+
   gc "launchpad.net/gocheck"

   "launchpad.net/juju-core/instance"
@@ -25,6 +27,13 @@
   c.Check(string(instance.Id()), gc.Equals, resourceURI)
  }

+func (s *instanceTest) TestString(c *gc.C) {
+ jsonValue := `{"system_id": "system_id", "test": "test"}`
+ obj := s.testMAASObject.TestServer.NewNode(jsonValue)
+ instance := &maasInstance{&obj, s.environ}
+ c.Assert(fmt.Sprint(instance), gc.Equals, string(instance.Id()))
+}
+
  func (s *instanceTest) TestRefreshInstance(c *gc.C) {
   jsonValue := `{"system_id": "system_id", "test": "test"}`
   obj := s.testMAASObject.TestServer.NewNode(jsonValue)

Revision history for this message
Julian Edwards (julian-edwards) wrote :

Printing hostname as well as ID would make life easier for humans.

review: Approve
Revision history for this message
Andrew Wilkins (axwalk) wrote :

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'provider/maas/instance.go'
2--- provider/maas/instance.go 2013-09-04 15:11:51 +0000
3+++ provider/maas/instance.go 2013-09-09 07:06:26 +0000
4@@ -4,6 +4,8 @@
5 package maas
6
7 import (
8+ "fmt"
9+
10 "launchpad.net/gomaasapi"
11
12 "launchpad.net/juju-core/instance"
13@@ -17,6 +19,15 @@
14
15 var _ instance.Instance = (*maasInstance)(nil)
16
17+func (mi *maasInstance) String() string {
18+ hostname, err := mi.DNSName()
19+ if err != nil {
20+ // This is meant to be impossible, but be paranoid.
21+ hostname = fmt.Sprintf("<DNSName failed: %q>", err)
22+ }
23+ return fmt.Sprintf("%s:%s", hostname, mi.Id())
24+}
25+
26 func (mi *maasInstance) Id() instance.Id {
27 // Use the node's 'resource_uri' value.
28 return instance.Id(mi.maasObject.URI().String())
29
30=== modified file 'provider/maas/instance_test.go'
31--- provider/maas/instance_test.go 2013-09-04 15:11:51 +0000
32+++ provider/maas/instance_test.go 2013-09-09 07:06:26 +0000
33@@ -4,6 +4,8 @@
34 package maas
35
36 import (
37+ "fmt"
38+
39 gc "launchpad.net/gocheck"
40
41 "launchpad.net/juju-core/instance"
42@@ -25,6 +27,25 @@
43 c.Check(string(instance.Id()), gc.Equals, resourceURI)
44 }
45
46+func (s *instanceTest) TestString(c *gc.C) {
47+ jsonValue := `{"hostname": "thethingintheplace", "system_id": "system_id", "test": "test"}`
48+ obj := s.testMAASObject.TestServer.NewNode(jsonValue)
49+ instance := &maasInstance{&obj, s.environ}
50+ hostname, err := instance.DNSName()
51+ c.Assert(err, gc.IsNil)
52+ expected := hostname + ":" + string(instance.Id())
53+ c.Assert(fmt.Sprint(instance), gc.Equals, expected)
54+
55+ // For good measure, test what happens if we don't have a hostname.
56+ jsonValue = `{"system_id": "system_id", "test": "test"}`
57+ obj = s.testMAASObject.TestServer.NewNode(jsonValue)
58+ instance = &maasInstance{&obj, s.environ}
59+ hostname, err = instance.DNSName()
60+ c.Assert(err, gc.NotNil)
61+ expected = fmt.Sprintf("<DNSName failed: %q>", err) + ":" + string(instance.Id())
62+ c.Assert(fmt.Sprint(instance), gc.Equals, expected)
63+}
64+
65 func (s *instanceTest) TestRefreshInstance(c *gc.C) {
66 jsonValue := `{"system_id": "system_id", "test": "test"}`
67 obj := s.testMAASObject.TestServer.NewNode(jsonValue)

Subscribers

People subscribed via source and target branches

to status/vote changes: