Skip to content

Commit

Permalink
feat: create request and response classes for monitor status update
Browse files Browse the repository at this point in the history
Signed-off-by: vikhy-aws <191836418+vikhy-aws@users.noreply.github.com>
  • Loading branch information
vikhy-aws committed Jan 16, 2025
1 parent cb9d38b commit 5307c44
Show file tree
Hide file tree
Showing 3 changed files with 121 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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 UPDATE_MONITOR_STATE_ACTION_NAME = "cluster:admin/opensearch/alerting/monitor/toggle"

@JvmField
val INDEX_MONITOR_ACTION_TYPE =
Expand Down Expand Up @@ -88,4 +89,8 @@ object AlertingActions {
@JvmField
val DELETE_COMMENT_ACTION_TYPE =
ActionType(DELETE_COMMENT_ACTION_NAME, ::DeleteCommentResponse)

@JvmField
val UPDATE_MONITOR_STATE_ACTION_TYPE =
ActionType(UPDATE_MONITOR_STATE_ACTION_NAME, ::UpdateMonitorStateResponse)
}
Original file line number Diff line number Diff line change
@@ -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 UpdateMonitorStateRequest : 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
}
}
Original file line number Diff line number Diff line change
@@ -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 UpdateMonitorStateResponse : 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()
}
}

0 comments on commit 5307c44

Please sign in to comment.