Skip to content

Commit ef83d33

Browse files
authored
Add tag for source of image (#336)
1 parent bac7a8a commit ef83d33

1 file changed

Lines changed: 40 additions & 3 deletions

File tree

src/main/java/com/microsoft/azure/vmagent/AzureVMManagementServiceDelegate.java

Lines changed: 40 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -463,6 +463,8 @@ public AzureVMDeploymentInfo createDeployment(
463463
putVariable(tmp, "ephemeralOSDisk", Boolean.toString(ephemeralOSDisk));
464464
putVariableIfNotBlank(tmp, "image", template.getImageReference().getUri());
465465

466+
String imageId = getImageId(properties);
467+
466468
// Gallery Image is a special case for custom image, reuse the logic of custom image by replacing the imageId here
467469
if (referenceType == ImageReferenceType.GALLERY) {
468470
GalleryImageVersion galleryImageVersion;
@@ -488,11 +490,17 @@ public AzureVMDeploymentInfo createDeployment(
488490
if (galleryImageVersion == null) {
489491
throw AzureCloudException.create("Can not find the right version for the gallery image.");
490492
}
491-
String galleryImageId = galleryImageVersion.id();
492-
LOGGER.log(Level.INFO, "Create VM with gallery image id {0}", new Object[]{galleryImageId});
493-
putVariableIfNotBlank(tmp, "imageId", galleryImageId);
493+
imageId = galleryImageVersion.id();
494+
LOGGER.log(Level.INFO, "Create VM with gallery image id {0}", new Object[]{imageId});
495+
putVariableIfNotBlank(tmp, "imageId", imageId);
496+
}
497+
498+
if (imageId != null) {
499+
addTagToVm(tmp, "JenkinsImageId", imageId);
494500
}
495501

502+
503+
496504
// If using the custom script extension (vs. SSH) to startup the powershell scripts,
497505
// add variables for that and upload the init script to the storage account
498506
if (useCustomScriptExtension) {
@@ -613,6 +621,35 @@ public AzureVMDeploymentInfo createDeployment(
613621
}
614622
}
615623

624+
private String getImageId(Map<String, Object> properties) {
625+
Object imageId = properties.get("imageId");
626+
Object imagePublisherObj = properties.get("imagePublisher");
627+
if (imageId == null && imagePublisherObj == null) {
628+
return null;
629+
}
630+
631+
if (imagePublisherObj != null) {
632+
Object imageOfferObj = properties.get("imageOffer");
633+
Object imageSkuObj = properties.get("imageSku");
634+
Object imageVersionObj = properties.get("imageVersion");
635+
636+
imageId = imagePublisherObj + "::" + imageOfferObj + "::" + imageSkuObj + "::" + imageVersionObj;
637+
}
638+
return (String) imageId;
639+
}
640+
641+
private void addTagToVm(JsonNode template, String key, String value) {
642+
ArrayNode resources = (ArrayNode) template.get("resources");
643+
for (JsonNode resource : resources) {
644+
String type = resource.get("type").asText();
645+
if (type.contains("virtualMachine")) {
646+
ObjectNode tags = (ObjectNode) resource.get("tags");
647+
tags.put(key, StringUtils.left(value, 255));
648+
return;
649+
}
650+
}
651+
}
652+
616653
private void addSpotInstance(JsonNode template) {
617654
ArrayNode resources = (ArrayNode) template.get("resources");
618655
for (JsonNode resource : resources) {

0 commit comments

Comments
 (0)