diff --git a/CHANGELOG.md b/CHANGELOG.md index df61d74..4cef88b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,13 @@ Dropping a requirement of a major version of a dependency is a new contract. ## [Unreleased] [Unreleased]: https://github.com/atlassian-labs/aws-resources/compare/release-1.15.0...master +### Added +- Add `CanonicalAmiProvider.Builder.avoidUnattendedUpgrades` for bumping `imageName` to Focal or higher. + +### Fixed +- Bump Ubuntu Focal AMI to `ubuntu/images/hvm-ssd/ubuntu-focal-20.04-amd64-server-20240531`. + The previous one was 2 years old and disappeared: `ubuntu-focal-20.04-amd64-server-20220610`. + ## [1.15.0] - 2024-01-23 [1.15.0]: https://github.com/atlassian-labs/aws-resources/compare/release-1.14.0...release-1.15.0 diff --git a/src/main/kotlin/com/atlassian/performance/tools/aws/CanonicalOwnerIdRegistry.kt b/src/main/kotlin/com/atlassian/performance/tools/aws/CanonicalOwnerIdRegistry.kt index d92cf75..abe2f82 100644 --- a/src/main/kotlin/com/atlassian/performance/tools/aws/CanonicalOwnerIdRegistry.kt +++ b/src/main/kotlin/com/atlassian/performance/tools/aws/CanonicalOwnerIdRegistry.kt @@ -1,20 +1,15 @@ package com.atlassian.performance.tools.aws import com.amazonaws.regions.Regions +import com.amazonaws.regions.Regions.* /** - * Based on https://ubuntu.com/server/docs/cloud-images/amazon-ec2 + * Based on https://documentation.ubuntu.com/aws/en/latest/aws-how-to/instances/find-ubuntu-images/#ownership-verification */ internal object CanonicalOwnerIdRegistry { - const val default = "099720109477" - val byRegion = Regions.values().associate { - it to when(it) { - Regions.GovCloud -> "513442679011" - Regions.CN_NORTH_1, - Regions.CN_NORTHWEST_1 -> "837727238323" - else -> default - } + fun forRegion(region: Regions?) = when (region) { + GovCloud -> "513442679011" + CN_NORTH_1, CN_NORTHWEST_1 -> "837727238323" + else -> "099720109477" } - - fun forRegion(region: Regions?) = byRegion[region] ?: default } \ No newline at end of file diff --git a/src/main/kotlin/com/atlassian/performance/tools/aws/api/ami/CanonicalAmiProvider.kt b/src/main/kotlin/com/atlassian/performance/tools/aws/api/ami/CanonicalAmiProvider.kt index b87f198..fe37fc4 100644 --- a/src/main/kotlin/com/atlassian/performance/tools/aws/api/ami/CanonicalAmiProvider.kt +++ b/src/main/kotlin/com/atlassian/performance/tools/aws/api/ami/CanonicalAmiProvider.kt @@ -32,7 +32,7 @@ class CanonicalAmiProvider private constructor( } class Builder { - private val focal = "ubuntu/images/hvm-ssd/ubuntu-focal-20.04-amd64-server-20220610" + private val focal = "ubuntu/images/hvm-ssd/ubuntu-focal-20.04-amd64-server-20240531" private var imageName = focal /** @@ -49,11 +49,16 @@ class CanonicalAmiProvider private constructor( this.imageName = imageName } - fun focal(): Builder { - avoidUnattendedUpgrades = true - return imageName(focal) + /** + * Make sure your [imageName] is Focal or newer. + */ + fun avoidUnattendedUpgrades() = apply { + this.avoidUnattendedUpgrades = true } + fun focal() = imageName(focal) + .avoidUnattendedUpgrades() + fun build(): CanonicalAmiProvider = CanonicalAmiProvider(imageName, avoidUnattendedUpgrades) } } diff --git a/src/test/kotlin/com/atlassian/performance/tools/aws/api/CanonicalImageIdByNameResolverTest.kt b/src/test/kotlin/com/atlassian/performance/tools/aws/api/CanonicalImageIdByNameResolverTest.kt index b5dd036..d77e410 100644 --- a/src/test/kotlin/com/atlassian/performance/tools/aws/api/CanonicalImageIdByNameResolverTest.kt +++ b/src/test/kotlin/com/atlassian/performance/tools/aws/api/CanonicalImageIdByNameResolverTest.kt @@ -36,7 +36,7 @@ class CanonicalImageIdByNameResolverTest { assertThat(savedRequest).isNotNull assertThat(savedRequest!!.filters).contains( Filter("name", listOf(queriedImageName)), - Filter("owner-id", listOf(CanonicalOwnerIdRegistry.byRegion[region])) + Filter("owner-id", listOf(CanonicalOwnerIdRegistry.forRegion(region))) ) } } @@ -63,7 +63,7 @@ class CanonicalImageIdByNameResolverTest { assertThat(savedRequest).isNotNull assertThat(savedRequest!!.filters).contains( Filter("name", listOf(queriedImageName)), - Filter("owner-id", listOf(CanonicalOwnerIdRegistry.default)) + Filter("owner-id", listOf("099720109477")) ) }