in ess-20220222/alibabacloud_ess20220222/client.py [0:0]
def create_scaling_configuration_with_options(self, tmp_req, runtime):
"""
Auto Scaling automatically creates Elastic Compute Service (ECS) instances based on the specified scaling configuration. ECS instances can be created in the following modes:
* InstancePatternInfos: intelligent configuration mode. In this mode, you need to only specify the number of vCPUs, memory size, instance family, and maximum price. Auto Scaling selects the instance type that has the lowest price based on the configurations to create ECS instances. This mode is available only for scaling groups that reside in virtual private clouds (VPCs). This mode reduces scale-out failures caused by insufficient inventory of instance types.
* InstanceType: In this mode, you must specify one instance type.
* InstanceTypes: In this mode, you can specify more than one instance type.
* InstanceTypeOverrides: In this mode, you can specify multiple instance types and weights for the instance types.
* Cpu and Memory: In this mode, you must specify the number of vCPUs and the memory size. Auto Scaling determines the range of available instance types based on factors such as I/O optimization requirements and zones. Then, Auto Scaling creates ECS instances by using the lowest-priced instance type. This mode is available only if Scaling Policy is set to Cost Optimization Policy and no instance type is specified in the scaling configuration.
> You cannot specify InstanceType, InstanceTypes, InstanceTypeOverrides, and Cpu and Memory at the same time. You can specify InstanceType and InstancePatternInfos or specify InstanceTypes and InstancePatternInfo at the same time. If you specify InstanceType and InstancePatternInfos or specify InstanceTypes and InstancePatternInfos at the same time, Auto Scaling preferentially uses the instance types that are specified by InstanceType or InstanceTypes for scale-outs. If the instance types that are specified by InstanceType or InstanceTypes do not have sufficient inventory, Auto Scaling uses the instance types that are specified by InstancePatternInfos for scale-outs.
@param tmp_req: CreateScalingConfigurationRequest
@param runtime: runtime options for this request RuntimeOptions
@return: CreateScalingConfigurationResponse
"""
UtilClient.validate_model(tmp_req)
request = ess_20220222_models.CreateScalingConfigurationShrinkRequest()
OpenApiUtilClient.convert(tmp_req, request)
if not UtilClient.is_unset(tmp_req.scheduler_options):
request.scheduler_options_shrink = OpenApiUtilClient.array_to_string_with_specified_style(tmp_req.scheduler_options, 'SchedulerOptions', 'json')
query = {}
if not UtilClient.is_unset(request.affinity):
query['Affinity'] = request.affinity
if not UtilClient.is_unset(request.client_token):
query['ClientToken'] = request.client_token
if not UtilClient.is_unset(request.cpu):
query['Cpu'] = request.cpu
if not UtilClient.is_unset(request.credit_specification):
query['CreditSpecification'] = request.credit_specification
if not UtilClient.is_unset(request.custom_priorities):
query['CustomPriorities'] = request.custom_priorities
if not UtilClient.is_unset(request.data_disks):
query['DataDisks'] = request.data_disks
if not UtilClient.is_unset(request.dedicated_host_cluster_id):
query['DedicatedHostClusterId'] = request.dedicated_host_cluster_id
if not UtilClient.is_unset(request.dedicated_host_id):
query['DedicatedHostId'] = request.dedicated_host_id
if not UtilClient.is_unset(request.deletion_protection):
query['DeletionProtection'] = request.deletion_protection
if not UtilClient.is_unset(request.deployment_set_id):
query['DeploymentSetId'] = request.deployment_set_id
if not UtilClient.is_unset(request.host_name):
query['HostName'] = request.host_name
if not UtilClient.is_unset(request.hpc_cluster_id):
query['HpcClusterId'] = request.hpc_cluster_id
if not UtilClient.is_unset(request.image_family):
query['ImageFamily'] = request.image_family
if not UtilClient.is_unset(request.image_id):
query['ImageId'] = request.image_id
if not UtilClient.is_unset(request.image_name):
query['ImageName'] = request.image_name
if not UtilClient.is_unset(request.instance_description):
query['InstanceDescription'] = request.instance_description
if not UtilClient.is_unset(request.instance_name):
query['InstanceName'] = request.instance_name
if not UtilClient.is_unset(request.instance_pattern_infos):
query['InstancePatternInfos'] = request.instance_pattern_infos
if not UtilClient.is_unset(request.instance_type):
query['InstanceType'] = request.instance_type
if not UtilClient.is_unset(request.instance_type_overrides):
query['InstanceTypeOverrides'] = request.instance_type_overrides
if not UtilClient.is_unset(request.instance_types):
query['InstanceTypes'] = request.instance_types
if not UtilClient.is_unset(request.internet_charge_type):
query['InternetChargeType'] = request.internet_charge_type
if not UtilClient.is_unset(request.internet_max_bandwidth_in):
query['InternetMaxBandwidthIn'] = request.internet_max_bandwidth_in
if not UtilClient.is_unset(request.internet_max_bandwidth_out):
query['InternetMaxBandwidthOut'] = request.internet_max_bandwidth_out
if not UtilClient.is_unset(request.io_optimized):
query['IoOptimized'] = request.io_optimized
if not UtilClient.is_unset(request.ipv_6address_count):
query['Ipv6AddressCount'] = request.ipv_6address_count
if not UtilClient.is_unset(request.key_pair_name):
query['KeyPairName'] = request.key_pair_name
if not UtilClient.is_unset(request.load_balancer_weight):
query['LoadBalancerWeight'] = request.load_balancer_weight
if not UtilClient.is_unset(request.memory):
query['Memory'] = request.memory
if not UtilClient.is_unset(request.network_interfaces):
query['NetworkInterfaces'] = request.network_interfaces
if not UtilClient.is_unset(request.owner_account):
query['OwnerAccount'] = request.owner_account
if not UtilClient.is_unset(request.owner_id):
query['OwnerId'] = request.owner_id
if not UtilClient.is_unset(request.password):
query['Password'] = request.password
if not UtilClient.is_unset(request.password_inherit):
query['PasswordInherit'] = request.password_inherit
if not UtilClient.is_unset(request.ram_role_name):
query['RamRoleName'] = request.ram_role_name
if not UtilClient.is_unset(request.resource_group_id):
query['ResourceGroupId'] = request.resource_group_id
if not UtilClient.is_unset(request.resource_owner_account):
query['ResourceOwnerAccount'] = request.resource_owner_account
if not UtilClient.is_unset(request.scaling_configuration_name):
query['ScalingConfigurationName'] = request.scaling_configuration_name
if not UtilClient.is_unset(request.scaling_group_id):
query['ScalingGroupId'] = request.scaling_group_id
if not UtilClient.is_unset(request.scheduler_options_shrink):
query['SchedulerOptions'] = request.scheduler_options_shrink
if not UtilClient.is_unset(request.security_enhancement_strategy):
query['SecurityEnhancementStrategy'] = request.security_enhancement_strategy
if not UtilClient.is_unset(request.security_group_id):
query['SecurityGroupId'] = request.security_group_id
if not UtilClient.is_unset(request.security_group_ids):
query['SecurityGroupIds'] = request.security_group_ids
if not UtilClient.is_unset(request.spot_duration):
query['SpotDuration'] = request.spot_duration
if not UtilClient.is_unset(request.spot_interruption_behavior):
query['SpotInterruptionBehavior'] = request.spot_interruption_behavior
if not UtilClient.is_unset(request.spot_price_limits):
query['SpotPriceLimits'] = request.spot_price_limits
if not UtilClient.is_unset(request.spot_strategy):
query['SpotStrategy'] = request.spot_strategy
if not UtilClient.is_unset(request.storage_set_id):
query['StorageSetId'] = request.storage_set_id
if not UtilClient.is_unset(request.storage_set_partition_number):
query['StorageSetPartitionNumber'] = request.storage_set_partition_number
if not UtilClient.is_unset(request.system_disk_categories):
query['SystemDiskCategories'] = request.system_disk_categories
if not UtilClient.is_unset(request.tags):
query['Tags'] = request.tags
if not UtilClient.is_unset(request.tenancy):
query['Tenancy'] = request.tenancy
if not UtilClient.is_unset(request.user_data):
query['UserData'] = request.user_data
if not UtilClient.is_unset(request.zone_id):
query['ZoneId'] = request.zone_id
if not UtilClient.is_unset(request.image_options):
query['ImageOptions'] = request.image_options
if not UtilClient.is_unset(request.private_pool_options):
query['PrivatePoolOptions'] = request.private_pool_options
if not UtilClient.is_unset(request.system_disk):
query['SystemDisk'] = request.system_disk
req = open_api_models.OpenApiRequest(
query=OpenApiUtilClient.query(query)
)
params = open_api_models.Params(
action='CreateScalingConfiguration',
version='2022-02-22',
protocol='HTTPS',
pathname='/',
method='POST',
auth_type='AK',
style='RPC',
req_body_type='formData',
body_type='json'
)
return TeaCore.from_map(
ess_20220222_models.CreateScalingConfigurationResponse(),
self.call_api(params, req, runtime)
)