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

commonMain.aws.sdk.kotlin.services.applicationsignals.model.ServiceSummary.kt Maven / Gradle / Ivy

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

package aws.sdk.kotlin.services.applicationsignals.model

import aws.smithy.kotlin.runtime.SdkDsl

/**
 * This structure contains information about one of your services that was discoverd by Application Signals
 */
public class ServiceSummary private constructor(builder: Builder) {
    /**
     * This structure contains one or more string-to-string maps that help identify this service. It can include *platform attributes*, *application attributes*, and *telemetry attributes*.
     *
     * Platform attributes contain information the service's platform.
     * + `PlatformType` defines the hosted-in platform.
     * + `EKS.Cluster` is the name of the Amazon EKS cluster.
     * + `K8s.Cluster` is the name of the self-hosted Kubernetes cluster.
     * + `K8s.Namespace` is the name of the Kubernetes namespace in either Amazon EKS or Kubernetes clusters.
     * + `K8s.Workload` is the name of the Kubernetes workload in either Amazon EKS or Kubernetes clusters.
     * + `K8s.Node` is the name of the Kubernetes node in either Amazon EKS or Kubernetes clusters.
     * + `K8s.Pod` is the name of the Kubernetes pod in either Amazon EKS or Kubernetes clusters.
     * + `EC2.AutoScalingGroup` is the name of the Amazon EC2 Auto Scaling group.
     * + `EC2.InstanceId` is the ID of the Amazon EC2 instance.
     * + `Host` is the name of the host, for all platform types.
     *
     * Applciation attributes contain information about the application.
     * + `AWS.Application` is the application's name in Amazon Web Services Service Catalog AppRegistry.
     * + `AWS.Application.ARN` is the application's ARN in Amazon Web Services Service Catalog AppRegistry.
     *
     * Telemetry attributes contain telemetry information.
     * + `Telemetry.SDK` is the fingerprint of the OpenTelemetry SDK version for instrumented services.
     * + `Telemetry.Agent` is the fingerprint of the agent used to collect and send telemetry data.
     * + `Telemetry.Source` Specifies the point of application where the telemetry was collected or specifies what was used for the source of telemetry data.
     */
    public val attributeMaps: List>? = builder.attributeMaps
    /**
     * This is a string-to-string map that help identify the objects discovered by Application Signals. It can include the following fields.
     * + `Type` designates the type of object this is.
     * + `ResourceType` specifies the type of the resource. This field is used only when the value of the `Type` field is `Resource` or `AWS::Resource`.
     * + `Name` specifies the name of the object. This is used only if the value of the `Type` field is `Service`, `RemoteService`, or `AWS::Service`.
     * + `Identifier` identifies the resource objects of this resource. This is used only if the value of the `Type` field is `Resource` or `AWS::Resource`.
     * + `Environment` specifies the location where this object is hosted, or what it belongs to.
     */
    public val keyAttributes: Map = requireNotNull(builder.keyAttributes) { "A non-null value must be provided for keyAttributes" }
    /**
     * An array of structures that each contain information about one metric associated with this service.
     */
    public val metricReferences: List = requireNotNull(builder.metricReferences) { "A non-null value must be provided for metricReferences" }

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

    override fun toString(): kotlin.String = buildString {
        append("ServiceSummary(")
        append("attributeMaps=$attributeMaps,")
        append("keyAttributes=$keyAttributes,")
        append("metricReferences=$metricReferences")
        append(")")
    }

    override fun hashCode(): kotlin.Int {
        var result = attributeMaps?.hashCode() ?: 0
        result = 31 * result + (keyAttributes.hashCode())
        result = 31 * result + (metricReferences.hashCode())
        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 ServiceSummary

        if (attributeMaps != other.attributeMaps) return false
        if (keyAttributes != other.keyAttributes) return false
        if (metricReferences != other.metricReferences) return false

        return true
    }

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

    @SdkDsl
    public class Builder {
        /**
         * This structure contains one or more string-to-string maps that help identify this service. It can include *platform attributes*, *application attributes*, and *telemetry attributes*.
         *
         * Platform attributes contain information the service's platform.
         * + `PlatformType` defines the hosted-in platform.
         * + `EKS.Cluster` is the name of the Amazon EKS cluster.
         * + `K8s.Cluster` is the name of the self-hosted Kubernetes cluster.
         * + `K8s.Namespace` is the name of the Kubernetes namespace in either Amazon EKS or Kubernetes clusters.
         * + `K8s.Workload` is the name of the Kubernetes workload in either Amazon EKS or Kubernetes clusters.
         * + `K8s.Node` is the name of the Kubernetes node in either Amazon EKS or Kubernetes clusters.
         * + `K8s.Pod` is the name of the Kubernetes pod in either Amazon EKS or Kubernetes clusters.
         * + `EC2.AutoScalingGroup` is the name of the Amazon EC2 Auto Scaling group.
         * + `EC2.InstanceId` is the ID of the Amazon EC2 instance.
         * + `Host` is the name of the host, for all platform types.
         *
         * Applciation attributes contain information about the application.
         * + `AWS.Application` is the application's name in Amazon Web Services Service Catalog AppRegistry.
         * + `AWS.Application.ARN` is the application's ARN in Amazon Web Services Service Catalog AppRegistry.
         *
         * Telemetry attributes contain telemetry information.
         * + `Telemetry.SDK` is the fingerprint of the OpenTelemetry SDK version for instrumented services.
         * + `Telemetry.Agent` is the fingerprint of the agent used to collect and send telemetry data.
         * + `Telemetry.Source` Specifies the point of application where the telemetry was collected or specifies what was used for the source of telemetry data.
         */
        public var attributeMaps: List>? = null
        /**
         * This is a string-to-string map that help identify the objects discovered by Application Signals. It can include the following fields.
         * + `Type` designates the type of object this is.
         * + `ResourceType` specifies the type of the resource. This field is used only when the value of the `Type` field is `Resource` or `AWS::Resource`.
         * + `Name` specifies the name of the object. This is used only if the value of the `Type` field is `Service`, `RemoteService`, or `AWS::Service`.
         * + `Identifier` identifies the resource objects of this resource. This is used only if the value of the `Type` field is `Resource` or `AWS::Resource`.
         * + `Environment` specifies the location where this object is hosted, or what it belongs to.
         */
        public var keyAttributes: Map? = null
        /**
         * An array of structures that each contain information about one metric associated with this service.
         */
        public var metricReferences: List? = null

        @PublishedApi
        internal constructor()
        @PublishedApi
        internal constructor(x: aws.sdk.kotlin.services.applicationsignals.model.ServiceSummary) : this() {
            this.attributeMaps = x.attributeMaps
            this.keyAttributes = x.keyAttributes
            this.metricReferences = x.metricReferences
        }

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

        internal fun correctErrors(): Builder {
            if (keyAttributes == null) keyAttributes = emptyMap()
            if (metricReferences == null) metricReferences = emptyList()
            return this
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy