From b53cb04eb9d1f1e65100ce03f612e4523b759458 Mon Sep 17 00:00:00 2001 From: John Mulligan Date: Tue, 16 May 2023 19:44:34 -0400 Subject: [PATCH] mgr/cephadm: convert test_cephadm.py for new deploy Signed-off-by: John Mulligan --- src/pybind/mgr/cephadm/tests/test_cephadm.py | 334 ++++++++++++++----- 1 file changed, 243 insertions(+), 91 deletions(-) diff --git a/src/pybind/mgr/cephadm/tests/test_cephadm.py b/src/pybind/mgr/cephadm/tests/test_cephadm.py index b41c296a0fa..787b3f92f72 100644 --- a/src/pybind/mgr/cephadm/tests/test_cephadm.py +++ b/src/pybind/mgr/cephadm/tests/test_cephadm.py @@ -119,10 +119,7 @@ def with_osd_daemon(cephadm_module: CephadmOrchestrator, _run_cephadm, host: str assert _run_cephadm.mock_calls == [ mock.call(host, 'osd', 'ceph-volume', ['--', 'lvm', 'list', '--format', 'json'], no_fsid=False, error_ok=False, image='', log_output=True), - mock.call(host, f'osd.{osd_id}', 'deploy', - ['--name', f'osd.{osd_id}', '--meta-json', mock.ANY, - '--config-json', '-', '--osd-fsid', 'uuid'], - stdin=mock.ANY, image=''), + mock.call(host, f'osd.{osd_id}', ['_orch', 'deploy'], [], stdin=mock.ANY), mock.call(host, 'osd', 'ceph-volume', ['--', 'raw', 'list', '--format', 'json'], no_fsid=False, error_ok=False, image='', log_output=True), ] @@ -452,16 +449,37 @@ class TestCephadm(object): CephadmServe(cephadm_module)._check_daemons() _run_cephadm.assert_called_with( - 'test', 'mon.test', 'deploy', [ - '--name', 'mon.test', - '--meta-json', ('{"service_name": "mon", "ports": [], "ip": null, "deployed_by": [], "rank": null, ' - '"rank_generation": null, "extra_container_args": null, "extra_entrypoint_args": null}'), - '--config-json', '-', - '--reconfig', - ], - stdin='{"config": "[mon]\\nk=v\\n[mon.test]\\npublic network = 127.0.0.0/8\\n", ' - + '"keyring": "", "files": {"config": "[mon.test]\\npublic network = 127.0.0.0/8\\n"}}', - image='') + 'test', + 'mon.test', + ['_orch', 'deploy'], + [], + stdin=json.dumps({ + "fsid": "fsid", + "name": "mon.test", + "image": '', + "deploy_arguments": [], + "params": { + 'reconfig': True, + }, + "meta": { + 'service_name': 'mon', + 'ports': [], + 'ip': None, + 'deployed_by': [], + 'rank': None, + 'rank_generation': None, + 'extra_container_args': None, + 'extra_entrypoint_args': None, + }, + "config_blobs": { + "config": "[mon]\nk=v\n[mon.test]\npublic network = 127.0.0.0/8\n", + "keyring": "", + "files": { + "config": "[mon.test]\npublic network = 127.0.0.0/8\n" + }, + }, + }), + ) @mock.patch("cephadm.serve.CephadmServe._run_cephadm") def test_mon_crush_location_deployment(self, _run_cephadm, cephadm_module: CephadmOrchestrator): @@ -486,14 +504,35 @@ class TestCephadm(object): with with_service(cephadm_module, ServiceSpec(service_type='mon', crush_locations={'test': ['datacenter=a', 'rack=2']}), CephadmOrchestrator.apply_mon, 'test'): _run_cephadm.assert_called_with( - 'test', 'mon.test', 'deploy', [ - '--name', 'mon.test', - '--meta-json', '{"service_name": "mon", "ports": [], "ip": null, "deployed_by": [], "rank": null, "rank_generation": null, "extra_container_args": null, "extra_entrypoint_args": null}', - '--config-json', '-', - ], - stdin=('{"config": "[mon.test]\\npublic network = 127.0.0.0/8\\n", "keyring": "", ' - '"files": {"config": "[mon.test]\\npublic network = 127.0.0.0/8\\n"}, "crush_location": "datacenter=a"}'), - image='', + 'test', + 'mon.test', + ['_orch', 'deploy'], + [], + stdin=json.dumps({ + "fsid": "fsid", + "name": "mon.test", + "image": '', + "deploy_arguments": [], + "params": {}, + "meta": { + 'service_name': 'mon', + 'ports': [], + 'ip': None, + 'deployed_by': [], + 'rank': None, + 'rank_generation': None, + 'extra_container_args': None, + 'extra_entrypoint_args': None, + }, + "config_blobs": { + "config": "[mon.test]\npublic network = 127.0.0.0/8\n", + "keyring": "", + "files": { + "config": "[mon.test]\npublic network = 127.0.0.0/8\n", + }, + "crush_location": "datacenter=a", + }, + }), ) @mock.patch("cephadm.serve.CephadmServe._run_cephadm") @@ -502,16 +541,39 @@ class TestCephadm(object): with with_host(cephadm_module, 'test'): with with_service(cephadm_module, ServiceSpec(service_type='crash', extra_container_args=['--cpus=2', '--quiet']), CephadmOrchestrator.apply_crash): _run_cephadm.assert_called_with( - 'test', 'crash.test', 'deploy', [ - '--name', 'crash.test', - '--meta-json', ('{"service_name": "crash", "ports": [], "ip": null, "deployed_by": [], "rank": null, ' - '"rank_generation": null, "extra_container_args": ["--cpus=2", "--quiet"], "extra_entrypoint_args": null}'), - '--config-json', '-', - '--extra-container-args=--cpus=2', - '--extra-container-args=--quiet' - ], - stdin='{"config": "", "keyring": "[client.crash.test]\\nkey = None\\n"}', - image='', + 'test', + 'crash.test', + ['_orch', 'deploy'], + [], + stdin=json.dumps({ + "fsid": "fsid", + "name": "crash.test", + "image": '', + "deploy_arguments": [], + "params": { + 'extra_container_args': [ + "--cpus=2", + "--quiet", + ], + }, + "meta": { + 'service_name': 'crash', + 'ports': [], + 'ip': None, + 'deployed_by': [], + 'rank': None, + 'rank_generation': None, + 'extra_container_args': [ + "--cpus=2", + "--quiet", + ], + 'extra_entrypoint_args': None, + }, + "config_blobs": { + "config": "", + "keyring": "[client.crash.test]\nkey = None\n", + }, + }), ) @mock.patch("cephadm.serve.CephadmServe._run_cephadm") @@ -522,19 +584,37 @@ class TestCephadm(object): extra_entrypoint_args=['--collector.textfile.directory=/var/lib/node_exporter/textfile_collector', '--some-other-arg']), CephadmOrchestrator.apply_node_exporter): _run_cephadm.assert_called_with( - 'test', 'node-exporter.test', 'deploy', [ - '--name', 'node-exporter.test', - '--meta-json', ('{"service_name": "node-exporter", "ports": [9100], "ip": null, "deployed_by": [], "rank": null, ' - '"rank_generation": null, "extra_container_args": null, "extra_entrypoint_args": ' - '["--collector.textfile.directory=/var/lib/node_exporter/textfile_collector", ' - '"--some-other-arg"]}'), - '--config-json', '-', - '--tcp-ports', '9100', - '--extra-entrypoint-args=--collector.textfile.directory=/var/lib/node_exporter/textfile_collector', - '--extra-entrypoint-args=--some-other-arg' - ], - stdin='{}', - image='', + 'test', + 'node-exporter.test', + ['_orch', 'deploy'], + [], + stdin=json.dumps({ + "fsid": "fsid", + "name": "node-exporter.test", + "image": '', + "deploy_arguments": [], + "params": { + 'tcp_ports': [9100], + 'extra_entrypoint_args': [ + "--collector.textfile.directory=/var/lib/node_exporter/textfile_collector", + "--some-other-arg", + ], + }, + "meta": { + 'service_name': 'node-exporter', + 'ports': [9100], + 'ip': None, + 'deployed_by': [], + 'rank': None, + 'rank_generation': None, + 'extra_container_args': None, + 'extra_entrypoint_args': [ + "--collector.textfile.directory=/var/lib/node_exporter/textfile_collector", + "--some-other-arg", + ], + }, + "config_blobs": {}, + }), ) @mock.patch("cephadm.serve.CephadmServe._run_cephadm") @@ -546,21 +626,44 @@ class TestCephadm(object): extra_container_args=['--cpus=2', '--quiet']), CephadmOrchestrator.apply_node_exporter): _run_cephadm.assert_called_with( - 'test', 'node-exporter.test', 'deploy', [ - '--name', 'node-exporter.test', - '--meta-json', ('{"service_name": "node-exporter", "ports": [9100], "ip": null, "deployed_by": [], "rank": null, ' - '"rank_generation": null, "extra_container_args": ["--cpus=2", "--quiet"], "extra_entrypoint_args": ' - '["--collector.textfile.directory=/var/lib/node_exporter/textfile_collector", ' - '"--some-other-arg"]}'), - '--config-json', '-', - '--tcp-ports', '9100', - '--extra-container-args=--cpus=2', - '--extra-container-args=--quiet', - '--extra-entrypoint-args=--collector.textfile.directory=/var/lib/node_exporter/textfile_collector', - '--extra-entrypoint-args=--some-other-arg' - ], - stdin='{}', - image='', + 'test', + 'node-exporter.test', + ['_orch', 'deploy'], + [], + stdin=json.dumps({ + "fsid": "fsid", + "name": "node-exporter.test", + "image": '', + "deploy_arguments": [], + "params": { + 'tcp_ports': [9100], + 'extra_container_args': [ + "--cpus=2", + "--quiet", + ], + 'extra_entrypoint_args': [ + "--collector.textfile.directory=/var/lib/node_exporter/textfile_collector", + "--some-other-arg", + ], + }, + "meta": { + 'service_name': 'node-exporter', + 'ports': [9100], + 'ip': None, + 'deployed_by': [], + 'rank': None, + 'rank_generation': None, + 'extra_container_args': [ + "--cpus=2", + "--quiet", + ], + 'extra_entrypoint_args': [ + "--collector.textfile.directory=/var/lib/node_exporter/textfile_collector", + "--some-other-arg", + ], + }, + "config_blobs": {}, + }), ) @mock.patch("cephadm.serve.CephadmServe._run_cephadm") @@ -572,24 +675,48 @@ class TestCephadm(object): extra_container_args=['--cpus 2', '--container-arg-with-value value']), CephadmOrchestrator.apply_node_exporter): _run_cephadm.assert_called_with( - 'test', 'node-exporter.test', 'deploy', [ - '--name', 'node-exporter.test', - '--meta-json', ('{"service_name": "node-exporter", "ports": [9100], "ip": null, "deployed_by": [], "rank": null, ' - '"rank_generation": null, "extra_container_args": ["--cpus 2", "--container-arg-with-value value"], ' - '"extra_entrypoint_args": ["--entrypoint-arg-with-value value", "--some-other-arg 3"]}'), - '--config-json', '-', - '--tcp-ports', '9100', - '--extra-container-args=--cpus', - '--extra-container-args=2', - '--extra-container-args=--container-arg-with-value', - '--extra-container-args=value', - '--extra-entrypoint-args=--entrypoint-arg-with-value', - '--extra-entrypoint-args=value', - '--extra-entrypoint-args=--some-other-arg', - '--extra-entrypoint-args=3' - ], - stdin='{}', - image='', + 'test', + 'node-exporter.test', + ['_orch', 'deploy'], + [], + stdin=json.dumps({ + "fsid": "fsid", + "name": "node-exporter.test", + "image": '', + "deploy_arguments": [], + "params": { + 'tcp_ports': [9100], + 'extra_container_args': [ + "--cpus", + "2", + "--container-arg-with-value", + "value", + ], + 'extra_entrypoint_args': [ + "--entrypoint-arg-with-value", + "value", + "--some-other-arg", + "3", + ], + }, + "meta": { + 'service_name': 'node-exporter', + 'ports': [9100], + 'ip': None, + 'deployed_by': [], + 'rank': None, + 'rank_generation': None, + 'extra_container_args': [ + "--cpus 2", + "--container-arg-with-value value", + ], + 'extra_entrypoint_args': [ + "--entrypoint-arg-with-value value", + "--some-other-arg 3", + ], + }, + "config_blobs": {}, + }), ) @mock.patch("cephadm.serve.CephadmServe._run_cephadm") @@ -608,20 +735,45 @@ class TestCephadm(object): mount_path='/etc/test.conf'), CustomConfig(content='\n'.join(test_cert), mount_path='/usr/share/grafana/thing.crt') ] - conf_outs = [json.dumps(c.to_json()) for c in configs] - stdin_str = '{' + \ - f'"config": "", "keyring": "[client.crash.test]\\nkey = None\\n", "custom_config_files": [{conf_outs[0]}, {conf_outs[1]}]' + '}' + tc_joined = '\n'.join(test_cert) with with_host(cephadm_module, 'test'): with with_service(cephadm_module, ServiceSpec(service_type='crash', custom_configs=configs), CephadmOrchestrator.apply_crash): - _run_cephadm.assert_called_with( - 'test', 'crash.test', 'deploy', [ - '--name', 'crash.test', - '--meta-json', ('{"service_name": "crash", "ports": [], "ip": null, "deployed_by": [], "rank": null, ' - '"rank_generation": null, "extra_container_args": null, "extra_entrypoint_args": null}'), - '--config-json', '-', - ], - stdin=stdin_str, - image='', + _run_cephadm( + 'test', + 'crash.test', + ['_orch', 'deploy'], + [], + stdin=json.dumps({ + "fsid": "fsid", + "name": "crash.test", + "image": "", + "deploy_arguments": [], + "params": {}, + "meta": { + "service_name": "crash", + "ports": [], + "ip": None, + "deployed_by": [], + "rank": None, + "rank_generation": None, + "extra_container_args": None, + "extra_entrypoint_args": None, + }, + "config_blobs": { + "config": "", + "keyring": "[client.crash.test]\nkey = None\n", + "custom_config_files": [ + { + "content": "something something something", + "mount_path": "/etc/test.conf", + }, + { + "content": tc_joined, + "mount_path": "/usr/share/grafana/thing.crt", + }, + ] + } + }), ) @mock.patch("cephadm.serve.CephadmServe._run_cephadm", _run_cephadm('{}')) @@ -2086,7 +2238,7 @@ Traceback (most recent call last): if 'ceph-volume' in args: return (json.dumps(ceph_volume_lvm_list), '', 0) else: - assert 'deploy' in args + assert ['_orch', 'deploy'] in args raise OrchestratorError("let's fail somehow") _run_cephadm.side_effect = _r_c assert cephadm_module._osd_activate( -- 2.39.5