in src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/model/ManagedIndexConfig.kt [108:188]
fun parse(
xcp: XContentParser,
id: String = NO_ID,
seqNo: Long = SequenceNumbers.UNASSIGNED_SEQ_NO,
primaryTerm: Long = SequenceNumbers.UNASSIGNED_PRIMARY_TERM
): ManagedIndexConfig {
var name: String? = null
var index: String? = null
var indexUuid: String? = null
var schedule: Schedule? = null
var policyID: String? = null
var policy: Policy? = null
var changePolicy: ChangePolicy? = null
var lastUpdatedTime: Instant? = null
var enabledTime: Instant? = null
var enabled = true
var policyPrimaryTerm: Long? = SequenceNumbers.UNASSIGNED_PRIMARY_TERM
var policySeqNo: Long? = SequenceNumbers.UNASSIGNED_SEQ_NO
var jitter: Double? = null
ensureExpectedToken(Token.START_OBJECT, xcp.currentToken(), xcp)
while (xcp.nextToken() != Token.END_OBJECT) {
val fieldName = xcp.currentName()
xcp.nextToken()
when (fieldName) {
NAME_FIELD -> name = xcp.text()
INDEX_FIELD -> index = xcp.text()
INDEX_UUID_FIELD -> indexUuid = xcp.text()
ENABLED_FIELD -> enabled = xcp.booleanValue()
SCHEDULE_FIELD -> schedule = ScheduleParser.parse(xcp)
ENABLED_TIME_FIELD -> enabledTime = xcp.instant()
LAST_UPDATED_TIME_FIELD -> lastUpdatedTime = xcp.instant()
POLICY_ID_FIELD -> policyID = xcp.text()
POLICY_SEQ_NO_FIELD -> {
policySeqNo = if (xcp.currentToken() == Token.VALUE_NULL) null else xcp.longValue()
}
POLICY_PRIMARY_TERM_FIELD -> {
policyPrimaryTerm = if (xcp.currentToken() == Token.VALUE_NULL) null else xcp.longValue()
}
POLICY_FIELD -> {
policy = if (xcp.currentToken() == Token.VALUE_NULL) null else Policy.parse(xcp)
}
CHANGE_POLICY_FIELD -> {
changePolicy = if (xcp.currentToken() == Token.VALUE_NULL) null else ChangePolicy.parse(xcp)
}
JITTER -> {
jitter = if (xcp.currentToken() == Token.VALUE_NULL) null else xcp.doubleValue()
}
else -> throw IllegalArgumentException("Invalid field: [$fieldName] found in ManagedIndexConfig.")
}
}
if (enabled && enabledTime == null) {
enabledTime = Instant.now()
} else if (!enabled) {
enabledTime = null
}
return ManagedIndexConfig(
id,
seqNo,
primaryTerm,
index = requireNotNull(index) { "ManagedIndexConfig index is null" },
indexUuid = requireNotNull(indexUuid) { "ManagedIndexConfig index uuid is null" },
jobName = requireNotNull(name) { "ManagedIndexConfig name is null" },
enabled = enabled,
jobSchedule = requireNotNull(schedule) { "ManagedIndexConfig schedule is null" },
jobLastUpdatedTime = requireNotNull(lastUpdatedTime) { "ManagedIndexConfig last updated time is null" },
jobEnabledTime = enabledTime,
policyID = requireNotNull(policyID) { "ManagedIndexConfig policy id is null" },
policySeqNo = policySeqNo,
policyPrimaryTerm = policyPrimaryTerm,
policy = policy?.copy(
id = policyID ?: NO_ID,
seqNo = policySeqNo ?: SequenceNumbers.UNASSIGNED_SEQ_NO,
primaryTerm = policyPrimaryTerm ?: SequenceNumbers.UNASSIGNED_PRIMARY_TERM
),
changePolicy = changePolicy,
jobJitter = jitter
)
}