package org.zstack.header.host;
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;
/**
* @api change host state. When host state is Disabled, no vm can be created on this host.
* @cli
* @httpMsg {
* "org.zstack.header.host.APIChangeHostStateMsg": {
* "session": {
* "uuid": "7dd11952b3c94fd5bbe94a140d7fbac6"
* },
* "uuid": "5ea9605b1d754077b2c9dfca05fc904b",
* "stateEvent": "disable"
* }
* }
* @msg {
* "org.zstack.header.host.APIChangeHostStateMsg": {
* "uuid": "5ea9605b1d754077b2c9dfca05fc904b",
* "stateEvent": "disable",
* "session": {
* "uuid": "7dd11952b3c94fd5bbe94a140d7fbac6"
* },
* "timeout": 1800000,
* "id": "11eb8fea18584e17a75b2072827f7a39",
* "serviceId": "host.e2c716e0f6bb4a7a99e4a60d10e57d4e"
* }
* }
* @result see :ref:`APIChangeHostStateEvent`
* @since 0.1.0
*/
@RestRequest(
path = "/hosts/{uuid}/actions",
isAction = true,
responseClass = APIChangeHostStateEvent.class,
method = HttpMethod.PUT
)
public class APIChangeHostStateMsg extends APIMessage implements HostMessage {
/**
* @desc host uuid
*/
@APIParam(resourceType = HostVO.class)
private String uuid;
/**
* @desc - enable: enable host
* - disable: disable host
* - maintain: putting host in to Maintenance
* <p>
* see state in :ref:`HostInventory` for details
* @choices - enable
* - disable
* - maintain
*/
@APIParam(validValues = {"enable", "disable", "maintain"})
private String stateEvent;
public APIChangeHostStateMsg() {
}
public APIChangeHostStateMsg(String uuid, String event) {
this.uuid = uuid;
this.stateEvent = event;
}
public String getUuid() {
return uuid;
}
public void setUuid(String uuid) {
this.uuid = uuid;
}
public String getStateEvent() {
return stateEvent;
}
public void setStateEvent(String stateEvent) {
this.stateEvent = stateEvent;
}
@Override
public String getHostUuid() {
return getUuid();
}
public static APIChangeHostStateMsg __example__() {
APIChangeHostStateMsg msg = new APIChangeHostStateMsg();
msg.setUuid(uuid());
msg.setStateEvent("enabled");
return msg;
}
public ApiNotification __notification__() {
APIMessage that = this;
return new ApiNotification() {
@Override
public void after(APIEvent evt) {
ntfy("Changed the state to %s", ((APIChangeHostStateEvent)evt).getInventory().getState())
.resource(uuid, HostVO.class.getSimpleName())
.messageAndEvent(that, evt).done();
}
};
}
}