package org.zstack.header.storage.primary;
import org.springframework.http.HttpMethod;
import org.zstack.header.cluster.ClusterVO;
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;
/**
* @api attach primary storage to a cluster
* @cli
* @httpMsg {
* "org.zstack.header.storage.primary.APIAttachPrimaryStorageMsg": {
* "clusterUuid": "15ae59ce1b25420696636d8ea05219ce",
* "primaryStorageUuid": "d654fecb02ab4e6db13d681baccdd9b4",
* "session": {
* "uuid": "5f9bf4b3af1b46bbacfafc754e9a3e81"
* }
* }
* }
* @msg {
* "org.zstack.header.storage.primary.APIAttachPrimaryStorageMsg": {
* "clusterUuid": "15ae59ce1b25420696636d8ea05219ce",
* "primaryStorageUuid": "d654fecb02ab4e6db13d681baccdd9b4",
* "session": {
* "uuid": "5f9bf4b3af1b46bbacfafc754e9a3e81"
* },
* "id": "fc55eb9b37df40d3b9bd63963623313f",
* "timeout": 1800000,
* "serviceId": "api.portal"
* }
* }
* @result see :ref:`APIAttachPrimaryStorageEvent`
* @since 0.1.0
*/
@RestRequest(
path = "/clusters/{clusterUuid}/primary-storage/{primaryStorageUuid}",
method = HttpMethod.POST,
responseClass = APIAttachPrimaryStorageToClusterEvent.class
)
public class APIAttachPrimaryStorageToClusterMsg extends APIMessage implements PrimaryStorageMessage {
/**
* @desc uuid of cluster this primary storage is attaching to
*/
@APIParam(resourceType = ClusterVO.class)
private String clusterUuid;
/**
* @desc primary storage uuid
*/
@APIParam(resourceType = PrimaryStorageVO.class)
private String primaryStorageUuid;
public APIAttachPrimaryStorageToClusterMsg() {
}
public APIAttachPrimaryStorageToClusterMsg(String clusterUuid, String uuid) {
super();
this.clusterUuid = clusterUuid;
this.primaryStorageUuid = uuid;
}
public String getClusterUuid() {
return clusterUuid;
}
public void setClusterUuid(String clusterUuid) {
this.clusterUuid = clusterUuid;
}
@Override
public String getPrimaryStorageUuid() {
return primaryStorageUuid;
}
public void setPrimaryStorageUuid(String primaryStorageUuid) {
this.primaryStorageUuid = primaryStorageUuid;
}
public static APIAttachPrimaryStorageToClusterMsg __example__() {
APIAttachPrimaryStorageToClusterMsg msg = new APIAttachPrimaryStorageToClusterMsg();
msg.setPrimaryStorageUuid(uuid());
msg.setClusterUuid(uuid());
return msg;
}
public ApiNotification __notification__() {
APIMessage that = this;
return new ApiNotification() {
@Override
public void after(APIEvent evt) {
if (evt.isSuccess()) {
ntfy("Attached to cluster[uuid:%s]", clusterUuid).resource(primaryStorageUuid, PrimaryStorageVO.class.getSimpleName())
.context("clusterUuid", clusterUuid)
.messageAndEvent(that, evt).done();
ntfy("Attached to primary storage[uuid:%s]", primaryStorageUuid).resource(clusterUuid, ClusterVO.class.getSimpleName())
.context("primaryStorageUuid", primaryStorageUuid)
.messageAndEvent(that, evt).done();
}
}
};
}
}