provider/aws: Fixed the data source ami enforcing non-nil values
This commit is contained in:
parent
1d794d313b
commit
a8a37b8f84
|
@ -193,7 +193,11 @@ func dataSourceAwsAmiRead(d *schema.ResourceData, meta interface{}) error {
|
||||||
params.Filters = buildAwsDataSourceFilters(filters.(*schema.Set))
|
params.Filters = buildAwsDataSourceFilters(filters.(*schema.Set))
|
||||||
}
|
}
|
||||||
if ownersOk {
|
if ownersOk {
|
||||||
params.Owners = expandStringList(owners.([]interface{}))
|
o := expandStringList(owners.([]interface{}))
|
||||||
|
|
||||||
|
if len(o) > 0 {
|
||||||
|
params.Owners = o
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
resp, err := conn.DescribeImages(params)
|
resp, err := conn.DescribeImages(params)
|
||||||
|
|
|
@ -14,7 +14,7 @@ func TestAccAWSAmiDataSource_natInstance(t *testing.T) {
|
||||||
PreCheck: func() { testAccPreCheck(t) },
|
PreCheck: func() { testAccPreCheck(t) },
|
||||||
Providers: testAccProviders,
|
Providers: testAccProviders,
|
||||||
Steps: []resource.TestStep{
|
Steps: []resource.TestStep{
|
||||||
resource.TestStep{
|
{
|
||||||
Config: testAccCheckAwsAmiDataSourceConfig,
|
Config: testAccCheckAwsAmiDataSourceConfig,
|
||||||
Check: resource.ComposeTestCheckFunc(
|
Check: resource.ComposeTestCheckFunc(
|
||||||
testAccCheckAwsAmiDataSourceID("data.aws_ami.nat_ami"),
|
testAccCheckAwsAmiDataSourceID("data.aws_ami.nat_ami"),
|
||||||
|
@ -57,7 +57,7 @@ func TestAccAWSAmiDataSource_windowsInstance(t *testing.T) {
|
||||||
PreCheck: func() { testAccPreCheck(t) },
|
PreCheck: func() { testAccPreCheck(t) },
|
||||||
Providers: testAccProviders,
|
Providers: testAccProviders,
|
||||||
Steps: []resource.TestStep{
|
Steps: []resource.TestStep{
|
||||||
resource.TestStep{
|
{
|
||||||
Config: testAccCheckAwsAmiDataSourceWindowsConfig,
|
Config: testAccCheckAwsAmiDataSourceWindowsConfig,
|
||||||
Check: resource.ComposeTestCheckFunc(
|
Check: resource.ComposeTestCheckFunc(
|
||||||
testAccCheckAwsAmiDataSourceID("data.aws_ami.windows_ami"),
|
testAccCheckAwsAmiDataSourceID("data.aws_ami.windows_ami"),
|
||||||
|
@ -95,7 +95,7 @@ func TestAccAWSAmiDataSource_instanceStore(t *testing.T) {
|
||||||
PreCheck: func() { testAccPreCheck(t) },
|
PreCheck: func() { testAccPreCheck(t) },
|
||||||
Providers: testAccProviders,
|
Providers: testAccProviders,
|
||||||
Steps: []resource.TestStep{
|
Steps: []resource.TestStep{
|
||||||
resource.TestStep{
|
{
|
||||||
Config: testAccCheckAwsAmiDataSourceInstanceStoreConfig,
|
Config: testAccCheckAwsAmiDataSourceInstanceStoreConfig,
|
||||||
Check: resource.ComposeTestCheckFunc(
|
Check: resource.ComposeTestCheckFunc(
|
||||||
testAccCheckAwsAmiDataSourceID("data.aws_ami.instance_store_ami"),
|
testAccCheckAwsAmiDataSourceID("data.aws_ami.instance_store_ami"),
|
||||||
|
@ -129,7 +129,7 @@ func TestAccAWSAmiDataSource_owners(t *testing.T) {
|
||||||
PreCheck: func() { testAccPreCheck(t) },
|
PreCheck: func() { testAccPreCheck(t) },
|
||||||
Providers: testAccProviders,
|
Providers: testAccProviders,
|
||||||
Steps: []resource.TestStep{
|
Steps: []resource.TestStep{
|
||||||
resource.TestStep{
|
{
|
||||||
Config: testAccCheckAwsAmiDataSourceOwnersConfig,
|
Config: testAccCheckAwsAmiDataSourceOwnersConfig,
|
||||||
Check: resource.ComposeTestCheckFunc(
|
Check: resource.ComposeTestCheckFunc(
|
||||||
testAccCheckAwsAmiDataSourceID("data.aws_ami.amazon_ami"),
|
testAccCheckAwsAmiDataSourceID("data.aws_ami.amazon_ami"),
|
||||||
|
@ -139,12 +139,28 @@ func TestAccAWSAmiDataSource_owners(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Acceptance test for: https://github.com/hashicorp/terraform/issues/10758
|
||||||
|
func TestAccAWSAmiDataSource_ownersEmpty(t *testing.T) {
|
||||||
|
resource.Test(t, resource.TestCase{
|
||||||
|
PreCheck: func() { testAccPreCheck(t) },
|
||||||
|
Providers: testAccProviders,
|
||||||
|
Steps: []resource.TestStep{
|
||||||
|
{
|
||||||
|
Config: testAccCheckAwsAmiDataSourceEmptyOwnersConfig,
|
||||||
|
Check: resource.ComposeTestCheckFunc(
|
||||||
|
testAccCheckAwsAmiDataSourceID("data.aws_ami.amazon_ami"),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
func TestAccAWSAmiDataSource_localNameFilter(t *testing.T) {
|
func TestAccAWSAmiDataSource_localNameFilter(t *testing.T) {
|
||||||
resource.Test(t, resource.TestCase{
|
resource.Test(t, resource.TestCase{
|
||||||
PreCheck: func() { testAccPreCheck(t) },
|
PreCheck: func() { testAccPreCheck(t) },
|
||||||
Providers: testAccProviders,
|
Providers: testAccProviders,
|
||||||
Steps: []resource.TestStep{
|
Steps: []resource.TestStep{
|
||||||
resource.TestStep{
|
{
|
||||||
Config: testAccCheckAwsAmiDataSourceNameRegexConfig,
|
Config: testAccCheckAwsAmiDataSourceNameRegexConfig,
|
||||||
Check: resource.ComposeTestCheckFunc(
|
Check: resource.ComposeTestCheckFunc(
|
||||||
testAccCheckAwsAmiDataSourceID("data.aws_ami.name_regex_filtered_ami"),
|
testAccCheckAwsAmiDataSourceID("data.aws_ami.name_regex_filtered_ami"),
|
||||||
|
@ -313,6 +329,13 @@ data "aws_ami" "amazon_ami" {
|
||||||
}
|
}
|
||||||
`
|
`
|
||||||
|
|
||||||
|
const testAccCheckAwsAmiDataSourceEmptyOwnersConfig = `
|
||||||
|
data "aws_ami" "amazon_ami" {
|
||||||
|
most_recent = true
|
||||||
|
owners = [""]
|
||||||
|
}
|
||||||
|
`
|
||||||
|
|
||||||
// Testing name_regex parameter
|
// Testing name_regex parameter
|
||||||
const testAccCheckAwsAmiDataSourceNameRegexConfig = `
|
const testAccCheckAwsAmiDataSourceNameRegexConfig = `
|
||||||
data "aws_ami" "name_regex_filtered_ami" {
|
data "aws_ami" "name_regex_filtered_ami" {
|
||||||
|
|
|
@ -695,7 +695,10 @@ func flattenElastiCacheParameters(list []*elasticache.Parameter) []map[string]in
|
||||||
func expandStringList(configured []interface{}) []*string {
|
func expandStringList(configured []interface{}) []*string {
|
||||||
vs := make([]*string, 0, len(configured))
|
vs := make([]*string, 0, len(configured))
|
||||||
for _, v := range configured {
|
for _, v := range configured {
|
||||||
vs = append(vs, aws.String(v.(string)))
|
val, ok := v.(string)
|
||||||
|
if ok && val != "" {
|
||||||
|
vs = append(vs, aws.String(v.(string)))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return vs
|
return vs
|
||||||
}
|
}
|
||||||
|
|
|
@ -447,7 +447,27 @@ func TestExpandStringList(t *testing.T) {
|
||||||
stringList,
|
stringList,
|
||||||
expected)
|
expected)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestExpandStringListEmptyItems(t *testing.T) {
|
||||||
|
initialList := []string{"foo", "bar", "", "baz"}
|
||||||
|
l := make([]interface{}, len(initialList))
|
||||||
|
for i, v := range initialList {
|
||||||
|
l[i] = v
|
||||||
|
}
|
||||||
|
stringList := expandStringList(l)
|
||||||
|
expected := []*string{
|
||||||
|
aws.String("foo"),
|
||||||
|
aws.String("bar"),
|
||||||
|
aws.String("baz"),
|
||||||
|
}
|
||||||
|
|
||||||
|
if !reflect.DeepEqual(stringList, expected) {
|
||||||
|
t.Fatalf(
|
||||||
|
"Got:\n\n%#v\n\nExpected:\n\n%#v\n",
|
||||||
|
stringList,
|
||||||
|
expected)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestExpandParameters(t *testing.T) {
|
func TestExpandParameters(t *testing.T) {
|
||||||
|
|
Loading…
Reference in New Issue