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

commonMain.aws.sdk.kotlin.services.configservice.model.OrganizationCustomPolicyRuleMetadata.kt Maven / Gradle / Ivy

There is a newer version: 1.3.37
Show newest version
// Code generated by smithy-kotlin-codegen. DO NOT EDIT!

package aws.sdk.kotlin.services.configservice.model

import aws.smithy.kotlin.runtime.SdkDsl

/**
 * An object that specifies metadata for your organization's Config Custom Policy rule. The metadata includes the runtime system in use, which accounts have debug logging enabled, and other custom rule metadata, such as resource type, resource ID of Amazon Web Services resource, and organization trigger types that initiate Config to evaluate Amazon Web Services resources against a rule.
 */
public class OrganizationCustomPolicyRuleMetadata private constructor(builder: Builder) {
    /**
     * A list of accounts that you can enable debug logging for your organization Config Custom Policy rule. List is null when debug logging is enabled for all accounts.
     */
    public val debugLogDeliveryAccounts: List? = builder.debugLogDeliveryAccounts
    /**
     * The description that you provide for your organization Config Custom Policy rule.
     */
    public val description: kotlin.String? = builder.description
    /**
     * A string, in JSON format, that is passed to your organization Config Custom Policy rule.
     */
    public val inputParameters: kotlin.String? = builder.inputParameters
    /**
     * The maximum frequency with which Config runs evaluations for a rule. Your Config Custom Policy rule is triggered when Config delivers the configuration snapshot. For more information, see ConfigSnapshotDeliveryProperties.
     */
    public val maximumExecutionFrequency: aws.sdk.kotlin.services.configservice.model.MaximumExecutionFrequency? = builder.maximumExecutionFrequency
    /**
     * The type of notification that initiates Config to run an evaluation for a rule. For Config Custom Policy rules, Config supports change-initiated notification types:
     * + `ConfigurationItemChangeNotification` - Initiates an evaluation when Config delivers a configuration item as a result of a resource change.
     * + `OversizedConfigurationItemChangeNotification` - Initiates an evaluation when Config delivers an oversized configuration item. Config may generate this notification type when a resource changes and the notification exceeds the maximum size allowed by Amazon SNS.
     */
    public val organizationConfigRuleTriggerTypes: List? = builder.organizationConfigRuleTriggerTypes
    /**
     * The runtime system for your organization Config Custom Policy rules. Guard is a policy-as-code language that allows you to write policies that are enforced by Config Custom Policy rules. For more information about Guard, see the [Guard GitHub Repository](https://github.com/aws-cloudformation/cloudformation-guard).
     */
    public val policyRuntime: kotlin.String = requireNotNull(builder.policyRuntime) { "A non-null value must be provided for policyRuntime" }
    /**
     * The policy definition containing the logic for your organization Config Custom Policy rule.
     */
    public val policyText: kotlin.String = requireNotNull(builder.policyText) { "A non-null value must be provided for policyText" }
    /**
     * The ID of the Amazon Web Services resource that was evaluated.
     */
    public val resourceIdScope: kotlin.String? = builder.resourceIdScope
    /**
     * The type of the Amazon Web Services resource that was evaluated.
     */
    public val resourceTypesScope: List? = builder.resourceTypesScope
    /**
     * One part of a key-value pair that make up a tag. A key is a general label that acts like a category for more specific tag values.
     */
    public val tagKeyScope: kotlin.String? = builder.tagKeyScope
    /**
     * The optional part of a key-value pair that make up a tag. A value acts as a descriptor within a tag category (key).
     */
    public val tagValueScope: kotlin.String? = builder.tagValueScope

    public companion object {
        public operator fun invoke(block: Builder.() -> kotlin.Unit): aws.sdk.kotlin.services.configservice.model.OrganizationCustomPolicyRuleMetadata = Builder().apply(block).build()
    }

    override fun toString(): kotlin.String = buildString {
        append("OrganizationCustomPolicyRuleMetadata(")
        append("debugLogDeliveryAccounts=$debugLogDeliveryAccounts,")
        append("description=$description,")
        append("inputParameters=$inputParameters,")
        append("maximumExecutionFrequency=$maximumExecutionFrequency,")
        append("organizationConfigRuleTriggerTypes=$organizationConfigRuleTriggerTypes,")
        append("policyRuntime=$policyRuntime,")
        append("policyText=$policyText,")
        append("resourceIdScope=$resourceIdScope,")
        append("resourceTypesScope=$resourceTypesScope,")
        append("tagKeyScope=$tagKeyScope,")
        append("tagValueScope=$tagValueScope")
        append(")")
    }

    override fun hashCode(): kotlin.Int {
        var result = debugLogDeliveryAccounts?.hashCode() ?: 0
        result = 31 * result + (description?.hashCode() ?: 0)
        result = 31 * result + (inputParameters?.hashCode() ?: 0)
        result = 31 * result + (maximumExecutionFrequency?.hashCode() ?: 0)
        result = 31 * result + (organizationConfigRuleTriggerTypes?.hashCode() ?: 0)
        result = 31 * result + (policyRuntime.hashCode())
        result = 31 * result + (policyText.hashCode())
        result = 31 * result + (resourceIdScope?.hashCode() ?: 0)
        result = 31 * result + (resourceTypesScope?.hashCode() ?: 0)
        result = 31 * result + (tagKeyScope?.hashCode() ?: 0)
        result = 31 * result + (tagValueScope?.hashCode() ?: 0)
        return result
    }

