app/controllers/Healthcheck.scala (18 lines of code) (raw):
package controllers
import com.amazonaws.util.EC2MetadataUtils
import com.gu.media.aws.{AwsAccess, KinesisAccess}
import play.api.mvc.{Action, BaseController, ControllerComponents}
class Healthcheck(val kinesis: AwsAccess with KinesisAccess, val controllerComponents: ControllerComponents) extends BaseController {
def healthcheck = Action {
val instanceId = EC2MetadataUtils.getInstanceId
val isRunningInAws = instanceId != null
val canAccessPreviewStream = kinesis.testKinesisAccess(kinesis.previewKinesisStreamName)
val canAccessLiveStream = kinesis.testKinesisAccess(kinesis.liveKinesisStreamName)
val isMissingTag = isRunningInAws && kinesis.isDev
if(!isMissingTag && canAccessLiveStream && canAccessPreviewStream) {
Ok(s"ok\ngitCommitID ${app.BuildInfo.gitCommitId}")
} else {
InternalServerError("Fail. Cannot access CAPI kinesis streams or cannot read tags")
}
}
}