package org.zstack.storage.primary.local;
import org.springframework.http.HttpMethod;
import org.zstack.header.host.HostVO;
import org.zstack.header.identity.Action;
import org.zstack.header.message.APIEvent;
import org.zstack.header.message.APIMessage;
import org.zstack.header.message.APIParam;
import org.zstack.header.notification.ApiNotification;
import org.zstack.header.rest.APINoSee;
import org.zstack.header.rest.RestRequest;
import org.zstack.header.storage.primary.PrimaryStorageMessage;
import org.zstack.header.storage.primary.PrimaryStorageVO;
import org.zstack.header.volume.VolumeConstant;
import org.zstack.header.volume.VolumeVO;
/**
* Created by frank on 11/16/2015.
*/
@Action(category = VolumeConstant.ACTION_CATEGORY)
@RestRequest(
path = "/primary-storage/local-storage/volumes/{volumeUuid}/actions",
method = HttpMethod.PUT,
responseClass = APILocalStorageMigrateVolumeEvent.class,
isAction = true
)
public class APILocalStorageMigrateVolumeMsg extends APIMessage implements PrimaryStorageMessage {
@APIParam(resourceType = VolumeVO.class, checkAccount = true, operationTarget = true)
private String volumeUuid;
@APIParam(resourceType = HostVO.class)
private String destHostUuid;
@APINoSee
private String primaryStorageUuid;
public String getVolumeUuid() {
return volumeUuid;
}
public void setVolumeUuid(String volumeUuid) {
this.volumeUuid = volumeUuid;
}
public String getDestHostUuid() {
return destHostUuid;
}
public void setDestHostUuid(String destHostUuid) {
this.destHostUuid = destHostUuid;
}
@Override
public String getPrimaryStorageUuid() {
return primaryStorageUuid;
}
public void setPrimaryStorageUuid(String primaryStorageUuid) {
this.primaryStorageUuid = primaryStorageUuid;
}
public static APILocalStorageMigrateVolumeMsg __example__() {
APILocalStorageMigrateVolumeMsg msg = new APILocalStorageMigrateVolumeMsg();
msg.setVolumeUuid(uuid());
msg.setDestHostUuid(uuid());
return msg;
}
public ApiNotification __notification__() {
APIMessage that = this;
return new ApiNotification() {
@Override
public void after(APIEvent evt) {
if (evt.isSuccess()) {
ntfy("Migrated from primary storage[uuid:%s] to primary storage[uuid:%s]", primaryStorageUuid, destHostUuid)
.resource(volumeUuid, VolumeVO.class.getSimpleName())
.context("primaryStorageUuid", primaryStorageUuid)
.context("destHostUuid", destHostUuid)
.messageAndEvent(that, evt).done();
}
}
};
}
}