public IRequest Marshall(CreateImageRequest createImageRequest) { IRequest request = new DefaultRequest(createImageRequest, "AmazonEC2"); request.Parameters.Add("Action", "CreateImage"); request.Parameters.Add("Version", "2013-10-15"); if (createImageRequest != null && createImageRequest.IsSetInstanceId()) { request.Parameters.Add("InstanceId", StringUtils.FromString(createImageRequest.InstanceId)); } if (createImageRequest != null && createImageRequest.IsSetName()) { request.Parameters.Add("Name", StringUtils.FromString(createImageRequest.Name)); } if (createImageRequest != null && createImageRequest.IsSetDescription()) { request.Parameters.Add("Description", StringUtils.FromString(createImageRequest.Description)); } if (createImageRequest != null && createImageRequest.IsSetNoReboot()) { request.Parameters.Add("NoReboot", StringUtils.FromBool(createImageRequest.NoReboot)); } if (createImageRequest != null) { List <BlockDeviceMapping> blockDeviceMappingsList = createImageRequest.BlockDeviceMappings; int blockDeviceMappingsListIndex = 1; foreach (BlockDeviceMapping blockDeviceMappingsListValue in blockDeviceMappingsList) { if (blockDeviceMappingsListValue != null && blockDeviceMappingsListValue.IsSetVirtualName()) { request.Parameters.Add("BlockDeviceMapping." + blockDeviceMappingsListIndex + ".VirtualName", StringUtils.FromString(blockDeviceMappingsListValue.VirtualName)); } if (blockDeviceMappingsListValue != null && blockDeviceMappingsListValue.IsSetDeviceName()) { request.Parameters.Add("BlockDeviceMapping." + blockDeviceMappingsListIndex + ".DeviceName", StringUtils.FromString(blockDeviceMappingsListValue.DeviceName)); } if (blockDeviceMappingsListValue != null) { EbsBlockDevice ebs = blockDeviceMappingsListValue.Ebs; if (ebs != null && ebs.IsSetSnapshotId()) { request.Parameters.Add("BlockDeviceMapping." + blockDeviceMappingsListIndex + ".Ebs.SnapshotId", StringUtils.FromString(ebs.SnapshotId)); } if (ebs != null && ebs.IsSetVolumeSize()) { request.Parameters.Add("BlockDeviceMapping." + blockDeviceMappingsListIndex + ".Ebs.VolumeSize", StringUtils.FromInt(ebs.VolumeSize)); } if (ebs != null && ebs.IsSetDeleteOnTermination()) { request.Parameters.Add("BlockDeviceMapping." + blockDeviceMappingsListIndex + ".Ebs.DeleteOnTermination", StringUtils.FromBool(ebs.DeleteOnTermination)); } if (ebs != null && ebs.IsSetVolumeType()) { request.Parameters.Add("BlockDeviceMapping." + blockDeviceMappingsListIndex + ".Ebs.VolumeType", StringUtils.FromString(ebs.VolumeType)); } if (ebs != null && ebs.IsSetIops()) { request.Parameters.Add("BlockDeviceMapping." + blockDeviceMappingsListIndex + ".Ebs.Iops", StringUtils.FromInt(ebs.Iops)); } } if (blockDeviceMappingsListValue != null && blockDeviceMappingsListValue.IsSetNoDevice()) { request.Parameters.Add("BlockDeviceMapping." + blockDeviceMappingsListIndex + ".NoDevice", StringUtils.FromString(blockDeviceMappingsListValue.NoDevice)); } blockDeviceMappingsListIndex++; } } return(request); }
internal void LaunchServer(ref bool actionSucceeded, ref string actionMessage) { try { string keyPairPath = string.Empty; LaunchRequest.KeyPairName = $"KeyPair-{Guid.NewGuid().ToString()}"; while (!CreateKeyPair(LaunchRequest.KeyPairName, ref keyPairPath)) { LaunchRequest.KeyPairName = Guid.NewGuid().ToString(); } DescribeVpcsRequest vpcRequest = new DescribeVpcsRequest(); DescribeVpcsResponse vpcResponse = Ec2Client.DescribeVpcsAsync(vpcRequest).GetAwaiter().GetResult(); Vpc defaultVPC = vpcResponse.Vpcs.Find(x => x.IsDefault); //get the default vpc List <Filter> subnetFilter = new List <Filter>() { new Filter() { Name = "availability-zone", Values = new List <string>() { LaunchRequest.AvailabilityZone } }, new Filter() { Name = "vpc-id", Values = new List <string>() { defaultVPC.VpcId } } }; DescribeSubnetsRequest subnetRequest = new DescribeSubnetsRequest(); subnetRequest.Filters = subnetFilter; DescribeSubnetsResponse subnetResponse = Ec2Client.DescribeSubnetsAsync(subnetRequest).GetAwaiter().GetResult(); Subnet defaultSubnet = subnetResponse.Subnets.FirstOrDefault(); Filter SGFilter = new Filter { Name = "vpc-id", Values = new List <string>() { defaultVPC.VpcId } }; DescribeSecurityGroupsRequest SGrequest = new DescribeSecurityGroupsRequest(); SGrequest.Filters.Add(SGFilter); DescribeSecurityGroupsResponse SGresponse = Ec2Client.DescribeSecurityGroupsAsync(SGrequest).GetAwaiter().GetResult(); SecurityGroup defaultSG = SGresponse.SecurityGroups.FirstOrDefault(); InstanceNetworkInterfaceSpecification defaultENI = new InstanceNetworkInterfaceSpecification() { DeviceIndex = 0, SubnetId = defaultSubnet.SubnetId, Groups = new List <string>() { defaultSG.GroupId }, AssociatePublicIpAddress = true }; List <InstanceNetworkInterfaceSpecification> enis = new List <InstanceNetworkInterfaceSpecification>() { defaultENI }; EbsBlockDevice ebsBlockDevice = new EbsBlockDevice { VolumeSize = 10, VolumeType = GetActualStorageType(LaunchRequest.StorageType) }; BlockDeviceMapping blockDeviceMapping = new BlockDeviceMapping { DeviceName = "/dev/xvda" }; blockDeviceMapping.Ebs = ebsBlockDevice; var launchRequest = new RunInstancesRequest() { ImageId = GetImageID(LaunchRequest.AMIType), InstanceType = GetActualInstanceType(LaunchRequest.InstanceType), MinCount = LaunchRequest.NumOfInstances, MaxCount = LaunchRequest.NumOfInstances, KeyName = LaunchRequest.KeyPairName, Placement = new Placement(LaunchRequest.AvailabilityZone), NetworkInterfaces = enis, BlockDeviceMappings = new List <BlockDeviceMapping>() { blockDeviceMapping } }; RunInstancesResponse launchResponse = Ec2Client.RunInstancesAsync(launchRequest).GetAwaiter().GetResult(); List <String> instanceIds = new List <string>(); foreach (Instance instance in launchResponse.Reservation.Instances) { Console.WriteLine(instance.InstanceId); instanceIds.Add(instance.InstanceId); } actionSucceeded = true; actionMessage = $"The instance(s) are being launched. Please check the AWS Console to verify. {keyPairPath}"; } catch (Exception ex) { context.Logger.LogLine($"ServerOperationsHelper::LaunchServer {ex.Message}"); context.Logger.LogLine($"ServerOperationsHelper::LaunchServer {ex.StackTrace}"); actionSucceeded = false; actionMessage = $"Could not launch the server . Please contact your administrator."; } }
public IRequest Marshall(RunInstancesRequest runInstancesRequest) { IRequest request = new DefaultRequest(runInstancesRequest, "AmazonEC2"); request.Parameters.Add("Action", "RunInstances"); request.Parameters.Add("Version", "2014-05-01"); if (runInstancesRequest != null && runInstancesRequest.IsSetImageId()) { request.Parameters.Add("ImageId", StringUtils.FromString(runInstancesRequest.ImageId)); } if (runInstancesRequest != null && runInstancesRequest.IsSetMinCount()) { request.Parameters.Add("MinCount", StringUtils.FromInt(runInstancesRequest.MinCount)); } if (runInstancesRequest != null && runInstancesRequest.IsSetMaxCount()) { request.Parameters.Add("MaxCount", StringUtils.FromInt(runInstancesRequest.MaxCount)); } if (runInstancesRequest != null && runInstancesRequest.IsSetKeyName()) { request.Parameters.Add("KeyName", StringUtils.FromString(runInstancesRequest.KeyName)); } if (runInstancesRequest != null) { List <string> securityGroupsList = runInstancesRequest.SecurityGroups; int securityGroupsListIndex = 1; foreach (string securityGroupsListValue in securityGroupsList) { request.Parameters.Add("SecurityGroup." + securityGroupsListIndex, StringUtils.FromString(securityGroupsListValue)); securityGroupsListIndex++; } } if (runInstancesRequest != null) { List <string> securityGroupIdsList = runInstancesRequest.SecurityGroupIds; int securityGroupIdsListIndex = 1; foreach (string securityGroupIdsListValue in securityGroupIdsList) { request.Parameters.Add("SecurityGroupId." + securityGroupIdsListIndex, StringUtils.FromString(securityGroupIdsListValue)); securityGroupIdsListIndex++; } } if (runInstancesRequest != null && runInstancesRequest.IsSetUserData()) { request.Parameters.Add("UserData", StringUtils.FromString(runInstancesRequest.UserData)); } if (runInstancesRequest != null && runInstancesRequest.IsSetInstanceType()) { request.Parameters.Add("InstanceType", StringUtils.FromString(runInstancesRequest.InstanceType)); } if (runInstancesRequest != null) { Placement placement = runInstancesRequest.Placement; if (placement != null && placement.IsSetAvailabilityZone()) { request.Parameters.Add("Placement.AvailabilityZone", StringUtils.FromString(placement.AvailabilityZone)); } if (placement != null && placement.IsSetGroupName()) { request.Parameters.Add("Placement.GroupName", StringUtils.FromString(placement.GroupName)); } if (placement != null && placement.IsSetTenancy()) { request.Parameters.Add("Placement.Tenancy", StringUtils.FromString(placement.Tenancy)); } } if (runInstancesRequest != null && runInstancesRequest.IsSetKernelId()) { request.Parameters.Add("KernelId", StringUtils.FromString(runInstancesRequest.KernelId)); } if (runInstancesRequest != null && runInstancesRequest.IsSetRamdiskId()) { request.Parameters.Add("RamdiskId", StringUtils.FromString(runInstancesRequest.RamdiskId)); } if (runInstancesRequest != null) { List <BlockDeviceMapping> blockDeviceMappingsList = runInstancesRequest.BlockDeviceMappings; int blockDeviceMappingsListIndex = 1; foreach (BlockDeviceMapping blockDeviceMappingsListValue in blockDeviceMappingsList) { if (blockDeviceMappingsListValue != null && blockDeviceMappingsListValue.IsSetVirtualName()) { request.Parameters.Add("BlockDeviceMapping." + blockDeviceMappingsListIndex + ".VirtualName", StringUtils.FromString(blockDeviceMappingsListValue.VirtualName)); } if (blockDeviceMappingsListValue != null && blockDeviceMappingsListValue.IsSetDeviceName()) { request.Parameters.Add("BlockDeviceMapping." + blockDeviceMappingsListIndex + ".DeviceName", StringUtils.FromString(blockDeviceMappingsListValue.DeviceName)); } if (blockDeviceMappingsListValue != null) { EbsBlockDevice ebs = blockDeviceMappingsListValue.Ebs; if (ebs != null && ebs.IsSetSnapshotId()) { request.Parameters.Add("BlockDeviceMapping." + blockDeviceMappingsListIndex + ".Ebs.SnapshotId", StringUtils.FromString(ebs.SnapshotId)); } if (ebs != null && ebs.IsSetVolumeSize()) { request.Parameters.Add("BlockDeviceMapping." + blockDeviceMappingsListIndex + ".Ebs.VolumeSize", StringUtils.FromInt(ebs.VolumeSize)); } if (ebs != null && ebs.IsSetDeleteOnTermination()) { request.Parameters.Add("BlockDeviceMapping." + blockDeviceMappingsListIndex + ".Ebs.DeleteOnTermination", StringUtils.FromBool(ebs.DeleteOnTermination)); } if (ebs != null && ebs.IsSetVolumeType()) { request.Parameters.Add("BlockDeviceMapping." + blockDeviceMappingsListIndex + ".Ebs.VolumeType", StringUtils.FromString(ebs.VolumeType)); } if (ebs != null && ebs.IsSetIops()) { request.Parameters.Add("BlockDeviceMapping." + blockDeviceMappingsListIndex + ".Ebs.Iops", StringUtils.FromInt(ebs.Iops)); } if (ebs != null && ebs.IsSetEncrypted()) { request.Parameters.Add("BlockDeviceMapping." + blockDeviceMappingsListIndex + ".Ebs.Encrypted", StringUtils.FromBool(ebs.Encrypted)); } } if (blockDeviceMappingsListValue != null && blockDeviceMappingsListValue.IsSetNoDevice()) { request.Parameters.Add("BlockDeviceMapping." + blockDeviceMappingsListIndex + ".NoDevice", StringUtils.FromString(blockDeviceMappingsListValue.NoDevice)); } blockDeviceMappingsListIndex++; } } if (runInstancesRequest != null && runInstancesRequest.IsSetMonitoring()) { request.Parameters.Add("Monitoring.Enabled", StringUtils.FromBool(runInstancesRequest.Monitoring)); } if (runInstancesRequest != null && runInstancesRequest.IsSetSubnetId()) { request.Parameters.Add("SubnetId", StringUtils.FromString(runInstancesRequest.SubnetId)); } if (runInstancesRequest != null && runInstancesRequest.IsSetDisableApiTermination()) { request.Parameters.Add("DisableApiTermination", StringUtils.FromBool(runInstancesRequest.DisableApiTermination)); } if (runInstancesRequest != null && runInstancesRequest.IsSetInstanceInitiatedShutdownBehavior()) { request.Parameters.Add("InstanceInitiatedShutdownBehavior", StringUtils.FromString(runInstancesRequest.InstanceInitiatedShutdownBehavior)); } if (runInstancesRequest != null && runInstancesRequest.IsSetPrivateIpAddress()) { request.Parameters.Add("PrivateIpAddress", StringUtils.FromString(runInstancesRequest.PrivateIpAddress)); } if (runInstancesRequest != null && runInstancesRequest.IsSetClientToken()) { request.Parameters.Add("ClientToken", StringUtils.FromString(runInstancesRequest.ClientToken)); } if (runInstancesRequest != null && runInstancesRequest.IsSetAdditionalInfo()) { request.Parameters.Add("AdditionalInfo", StringUtils.FromString(runInstancesRequest.AdditionalInfo)); } if (runInstancesRequest != null) { List <InstanceNetworkInterfaceSpecification> networkInterfacesList = runInstancesRequest.NetworkInterfaces; int networkInterfacesListIndex = 1; foreach (InstanceNetworkInterfaceSpecification networkInterfacesListValue in networkInterfacesList) { if (networkInterfacesListValue != null && networkInterfacesListValue.IsSetNetworkInterfaceId()) { request.Parameters.Add("NetworkInterface." + networkInterfacesListIndex + ".NetworkInterfaceId", StringUtils.FromString(networkInterfacesListValue.NetworkInterfaceId)); } if (networkInterfacesListValue != null && networkInterfacesListValue.IsSetDeviceIndex()) { request.Parameters.Add("NetworkInterface." + networkInterfacesListIndex + ".DeviceIndex", StringUtils.FromInt(networkInterfacesListValue.DeviceIndex)); } if (networkInterfacesListValue != null && networkInterfacesListValue.IsSetSubnetId()) { request.Parameters.Add("NetworkInterface." + networkInterfacesListIndex + ".SubnetId", StringUtils.FromString(networkInterfacesListValue.SubnetId)); } if (networkInterfacesListValue != null && networkInterfacesListValue.IsSetDescription()) { request.Parameters.Add("NetworkInterface." + networkInterfacesListIndex + ".Description", StringUtils.FromString(networkInterfacesListValue.Description)); } if (networkInterfacesListValue != null && networkInterfacesListValue.IsSetPrivateIpAddress()) { request.Parameters.Add("NetworkInterface." + networkInterfacesListIndex + ".PrivateIpAddress", StringUtils.FromString(networkInterfacesListValue.PrivateIpAddress)); } if (networkInterfacesListValue != null) { List <string> groupsList = networkInterfacesListValue.Groups; int groupsListIndex = 1; foreach (string groupsListValue in groupsList) { request.Parameters.Add("NetworkInterface." + networkInterfacesListIndex + ".SecurityGroupId." + groupsListIndex, StringUtils.FromString(groupsListValue)); groupsListIndex++; } } if (networkInterfacesListValue != null && networkInterfacesListValue.IsSetDeleteOnTermination()) { request.Parameters.Add("NetworkInterface." + networkInterfacesListIndex + ".DeleteOnTermination", StringUtils.FromBool(networkInterfacesListValue.DeleteOnTermination)); } if (networkInterfacesListValue != null) { List <PrivateIpAddressSpecification> privateIpAddressesList = networkInterfacesListValue.PrivateIpAddresses; int privateIpAddressesListIndex = 1; foreach (PrivateIpAddressSpecification privateIpAddressesListValue in privateIpAddressesList) { if (privateIpAddressesListValue != null && privateIpAddressesListValue.IsSetPrivateIpAddress()) { request.Parameters.Add("NetworkInterface." + networkInterfacesListIndex + ".PrivateIpAddresses." + privateIpAddressesListIndex + ".PrivateIpAddress", StringUtils.FromString(privateIpAddressesListValue.PrivateIpAddress)); } if (privateIpAddressesListValue != null && privateIpAddressesListValue.IsSetPrimary()) { request.Parameters.Add("NetworkInterface." + networkInterfacesListIndex + ".PrivateIpAddresses." + privateIpAddressesListIndex + ".Primary", StringUtils.FromBool(privateIpAddressesListValue.Primary)); } privateIpAddressesListIndex++; } } if (networkInterfacesListValue != null && networkInterfacesListValue.IsSetSecondaryPrivateIpAddressCount()) { request.Parameters.Add("NetworkInterface." + networkInterfacesListIndex + ".SecondaryPrivateIpAddressCount", StringUtils.FromInt(networkInterfacesListValue.SecondaryPrivateIpAddressCount)); } if (networkInterfacesListValue != null && networkInterfacesListValue.IsSetAssociatePublicIpAddress()) { request.Parameters.Add("NetworkInterface." + networkInterfacesListIndex + ".AssociatePublicIpAddress", StringUtils.FromBool(networkInterfacesListValue.AssociatePublicIpAddress)); } networkInterfacesListIndex++; } } if (runInstancesRequest != null) { IamInstanceProfileSpecification iamInstanceProfile = runInstancesRequest.IamInstanceProfile; if (iamInstanceProfile != null && iamInstanceProfile.IsSetArn()) { request.Parameters.Add("IamInstanceProfile.Arn", StringUtils.FromString(iamInstanceProfile.Arn)); } if (iamInstanceProfile != null && iamInstanceProfile.IsSetName()) { request.Parameters.Add("IamInstanceProfile.Name", StringUtils.FromString(iamInstanceProfile.Name)); } } if (runInstancesRequest != null && runInstancesRequest.IsSetEbsOptimized()) { request.Parameters.Add("EbsOptimized", StringUtils.FromBool(runInstancesRequest.EbsOptimized)); } return(request); }
/// <summary> /// For root device naming scheme check: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/device_naming.html /// IOPS range: 100-10'000 GP2, 100-20'000 IO1 /// </summary> public async Task <RunInstancesResponse> CreateInstanceAsync( string imageId, InstanceType instanceType, string keyName, IEnumerable <string> securityGroupIDs, string subnetId, string roleName, ShutdownBehavior shutdownBehavior, bool associatePublicIpAddress, IDictionary <string, string> tags, bool ebsOptymalized, int rootVolumeSize, string rootDeviceName = "/dev/sd1", string rootVolumeType = "GP2", string rootSnapshotId = null, int rootIOPS = 100, bool monitoring = false, string kmsKeyId = null, CancellationToken cancellationToken = default(CancellationToken)) { if (securityGroupIDs.IsNullOrEmpty()) { throw new Exception($"Paramer '{nameof(securityGroupIDs)}' was not specified, can't create new instance."); } var sgrups = new List <string>(); var allSGroups = await DescribeSecurityGroupsAsync(cancellationToken : cancellationToken); if (!allSGroups.IsNullOrEmpty()) { foreach (var sg in securityGroupIDs) { var sgname = sg?.Trim()?.ToLower(); if (sgname.IsNullOrEmpty()) { continue; } var sgroup = allSGroups.FirstOrDefault(x => x.GroupId == sgname); if (sgroup == null) { sgroup = allSGroups.FirstOrDefault(x => x?.GroupName?.Trim()?.ToLower() == sgname); } if (sgroup != null) { sgrups.Add(sgroup.GroupId); } } } sgrups = sgrups.Distinct().ToList(); if (sgrups.IsNullOrEmpty()) { throw new Exception($"No security groups with following names nor id's were found '{securityGroupIDs?.JsonSerialize() ?? "undefined"}'"); } var volumeType = VolumeType.FindValue(rootVolumeType); EbsBlockDevice ebs; if (volumeType == VolumeType.Io1) { ebs = new EbsBlockDevice() { DeleteOnTermination = true, VolumeType = volumeType, Iops = rootIOPS, VolumeSize = rootVolumeSize, SnapshotId = rootSnapshotId, Encrypted = !kmsKeyId.IsNullOrEmpty(), KmsKeyId = kmsKeyId }; } else { ebs = new EbsBlockDevice() { DeleteOnTermination = true, VolumeType = volumeType, VolumeSize = rootVolumeSize, SnapshotId = rootSnapshotId, Encrypted = !kmsKeyId.IsNullOrEmpty(), KmsKeyId = kmsKeyId }; } var result = await _client.RunInstancesAsync(new RunInstancesRequest() { ImageId = imageId, InstanceType = instanceType, MinCount = 1, MaxCount = 1, KeyName = keyName, InstanceInitiatedShutdownBehavior = shutdownBehavior, DisableApiTermination = false, IamInstanceProfile = roleName.IsNullOrEmpty() ? null : new IamInstanceProfileSpecification() { Name = roleName }, NetworkInterfaces = new List <InstanceNetworkInterfaceSpecification>() { new InstanceNetworkInterfaceSpecification() { DeviceIndex = 0, SubnetId = subnetId, Groups = sgrups, AssociatePublicIpAddress = associatePublicIpAddress, Description = "Primary network interface", DeleteOnTermination = true, } }, TagSpecifications = new List <TagSpecification>() { new TagSpecification() { ResourceType = ResourceType.Instance, Tags = tags.Select(x => new Tag() { Key = x.Key, Value = x.Value }).ToList() } }, EbsOptimized = ebsOptymalized, BlockDeviceMappings = new List <BlockDeviceMapping>() { new BlockDeviceMapping() { DeviceName = rootDeviceName, Ebs = ebs, } }, CreditSpecification = new CreditSpecificationRequest() { CpuCredits = "unlimited" }, Monitoring = monitoring, }, cancellationToken).EnsureSuccessAsync(); return(result); }
public IRequest Marshall(RequestSpotInstancesRequest requestSpotInstancesRequest) { IRequest request = new DefaultRequest(requestSpotInstancesRequest, "AmazonEC2"); request.Parameters.Add("Action", "RequestSpotInstances"); request.Parameters.Add("Version", "2014-02-01"); if (requestSpotInstancesRequest != null && requestSpotInstancesRequest.IsSetSpotPrice()) { request.Parameters.Add("SpotPrice", StringUtils.FromString(requestSpotInstancesRequest.SpotPrice)); } if (requestSpotInstancesRequest != null && requestSpotInstancesRequest.IsSetInstanceCount()) { request.Parameters.Add("InstanceCount", StringUtils.FromInt(requestSpotInstancesRequest.InstanceCount)); } if (requestSpotInstancesRequest != null && requestSpotInstancesRequest.IsSetType()) { request.Parameters.Add("Type", StringUtils.FromString(requestSpotInstancesRequest.Type)); } if (requestSpotInstancesRequest != null && requestSpotInstancesRequest.IsSetValidFrom()) { request.Parameters.Add("ValidFrom", StringUtils.FromDateTime(requestSpotInstancesRequest.ValidFrom)); } if (requestSpotInstancesRequest != null && requestSpotInstancesRequest.IsSetValidUntil()) { request.Parameters.Add("ValidUntil", StringUtils.FromDateTime(requestSpotInstancesRequest.ValidUntil)); } if (requestSpotInstancesRequest != null && requestSpotInstancesRequest.IsSetLaunchGroup()) { request.Parameters.Add("LaunchGroup", StringUtils.FromString(requestSpotInstancesRequest.LaunchGroup)); } if (requestSpotInstancesRequest != null && requestSpotInstancesRequest.IsSetAvailabilityZoneGroup()) { request.Parameters.Add("AvailabilityZoneGroup", StringUtils.FromString(requestSpotInstancesRequest.AvailabilityZoneGroup)); } if (requestSpotInstancesRequest != null) { LaunchSpecification launchSpecification = requestSpotInstancesRequest.LaunchSpecification; if (launchSpecification != null && launchSpecification.IsSetImageId()) { request.Parameters.Add("LaunchSpecification.ImageId", StringUtils.FromString(launchSpecification.ImageId)); } if (launchSpecification != null && launchSpecification.IsSetKeyName()) { request.Parameters.Add("LaunchSpecification.KeyName", StringUtils.FromString(launchSpecification.KeyName)); } if (launchSpecification != null) { List <GroupIdentifier> allSecurityGroupsList = launchSpecification.AllSecurityGroups; int allSecurityGroupsListIndex = 1; foreach (GroupIdentifier allSecurityGroupsListValue in allSecurityGroupsList) { if (allSecurityGroupsListValue != null && allSecurityGroupsListValue.IsSetGroupName()) { request.Parameters.Add("LaunchSpecification.GroupSet." + allSecurityGroupsListIndex + ".GroupName", StringUtils.FromString(allSecurityGroupsListValue.GroupName)); } if (allSecurityGroupsListValue != null && allSecurityGroupsListValue.IsSetGroupId()) { request.Parameters.Add("LaunchSpecification.GroupSet." + allSecurityGroupsListIndex + ".GroupId", StringUtils.FromString(allSecurityGroupsListValue.GroupId)); } allSecurityGroupsListIndex++; } } if (launchSpecification != null) { List <string> securityGroupsList = launchSpecification.SecurityGroups; int securityGroupsListIndex = 1; foreach (string securityGroupsListValue in securityGroupsList) { request.Parameters.Add("LaunchSpecification.SecurityGroup." + securityGroupsListIndex, StringUtils.FromString(securityGroupsListValue)); securityGroupsListIndex++; } } if (launchSpecification != null && launchSpecification.IsSetUserData()) { request.Parameters.Add("LaunchSpecification.UserData", StringUtils.FromString(launchSpecification.UserData)); } if (launchSpecification != null && launchSpecification.IsSetAddressingType()) { request.Parameters.Add("LaunchSpecification.AddressingType", StringUtils.FromString(launchSpecification.AddressingType)); } if (launchSpecification != null && launchSpecification.IsSetInstanceType()) { request.Parameters.Add("LaunchSpecification.InstanceType", StringUtils.FromString(launchSpecification.InstanceType)); } if (launchSpecification != null) { SpotPlacement placement = launchSpecification.Placement; if (placement != null && placement.IsSetAvailabilityZone()) { request.Parameters.Add("LaunchSpecification.Placement.AvailabilityZone", StringUtils.FromString(placement.AvailabilityZone)); } if (placement != null && placement.IsSetGroupName()) { request.Parameters.Add("LaunchSpecification.Placement.GroupName", StringUtils.FromString(placement.GroupName)); } } if (launchSpecification != null && launchSpecification.IsSetKernelId()) { request.Parameters.Add("LaunchSpecification.KernelId", StringUtils.FromString(launchSpecification.KernelId)); } if (launchSpecification != null && launchSpecification.IsSetRamdiskId()) { request.Parameters.Add("LaunchSpecification.RamdiskId", StringUtils.FromString(launchSpecification.RamdiskId)); } if (launchSpecification != null) { List <BlockDeviceMapping> blockDeviceMappingsList = launchSpecification.BlockDeviceMappings; int blockDeviceMappingsListIndex = 1; foreach (BlockDeviceMapping blockDeviceMappingsListValue in blockDeviceMappingsList) { if (blockDeviceMappingsListValue != null && blockDeviceMappingsListValue.IsSetVirtualName()) { request.Parameters.Add("LaunchSpecification.BlockDeviceMapping." + blockDeviceMappingsListIndex + ".VirtualName", StringUtils.FromString(blockDeviceMappingsListValue.VirtualName)); } if (blockDeviceMappingsListValue != null && blockDeviceMappingsListValue.IsSetDeviceName()) { request.Parameters.Add("LaunchSpecification.BlockDeviceMapping." + blockDeviceMappingsListIndex + ".DeviceName", StringUtils.FromString(blockDeviceMappingsListValue.DeviceName)); } if (blockDeviceMappingsListValue != null) { EbsBlockDevice ebs = blockDeviceMappingsListValue.Ebs; if (ebs != null && ebs.IsSetSnapshotId()) { request.Parameters.Add("LaunchSpecification.BlockDeviceMapping." + blockDeviceMappingsListIndex + ".Ebs.SnapshotId", StringUtils.FromString(ebs.SnapshotId)); } if (ebs != null && ebs.IsSetVolumeSize()) { request.Parameters.Add("LaunchSpecification.BlockDeviceMapping." + blockDeviceMappingsListIndex + ".Ebs.VolumeSize", StringUtils.FromInt(ebs.VolumeSize)); } if (ebs != null && ebs.IsSetDeleteOnTermination()) { request.Parameters.Add("LaunchSpecification.BlockDeviceMapping." + blockDeviceMappingsListIndex + ".Ebs.DeleteOnTermination", StringUtils.FromBool(ebs.DeleteOnTermination)); } if (ebs != null && ebs.IsSetVolumeType()) { request.Parameters.Add("LaunchSpecification.BlockDeviceMapping." + blockDeviceMappingsListIndex + ".Ebs.VolumeType", StringUtils.FromString(ebs.VolumeType)); } if (ebs != null && ebs.IsSetIops()) { request.Parameters.Add("LaunchSpecification.BlockDeviceMapping." + blockDeviceMappingsListIndex + ".Ebs.Iops", StringUtils.FromInt(ebs.Iops)); } } if (blockDeviceMappingsListValue != null && blockDeviceMappingsListValue.IsSetNoDevice()) { request.Parameters.Add("LaunchSpecification.BlockDeviceMapping." + blockDeviceMappingsListIndex + ".NoDevice", StringUtils.FromString(blockDeviceMappingsListValue.NoDevice)); } blockDeviceMappingsListIndex++; } } if (launchSpecification != null && launchSpecification.IsSetMonitoringEnabled()) { request.Parameters.Add("LaunchSpecification.Monitoring.Enabled", StringUtils.FromBool(launchSpecification.MonitoringEnabled)); } if (launchSpecification != null && launchSpecification.IsSetSubnetId()) { request.Parameters.Add("LaunchSpecification.SubnetId", StringUtils.FromString(launchSpecification.SubnetId)); } if (launchSpecification != null) { List <InstanceNetworkInterfaceSpecification> networkInterfacesList = launchSpecification.NetworkInterfaces; int networkInterfacesListIndex = 1; foreach (InstanceNetworkInterfaceSpecification networkInterfacesListValue in networkInterfacesList) { if (networkInterfacesListValue != null && networkInterfacesListValue.IsSetNetworkInterfaceId()) { request.Parameters.Add("LaunchSpecification.NetworkInterface." + networkInterfacesListIndex + ".NetworkInterfaceId", StringUtils.FromString(networkInterfacesListValue.NetworkInterfaceId)); } if (networkInterfacesListValue != null && networkInterfacesListValue.IsSetDeviceIndex()) { request.Parameters.Add("LaunchSpecification.NetworkInterface." + networkInterfacesListIndex + ".DeviceIndex", StringUtils.FromInt(networkInterfacesListValue.DeviceIndex)); } if (networkInterfacesListValue != null && networkInterfacesListValue.IsSetSubnetId()) { request.Parameters.Add("LaunchSpecification.NetworkInterface." + networkInterfacesListIndex + ".SubnetId", StringUtils.FromString(networkInterfacesListValue.SubnetId)); } if (networkInterfacesListValue != null && networkInterfacesListValue.IsSetDescription()) { request.Parameters.Add("LaunchSpecification.NetworkInterface." + networkInterfacesListIndex + ".Description", StringUtils.FromString(networkInterfacesListValue.Description)); } if (networkInterfacesListValue != null && networkInterfacesListValue.IsSetPrivateIpAddress()) { request.Parameters.Add("LaunchSpecification.NetworkInterface." + networkInterfacesListIndex + ".PrivateIpAddress", StringUtils.FromString(networkInterfacesListValue.PrivateIpAddress)); } if (networkInterfacesListValue != null) { List <string> groupsList = networkInterfacesListValue.Groups; int groupsListIndex = 1; foreach (string groupsListValue in groupsList) { request.Parameters.Add("LaunchSpecification.NetworkInterface." + networkInterfacesListIndex + ".SecurityGroupId." + groupsListIndex, StringUtils.FromString(groupsListValue)); groupsListIndex++; } } if (networkInterfacesListValue != null && networkInterfacesListValue.IsSetDeleteOnTermination()) { request.Parameters.Add("LaunchSpecification.NetworkInterface." + networkInterfacesListIndex + ".DeleteOnTermination", StringUtils.FromBool(networkInterfacesListValue.DeleteOnTermination)); } if (networkInterfacesListValue != null) { List <PrivateIpAddressSpecification> privateIpAddressesList = networkInterfacesListValue.PrivateIpAddresses; int privateIpAddressesListIndex = 1; foreach (PrivateIpAddressSpecification privateIpAddressesListValue in privateIpAddressesList) { if (privateIpAddressesListValue != null && privateIpAddressesListValue.IsSetPrivateIpAddress()) { request.Parameters.Add("LaunchSpecification.NetworkInterface." + networkInterfacesListIndex + ".PrivateIpAddresses." + privateIpAddressesListIndex + ".PrivateIpAddress", StringUtils.FromString(privateIpAddressesListValue.PrivateIpAddress)); } if (privateIpAddressesListValue != null && privateIpAddressesListValue.IsSetPrimary()) { request.Parameters.Add("LaunchSpecification.NetworkInterface." + networkInterfacesListIndex + ".PrivateIpAddresses." + privateIpAddressesListIndex + ".Primary", StringUtils.FromBool(privateIpAddressesListValue.Primary)); } privateIpAddressesListIndex++; } } if (networkInterfacesListValue != null && networkInterfacesListValue.IsSetSecondaryPrivateIpAddressCount()) { request.Parameters.Add("LaunchSpecification.NetworkInterface." + networkInterfacesListIndex + ".SecondaryPrivateIpAddressCount", StringUtils.FromInt(networkInterfacesListValue.SecondaryPrivateIpAddressCount)); } if (networkInterfacesListValue != null && networkInterfacesListValue.IsSetAssociatePublicIpAddress()) { request.Parameters.Add("LaunchSpecification.NetworkInterface." + networkInterfacesListIndex + ".AssociatePublicIpAddress", StringUtils.FromBool(networkInterfacesListValue.AssociatePublicIpAddress)); } networkInterfacesListIndex++; } } if (launchSpecification != null) { IamInstanceProfileSpecification iamInstanceProfile = launchSpecification.IamInstanceProfile; if (iamInstanceProfile != null && iamInstanceProfile.IsSetArn()) { request.Parameters.Add("LaunchSpecification.IamInstanceProfile.Arn", StringUtils.FromString(iamInstanceProfile.Arn)); } if (iamInstanceProfile != null && iamInstanceProfile.IsSetName()) { request.Parameters.Add("LaunchSpecification.IamInstanceProfile.Name", StringUtils.FromString(iamInstanceProfile.Name)); } } if (launchSpecification != null && launchSpecification.IsSetEbsOptimized()) { request.Parameters.Add("LaunchSpecification.EbsOptimized", StringUtils.FromBool(launchSpecification.EbsOptimized)); } } return(request); }
public AwsBootstrapEbsOptionsBuilder(EbsBlockDevice values) { _values = values; }
public IRequest Marshall(RegisterImageRequest registerImageRequest) { IRequest request = new DefaultRequest(registerImageRequest, "AmazonEC2"); request.Parameters.Add("Action", "RegisterImage"); request.Parameters.Add("Version", "2014-06-15"); if (registerImageRequest != null && registerImageRequest.IsSetImageLocation()) { request.Parameters.Add("ImageLocation", StringUtils.FromString(registerImageRequest.ImageLocation)); } if (registerImageRequest != null && registerImageRequest.IsSetName()) { request.Parameters.Add("Name", StringUtils.FromString(registerImageRequest.Name)); } if (registerImageRequest != null && registerImageRequest.IsSetDescription()) { request.Parameters.Add("Description", StringUtils.FromString(registerImageRequest.Description)); } if (registerImageRequest != null && registerImageRequest.IsSetArchitecture()) { request.Parameters.Add("Architecture", StringUtils.FromString(registerImageRequest.Architecture)); } if (registerImageRequest != null && registerImageRequest.IsSetKernelId()) { request.Parameters.Add("KernelId", StringUtils.FromString(registerImageRequest.KernelId)); } if (registerImageRequest != null && registerImageRequest.IsSetRamdiskId()) { request.Parameters.Add("RamdiskId", StringUtils.FromString(registerImageRequest.RamdiskId)); } if (registerImageRequest != null && registerImageRequest.IsSetRootDeviceName()) { request.Parameters.Add("RootDeviceName", StringUtils.FromString(registerImageRequest.RootDeviceName)); } if (registerImageRequest != null) { List <BlockDeviceMapping> blockDeviceMappingsList = registerImageRequest.BlockDeviceMappings; int blockDeviceMappingsListIndex = 1; foreach (BlockDeviceMapping blockDeviceMappingsListValue in blockDeviceMappingsList) { if (blockDeviceMappingsListValue != null && blockDeviceMappingsListValue.IsSetVirtualName()) { request.Parameters.Add("BlockDeviceMapping." + blockDeviceMappingsListIndex + ".VirtualName", StringUtils.FromString(blockDeviceMappingsListValue.VirtualName)); } if (blockDeviceMappingsListValue != null && blockDeviceMappingsListValue.IsSetDeviceName()) { request.Parameters.Add("BlockDeviceMapping." + blockDeviceMappingsListIndex + ".DeviceName", StringUtils.FromString(blockDeviceMappingsListValue.DeviceName)); } if (blockDeviceMappingsListValue != null) { EbsBlockDevice ebs = blockDeviceMappingsListValue.Ebs; if (ebs != null && ebs.IsSetSnapshotId()) { request.Parameters.Add("BlockDeviceMapping." + blockDeviceMappingsListIndex + ".Ebs.SnapshotId", StringUtils.FromString(ebs.SnapshotId)); } if (ebs != null && ebs.IsSetVolumeSize()) { request.Parameters.Add("BlockDeviceMapping." + blockDeviceMappingsListIndex + ".Ebs.VolumeSize", StringUtils.FromInt(ebs.VolumeSize)); } if (ebs != null && ebs.IsSetDeleteOnTermination()) { request.Parameters.Add("BlockDeviceMapping." + blockDeviceMappingsListIndex + ".Ebs.DeleteOnTermination", StringUtils.FromBool(ebs.DeleteOnTermination)); } if (ebs != null && ebs.IsSetVolumeType()) { request.Parameters.Add("BlockDeviceMapping." + blockDeviceMappingsListIndex + ".Ebs.VolumeType", StringUtils.FromString(ebs.VolumeType)); } if (ebs != null && ebs.IsSetIops()) { request.Parameters.Add("BlockDeviceMapping." + blockDeviceMappingsListIndex + ".Ebs.Iops", StringUtils.FromInt(ebs.Iops)); } if (ebs != null && ebs.IsSetEncrypted()) { request.Parameters.Add("BlockDeviceMapping." + blockDeviceMappingsListIndex + ".Ebs.Encrypted", StringUtils.FromBool(ebs.Encrypted)); } } if (blockDeviceMappingsListValue != null && blockDeviceMappingsListValue.IsSetNoDevice()) { request.Parameters.Add("BlockDeviceMapping." + blockDeviceMappingsListIndex + ".NoDevice", StringUtils.FromString(blockDeviceMappingsListValue.NoDevice)); } blockDeviceMappingsListIndex++; } } if (registerImageRequest != null && registerImageRequest.IsSetVirtualizationType()) { request.Parameters.Add("VirtualizationType", StringUtils.FromString(registerImageRequest.VirtualizationType)); } if (registerImageRequest != null && registerImageRequest.IsSetSriovNetSupport()) { request.Parameters.Add("SriovNetSupport", StringUtils.FromString(registerImageRequest.SriovNetSupport)); } return(request); }