def modify_resource()

in deploy/asset-inventory-arm/generate_dev_template.py [0:0]


def modify_resource(resource):
    """
    Modify a single resource in-place.
    :param resource: Parsed dictionary of the resource
    """
    # Delete generated key pair from all dependencies
    depends_on = [d for d in resource.get("dependsOn", []) if not d.startswith("cloudbeatGenerateKeypair")]

    if resource["name"] == "cloudbeatVM":
        # Use user-provided public key
        resource["properties"]["osProfile"]["linuxConfiguration"]["ssh"]["publicKeys"] = [
            {
                "path": "/home/cloudbeat/.ssh/authorized_keys",
                "keyData": "[parameters('PublicKeyDevOnly')]",
            },
        ]
    elif resource["name"] == "cloudbeatVNet":
        # Add network security group to virtual network
        nsg_resource_id = "[resourceId('Microsoft.Network/networkSecurityGroups', 'cloudbeatNSGDevOnly')]"
        resource["properties"]["subnets"][0]["properties"]["networkSecurityGroup"] = {"id": nsg_resource_id}
        depends_on += [nsg_resource_id]
    elif resource["name"] == "cloudbeatNic":
        # Add public IP to network interface
        public_ip_resource_id = "[resourceId('Microsoft.Network/publicIPAddresses', 'cloudbeatPublicIPDevOnly')]"
        resource["properties"]["ipConfigurations"][0]["properties"]["publicIpAddress"] = {"id": public_ip_resource_id}
        depends_on += [public_ip_resource_id]
    elif resource["name"] == "cloudbeatVM/customScriptExtension":
        # Modify agent installation to *not* disable SSH
        resource["properties"]["settings"] = {
            "fileUris": ["https://raw.githubusercontent.com/elastic/cloudbeat/main/deploy/azure/install-agent-dev.sh"],
            "commandToExecute": (
                "[concat('"
                "bash install-agent-dev.sh ', "
                "parameters('ElasticAgentVersion'), ' ', "
                "parameters('ElasticArtifactServer'), ' ', "
                "parameters('FleetUrl'), ' ', "
                "parameters('EnrollmentToken'))]"
            ),
        }
    elif resource["name"] == "cloudbeat-vm-deployment":
        resource["properties"]["parameters"] = {"PublicKeyDevOnly": {"value": "[parameters('PublicKeyDevOnly')]"}}
        resource["properties"]["template"]["parameters"] = {"PublicKeyDevOnly": {"type": "string"}}
        modify_vm_deployment_template_resources_array(resource["properties"]["template"])

    if depends_on:
        resource["dependsOn"] = depends_on