{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.ElasticBeanstalk.Types.ConfigurationOptionDescription
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.ElasticBeanstalk.Types.ConfigurationOptionDescription where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.ElasticBeanstalk.Types.ConfigurationOptionValueType
import Amazonka.ElasticBeanstalk.Types.OptionRestrictionRegex
import qualified Amazonka.Prelude as Prelude

-- | Describes the possible values for a configuration option.
--
-- /See:/ 'newConfigurationOptionDescription' smart constructor.
data ConfigurationOptionDescription = ConfigurationOptionDescription'
  { -- | An indication of which action is required if the value for this
    -- configuration option changes:
    --
    -- -   @NoInterruption@ : There is no interruption to the environment or
    --     application availability.
    --
    -- -   @RestartEnvironment@ : The environment is entirely restarted, all
    --     AWS resources are deleted and recreated, and the environment is
    --     unavailable during the process.
    --
    -- -   @RestartApplicationServer@ : The environment is available the entire
    --     time. However, a short application outage occurs when the
    --     application servers on the running Amazon EC2 instances are
    --     restarted.
    ConfigurationOptionDescription -> Maybe Text
changeSeverity :: Prelude.Maybe Prelude.Text,
    -- | The default value for this configuration option.
    ConfigurationOptionDescription -> Maybe Text
defaultValue :: Prelude.Maybe Prelude.Text,
    -- | If specified, the configuration option must be a string value no longer
    -- than this value.
    ConfigurationOptionDescription -> Maybe Int
maxLength :: Prelude.Maybe Prelude.Int,
    -- | If specified, the configuration option must be a numeric value less than
    -- this value.
    ConfigurationOptionDescription -> Maybe Int
maxValue :: Prelude.Maybe Prelude.Int,
    -- | If specified, the configuration option must be a numeric value greater
    -- than this value.
    ConfigurationOptionDescription -> Maybe Int
minValue :: Prelude.Maybe Prelude.Int,
    -- | The name of the configuration option.
    ConfigurationOptionDescription -> Maybe Text
name :: Prelude.Maybe Prelude.Text,
    -- | A unique namespace identifying the option\'s associated AWS resource.
    ConfigurationOptionDescription -> Maybe Text
namespace :: Prelude.Maybe Prelude.Text,
    -- | If specified, the configuration option must be a string value that
    -- satisfies this regular expression.
    ConfigurationOptionDescription -> Maybe OptionRestrictionRegex
regex :: Prelude.Maybe OptionRestrictionRegex,
    -- | An indication of whether the user defined this configuration option:
    --
    -- -   @true@ : This configuration option was defined by the user. It is a
    --     valid choice for specifying if this as an @Option to Remove@ when
    --     updating configuration settings.
    --
    -- -   @false@ : This configuration was not defined by the user.
    --
    -- Constraint: You can remove only @UserDefined@ options from a
    -- configuration.
    --
    -- Valid Values: @true@ | @false@
    ConfigurationOptionDescription -> Maybe Bool
userDefined :: Prelude.Maybe Prelude.Bool,
    -- | If specified, values for the configuration option are selected from this
    -- list.
    ConfigurationOptionDescription -> Maybe [Text]
valueOptions :: Prelude.Maybe [Prelude.Text],
    -- | An indication of which type of values this option has and whether it is
    -- allowable to select one or more than one of the possible values:
    --
    -- -   @Scalar@ : Values for this option are a single selection from the
    --     possible values, or an unformatted string, or numeric value governed
    --     by the @MIN\/MAX\/Regex@ constraints.
    --
    -- -   @List@ : Values for this option are multiple selections from the
    --     possible values.
    --
    -- -   @Boolean@ : Values for this option are either @true@ or @false@ .
    --
    -- -   @Json@ : Values for this option are a JSON representation of a
    --     @ConfigDocument@.
    ConfigurationOptionDescription
-> Maybe ConfigurationOptionValueType
valueType :: Prelude.Maybe ConfigurationOptionValueType
  }
  deriving (ConfigurationOptionDescription
-> ConfigurationOptionDescription -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ConfigurationOptionDescription
-> ConfigurationOptionDescription -> Bool
$c/= :: ConfigurationOptionDescription
-> ConfigurationOptionDescription -> Bool
== :: ConfigurationOptionDescription
-> ConfigurationOptionDescription -> Bool
$c== :: ConfigurationOptionDescription
-> ConfigurationOptionDescription -> Bool
Prelude.Eq, ReadPrec [ConfigurationOptionDescription]
ReadPrec ConfigurationOptionDescription
Int -> ReadS ConfigurationOptionDescription
ReadS [ConfigurationOptionDescription]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ConfigurationOptionDescription]
$creadListPrec :: ReadPrec [ConfigurationOptionDescription]
readPrec :: ReadPrec ConfigurationOptionDescription
$creadPrec :: ReadPrec ConfigurationOptionDescription
readList :: ReadS [ConfigurationOptionDescription]
$creadList :: ReadS [ConfigurationOptionDescription]
readsPrec :: Int -> ReadS ConfigurationOptionDescription
$creadsPrec :: Int -> ReadS ConfigurationOptionDescription
Prelude.Read, Int -> ConfigurationOptionDescription -> ShowS
[ConfigurationOptionDescription] -> ShowS
ConfigurationOptionDescription -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ConfigurationOptionDescription] -> ShowS
$cshowList :: [ConfigurationOptionDescription] -> ShowS
show :: ConfigurationOptionDescription -> String
$cshow :: ConfigurationOptionDescription -> String
showsPrec :: Int -> ConfigurationOptionDescription -> ShowS
$cshowsPrec :: Int -> ConfigurationOptionDescription -> ShowS
Prelude.Show, forall x.
Rep ConfigurationOptionDescription x
-> ConfigurationOptionDescription
forall x.
ConfigurationOptionDescription
-> Rep ConfigurationOptionDescription x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ConfigurationOptionDescription x
-> ConfigurationOptionDescription
$cfrom :: forall x.
ConfigurationOptionDescription
-> Rep ConfigurationOptionDescription x
Prelude.Generic)

