Skip to content

Commit a681a74

Browse files
fix #245
1 parent 3b6d5aa commit a681a74

File tree

2 files changed

+24
-1
lines changed

2 files changed

+24
-1
lines changed

collector/corosync/parser.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,7 @@ func parseMembers(quorumToolOutput []byte) (members []Member, err error) {
227227
/*
228228
1 1 A,V,NMW 192.168.125.24 (local)
229229
*/
230-
linesRE := regexp.MustCompile(`(?m)(?P<node_id>\w+)\s+(?P<votes>\d+)\s+(?P<qdevice>(\w,?)+)?\s+(?P<name>[\w-.]+)(?:\s(?P<local>\(local\)))?\n?`)
230+
linesRE := regexp.MustCompile(`(?m)(?P<node_id>\w+)\s+(?P<votes>\d+)\s+(?P<qdevice>(\w,?)+)?\s+(?P<name>[^\s]+)(?:\s(?P<local>\(local\)))?\n?`)
231231
linesMatches := linesRE.FindAllSubmatch(sectionMatch[1], -1)
232232
for _, match := range linesMatches {
233233
matches := extractRENamedCaptureGroups(linesRE, match)

collector/corosync/parser_test.go

+23
Original file line numberDiff line numberDiff line change
@@ -300,3 +300,26 @@ Membership information
300300
assert.True(t, members[1].Local)
301301
assert.EqualValues(t, 1, members[1].Votes)
302302
}
303+
304+
func TestParseMembersWithIpv6Hostnames(t *testing.T) {
305+
quorumToolOutput := []byte(`Quorum information
306+
Membership information
307+
----------------------
308+
Nodeid Votes Qdevice Name
309+
1 1 NR fe80:00:000:0000:1234:5678:ABCD:EF
310+
2 1 NR FE80:0:00:000:0000::1 (local)`)
311+
312+
members, err := parseMembers(quorumToolOutput)
313+
314+
assert.NoError(t, err)
315+
316+
assert.Len(t, members, 2)
317+
assert.Exactly(t, "1", members[0].Id)
318+
assert.Exactly(t, "fe80:00:000:0000:1234:5678:ABCD:EF", members[0].Name)
319+
assert.False(t, members[0].Local)
320+
assert.EqualValues(t, 1, members[0].Votes)
321+
assert.Exactly(t, "2", members[1].Id)
322+
assert.Exactly(t, "FE80:0:00:000:0000::1", members[1].Name)
323+
assert.True(t, members[1].Local)
324+
assert.EqualValues(t, 1, members[1].Votes)
325+
}

0 commit comments

Comments
 (0)