diff --git a/server/src/main/java/org/apache/cloudstack/ca/CAManagerImpl.java b/server/src/main/java/org/apache/cloudstack/ca/CAManagerImpl.java index ff704707ffc..ab333645b2f 100644 --- a/server/src/main/java/org/apache/cloudstack/ca/CAManagerImpl.java +++ b/server/src/main/java/org/apache/cloudstack/ca/CAManagerImpl.java @@ -323,7 +323,9 @@ public class CAManagerImpl extends ManagerBase implements CAManager { provisionCertificateViaSsh(sshConnection, hostIp, host.getName(), caProvider); + SSHCmdHelper.sshExecuteCmd(sshConnection, "sudo service libvirtd restart"); SSHCmdHelper.sshExecuteCmd(sshConnection, "sudo service cloudstack-agent restart"); + return true; } catch (Exception e) { logger.error("Error during forced SSH provisioning for KVM host " + host.getUuid(), e); diff --git a/server/src/test/java/org/apache/cloudstack/ca/CAManagerImplTest.java b/server/src/test/java/org/apache/cloudstack/ca/CAManagerImplTest.java index 34b5d05d416..19c587a3416 100644 --- a/server/src/test/java/org/apache/cloudstack/ca/CAManagerImplTest.java +++ b/server/src/test/java/org/apache/cloudstack/ca/CAManagerImplTest.java @@ -290,6 +290,7 @@ public class CAManagerImplTest { Assert.assertTrue(result); Mockito.verify(caManager, Mockito.times(1)).provisionCertificateViaSsh(Mockito.any(Connection.class), Mockito.eq("192.168.1.1"), Mockito.eq("host1"), Mockito.eq("root")); + sshCmdHelperMock.verify(() -> SSHCmdHelper.sshExecuteCmd(Mockito.any(Connection.class), Mockito.eq("sudo service libvirtd restart")), Mockito.times(1)); sshCmdHelperMock.verify(() -> SSHCmdHelper.sshExecuteCmd(Mockito.any(Connection.class), Mockito.eq("sudo service cloudstack-agent restart")), Mockito.times(1)); } } diff --git a/ui/src/config/section/infra/hosts.js b/ui/src/config/section/infra/hosts.js index 2f27db5780b..48e850a22fb 100644 --- a/ui/src/config/section/infra/hosts.js +++ b/ui/src/config/section/infra/hosts.js @@ -103,7 +103,7 @@ export default { show: (record) => { return record.hypervisor === 'KVM' || record.hypervisor === store.getters.customHypervisorName }, - args: ['hostid'], + args: ['hostid', 'forced'], mapping: { hostid: { value: (record) => { return record.id }