From d4ce0ccacb3646ec628c238aade98d76b748a8cd Mon Sep 17 00:00:00 2001 From: Sebastian Wagner Date: Mon, 16 Dec 2019 12:19:03 +0100 Subject: [PATCH] cephadm: Fix Python2.7 isssue Signed-off-by: Sebastian Wagner --- src/cephadm/cephadm | 7 +++---- src/cephadm/tests/test_ceph_daemon.py | 10 ++++++++++ 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/cephadm/cephadm b/src/cephadm/cephadm index 2f436f8c43c4c..9fea0b3add05e 100755 --- a/src/cephadm/cephadm +++ b/src/cephadm/cephadm @@ -75,7 +75,7 @@ class Error(Exception): class Ceph(object): - daemons = ['mon', 'mgr', 'mds', 'osd', 'rgw', 'rbd-mirror'] + daemons = ('mon', 'mgr', 'mds', 'osd', 'rgw', 'rbd-mirror') class Monitoring(object): @@ -1497,7 +1497,7 @@ def command_deploy(): # type: () -> None (daemon_type, daemon_id) = args.name.split('.', 1) - supported_daemons = Ceph.daemons.copy() + supported_daemons = list(Ceph.daemons) supported_daemons.extend(Monitoring.components) if daemon_type not in supported_daemons: @@ -1991,14 +1991,13 @@ def command_check_host(): class CustomValidation(argparse.Action): def _check_name(self, values): - try: (daemon_type, daemon_id) = values.split('.', 1) except ValueError: raise argparse.ArgumentError(self, "must be of the format .. For example, osd.1 or prometheus.myhost.com") - daemons = Ceph.daemons.copy() + daemons = list(Ceph.daemons) daemons.extend(Monitoring.components.keys()) if daemon_type not in daemons: diff --git a/src/cephadm/tests/test_ceph_daemon.py b/src/cephadm/tests/test_ceph_daemon.py index db94ba5d099f8..8adafe6fb7f3d 100644 --- a/src/cephadm/tests/test_ceph_daemon.py +++ b/src/cephadm/tests/test_ceph_daemon.py @@ -1,8 +1,11 @@ +import argparse import mock import os import sys import unittest +import pytest + if sys.version_info >= (3, 3): from importlib.machinery import SourceFileLoader cd = SourceFileLoader('cephadm', 'cephadm').load_module() @@ -24,3 +27,10 @@ class TestCephDaemon(unittest.TestCase): p = cd._get_parser() args = p.parse_args(['version']) assert args.image == 'bar' + + def test_CustomValidation(self): + p = cd._get_parser() + assert p.parse_args(['deploy', '--name', 'mon.a', '--fsid', 'fsid']) + + with pytest.raises(SystemExit): + p.parse_args(['deploy', '--name', 'wrong', '--fsid', 'fsid']) -- 2.39.5