module AWS.ELB.Types
where
import AWS.Lib.FromText
data LoadBalancer = LoadBalancer
{ loadBalancerSecurityGroups :: [Text]
, loadBalancerCreatedTime :: UTCTime
, loadBalancerLoadBalancerName :: Text
, loadBalancerHealthCheck :: HealthCheck
, loadBalancerVPCId :: Maybe Text
, loadBalancerListenerDescriptions :: [ListenerDescription]
, loadBalancerInstances :: [Instance]
, loadBalancerPolicies :: Policies
, loadBalancerAvailabilityZones :: [Text]
, loadBalancerCanonicalHostedZoneName :: Maybe Text
, loadBalancerCanonicalHostedZoneNameID :: Maybe Text
, loadBalancerScheme :: Text
, loadBalancerSourceSecurityGroup :: Maybe SourceSecurityGroup
, loadBalancerDNSName :: Text
, loadBalancerBackendServerDescriptions
:: [BackendServerDescription]
, loadBalancerSubnets :: [Text]
}
deriving (Show, Eq)
data BackendServerDescription = BackendServerDescription
{ backendServerInstancePort :: Int
, backendServerPolicyNames :: [Text]
}
deriving (Show, Eq)
data HealthCheck = HealthCheck
{ healthCheckInterval :: Int
, healthCheckTarget :: Text
, healthCheckHealthyThreshold :: Int
, healthCheckTimeout :: Int
, healthCheckUnhealthyThreshold :: Int
}
deriving (Show, Eq)
data Instance = Instance
{ instanceId :: Text
}
deriving (Show, Eq)
data ListenerDescription = ListenerDescription
{ listenerDescriptionPolicyNames :: [Text]
, listenerDescriptionListener :: Listener
}
deriving (Show, Eq)
data Listener = Listener
{ listenerProtocol :: Text
, listenerLoadBalancerPort :: Int
, listenerInstanceProtocol :: Text
, listenerSSLCertificateId :: Maybe Text
, listenerInstancePort :: Int
}
deriving (Show, Eq)
data Policies = Policies
{ policiesAppCookieStickinessPolicies :: [AppCookieStickinessPolicy]
, policiesOtherPolicies :: [Text]
, policiesLBCookieStickinessPolicies :: [LBCookieStickinessPolicy]
}
deriving (Show, Eq)
data AppCookieStickinessPolicy = AppCookieStickinessPolicy
{ appCookieStickinessPolicyCookieName :: Text
, appCookieStickinessPolicyPolicyName :: Text
}
deriving (Show, Eq)
data LBCookieStickinessPolicy = LBCookieStickinessPolicy
{ lbCookieStickinessPolicyPolicyName :: Text
, lbCookieStickinessPolicyCookieExpirationPeriod :: Maybe Integer
}
deriving (Show, Eq)
data SourceSecurityGroup = SourceSecurityGroup
{ sourceSecurityGroupOwnerAlias :: Text
, sourceSecurityGroupGroupName :: Text
}
deriving (Show, Eq)
data PolicyDescription = PolicyDescription
{ policyName :: Text
, policyTypeName :: Text
, policyAttributes :: [PolicyAttribute]
}
deriving (Show, Eq)
data PolicyAttribute = PolicyAttribute
{ policyAttributeName :: Text
, policyAttributeValue :: Text
}
deriving (Show, Eq)
data PolicyType = PolicyType
{ policyTypeAttributeTypes :: [PolicyAttributeType]
, policyTypeTypeName :: Text
, policyTypeDescription :: Text
}
deriving (Show, Eq)
data PolicyAttributeType = PolicyAttributeType
{ policyAttributeTypeAttributeName :: Text
, policyAttributeTypeAttributeType :: Text
, policyAttributeTypeDefaultValue :: Maybe Text
, policyAttributeTypeCardinality :: PolicyAttributeCardinality
, policyAttributeTypeDescription :: Maybe Text
}
deriving (Show, Eq)
data PolicyAttributeCardinality
= PolicyAttributeCardinalityOne
| PolicyAttributeCardinalityZeroOrOne
| PolicyAttributeCardinalityZeroOrMore
| PolicyAttributeCardinalityOneOrMore
deriving (Show, Eq, Read)
deriveFromText "PolicyAttributeCardinality" ["ONE", "ZERO_OR_ONE", "ZERO_OR_MORE", "ONE_OR_MORE"]
data InstanceState = InstanceState
{ instanceStateDescription :: Text
, instanceStateInstanceId :: Text
, instanceStateState :: InstanceStateState
, instanceStateReasonCode :: Maybe Text
}
deriving (Show, Eq)
data InstanceStateState
= InstanceStateInService
| InstanceStateOutOfService
deriving (Show, Eq, Read)
deriveFromText "InstanceStateState" ["InService", "OutOfService"]