packages feed

stratosphere-0.58.0: library-gen/Stratosphere/Resources/ApplicationInsightsApplication.hs

{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TupleSections #-}

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationinsights-application.html

module Stratosphere.Resources.ApplicationInsightsApplication where

import Stratosphere.ResourceImports
import Stratosphere.ResourceProperties.ApplicationInsightsApplicationComponentMonitoringSetting
import Stratosphere.ResourceProperties.ApplicationInsightsApplicationCustomComponent
import Stratosphere.ResourceProperties.ApplicationInsightsApplicationLogPatternSet
import Stratosphere.ResourceProperties.Tag

-- | Full data type definition for ApplicationInsightsApplication. See
-- 'applicationInsightsApplication' for a more convenient constructor.
data ApplicationInsightsApplication =
  ApplicationInsightsApplication
  { _applicationInsightsApplicationAutoConfigurationEnabled :: Maybe (Val Bool)
  , _applicationInsightsApplicationCWEMonitorEnabled :: Maybe (Val Bool)
  , _applicationInsightsApplicationComponentMonitoringSettings :: Maybe [ApplicationInsightsApplicationComponentMonitoringSetting]
  , _applicationInsightsApplicationCustomComponents :: Maybe [ApplicationInsightsApplicationCustomComponent]
  , _applicationInsightsApplicationLogPatternSets :: Maybe [ApplicationInsightsApplicationLogPatternSet]
  , _applicationInsightsApplicationOpsCenterEnabled :: Maybe (Val Bool)
  , _applicationInsightsApplicationOpsItemSNSTopicArn :: Maybe (Val Text)
  , _applicationInsightsApplicationResourceGroupName :: Val Text
  , _applicationInsightsApplicationTags :: Maybe [Tag]
  } deriving (Show, Eq)

instance ToResourceProperties ApplicationInsightsApplication where
  toResourceProperties ApplicationInsightsApplication{..} =
    ResourceProperties
    { resourcePropertiesType = "AWS::ApplicationInsights::Application"
    , resourcePropertiesProperties =
        hashMapFromList $ catMaybes
        [ fmap (("AutoConfigurationEnabled",) . toJSON) _applicationInsightsApplicationAutoConfigurationEnabled
        , fmap (("CWEMonitorEnabled",) . toJSON) _applicationInsightsApplicationCWEMonitorEnabled
        , fmap (("ComponentMonitoringSettings",) . toJSON) _applicationInsightsApplicationComponentMonitoringSettings
        , fmap (("CustomComponents",) . toJSON) _applicationInsightsApplicationCustomComponents
        , fmap (("LogPatternSets",) . toJSON) _applicationInsightsApplicationLogPatternSets
        , fmap (("OpsCenterEnabled",) . toJSON) _applicationInsightsApplicationOpsCenterEnabled
        , fmap (("OpsItemSNSTopicArn",) . toJSON) _applicationInsightsApplicationOpsItemSNSTopicArn
        , (Just . ("ResourceGroupName",) . toJSON) _applicationInsightsApplicationResourceGroupName
        , fmap (("Tags",) . toJSON) _applicationInsightsApplicationTags
        ]
    }

-- | Constructor for 'ApplicationInsightsApplication' containing required
-- fields as arguments.
applicationInsightsApplication
  :: Val Text -- ^ 'aiaResourceGroupName'
  -> ApplicationInsightsApplication
applicationInsightsApplication resourceGroupNamearg =
  ApplicationInsightsApplication
  { _applicationInsightsApplicationAutoConfigurationEnabled = Nothing
  , _applicationInsightsApplicationCWEMonitorEnabled = Nothing
  , _applicationInsightsApplicationComponentMonitoringSettings = Nothing
  , _applicationInsightsApplicationCustomComponents = Nothing
  , _applicationInsightsApplicationLogPatternSets = Nothing
  , _applicationInsightsApplicationOpsCenterEnabled = Nothing
  , _applicationInsightsApplicationOpsItemSNSTopicArn = Nothing
  , _applicationInsightsApplicationResourceGroupName = resourceGroupNamearg
  , _applicationInsightsApplicationTags = Nothing
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationinsights-application.html#cfn-applicationinsights-application-autoconfigurationenabled
aiaAutoConfigurationEnabled :: Lens' ApplicationInsightsApplication (Maybe (Val Bool))
aiaAutoConfigurationEnabled = lens _applicationInsightsApplicationAutoConfigurationEnabled (\s a -> s { _applicationInsightsApplicationAutoConfigurationEnabled = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationinsights-application.html#cfn-applicationinsights-application-cwemonitorenabled
aiaCWEMonitorEnabled :: Lens' ApplicationInsightsApplication (Maybe (Val Bool))
aiaCWEMonitorEnabled = lens _applicationInsightsApplicationCWEMonitorEnabled (\s a -> s { _applicationInsightsApplicationCWEMonitorEnabled = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationinsights-application.html#cfn-applicationinsights-application-componentmonitoringsettings
aiaComponentMonitoringSettings :: Lens' ApplicationInsightsApplication (Maybe [ApplicationInsightsApplicationComponentMonitoringSetting])
aiaComponentMonitoringSettings = lens _applicationInsightsApplicationComponentMonitoringSettings (\s a -> s { _applicationInsightsApplicationComponentMonitoringSettings = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationinsights-application.html#cfn-applicationinsights-application-customcomponents
aiaCustomComponents :: Lens' ApplicationInsightsApplication (Maybe [ApplicationInsightsApplicationCustomComponent])
aiaCustomComponents = lens _applicationInsightsApplicationCustomComponents (\s a -> s { _applicationInsightsApplicationCustomComponents = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationinsights-application.html#cfn-applicationinsights-application-logpatternsets
aiaLogPatternSets :: Lens' ApplicationInsightsApplication (Maybe [ApplicationInsightsApplicationLogPatternSet])
aiaLogPatternSets = lens _applicationInsightsApplicationLogPatternSets (\s a -> s { _applicationInsightsApplicationLogPatternSets = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationinsights-application.html#cfn-applicationinsights-application-opscenterenabled
aiaOpsCenterEnabled :: Lens' ApplicationInsightsApplication (Maybe (Val Bool))
aiaOpsCenterEnabled = lens _applicationInsightsApplicationOpsCenterEnabled (\s a -> s { _applicationInsightsApplicationOpsCenterEnabled = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationinsights-application.html#cfn-applicationinsights-application-opsitemsnstopicarn
aiaOpsItemSNSTopicArn :: Lens' ApplicationInsightsApplication (Maybe (Val Text))
aiaOpsItemSNSTopicArn = lens _applicationInsightsApplicationOpsItemSNSTopicArn (\s a -> s { _applicationInsightsApplicationOpsItemSNSTopicArn = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationinsights-application.html#cfn-applicationinsights-application-resourcegroupname
aiaResourceGroupName :: Lens' ApplicationInsightsApplication (Val Text)
aiaResourceGroupName = lens _applicationInsightsApplicationResourceGroupName (\s a -> s { _applicationInsightsApplicationResourceGroupName = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationinsights-application.html#cfn-applicationinsights-application-tags
aiaTags :: Lens' ApplicationInsightsApplication (Maybe [Tag])
aiaTags = lens _applicationInsightsApplicationTags (\s a -> s { _applicationInsightsApplicationTags = a })