async function createTenantConfig()

in resources/add_tenant_infra_lambda/handler.js [285:359]


async function createTenantConfig(event) {
  const {
    body: {
      tenantSubDomain,
      tenantName,
      tenantEmailDomain,
      tenantTier,
      tenantIDPType,
      emailId,
    },
    tenantuuid,
  } = event;

  if (!tenantName || tenantSubDomain === '') {
    return { statusCode: 400, body: 'tenantName, tenantSubDomain are mandatory' };
  }
  console.log('TenantID from the event', tenantSubDomain);
  console.log('TenantEmailDomain from the event', tenantEmailDomain);
  console.log('Tenant Name is ', tenantName);
  console.log('Tenant SubDomain is ', tenantSubDomain);
  console.log('Tenant Tier is ', tenantTier);
  console.log('Tenant IDP Type is ', tenantIDPType);
  console.log('Admin user email id is ', emailId);
  console.log('Tenant UUID is ', tenantuuid);

  console.log('Going to get HSI base params from parameter store');
  const baseParams = await getBaseParamsFromSsm();
  console.log('Done retreiving HSI base params from parameter store');
  const hostedZoneId = getParameterValue('hostedzoneid', baseParams);
  console.log(`hostedzoneid is ${hostedZoneId}`);
  const oidcClientRestApiId = getParameterValue('oidcClientRestApiId', baseParams);
  console.log(`oidcClientRestApiId is ${oidcClientRestApiId}`);
  const cognitoUserPoolId = getParameterValue('cognitoUserPoolId', baseParams);
  console.log(`userPoolId is ${cognitoUserPoolId}`);

  console.log('going to create tenantUuid in ssm parameter store');
  await putParameterValue('tenantUuid', tenantuuid, tenantSubDomain);
  console.log('Done creating tenantUuid in ssm parameter store');

  console.log('going to create tenantEmailDomain in ssm parameter store');
  await putParameterValue('tenantEmailDomain', tenantEmailDomain, tenantSubDomain);
  console.log('Done creating tenantEmailDomain in ssm parameter store');

  console.log('Going to create Cognito userpool client');
  const userPoolClient = await createCognitoUserPoolClient(baseParams,
    tenantSubDomain,
    tenantEmailDomain);
  console.log(`Done creating Cognito userpool client, ${JSON.stringify(userPoolClient)}`);

  console.log('going to create Cognito userpool client id in ssm parameter store');
  await putParameterValue('federationCognitoUserPoolAppClientId', userPoolClient.UserPoolClient.ClientId, tenantSubDomain);
  console.log('Done creating federationCognitoUserPoolAppClientId in ssm parameter store');

  console.log('Going to create Cognito userpool client secret in secrets manager');
  await createClientsecretInSecretsManager(tenantSubDomain,
    userPoolClient.UserPoolClient.ClientSecret);
  console.log('Done creating Cognito userpool client secret in secrets manager');

  console.log('Going to create Admin user in Cognito userpool');
  await createAdminUser(emailId, getParameterValue('cognitoUserPoolId', baseParams), tenantuuid);
  console.log('Done creating Admin user in Cognito userpool');

  console.log('Going to create tenant record in tenants table');
  await addTenantRecordToTenantsTable({
    emaildomain: tenantEmailDomain,
    id: tenantuuid,
    name: tenantName,
    onboarded_date: moment().format('YYYY-MM-DD:hh:mm:ss'),
    subdomain: tenantSubDomain,
    cognito: { clientid: userPoolClient.UserPoolClient.ClientId },
    tier: tenantTier,
  }, baseParams);
  console.log('Done creating tenant record in tenants table');
  return { baseParams };
}