in app/controllers/BaseImageController.scala [167:205]
def cloneBaseImage(id: BaseImageId) = authAction { implicit request =>
Forms.cloneBaseImage
.bindFromRequest()
.fold(
{ form =>
Redirect(routes.BaseImageController.showBaseImage(id)).flashing(
"error" -> s"Failed to clone base image: ${form.errors.head.message}"
)
},
{ newId =>
BaseImages
.findById(newId)
.fold[Result] {
BaseImages.findById(id).fold[Result](NotFound) { baseImage =>
baseImage.linuxDist match {
case Some(linuxDist) =>
BaseImages.create(
id = newId,
description = baseImage.description,
amiId = baseImage.amiId,
builtinRoles = baseImage.builtinRoles,
createdBy = request.user.fullName,
linuxDist = linuxDist,
eolDate = baseImage.eolDate,
requiresXLargeBuilder = baseImage.requiresXLargeBuilder
)
Redirect(routes.BaseImageController.showBaseImage(newId))
.flashing("info" -> "Successfully cloned base image")
case None =>
Redirect(routes.BaseImageController.showBaseImage(id))
.flashing(
"error" -> "Failed to clone base image as it does not have a linux distribution set"
)
}
}
}(_ => Conflict(s"$newId already exists"))
}
)
}