public async Task HandleAsync(AWSContextAccountCreatedDomainEvent domainEvent) { var addUserCmd = $"Get-ADUser \"CN=IT BuildSource DevEx,OU=DFDS AS,OU=Mailboxes,OU=Accounts,OU=DFDS,DC=dk,DC=dfds,DC=root\" | Set-ADUser -Add @{{proxyAddresses=\"smtp:{domainEvent.Payload.RoleEmail}\"}}"; var installToolsCmd = $"Get-WindowsCapability -Online | ? {{$_.Name -like 'Rsat.ActiveDirectory.DS-LDS.Tools*'}} | Add-WindowsCapability -Online"; var addDeployCredentials = $"ROOT_ID={domainEvent.Payload.CapabilityRootId} ACCOUNT_ID={domainEvent.Payload.AccountId} ./kube-config-generator.sh"; var sb = new StringBuilder(); sb.AppendLine($"An AWS Context account has been created for ContextId: {domainEvent.Payload.ContextId}"); sb.AppendLine($"Please execute the following command:"); sb.AppendLine(addUserCmd); sb.AppendLine($"Should you not have RSAT tools installed, please do so with command:"); sb.AppendLine(installToolsCmd); sb.AppendLine("---"); sb.AppendLine($"Please execute the following script in K8s root and AWS prime context for this repo https://github.com/dfds/ded-toolbox/tree/master/k8s-service-account-config-to-ssm:"); sb.AppendLine(addDeployCredentials); var hardCodedDedChannelId = new ChannelId("GFYE9B99Q"); await _slackFacade.SendNotificationToChannel(hardCodedDedChannelId.ToString(), sb.ToString()); // Send message to Capability Slack channel var capabilities = await _capabilityRepository.GetById(domainEvent.Payload.CapabilityId); foreach (var capability in capabilities) { await _slackFacade.SendNotificationToChannel(capability.SlackChannelId.ToString(), $"Status update\n{SlackContextAddedToCapabilityDomainEventHandler.CreateTaskTable(true, false, false)}"); } }
public async Task HandleAsync(AWSContextAccountCreatedDomainEvent domainEvent) { var addUserCmd = $"Get-ADUser \"CN=IT BuildSource DevEx,OU=DFDS AS,OU=Mailboxes,OU=Accounts,OU=DFDS,DC=dk,DC=dfds,DC=root\" | Set-ADUser -Add @{{proxyAddresses=\"smtp:{domainEvent.Payload.RoleEmail}\"}}"; var installToolsCmd = $"Get-WindowsCapability -Online | ? {{$_.Name -like 'Rsat.ActiveDirectory.DS-LDS.Tools*'}} | Add-WindowsCapability -Online"; var addDeployCredentialsBash = $"AWS_ROLE_CLOUD_ADMIN=\"[Cloud Administrator Role ARN]\"\\\n" + $"AWS_ROLE_ADFS_ADMIN=\"[ADFS Administrator Role ARN]\"\\\n" + $"poetry run python ./kube_config_generator.py -r {domainEvent.Payload.CapabilityRootId} -a {domainEvent.Payload.AccountId}"; var addDeployCredentialsPS = $"$ENV:AWS_ROLE_CLOUD_ADMIN=\"[Cloud Administrator Role ARN]\"\\\n" + $"$ENV:AWS_ROLE_ADFS_ADMIN=\"[ADFS Administrator Role ARN]\"\\\n" + $"poetry run python .\\kube_config_generator.py -r {domainEvent.Payload.CapabilityRootId} -a {domainEvent.Payload.AccountId}"; // poetry run python kube_config_generator.py -r {domainEvent.Payload.CapabilityRootId} -a {domainEvent.Payload.AccountId} var sb = new StringBuilder(); sb.AppendLine($"*An AWS Context account has been created for ContextId: {domainEvent.Payload.ContextId}*"); sb.AppendLine("\n_Add email address to shared mailbox_"); sb.AppendLine("Execute the following Powershell command:"); sb.AppendLine($"`{addUserCmd}`"); // sb.AppendLine($"Should you not have RSAT tools installed, please do so with command:"); // sb.AppendLine(installToolsCmd); sb.AppendLine($"\n_Generate k8s service account_"); sb.AppendLine($"Execute the Python script from github.com/dfds/ce-toolbox/k8s-service-account-config-to-ssm. Please ensure that the two environment variables are modified to include the correct Role ARNs."); sb.AppendLine($"Bash:\n```{addDeployCredentialsBash}```"); sb.AppendLine($"Powershell:\n```{addDeployCredentialsPS}```"); var hardCodedDedChannelId = new ChannelId("GFYE9B99Q"); await _slackFacade.SendNotificationToChannel(hardCodedDedChannelId.ToString(), sb.ToString()); // Send message to Capability Slack channel var capabilities = await _capabilityRepository.GetById(domainEvent.Payload.CapabilityId); foreach (var capability in capabilities) { await _slackFacade.SendNotificationToChannel(capability.SlackChannelId.ToString(), $"Status update\n{SlackContextAddedToCapabilityDomainEventHandler.CreateTaskTable(true, false, false)}"); } }
public async Task HandleAsync(K8sNamespaceCreatedAndAwsArnConnectedDomainEvent domainEvent) { var capabilities = await _capabilityRepository.GetById(domainEvent.Payload.CapabilityId); // 1st Message, instant. var missingAdsyncTaskTable = SlackContextAddedToCapabilityDomainEventHandler.CreateTaskTable( awsAccDone: true, k8sCreatedDone: true, adsyncDone: false ); foreach (var capability in capabilities) { await _slackFacade.SendNotificationToChannel( capability.SlackChannelId.ToString(), $"Nearly there... time to grab a coffee?\n{missingAdsyncTaskTable}" ); } var timeToWait = (60 * 15); // 15 Minutes var timestamp = DateTimeOffset.UtcNow.ToUnixTimeSeconds() + timeToWait; // 2nd Message, delayed. var allDoneTaskTable = SlackContextAddedToCapabilityDomainEventHandler.CreateTaskTable( awsAccDone: true, k8sCreatedDone: true, adsyncDone: true ); foreach (var capability in capabilities) { await _slackFacade.SendDelayedNotificationToChannel( capability.SlackChannelId.ToString(), $"All done:\n{allDoneTaskTable}", timestamp ); } }