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

io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionVersion.scala Maven / Gradle / Ivy

package io.k8s.apiextensions_apiserver.pkg.apis.apiextensions.v1

import dev.hnaderi.k8s.utils._

/** CustomResourceDefinitionVersion describes a version for CRD. */
final case class CustomResourceDefinitionVersion(
  name : String,
  served : Boolean,
  storage : Boolean,
  deprecationWarning : Option[String] = None,
  deprecated : Option[Boolean] = None,
  selectableFields : Option[Seq[io.k8s.apiextensions_apiserver.pkg.apis.apiextensions.v1.SelectableField]] = None,
  subresources : Option[io.k8s.apiextensions_apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresources] = None,
  schema : Option[io.k8s.apiextensions_apiserver.pkg.apis.apiextensions.v1.CustomResourceValidation] = None,
  additionalPrinterColumns : Option[Seq[io.k8s.apiextensions_apiserver.pkg.apis.apiextensions.v1.CustomResourceColumnDefinition]] = None
) {

  /** Returns a new data with name set to new value */
  def withName(value: String) : CustomResourceDefinitionVersion = copy(name = value)
  /** transforms name to result of function */
  def mapName(f: String => String) : CustomResourceDefinitionVersion = copy(name = f(name))

  /** Returns a new data with served set to new value */
  def withServed(value: Boolean) : CustomResourceDefinitionVersion = copy(served = value)
  /** transforms served to result of function */
  def mapServed(f: Boolean => Boolean) : CustomResourceDefinitionVersion = copy(served = f(served))

  /** Returns a new data with storage set to new value */
  def withStorage(value: Boolean) : CustomResourceDefinitionVersion = copy(storage = value)
  /** transforms storage to result of function */
  def mapStorage(f: Boolean => Boolean) : CustomResourceDefinitionVersion = copy(storage = f(storage))

  /** Returns a new data with deprecationWarning set to new value */
  def withDeprecationWarning(value: String) : CustomResourceDefinitionVersion = copy(deprecationWarning = Some(value))
  /** if deprecationWarning has a value, transforms to the result of function*/
  def mapDeprecationWarning(f: String => String) : CustomResourceDefinitionVersion = copy(deprecationWarning = deprecationWarning.map(f))

  /** Returns a new data with deprecated set to new value */
  def withDeprecated(value: Boolean) : CustomResourceDefinitionVersion = copy(deprecated = Some(value))
  /** if deprecated has a value, transforms to the result of function*/
  def mapDeprecated(f: Boolean => Boolean) : CustomResourceDefinitionVersion = copy(deprecated = deprecated.map(f))

  /** Returns a new data with selectableFields set to new value */
  def withSelectableFields(value: Seq[io.k8s.apiextensions_apiserver.pkg.apis.apiextensions.v1.SelectableField]) : CustomResourceDefinitionVersion = copy(selectableFields = Some(value))
  /** Appends new values to selectableFields */
  def addSelectableFields(newValues: io.k8s.apiextensions_apiserver.pkg.apis.apiextensions.v1.SelectableField*) : CustomResourceDefinitionVersion = copy(selectableFields = Some(selectableFields.fold(newValues)(_ ++ newValues)))
  /** if selectableFields has a value, transforms to the result of function*/
  def mapSelectableFields(f: Seq[io.k8s.apiextensions_apiserver.pkg.apis.apiextensions.v1.SelectableField] => Seq[io.k8s.apiextensions_apiserver.pkg.apis.apiextensions.v1.SelectableField]) : CustomResourceDefinitionVersion = copy(selectableFields = selectableFields.map(f))

  /** Returns a new data with subresources set to new value */
  def withSubresources(value: io.k8s.apiextensions_apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresources) : CustomResourceDefinitionVersion = copy(subresources = Some(value))
  /** if subresources has a value, transforms to the result of function*/
  def mapSubresources(f: io.k8s.apiextensions_apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresources => io.k8s.apiextensions_apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresources) : CustomResourceDefinitionVersion = copy(subresources = subresources.map(f))

  /** Returns a new data with schema set to new value */
  def withSchema(value: io.k8s.apiextensions_apiserver.pkg.apis.apiextensions.v1.CustomResourceValidation) : CustomResourceDefinitionVersion = copy(schema = Some(value))
  /** if schema has a value, transforms to the result of function*/
  def mapSchema(f: io.k8s.apiextensions_apiserver.pkg.apis.apiextensions.v1.CustomResourceValidation => io.k8s.apiextensions_apiserver.pkg.apis.apiextensions.v1.CustomResourceValidation) : CustomResourceDefinitionVersion = copy(schema = schema.map(f))

  /** Returns a new data with additionalPrinterColumns set to new value */
  def withAdditionalPrinterColumns(value: Seq[io.k8s.apiextensions_apiserver.pkg.apis.apiextensions.v1.CustomResourceColumnDefinition]) : CustomResourceDefinitionVersion = copy(additionalPrinterColumns = Some(value))
  /** Appends new values to additionalPrinterColumns */
  def addAdditionalPrinterColumns(newValues: io.k8s.apiextensions_apiserver.pkg.apis.apiextensions.v1.CustomResourceColumnDefinition*) : CustomResourceDefinitionVersion = copy(additionalPrinterColumns = Some(additionalPrinterColumns.fold(newValues)(_ ++ newValues)))
  /** if additionalPrinterColumns has a value, transforms to the result of function*/
  def mapAdditionalPrinterColumns(f: Seq[io.k8s.apiextensions_apiserver.pkg.apis.apiextensions.v1.CustomResourceColumnDefinition] => Seq[io.k8s.apiextensions_apiserver.pkg.apis.apiextensions.v1.CustomResourceColumnDefinition]) : CustomResourceDefinitionVersion = copy(additionalPrinterColumns = additionalPrinterColumns.map(f))
}

