Skip to content

Commit

Permalink
feat(artifacts): Update GCE bake to send image reference (#241)
Browse files Browse the repository at this point in the history
When baking a GCE image, set the reference of the produced artifact
to the URI for the produced image
  • Loading branch information
ezimanyi committed Apr 12, 2018
1 parent 7f42a88 commit 3da3349
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -113,10 +113,9 @@ abstract class CloudProviderBakeHandler {
def Artifact produceArtifactDecorationFrom(BakeRequest bakeRequest, BakeRecipe bakeRecipe, Bake bakeDetails, String cloudProvider, String region) {
Artifact bakedArtifact = new Artifact(
name: bakeRecipe?.name,
version: bakeRecipe?.version,
type: "${cloudProvider}/image",
location: region,
reference: bakeDetails.ami ?: bakeDetails.image_name,
reference: getArtifactReference(bakeRequest, bakeDetails),
metadata: [
build_info_url: bakeRequest?.build_info_url,
build_number: bakeRequest?.build_number
Expand All @@ -127,6 +126,10 @@ abstract class CloudProviderBakeHandler {
return bakedArtifact
}

def String getArtifactReference(BakeRequest bakeRequest, Bake bakeDetails) {
return bakeDetails.ami ?: bakeDetails.image_name
}

/**
* Finds the appropriate virtualization settings in this provider's configuration based on the region and
* bake request parameters. Throws an IllegalArgumentException if the virtualization settings cannot be
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -174,4 +174,15 @@ public class GCEBakeHandler extends CloudProviderBakeHandler {
return managedGoogleAccount
}

}
@Override
String getArtifactReference(BakeRequest bakeRequest, Bake bakeDetails) {
RoscoGoogleConfiguration.ManagedGoogleAccount managedGoogleAccount = resolveAccount(bakeRequest)
def project = managedGoogleAccount.getProject()
def imageName = bakeDetails.image_name

// TODO(ezimanyi): Remove hard-coding of image URI
// Either get packer to directly return the generated URI (preferred) or send a request to
// clouddriver to convert the project/image combination into a URI using the Google compute API
return "https://www.googleapis.com/compute/v1/projects/$project/global/images/$imageName"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ class CloudProviderBakeHandlerSpec extends Specification implements TestDefaults
setup:
def expectedArtifact = new Artifact (
name: SOME_BAKE_RECIPE.name,
version: SOME_BAKE_RECIPE.version,
version: null,
location: SOME_REGION,
type: "${SOME_CLOUD_PROVIDER}/image",
reference: SOME_BAKE_DETAILS.ami,
Expand Down Expand Up @@ -64,8 +64,8 @@ class CloudProviderBakeHandlerSpec extends Specification implements TestDefaults
where:
bakeRequest | bakeRecipe | expectedName | expectedVersion | expectedReference | expectedMetadata
null | null | null | null | SOME_AMI_ID | ["build_info_url": null, "build_number": null]
null | SOME_BAKE_RECIPE | SOME_BAKE_RECIPE_NAME | SOME_APP_VERSION_STR | SOME_AMI_ID | ["build_info_url": null, "build_number": null]
SOME_BAKE_REQUEST | SOME_BAKE_RECIPE | SOME_BAKE_RECIPE_NAME | SOME_APP_VERSION_STR | SOME_AMI_ID | ["build_info_url": SOME_BUILD_INFO_URL, "build_number": SOME_BUILD_NR]
null | SOME_BAKE_RECIPE | SOME_BAKE_RECIPE_NAME | null | SOME_AMI_ID | ["build_info_url": null, "build_number": null]
SOME_BAKE_REQUEST | SOME_BAKE_RECIPE | SOME_BAKE_RECIPE_NAME | null | SOME_AMI_ID | ["build_info_url": SOME_BUILD_INFO_URL, "build_number": SOME_BUILD_NR]

}

Expand Down

0 comments on commit 3da3349

Please sign in to comment.