package org.zstack.header.storage.backup;
import org.springframework.http.HttpMethod;
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.RestRequest;
import org.zstack.header.zone.ZoneVO;
/**
* @api detach backup storage from a zone
* @cli
* @httpMsg {
* "org.zstack.header.storage.backup.APIDetachBackupStorageMsg": {
* "backupStorageUuid": "18421b64c18c458a8f362203c73593e1",
* "zoneUuid": "87f460f2045249638ba83c56e06f1d55",
* "session": {
* "uuid": "53f06ad106d24beaa8de9300242b409b"
* }
* }
* }
* @msg {
* "org.zstack.header.storage.backup.APIDetachBackupStorageMsg": {
* "backupStorageUuid": "18421b64c18c458a8f362203c73593e1",
* "zoneUuid": "87f460f2045249638ba83c56e06f1d55",
* "session": {
* "uuid": "53f06ad106d24beaa8de9300242b409b"
* },
* "timeout": 1800000,
* "id": "2e7cbc742e5147ff98e02abc64ac295f",
* "serviceId": "api.portal"
* }
* }
* @result see :ref:`APIDetachBackupStorageEvent`
* @since 0.1.0
*/
@RestRequest(
path = "/zones/{zoneUuid}/backup-storage/{backupStorageUuid}",
method = HttpMethod.DELETE,
responseClass = APIDetachBackupStorageFromZoneEvent.class
)
public class APIDetachBackupStorageFromZoneMsg extends APIMessage implements BackupStorageMessage {
/**
* @desc backup storage uuid
*/
@APIParam(resourceType = BackupStorageVO.class)
private String backupStorageUuid;
/**
* @desc zone uuid. See :ref:`ZoneInventory`
*/
@APIParam(resourceType = ZoneVO.class)
private String zoneUuid;
public APIDetachBackupStorageFromZoneMsg() {
}
public APIDetachBackupStorageFromZoneMsg(String uuid) {
super();
this.backupStorageUuid = uuid;
}
public void setBackupStorageUuid(String backupStorageUuid) {
this.backupStorageUuid = backupStorageUuid;
}
public String getZoneUuid() {
return zoneUuid;
}
public void setZoneUuid(String zoneUuid) {
this.zoneUuid = zoneUuid;
}
@Override
public String getBackupStorageUuid() {
return backupStorageUuid;
}
public static APIDetachBackupStorageFromZoneMsg __example__() {
APIDetachBackupStorageFromZoneMsg msg = new APIDetachBackupStorageFromZoneMsg();
msg.setBackupStorageUuid(uuid());
msg.setZoneUuid(uuid());
return msg;
}
public ApiNotification __notification__() {
APIMessage that = this;
return new ApiNotification() {
@Override
public void after(APIEvent evt) {
ntfy("Detached from a zone[uuid:%s]", zoneUuid).resource(backupStorageUuid, BackupStorageVO.class.getSimpleName())
.context("zoneUuid", zoneUuid)
.messageAndEvent(that, evt).done();
ntfy("Detached a backup storage[uuid:%s]", backupStorageUuid).resource(zoneUuid, ZoneVO.class.getSimpleName())
.context("backupStorageUuid", backupStorageUuid)
.messageAndEvent(that, evt).done();
}
};
}
}