in riff-raff/app/controllers/api.scala [363:417]
def deploy = ApiJsonEndpoint("deploy", parse.json) { implicit request =>
deployRequestReader
.reads(request.body)
.fold(
valid = { deployRequest =>
val (project, build, stage) = deployRequest
val params = DeployParameters(
Deployer(request.fullName),
Build(project, build),
Stage(stage),
updateStrategy = MostlyHarmless
)
assert(
!changeFreeze.frozen(stage),
s"Deployment to $stage is frozen (API disabled, use the web interface if you need to deploy): ${changeFreeze.message}"
)
deployments.deploy(
params,
requestSource = ApiRequestSource(request.apiKey)
) match {
case Right(deployId) =>
Json.obj(
"response" -> Json.obj(
"status" -> "ok",
"request" -> Json.obj(
"project" -> project,
"build" -> build,
"stage" -> stage
),
"uuid" -> deployId.toString,
"logURL" -> routes.DeployController
.viewUUID(deployId.toString)
.absoluteURL()
)
)
case Left(error) =>
Json.obj(
"response" -> Json.obj(
"status" -> "error",
"errors" -> Json.arr(error.message)
)
)
}
},
invalid = { error =>
Json.obj(
"response" -> Json.obj(
"status" -> "error",
"errors" -> JsError.toJson(error)
)
)
}
)
}