[Kimchi-devel] [PATCH 2/3] Implement function to check if NM is running.
Royce Lv
lvroyce at linux.vnet.ibm.com
Mon Apr 20 07:22:46 UTC 2015
On 04/18/2015 03:29 AM, Jose Ricardo Ziviani wrote:
> - NetworkManager does not (fully) support bridges yet and there is no
> portable/bullet-proof way to solve any possible issue that may happen
> to libvirt bridge creation due to NM problems.
> - This commit adds a new capability to inform the frontend whether the
> NM is running or not, so the frontend could inform the user about it.
>
> Signed-off-by: Jose Ricardo Ziviani <joserz at linux.vnet.ibm.com>
> ---
> src/kimchi/model/config.py | 1 +
> src/kimchi/model/featuretests.py | 28 ++++++++++++++++++++++++++++
> tests/test_rest.py | 3 ++-
> 3 files changed, 31 insertions(+), 1 deletion(-)
>
> diff --git a/src/kimchi/model/config.py b/src/kimchi/model/config.py
> index 1c43360..a417c9b 100644
> --- a/src/kimchi/model/config.py
> +++ b/src/kimchi/model/config.py
> @@ -140,6 +140,7 @@ class CapabilitiesModel(object):
> 'federation': kconfig.get("server", "federation"),
> 'auth': kconfig.get("authentication", "method"),
> 'kernel_vfio': self.kernel_vfio,
> + 'nm_running': FeatureTests.is_nm_running(),
> }
>
>
> diff --git a/src/kimchi/model/featuretests.py b/src/kimchi/model/featuretests.py
> index 4aac8ed..64f2c01 100644
> --- a/src/kimchi/model/featuretests.py
> +++ b/src/kimchi/model/featuretests.py
> @@ -223,3 +223,31 @@ class FeatureTests(object):
> kimchi_log.warning("Unable to load Kernal module vfio-pci.")
> return False
> return True
> +
> + @staticmethod
> + def is_nm_running():
> + '''Tries to determine whether NetworkManager is running.'''
> +
> + # force the language to original
> + env = {'LANG': 'C'}
Not sure why do we do this?
> +
> + nmcli = ['nmcli',
> + '-t',
> + '--fields',
> + 'running',
> + 'general',
> + 'status']
> +
> + # there are different ways to know if NM is running and it
> + # depends on the version, so if one command fails we try the
> + # next one. Otherwise we assume NM is not running.
> + out, _, rc = run_command(nmcli, timeout=1.0, env=env)
> + if rc != 0:
> + # change option from 'general' to 'nm'
> + nmcli[4] = 'nm'
> + out, _, rc = run_command(nmcli, timeout=1.0, env=env)
I'm thinking about whether we can use a cmd which does not differ from
version to version, such as "nmcli dev list"
> +
> + if rc == 0 and out.rstrip('\n') == 'running':
> + return True
> +
> + return False
> diff --git a/tests/test_rest.py b/tests/test_rest.py
> index 16ff41d..603e531 100644
> --- a/tests/test_rest.py
> +++ b/tests/test_rest.py
> @@ -1098,7 +1098,8 @@ class RestTests(unittest.TestCase):
>
> keys = [u'libvirt_stream_protocols', u'qemu_stream', u'qemu_spice',
> u'screenshot', u'system_report_tool', u'update_tool',
> - u'repo_mngt_tool', u'federation', u'kernel_vfio', u'auth']
> + u'repo_mngt_tool', u'federation', u'kernel_vfio', u'auth',
> + u'nm_running']
> self.assertEquals(sorted(keys), sorted(conf.keys()))
>
> def test_peers(self):
More information about the Kimchi-devel
mailing list