package org.zstack.storage.primary.smp; import org.zstack.core.cloudbus.CloudBusCallBack; import org.zstack.core.gc.GC; import org.zstack.core.gc.GCCompletion; import org.zstack.core.gc.TimeBasedGarbageCollector; import org.zstack.header.message.MessageReply; import org.zstack.header.storage.primary.DeleteBitsOnPrimaryStorageMsg; import org.zstack.header.storage.primary.PrimaryStorageConstant; import org.zstack.header.storage.primary.PrimaryStorageVO; import org.zstack.header.volume.VolumeInventory; /** * Created by AlanJager on 2017/3/14. */ public class SMPDeleteVolumeGC extends TimeBasedGarbageCollector { @GC public String primaryStorageUuid; @GC public String hypervisorType; @GC public VolumeInventory volume; @Override protected void triggerNow(GCCompletion completion) { if (!dbf.isExist(primaryStorageUuid, PrimaryStorageVO.class)) { completion.cancel(); return; } DeleteBitsOnPrimaryStorageMsg msg = new DeleteBitsOnPrimaryStorageMsg(); msg.setInstallPath(volume.getInstallPath()); msg.setFolder(true); msg.setPrimaryStorageUuid(primaryStorageUuid); msg.setHypervisorType(hypervisorType); bus.makeTargetServiceIdByResourceUuid(msg, PrimaryStorageConstant.SERVICE_ID, primaryStorageUuid); bus.send(msg, new CloudBusCallBack(completion) { @Override public void run(MessageReply reply) { if (!reply.isSuccess()) { completion.fail(reply.getError()); } else { completion.success(); } } }); } }