From 47b0d7c0945f45271bdd37938b69165dc6ecfb1c Mon Sep 17 00:00:00 2001 From: Modular Magician Date: Thu, 4 Mar 2021 00:13:17 +0000 Subject: [PATCH] Suppress diff for COS images (#4562) Co-authored-by: Marius Kintel Signed-off-by: Modular Magician --- .changelog/4562.txt | 3 +++ google-beta/image.go | 1 + google-beta/resource_compute_disk.go | 17 +++++++++++++++++ google-beta/resource_compute_disk_test.go | 5 +++++ 4 files changed, 26 insertions(+) create mode 100644 .changelog/4562.txt diff --git a/.changelog/4562.txt b/.changelog/4562.txt new file mode 100644 index 0000000000..54a7f76548 --- /dev/null +++ b/.changelog/4562.txt @@ -0,0 +1,3 @@ +```release-note:enhancement +compute: added suppress diff func for cos-family disk images +``` diff --git a/google-beta/image.go b/google-beta/image.go index 61ac117dc9..ad90c55cef 100644 --- a/google-beta/image.go +++ b/google-beta/image.go @@ -27,6 +27,7 @@ var ( windowsSqlImage = regexp.MustCompile("^sql-(?:server-)?([0-9]{4})-([a-z]+)-windows-(?:server-)?([0-9]{4})(?:-r([0-9]+))?-dc-v[0-9]+$") canonicalUbuntuLtsImage = regexp.MustCompile("^ubuntu-(minimal-)?([0-9]+)-") + cosLtsImage = regexp.MustCompile("^cos-([0-9]+)-") ) // built-in projects to look for images/families containing the string diff --git a/google-beta/resource_compute_disk.go b/google-beta/resource_compute_disk.go index 5c0828ba40..f4461b32c7 100644 --- a/google-beta/resource_compute_disk.go +++ b/google-beta/resource_compute_disk.go @@ -151,6 +151,10 @@ func diskImageFamilyEquals(imageName, familyName string) bool { return true } + if suppressCosFamilyDiff(imageName, familyName) { + return true + } + if suppressWindowsSqlFamilyDiff(imageName, familyName) { return true } @@ -175,6 +179,19 @@ func suppressCanonicalFamilyDiff(imageName, familyName string) bool { return false } +// e.g. image: cos-NN-*, family: cos-NN-lts +func suppressCosFamilyDiff(imageName, familyName string) bool { + parts := cosLtsImage.FindStringSubmatch(imageName) + if len(parts) == 2 { + f := fmt.Sprintf("cos-%s-lts", parts[1]) + if f == familyName { + return true + } + } + + return false +} + // e.g. image: sql-2017-standard-windows-2016-dc-v20180109, family: sql-std-2017-win-2016 // e.g. image: sql-2017-express-windows-2012-r2-dc-v20180109, family: sql-exp-2017-win-2012-r2 func suppressWindowsSqlFamilyDiff(imageName, familyName string) bool { diff --git a/google-beta/resource_compute_disk_test.go b/google-beta/resource_compute_disk_test.go index cec58bacf5..dd346995b6 100644 --- a/google-beta/resource_compute_disk_test.go +++ b/google-beta/resource_compute_disk_test.go @@ -125,6 +125,11 @@ func TestDiskImageDiffSuppress(t *testing.T) { New: "ubuntu-minimal-1804-lts", ExpectDiffSuppress: true, }, + "matching unconventional image family - cos": { + Old: "https://www.googleapis.com/compute/v1/projects/cos-cloud/global/images/cos-85-13310-1209-17", + New: "cos-85-lts", + 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",