-- |
-- Create a value of 'ConfigurationOptionDescription' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'changeSeverity', 'configurationOptionDescription_changeSeverity' - An indication of which action is required if the value for this
-- configuration option changes:
--
-- -   @NoInterruption@ : There is no interruption to the environment or
--     application availability.
--
-- -   @RestartEnvironment@ : The environment is entirely restarted, all
--     AWS resources are deleted and recreated, and the environment is
--     unavailable during the process.
--
-- -   @RestartApplicationServer@ : The environment is available the entire
--     time. However, a short application outage occurs when the
--     application servers on the running Amazon EC2 instances are
--     restarted.
--
-- 'defaultValue', 'configurationOptionDescription_defaultValue' - The default value for this configuration option.
--
-- 'maxLength', 'configurationOptionDescription_maxLength' - If specified, the configuration option must be a string value no longer
-- than this value.
--
-- 'maxValue', 'configurationOptionDescription_maxValue' - If specified, the configuration option must be a numeric value less than
-- this value.
--
-- 'minValue', 'configurationOptionDescription_minValue' - If specified, the configuration option must be a numeric value greater
-- than this value.
--
-- 'name', 'configurationOptionDescription_name' - The name of the configuration option.
--
-- 'namespace', 'configurationOptionDescription_namespace' - A unique namespace identifying the option\'s associated AWS resource.
--
-- 'regex', 'configurationOptionDescription_regex' - If specified, the configuration option must be a string value that
-- satisfies this regular expression.
--
-- 'userDefined', 'configurationOptionDescription_userDefined' - An indication of whether the user defined this configuration option:
--
-- -   @true@ : This configuration option was defined by the user. It is a
--     valid choice for specifying if this as an @Option to Remove@ when
--     updating configuration settings.
--
-- -   @false@ : This configuration was not defined by the user.
--
-- Constraint: You can remove only @UserDefined@ options from a
-- configuration.
--
-- Valid Values: @true@ | @false@
--
-- 'valueOptions', 'configurationOptionDescription_valueOptions' - If specified, values for the configuration option are selected from this
-- list.
--
-- 'valueType', 'configurationOptionDescription_valueType' - An indication of which type of values this option has and whether it is
-- allowable to select one or more than one of the possible values:
--
-- -   @Scalar@ : Values for this option are a single selection from the
--     possible values, or an unformatted string, or numeric value governed
--     by the @MIN\/MAX\/Regex@ constraints.
--
-- -   @List@ : Values for this option are multiple selections from the
--     possible values.
--
-- -   @Boolean@ : Values for this option are either @true@ or @false@ .
--
-- -   @Json@ : Values for this option are a JSON representation of a
--     @ConfigDocument@.
newConfigurationOptionDescription ::
  ConfigurationOptionDescription
