fun setPublicIp()

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
    }