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

pl.touk.nussknacker.k8s.manager.RequestResponseSlugUtils.scala Maven / Gradle / Ivy

package pl.touk.nussknacker.k8s.manager

import pl.touk.nussknacker.engine.api.RequestResponseMetaData
import pl.touk.nussknacker.engine.api.process.ProcessName
import pl.touk.nussknacker.k8s.manager.service.ServicePreparer.serviceName

object RequestResponseSlugUtils {

  private[manager] def determineSlug(
      scenarioName: ProcessName,
      rrMetaData: RequestResponseMetaData,
      nussknackerInstanceName: Option[String]
  ) = {
    rrMetaData.slug.filterNot(_.isEmpty).getOrElse(defaultSlug(scenarioName, nussknackerInstanceName))
  }

  // We don't encode url because k8s object names are more restrictively validated than urls, see https://datatracker.ietf.org/doc/html/rfc3986
  // and all invalid characters will be clean
  private[manager] def defaultSlug(scenarioName: ProcessName, nussknackerInstanceName: Option[String]): String = {
    val maxSlugLength =
      K8sUtils.maxObjectNameLength - K8sDeploymentManager.nussknackerInstanceNamePrefix(nussknackerInstanceName).length
    serviceName(None, scenarioName.value).take(maxSlugLength)
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy