Add instance-id filter to describe_auto_scaling_instances
This commit is contained in:
parent
79eea51bf4
commit
593e5dc86a
@ -655,10 +655,12 @@ class AutoScalingBackend(BaseBackend):
|
|||||||
self.set_desired_capacity(group_name, 0)
|
self.set_desired_capacity(group_name, 0)
|
||||||
self.autoscaling_groups.pop(group_name, None)
|
self.autoscaling_groups.pop(group_name, None)
|
||||||
|
|
||||||
def describe_auto_scaling_instances(self):
|
def describe_auto_scaling_instances(self, instance_ids):
|
||||||
instance_states = []
|
instance_states = []
|
||||||
for group in self.autoscaling_groups.values():
|
for group in self.autoscaling_groups.values():
|
||||||
instance_states.extend(group.instance_states)
|
instance_states.extend(
|
||||||
|
[x for x in group.instance_states if not instance_ids or x.instance.id in instance_ids]
|
||||||
|
)
|
||||||
return instance_states
|
return instance_states
|
||||||
|
|
||||||
def attach_instances(self, group_name, instance_ids):
|
def attach_instances(self, group_name, instance_ids):
|
||||||
|
@ -226,7 +226,9 @@ class AutoScalingResponse(BaseResponse):
|
|||||||
return template.render()
|
return template.render()
|
||||||
|
|
||||||
def describe_auto_scaling_instances(self):
|
def describe_auto_scaling_instances(self):
|
||||||
instance_states = self.autoscaling_backend.describe_auto_scaling_instances()
|
instance_states = self.autoscaling_backend.describe_auto_scaling_instances(
|
||||||
|
instance_ids=self._get_multi_param("InstanceIds.member")
|
||||||
|
)
|
||||||
template = self.response_template(DESCRIBE_AUTOSCALING_INSTANCES_TEMPLATE)
|
template = self.response_template(DESCRIBE_AUTOSCALING_INSTANCES_TEMPLATE)
|
||||||
return template.render(instance_states=instance_states)
|
return template.render(instance_states=instance_states)
|
||||||
|
|
||||||
|
@ -843,13 +843,39 @@ def test_describe_autoscaling_instances_boto3():
|
|||||||
NewInstancesProtectedFromScaleIn=True,
|
NewInstancesProtectedFromScaleIn=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
response = client.describe_auto_scaling_instances()
|
||||||
|
len(response["AutoScalingInstances"]).should.equal(5)
|
||||||
|
for instance in response["AutoScalingInstances"]:
|
||||||
|
instance["AutoScalingGroupName"].should.equal("test_asg")
|
||||||
|
instance["AvailabilityZone"].should.equal("us-east-1a")
|
||||||
|
instance["ProtectedFromScaleIn"].should.equal(True)
|
||||||
|
|
||||||
|
|
||||||
|
@mock_autoscaling
|
||||||
|
def test_describe_autoscaling_instances_instanceid_filter():
|
||||||
|
mocked_networking = setup_networking()
|
||||||
|
client = boto3.client("autoscaling", region_name="us-east-1")
|
||||||
|
_ = client.create_launch_configuration(
|
||||||
|
LaunchConfigurationName="test_launch_configuration"
|
||||||
|
)
|
||||||
|
_ = client.create_auto_scaling_group(
|
||||||
|
AutoScalingGroupName="test_asg",
|
||||||
|
LaunchConfigurationName="test_launch_configuration",
|
||||||
|
MinSize=0,
|
||||||
|
MaxSize=20,
|
||||||
|
DesiredCapacity=5,
|
||||||
|
VPCZoneIdentifier=mocked_networking["subnet1"],
|
||||||
|
NewInstancesProtectedFromScaleIn=True,
|
||||||
|
)
|
||||||
|
|
||||||
response = client.describe_auto_scaling_groups(AutoScalingGroupNames=["test_asg"])
|
response = client.describe_auto_scaling_groups(AutoScalingGroupNames=["test_asg"])
|
||||||
instance_ids = [
|
instance_ids = [
|
||||||
instance["InstanceId"]
|
instance["InstanceId"]
|
||||||
for instance in response["AutoScalingGroups"][0]["Instances"]
|
for instance in response["AutoScalingGroups"][0]["Instances"]
|
||||||
]
|
]
|
||||||
|
|
||||||
response = client.describe_auto_scaling_instances(InstanceIds=instance_ids)
|
response = client.describe_auto_scaling_instances(InstanceIds=instance_ids[0:2]) # Filter by first 2 of 5
|
||||||
|
len(response["AutoScalingInstances"]).should.equal(2)
|
||||||
for instance in response["AutoScalingInstances"]:
|
for instance in response["AutoScalingInstances"]:
|
||||||
instance["AutoScalingGroupName"].should.equal("test_asg")
|
instance["AutoScalingGroupName"].should.equal("test_asg")
|
||||||
instance["AvailabilityZone"].should.equal("us-east-1a")
|
instance["AvailabilityZone"].should.equal("us-east-1a")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user