Blob Blame History Raw
From 60dd21358c94c7bae08410100af99cd5eb34ecc6 Mon Sep 17 00:00:00 2001
From: Fernando Fernandez Mancera <ffmancera@riseup.net>
Date: Mon, 2 Mar 2020 14:30:09 +0100
Subject: [PATCH] ActiveConnection: Handle uninitialized device

Handle `ActiveConnection._nmdev` being None. This should fix a Traceback
when the openvswitch service is not running:

Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/libnmstate/nm/connection.py", line 226, in _active_connection_callback
    ac.devname, ac.reason
  File "/usr/lib/python3.6/site-packages/libnmstate/nm/active_connection.py", line 171, in devname
    return self._nmdev.get_iface()
AttributeError: 'NoneType' object has no attribute 'get_iface'

Signed-off-by: Fernando Fernandez Mancera <ffmancera@riseup.net>
---
 libnmstate/nm/active_connection.py | 16 +++++++++-------
 libnmstate/nm/connection.py        |  2 +-
 2 files changed, 10 insertions(+), 8 deletions(-)

diff --git a/libnmstate/nm/active_connection.py b/libnmstate/nm/active_connection.py
index 7b70b2a..c81ee2b 100644
--- a/libnmstate/nm/active_connection.py
+++ b/libnmstate/nm/active_connection.py
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2019 Red Hat, Inc.
+# Copyright (c) 2019-2020 Red Hat, Inc.
 #
 # This file is part of nmstate
 #
@@ -86,7 +86,7 @@ class ActiveConnection:
             if self._mainloop.is_action_canceled(e):
                 logging.debug(
                     "Connection deactivation aborted on %s: error=%s",
-                    self._nmdev.get_iface(),
+                    self.devname,
                     e,
                 )
             else:
@@ -105,20 +105,19 @@ class ActiveConnection:
                 else:
                     self._mainloop.quit(
                         "Connection deactivation failed on {}: "
-                        "error={}".format(self._nmdev.get_iface(), e)
+                        "error={}".format(self.devname, e)
                     )
                     return
 
         if success:
             logging.debug(
-                "Connection deactivation succeeded on %s",
-                self._nmdev.get_iface(),
+                "Connection deactivation succeeded on %s", self.devname,
             )
             self._mainloop.execute_next_action()
         else:
             self._mainloop.quit(
                 "Connection deactivation failed on %s: error=unknown"
-                % self._nmdev.get_iface()
+                % self.devname
             )
 
     @property
@@ -168,7 +167,10 @@ class ActiveConnection:
 
     @property
     def devname(self):
-        return self._nmdev.get_iface()
+        if self._nmdev:
+            return self._nmdev.get_iface()
+        else:
+            return None
 
     @property
     def nmdevice(self):
diff --git a/libnmstate/nm/connection.py b/libnmstate/nm/connection.py
index 3dc1ee1..2076734 100644
--- a/libnmstate/nm/connection.py
+++ b/libnmstate/nm/connection.py
@@ -223,7 +223,7 @@ class ConnectionProfile:
             else:
                 self._mainloop.quit(
                     "Connection activation failed on {}: reason={}".format(
-                        ac.devname, ac.reason
+                        devname, ac.reason
                     )
                 )
 
-- 
2.24.1