app/models/DeployedImageInfo.scala (35 lines of code) (raw):
package models
import skuber.apps.v1.Deployment
case class DeployedImageInfo(
deploymentName:String,
namespace:String,
deployedImages:Seq[DockerImage],
observedGeneration:Option[Int],
readyReplicas:Option[Int],
totalReplicas:Option[Int],
notReadyReplicas:Option[Int],
labels:Map[String, String]
)
object DeployedImageInfo {
def fromDeployment(deployment:Deployment) = {
val maybeContainerList = for {
deplSpec <- deployment.spec
templSpec <- deplSpec.template.spec
} yield templSpec.containers
val imagesList = maybeContainerList
.getOrElse(List())
.map(_.image)
.map(DockerImage.parseName)
.collect({case Some(img)=>img})
DeployedImageInfo(
deployment.metadata.name,
deployment.metadata.namespace,
imagesList,
deployment.status.map(_.observedGeneration),
deployment.status.map(_.readyReplicas),
deployment.status.map(_.replicas),
deployment.status.map(_.unavailableReplicas),
deployment.metadata.labels
)
}
}