func()

in pkg/fake/ec2api.go [463:527]


func (e *EC2API) DescribeSubnets(_ context.Context, input *ec2.DescribeSubnetsInput, _ ...func(*ec2.Options)) (*ec2.DescribeSubnetsOutput, error) {
	return e.DescribeSubnetsBehavior.Invoke(input, func(input *ec2.DescribeSubnetsInput) (*ec2.DescribeSubnetsOutput, error) {
		output := &ec2.DescribeSubnetsOutput{}
		e.Subnets.Range(func(key, value any) bool {
			subnet := value.(ec2types.Subnet)
			if lo.Contains(input.SubnetIds, lo.FromPtr(subnet.SubnetId)) || len(input.Filters) != 0 && len(FilterDescribeSubnets([]ec2types.Subnet{subnet}, input.Filters)) != 0 {
				output.Subnets = append(output.Subnets, subnet)
			}
			return true
		})
		if len(output.Subnets) != 0 {
			return output, nil
		}

		defaultSubnets := []ec2types.Subnet{
			{
				SubnetId:                aws.String("subnet-test1"),
				AvailabilityZone:        aws.String("test-zone-1a"),
				AvailabilityZoneId:      aws.String("tstz1-1a"),
				AvailableIpAddressCount: aws.Int32(100),
				MapPublicIpOnLaunch:     aws.Bool(false),
				Tags: []ec2types.Tag{
					{Key: aws.String("Name"), Value: aws.String("test-subnet-1")},
					{Key: aws.String("foo"), Value: aws.String("bar")},
				},
			},
			{
				SubnetId:                aws.String("subnet-test2"),
				AvailabilityZone:        aws.String("test-zone-1b"),
				AvailabilityZoneId:      aws.String("tstz1-1b"),
				AvailableIpAddressCount: aws.Int32(100),
				MapPublicIpOnLaunch:     aws.Bool(true),
				Tags: []ec2types.Tag{
					{Key: aws.String("Name"), Value: aws.String("test-subnet-2")},
					{Key: aws.String("foo"), Value: aws.String("bar")},
				},
			},
			{
				SubnetId:                aws.String("subnet-test3"),
				AvailabilityZone:        aws.String("test-zone-1c"),
				AvailabilityZoneId:      aws.String("tstz1-1c"),
				AvailableIpAddressCount: aws.Int32(100),
				Tags: []ec2types.Tag{
					{Key: aws.String("Name"), Value: aws.String("test-subnet-3")},
					{Key: aws.String("TestTag")},
					{Key: aws.String("foo"), Value: aws.String("bar")},
				},
			},
			{
				SubnetId:                aws.String("subnet-test4"),
				AvailabilityZone:        aws.String("test-zone-1a-local"),
				AvailabilityZoneId:      aws.String("tstz1-1alocal"),
				AvailableIpAddressCount: aws.Int32(100),
				MapPublicIpOnLaunch:     aws.Bool(true),
				Tags: []ec2types.Tag{
					{Key: aws.String("Name"), Value: aws.String("test-subnet-4")},
				},
			},
		}
		if len(input.Filters) == 0 {
			return nil, fmt.Errorf("InvalidParameterValue: The filter 'null' is invalid")
		}
		return &ec2.DescribeSubnetsOutput{Subnets: FilterDescribeSubnets(defaultSubnets, input.Filters)}, nil
	})
}