def cloneBaseImage()

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"))
        }
      )
  }