{-|
Module:             Network.AWS.Machines.Instances
Description:        Machines producing instances
Copyright:          © 2017 All rights reserved.
License:            GPL-3
Maintainer:         Evan Cofsky <>
Stability:          experimental
Portability:        POSIX
-}

module Network.AWS.Machines.Instances where

import Network.AWS
import Network.AWS.Machines.AWS
import Network.AWS.EC2

reservations  [RequestMod DescribeInstances]  AWSSourceT m Reservation
reservations ms = pagedSource dirsReservations ms describeInstances

instances   AWSProcessT m Reservation Instance
instances = mapping (view rInstances) ~> asParts

stopT  AWSProcessT m Instance InstanceStateChange
stopT = buffered 50 ~> autoM stop' ~> asParts
    where
        srq iids = stopInstances
                   & siInstanceIds
                   <>~ over traversed (view insInstanceId)  iids
        stop' iids = (send $ srq iids) >>= return  view sirsStoppingInstances