public async Task CreateLaunchConfigurationAsync_should_do_the_thing() { // Arrange var client = new AmazonAutoScalingClient(); var classUnderTest = new LaunchConfigurationService(client); var base64EncodeService = new Base64EncodeService(); var userData = @"#!/bin/bash echo ECS_CLUSTER=lexicon-cluster >> /etc/ecs/ecs.config;echo ECS_BACKEND_HOST= >> /etc/ecs/ecs.config;"; var userDataBase64Encoded = base64EncodeService.Encode(userData); var securityGroup = "sg-010638bf3e6a58e76"; var request = new CreateLaunchConfigurationRequest { LaunchConfigurationName = "CreatedFromSDK", ImageId = Ec2Constants.AmiEcsLaunchTypeEc2, IamInstanceProfile = "ecsInstanceRole", KeyName = "carl-key-pair", UserData = userDataBase64Encoded, InstanceType = "m5a.large", InstanceMonitoring = new InstanceMonitoring() { Enabled = true }, SecurityGroups = new List <string>() { securityGroup }, BlockDeviceMappings = new List <BlockDeviceMapping>() { new BlockDeviceMapping() { DeviceName = "/dev/xvda", Ebs = new Ebs() { DeleteOnTermination = true, VolumeSize = 30, VolumeType = "gp2" } } }, AssociatePublicIpAddress = true }; // Act var response = await classUnderTest.CreateLaunchConfigurationAsync(request); // Assert }
public async Task CreateLaunchTemplateAsync_should_create_and_return_launchTemplate() { var client = new EnvironmentVariables().CloudComputeClient(); var launchTemplateMapper = new LaunchTemplateMapper(); var base64EncodeService = new Base64EncodeService(); var imageId = Ec2Constants.AmiEcsLaunchTypeEc2; var networkInterfaceId = "eni-0a2e37a1f05e287db"; var arn = "arn:aws:iam::032668436735:instance-profile/ecsInstanceRole"; var launchTemplateName = "CreatedFromSDK"; //LexiconServer; var keyName = "carl-key-pair"; var clusterName = "lexicon-cluster"; var userData = @"#!/bin/bash echo ECS_CLUSTER=lexicon-cluster >> /etc/ecs/ecs.config;echo ECS_BACKEND_HOST= >> /etc/ecs/ecs.config;"; var userDataBase64Encoded = base64EncodeService.Encode(userData); // Arrange var createLaunchTemplateModel = new CreateLaunchTemplateModel { LaunchTemplateName = launchTemplateName, LaunchTemplateData = new businessAmazonWebServicesEc2Model.RequestLaunchTemplateData() { EbsOptimized = false, IamInstanceProfile = new businessAmazonWebServicesEc2Model.LaunchTemplateIamInstanceProfileSpecificationRequest() { Arn = arn }, BlockDeviceMappings = new List <businessAmazonWebServicesEc2Model.LaunchTemplateBlockDeviceMappingRequest>() { new businessAmazonWebServicesEc2Model.LaunchTemplateBlockDeviceMappingRequest() { DeviceName = "/dev/xvda", Ebs = new businessAmazonWebServicesEc2Model.LaunchTemplateEbsBlockDeviceRequest() { DeleteOnTermination = true, VolumeSize = 30, VolumeType = VolumeType.Gp2 } }, new businessAmazonWebServicesEc2Model.LaunchTemplateBlockDeviceMappingRequest() { DeviceName = "/dev/xvdcz", Ebs = new businessAmazonWebServicesEc2Model.LaunchTemplateEbsBlockDeviceRequest() { DeleteOnTermination = true, VolumeSize = 30, VolumeType = VolumeType.Gp2 } } }, NetworkInterfaces = new List <businessAmazonWebServicesEc2Model.LaunchTemplateInstanceNetworkInterfaceSpecificationRequest>() { new businessAmazonWebServicesEc2Model.LaunchTemplateInstanceNetworkInterfaceSpecificationRequest() { Description = "", DeviceIndex = 0, Ipv6Addresses = new List <businessAmazonWebServicesEc2Model.InstanceIpv6AddressRequest>(), NetworkInterfaceId = networkInterfaceId } }, ImageId = imageId, InstanceType = InstanceType.M5aLarge, KeyName = keyName, Monitoring = new businessAmazonWebServicesEc2Model.LaunchTemplatesMonitoringRequest() { Enabled = true }, Placement = new businessAmazonWebServicesEc2Model.LaunchTemplatePlacementRequest() { GroupName = "", Tenancy = Tenancy.Default }, DisableApiTermination = false, InstanceInitiatedShutdownBehavior = ShutdownBehavior.Stop, UserData = userDataBase64Encoded, TagSpecifications = new List <businessAmazonWebServicesEc2Model.LaunchTemplateTagSpecificationRequest>() { new businessAmazonWebServicesEc2Model.LaunchTemplateTagSpecificationRequest() { ResourceType = ResourceType.Instance, Tags = new List <businessAmazonWebServicesEc2Model.Tag>() { new businessAmazonWebServicesEc2Model.Tag() { Key = "Description", Value = "lexicon" } } } }, CpuOptions = new businessAmazonWebServicesEc2Model.LaunchTemplateCpuOptionsRequest() { CoreCount = 1, ThreadsPerCore = 2 }, CapacityReservationSpecification = new businessAmazonWebServicesEc2Model.LaunchTemplateCapacityReservationSpecificationRequest() { CapacityReservationPreference = CapacityReservationPreference.Open }, HibernationOptions = new businessAmazonWebServicesEc2Model.LaunchTemplateHibernationOptionsRequest() { Configured = false } } }; ILaunchTemplateService classUnderTest = new LaunchTemplateService(client, launchTemplateMapper); // Act var response = await classUnderTest.CreateLaunchTemplateAsync(createLaunchTemplateModel); // Assert Assert.IsTrue(response.LaunchTemplate.LaunchTemplateId != null); Assert.IsTrue(response.LaunchTemplate.LaunchTemplateId.Length > 0); }