def with_host(m: CephadmOrchestrator, name, refresh_hosts=True): # type: (CephadmOrchestrator, str) -> None wait(m, m.add_host(HostSpec(hostname=name))) if refresh_hosts: m._refresh_hosts_and_daemons() yield wait(m, m.remove_host(name))
def test_upgrade_run(use_repo_digest, cephadm_module: CephadmOrchestrator): with with_host(cephadm_module, 'test'): cephadm_module.set_container_image('global', 'from_image') if use_repo_digest: cephadm_module.use_repo_digest = True with with_service(cephadm_module, ServiceSpec('mgr'), CephadmOrchestrator.apply_mgr, 'test'): assert wait(cephadm_module, cephadm_module.upgrade_start( 'to_image', None)) == 'Initiating upgrade to to_image' assert wait(cephadm_module, cephadm_module.upgrade_status()).target_image == 'to_image' def _versions_mock(cmd): return json.dumps({ 'mgr': { 'myversion': 1 } }) cephadm_module._mon_command_mock_versions = _versions_mock with mock.patch("cephadm.module.CephadmOrchestrator._run_cephadm", _run_cephadm(json.dumps({ 'image_id': 'image_id', 'repo_digest': 'to_image@repo_digest', }))): cephadm_module.upgrade._do_upgrade() assert cephadm_module.upgrade_status is not None with mock.patch("cephadm.module.CephadmOrchestrator._run_cephadm", _run_cephadm( json.dumps([ dict( name=list(cephadm_module.cache.daemons['test'].keys())[0], style='cephadm', fsid='fsid', container_id='container_id', container_image_id='image_id', version='version', state='running', ) ]) )): cephadm_module._refresh_hosts_and_daemons() cephadm_module.upgrade._do_upgrade() _, image, _ = cephadm_module.check_mon_command({ 'prefix': 'config get', 'who': 'global', 'key': 'container_image', }) if use_repo_digest: assert image == 'to_image@repo_digest' else: assert image == 'to_image'