Merge lp:~therve/landscape-client/network-interface-flags into lp:~landscape/landscape-client/trunk

Proposed by Thomas Herve
Status: Merged
Approved by: Kevin McDermott
Approved revision: 259
Merged at revision: 255
Proposed branch: lp:~therve/landscape-client/network-interface-flags
Merge into: lp:~landscape/landscape-client/trunk
Diff against target: 93 lines (+32/-4)
4 files modified
landscape/lib/network.py (+14/-0)
landscape/lib/tests/test_network.py (+12/-3)
landscape/message_schemas.py (+2/-1)
landscape/monitor/tests/test_networkdevice.py (+4/-0)
To merge this branch: bzr merge lp:~therve/landscape-client/network-interface-flags
Reviewer Review Type Date Requested Status
Kevin McDermott (community) Approve
Jamu Kakar (community) Approve
Review via email: mp+27236@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Jamu Kakar (jkakar) wrote :

Looks good, +1!

review: Approve
Revision history for this message
Kevin McDermott (bigkevmcd) wrote :

Small branches are awesome :-)

+1

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'landscape/lib/network.py'
--- landscape/lib/network.py 2010-06-10 08:08:44 +0000
+++ landscape/lib/network.py 2010-06-10 09:09:33 +0000
@@ -10,6 +10,7 @@
1010
11# from header /usr/include/bits/ioctls.h11# from header /usr/include/bits/ioctls.h
12SIOCGIFCONF = 0x891212SIOCGIFCONF = 0x8912
13SIOCGIFFLAGS = 0x8913
13SIOCGIFNETMASK = 0x891b14SIOCGIFNETMASK = 0x891b
14SIOCGIFBRDADDR = 0x891915SIOCGIFBRDADDR = 0x8919
15SIOCGIFADDR = 0x891516SIOCGIFADDR = 0x8915
@@ -114,6 +115,18 @@
114 return "".join(["%02x:" % ord(char) for char in mac_address[18:24]])[:-1]115 return "".join(["%02x:" % ord(char) for char in mac_address[18:24]])[:-1]
115116
116117
118def get_flags(sock, interface):
119 """Return the integer value of the interface flags for the given interface.
120
121 @param sock: a socket instance.
122 @param interface: The name of the interface.
123 @see /usr/include/linux/if.h for the meaning of the flags.
124 """
125 data = fcntl.ioctl(
126 sock.fileno(), SIOCGIFFLAGS, struct.pack("256s", interface[:15]))
127 return struct.unpack("H", data[16:18])[0]
128
129
117def get_active_device_info():130def get_active_device_info():
118 """131 """
119 Returns a dictionary containing information on each active network132 Returns a dictionary containing information on each active network
@@ -128,6 +141,7 @@
128 interface_info["broadcast_address"] = get_broadcast_address(sock,141 interface_info["broadcast_address"] = get_broadcast_address(sock,
129 interface)142 interface)
130 interface_info["netmask"] = get_netmask(sock, interface)143 interface_info["netmask"] = get_netmask(sock, interface)
144 interface_info["flags"] = get_flags(sock, interface)
131 results.append(interface_info)145 results.append(interface_info)
132 del sock146 del sock
133 return results147 return results
134148
=== modified file 'landscape/lib/tests/test_network.py'
--- landscape/lib/tests/test_network.py 2010-06-10 08:08:44 +0000
+++ landscape/lib/tests/test_network.py 2010-06-10 09:09:33 +0000
@@ -26,9 +26,18 @@
26 self.assertTrue(device["interface"] in result)26 self.assertTrue(device["interface"] in result)
27 block = interface_blocks[device["interface"]]27 block = interface_blocks[device["interface"]]
28 self.assertTrue(device["netmask"] in block)28 self.assertTrue(device["netmask"] in block)
29 self.failUnlessIn(device["ip_address"], block)29 self.assertIn(device["ip_address"], block)
30 self.failUnlessIn(device["mac_address"].upper(), block)30 self.assertIn(device["mac_address"].upper(), block)
31 self.failUnlessIn(device["broadcast_address"], block)31 self.assertIn(device["broadcast_address"], block)
32 flags = device["flags"]
33 if flags & 1:
34 self.assertIn("UP", block)
35 if flags & 2:
36 self.assertIn("BROADCAST", block)
37 if flags & 64:
38 self.assertIn("RUNNING", block)
39 if flags & 4096:
40 self.assertIn("MULTICAST", block)
3241
33 def test_get_network_traffic(self):42 def test_get_network_traffic(self):
34 """43 """
3544
=== modified file 'landscape/message_schemas.py'
--- landscape/message_schemas.py 2010-05-13 10:29:37 +0000
+++ landscape/message_schemas.py 2010-06-10 09:09:33 +0000
@@ -364,7 +364,8 @@
364 "ip_address": String(),364 "ip_address": String(),
365 "mac_address": String(),365 "mac_address": String(),
366 "broadcast_address": String(),366 "broadcast_address": String(),
367 "netmask": String()}))})367 "netmask": String(),
368 "flags": Int()}))})
368369
369NETWORK_ACTIVITY = Message(370NETWORK_ACTIVITY = Message(
370 "network-activity",371 "network-activity",
371372
=== modified file 'landscape/monitor/tests/test_networkdevice.py'
--- landscape/monitor/tests/test_networkdevice.py 2010-05-04 17:23:45 +0000
+++ landscape/monitor/tests/test_networkdevice.py 2010-06-10 09:09:33 +0000
@@ -24,6 +24,10 @@
24 self.assertTrue(message["devices"][0]["interface"], "lo")24 self.assertTrue(message["devices"][0]["interface"], "lo")
25 self.assertTrue(message["devices"][0]["ip_address"], "0.0.0.0")25 self.assertTrue(message["devices"][0]["ip_address"], "0.0.0.0")
26 self.assertTrue(message["devices"][0]["netmask"], "255.0.0.0")26 self.assertTrue(message["devices"][0]["netmask"], "255.0.0.0")
27 flags = message["devices"][0]["flags"]
28 self.assertEqual(1, flags & 1) # UP
29 self.assertEqual(8, flags & 8) # LOOPBACK
30 self.assertEqual(64, flags & 64) # RUNNING
2731
28 def test_no_message_with_no_changes(self):32 def test_no_message_with_no_changes(self):
29 """If no device changes from the last message, no message is sent."""33 """If no device changes from the last message, no message is sent."""

Subscribers

People subscribed via source and target branches

to all changes: