@@ -178,6 +178,8 @@ public void handleMessage(Message msg) {
178178 handle ((BackupVmHostFileMsg ) msg );
179179 } else if (msg instanceof RestoreVmHostFileMsg ) {
180180 handle ((RestoreVmHostFileMsg ) msg );
181+ } else if (msg instanceof BackupVmHostFileOnHypervisorMsg ) {
182+ handle ((BackupVmHostFileOnHypervisorMsg ) msg );
181183 } else {
182184 bus .dealWithUnknownMessage (msg );
183185 }
@@ -938,4 +940,31 @@ public void fail(ErrorCode errorCode) {
938940 })
939941 .start ();
940942 }
943+
944+ private void handle (BackupVmHostFileOnHypervisorMsg msg ) {
945+ KvmCommandSender sender = new KvmCommandSender (msg .getHostUuid ());
946+
947+ KVMAgentCommands .BackupVmHostFileCmd cmd = new KVMAgentCommands .BackupVmHostFileCmd ();
948+ cmd .setVmHostFileBackupJobs (msg .getVmHostFileBackupJobs ());
949+
950+ BackupVmHostFileOnHypervisorReply reply = new BackupVmHostFileOnHypervisorReply ();
951+ sender .send (cmd , BACKUP_VM_HOST_FILE_PATH , wrapper -> {
952+ KVMAgentCommands .BackupVmHostFileResponse rsp = wrapper .getResponse (KVMAgentCommands .BackupVmHostFileResponse .class );
953+ return rsp .isSuccess () ? null :
954+ operr ("failed to backup vm host file on hypervisor[hostUuid=%s]" , msg .getHostUuid ())
955+ .withOpaque ("host.uuid" , msg .getHostUuid ())
956+ .withException (rsp .getError ());
957+ }, new ReturnValueCompletion <KvmResponseWrapper >(msg ) {
958+ @ Override
959+ public void success (KvmResponseWrapper wrapper ) {
960+ bus .reply (msg , reply );
961+ }
962+
963+ @ Override
964+ public void fail (ErrorCode errorCode ) {
965+ reply .setError (errorCode );
966+ bus .reply (msg , reply );
967+ }
968+ });
969+ }
941970}
0 commit comments