Merge lp:~mpontillo/maas/discovery-view-rdns--bug-1633822--part3 into lp:maas/trunk

Proposed by Mike Pontillo on 2016-10-20
Status: Merged
Approved by: Mike Pontillo on 2016-10-24
Approved revision: 5509
Merged at revision: 5507
Proposed branch: lp:~mpontillo/maas/discovery-view-rdns--bug-1633822--part3
Merge into: lp:maas/trunk
Prerequisite: lp:~mpontillo/maas/rdns-service--bug-1633822--part2
Diff against target: 64 lines (+27/-2)
2 files modified
src/maasserver/dbviews.py (+5/-2)
src/maasserver/models/tests/test_discovery.py (+22/-0)
To merge this branch: bzr merge lp:~mpontillo/maas/discovery-view-rdns--bug-1633822--part3
Reviewer Review Type Date Requested Status
Gavin Panella (community) 2016-10-20 Approve on 2016-10-24
Review via email: mp+308980@code.launchpad.net

This proposal supersedes a proposal from 2016-10-20.

Commit Message

Update discovery view so that reverse-DNS entries are displayed in the dashboard.

Description of the Change

Resubmitting due to weird artifacts from previous branches showing up in the diff.

To post a comment you must log in.
5509. By Mike Pontillo on 2016-10-21

Merge rdns-service--bug-1633822--part2.

Gavin Panella (allenap) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/maasserver/dbviews.py'
2--- src/maasserver/dbviews.py 2016-10-04 18:30:11 +0000
3+++ src/maasserver/dbviews.py 2016-10-21 01:24:17 +0000
4@@ -55,7 +55,8 @@
5 neigh.created AS first_seen,
6 GREATEST(neigh.updated, mdns.updated) AS last_seen,
7 mdns.id AS mdns_id,
8- mdns.hostname AS hostname,
9+ -- Trust reverse-DNS more than multicast DNS.
10+ COALESCE(rdns.hostname, mdns.hostname) AS hostname,
11 node.id AS observer_id,
12 node.system_id AS observer_system_id,
13 node.hostname AS observer_hostname, -- This will be the rack hostname.
14@@ -81,6 +82,7 @@
15 JOIN maasserver_vlan vlan ON iface.vlan_id = vlan.id
16 JOIN maasserver_fabric fabric ON vlan.fabric_id = fabric.id
17 LEFT OUTER JOIN maasserver_mdns mdns ON mdns.ip = neigh.ip
18+ LEFT OUTER JOIN maasserver_rdns rdns ON rdns.ip = neigh.ip
19 LEFT OUTER JOIN maasserver_subnet subnet ON (
20 vlan.id = subnet.vlan_id
21 -- This checks if the IP address is within a known subnet.
22@@ -90,7 +92,8 @@
23 neigh.mac_address,
24 neigh.ip,
25 neigh.updated DESC, -- We want the most recently seen neighbour.
26- mdns.updated DESC, -- We want the most recently seen hostname.
27+ rdns.updated DESC, -- We want the most recently seen reverse DNS entry.
28+ mdns.updated DESC, -- We want the most recently seen mDNS hostname.
29 subnet_prefixlen DESC -- We want the best-match CIDR.
30 """)
31
32
33=== modified file 'src/maasserver/models/tests/test_discovery.py'
34--- src/maasserver/models/tests/test_discovery.py 2016-09-29 01:39:17 +0000
35+++ src/maasserver/models/tests/test_discovery.py 2016-10-21 01:24:17 +0000
36@@ -126,6 +126,28 @@
37 discovery = Discovery.objects.first()
38 self.assertThat(discovery.is_external_dhcp, Equals(True))
39
40+ def test__exposes_mdns_when_nothing_better_available(self):
41+ rack = factory.make_RackController()
42+ iface = factory.make_Interface(node=rack)
43+ ip = factory.make_ip_address(ipv6=False)
44+ mdns_hostname = factory.make_hostname()
45+ factory.make_Discovery(interface=iface, ip=ip)
46+ factory.make_MDNS(hostname=mdns_hostname, ip=ip, interface=iface)
47+ discovery = Discovery.objects.first()
48+ self.assertThat(discovery.hostname, Equals(mdns_hostname))
49+
50+ def test__prefers_rdns_to_mdns(self):
51+ rack = factory.make_RackController()
52+ iface = factory.make_Interface(node=rack)
53+ ip = factory.make_ip_address(ipv6=False)
54+ mdns_hostname = factory.make_hostname()
55+ rdns_hostname = factory.make_hostname()
56+ factory.make_Discovery(interface=iface, ip=ip)
57+ factory.make_MDNS(hostname=mdns_hostname, ip=ip, interface=iface)
58+ factory.make_RDNS(hostname=rdns_hostname, ip=ip, observer=rack)
59+ discovery = Discovery.objects.first()
60+ self.assertThat(discovery.hostname, Equals(rdns_hostname))
61+
62
63 class TestDiscoveryManagerClear(MAASServerTestCase):
64 """Tests for `DiscoveryManager.clear` """