    override fun equals(other: kotlin.Any?): kotlin.Boolean {
        if (this === other) return true
        if (other == null || this::class != other::class) return false

        other as OrganizationCustomPolicyRuleMetadata

        if (debugLogDeliveryAccounts != other.debugLogDeliveryAccounts) return false
        if (description != other.description) return false
        if (inputParameters != other.inputParameters) return false
        if (maximumExecutionFrequency != other.maximumExecutionFrequency) return false
        if (organizationConfigRuleTriggerTypes != other.organizationConfigRuleTriggerTypes) return false
        if (policyRuntime != other.policyRuntime) return false
        if (policyText != other.policyText) return false
        if (resourceIdScope != other.resourceIdScope) return false
        if (resourceTypesScope != other.resourceTypesScope) return false
        if (tagKeyScope != other.tagKeyScope) return false
        if (tagValueScope != other.tagValueScope) return false

        return true
    }

    public inline fun copy(block: Builder.() -> kotlin.Unit = {}): aws.sdk.kotlin.services.configservice.model.OrganizationCustomPolicyRuleMetadata = Builder(this).apply(block).build()

    @SdkDsl
    public class Builder {
        /**
         * A list of accounts that you can enable debug logging for your organization Config Custom Policy rule. List is null when debug logging is enabled for all accounts.
         */
        public var debugLogDeliveryAccounts: List? = null
        /**
         * The description that you provide for your organization Config Custom Policy rule.
         */
        public var description: kotlin.String? = null
        /**
         * A string, in JSON format, that is passed to your organization Config Custom Policy rule.
         */
        public var inputParameters: kotlin.String? = null
        /**
         * The maximum frequency with which Config runs evaluations for a rule. Your Config Custom Policy rule is triggered when Config delivers the configuration snapshot. For more information, see ConfigSnapshotDeliveryProperties.
         */
        public var maximumExecutionFrequency: aws.sdk.kotlin.services.configservice.model.MaximumExecutionFrequency? = null
        /**
         * The type of notification that initiates Config to run an evaluation for a rule. For Config Custom Policy rules, Config supports change-initiated notification types:
         * + `ConfigurationItemChangeNotification` - Initiates an evaluation when Config delivers a configuration item as a result of a resource change.
         * + `OversizedConfigurationItemChangeNotification` - Initiates an evaluation when Config delivers an oversized configuration item. Config may generate this notification type when a resource changes and the notification exceeds the maximum size allowed by Amazon SNS.
         */
        public var organizationConfigRuleTriggerTypes: List? = null
        /**
         * The runtime system for your organization Config Custom Policy rules. Guard is a policy-as-code language that allows you to write policies that are enforced by Config Custom Policy rules. For more information about Guard, see the [Guard GitHub Repository](https://github.com/aws-cloudformation/cloudformation-guard).
         */
        public var policyRuntime: kotlin.String? = null
        /**
         * The policy definition containing the logic for your organization Config Custom Policy rule.
         */
        public var policyText: kotlin.String? = null
        /**
         * The ID of the Amazon Web Services resource that was evaluated.
         */
        public var resourceIdScope: kotlin.String? = null
        /**
         * The type of the Amazon Web Services resource that was evaluated.
         */
        public var resourceTypesScope: List? = null
        /**
         * One part of a key-value pair that make up a tag. A key is a general label that acts like a category for more specific tag values.
         */
        public var tagKeyScope: kotlin.String? = null
        /**
         * The optional part of a key-value pair that make up a tag. A value acts as a descriptor within a tag category (key).
         */
        public var tagValueScope: kotlin.String? = null

        @PublishedApi
        internal constructor()
        @PublishedApi
        internal constructor(x: aws.sdk.kotlin.services.configservice.model.OrganizationCustomPolicyRuleMetadata) : this() {
            this.debugLogDeliveryAccounts = x.debugLogDeliveryAccounts
            this.description = x.description
            this.inputParameters = x.inputParameters
            this.maximumExecutionFrequency = x.maximumExecutionFrequency
            this.organizationConfigRuleTriggerTypes = x.organizationConfigRuleTriggerTypes
            this.policyRuntime = x.policyRuntime
            this.policyText = x.policyText
            this.resourceIdScope = x.resourceIdScope
            this.resourceTypesScope = x.resourceTypesScope
            this.tagKeyScope = x.tagKeyScope
            this.tagValueScope = x.tagValueScope
        }

        @PublishedApi
        internal fun build(): aws.sdk.kotlin.services.configservice.model.OrganizationCustomPolicyRuleMetadata = OrganizationCustomPolicyRuleMetadata(this)

        internal fun correctErrors(): Builder {
            if (policyRuntime == null) policyRuntime = ""
            if (policyText == null) policyText = ""
            return this
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy