All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.pulumi.azure.pim.kotlin.RoleManagementPolicyArgs.kt Maven / Gradle / Ivy

@file:Suppress("NAME_SHADOWING", "DEPRECATION")

package com.pulumi.azure.pim.kotlin

import com.pulumi.azure.pim.RoleManagementPolicyArgs.builder
import com.pulumi.azure.pim.kotlin.inputs.RoleManagementPolicyActivationRulesArgs
import com.pulumi.azure.pim.kotlin.inputs.RoleManagementPolicyActivationRulesArgsBuilder
import com.pulumi.azure.pim.kotlin.inputs.RoleManagementPolicyActiveAssignmentRulesArgs
import com.pulumi.azure.pim.kotlin.inputs.RoleManagementPolicyActiveAssignmentRulesArgsBuilder
import com.pulumi.azure.pim.kotlin.inputs.RoleManagementPolicyEligibleAssignmentRulesArgs
import com.pulumi.azure.pim.kotlin.inputs.RoleManagementPolicyEligibleAssignmentRulesArgsBuilder
import com.pulumi.azure.pim.kotlin.inputs.RoleManagementPolicyNotificationRulesArgs
import com.pulumi.azure.pim.kotlin.inputs.RoleManagementPolicyNotificationRulesArgsBuilder
import com.pulumi.core.Output
import com.pulumi.core.Output.of
import com.pulumi.kotlin.ConvertibleToJava
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.applySuspend
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.jvm.JvmName

