module Network.AWS.ECS.Types
(
ECS
, RESTError
, ns
, NetworkBinding
, networkBinding
, nbBindIP
, nbContainerPort
, nbHostPort
, Cluster
, cluster
, cClusterArn
, cClusterName
, cStatus
, ContainerOverride
, containerOverride
, coCommand
, coName
, KeyValuePair
, keyValuePair
, kvpName
, kvpValue
, TaskOverride
, taskOverride
, toContainerOverrides
, Container
, container
, cContainerArn
, cExitCode
, cLastStatus
, cName
, cNetworkBindings
, cReason
, cTaskArn
, ContainerDefinition
, containerDefinition
, cdCommand
, cdCpu
, cdEntryPoint
, cdEnvironment
, cdEssential
, cdImage
, cdLinks
, cdMemory
, cdName
, cdPortMappings
, Resource
, resource
, rDoubleValue
, rIntegerValue
, rLongValue
, rName
, rStringSetValue
, rType
, Task
, task
, tClusterArn
, tContainerInstanceArn
, tContainers
, tDesiredStatus
, tLastStatus
, tOverrides
, tTaskArn
, tTaskDefinitionArn
, PortMapping
, portMapping
, pmContainerPort
, pmHostPort
, TaskDefinition
, taskDefinition
, tdContainerDefinitions
, tdFamily
, tdRevision
, tdTaskDefinitionArn
, Failure
, failure
, fArn
, fReason
, ContainerInstance
, containerInstance
, ciAgentConnected
, ciContainerInstanceArn
, ciEc2InstanceId
, ciRegisteredResources
, ciRemainingResources
, ciStatus
) where
import Network.AWS.Prelude
import Network.AWS.Signing
import qualified GHC.Exts
data ECS
instance AWSService ECS where
type Sg ECS = V4
type Er ECS = RESTError
service = service'
where
service' :: Service ECS
service' = Service
{ _svcAbbrev = "ECS"
, _svcPrefix = "ecs"
, _svcVersion = "2014-11-13"
, _svcTargetPrefix = Nothing
, _svcJSONVersion = Nothing
, _svcHandle = handle
, _svcRetry = retry
}
handle :: Status
-> Maybe (LazyByteString -> ServiceError RESTError)
handle = restError statusSuccess service'
retry :: Retry ECS
retry = Exponential
{ _retryBase = 0.05
, _retryGrowth = 2
, _retryAttempts = 5
, _retryCheck = check
}
check :: Status
-> RESTError
-> Bool
check (statusCode -> s) (awsErrorCode -> e)
| s == 500 = True
| s == 509 = True
| s == 503 = True
| otherwise = False
ns :: Text
ns = "http://ecs.amazonaws.com/doc/2014-11-13/"
data NetworkBinding = NetworkBinding
{ _nbBindIP :: Maybe Text
, _nbContainerPort :: Maybe Int
, _nbHostPort :: Maybe Int
} deriving (Eq, Ord, Read, Show)
networkBinding :: NetworkBinding
networkBinding = NetworkBinding
{ _nbBindIP = Nothing
, _nbContainerPort = Nothing
, _nbHostPort = Nothing
}
nbBindIP :: Lens' NetworkBinding (Maybe Text)
nbBindIP = lens _nbBindIP (\s a -> s { _nbBindIP = a })
nbContainerPort :: Lens' NetworkBinding (Maybe Int)
nbContainerPort = lens _nbContainerPort (\s a -> s { _nbContainerPort = a })
nbHostPort :: Lens' NetworkBinding (Maybe Int)
nbHostPort = lens _nbHostPort (\s a -> s { _nbHostPort = a })
instance FromXML NetworkBinding where
parseXML x = NetworkBinding
<$> x .@? "bindIP"
<*> x .@? "containerPort"
<*> x .@? "hostPort"
instance ToQuery NetworkBinding where
toQuery NetworkBinding{..} = mconcat
[ "bindIP" =? _nbBindIP
, "containerPort" =? _nbContainerPort
, "hostPort" =? _nbHostPort
]
data Cluster = Cluster
{ _cClusterArn :: Maybe Text
, _cClusterName :: Maybe Text
, _cStatus :: Maybe Text
} deriving (Eq, Ord, Read, Show)
cluster :: Cluster
cluster = Cluster
{ _cClusterArn = Nothing
, _cClusterName = Nothing
, _cStatus = Nothing
}
cClusterArn :: Lens' Cluster (Maybe Text)
cClusterArn = lens _cClusterArn (\s a -> s { _cClusterArn = a })
cClusterName :: Lens' Cluster (Maybe Text)
cClusterName = lens _cClusterName (\s a -> s { _cClusterName = a })
cStatus :: Lens' Cluster (Maybe Text)
cStatus = lens _cStatus (\s a -> s { _cStatus = a })
instance FromXML Cluster where
parseXML x = Cluster
<$> x .@? "clusterArn"
<*> x .@? "clusterName"
<*> x .@? "status"
instance ToQuery Cluster where
toQuery Cluster{..} = mconcat
[ "clusterArn" =? _cClusterArn
, "clusterName" =? _cClusterName
, "status" =? _cStatus
]
data ContainerOverride = ContainerOverride
{ _coCommand :: List "member" Text
, _coName :: Maybe Text
} deriving (Eq, Ord, Read, Show)
containerOverride :: ContainerOverride
containerOverride = ContainerOverride
{ _coName = Nothing
, _coCommand = mempty
}
coCommand :: Lens' ContainerOverride [Text]
coCommand = lens _coCommand (\s a -> s { _coCommand = a }) . _List
coName :: Lens' ContainerOverride (Maybe Text)
coName = lens _coName (\s a -> s { _coName = a })
instance FromXML ContainerOverride where
parseXML x = ContainerOverride
<$> x .@? "command" .!@ mempty
<*> x .@? "name"
instance ToQuery ContainerOverride where
toQuery ContainerOverride{..} = mconcat
[ "command" =? _coCommand
, "name" =? _coName
]
data KeyValuePair = KeyValuePair
{ _kvpName :: Maybe Text
, _kvpValue :: Maybe Text
} deriving (Eq, Ord, Read, Show)
keyValuePair :: KeyValuePair
keyValuePair = KeyValuePair
{ _kvpName = Nothing
, _kvpValue = Nothing
}
kvpName :: Lens' KeyValuePair (Maybe Text)
kvpName = lens _kvpName (\s a -> s { _kvpName = a })
kvpValue :: Lens' KeyValuePair (Maybe Text)
kvpValue = lens _kvpValue (\s a -> s { _kvpValue = a })
instance FromXML KeyValuePair where
parseXML x = KeyValuePair
<$> x .@? "name"
<*> x .@? "value"
instance ToQuery KeyValuePair where
toQuery KeyValuePair{..} = mconcat
[ "name" =? _kvpName
, "value" =? _kvpValue
]
newtype TaskOverride = TaskOverride
{ _toContainerOverrides :: List "member" ContainerOverride
} deriving (Eq, Read, Show, Monoid, Semigroup)
instance GHC.Exts.IsList TaskOverride where
type Item TaskOverride = ContainerOverride
fromList = TaskOverride . GHC.Exts.fromList
toList = GHC.Exts.toList . _toContainerOverrides
taskOverride :: TaskOverride
taskOverride = TaskOverride
{ _toContainerOverrides = mempty
}
toContainerOverrides :: Lens' TaskOverride [ContainerOverride]
toContainerOverrides =
lens _toContainerOverrides (\s a -> s { _toContainerOverrides = a })
. _List
instance FromXML TaskOverride where
parseXML x = TaskOverride
<$> x .@? "containerOverrides" .!@ mempty
instance ToQuery TaskOverride where
toQuery TaskOverride{..} = mconcat
[ "containerOverrides" =? _toContainerOverrides
]
data Container = Container
{ _cContainerArn :: Maybe Text
, _cExitCode :: Maybe Int
, _cLastStatus :: Maybe Text
, _cName :: Maybe Text
, _cNetworkBindings :: List "member" NetworkBinding
, _cReason :: Maybe Text
, _cTaskArn :: Maybe Text
} deriving (Eq, Read, Show)
container :: Container
container = Container
{ _cContainerArn = Nothing
, _cTaskArn = Nothing
, _cName = Nothing
, _cLastStatus = Nothing
, _cExitCode = Nothing
, _cReason = Nothing
, _cNetworkBindings = mempty
}
cContainerArn :: Lens' Container (Maybe Text)
cContainerArn = lens _cContainerArn (\s a -> s { _cContainerArn = a })
cExitCode :: Lens' Container (Maybe Int)
cExitCode = lens _cExitCode (\s a -> s { _cExitCode = a })
cLastStatus :: Lens' Container (Maybe Text)
cLastStatus = lens _cLastStatus (\s a -> s { _cLastStatus = a })
cName :: Lens' Container (Maybe Text)
cName = lens _cName (\s a -> s { _cName = a })
cNetworkBindings :: Lens' Container [NetworkBinding]
cNetworkBindings = lens _cNetworkBindings (\s a -> s { _cNetworkBindings = a }) . _List
cReason :: Lens' Container (Maybe Text)
cReason = lens _cReason (\s a -> s { _cReason = a })
cTaskArn :: Lens' Container (Maybe Text)
cTaskArn = lens _cTaskArn (\s a -> s { _cTaskArn = a })
instance FromXML Container where
parseXML x = Container
<$> x .@? "containerArn"
<*> x .@? "exitCode"
<*> x .@? "lastStatus"
<*> x .@? "name"
<*> x .@? "networkBindings" .!@ mempty
<*> x .@? "reason"
<*> x .@? "taskArn"
instance ToQuery Container where
toQuery Container{..} = mconcat
[ "containerArn" =? _cContainerArn
, "exitCode" =? _cExitCode
, "lastStatus" =? _cLastStatus
, "name" =? _cName
, "networkBindings" =? _cNetworkBindings
, "reason" =? _cReason
, "taskArn" =? _cTaskArn
]
data ContainerDefinition = ContainerDefinition
{ _cdCommand :: List "member" Text
, _cdCpu :: Maybe Int
, _cdEntryPoint :: List "member" Text
, _cdEnvironment :: List "member" KeyValuePair
, _cdEssential :: Maybe Bool
, _cdImage :: Maybe Text
, _cdLinks :: List "member" Text
, _cdMemory :: Maybe Int
, _cdName :: Maybe Text
, _cdPortMappings :: List "member" PortMapping
} deriving (Eq, Read, Show)
containerDefinition :: ContainerDefinition
containerDefinition = ContainerDefinition
{ _cdName = Nothing
, _cdImage = Nothing
, _cdCpu = Nothing
, _cdMemory = Nothing
, _cdLinks = mempty
, _cdPortMappings = mempty
, _cdEssential = Nothing
, _cdEntryPoint = mempty
, _cdCommand = mempty
, _cdEnvironment = mempty
}
cdCommand :: Lens' ContainerDefinition [Text]
cdCommand = lens _cdCommand (\s a -> s { _cdCommand = a }) . _List
cdCpu :: Lens' ContainerDefinition (Maybe Int)
cdCpu = lens _cdCpu (\s a -> s { _cdCpu = a })
cdEntryPoint :: Lens' ContainerDefinition [Text]
cdEntryPoint = lens _cdEntryPoint (\s a -> s { _cdEntryPoint = a }) . _List
cdEnvironment :: Lens' ContainerDefinition [KeyValuePair]
cdEnvironment = lens _cdEnvironment (\s a -> s { _cdEnvironment = a }) . _List
cdEssential :: Lens' ContainerDefinition (Maybe Bool)
cdEssential = lens _cdEssential (\s a -> s { _cdEssential = a })
cdImage :: Lens' ContainerDefinition (Maybe Text)
cdImage = lens _cdImage (\s a -> s { _cdImage = a })
cdLinks :: Lens' ContainerDefinition [Text]
cdLinks = lens _cdLinks (\s a -> s { _cdLinks = a }) . _List
cdMemory :: Lens' ContainerDefinition (Maybe Int)
cdMemory = lens _cdMemory (\s a -> s { _cdMemory = a })
cdName :: Lens' ContainerDefinition (Maybe Text)
cdName = lens _cdName (\s a -> s { _cdName = a })
cdPortMappings :: Lens' ContainerDefinition [PortMapping]
cdPortMappings = lens _cdPortMappings (\s a -> s { _cdPortMappings = a }) . _List
instance FromXML ContainerDefinition where
parseXML x = ContainerDefinition
<$> x .@? "command" .!@ mempty
<*> x .@? "cpu"
<*> x .@? "entryPoint" .!@ mempty
<*> x .@? "environment" .!@ mempty
<*> x .@? "essential"
<*> x .@? "image"
<*> x .@? "links" .!@ mempty
<*> x .@? "memory"
<*> x .@? "name"
<*> x .@? "portMappings" .!@ mempty
instance ToQuery ContainerDefinition where
toQuery ContainerDefinition{..} = mconcat
[ "command" =? _cdCommand
, "cpu" =? _cdCpu
, "entryPoint" =? _cdEntryPoint
, "environment" =? _cdEnvironment
, "essential" =? _cdEssential
, "image" =? _cdImage
, "links" =? _cdLinks
, "memory" =? _cdMemory
, "name" =? _cdName
, "portMappings" =? _cdPortMappings
]
data Resource = Resource
{ _rDoubleValue :: Maybe Double
, _rIntegerValue :: Maybe Int
, _rLongValue :: Maybe Integer
, _rName :: Maybe Text
, _rStringSetValue :: List "member" Text
, _rType :: Maybe Text
} deriving (Eq, Ord, Read, Show)
resource :: Resource
resource = Resource
{ _rName = Nothing
, _rType = Nothing
, _rDoubleValue = Nothing
, _rLongValue = Nothing
, _rIntegerValue = Nothing
, _rStringSetValue = mempty
}
rDoubleValue :: Lens' Resource (Maybe Double)
rDoubleValue = lens _rDoubleValue (\s a -> s { _rDoubleValue = a })
rIntegerValue :: Lens' Resource (Maybe Int)
rIntegerValue = lens _rIntegerValue (\s a -> s { _rIntegerValue = a })
rLongValue :: Lens' Resource (Maybe Integer)
rLongValue = lens _rLongValue (\s a -> s { _rLongValue = a })
rName :: Lens' Resource (Maybe Text)
rName = lens _rName (\s a -> s { _rName = a })
rStringSetValue :: Lens' Resource [Text]
rStringSetValue = lens _rStringSetValue (\s a -> s { _rStringSetValue = a }) . _List
rType :: Lens' Resource (Maybe Text)
rType = lens _rType (\s a -> s { _rType = a })
instance FromXML Resource where
parseXML x = Resource
<$> x .@? "doubleValue"
<*> x .@? "integerValue"
<*> x .@? "longValue"
<*> x .@? "name"
<*> x .@? "stringSetValue" .!@ mempty
<*> x .@? "type"
instance ToQuery Resource where
toQuery Resource{..} = mconcat
[ "doubleValue" =? _rDoubleValue
, "integerValue" =? _rIntegerValue
, "longValue" =? _rLongValue
, "name" =? _rName
, "stringSetValue" =? _rStringSetValue
, "type" =? _rType
]
data Task = Task
{ _tClusterArn :: Maybe Text
, _tContainerInstanceArn :: Maybe Text
, _tContainers :: List "member" Container
, _tDesiredStatus :: Maybe Text
, _tLastStatus :: Maybe Text
, _tOverrides :: Maybe TaskOverride
, _tTaskArn :: Maybe Text
, _tTaskDefinitionArn :: Maybe Text
} deriving (Eq, Read, Show)
task :: Task
task = Task
{ _tTaskArn = Nothing
, _tClusterArn = Nothing
, _tTaskDefinitionArn = Nothing
, _tContainerInstanceArn = Nothing
, _tOverrides = Nothing
, _tLastStatus = Nothing
, _tDesiredStatus = Nothing
, _tContainers = mempty
}
tClusterArn :: Lens' Task (Maybe Text)
tClusterArn = lens _tClusterArn (\s a -> s { _tClusterArn = a })
tContainerInstanceArn :: Lens' Task (Maybe Text)
tContainerInstanceArn =
lens _tContainerInstanceArn (\s a -> s { _tContainerInstanceArn = a })
tContainers :: Lens' Task [Container]
tContainers = lens _tContainers (\s a -> s { _tContainers = a }) . _List
tDesiredStatus :: Lens' Task (Maybe Text)
tDesiredStatus = lens _tDesiredStatus (\s a -> s { _tDesiredStatus = a })
tLastStatus :: Lens' Task (Maybe Text)
tLastStatus = lens _tLastStatus (\s a -> s { _tLastStatus = a })
tOverrides :: Lens' Task (Maybe TaskOverride)
tOverrides = lens _tOverrides (\s a -> s { _tOverrides = a })
tTaskArn :: Lens' Task (Maybe Text)
tTaskArn = lens _tTaskArn (\s a -> s { _tTaskArn = a })
tTaskDefinitionArn :: Lens' Task (Maybe Text)
tTaskDefinitionArn =
lens _tTaskDefinitionArn (\s a -> s { _tTaskDefinitionArn = a })
instance FromXML Task where
parseXML x = Task
<$> x .@? "clusterArn"
<*> x .@? "containerInstanceArn"
<*> x .@? "containers" .!@ mempty
<*> x .@? "desiredStatus"
<*> x .@? "lastStatus"
<*> x .@? "overrides"
<*> x .@? "taskArn"
<*> x .@? "taskDefinitionArn"
instance ToQuery Task where
toQuery Task{..} = mconcat
[ "clusterArn" =? _tClusterArn
, "containerInstanceArn" =? _tContainerInstanceArn
, "containers" =? _tContainers
, "desiredStatus" =? _tDesiredStatus
, "lastStatus" =? _tLastStatus
, "overrides" =? _tOverrides
, "taskArn" =? _tTaskArn
, "taskDefinitionArn" =? _tTaskDefinitionArn
]
data PortMapping = PortMapping
{ _pmContainerPort :: Maybe Int
, _pmHostPort :: Maybe Int
} deriving (Eq, Ord, Read, Show)
portMapping :: PortMapping
portMapping = PortMapping
{ _pmContainerPort = Nothing
, _pmHostPort = Nothing
}
pmContainerPort :: Lens' PortMapping (Maybe Int)
pmContainerPort = lens _pmContainerPort (\s a -> s { _pmContainerPort = a })
pmHostPort :: Lens' PortMapping (Maybe Int)
pmHostPort = lens _pmHostPort (\s a -> s { _pmHostPort = a })
instance FromXML PortMapping where
parseXML x = PortMapping
<$> x .@? "containerPort"
<*> x .@? "hostPort"
instance ToQuery PortMapping where
toQuery PortMapping{..} = mconcat
[ "containerPort" =? _pmContainerPort
, "hostPort" =? _pmHostPort
]
data TaskDefinition = TaskDefinition
{ _tdContainerDefinitions :: List "member" ContainerDefinition
, _tdFamily :: Maybe Text
, _tdRevision :: Maybe Int
, _tdTaskDefinitionArn :: Maybe Text
} deriving (Eq, Read, Show)
taskDefinition :: TaskDefinition
taskDefinition = TaskDefinition
{ _tdTaskDefinitionArn = Nothing
, _tdContainerDefinitions = mempty
, _tdFamily = Nothing
, _tdRevision = Nothing
}
tdContainerDefinitions :: Lens' TaskDefinition [ContainerDefinition]
tdContainerDefinitions =
lens _tdContainerDefinitions (\s a -> s { _tdContainerDefinitions = a })
. _List
tdFamily :: Lens' TaskDefinition (Maybe Text)
tdFamily = lens _tdFamily (\s a -> s { _tdFamily = a })
tdRevision :: Lens' TaskDefinition (Maybe Int)
tdRevision = lens _tdRevision (\s a -> s { _tdRevision = a })
tdTaskDefinitionArn :: Lens' TaskDefinition (Maybe Text)
tdTaskDefinitionArn =
lens _tdTaskDefinitionArn (\s a -> s { _tdTaskDefinitionArn = a })
instance FromXML TaskDefinition where
parseXML x = TaskDefinition
<$> x .@? "containerDefinitions" .!@ mempty
<*> x .@? "family"
<*> x .@? "revision"
<*> x .@? "taskDefinitionArn"
instance ToQuery TaskDefinition where
toQuery TaskDefinition{..} = mconcat
[ "containerDefinitions" =? _tdContainerDefinitions
, "family" =? _tdFamily
, "revision" =? _tdRevision
, "taskDefinitionArn" =? _tdTaskDefinitionArn
]
data Failure = Failure
{ _fArn :: Maybe Text
, _fReason :: Maybe Text
} deriving (Eq, Ord, Read, Show)
failure :: Failure
failure = Failure
{ _fArn = Nothing
, _fReason = Nothing
}
fArn :: Lens' Failure (Maybe Text)
fArn = lens _fArn (\s a -> s { _fArn = a })
fReason :: Lens' Failure (Maybe Text)
fReason = lens _fReason (\s a -> s { _fReason = a })
instance FromXML Failure where
parseXML x = Failure
<$> x .@? "arn"
<*> x .@? "reason"
instance ToQuery Failure where
toQuery Failure{..} = mconcat
[ "arn" =? _fArn
, "reason" =? _fReason
]
data ContainerInstance = ContainerInstance
{ _ciAgentConnected :: Maybe Bool
, _ciContainerInstanceArn :: Maybe Text
, _ciEc2InstanceId :: Maybe Text
, _ciRegisteredResources :: List "member" Resource
, _ciRemainingResources :: List "member" Resource
, _ciStatus :: Maybe Text
} deriving (Eq, Read, Show)
containerInstance :: ContainerInstance
containerInstance = ContainerInstance
{ _ciContainerInstanceArn = Nothing
, _ciEc2InstanceId = Nothing
, _ciRemainingResources = mempty
, _ciRegisteredResources = mempty
, _ciStatus = Nothing
, _ciAgentConnected = Nothing
}
ciAgentConnected :: Lens' ContainerInstance (Maybe Bool)
ciAgentConnected = lens _ciAgentConnected (\s a -> s { _ciAgentConnected = a })
ciContainerInstanceArn :: Lens' ContainerInstance (Maybe Text)
ciContainerInstanceArn =
lens _ciContainerInstanceArn (\s a -> s { _ciContainerInstanceArn = a })
ciEc2InstanceId :: Lens' ContainerInstance (Maybe Text)
ciEc2InstanceId = lens _ciEc2InstanceId (\s a -> s { _ciEc2InstanceId = a })
ciRegisteredResources :: Lens' ContainerInstance [Resource]
ciRegisteredResources =
lens _ciRegisteredResources (\s a -> s { _ciRegisteredResources = a })
. _List
ciRemainingResources :: Lens' ContainerInstance [Resource]
ciRemainingResources =
lens _ciRemainingResources (\s a -> s { _ciRemainingResources = a })
. _List
ciStatus :: Lens' ContainerInstance (Maybe Text)
ciStatus = lens _ciStatus (\s a -> s { _ciStatus = a })
instance FromXML ContainerInstance where
parseXML x = ContainerInstance
<$> x .@? "agentConnected"
<*> x .@? "containerInstanceArn"
<*> x .@? "ec2InstanceId"
<*> x .@? "registeredResources" .!@ mempty
<*> x .@? "remainingResources" .!@ mempty
<*> x .@? "status"
instance ToQuery ContainerInstance where
toQuery ContainerInstance{..} = mconcat
[ "agentConnected" =? _ciAgentConnected
, "containerInstanceArn" =? _ciContainerInstanceArn
, "ec2InstanceId" =? _ciEc2InstanceId
, "registeredResources" =? _ciRegisteredResources
, "remainingResources" =? _ciRemainingResources
, "status" =? _ciStatus
]