def config(self, spec: IscsiServiceSpec, daemon_id: str) -> None: # type: ignore assert self.TYPE == spec.service_type assert spec.pool self.mgr._check_pool_exists(spec.pool, spec.service_name()) # TODO: remove this: logger.info('Saving service %s spec with placement %s' % (spec.service_name(), spec.placement.pretty_str())) self.mgr.spec_store.save(spec)
def test_iscsi_client_caps(self): mgr = FakeMgr() iscsi_service = self._get_services(mgr)['iscsi'] iscsi_spec = IscsiServiceSpec(service_type='iscsi', service_id="a") iscsi_spec.daemon_type = "iscsi" iscsi_spec.daemon_id = "a" iscsi_spec.spec = MagicMock() iscsi_spec.spec.daemon_type = "iscsi" iscsi_spec.spec.ssl_cert = '' mgr.spec_store = MagicMock() mgr.spec_store.__getitem__.return_value = iscsi_spec iscsi_daemon_spec = CephadmDaemonDeploySpec( host='host', daemon_id='a', service_name=iscsi_spec.service_name()) iscsi_service.prepare_create(iscsi_daemon_spec) expected_caps = ['mon', 'profile rbd, allow command "osd blocklist", allow command "config-key get" with "key" prefix "iscsi/"', 'mgr', 'allow command "service status"', 'osd', 'allow rwx'] expected_call = call({'prefix': 'auth get-or-create', 'entity': 'client.iscsi.a', 'caps': expected_caps}) expected_call2 = call({'prefix': 'auth caps', 'entity': 'client.iscsi.a', 'caps': expected_caps}) assert expected_call in mgr.mon_command.mock_calls assert expected_call2 in mgr.mon_command.mock_calls