/**
 * Manage a role policy for an Azure Management Group, Subscription, Resource Group or resource.
 * ## Example Usage
 * ### Resource Group
 * 
 * ```java
 * package generated_program;
 * import com.pulumi.Context;
 * import com.pulumi.Pulumi;
 * import com.pulumi.core.Output;
 * import com.pulumi.azure.core.ResourceGroup;
 * import com.pulumi.azure.core.ResourceGroupArgs;
 * import com.pulumi.azure.authorization.AuthorizationFunctions;
 * import com.pulumi.azure.authorization.inputs.GetRoleDefinitionArgs;
 * import com.pulumi.azuread.AzureadFunctions;
 * import com.pulumi.azuread.inputs.GetGroupArgs;
 * import com.pulumi.azure.pim.RoleManagementPolicy;
 * import com.pulumi.azure.pim.RoleManagementPolicyArgs;
 * import com.pulumi.azure.pim.inputs.RoleManagementPolicyActiveAssignmentRulesArgs;
 * import com.pulumi.azure.pim.inputs.RoleManagementPolicyEligibleAssignmentRulesArgs;
 * import com.pulumi.azure.pim.inputs.RoleManagementPolicyActivationRulesArgs;
 * import com.pulumi.azure.pim.inputs.RoleManagementPolicyActivationRulesApprovalStageArgs;
 * import com.pulumi.azure.pim.inputs.RoleManagementPolicyNotificationRulesArgs;
 * import com.pulumi.azure.pim.inputs.RoleManagementPolicyNotificationRulesEligibleAssignmentsArgs;
 * import com.pulumi.azure.pim.inputs.RoleManagementPolicyNotificationRulesEligibleAssignmentsApproverNotificationsArgs;
 * import com.pulumi.azure.pim.inputs.RoleManagementPolicyNotificationRulesEligibleActivationsArgs;
 * import com.pulumi.azure.pim.inputs.RoleManagementPolicyNotificationRulesEligibleActivationsAssigneeNotificationsArgs;
 * import java.util.List;
 * import java.util.ArrayList;
 * import java.util.Map;
 * import java.io.File;
 * import java.nio.file.Files;
 * import java.nio.file.Paths;
 * public class App {
 *     public static void main(String[] args) {
 *         Pulumi.run(App::stack);
 *     }
 *     public static void stack(Context ctx) {
 *         var example = new ResourceGroup("example", ResourceGroupArgs.builder()
 *             .name("example-rg")
 *             .location("East US")
 *             .build());
 *         final var rgContributor = AuthorizationFunctions.getRoleDefinition(GetRoleDefinitionArgs.builder()
 *             .name("Contributor")
 *             .scope(example.id())
 *             .build());
 *         final var approvers = AzureadFunctions.getGroup(GetGroupArgs.builder()
 *             .name("Example Approver Group")
 *             .build());
 *         var exampleRoleManagementPolicy = new RoleManagementPolicy("exampleRoleManagementPolicy", RoleManagementPolicyArgs.builder()
 *             .scope(test.id())
 *             .roleDefinitionId(contributor.id())
 *             .activeAssignmentRules(RoleManagementPolicyActiveAssignmentRulesArgs.builder()
 *                 .expireAfter("P365D")
 *                 .build())
 *             .eligibleAssignmentRules(RoleManagementPolicyEligibleAssignmentRulesArgs.builder()
 *                 .expirationRequired(false)
 *                 .build())
 *             .activationRules(RoleManagementPolicyActivationRulesArgs.builder()
 *                 .maximumDuration("PT1H")
 *                 .requireApproval(true)
 *                 .approvalStage(RoleManagementPolicyActivationRulesApprovalStageArgs.builder()
 *                     .primaryApprovers(RoleManagementPolicyActivationRulesApprovalStagePrimaryApproverArgs.builder()
 *                         .objectId(approvers.applyValue(getGroupResult -> getGroupResult.objectId()))
 *                         .type("Group")
 *                         .build())
 *                     .build())
 *                 .build())
 *             .notificationRules(RoleManagementPolicyNotificationRulesArgs.builder()
 *                 .eligibleAssignments(RoleManagementPolicyNotificationRulesEligibleAssignmentsArgs.builder()
 *                     .approverNotifications(RoleManagementPolicyNotificationRulesEligibleAssignmentsApproverNotificationsArgs.builder()
 *                         .notificationLevel("Critical")
 *                         .defaultRecipients(false)
 *                         .additionalRecipients("[email protected]")
 *                         .build())
 *                     .build())
 *                 .eligibleActivations(RoleManagementPolicyNotificationRulesEligibleActivationsArgs.builder()
 *                     .assigneeNotifications(RoleManagementPolicyNotificationRulesEligibleActivationsAssigneeNotificationsArgs.builder()
 *                         .notificationLevel("All")
 *                         .defaultRecipients(true)
 *                         .additionalRecipients("[email protected]")
 *                         .build())
 *                     .build())
 *                 .build())
 *             .build());
 *     }
 * }
 * ```
 * ```yaml
 * resources:
 *   example:
 *     type: azure:core:ResourceGroup
 *     properties:
 *       name: example-rg
 *       location: East US
 *   exampleRoleManagementPolicy:
 *     type: azure:pim:RoleManagementPolicy
 *     name: example
 *     properties:
 *       scope: ${test.id}
 *       roleDefinitionId: ${contributor.id}
 *       activeAssignmentRules:
 *         expireAfter: P365D
 *       eligibleAssignmentRules:
 *         expirationRequired: false
 *       activationRules:
 *         maximumDuration: PT1H
 *         requireApproval: true
 *         approvalStage:
 *           primaryApprovers:
 *             - objectId: ${approvers.objectId}
 *               type: Group
 *       notificationRules:
 *         eligibleAssignments:
 *           approverNotifications:
 *             notificationLevel: Critical
 *             defaultRecipients: false
 *             additionalRecipients:
 *               - [email protected]
 *         eligibleActivations:
 *           assigneeNotifications:
 *             notificationLevel: All
 *             defaultRecipients: true
 *             additionalRecipients:
 *               - [email protected]
 * variables:
 *   rgContributor:
 *     fn::invoke:
 *       Function: azure:authorization:getRoleDefinition
 *       Arguments:
 *         name: Contributor
 *         scope: ${example.id}
 *   approvers:
 *     fn::invoke:
 *       Function: azuread:getGroup
 *       Arguments:
 *         name: Example Approver Group
 * ```
 * 
 * ### Management Group
 * 
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as azure from "@pulumi/azure";
 * const example = new azure.management.Group("example", {name: "example-group"});
 * const mgContributor = azure.authorization.getRoleDefinitionOutput({
 *     name: "Contributor",
 *     scope: example.id,
 * });
 * const exampleRoleManagementPolicy = new azure.pim.RoleManagementPolicy("example", {
 *     scope: example.id,
 *     roleDefinitionId: mgContributor.apply(mgContributor => mgContributor.id),
 *     eligibleAssignmentRules: {
 *         expirationRequired: false,
 *     },
 *     activeAssignmentRules: {
 *         expireAfter: "P90D",
 *     },
 *     activationRules: {
 *         maximumDuration: "PT1H",
 *         requireApproval: true,
 *     },
 *     notificationRules: {
 *         activeAssignments: {
 *             adminNotifications: {
 *                 notificationLevel: "Critical",
 *                 defaultRecipients: false,
 *                 additionalRecipients: ["someone@example.com"],
 *             },
 *         },
 *     },
 * });
 * ```
 * ```python
 * import pulumi
 * import pulumi_azure as azure
 * example = azure.management.Group("example", name="example-group")
 * mg_contributor = azure.authorization.get_role_definition_output(name="Contributor",
 *     scope=example.id)
 * example_role_management_policy = azure.pim.RoleManagementPolicy("example",
 *     scope=example.id,
 *     role_definition_id=mg_contributor.id,
 *     eligible_assignment_rules={
 *         "expiration_required": False,
 *     },
 *     active_assignment_rules={
 *         "expire_after": "P90D",
 *     },
 *     activation_rules={
 *         "maximum_duration": "PT1H",
 *         "require_approval": True,
 *     },
 *     notification_rules={
 *         "active_assignments": {
 *             "admin_notifications": {
 *                 "notification_level": "Critical",
 *                 "default_recipients": False,
 *                 "additional_recipients": ["someone@example.com"],
 *             },
 *         },
 *     })
 * ```
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using Azure = Pulumi.Azure;
 * return await Deployment.RunAsync(() =>
 * {
 *     var example = new Azure.Management.Group("example", new()
 *     {
 *         Name = "example-group",
 *     });
 *     var mgContributor = Azure.Authorization.GetRoleDefinition.Invoke(new()
 *     {
 *         Name = "Contributor",
 *         Scope = example.Id,
 *     });
 *     var exampleRoleManagementPolicy = new Azure.Pim.RoleManagementPolicy("example", new()
 *     {
 *         Scope = example.Id,
 *         RoleDefinitionId = mgContributor.Apply(getRoleDefinitionResult => getRoleDefinitionResult.Id),
 *         EligibleAssignmentRules = new Azure.Pim.Inputs.RoleManagementPolicyEligibleAssignmentRulesArgs
 *         {
 *             ExpirationRequired = false,
 *         },
 *         ActiveAssignmentRules = new Azure.Pim.Inputs.RoleManagementPolicyActiveAssignmentRulesArgs
 *         {
 *             ExpireAfter = "P90D",
 *         },
 *         ActivationRules = new Azure.Pim.Inputs.RoleManagementPolicyActivationRulesArgs
 *         {
 *             MaximumDuration = "PT1H",
 *             RequireApproval = true,
 *         },
 *         NotificationRules = new Azure.Pim.Inputs.RoleManagementPolicyNotificationRulesArgs
 *         {
 *             ActiveAssignments = new Azure.Pim.Inputs.RoleManagementPolicyNotificationRulesActiveAssignmentsArgs
 *             {
 *                 AdminNotifications = new Azure.Pim.Inputs.RoleManagementPolicyNotificationRulesActiveAssignmentsAdminNotificationsArgs
 *                 {
 *                     NotificationLevel = "Critical",
 *                     DefaultRecipients = false,
 *                     AdditionalRecipients = new[]
 *                     {
 *                         "[email protected]",
 *                     },
 *                 },
 *             },
 *         },
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	"github.com/pulumi/pulumi-azure/sdk/v5/go/azure/authorization"
 * 	"github.com/pulumi/pulumi-azure/sdk/v5/go/azure/management"
 * 	"github.com/pulumi/pulumi-azure/sdk/v5/go/azure/pim"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		example, err := management.NewGroup(ctx, "example", &management.GroupArgs{
 * 			Name: pulumi.String("example-group"),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		mgContributor := authorization.LookupRoleDefinitionOutput(ctx, authorization.GetRoleDefinitionOutputArgs{
 * 			Name:  pulumi.String("Contributor"),
 * 			Scope: example.ID(),
 * 		}, nil)
 * 		_, err = pim.NewRoleManagementPolicy(ctx, "example", &pim.RoleManagementPolicyArgs{
 * 			Scope: example.ID(),
 * 			RoleDefinitionId: pulumi.String(mgContributor.ApplyT(func(mgContributor authorization.GetRoleDefinitionResult) (*string, error) {
 * 				return &mgContributor.Id, nil
 * 			}).(pulumi.StringPtrOutput)),
 * 			EligibleAssignmentRules: &pim.RoleManagementPolicyEligibleAssignmentRulesArgs{
 * 				ExpirationRequired: pulumi.Bool(false),
 * 			},
 * 			ActiveAssignmentRules: &pim.RoleManagementPolicyActiveAssignmentRulesArgs{
 * 				ExpireAfter: pulumi.String("P90D"),
 * 			},
 * 			ActivationRules: &pim.RoleManagementPolicyActivationRulesArgs{
 * 				MaximumDuration: pulumi.String("PT1H"),
 * 				RequireApproval: pulumi.Bool(true),
 * 			},
 * 			NotificationRules: &pim.RoleManagementPolicyNotificationRulesArgs{
 * 				ActiveAssignments: &pim.RoleManagementPolicyNotificationRulesActiveAssignmentsArgs{
 * 					AdminNotifications: &pim.RoleManagementPolicyNotificationRulesActiveAssignmentsAdminNotificationsArgs{
 * 						NotificationLevel: pulumi.String("Critical"),
 * 						DefaultRecipients: pulumi.Bool(false),
 * 						AdditionalRecipients: pulumi.StringArray{
 * 							pulumi.String("[email protected]"),
 * 						},
 * 					},
 * 				},
 * 			},
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		return nil
 * 	})
 * }
 * ```
 * ```java
 * package generated_program;
 * import com.pulumi.Context;
 * import com.pulumi.Pulumi;
 * import com.pulumi.core.Output;
 * import com.pulumi.azure.management.Group;
 * import com.pulumi.azure.management.GroupArgs;
 * import com.pulumi.azure.authorization.AuthorizationFunctions;
 * import com.pulumi.azure.authorization.inputs.GetRoleDefinitionArgs;
 * import com.pulumi.azure.pim.RoleManagementPolicy;
 * import com.pulumi.azure.pim.RoleManagementPolicyArgs;
 * import com.pulumi.azure.pim.inputs.RoleManagementPolicyEligibleAssignmentRulesArgs;
 * import com.pulumi.azure.pim.inputs.RoleManagementPolicyActiveAssignmentRulesArgs;
 * import com.pulumi.azure.pim.inputs.RoleManagementPolicyActivationRulesArgs;
 * import com.pulumi.azure.pim.inputs.RoleManagementPolicyNotificationRulesArgs;
 * import com.pulumi.azure.pim.inputs.RoleManagementPolicyNotificationRulesActiveAssignmentsArgs;
 * import com.pulumi.azure.pim.inputs.RoleManagementPolicyNotificationRulesActiveAssignmentsAdminNotificationsArgs;
 * import java.util.List;
 * import java.util.ArrayList;
 * import java.util.Map;
 * import java.io.File;
 * import java.nio.file.Files;
 * import java.nio.file.Paths;
 * public class App {
 *     public static void main(String[] args) {
 *         Pulumi.run(App::stack);
 *     }
 *     public static void stack(Context ctx) {
 *         var example = new Group("example", GroupArgs.builder()
 *             .name("example-group")
 *             .build());
 *         final var mgContributor = AuthorizationFunctions.getRoleDefinition(GetRoleDefinitionArgs.builder()
 *             .name("Contributor")
 *             .scope(example.id())
 *             .build());
 *         var exampleRoleManagementPolicy = new RoleManagementPolicy("exampleRoleManagementPolicy", RoleManagementPolicyArgs.builder()
 *             .scope(example.id())
 *             .roleDefinitionId(mgContributor.applyValue(getRoleDefinitionResult -> getRoleDefinitionResult).applyValue(mgContributor -> mgContributor.applyValue(getRoleDefinitionResult -> getRoleDefinitionResult.id())))
 *             .eligibleAssignmentRules(RoleManagementPolicyEligibleAssignmentRulesArgs.builder()
 *                 .expirationRequired(false)
 *                 .build())
 *             .activeAssignmentRules(RoleManagementPolicyActiveAssignmentRulesArgs.builder()
 *                 .expireAfter("P90D")
 *                 .build())
 *             .activationRules(RoleManagementPolicyActivationRulesArgs.builder()
 *                 .maximumDuration("PT1H")
 *                 .requireApproval(true)
 *                 .build())
 *             .notificationRules(RoleManagementPolicyNotificationRulesArgs.builder()
 *                 .activeAssignments(RoleManagementPolicyNotificationRulesActiveAssignmentsArgs.builder()
 *                     .adminNotifications(RoleManagementPolicyNotificationRulesActiveAssignmentsAdminNotificationsArgs.builder()
 *                         .notificationLevel("Critical")
 *                         .defaultRecipients(false)
 *                         .additionalRecipients("[email protected]")
 *                         .build())
 *                     .build())
 *                 .build())
 *             .build());
 *     }
 * }
 * ```
 * ```yaml
 * resources:
 *   example:
 *     type: azure:management:Group
 *     properties:
 *       name: example-group
 *   exampleRoleManagementPolicy:
 *     type: azure:pim:RoleManagementPolicy
 *     name: example
 *     properties:
 *       scope: ${example.id}
 *       roleDefinitionId: ${mgContributor.id}
 *       eligibleAssignmentRules:
 *         expirationRequired: false
 *       activeAssignmentRules:
 *         expireAfter: P90D
 *       activationRules:
 *         maximumDuration: PT1H
 *         requireApproval: true
 *       notificationRules:
 *         activeAssignments:
 *           adminNotifications:
 *             notificationLevel: Critical
 *             defaultRecipients: false
 *             additionalRecipients:
 *               - [email protected]
 * variables:
 *   mgContributor:
 *     fn::invoke:
 *       Function: azure:authorization:getRoleDefinition
 *       Arguments:
 *         name: Contributor
 *         scope: ${example.id}
 * ```
 * 
 * ## Import
 * Because these policies are created automatically by Azure, they will auto-import on first use. They can be imported using the `resource id` of the role definition, combined with the scope id, e.g.
 * ```sh
 * $ pulumi import azure:pim/roleManagementPolicy:RoleManagementPolicy example "/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/00000000-0000-0000-0000-000000000000|"
 * ```
 * @property activationRules An `activation_rules` block as defined below.
 * @property activeAssignmentRules An `active_assignment_rules` block as defined below.
 * @property eligibleAssignmentRules An `eligible_assignment_rules` block as defined below.
 * @property notificationRules A `notification_rules` block as defined below.
 * @property roleDefinitionId The scoped Role Definition ID of the role for which this policy will apply. Changing this forces a new resource to be created.
 * @property scope The scope to which this Role Management Policy will apply. Can refer to a management group, a subscription or a resource group. Changing this forces a new resource to be created.
 */
