in plugin-azure-server/src/main/kotlin/jetbrains/buildServer/clouds/azure/arm/utils/ArmTemplateBuilder.kt [64:109]
fun setPublicIp(useStandardSKU: Boolean): ArmTemplateBuilder {
(root["variables"] as ObjectNode).apply {
this.put("pipName", "[concat(parameters('vmName'), '-pip')]")
}
(root["resources"] as ArrayNode).apply {
this.filterIsInstance<ObjectNode>()
.first { it["name"].asText() == "[variables('nicName')]" }
.apply {
this.putPOJO("dependsOn",
listOf("[concat('Microsoft.Network/publicIPAddresses/', variables('pipName'))]"))
(this["properties"]["ipConfigurations"][0]["properties"] as ObjectNode).apply {
this.putPOJO("publicIPAddress", object : Any() {
val id = "[resourceId('Microsoft.Network/publicIPAddresses', variables('pipName'))]"
})
}
}
if (useStandardSKU) {
this.addPOJO(object : Any() {
val apiVersion = "2024-10-01"
val type = "Microsoft.Network/publicIPAddresses"
val name = "[variables('pipName')]"
val location = "[variables('location')]"
val sku = object : Any() {
val name = "Standard"
}
val properties = object : Any() {
val publicIPAllocationMethod = "Static"
val deleteOption = "Delete"
}
})
} else {
this.addPOJO(object : Any() {
val apiVersion = "2016-09-01"
val type = "Microsoft.Network/publicIPAddresses"
val name = "[variables('pipName')]"
val location = "[variables('location')]"
val properties = object : Any() {
val publicIPAllocationMethod = "Dynamic"
}
})
}
}
return this
}