app/logic/Owners.scala (40 lines of code) (raw):
package logic
import com.gu.janus.model.{ACL, AwsAccount, Permission}
import scala.util.{Failure, Try}
object Owners {
def accountOwnerInformation(accounts: List[AwsAccount], access: ACL)(
lookupConfiguredRole: AwsAccount => Try[String]
): List[(AwsAccount, List[(String, Set[Permission])], Try[String])] =
accounts
.sortBy(_.name.toLowerCase)
.map { awsAccount =>
(
awsAccount,
accountPermissions(awsAccount, access),
lookupConfiguredRole(awsAccount)
)
}
def accountPermissions(
account: AwsAccount,
acl: ACL
): List[(String, Set[Permission])] = {
acl.userAccess
.flatMap { case (username, permissions) =>
if (permissions.exists(_.account == account))
Some(username -> permissions.filter(_.account == account))
else None
}
.toList
.sortBy(_._1)
}
def accountIdErrors(
accountData: Seq[
(AwsAccount, List[(String, Set[Permission])], Try[String])
]
): Seq[(AwsAccount, Throwable)] = {
accountData
.collect { case (account, _, Failure(err)) =>
(account, err)
}
}
}