object CustomResourceDefinitionVersion {

    implicit val encoder : Encoder[io.k8s.apiextensions_apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionVersion] = new Encoder[io.k8s.apiextensions_apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionVersion] {
        def apply[T : Builder](o: io.k8s.apiextensions_apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionVersion) : T = {
          val obj = ObjectWriter[T]()
          obj
            .write("name", o.name)
            .write("served", o.served)
            .write("storage", o.storage)
            .write("deprecationWarning", o.deprecationWarning)
            .write("deprecated", o.deprecated)
            .write("selectableFields", o.selectableFields)
            .write("subresources", o.subresources)
            .write("schema", o.schema)
            .write("additionalPrinterColumns", o.additionalPrinterColumns)
            .build
        }
    }

    implicit val decoder: Decoder[CustomResourceDefinitionVersion] = new Decoder[CustomResourceDefinitionVersion] {
      def apply[T : Reader](t: T): Either[String, CustomResourceDefinitionVersion] = for {
          obj <- ObjectReader(t)
          name <- obj.read[String]("name")
          served <- obj.read[Boolean]("served")
          storage <- obj.read[Boolean]("storage")
          deprecationWarning <- obj.readOpt[String]("deprecationWarning")
          deprecated <- obj.readOpt[Boolean]("deprecated")
          selectableFields <- obj.readOpt[Seq[io.k8s.apiextensions_apiserver.pkg.apis.apiextensions.v1.SelectableField]]("selectableFields")
          subresources <- obj.readOpt[io.k8s.apiextensions_apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresources]("subresources")
          schema <- obj.readOpt[io.k8s.apiextensions_apiserver.pkg.apis.apiextensions.v1.CustomResourceValidation]("schema")
          additionalPrinterColumns <- obj.readOpt[Seq[io.k8s.apiextensions_apiserver.pkg.apis.apiextensions.v1.CustomResourceColumnDefinition]]("additionalPrinterColumns")
      } yield CustomResourceDefinitionVersion (
          name = name,
          served = served,
          storage = storage,
          deprecationWarning = deprecationWarning,
          deprecated = deprecated,
          selectableFields = selectableFields,
          subresources = subresources,
          schema = schema,
          additionalPrinterColumns = additionalPrinterColumns
        )
    }
}





© 2015 - 2025 Weber Informatics LLC | Privacy Policy