newConfigurationOptionDescription :: ConfigurationOptionDescription
newConfigurationOptionDescription =
  ConfigurationOptionDescription'
    { $sel:changeSeverity:ConfigurationOptionDescription' :: Maybe Text
changeSeverity =
        forall a. Maybe a
Prelude.Nothing,
      $sel:defaultValue:ConfigurationOptionDescription' :: Maybe Text
defaultValue = forall a. Maybe a
Prelude.Nothing,
      $sel:maxLength:ConfigurationOptionDescription' :: Maybe Int
maxLength = forall a. Maybe a
Prelude.Nothing,
      $sel:maxValue:ConfigurationOptionDescription' :: Maybe Int
maxValue = forall a. Maybe a
Prelude.Nothing,
      $sel:minValue:ConfigurationOptionDescription' :: Maybe Int
minValue = forall a. Maybe a
Prelude.Nothing,
      $sel:name:ConfigurationOptionDescription' :: Maybe Text
name = forall a. Maybe a
Prelude.Nothing,
      $sel:namespace:ConfigurationOptionDescription' :: Maybe Text
namespace = forall a. Maybe a
Prelude.Nothing,
      $sel:regex:ConfigurationOptionDescription' :: Maybe OptionRestrictionRegex
regex = forall a. Maybe a
Prelude.Nothing,
      $sel:userDefined:ConfigurationOptionDescription' :: Maybe Bool
userDefined = forall a. Maybe a
Prelude.Nothing,
      $sel:valueOptions:ConfigurationOptionDescription' :: Maybe [Text]
valueOptions = forall a. Maybe a
Prelude.Nothing,
      $sel:valueType:ConfigurationOptionDescription' :: Maybe ConfigurationOptionValueType
valueType = forall a. Maybe a
Prelude.Nothing
    }

-- | An indication of which action is required if the value for this
-- configuration option changes:
--
-- -   @NoInterruption@ : There is no interruption to the environment or
--     application availability.
--
-- -   @RestartEnvironment@ : The environment is entirely restarted, all
--     AWS resources are deleted and recreated, and the environment is
--     unavailable during the process.
--
-- -   @RestartApplicationServer@ : The environment is available the entire
--     time. However, a short application outage occurs when the
--     application servers on the running Amazon EC2 instances are
--     restarted.
configurationOptionDescription_changeSeverity :: Lens.Lens' ConfigurationOptionDescription (Prelude.Maybe Prelude.Text)
configurationOptionDescription_changeSeverity :: Lens' ConfigurationOptionDescription (Maybe Text)
configurationOptionDescription_changeSeverity = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ConfigurationOptionDescription' {Maybe Text
changeSeverity :: Maybe Text
$sel:changeSeverity:ConfigurationOptionDescription' :: ConfigurationOptionDescription -> Maybe Text
changeSeverity} -> Maybe Text
changeSeverity) (\s :: ConfigurationOptionDescription
s@ConfigurationOptionDescription' {} Maybe Text
a -> ConfigurationOptionDescription
s {$sel:changeSeverity:ConfigurationOptionDescription' :: Maybe Text
changeSeverity = Maybe Text
a} :: ConfigurationOptionDescription)

