All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.k8s.api.batch.v1.JobCondition.scala Maven / Gradle / Ivy

package io.k8s.api.batch.v1

import dev.hnaderi.k8s.utils._

/** JobCondition describes current state of a job. */
final case class JobCondition(
  status : String,
  `type` : String,
  lastProbeTime : Option[io.k8s.apimachinery.pkg.apis.meta.v1.Time] = None,
  reason : Option[String] = None,
  lastTransitionTime : Option[io.k8s.apimachinery.pkg.apis.meta.v1.Time] = None,
  message : Option[String] = None
) {

  /** Returns a new data with status set to new value */
  def withStatus(value: String) : JobCondition = copy(status = value)
  /** transforms status to result of function */
  def mapStatus(f: String => String) : JobCondition = copy(status = f(status))

  /** Returns a new data with `type` set to new value */
  def withType(value: String) : JobCondition = copy(`type` = value)
  /** transforms `type` to result of function */
  def mapType(f: String => String) : JobCondition = copy(`type` = f(`type`))

  /** Returns a new data with lastProbeTime set to new value */
  def withLastProbeTime(value: io.k8s.apimachinery.pkg.apis.meta.v1.Time) : JobCondition = copy(lastProbeTime = Some(value))
  /** if lastProbeTime has a value, transforms to the result of function*/
  def mapLastProbeTime(f: io.k8s.apimachinery.pkg.apis.meta.v1.Time => io.k8s.apimachinery.pkg.apis.meta.v1.Time) : JobCondition = copy(lastProbeTime = lastProbeTime.map(f))

  /** Returns a new data with reason set to new value */
  def withReason(value: String) : JobCondition = copy(reason = Some(value))
  /** if reason has a value, transforms to the result of function*/
  def mapReason(f: String => String) : JobCondition = copy(reason = reason.map(f))

  /** Returns a new data with lastTransitionTime set to new value */
  def withLastTransitionTime(value: io.k8s.apimachinery.pkg.apis.meta.v1.Time) : JobCondition = copy(lastTransitionTime = Some(value))
  /** if lastTransitionTime has a value, transforms to the result of function*/
  def mapLastTransitionTime(f: io.k8s.apimachinery.pkg.apis.meta.v1.Time => io.k8s.apimachinery.pkg.apis.meta.v1.Time) : JobCondition = copy(lastTransitionTime = lastTransitionTime.map(f))

  /** Returns a new data with message set to new value */
  def withMessage(value: String) : JobCondition = copy(message = Some(value))
  /** if message has a value, transforms to the result of function*/
  def mapMessage(f: String => String) : JobCondition = copy(message = message.map(f))
}

object JobCondition {

    implicit val encoder : Encoder[io.k8s.api.batch.v1.JobCondition] = new Encoder[io.k8s.api.batch.v1.JobCondition] {
        def apply[T : Builder](o: io.k8s.api.batch.v1.JobCondition) : T = {
          val obj = ObjectWriter[T]()
          obj
            .write("status", o.status)
            .write("type", o.`type`)
            .write("lastProbeTime", o.lastProbeTime)
            .write("reason", o.reason)
            .write("lastTransitionTime", o.lastTransitionTime)
            .write("message", o.message)
            .build
        }
    }

    implicit val decoder: Decoder[JobCondition] = new Decoder[JobCondition] {
      def apply[T : Reader](t: T): Either[String, JobCondition] = for {
          obj <- ObjectReader(t)
          status <- obj.read[String]("status")
          `type` <- obj.read[String]("type")
          lastProbeTime <- obj.readOpt[io.k8s.apimachinery.pkg.apis.meta.v1.Time]("lastProbeTime")
          reason <- obj.readOpt[String]("reason")
          lastTransitionTime <- obj.readOpt[io.k8s.apimachinery.pkg.apis.meta.v1.Time]("lastTransitionTime")
          message <- obj.readOpt[String]("message")
      } yield JobCondition (
          status = status,
          `type` = `type`,
          lastProbeTime = lastProbeTime,
          reason = reason,
          lastTransitionTime = lastTransitionTime,
          message = message
        )
    }
}





© 2015 - 2025 Weber Informatics LLC | Privacy Policy