
io.k8s.api.networking.v1.NetworkPolicyIngressRule.scala Maven / Gradle / Ivy
package io.k8s.api.networking.v1
import dev.hnaderi.k8s.utils._
/** NetworkPolicyIngressRule describes a particular set of traffic that is allowed to the pods matched by a NetworkPolicySpec's podSelector. The traffic must match both ports and from. */
final case class NetworkPolicyIngressRule(
from : Option[Seq[io.k8s.api.networking.v1.NetworkPolicyPeer]] = None,
ports : Option[Seq[io.k8s.api.networking.v1.NetworkPolicyPort]] = None
) {
/** Returns a new data with from set to new value */
def withFrom(value: Seq[io.k8s.api.networking.v1.NetworkPolicyPeer]) : NetworkPolicyIngressRule = copy(from = Some(value))
/** Appends new values to from */
def addFrom(newValues: io.k8s.api.networking.v1.NetworkPolicyPeer*) : NetworkPolicyIngressRule = copy(from = Some(from.fold(newValues)(_ ++ newValues)))
/** if from has a value, transforms to the result of function*/
def mapFrom(f: Seq[io.k8s.api.networking.v1.NetworkPolicyPeer] => Seq[io.k8s.api.networking.v1.NetworkPolicyPeer]) : NetworkPolicyIngressRule = copy(from = from.map(f))
/** Returns a new data with ports set to new value */
def withPorts(value: Seq[io.k8s.api.networking.v1.NetworkPolicyPort]) : NetworkPolicyIngressRule = copy(ports = Some(value))
/** Appends new values to ports */
def addPorts(newValues: io.k8s.api.networking.v1.NetworkPolicyPort*) : NetworkPolicyIngressRule = copy(ports = Some(ports.fold(newValues)(_ ++ newValues)))
/** if ports has a value, transforms to the result of function*/
def mapPorts(f: Seq[io.k8s.api.networking.v1.NetworkPolicyPort] => Seq[io.k8s.api.networking.v1.NetworkPolicyPort]) : NetworkPolicyIngressRule = copy(ports = ports.map(f))
}
object NetworkPolicyIngressRule {
implicit val encoder : Encoder[io.k8s.api.networking.v1.NetworkPolicyIngressRule] = new Encoder[io.k8s.api.networking.v1.NetworkPolicyIngressRule] {
def apply[T : Builder](o: io.k8s.api.networking.v1.NetworkPolicyIngressRule) : T = {
val obj = ObjectWriter[T]()
obj
.write("from", o.from)
.write("ports", o.ports)
.build
}
}
implicit val decoder: Decoder[NetworkPolicyIngressRule] = new Decoder[NetworkPolicyIngressRule] {
def apply[T : Reader](t: T): Either[String, NetworkPolicyIngressRule] = for {
obj <- ObjectReader(t)
from <- obj.readOpt[Seq[io.k8s.api.networking.v1.NetworkPolicyPeer]]("from")
ports <- obj.readOpt[Seq[io.k8s.api.networking.v1.NetworkPolicyPort]]("ports")
} yield NetworkPolicyIngressRule (
from = from,
ports = ports
)
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy