
io.k8s.api.networking.v1.IngressSpec.scala Maven / Gradle / Ivy
package io.k8s.api.networking.v1
import dev.hnaderi.k8s.utils._
/** IngressSpec describes the Ingress the user wishes to exist. */
final case class IngressSpec(
defaultBackend : Option[io.k8s.api.networking.v1.IngressBackend] = None,
ingressClassName : Option[String] = None,
rules : Option[Seq[io.k8s.api.networking.v1.IngressRule]] = None,
tls : Option[Seq[io.k8s.api.networking.v1.IngressTLS]] = None
) {
/** Returns a new data with defaultBackend set to new value */
def withDefaultBackend(value: io.k8s.api.networking.v1.IngressBackend) : IngressSpec = copy(defaultBackend = Some(value))
/** if defaultBackend has a value, transforms to the result of function*/
def mapDefaultBackend(f: io.k8s.api.networking.v1.IngressBackend => io.k8s.api.networking.v1.IngressBackend) : IngressSpec = copy(defaultBackend = defaultBackend.map(f))
/** Returns a new data with ingressClassName set to new value */
def withIngressClassName(value: String) : IngressSpec = copy(ingressClassName = Some(value))
/** if ingressClassName has a value, transforms to the result of function*/
def mapIngressClassName(f: String => String) : IngressSpec = copy(ingressClassName = ingressClassName.map(f))
/** Returns a new data with rules set to new value */
def withRules(value: Seq[io.k8s.api.networking.v1.IngressRule]) : IngressSpec = copy(rules = Some(value))
/** Appends new values to rules */
def addRules(newValues: io.k8s.api.networking.v1.IngressRule*) : IngressSpec = copy(rules = Some(rules.fold(newValues)(_ ++ newValues)))
/** if rules has a value, transforms to the result of function*/
def mapRules(f: Seq[io.k8s.api.networking.v1.IngressRule] => Seq[io.k8s.api.networking.v1.IngressRule]) : IngressSpec = copy(rules = rules.map(f))
/** Returns a new data with tls set to new value */
def withTls(value: Seq[io.k8s.api.networking.v1.IngressTLS]) : IngressSpec = copy(tls = Some(value))
/** Appends new values to tls */
def addTls(newValues: io.k8s.api.networking.v1.IngressTLS*) : IngressSpec = copy(tls = Some(tls.fold(newValues)(_ ++ newValues)))
/** if tls has a value, transforms to the result of function*/
def mapTls(f: Seq[io.k8s.api.networking.v1.IngressTLS] => Seq[io.k8s.api.networking.v1.IngressTLS]) : IngressSpec = copy(tls = tls.map(f))
}
object IngressSpec {
implicit val encoder : Encoder[io.k8s.api.networking.v1.IngressSpec] = new Encoder[io.k8s.api.networking.v1.IngressSpec] {
def apply[T : Builder](o: io.k8s.api.networking.v1.IngressSpec) : T = {
val obj = ObjectWriter[T]()
obj
.write("defaultBackend", o.defaultBackend)
.write("ingressClassName", o.ingressClassName)
.write("rules", o.rules)
.write("tls", o.tls)
.build
}
}
implicit val decoder: Decoder[IngressSpec] = new Decoder[IngressSpec] {
def apply[T : Reader](t: T): Either[String, IngressSpec] = for {
obj <- ObjectReader(t)
defaultBackend <- obj.readOpt[io.k8s.api.networking.v1.IngressBackend]("defaultBackend")
ingressClassName <- obj.readOpt[String]("ingressClassName")
rules <- obj.readOpt[Seq[io.k8s.api.networking.v1.IngressRule]]("rules")
tls <- obj.readOpt[Seq[io.k8s.api.networking.v1.IngressTLS]]("tls")
} yield IngressSpec (
defaultBackend = defaultBackend,
ingressClassName = ingressClassName,
rules = rules,
tls = tls
)
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy