in hq/app/aws/iam/IAMClient.scala [71:92]
def getCredentialReportDisplay(
account: AwsAccount,
currentData: Either[FailedAttempt, CredentialReportDisplay],
cfnClients: AwsClients[CloudFormationAsyncClient],
iamClients: AwsClients[IamAsyncClient],
regions: List[Region]
)(implicit ec: ExecutionContext): Attempt[CredentialReportDisplay] = {
val delay = 3.seconds
val now = DateTime.now()
if(CredentialsReport.credentialsReportReadyForRefresh(currentData, now))
for {
client <- iamClients.get(account, SOLE_REGION)
_ <- Retry.until(generateCredentialsReport(client), CredentialsReport.isComplete, "Failed to generate credentials report", delay)
report <- getCredentialsReport(client)
stacks <- CloudFormation.getStacksFromAllRegions(account, cfnClients, regions)
reportWithTags <- enrichReportWithTags(report, client)
reportWithStacks = CredentialsReport.enrichReportWithStackDetails(reportWithTags, stacks)
} yield CredentialsReportDisplay.toCredentialReportDisplay(reportWithStacks)
else
Attempt.fromEither(currentData)
}