From b6a8c48097a497d4b58cbac58600b1398d607d33 Mon Sep 17 00:00:00 2001 From: Bryan Boreham Date: Tue, 19 May 2015 10:09:24 +0100 Subject: [PATCH 1/3] Tidy up IPAM parts of 'weave status' - removed detailed "free" and "owned" printout of 'space' - removed "free" counts from ring lines - limited usefulness and often out of date. - removed trailing newline - changed "Ring" to "Owned Ranges" - print subnet in CIDR format --- ipam/allocator.go | 16 ++++++++-------- ipam/ring/ring.go | 6 +++--- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/ipam/allocator.go b/ipam/allocator.go index 28f7f6c7..25c789c5 100644 --- a/ipam/allocator.go +++ b/ipam/allocator.go @@ -456,7 +456,7 @@ func (alloc *Allocator) actorLoop(actionChan <-chan func()) { func (alloc *Allocator) string() string { var buf bytes.Buffer - fmt.Fprintf(&buf, "Allocator subnet %s+%d\n", alloc.subnetStart.String(), alloc.subnetSize) + fmt.Fprintf(&buf, "Allocator subnet %s/%d\n", alloc.subnetStart.String(), alloc.prefixLen) if alloc.ring.Empty() { fmt.Fprintf(&buf, "Paxos: %s", alloc.paxos.String()) @@ -467,16 +467,16 @@ func (alloc *Allocator) string() string { fmt.Fprintf(&buf, " Free IPs: ~%.1f%%, %d local, ~%d remote\n", percentFree, localFreeSpace, remoteFreeSpace) + fmt.Fprint(&buf, "Owned Ranges:") alloc.ring.FprintWithNicknames(&buf, alloc.nicknames) - fmt.Fprintf(&buf, alloc.space.String()) if len(alloc.pendingAllocates)+len(alloc.pendingClaims) > 0 { fmt.Fprintf(&buf, "\nPending requests for ") - } - for _, op := range alloc.pendingAllocates { - fmt.Fprintf(&buf, "%s, ", op.String()) - } - for _, op := range alloc.pendingClaims { - fmt.Fprintf(&buf, "%s, ", op.String()) + for _, op := range alloc.pendingAllocates { + fmt.Fprintf(&buf, "%s, ", op.String()) + } + for _, op := range alloc.pendingClaims { + fmt.Fprintf(&buf, "%s, ", op.String()) + } } } return buf.String() diff --git a/ipam/ring/ring.go b/ipam/ring/ring.go index e4780300..7590a3ce 100644 --- a/ipam/ring/ring.go +++ b/ipam/ring/ring.go @@ -347,20 +347,20 @@ func (r *Ring) ClaimItAll() { } func (r *Ring) FprintWithNicknames(w io.Writer, m map[router.PeerName]string) { - fmt.Fprintf(w, "Ring [%s, %s)\n", r.Start, r.End) for _, entry := range r.Entries { nickname, found := m[entry.Peer] if found { nickname = fmt.Sprintf(" (%s)", nickname) } - fmt.Fprintf(w, " %s -> %s%s (version: %d, free: %d)\n", entry.Token, - entry.Peer, nickname, entry.Version, entry.Free) + fmt.Fprintf(w, "\n %s -> %s%s (v%d)", entry.Token, + entry.Peer, nickname, entry.Version) } } func (r *Ring) String() string { var buffer bytes.Buffer + fmt.Fprintf(&buffer, "Ring [%s, %s)", r.Start, r.End) r.FprintWithNicknames(&buffer, make(map[router.PeerName]string)) return buffer.String() } From bffe9f811afbfb6ab3fff07f347fa910da0ab1c2 Mon Sep 17 00:00:00 2001 From: Bryan Boreham Date: Tue, 19 May 2015 10:35:10 +0100 Subject: [PATCH 2/3] Document 'weave status' section for IPAM --- site/ipam.md | 32 ++++++++++++++++++++++++++++++++ site/troubleshooting.md | 4 ++++ 2 files changed, 36 insertions(+) diff --git a/site/ipam.md b/site/ipam.md index ba8a4cb4..bc52dd23 100644 --- a/site/ipam.md +++ b/site/ipam.md @@ -115,3 +115,35 @@ brackets, like this: So, in our example, we could equivalently do: host1$ weave rmpeer ea:6c:21:09:cf:f0 + +## Troubleshooting + +The command + + weave status + +reports on the current status of the weave router and IP allocator: + +```` +weave router git-8f675f15c0b5 +... +Allocator subnet 10.2.1.0/24 + Free IPs: ~98.0%, 62 local, ~189 remote +Owned Ranges: + 10.2.1.1 -> 96:e9:e2:2e:2d:bc (host1) (v3) + 10.2.1.128 -> ea:84:25:9b:31:2e (host2) (v3) + 10.2.1.192 -> ea:6c:21:09:cf:f0 (host3) (v9) +```` + +The first section covers the router; see the troubleshooting guide in +the main documentation for full details. + +The 'Allocator' section, which is only present if weave has been +started with the `-iprange` option, summarises the overal position and +lists which address ranges have been assigned to which peer. Each +range begins at the address shown and ends just before the next +address, or wraps around at the end of the subnet. The 'v' number +denotes how many times that entry has been updated. + +The 'Free IPs' information may be out of date with respect to changes +happening elsewhere in the network. diff --git a/site/troubleshooting.md b/site/troubleshooting.md index c12653a3..bca3fa28 100644 --- a/site/troubleshooting.md +++ b/site/troubleshooting.md @@ -126,6 +126,10 @@ not currently connected to. Each line contains some information about what went wrong the last time; whether it is attempting to connect or is waiting for a while before connecting again. +There may also be further sections for +[IP allocator](ipam.html#troubleshooting) and +[weaveDNS](weavedns.html#troubleshooting). + ### List attached containers weave ps From 9363193fe8aafd21d0a9f701d85cdb9d334a037a Mon Sep 17 00:00:00 2001 From: Bryan Boreham Date: Tue, 19 May 2015 11:13:05 +0100 Subject: [PATCH 3/3] Review feedback --- site/ipam.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/site/ipam.md b/site/ipam.md index bc52dd23..e1ca81b9 100644 --- a/site/ipam.md +++ b/site/ipam.md @@ -135,11 +135,11 @@ Owned Ranges: 10.2.1.192 -> ea:6c:21:09:cf:f0 (host3) (v9) ```` -The first section covers the router; see the troubleshooting guide in -the main documentation for full details. +The first section covers the router; see the [troubleshooting +guide](troubleshooting.html#status-report) for full details. The 'Allocator' section, which is only present if weave has been -started with the `-iprange` option, summarises the overal position and +started with the `-iprange` option, summarises the overall position and lists which address ranges have been assigned to which peer. Each range begins at the address shown and ends just before the next address, or wraps around at the end of the subnet. The 'v' number