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

io.k8s.api.flowcontrol.v1.PolicyRulesWithSubjects.scala Maven / Gradle / Ivy

package io.k8s.api.flowcontrol.v1

import dev.hnaderi.k8s.utils._

/** PolicyRulesWithSubjects prescribes a test that applies to a request to an apiserver. The test considers the subject making the request, the verb being requested, and the resource to be acted upon. This PolicyRulesWithSubjects matches a request if and only if both (a) at least one member of subjects matches the request and (b) at least one member of resourceRules or nonResourceRules matches the request. */
final case class PolicyRulesWithSubjects(
  subjects : Seq[io.k8s.api.flowcontrol.v1.Subject],
  nonResourceRules : Option[Seq[io.k8s.api.flowcontrol.v1.NonResourcePolicyRule]] = None,
  resourceRules : Option[Seq[io.k8s.api.flowcontrol.v1.ResourcePolicyRule]] = None
) {

  /** Returns a new data with subjects set to new value */
  def withSubjects(value: Seq[io.k8s.api.flowcontrol.v1.Subject]) : PolicyRulesWithSubjects = copy(subjects = value)
  /** Appends new values to subjects */
  def addSubjects(newValues: io.k8s.api.flowcontrol.v1.Subject*) : PolicyRulesWithSubjects = copy(subjects = subjects ++ newValues)
  /** transforms subjects to result of function */
  def mapSubjects(f: Seq[io.k8s.api.flowcontrol.v1.Subject] => Seq[io.k8s.api.flowcontrol.v1.Subject]) : PolicyRulesWithSubjects = copy(subjects = f(subjects))

  /** Returns a new data with nonResourceRules set to new value */
  def withNonResourceRules(value: Seq[io.k8s.api.flowcontrol.v1.NonResourcePolicyRule]) : PolicyRulesWithSubjects = copy(nonResourceRules = Some(value))
  /** Appends new values to nonResourceRules */
  def addNonResourceRules(newValues: io.k8s.api.flowcontrol.v1.NonResourcePolicyRule*) : PolicyRulesWithSubjects = copy(nonResourceRules = Some(nonResourceRules.fold(newValues)(_ ++ newValues)))
  /** if nonResourceRules has a value, transforms to the result of function*/
  def mapNonResourceRules(f: Seq[io.k8s.api.flowcontrol.v1.NonResourcePolicyRule] => Seq[io.k8s.api.flowcontrol.v1.NonResourcePolicyRule]) : PolicyRulesWithSubjects = copy(nonResourceRules = nonResourceRules.map(f))

  /** Returns a new data with resourceRules set to new value */
  def withResourceRules(value: Seq[io.k8s.api.flowcontrol.v1.ResourcePolicyRule]) : PolicyRulesWithSubjects = copy(resourceRules = Some(value))
  /** Appends new values to resourceRules */
  def addResourceRules(newValues: io.k8s.api.flowcontrol.v1.ResourcePolicyRule*) : PolicyRulesWithSubjects = copy(resourceRules = Some(resourceRules.fold(newValues)(_ ++ newValues)))
  /** if resourceRules has a value, transforms to the result of function*/
  def mapResourceRules(f: Seq[io.k8s.api.flowcontrol.v1.ResourcePolicyRule] => Seq[io.k8s.api.flowcontrol.v1.ResourcePolicyRule]) : PolicyRulesWithSubjects = copy(resourceRules = resourceRules.map(f))
}

object PolicyRulesWithSubjects {

    implicit val encoder : Encoder[io.k8s.api.flowcontrol.v1.PolicyRulesWithSubjects] = new Encoder[io.k8s.api.flowcontrol.v1.PolicyRulesWithSubjects] {
        def apply[T : Builder](o: io.k8s.api.flowcontrol.v1.PolicyRulesWithSubjects) : T = {
          val obj = ObjectWriter[T]()
          obj
            .write("subjects", o.subjects)
            .write("nonResourceRules", o.nonResourceRules)
            .write("resourceRules", o.resourceRules)
            .build
        }
    }

    implicit val decoder: Decoder[PolicyRulesWithSubjects] = new Decoder[PolicyRulesWithSubjects] {
      def apply[T : Reader](t: T): Either[String, PolicyRulesWithSubjects] = for {
          obj <- ObjectReader(t)
          subjects <- obj.read[Seq[io.k8s.api.flowcontrol.v1.Subject]]("subjects")
          nonResourceRules <- obj.readOpt[Seq[io.k8s.api.flowcontrol.v1.NonResourcePolicyRule]]("nonResourceRules")
          resourceRules <- obj.readOpt[Seq[io.k8s.api.flowcontrol.v1.ResourcePolicyRule]]("resourceRules")
      } yield PolicyRulesWithSubjects (
          subjects = subjects,
          nonResourceRules = nonResourceRules,
          resourceRules = resourceRules
        )
    }
}





© 2015 - 2025 Weber Informatics LLC | Privacy Policy