package org.zstack.header.vm;
import org.springframework.http.HttpMethod;
import org.zstack.header.cluster.ClusterVO;
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.RestRequest;
/**
* @api start a vm instance
* @cli
* @httpMsg {
* "org.zstack.header.vm.APIStartVmInstanceMsg": {
* "uuid": "a57042713a3d4cdbb99c7c98b6628da8",
* "session": {
* "uuid": "9f08a11275d647b3a96c1c9766d8a4a4"
* }
* }
* }
* @msg {
* "org.zstack.header.vm.APIStartVmInstanceMsg": {
* "uuid": "a57042713a3d4cdbb99c7c98b6628da8",
* "session": {
* "uuid": "9f08a11275d647b3a96c1c9766d8a4a4"
* },
* "timeout": 1800000,
* "id": "c685c27b821649d29added08e7fecdc2",
* "serviceId": "api.portal"
* }
* }
* @result See :ref:`APIStartVmInstanceEvent`
* @since 0.1.0
*/
@Action(category = VmInstanceConstant.ACTION_CATEGORY)
@RestRequest(
path = "/vm-instances/{uuid}/actions",
method = HttpMethod.PUT,
responseClass = APIStartVmInstanceEvent.class,
isAction = true
)
public class APIStartVmInstanceMsg extends APIMessage implements VmInstanceMessage {
/**
* @desc vm uuid
*/
@APIParam(resourceType = VmInstanceVO.class, checkAccount = true, operationTarget = true)
private String uuid;
@APIParam(resourceType = ClusterVO.class, required = false)
private String clusterUuid;
@APIParam(resourceType = HostVO.class, required = false)
private String hostUuid;
public String getClusterUuid() {
return clusterUuid;
}
public void setClusterUuid(String clusterUuid) {
this.clusterUuid = clusterUuid;
}
public String getHostUuid() {
return hostUuid;
}
public void setHostUuid(String hostUuid) {
this.hostUuid = hostUuid;
}
public String getUuid() {
return uuid;
}
public void setUuid(String uuid) {
this.uuid = uuid;
}
@Override
public String getVmInstanceUuid() {
return getUuid();
}
public static APIStartVmInstanceMsg __example__() {
APIStartVmInstanceMsg msg = new APIStartVmInstanceMsg();
msg.uuid = uuid();
return msg;
}
public ApiNotification __notification__() {
APIMessage that = this;
return new ApiNotification() {
@Override
public void after(APIEvent evt) {
ntfy("Started").resource(uuid, VmInstanceVO.class.getSimpleName())
.messageAndEvent(that, evt).done();
}
};
}
}