Remove latest image from diskImageDiffSuppress (#1021)

This commit is contained in:
Vincent Roseberry 2018-01-30 11:05:23 -08:00 committed by GitHub
parent cc5f77e32e
commit 429c8e834c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 29 additions and 31 deletions

View File

@ -426,18 +426,17 @@ func diskImageDiffSuppress(_, old, new string, _ *schema.ResourceData) bool {
newProject := matches[1]
newFamilyName := matches[2]
return diskImageProjectNameEquals(oldProject, oldName, newProject, newFamilyName)
return diskImageProjectNameEquals(oldProject, newProject) && strings.Contains(oldName, newFamilyName)
}
// Partial or full self link image
if resolveImageProjectImage.MatchString(new) {
// Value matches pattern "projects/{project}/global/images/{image-name}$"
// or "projects/{project}/global/images/{image-name-latest}$"
matches := resolveImageProjectImage.FindStringSubmatch(new)
newProject := matches[1]
newImageName := matches[2]
return diskImageProjectNameEquals(oldProject, oldName, newProject, newImageName)
return diskImageProjectNameEquals(oldProject, newProject) && strings.Contains(oldName, newImageName)
}
// Partial link without project family
@ -451,7 +450,7 @@ func diskImageDiffSuppress(_, old, new string, _ *schema.ResourceData) bool {
// Partial link without project image
if resolveImageGlobalImage.MatchString(new) {
// Value is "global/images/family/{image-name}" or "global/images/family/{image-name-latest}"
// Value is "global/images/{image-name}"
matches := resolveImageGlobalImage.FindStringSubmatch(new)
imageName := matches[1]
@ -467,26 +466,26 @@ func diskImageDiffSuppress(_, old, new string, _ *schema.ResourceData) bool {
return strings.Contains(oldName, familyName)
}
// Shorthand for image
// Shorthand for image or family
if resolveImageProjectImageShorthand.MatchString(new) {
// Value is "{project}/{image-name}" or "{project}/{image-name-latest}"
// Value is "{project}/{image-name}" or "{project}/{family-name}"
matches := resolveImageProjectImageShorthand.FindStringSubmatch(new)
newProject := matches[1]
newName := matches[2]
return diskImageProjectNameEquals(oldProject, oldName, newProject, newName)
return diskImageProjectNameEquals(oldProject, newProject) && strings.Contains(oldName, newName)
}
// Image or family only
if strings.Contains(oldName, new) {
// Value is "{image-name}" or "{family-name}" or "{image-name-latest}"
// Value is "{image-name}" or "{family-name}"
return true
}
return false
}
func diskImageProjectNameEquals(project1, name1, project2, name2 string) bool {
func diskImageProjectNameEquals(project1, project2 string) bool {
// Convert short project name to full name
// For instance, centos => centos-cloud
fullProjectName, ok := imageMap[project2]
@ -494,5 +493,5 @@ func diskImageProjectNameEquals(project1, name1, project2, name2 string) bool {
project2 = fullProjectName
}
return project1 == project2 && strings.Contains(name1, name2)
return project1 == project2
}

View File

@ -75,27 +75,6 @@ func TestDiskImageDiffSuppress(t *testing.T) {
New: "debian-cloud/debian-7-jessie-v20171213",
ExpectDiffSuppress: false,
},
// Latest image short hand
"matching latest image short hand": {
Old: "https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/debian-8-jessie-v20171213",
New: "debian-cloud/debian-8",
ExpectDiffSuppress: true,
},
"matching latest image short hand with project short name": {
Old: "https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/debian-8-jessie-v20171213",
New: "debian/debian-8",
ExpectDiffSuppress: true,
},
"matching latest image short hand but different project": {
Old: "https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/debian-8-jessie-v20171213",
New: "different-cloud/debian-8",
ExpectDiffSuppress: false,
},
"different latest image short hand": {
Old: "https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/debian-8-jessie-v20171213",
New: "debian-cloud/debian-7",
ExpectDiffSuppress: false,
},
// Image Family
"matching image family": {
Old: "https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/debian-8-jessie-v20171213",
@ -117,6 +96,16 @@ func TestDiskImageDiffSuppress(t *testing.T) {
New: "global/images/family/debian-8",
ExpectDiffSuppress: true,
},
"matching image family short hand": {
Old: "https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/debian-8-jessie-v20171213",
New: "debian-cloud/debian-8",
ExpectDiffSuppress: true,
},
"matching image family short hand with project short name": {
Old: "https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/debian-8-jessie-v20171213",
New: "debian/debian-8",
ExpectDiffSuppress: true,
},
"different image family": {
Old: "https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/debian-8-jessie-v20171213",
New: "family/debian-7",
@ -147,6 +136,16 @@ func TestDiskImageDiffSuppress(t *testing.T) {
New: "projects/other-cloud/global/images/family/debian-8",
ExpectDiffSuppress: false,
},
"different image family short hand": {
Old: "https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/debian-8-jessie-v20171213",
New: "debian-cloud/debian-7",
ExpectDiffSuppress: false,
},
"matching image family shorthand but different project": {
Old: "https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/debian-8-jessie-v20171213",
New: "different-cloud/debian-8",
ExpectDiffSuppress: false,
},
}
for tn, tc := range cases {