-- | The default value for this configuration option.
configurationOptionDescription_defaultValue :: Lens.Lens' ConfigurationOptionDescription (Prelude.Maybe Prelude.Text)
configurationOptionDescription_defaultValue :: Lens' ConfigurationOptionDescription (Maybe Text)
configurationOptionDescription_defaultValue = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ConfigurationOptionDescription' {Maybe Text
defaultValue :: Maybe Text
$sel:defaultValue:ConfigurationOptionDescription' :: ConfigurationOptionDescription -> Maybe Text
defaultValue} -> Maybe Text
defaultValue) (\s :: ConfigurationOptionDescription
s@ConfigurationOptionDescription' {} Maybe Text
a -> ConfigurationOptionDescription
s {$sel:defaultValue:ConfigurationOptionDescription' :: Maybe Text
defaultValue = Maybe Text
a} :: ConfigurationOptionDescription)

-- | If specified, the configuration option must be a string value no longer
-- than this value.
configurationOptionDescription_maxLength :: Lens.Lens' ConfigurationOptionDescription (Prelude.Maybe Prelude.Int)
configurationOptionDescription_maxLength :: Lens' ConfigurationOptionDescription (Maybe Int)
configurationOptionDescription_maxLength = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ConfigurationOptionDescription' {Maybe Int
maxLength :: Maybe Int
$sel:maxLength:ConfigurationOptionDescription' :: ConfigurationOptionDescription -> Maybe Int
maxLength} -> Maybe Int
maxLength) (\s :: ConfigurationOptionDescription
s@ConfigurationOptionDescription' {} Maybe Int
a -> ConfigurationOptionDescription
s {$sel:maxLength:ConfigurationOptionDescription' :: Maybe Int
maxLength = Maybe Int
a} :: ConfigurationOptionDescription)

-- | If specified, the configuration option must be a numeric value less than
-- this value.
configurationOptionDescription_maxValue :: Lens.Lens' ConfigurationOptionDescription (Prelude.Maybe Prelude.Int)
configurationOptionDescription_maxValue :: Lens' ConfigurationOptionDescription (Maybe Int)
configurationOptionDescription_maxValue = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ConfigurationOptionDescription' {Maybe Int
maxValue :: Maybe Int
$sel:maxValue:ConfigurationOptionDescription' :: ConfigurationOptionDescription -> Maybe Int
maxValue} -> Maybe Int
maxValue) (\s :: ConfigurationOptionDescription
s@ConfigurationOptionDescription' {} Maybe Int
a -> ConfigurationOptionDescription
s {$sel:maxValue:ConfigurationOptionDescription' :: Maybe Int
maxValue = Maybe Int
a} :: ConfigurationOptionDescription)

-- | If specified, the configuration option must be a numeric value greater
-- than this value.
configurationOptionDescription_minValue :: Lens.Lens' ConfigurationOptionDescription (Prelude.Maybe Prelude.Int)
configurationOptionDescription_minValue :: Lens' ConfigurationOptionDescription (Maybe Int)
configurationOptionDescription_minValue = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ConfigurationOptionDescription' {Maybe Int
minValue :: Maybe Int
$sel:minValue:ConfigurationOptionDescription' :: ConfigurationOptionDescription -> Maybe Int
minValue} -> Maybe Int
minValue) (\s :: ConfigurationOptionDescription
s@ConfigurationOptionDescription' {} Maybe Int
a -> ConfigurationOptionDescription
s {$sel:minValue:ConfigurationOptionDescription' :: Maybe Int
minValue = Maybe Int
a} :: ConfigurationOptionDescription)

-- | The name of the configuration option.
configurationOptionDescription_name :: Lens.Lens' ConfigurationOptionDescription (Prelude.Maybe Prelude.Text)
configurationOptionDescription_name :: Lens' ConfigurationOptionDescription (Maybe Text)
configurationOptionDescription_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ConfigurationOptionDescription' {Maybe Text
name :: Maybe Text
$sel:name:ConfigurationOptionDescription' :: ConfigurationOptionDescription -> Maybe Text
name} -> Maybe Text
name) (\s :: ConfigurationOptionDescription
s@ConfigurationOptionDescription' {} Maybe Text
a -> ConfigurationOptionDescription
s {$sel:name:ConfigurationOptionDescription' :: Maybe Text
name = Maybe Text
a} :: ConfigurationOptionDescription)

-- | A unique namespace identifying the option\'s associated AWS resource.
configurationOptionDescription_namespace :: Lens.Lens' ConfigurationOptionDescription (Prelude.Maybe Prelude.Text)
configurationOptionDescription_namespace :: Lens' ConfigurationOptionDescription (Maybe Text)
configurationOptionDescription_namespace = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ConfigurationOptionDescription' {Maybe Text
namespace :: Maybe Text
$sel:namespace:ConfigurationOptionDescription' :: ConfigurationOptionDescription -> Maybe Text
namespace} -> Maybe Text
namespace) (\s :: ConfigurationOptionDescription
s@ConfigurationOptionDescription' {} Maybe Text
a -> ConfigurationOptionDescription
s {$sel:namespace:ConfigurationOptionDescription' :: Maybe Text
namespace = Maybe Text
a} :: ConfigurationOptionDescription)

-- | If specified, the configuration option must be a string value that
-- satisfies this regular expression.
configurationOptionDescription_regex :: Lens.Lens' ConfigurationOptionDescription (Prelude.Maybe OptionRestrictionRegex)
configurationOptionDescription_regex :: Lens' ConfigurationOptionDescription (Maybe OptionRestrictionRegex)
configurationOptionDescription_regex = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ConfigurationOptionDescription' {Maybe OptionRestrictionRegex
regex :: Maybe OptionRestrictionRegex
$sel:regex:ConfigurationOptionDescription' :: ConfigurationOptionDescription -> Maybe OptionRestrictionRegex
regex} -> Maybe OptionRestrictionRegex
regex) (\s :: ConfigurationOptionDescription
s@ConfigurationOptionDescription' {} Maybe OptionRestrictionRegex
a -> ConfigurationOptionDescription
s {$sel:regex:ConfigurationOptionDescription' :: Maybe OptionRestrictionRegex
regex = Maybe OptionRestrictionRegex
a} :: ConfigurationOptionDescription)

-- | An indication of whether the user defined this configuration option:
--
-- -   @true@ : This configuration option was defined by the user. It is a
--     valid choice for specifying if this as an @Option to Remove@ when
--     updating configuration settings.
--
-- -   @false@ : This configuration was not defined by the user.
--
-- Constraint: You can remove only @UserDefined@ options from a
-- configuration.
--
-- Valid Values: @true@ | @false@
configurationOptionDescription_userDefined :: Lens.Lens' ConfigurationOptionDescription (Prelude.Maybe Prelude.Bool)
configurationOptionDescription_userDefined :: Lens' ConfigurationOptionDescription (Maybe Bool)
configurationOptionDescription_userDefined = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ConfigurationOptionDescription' {Maybe Bool
userDefined :: Maybe Bool
$sel:userDefined:ConfigurationOptionDescription' :: ConfigurationOptionDescription -> Maybe Bool
userDefined} -> Maybe Bool
userDefined) (\s :: ConfigurationOptionDescription
s@ConfigurationOptionDescription' {} Maybe Bool
a -> ConfigurationOptionDescription
s {$sel:userDefined:ConfigurationOptionDescription' :: Maybe Bool
userDefined = Maybe Bool
a} :: ConfigurationOptionDescription)

-- | If specified, values for the configuration option are selected from this
-- list.
configurationOptionDescription_valueOptions :: Lens.Lens' ConfigurationOptionDescription (Prelude.Maybe [Prelude.Text])
configurationOptionDescription_valueOptions :: Lens' ConfigurationOptionDescription (Maybe [Text])
configurationOptionDescription_valueOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ConfigurationOptionDescription' {Maybe [Text]
valueOptions :: Maybe [Text]
$sel:valueOptions:ConfigurationOptionDescription' :: ConfigurationOptionDescription -> Maybe [Text]
valueOptions} -> Maybe [Text]
valueOptions) (\s :: ConfigurationOptionDescription
s@ConfigurationOptionDescription' {} Maybe [Text]
a -> ConfigurationOptionDescription
s {$sel:valueOptions:ConfigurationOptionDescription' :: Maybe [Text]
valueOptions = Maybe [Text]
a} :: ConfigurationOptionDescription) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | An indication of which type of values this option has and whether it is
-- allowable to select one or more than one of the possible values:
--
-- -   @Scalar@ : Values for this option are a single selection from the
--     possible values, or an unformatted string, or numeric value governed
--     by the @MIN\/MAX\/Regex@ constraints.
--
-- -   @List@ : Values for this option are multiple selections from the
--     possible values.
--
-- -   @Boolean@ : Values for this option are either @true@ or @false@ .
--
-- -   @Json@ : Values for this option are a JSON representation of a
--     @ConfigDocument@.
configurationOptionDescription_valueType :: Lens.Lens' ConfigurationOptionDescription (Prelude.Maybe ConfigurationOptionValueType)
configurationOptionDescription_valueType :: Lens'
  ConfigurationOptionDescription (Maybe ConfigurationOptionValueType)
configurationOptionDescription_valueType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ConfigurationOptionDescription' {Maybe ConfigurationOptionValueType
valueType :: Maybe ConfigurationOptionValueType
$sel:valueType:ConfigurationOptionDescription' :: ConfigurationOptionDescription
-> Maybe ConfigurationOptionValueType
valueType} -> Maybe ConfigurationOptionValueType
valueType) (\s :: ConfigurationOptionDescription
s@ConfigurationOptionDescription' {} Maybe ConfigurationOptionValueType
a -> ConfigurationOptionDescription
s {$sel:valueType:ConfigurationOptionDescription' :: Maybe ConfigurationOptionValueType
valueType = Maybe ConfigurationOptionValueType
a} :: ConfigurationOptionDescription)

instance Data.FromXML ConfigurationOptionDescription where
  parseXML :: [Node] -> Either String ConfigurationOptionDescription
parseXML [Node]
x =
    Maybe Text
-> Maybe Text
-> Maybe Int
-> Maybe Int
-> Maybe Int
-> Maybe Text
-> Maybe Text
-> Maybe OptionRestrictionRegex
-> Maybe Bool
-> Maybe [Text]
-> Maybe ConfigurationOptionValueType
-> ConfigurationOptionDescription
ConfigurationOptionDescription'
      forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"ChangeSeverity")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"DefaultValue")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"MaxLength")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"MaxValue")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"MinValue")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"Name")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"Namespace")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"Regex")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"UserDefined")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( [Node]
x
                      forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"ValueOptions"
                      forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                      forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (forall a. FromXML a => Text -> [Node] -> Either String [a]
Data.parseXMLList Text
"member")
                  )
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"ValueType")

instance
  Prelude.Hashable
    ConfigurationOptionDescription
  where
  hashWithSalt :: Int -> ConfigurationOptionDescription -> Int
hashWithSalt
    Int
_salt
    ConfigurationOptionDescription' {Maybe Bool
Maybe Int
Maybe [Text]
Maybe Text
Maybe ConfigurationOptionValueType
Maybe OptionRestrictionRegex
valueType :: Maybe ConfigurationOptionValueType
valueOptions :: Maybe [Text]
userDefined :: Maybe Bool
regex :: Maybe OptionRestrictionRegex
namespace :: Maybe Text
name :: Maybe Text
minValue :: Maybe Int
maxValue :: Maybe Int
maxLength :: Maybe Int
defaultValue :: Maybe Text
changeSeverity :: Maybe Text
$sel:valueType:ConfigurationOptionDescription' :: ConfigurationOptionDescription
-> Maybe ConfigurationOptionValueType
$sel:valueOptions:ConfigurationOptionDescription' :: ConfigurationOptionDescription -> Maybe [Text]
$sel:userDefined:ConfigurationOptionDescription' :: ConfigurationOptionDescription -> Maybe Bool
$sel:regex:ConfigurationOptionDescription' :: ConfigurationOptionDescription -> Maybe OptionRestrictionRegex
$sel:namespace:ConfigurationOptionDescription' :: ConfigurationOptionDescription -> Maybe Text
$sel:name:ConfigurationOptionDescription' :: ConfigurationOptionDescription -> Maybe Text
$sel:minValue:ConfigurationOptionDescription' :: ConfigurationOptionDescription -> Maybe Int
$sel:maxValue:ConfigurationOptionDescription' :: ConfigurationOptionDescription -> Maybe Int
$sel:maxLength:ConfigurationOptionDescription' :: ConfigurationOptionDescription -> Maybe Int
$sel:defaultValue:ConfigurationOptionDescription' :: ConfigurationOptionDescription -> Maybe Text
$sel:changeSeverity:ConfigurationOptionDescription' :: ConfigurationOptionDescription -> Maybe Text
..} =
      Int
_salt
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
changeSeverity
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
defaultValue
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
maxLength
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
maxValue
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
minValue
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
name
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
namespace
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe OptionRestrictionRegex
regex
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
userDefined
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
valueOptions
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ConfigurationOptionValueType
valueType

instance
  Prelude.NFData
    ConfigurationOptionDescription
  where
  rnf :: ConfigurationOptionDescription -> ()
rnf ConfigurationOptionDescription' {Maybe Bool
Maybe Int
Maybe [Text]
Maybe Text
Maybe ConfigurationOptionValueType
Maybe OptionRestrictionRegex
valueType :: Maybe ConfigurationOptionValueType
valueOptions :: Maybe [Text]
userDefined :: Maybe Bool
regex :: Maybe OptionRestrictionRegex
namespace :: Maybe Text
name :: Maybe Text
minValue :: Maybe Int
maxValue :: Maybe Int
maxLength :: Maybe Int
defaultValue :: Maybe Text
changeSeverity :: Maybe Text
$sel:valueType:ConfigurationOptionDescription' :: ConfigurationOptionDescription
-> Maybe ConfigurationOptionValueType
$sel:valueOptions:ConfigurationOptionDescription' :: ConfigurationOptionDescription -> Maybe [Text]
$sel:userDefined:ConfigurationOptionDescription' :: ConfigurationOptionDescription -> Maybe Bool
$sel:regex:ConfigurationOptionDescription' :: ConfigurationOptionDescription -> Maybe OptionRestrictionRegex
$sel:namespace:ConfigurationOptionDescription' :: ConfigurationOptionDescription -> Maybe Text
$sel:name:ConfigurationOptionDescription' :: ConfigurationOptionDescription -> Maybe Text
$sel:minValue:ConfigurationOptionDescription' :: ConfigurationOptionDescription -> Maybe Int
$sel:maxValue:ConfigurationOptionDescription' :: ConfigurationOptionDescription -> Maybe Int
$sel:maxLength:ConfigurationOptionDescription' :: ConfigurationOptionDescription -> Maybe Int
$sel:defaultValue:ConfigurationOptionDescription' :: ConfigurationOptionDescription -> Maybe Text
$sel:changeSeverity:ConfigurationOptionDescription' :: ConfigurationOptionDescription -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
changeSeverity
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
defaultValue
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
maxLength
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
maxValue
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
minValue
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
name
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
namespace
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe OptionRestrictionRegex
regex
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
userDefined
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
valueOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ConfigurationOptionValueType
valueType