cobbler/SOURCES/0013-Python-3-ethtool-and-i...

122 lines
3.0 KiB
Diff

From 4a23a3cc1b9d1ab1238aadbd7945aa93c21f7638 Mon Sep 17 00:00:00 2001
From: Tomas Kasparek <tkasparek@redhat.com>
Date: Mon, 5 Mar 2018 11:39:34 +0100
Subject: [PATCH 13/17] Python 3 ethtool and indentation fixes
---
koan/utils.py | 98 ++++++++++++++++++++++++++++++++---------------------------
1 file changed, 54 insertions(+), 44 deletions(-)
diff --git a/koan/utils.py b/koan/utils.py
index e202bd5..0cd48ea 100644
--- a/koan/utils.py
+++ b/koan/utils.py
@@ -367,50 +367,60 @@ def uniqify(lst, purge=None):
return list(temp.keys())
def get_network_info():
- try:
- import ethtool
- except:
- try:
- import rhpl.ethtool
- ethtool = rhpl.ethtool
- except:
- raise InfoException("the rhpl or ethtool module is required to use this feature (is your OS>=EL3?)")
-
- interfaces = {}
- # get names
- inames = ethtool.get_devices()
-
- for iname in inames:
- mac = ethtool.get_hwaddr(iname)
-
- if mac == "00:00:00:00:00:00":
- mac = "?"
-
- try:
- ip = ethtool.get_ipaddr(iname)
- if ip == "127.0.0.1":
- ip = "?"
- except:
- ip = "?"
-
- bridge = 0
- module = ""
-
- try:
- nm = ethtool.get_netmask(iname)
- except:
- nm = "?"
-
- interfaces[iname] = {
- "ip_address" : ip,
- "mac_address" : mac,
- "netmask" : nm,
- "bridge" : bridge,
- "module" : module
- }
-
- # print(interfaces)
- return interfaces
+ try: # python 2
+ import ethtool
+ ethtool_available = True
+ except ImportError: # python 3
+ import netifaces
+ ethtool_available = False
+
+ interfaces = {}
+ # get names
+ if ethtool_available:
+ inames = ethtool.get_devices()
+ else:
+ inames = netifaces.interfaces()
+
+ for iname in inames:
+ if ethtool_available:
+ mac = ethtool.get_hwaddr(iname)
+ else:
+ mac = netifaces.ifaddresses(iname)[netifaces.AF_LINK][0]['addr']
+
+ if mac == "00:00:00:00:00:00":
+ mac = "?"
+
+ try:
+ if ethtool_available:
+ ip = ethtool.get_ipaddr(iname)
+ else:
+ ip = netifaces.ifaddresses(iname)[netifaces.AF_INET][0]['addr']
+ if ip == "127.0.0.1":
+ ip = "?"
+ except:
+ ip = "?"
+
+ bridge = 0
+ module = ""
+
+ try:
+ if ethtool_available:
+ nm = ethtool.get_netmask(iname)
+ else:
+ nm = netifaces.ifaddresses(iname)[netifaces.AF_INET][0]['netmask']
+ except:
+ nm = "?"
+
+ interfaces[iname] = {
+ "ip_address" : ip,
+ "mac_address" : mac,
+ "netmask" : nm,
+ "bridge" : bridge,
+ "module" : module
+ }
+
+ # print(interfaces)
+ return interfaces
def connect_to_server(server=None,port=None):
--
2.5.5