diff --git a/src/main/kotlin/org/opensearch/commons/alerting/action/AlertingActions.kt b/src/main/kotlin/org/opensearch/commons/alerting/action/AlertingActions.kt index fcf98261..35f6d04c 100644 --- a/src/main/kotlin/org/opensearch/commons/alerting/action/AlertingActions.kt +++ b/src/main/kotlin/org/opensearch/commons/alerting/action/AlertingActions.kt @@ -24,6 +24,7 @@ object AlertingActions { const val INDEX_COMMENT_ACTION_NAME = "cluster:admin/opensearch/alerting/comments/write" const val SEARCH_COMMENTS_ACTION_NAME = "cluster:admin/opensearch/alerting/comments/search" const val DELETE_COMMENT_ACTION_NAME = "cluster:admin/opensearch/alerting/comments/delete" + const val TOGGLE_MONITOR_ACTION_NAME = "cluster:admin/opensearch/alerting/monitor/toggle" @JvmField val INDEX_MONITOR_ACTION_TYPE = @@ -88,4 +89,8 @@ object AlertingActions { @JvmField val DELETE_COMMENT_ACTION_TYPE = ActionType(DELETE_COMMENT_ACTION_NAME, ::DeleteCommentResponse) + + @JvmField + val TOGGLE_MONITOR_ACTION_TYPE = + ActionType(TOGGLE_MONITOR_ACTION_NAME, ::ToggleMonitorResponse) } diff --git a/src/main/kotlin/org/opensearch/commons/alerting/action/ToggleMonitorRequest.kt b/src/main/kotlin/org/opensearch/commons/alerting/action/ToggleMonitorRequest.kt new file mode 100644 index 00000000..5572b7b9 --- /dev/null +++ b/src/main/kotlin/org/opensearch/commons/alerting/action/ToggleMonitorRequest.kt @@ -0,0 +1,52 @@ +package org.opensearch.commons.alerting.action + +import org.opensearch.action.ActionRequest +import org.opensearch.action.ActionRequestValidationException +import org.opensearch.core.common.io.stream.StreamInput +import org.opensearch.core.common.io.stream.StreamOutput +import org.opensearch.rest.RestRequest +import java.io.IOException + +class ToggleMonitorRequest : ActionRequest { + val monitorId: String + val enabled: Boolean + val seqNo: Long + val primaryTerm: Long + val method: RestRequest.Method + + constructor( + monitorId: String, + enabled: Boolean, + seqNo: Long, + primaryTerm: Long, + method: RestRequest.Method + ) : super() { + this.monitorId = monitorId + this.enabled = enabled + this.seqNo = seqNo + this.primaryTerm = primaryTerm + this.method = method + } + + @Throws(IOException::class) + constructor(sin: StreamInput) : this ( + monitorId = sin.readString(), + enabled = sin.readBoolean(), + seqNo = sin.readLong(), + primaryTerm = sin.readLong(), + method = sin.readEnum(RestRequest.Method::class.java) + ) + + @Throws(IOException::class) + override fun writeTo(out: StreamOutput) { + out.writeString(monitorId) + out.writeBoolean(enabled) + out.writeLong(seqNo) + out.writeLong(primaryTerm) + out.writeEnum(method) + } + + override fun validate(): ActionRequestValidationException? { + return null + } +} diff --git a/src/main/kotlin/org/opensearch/commons/alerting/action/ToggleMonitorResponse.kt b/src/main/kotlin/org/opensearch/commons/alerting/action/ToggleMonitorResponse.kt new file mode 100644 index 00000000..0dfd9f19 --- /dev/null +++ b/src/main/kotlin/org/opensearch/commons/alerting/action/ToggleMonitorResponse.kt @@ -0,0 +1,64 @@ +package org.opensearch.commons.alerting.action + +import org.opensearch.commons.alerting.model.Monitor +import org.opensearch.commons.alerting.util.IndexUtils.Companion._ID +import org.opensearch.commons.alerting.util.IndexUtils.Companion._PRIMARY_TERM +import org.opensearch.commons.alerting.util.IndexUtils.Companion._SEQ_NO +import org.opensearch.commons.alerting.util.IndexUtils.Companion._VERSION +import org.opensearch.commons.notifications.action.BaseResponse +import org.opensearch.core.common.io.stream.StreamInput +import org.opensearch.core.common.io.stream.StreamOutput +import org.opensearch.core.xcontent.ToXContent.Params +import org.opensearch.core.xcontent.XContentBuilder +import java.io.IOException + +class ToggleMonitorResponse : BaseResponse { + var id: String + var version: Long + var seqNo: Long + var primaryTerm: Long + var monitor: Monitor + + constructor( + id: String, + version: Long, + seqNo: Long, + primaryTerm: Long, + monitor: Monitor + ) : super() { + this.id = id + this.version = version + this.seqNo = seqNo + this.primaryTerm = primaryTerm + this.monitor = monitor + } + + @Throws(IOException::class) + constructor(sin: StreamInput) : this( + sin.readString(), // id + sin.readLong(), // version + sin.readLong(), // seqNo + sin.readLong(), // primaryTerm + Monitor.readFrom(sin) as Monitor // monitor + ) + + @Throws(IOException::class) + override fun writeTo(out: StreamOutput) { + out.writeString(id) + out.writeLong(version) + out.writeLong(seqNo) + out.writeLong(primaryTerm) + monitor.writeTo(out) + } + + @Throws(IOException::class) + override fun toXContent(builder: XContentBuilder, params: Params): XContentBuilder { + return builder.startObject() + .field(_ID, id) + .field(_VERSION, version) + .field(_SEQ_NO, seqNo) + .field(_PRIMARY_TERM, primaryTerm) + .field("Monitor", monitor) + .endObject() + } +}