content: {-# LANGUAGE DataKinds #-}
  {-# LANGUAGE TypeFamilies #-}
  
  -----------------------------------------------------------------------------
  
  -----------------------------------------------------------------------------
  
  {- |
   Module      :  OpenTelemetry.Resource.Container
   Copyright   :  (c) Ian Duncan, 2021
   License     :  BSD-3
   Description :  Detect & provide resource info about a container
   Maintainer  :  Ian Duncan
   Stability   :  experimental
   Portability :  non-portable (GHC extensions)
  -}
  module OpenTelemetry.Resource.Container where
  
  import Data.Text (Text)
  import OpenTelemetry.Resource
  
  
  -- | A container instance.
  data Container = Container
    { containerName :: Maybe Text
    -- ^ Container name used by container runtime.
    --
    -- Examples: 'opentelemetry-autoconf'
    , containerId :: Maybe Text
    -- ^ Container ID. Usually a UUID, as for example used to identify Docker containers. The UUID might be abbreviated.
    , containerRuntime :: Maybe Text
    -- ^ The container runtime managing this container.
    , containerImageName :: Maybe Text
    -- ^ Name of the image the container was built on.
    , containerImageTag :: Maybe Text
    -- ^ Container image tag.
    }
  
  
  instance ToResource Container where
    type ResourceSchema Container = 'Nothing
    toResource Container {..} =
      mkResource
        [ "container.name" .=? containerName
        , "container.id" .=? containerId
        , "container.runtime" .=? containerRuntime
        , "container.image.name" .=? containerImageName
        , "container.image.tag" .=? containerImageTag
        ]
  