import * as pulumi from "@pulumi/pulumi"; /** * Provides a Datadog Tag Pipeline Ruleset Order resource that can be used to manage the order of Tag Pipeline Rulesets. * * ## Example Usage * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as datadog from "@pulumi/datadog"; * * // ============================================================================ * // Example 1: Basic Usage - Manage the order of tag pipeline rulesets * // ============================================================================ * // This example shows the default behavior where UI-defined rulesets that are * // not in Terraform will be preserved at the end of the order. * const first = new datadog.TagPipelineRuleset("first", { * name: "Standardize Environment Tags", * enabled: true, * rules: [{ * name: "map-env", * enabled: true, * mapping: [{ * destinationKey: "env", * ifTagExists: "replace", * sourceKeys: [ * "environment", * "stage", * ], * }], * }], * }); * const second = new datadog.TagPipelineRuleset("second", { * name: "Assign Team Tags", * enabled: true, * rules: [{ * name: "assign-team", * enabled: true, * query: [{ * query: "service:web* OR service:api*", * ifTagExists: "do_not_apply", * addition: [{ * key: "team", * value: "backend", * }], * }], * }], * }); * const third = new datadog.TagPipelineRuleset("third", { * name: "Enrich Service Metadata", * enabled: true, * rules: [{ * name: "lookup-service", * enabled: true, * referenceTable: [{ * tableName: "service_catalog", * caseInsensitivity: true, * ifTagExists: "append", * sourceKeys: ["service"], * fieldPairs: [{ * inputColumn: "owner_team", * outputKey: "owner", * }], * }], * }], * }); * // Manage the order of tag pipeline rulesets * // Rulesets are executed in the order specified in ruleset_ids * // UI-defined rulesets not in this list will be preserved at the end * const order = new datadog.TagPipelineRulesets("order", {rulesetIds: [ * first.id, * second.id, * third.id, * ]}); * // ============================================================================ * // Example 2: Override UI-defined rulesets (override_ui_defined_resources = true) * // ============================================================================ * // When set to true, any rulesets created via the UI that are not defined in Terraform * // will be automatically deleted during pulumi up. * const managedFirst = new datadog.TagPipelineRuleset("managed_first", { * name: "Standardize Environment Tags", * enabled: true, * rules: [{ * name: "map-env", * enabled: true, * mapping: [{ * destinationKey: "env", * ifTagExists: "replace", * sourceKeys: [ * "environment", * "stage", * ], * }], * }], * }); * const managedSecond = new datadog.TagPipelineRuleset("managed_second", { * name: "Assign Team Tags", * enabled: true, * rules: [{ * name: "assign-team", * enabled: true, * query: [{ * query: "service:web*", * ifTagExists: "do_not_apply", * addition: [{ * key: "team", * value: "frontend", * }], * }], * }], * }); * // Manage order with override_ui_defined_resources = true * // This will delete any rulesets created via the UI that are not in this list * const orderOverride = new datadog.TagPipelineRulesets("order_override", { * overrideUiDefinedResources: true, * rulesetIds: [ * managedFirst.id, * managedSecond.id, * ], * }); * // ============================================================================ * // Example 3: Preserve UI-defined rulesets (override_ui_defined_resources = false) * // ============================================================================ * // When set to false (default), UI-defined rulesets that are not in Terraform * // will be preserved at the end of the order. However, if unmanaged rulesets * // are in the middle of the order, Terraform will error and require you to either: * // 1. Import the unmanaged rulesets * // 2. Set override_ui_defined_resources = true * // 3. Manually reorder or delete them in the Datadog UI * const preserveFirst = new datadog.TagPipelineRuleset("preserve_first", { * name: "Standardize Environment Tags", * enabled: true, * rules: [{ * name: "map-env", * enabled: true, * mapping: [{ * destinationKey: "env", * ifTagExists: "replace", * sourceKeys: [ * "environment", * "stage", * ], * }], * }], * }); * const preserveSecond = new datadog.TagPipelineRuleset("preserve_second", { * name: "Assign Team Tags", * enabled: true, * rules: [{ * name: "assign-team", * enabled: true, * query: [{ * query: "service:web*", * ifTagExists: "do_not_apply", * addition: [{ * key: "team", * value: "frontend", * }], * }], * }], * }); * // Manage order with override_ui_defined_resources = false (default) * // UI-defined rulesets will be preserved at the end of the order * // Terraform will warn if unmanaged rulesets exist at the end * // Terraform will error if unmanaged rulesets are in the middle * const orderPreserve = new datadog.TagPipelineRulesets("order_preserve", { * overrideUiDefinedResources: false, * rulesetIds: [ * preserveFirst.id, * preserveSecond.id, * ], * }); * ``` * * ## Import * * The `pulumi import` command can be used, for example: * * ```sh * $ pulumi import datadog:index/tagPipelineRulesets:TagPipelineRulesets my_rulesets order * ``` */ export declare class TagPipelineRulesets extends pulumi.CustomResource { /** * Get an existing TagPipelineRulesets resource's state with the given name, ID, and optional extra * properties used to qualify the lookup. * * @param name The _unique_ name of the resulting resource. * @param id The _unique_ provider ID of the resource to lookup. * @param state Any extra arguments used during the lookup. * @param opts Optional settings to control the behavior of the CustomResource. */ static get(name: string, id: pulumi.Input, state?: TagPipelineRulesetsState, opts?: pulumi.CustomResourceOptions): TagPipelineRulesets; /** * Returns true if the given object is an instance of TagPipelineRulesets. This is designed to work even * when multiple copies of the Pulumi SDK have been loaded into the same process. */ static isInstance(obj: any): obj is TagPipelineRulesets; /** * Whether to override UI-defined rulesets. When set to true, any rulesets created via the UI that are not defined in Terraform will be deleted and Terraform will be used as the source of truth for rules and their ordering. When set to false, any rulesets created via the UI that are at the end of order will be kept but will be warned, otherwise an error will be thrown in pulumi preview phase. Default is false */ readonly overrideUiDefinedResources: pulumi.Output; /** * The list of Tag Pipeline Ruleset IDs, in order. Rulesets are executed in the order specified in this list. */ readonly rulesetIds: pulumi.Output; /** * Create a TagPipelineRulesets resource with the given unique name, arguments, and options. * * @param name The _unique_ name of the resource. * @param args The arguments to use to populate this resource's properties. * @param opts A bag of options that control this resource's behavior. */ constructor(name: string, args: TagPipelineRulesetsArgs, opts?: pulumi.CustomResourceOptions); } /** * Input properties used for looking up and filtering TagPipelineRulesets resources. */ export interface TagPipelineRulesetsState { /** * Whether to override UI-defined rulesets. When set to true, any rulesets created via the UI that are not defined in Terraform will be deleted and Terraform will be used as the source of truth for rules and their ordering. When set to false, any rulesets created via the UI that are at the end of order will be kept but will be warned, otherwise an error will be thrown in pulumi preview phase. Default is false */ overrideUiDefinedResources?: pulumi.Input; /** * The list of Tag Pipeline Ruleset IDs, in order. Rulesets are executed in the order specified in this list. */ rulesetIds?: pulumi.Input[]>; } /** * The set of arguments for constructing a TagPipelineRulesets resource. */ export interface TagPipelineRulesetsArgs { /** * Whether to override UI-defined rulesets. When set to true, any rulesets created via the UI that are not defined in Terraform will be deleted and Terraform will be used as the source of truth for rules and their ordering. When set to false, any rulesets created via the UI that are at the end of order will be kept but will be warned, otherwise an error will be thrown in pulumi preview phase. Default is false */ overrideUiDefinedResources?: pulumi.Input; /** * The list of Tag Pipeline Ruleset IDs, in order. Rulesets are executed in the order specified in this list. */ rulesetIds: pulumi.Input[]>; }