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

io.k8s.api.apps.v1.DaemonSetCondition.scala Maven / Gradle / Ivy

package io.k8s.api.apps.v1

import dev.hnaderi.k8s.utils._

/** DaemonSetCondition describes the state of a DaemonSet at a certain point. */
final case class DaemonSetCondition(
  status : String,
  `type` : String,
  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) : DaemonSetCondition = copy(status = value)
  /** transforms status to result of function */
  def mapStatus(f: String => String) : DaemonSetCondition = copy(status = f(status))

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

  /** Returns a new data with reason set to new value */
  def withReason(value: String) : DaemonSetCondition = copy(reason = Some(value))
  /** if reason has a value, transforms to the result of function*/
  def mapReason(f: String => String) : DaemonSetCondition = 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) : DaemonSetCondition = 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) : DaemonSetCondition = copy(lastTransitionTime = lastTransitionTime.map(f))

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

object DaemonSetCondition {

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

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





© 2015 - 2025 Weber Informatics LLC | Privacy Policy