Skip to content

Commit

Permalink
Cleans up sanitizer and renames exports
Browse files Browse the repository at this point in the history
  • Loading branch information
DavidSeptimus committed Jan 18, 2023
1 parent e27a26b commit 1674fc9
Show file tree
Hide file tree
Showing 5 changed files with 72 additions and 91 deletions.
88 changes: 43 additions & 45 deletions pkg/infra/pulumi_aws/deploylib.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import * as requestRetry from 'requestretry'
import { setupElasticacheCluster } from './iac/elasticache'
import * as analytics from './iac/analytics'

import { h, resourceName, validateResourceName } from './iac/sanitization/sanitizer'
import { h, sanitized, validate } from './iac/sanitization/sanitizer'
import { LoadBalancerPlugin } from './iac/load_balancing'
import { DefaultEksClusterOptions, Eks, EksExecUnit, HelmChart } from './iac/eks'
import { setupMemoryDbCluster } from './iac/memorydb'
Expand Down Expand Up @@ -115,7 +115,7 @@ export class CloudCCLib {
}
const resolvedBucketName = this.account.accountId.apply(
(accountId) =>
resourceName(
sanitized(
AwsSanitizer.S3.bucket.nameValidation()
)`${accountId}${physicalPayloadsBucketName}`
)
Expand Down Expand Up @@ -181,7 +181,7 @@ export class CloudCCLib {
this.publicSubnetIds = this.klothoVPC.publicSubnetIds
this.privateSubnetIds = this.klothoVPC.privateSubnetIds

const sgName = resourceName(AwsSanitizer.EC2.vpc.securityGroup.nameValidation())`${h(
const sgName = sanitized(AwsSanitizer.EC2.vpc.securityGroup.nameValidation())`${h(
this.name
)}`
const klothoSG = new aws.ec2.SecurityGroup(sgName, {
Expand Down Expand Up @@ -315,7 +315,7 @@ export class CloudCCLib {
.forEach((item) => combinedPolicyStatements.add(item))
}
if (combinedPolicyStatements.size > 0) {
const policyName = resourceName(AwsSanitizer.IAM.policy.nameValidation())`${h(
const policyName = sanitized(AwsSanitizer.IAM.policy.nameValidation())`${h(
this.name
)}-${h(physicalName)}-exec`
const policy = new aws.iam.Policy(
Expand Down Expand Up @@ -354,7 +354,7 @@ export class CloudCCLib {
Resource: ['*'],
})

const roleName = resourceName(AwsSanitizer.IAM.role.nameValidation())`${h(this.name)}-${h(
const roleName = sanitized(AwsSanitizer.IAM.role.nameValidation())`${h(this.name)}-${h(
execUnitName
)}-ar-access-role`
const accessRole = new aws.iam.Role(roleName, {
Expand All @@ -373,7 +373,7 @@ export class CloudCCLib {
})

const policy = new aws.iam.Policy(
resourceName(AwsSanitizer.IAM.policy.nameValidation())`${h(this.name)}-${h(
sanitized(AwsSanitizer.IAM.policy.nameValidation())`${h(this.name)}-${h(
execUnitName
)}-ar-access-policy`,
{
Expand Down Expand Up @@ -418,7 +418,7 @@ export class CloudCCLib {
const additionalEnvVars: { [key: string]: pulumi.Input<string> } =
this.generateExecUnitEnvVars(execUnitName, envVars)

const logGroupName = resourceName(
const logGroupName = sanitized(
AwsSanitizer.CloudWatch.logGroup.nameValidation()
)`/aws/apprunner/${h(this.name)}-${h(execUnitName)}-apprunner`
let cloudwatchGroup = new aws.cloudwatch.LogGroup(`${this.name}-${execUnitName}-lg`, {
Expand All @@ -435,7 +435,7 @@ export class CloudCCLib {
}
})

const serviceName = resourceName(AwsSanitizer.AppRunner.service.nameValidation())`${h(
const serviceName = sanitized(AwsSanitizer.AppRunner.service.nameValidation())`${h(
this.name
)}-${h(execUnitName)}-apprunner`
const service = new aws.apprunner.Service(serviceName, {
Expand Down Expand Up @@ -477,7 +477,7 @@ export class CloudCCLib {
})

const lambdaRole = this.createRoleForName(execUnitName)
const lambdaName = resourceName(AwsSanitizer.Lambda.lambdaFunction.nameValidation())`${h(
const lambdaName = sanitized(AwsSanitizer.Lambda.lambdaFunction.nameValidation())`${h(
this.name
)}-${h(execUnitName)}`

Expand All @@ -504,7 +504,7 @@ export class CloudCCLib {
}
}

const logGroupName = resourceName(
const logGroupName = sanitized(
AwsSanitizer.CloudWatch.logGroup.nameValidation()
)`/aws/lambda/${lambdaName}-function-api-lg`
let cloudwatchGroup = new aws.cloudwatch.LogGroup(`${execUnitName}-function-api-lg`, {
Expand Down Expand Up @@ -645,7 +645,7 @@ export class CloudCCLib {
publishers: string[],
subscribers: string[]
): aws.sns.Topic {
let topic = resourceName(AwsSanitizer.SNS.topic.nameValidation())`${h(
let topic = sanitized(AwsSanitizer.SNS.topic.nameValidation())`${h(
this.name
)}-${path}_${varName}-event`
let sns = this.snsTopics.get(topic)
Expand Down Expand Up @@ -692,9 +692,7 @@ export class CloudCCLib {
}

setupKV(): aws.dynamodb.Table {
const tableName = resourceName(AwsSanitizer.DynamoDB.table.nameValidation())`${h(
this.name
)}`
const tableName = sanitized(AwsSanitizer.DynamoDB.table.nameValidation())`${h(this.name)}`
const db = new aws.dynamodb.Table(
`KV_${tableName}`,
{
Expand Down Expand Up @@ -791,7 +789,7 @@ export class CloudCCLib {
}

private createExecutionRole(execUnitPhysicalName: string) {
const roleName = resourceName(AwsSanitizer.IAM.role.nameValidation())`${h(
const roleName = sanitized(AwsSanitizer.IAM.role.nameValidation())`${h(
this.name
)}_${this.generateHashFromPhysicalName(execUnitPhysicalName)}_LambdaExec`
const lambdaExecRole = new aws.iam.Role(roleName, {
Expand Down Expand Up @@ -1072,9 +1070,9 @@ export class CloudCCLib {
const lambdaNames = execUnitNames.map((n) => `${this.name}-${n}`)

const warmerRole = this.createRoleForName(name)
const warmerFuncName = resourceName(
AwsSanitizer.Lambda.lambdaFunction.nameValidation()
)`${h(this.name)}-lambdawarmer`
const warmerFuncName = sanitized(AwsSanitizer.Lambda.lambdaFunction.nameValidation())`${h(
this.name
)}-lambdawarmer`
let warmerLambda = new aws.lambda.CallbackFunction(name, {
name: warmerFuncName,
memorySize: 128 /*MB*/,
Expand Down Expand Up @@ -1130,7 +1128,7 @@ export class CloudCCLib {
const name = `${execGroupName}.${functionName}:${key}`
const scheduleRole = this.createRoleForName(name)

const schedulerFuncName = resourceName(
const schedulerFuncName = sanitized(
AwsSanitizer.Lambda.lambdaFunction.nameValidation()
)`${h(this.name)}/${h(execUnitName)}_${h(functionName)}-${key}`

Expand Down Expand Up @@ -1175,7 +1173,7 @@ export class CloudCCLib {
let cloudwatchLogs = new aws.cloudwatch.LogGroup(`${name}`, {
name: lambdaScheduler.id.apply(
(id) =>
resourceName(AwsSanitizer.CloudWatch.logGroup.nameValidation())`/aws/lambda/${h(
sanitized(AwsSanitizer.CloudWatch.logGroup.nameValidation())`/aws/lambda/${h(
name
)}-function-api-lg`
),
Expand All @@ -1185,9 +1183,9 @@ export class CloudCCLib {
const schedulerLambda: aws.cloudwatch.EventRuleEventHandler = lambdaScheduler
const warmUpLambdaSchedule: aws.cloudwatch.EventRuleEventSubscription =
aws.cloudwatch.onSchedule(
resourceName(AwsSanitizer.EventBridge.rule.nameValidation())`${h(
execGroupName
)}_${h(functionName)}_act`,
sanitized(AwsSanitizer.EventBridge.rule.nameValidation())`${h(execGroupName)}_${h(
functionName
)}_act`,
`cron(${cronExpression})`,
schedulerLambda
)
Expand All @@ -1196,7 +1194,7 @@ export class CloudCCLib {
public setupSecrets(secrets: string[]) {
for (const secret of secrets) {
const secretName = `${this.name}-${secret}`
validateResourceName(secretName, AwsSanitizer.SecretsManager.secret.nameValidation())
validate(secretName, AwsSanitizer.SecretsManager.secret.nameValidation())
let awsSecret: aws.secretsmanager.Secret
if (this.secrets.has(secret)) {
awsSecret = this.secrets.get(secret)!
Expand Down Expand Up @@ -1242,9 +1240,9 @@ export class CloudCCLib {

public setupRDS(orm: string, args: Partial<aws.rds.InstanceArgs>) {
if (!this.subnetGroup) {
const subnetGroupName = resourceName(
AwsSanitizer.RDS.dbSubnetGroup.nameValidation()
)`${h(this.name)}`
const subnetGroupName = sanitized(AwsSanitizer.RDS.dbSubnetGroup.nameValidation())`${h(
this.name
)}`
this.subnetGroup = new aws.rds.SubnetGroup(subnetGroupName, {
subnetIds: this.privateSubnetIds,
tags: {
Expand All @@ -1253,7 +1251,7 @@ export class CloudCCLib {
})
}

const dbName = resourceName(
const dbName = sanitized(
AwsSanitizer.RDS.engine.pg.database.nameValidation()
)`${orm.toLowerCase()}`
const config = new pulumi.Config()
Expand All @@ -1266,7 +1264,7 @@ export class CloudCCLib {
// which uses the pulumi resource name + a random suffix

// this is only partial validation since Pulumi appends its own instanceId suffix
validateResourceName(dbName, AwsSanitizer.RDS.instance.nameValidation())
validate(dbName, AwsSanitizer.RDS.instance.nameValidation())
const rds = new aws.rds.Instance(
dbName,
{
Expand All @@ -1286,7 +1284,7 @@ export class CloudCCLib {
// setup secrets for the proxy
const secretName = `${dbName}_secret`
const ssmSecretName = `${this.name}-${secretName}`
validateResourceName(ssmSecretName, AwsSanitizer.SecretsManager.secret.nameValidation())
validate(ssmSecretName, AwsSanitizer.SecretsManager.secret.nameValidation())
let rdsSecret = new aws.secretsmanager.Secret(`${secretName}`, {
name: ssmSecretName,
recoveryWindowInDays: 0,
Expand Down Expand Up @@ -1326,7 +1324,7 @@ export class CloudCCLib {
})

// prettier-ignore
const ormRoleName = resourceName(AwsSanitizer.IAM.role.nameValidation())`${h(dbName)}-ormsecretrole`
const ormRoleName = sanitized(AwsSanitizer.IAM.role.nameValidation())`${h(dbName)}-ormsecretrole`
//setup role for proxy
const role = new aws.iam.Role(`${dbName}-ormsecretrole`, {
name: ormRoleName,
Expand All @@ -1345,7 +1343,7 @@ export class CloudCCLib {
})

// prettier-ignore
const ormPolicyName = resourceName(AwsSanitizer.IAM.policy.nameValidation())`${h(dbName)}-ormsecretpolicy`
const ormPolicyName = sanitized(AwsSanitizer.IAM.policy.nameValidation())`${h(dbName)}-ormsecretpolicy`
const policy = new aws.iam.Policy(`${dbName}-ormsecretpolicy`, {
name: ormPolicyName,
description: 'klotho orm secret policy',
Expand All @@ -1367,7 +1365,7 @@ export class CloudCCLib {
})

// setup the rds proxy
const proxyName = resourceName(AwsSanitizer.RDS.dbProxy.nameValidation())`${h(dbName)}`
const proxyName = sanitized(AwsSanitizer.RDS.dbProxy.nameValidation())`${h(dbName)}`
const proxy = new aws.rds.Proxy(proxyName, {
debugLogging: false,
engineFamily: 'POSTGRESQL',
Expand Down Expand Up @@ -1539,7 +1537,7 @@ export class CloudCCLib {
}

createRoleForName(name: string): aws.iam.Role {
const roleName = resourceName(AwsSanitizer.IAM.role.nameValidation())`${name}`
const roleName = sanitized(AwsSanitizer.IAM.role.nameValidation())`${name}`
const role: aws.iam.Role = this.createExecutionRole(roleName)
this.execUnitToRole.set(roleName, role)
return role
Expand All @@ -1566,7 +1564,7 @@ export class CloudCCLib {
this.privateDnsNamespace = new aws.servicediscovery.PrivateDnsNamespace(
`${this.name}-privateDns`,
{
name: resourceName(
name: sanitized(
AwsSanitizer.ServiceDiscovery.privateDnsNamespace.nameValidation()
)`${h(this.name)}-privateDns`,
description: 'Used for service discovery',
Expand All @@ -1575,7 +1573,7 @@ export class CloudCCLib {
)

this.cluster = new awsx.ecs.Cluster(
resourceName(AwsSanitizer.ECS.cluster.nameValidation())`${h(this.name)}-cluster`,
sanitized(AwsSanitizer.ECS.cluster.nameValidation())`${h(this.name)}-cluster`,
{
vpc: this.klothoVPC,
cluster: providedClustername,
Expand All @@ -1585,7 +1583,7 @@ export class CloudCCLib {
}

createEksResources = async (execUnits: EksExecUnit[], charts?: HelmChart[]) => {
let clusterName = resourceName(AwsSanitizer.EKS.cluster.nameValidation())`${h(
let clusterName = sanitized(AwsSanitizer.EKS.cluster.nameValidation())`${h(
this.name
)}-eks-cluster`
const providedClustername = kloConfig.get<string>('eks-cluster')
Expand Down Expand Up @@ -1618,7 +1616,7 @@ export class CloudCCLib {

createNlb(execUnitName: string) {
const nlb = new awsx.lb.NetworkLoadBalancer(
resourceName(AwsSanitizer.ELB.loadBalancer.nameValidation())`${h(execUnitName)}-nlb`,
sanitized(AwsSanitizer.ELB.loadBalancer.nameValidation())`${h(execUnitName)}-nlb`,
{
external: false,
vpc: this.klothoVPC,
Expand All @@ -1628,7 +1626,7 @@ export class CloudCCLib {
this.execUnitToNlb.set(execUnitName, nlb)

const targetGroup: awsx.elasticloadbalancingv2.NetworkTargetGroup = nlb.createTargetGroup(
resourceName(AwsSanitizer.ELB.targetGroup.nameValidation())`${h(execUnitName)}-tg`,
sanitized(AwsSanitizer.ELB.targetGroup.nameValidation())`${h(execUnitName)}-tg`,
{
port: 3000,
}
Expand Down Expand Up @@ -1663,7 +1661,7 @@ export class CloudCCLib {
Resource: '*',
})

const logGroupName = resourceName(
const logGroupName = sanitized(
AwsSanitizer.CloudWatch.logGroup.nameValidation()
)`/aws/fargate/${h(this.name)}-${h(execUnitName)}-task`

Expand All @@ -1682,7 +1680,7 @@ export class CloudCCLib {

const task = new awsx.ecs.FargateTaskDefinition(`${execUnitName}-task`, {
logGroup: cloudwatchGroup,
family: resourceName(AwsSanitizer.ECS.taskDefinition.familyValidation())`${h(
family: sanitized(AwsSanitizer.ECS.taskDefinition.familyValidation())`${h(
execUnitName
)}-family`,
executionRole: role,
Expand Down Expand Up @@ -1716,7 +1714,7 @@ export class CloudCCLib {
})

const discoveryService = new aws.servicediscovery.Service(execUnitName, {
name: resourceName(AwsSanitizer.ServiceDiscovery.service.nameValidation())`${h(
name: sanitized(AwsSanitizer.ServiceDiscovery.service.nameValidation())`${h(
execUnitName
)}`,
dnsConfig: {
Expand All @@ -1743,7 +1741,7 @@ export class CloudCCLib {
const service = new awsx.ecs.FargateService(
`${execUnitName}-service`,
{
name: resourceName(AwsSanitizer.ECS.service.nameValidation())`${h(
name: sanitized(AwsSanitizer.ECS.service.nameValidation())`${h(
execUnitName
)}-service}`,
cluster: this.cluster,
Expand All @@ -1768,7 +1766,7 @@ export class CloudCCLib {
) => {
if (type === 'elasticache') {
const subnetGroup = new aws.elasticache.SubnetGroup(
resourceName(
sanitized(
AwsSanitizer.Elasticache.cacheSubnetGroup.cacheSubnetGroupNameValidation()
)`${h(this.name)}-${h(name)}-subnetgroup`,
{
Expand Down Expand Up @@ -1819,7 +1817,7 @@ export class CloudCCLib {
}

const subnetGroup = new aws.memorydb.SubnetGroup(
resourceName(AwsSanitizer.MemoryDB.subnetGroup.subnetGroupNameValidation())`${
sanitized(AwsSanitizer.MemoryDB.subnetGroup.subnetGroupNameValidation())`${
this.name
}-${h(name)}-subnetgroup`,
{
Expand Down
4 changes: 2 additions & 2 deletions pkg/infra/pulumi_aws/iac/elasticache.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import * as aws from '@pulumi/aws'
import * as pulumi from '@pulumi/pulumi'
import { Resource } from '../deploylib'
import * as validators from './sanitization/aws/elasticache'
import { resourceName } from './sanitization/sanitizer'
import { sanitized } from './sanitization/sanitizer'

const ELASTICACHE_ENGINE = 'redis'

Expand Down Expand Up @@ -48,7 +48,7 @@ export const setupElasticacheCluster = (
})

// TODO: look into removing sanitizeClusterName when making other breaking changes to resource names
const clusterName = resourceName(
const clusterName = sanitized(
validators.cacheCluster.cacheClusterIdValidation()
)`${sanitizeClusterName(appName, dbName)}`
// create the db resources
Expand Down
6 changes: 3 additions & 3 deletions pkg/infra/pulumi_aws/iac/load_balancing.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import {
TargetGroupAttachmentArgs,
} from '@pulumi/aws/lb'
import { ListenerRuleArgs } from '@pulumi/aws/alb'
import { h, resourceName } from './sanitization/sanitizer'
import { h, sanitized } from './sanitization/sanitizer'

export class LoadBalancerPlugin {
// A map of all resources which are going to be fronted by a load balancer
Expand All @@ -23,7 +23,7 @@ export class LoadBalancerPlugin {
params: LoadBalancerArgs
): aws.lb.LoadBalancer => {
let lb: aws.lb.LoadBalancer
let lbName = resourceName(validators.loadBalancer.nameValidation())`${h(appName)}-${h(
let lbName = sanitized(validators.loadBalancer.nameValidation())`${h(appName)}-${h(
resourceId
)}`
switch (params.loadBalancerType) {
Expand Down Expand Up @@ -87,7 +87,7 @@ export class LoadBalancerPlugin {
params: TargetGroupArgs
): aws.lb.TargetGroup => {
let targetGroup: aws.lb.TargetGroup
let tgName = resourceName(validators.targetGroup.nameValidation())`${h(appName)}-${h(
let tgName = sanitized(validators.targetGroup.nameValidation())`${h(appName)}-${h(
resourceId
)}`
if (params.targetType != 'lambda' && !(params.port && params.protocol)) {
Expand Down
Loading

0 comments on commit 1674fc9

Please sign in to comment.