public data class RoleManagementPolicyArgs(
    public val activationRules: Output? = null,
    public val activeAssignmentRules: Output? = null,
    public val eligibleAssignmentRules: Output? =
        null,
    public val notificationRules: Output? = null,
    public val roleDefinitionId: Output? = null,
    public val scope: Output? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.azure.pim.RoleManagementPolicyArgs =
        com.pulumi.azure.pim.RoleManagementPolicyArgs.builder()
            .activationRules(activationRules?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .activeAssignmentRules(
                activeAssignmentRules?.applyValue({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                }),
            )
            .eligibleAssignmentRules(
                eligibleAssignmentRules?.applyValue({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                }),
            )
            .notificationRules(notificationRules?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .roleDefinitionId(roleDefinitionId?.applyValue({ args0 -> args0 }))
            .scope(scope?.applyValue({ args0 -> args0 })).build()
}

/**
 * Builder for [RoleManagementPolicyArgs].
 */
@PulumiTagMarker
public class RoleManagementPolicyArgsBuilder internal constructor() {
    private var activationRules: Output? = null

    private var activeAssignmentRules: Output? = null

    private var eligibleAssignmentRules: Output? =
        null

    private var notificationRules: Output? = null

    private var roleDefinitionId: Output? = null

    private var scope: Output? = null

    /**
     * @param value An `activation_rules` block as defined below.
     */
    @JvmName("rkveodruinecedgk")
    public suspend fun activationRules(`value`: Output) {
        this.activationRules = value
    }

    /**
     * @param value An `active_assignment_rules` block as defined below.
     */
    @JvmName("sapksviwryolbsri")
    public suspend fun activeAssignmentRules(`value`: Output) {
        this.activeAssignmentRules = value
    }

    /**
     * @param value An `eligible_assignment_rules` block as defined below.
     */
    @JvmName("xandjpniqblfkisa")
    public suspend fun eligibleAssignmentRules(`value`: Output) {
        this.eligibleAssignmentRules = value
    }

    /**
     * @param value A `notification_rules` block as defined below.
     */
    @JvmName("tjjqhuuvqsnpleyv")
    public suspend fun notificationRules(`value`: Output) {
        this.notificationRules = value
    }

    /**
     * @param value The scoped Role Definition ID of the role for which this policy will apply. Changing this forces a new resource to be created.
     */
    @JvmName("ycgwmeyhuqrxqynf")
    public suspend fun roleDefinitionId(`value`: Output) {
        this.roleDefinitionId = value
    }

    /**
     * @param value The scope to which this Role Management Policy will apply. Can refer to a management group, a subscription or a resource group. Changing this forces a new resource to be created.
     */
    @JvmName("aiipsdqwvihclvdu")
    public suspend fun scope(`value`: Output) {
        this.scope = value
    }

    /**
     * @param value An `activation_rules` block as defined below.
     */
    @JvmName("yjjwlxxhmsjovsuc")
    public suspend fun activationRules(`value`: RoleManagementPolicyActivationRulesArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.activationRules = mapped
    }

    /**
     * @param argument An `activation_rules` block as defined below.
     */
    @JvmName("jacxgikdfctkiyyo")
    public suspend fun activationRules(argument: suspend RoleManagementPolicyActivationRulesArgsBuilder.() -> Unit) {
        val toBeMapped = RoleManagementPolicyActivationRulesArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.activationRules = mapped
    }

    /**
     * @param value An `active_assignment_rules` block as defined below.
     */
    @JvmName("hktkthywpqvbmvof")
    public suspend fun activeAssignmentRules(`value`: RoleManagementPolicyActiveAssignmentRulesArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.activeAssignmentRules = mapped
    }

    /**
     * @param argument An `active_assignment_rules` block as defined below.
     */
    @JvmName("clsmrndyyjtspoix")
    public suspend fun activeAssignmentRules(argument: suspend RoleManagementPolicyActiveAssignmentRulesArgsBuilder.() -> Unit) {
        val toBeMapped = RoleManagementPolicyActiveAssignmentRulesArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.activeAssignmentRules = mapped
    }

    /**
     * @param value An `eligible_assignment_rules` block as defined below.
     */
    @JvmName("cqvkngmxhgefarjn")
    public suspend fun eligibleAssignmentRules(`value`: RoleManagementPolicyEligibleAssignmentRulesArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.eligibleAssignmentRules = mapped
    }

    /**
     * @param argument An `eligible_assignment_rules` block as defined below.
     */
    @JvmName("qqwjirybwdqwxcxb")
    public suspend fun eligibleAssignmentRules(argument: suspend RoleManagementPolicyEligibleAssignmentRulesArgsBuilder.() -> Unit) {
        val toBeMapped = RoleManagementPolicyEligibleAssignmentRulesArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.eligibleAssignmentRules = mapped
    }

    /**
     * @param value A `notification_rules` block as defined below.
     */
    @JvmName("wkovnnasqxhedmuo")
    public suspend fun notificationRules(`value`: RoleManagementPolicyNotificationRulesArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.notificationRules = mapped
    }

    /**
     * @param argument A `notification_rules` block as defined below.
     */
    @JvmName("mkhublohltuiohvb")
    public suspend fun notificationRules(argument: suspend RoleManagementPolicyNotificationRulesArgsBuilder.() -> Unit) {
        val toBeMapped = RoleManagementPolicyNotificationRulesArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.notificationRules = mapped
    }

    /**
     * @param value The scoped Role Definition ID of the role for which this policy will apply. Changing this forces a new resource to be created.
     */
    @JvmName("ebecirekguebekhs")
    public suspend fun roleDefinitionId(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.roleDefinitionId = mapped
    }

    /**
     * @param value The scope to which this Role Management Policy will apply. Can refer to a management group, a subscription or a resource group. Changing this forces a new resource to be created.
     */
    @JvmName("oakwxmcbfmsndkkt")
    public suspend fun scope(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.scope = mapped
    }

    internal fun build(): RoleManagementPolicyArgs = RoleManagementPolicyArgs(
        activationRules = activationRules,
        activeAssignmentRules = activeAssignmentRules,
        eligibleAssignmentRules = eligibleAssignmentRules,
        notificationRules = notificationRules,
        roleDefinitionId = roleDefinitionId,
        scope = scope,
    )
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy