in plugin-azure-server/src/main/kotlin/jetbrains/buildServer/clouds/azure/arm/utils/ArmTemplateBuilder.kt [301:354]
fun addContainerVolumes(resourceName: String, name: String): ArmTemplateBuilder {
val properties = getPropertiesOfResource(resourceName)
val containers = containersFromProperties(properties)
(containers.firstOrNull() as? ObjectNode)?.let {
val props = (it["properties"] as? ObjectNode) ?: it.putObject("properties")
val volumeMounts = (props["volumeMounts"] as? ArrayNode) ?: props.putArray("volumeMounts")
volumeMounts.addPOJO(object {
val name = name
val mountPath = "/var/lib/waagent/"
val readOnly = true
})
volumeMounts.addPOJO(object {
val name = "$name-plugins"
val mountPath = "/opt/buildagent/plugins/"
})
volumeMounts.addPOJO(object {
val name = "$name-logs"
val mountPath = "/opt/buildagent/logs/"
})
volumeMounts.addPOJO(object {
val name = "$name-system"
val mountPath = "/opt/buildagent/system/.teamcity-agent/"
})
volumeMounts.addPOJO(object {
val name = "$name-tools"
val mountPath = "/opt/buildagent/tools/"
})
}
val volumes = (properties["volumes"] as? ArrayNode) ?: properties.putArray("volumes")
volumes.addPOJO(object {
val name = name
val azureFile = object {
val shareName = name
val storageAccountName = "[parameters('storageAccountName')]"
val storageAccountKey = "[parameters('storageAccountKey')]"
}
})
for (volume in AzureConstants.CONTAINER_VOLUMES) {
volumes.addPOJO(object {
val name = "$name-$volume"
val azureFile = object {
val shareName = "$name-$volume"
val storageAccountName = "[parameters('storageAccountName')]"
val storageAccountKey = "[parameters('storageAccountKey')]"
}
})
}
return this.addParameter("storageAccountName", "String", "")
.addParameter("storageAccountKey", "SecureString", "")
}