aboutsummaryrefslogtreecommitdiffstats
path: root/os_net_config/utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'os_net_config/utils.py')
-rw-r--r--os_net_config/utils.py49
1 files changed, 45 insertions, 4 deletions
diff --git a/os_net_config/utils.py b/os_net_config/utils.py
index cd7ee65..e51d197 100644
--- a/os_net_config/utils.py
+++ b/os_net_config/utils.py
@@ -14,35 +14,76 @@
# License for the specific language governing permissions and limitations
# under the License.
+import glob
import logging
logger = logging.getLogger(__name__)
+_SYS_CLASS_NET = '/sys/class/net'
def write_config(filename, data):
- with open(filename, "w") as f:
+ with open(filename, 'w') as f:
f.write(str(data))
def get_file_data(filename):
try:
- with open(filename, "r") as f:
+ with open(filename, 'r') as f:
return f.read()
except IOError:
logger.error("Error reading file: %s" % filename)
- return ""
+ return ''
def interface_mac(name):
try:
- with open('/sys/class/net/%s/address' % name, "r") as f:
+ with open('/sys/class/net/%s/address' % name, 'r') as f:
return f.read().rstrip()
except IOError:
logger.error("Unable to read file: %s" % name)
raise
+def _is_active_nic(interface_name):
+ try:
+ if interface_name == 'lo':
+ return False
+
+ addr_assign_type = None
+ with open(_SYS_CLASS_NET + '/%s/addr_assign_type' % interface_name,
+ 'r') as f:
+ addr_assign_type = int(f.read().rstrip())
+
+ carrier = None
+ with open(_SYS_CLASS_NET + '/%s/carrier' % interface_name, 'r') as f:
+ carrier = int(f.read().rstrip())
+
+ address = None
+ with open(_SYS_CLASS_NET + '/%s/address' % interface_name, 'r') as f:
+ address = f.read().rstrip()
+
+ if addr_assign_type == 0 and carrier == 1 and address:
+ return True
+ else:
+ return False
+ except IOError:
+ return False
+
+
+def ordered_active_nics():
+ embedded_nics = []
+ nics = []
+ for name in glob.iglob(_SYS_CLASS_NET + '/*'):
+ nic = name[(len(_SYS_CLASS_NET) + 1):]
+ if _is_active_nic(nic):
+ if nic.startswith('em') or nic.startswith('eth'):
+ embedded_nics.append(nic)
+ else:
+ nics.append(nic)
+ return sorted(embedded_nics) + sorted(nics)
+
+
def diff(filename, data):
file_data = get_file_data(filename)
logger.debug("Diff file data:\n%s" % file_data)