from tests import mock
-def set_store(self, k, v):
- if v is None:
- del self._store[k]
- else:
- self._store[k] = v
-
-
-def get_store(self, k):
- return self._store.get(k, None)
-
-
-def get_store_prefix(self, prefix):
- return {
- k: v for k, v in self._store.items()
- if k.startswith(prefix)
- }
-
def get_ceph_option(_, key):
return __file__
@pytest.yield_fixture()
def cephadm_module():
with mock.patch("cephadm.module.CephadmOrchestrator.get_ceph_option", get_ceph_option),\
- mock.patch("cephadm.module.CephadmOrchestrator._configure_logging", lambda *args: None),\
mock.patch("cephadm.module.CephadmOrchestrator.remote"),\
- mock.patch("cephadm.module.CephadmOrchestrator.set_store", set_store), \
- mock.patch("cephadm.module.CephadmOrchestrator.get_store", get_store),\
- mock.patch("cephadm.inventory.HostCache.save_host"), \
- mock.patch("cephadm.inventory.HostCache.rm_host"), \
mock.patch("cephadm.module.CephadmOrchestrator.send_command"), \
- mock.patch("cephadm.module.CephadmOrchestrator.mon_command", mon_command), \
- mock.patch("cephadm.module.CephadmOrchestrator.get_store_prefix", get_store_prefix):
+ mock.patch("cephadm.module.CephadmOrchestrator.mon_command", mon_command):
- CephadmOrchestrator._register_commands('')
- CephadmOrchestrator._register_options('')
m = CephadmOrchestrator.__new__ (CephadmOrchestrator)
- m._root_logger = mock.MagicMock()
- m._store = {
- 'ssh_config': '',
- 'ssh_identity_key': '',
- 'ssh_identity_pub': '',
- 'inventory': {},
- 'upgrade_state': None,
- }
m.__init__('cephadm', 0, 0)
m._cluster_fsid = "fsid"
- m.mode = "root"
yield m
except ImportError:
import mock
+ M_classes = set()
+
class M(object):
+ def _ceph_get_store(self, k):
+ return self._store.get(k, None)
+
+ def _ceph_set_store(self, k, v):
+ if v is None:
+ if k in self._store:
+ del self._store[k]
+ else:
+ self._store[k] = v
+
+ def _ceph_get_store_prefix(self, prefix):
+ return {
+ k: v for k, v in self._store.items()
+ if k.startswith(prefix)
+ }
+
+ def _ceph_get_module_option(self, module, key, localized_prefix: None):
+ return self._ceph_get_store(f'{module}/{key}')
+
+ def _ceph_set_module_option(self, module, key, val):
+ return self._ceph_set_store(f'{module}/{key}', val)
+
def __init__(self, *args):
+ self._store = {}
+
+ if self.__class__.__name__ not in M_classes:
+ # call those only once.
+ self._register_commands('')
+ self._register_options('')
+ M_classes.add(self.__class__.__name__)
+
super(M, self).__init__()
self._ceph_get_version = mock.Mock()
self._ceph_get = mock.MagicMock()
- self._ceph_get_module_option = mock.MagicMock()
self._ceph_get_option = mock.MagicMock()
- self._validate_module_option = lambda _: True
self._configure_logging = lambda *_: None
self._unconfigure_logging = mock.MagicMock()
self._ceph_log = mock.MagicMock()
- self._ceph_get_store = lambda _: ''
- self._ceph_get_store_prefix = lambda _: {}
self._ceph_dispatch_remote = lambda *_: None