packages feed

amazonka-emr 0.3.6 → 1.0.0

raw patch · 28 files changed

+5846/−5717 lines, 28 filesdep +amazonka-emrdep +amazonka-testdep +bytestringdep ~amazonka-coredep ~basePVP ok

version bump matches the API change (PVP)

Dependencies added: amazonka-emr, amazonka-test, bytestring, lens, tasty, tasty-hunit, text, time, unordered-containers

Dependency ranges changed: amazonka-core, base

API changes (from Hackage documentation)

- Network.AWS.EMR.AddInstanceGroups: aigrInstanceGroupIds :: Lens' AddInstanceGroupsResponse [Text]
- Network.AWS.EMR.AddInstanceGroups: aigrJobFlowId :: Lens' AddInstanceGroupsResponse (Maybe Text)
- Network.AWS.EMR.AddInstanceGroups: instance FromJSON AddInstanceGroupsResponse
- Network.AWS.EMR.AddInstanceGroups: instance Ord AddInstanceGroupsResponse
- Network.AWS.EMR.AddJobFlowSteps: ajfsrStepIds :: Lens' AddJobFlowStepsResponse [Text]
- Network.AWS.EMR.AddJobFlowSteps: instance FromJSON AddJobFlowStepsResponse
- Network.AWS.EMR.AddJobFlowSteps: instance IsList AddJobFlowStepsResponse
- Network.AWS.EMR.AddJobFlowSteps: instance Monoid AddJobFlowStepsResponse
- Network.AWS.EMR.AddJobFlowSteps: instance Ord AddJobFlowStepsResponse
- Network.AWS.EMR.AddJobFlowSteps: instance Semigroup AddJobFlowStepsResponse
- Network.AWS.EMR.AddTags: instance Ord AddTagsResponse
- Network.AWS.EMR.DescribeCluster: dcrCluster :: Lens' DescribeClusterResponse Cluster
- Network.AWS.EMR.DescribeCluster: instance FromJSON DescribeClusterResponse
- Network.AWS.EMR.DescribeCluster: instance IsString DescribeCluster
- Network.AWS.EMR.DescribeCluster: instance Monoid DescribeCluster
- Network.AWS.EMR.DescribeCluster: instance Ord DescribeCluster
- Network.AWS.EMR.DescribeJobFlows: data DescribeJobFlows
- Network.AWS.EMR.DescribeJobFlows: data DescribeJobFlowsResponse
- Network.AWS.EMR.DescribeJobFlows: describeJobFlows :: DescribeJobFlows
- Network.AWS.EMR.DescribeJobFlows: describeJobFlowsResponse :: DescribeJobFlowsResponse
- Network.AWS.EMR.DescribeJobFlows: djfCreatedAfter :: Lens' DescribeJobFlows (Maybe UTCTime)
- Network.AWS.EMR.DescribeJobFlows: djfCreatedBefore :: Lens' DescribeJobFlows (Maybe UTCTime)
- Network.AWS.EMR.DescribeJobFlows: djfJobFlowIds :: Lens' DescribeJobFlows [Text]
- Network.AWS.EMR.DescribeJobFlows: djfJobFlowStates :: Lens' DescribeJobFlows [JobFlowExecutionState]
- Network.AWS.EMR.DescribeJobFlows: djfrJobFlows :: Lens' DescribeJobFlowsResponse [JobFlowDetail]
- Network.AWS.EMR.DescribeJobFlows: instance AWSRequest DescribeJobFlows
- Network.AWS.EMR.DescribeJobFlows: instance Eq DescribeJobFlows
- Network.AWS.EMR.DescribeJobFlows: instance Eq DescribeJobFlowsResponse
- Network.AWS.EMR.DescribeJobFlows: instance FromJSON DescribeJobFlowsResponse
- Network.AWS.EMR.DescribeJobFlows: instance IsList DescribeJobFlowsResponse
- Network.AWS.EMR.DescribeJobFlows: instance Monoid DescribeJobFlowsResponse
- Network.AWS.EMR.DescribeJobFlows: instance Read DescribeJobFlows
- Network.AWS.EMR.DescribeJobFlows: instance Read DescribeJobFlowsResponse
- Network.AWS.EMR.DescribeJobFlows: instance Semigroup DescribeJobFlowsResponse
- Network.AWS.EMR.DescribeJobFlows: instance Show DescribeJobFlows
- Network.AWS.EMR.DescribeJobFlows: instance Show DescribeJobFlowsResponse
- Network.AWS.EMR.DescribeJobFlows: instance ToHeaders DescribeJobFlows
- Network.AWS.EMR.DescribeJobFlows: instance ToJSON DescribeJobFlows
- Network.AWS.EMR.DescribeJobFlows: instance ToPath DescribeJobFlows
- Network.AWS.EMR.DescribeJobFlows: instance ToQuery DescribeJobFlows
- Network.AWS.EMR.DescribeStep: dsrStep :: Lens' DescribeStepResponse (Maybe Step)
- Network.AWS.EMR.DescribeStep: instance FromJSON DescribeStepResponse
- Network.AWS.EMR.DescribeStep: instance Ord DescribeStep
- Network.AWS.EMR.ListBootstrapActions: instance FromJSON ListBootstrapActionsResponse
- Network.AWS.EMR.ListBootstrapActions: instance Ord ListBootstrapActions
- Network.AWS.EMR.ListBootstrapActions: lbarBootstrapActions :: Lens' ListBootstrapActionsResponse [Command]
- Network.AWS.EMR.ListBootstrapActions: lbarMarker :: Lens' ListBootstrapActionsResponse (Maybe Text)
- Network.AWS.EMR.ListClusters: instance FromJSON ListClustersResponse
- Network.AWS.EMR.ListClusters: lcrClusters :: Lens' ListClustersResponse [ClusterSummary]
- Network.AWS.EMR.ListClusters: lcrMarker :: Lens' ListClustersResponse (Maybe Text)
- Network.AWS.EMR.ListInstanceGroups: instance FromJSON ListInstanceGroupsResponse
- Network.AWS.EMR.ListInstanceGroups: instance Ord ListInstanceGroups
- Network.AWS.EMR.ListInstanceGroups: ligrInstanceGroups :: Lens' ListInstanceGroupsResponse [InstanceGroup]
- Network.AWS.EMR.ListInstanceGroups: ligrMarker :: Lens' ListInstanceGroupsResponse (Maybe Text)
- Network.AWS.EMR.ListInstances: instance FromJSON ListInstancesResponse
- Network.AWS.EMR.ListInstances: lirInstances :: Lens' ListInstancesResponse [Instance]
- Network.AWS.EMR.ListInstances: lirMarker :: Lens' ListInstancesResponse (Maybe Text)
- Network.AWS.EMR.ListSteps: instance FromJSON ListStepsResponse
- Network.AWS.EMR.ListSteps: lsrMarker :: Lens' ListStepsResponse (Maybe Text)
- Network.AWS.EMR.ListSteps: lsrSteps :: Lens' ListStepsResponse [StepSummary]
- Network.AWS.EMR.ModifyInstanceGroups: instance IsList ModifyInstanceGroups
- Network.AWS.EMR.ModifyInstanceGroups: instance Monoid ModifyInstanceGroups
- Network.AWS.EMR.ModifyInstanceGroups: instance Ord ModifyInstanceGroupsResponse
- Network.AWS.EMR.ModifyInstanceGroups: instance Semigroup ModifyInstanceGroups
- Network.AWS.EMR.RemoveTags: instance Ord RemoveTags
- Network.AWS.EMR.RemoveTags: instance Ord RemoveTagsResponse
- Network.AWS.EMR.RunJobFlow: instance FromJSON RunJobFlowResponse
- Network.AWS.EMR.RunJobFlow: instance Monoid RunJobFlowResponse
- Network.AWS.EMR.RunJobFlow: instance Ord RunJobFlowResponse
- Network.AWS.EMR.RunJobFlow: rjfAmiVersion :: Lens' RunJobFlow (Maybe Text)
- Network.AWS.EMR.RunJobFlow: rjfLogUri :: Lens' RunJobFlow (Maybe Text)
- Network.AWS.EMR.RunJobFlow: rjfrJobFlowId :: Lens' RunJobFlowResponse (Maybe Text)
- Network.AWS.EMR.SetTerminationProtection: instance Ord SetTerminationProtection
- Network.AWS.EMR.SetTerminationProtection: instance Ord SetTerminationProtectionResponse
- Network.AWS.EMR.SetVisibleToAllUsers: instance Ord SetVisibleToAllUsers
- Network.AWS.EMR.SetVisibleToAllUsers: instance Ord SetVisibleToAllUsersResponse
- Network.AWS.EMR.TerminateJobFlows: instance IsList TerminateJobFlows
- Network.AWS.EMR.TerminateJobFlows: instance Monoid TerminateJobFlows
- Network.AWS.EMR.TerminateJobFlows: instance Ord TerminateJobFlows
- Network.AWS.EMR.TerminateJobFlows: instance Ord TerminateJobFlowsResponse
- Network.AWS.EMR.TerminateJobFlows: instance Semigroup TerminateJobFlows
- Network.AWS.EMR.Types: AOFCancelAndWait :: ActionOnFailure
- Network.AWS.EMR.Types: AOFContinue :: ActionOnFailure
- Network.AWS.EMR.Types: AOFTerminateCluster :: ActionOnFailure
- Network.AWS.EMR.Types: AOFTerminateJobFlow :: ActionOnFailure
- Network.AWS.EMR.Types: CSBootstrapping :: ClusterState
- Network.AWS.EMR.Types: CSCRCAllStepsCompleted :: ClusterStateChangeReasonCode
- Network.AWS.EMR.Types: CSCRCBootstrapFailure :: ClusterStateChangeReasonCode
- Network.AWS.EMR.Types: CSCRCInstanceFailure :: ClusterStateChangeReasonCode
- Network.AWS.EMR.Types: CSCRCInternalError :: ClusterStateChangeReasonCode
- Network.AWS.EMR.Types: CSCRCStepFailure :: ClusterStateChangeReasonCode
- Network.AWS.EMR.Types: CSCRCUserRequest :: ClusterStateChangeReasonCode
- Network.AWS.EMR.Types: CSCRCValidationError :: ClusterStateChangeReasonCode
- Network.AWS.EMR.Types: CSRunning :: ClusterState
- Network.AWS.EMR.Types: CSStarting :: ClusterState
- Network.AWS.EMR.Types: CSTerminated :: ClusterState
- Network.AWS.EMR.Types: CSTerminatedWithErrors :: ClusterState
- Network.AWS.EMR.Types: CSTerminating :: ClusterState
- Network.AWS.EMR.Types: CSWaiting :: ClusterState
- Network.AWS.EMR.Types: Cancelled :: StepExecutionState
- Network.AWS.EMR.Types: ClusterTerminated :: InstanceGroupStateChangeReasonCode
- Network.AWS.EMR.Types: Completed :: StepExecutionState
- Network.AWS.EMR.Types: Failed :: StepExecutionState
- Network.AWS.EMR.Types: IRTCore :: InstanceRoleType
- Network.AWS.EMR.Types: IRTMaster :: InstanceRoleType
- Network.AWS.EMR.Types: IRTTask :: InstanceRoleType
- Network.AWS.EMR.Types: Interrupted :: StepExecutionState
- Network.AWS.EMR.Types: JFESBootstrapping :: JobFlowExecutionState
- Network.AWS.EMR.Types: JFESCompleted :: JobFlowExecutionState
- Network.AWS.EMR.Types: JFESFailed :: JobFlowExecutionState
- Network.AWS.EMR.Types: JFESRunning :: JobFlowExecutionState
- Network.AWS.EMR.Types: JFESShuttingDown :: JobFlowExecutionState
- Network.AWS.EMR.Types: JFESStarting :: JobFlowExecutionState
- Network.AWS.EMR.Types: JFESTerminated :: JobFlowExecutionState
- Network.AWS.EMR.Types: JFESWaiting :: JobFlowExecutionState
- Network.AWS.EMR.Types: Pending :: StepExecutionState
- Network.AWS.EMR.Types: badBootstrapActionConfig :: Lens' BootstrapActionDetail (Maybe BootstrapActionConfig)
- Network.AWS.EMR.Types: bootstrapActionDetail :: BootstrapActionDetail
- Network.AWS.EMR.Types: c1Applications :: Lens' Cluster [Application]
- Network.AWS.EMR.Types: c1AutoTerminate :: Lens' Cluster (Maybe Bool)
- Network.AWS.EMR.Types: c1Ec2InstanceAttributes :: Lens' Cluster (Maybe Ec2InstanceAttributes)
- Network.AWS.EMR.Types: c1Id :: Lens' Cluster Text
- Network.AWS.EMR.Types: c1LogUri :: Lens' Cluster (Maybe Text)
- Network.AWS.EMR.Types: c1MasterPublicDnsName :: Lens' Cluster (Maybe Text)
- Network.AWS.EMR.Types: c1Name :: Lens' Cluster Text
- Network.AWS.EMR.Types: c1NormalizedInstanceHours :: Lens' Cluster (Maybe Int)
- Network.AWS.EMR.Types: c1RequestedAmiVersion :: Lens' Cluster (Maybe Text)
- Network.AWS.EMR.Types: c1RunningAmiVersion :: Lens' Cluster (Maybe Text)
- Network.AWS.EMR.Types: c1ServiceRole :: Lens' Cluster (Maybe Text)
- Network.AWS.EMR.Types: c1Status :: Lens' Cluster ClusterStatus
- Network.AWS.EMR.Types: c1Tags :: Lens' Cluster [Tag]
- Network.AWS.EMR.Types: c1TerminationProtected :: Lens' Cluster (Maybe Bool)
- Network.AWS.EMR.Types: c1VisibleToAllUsers :: Lens' Cluster (Maybe Bool)
- Network.AWS.EMR.Types: data BootstrapActionDetail
- Network.AWS.EMR.Types: data Ec2InstanceAttributes
- Network.AWS.EMR.Types: data HadoopJarStepConfig
- Network.AWS.EMR.Types: data InstanceGroupDetail
- Network.AWS.EMR.Types: data JSONError :: *
- Network.AWS.EMR.Types: data JobFlowDetail
- Network.AWS.EMR.Types: data JobFlowExecutionState
- Network.AWS.EMR.Types: data JobFlowExecutionStatusDetail
- Network.AWS.EMR.Types: data JobFlowInstancesDetail
- Network.AWS.EMR.Types: data StepDetail
- Network.AWS.EMR.Types: data StepExecutionState
- Network.AWS.EMR.Types: data StepExecutionStatusDetail
- Network.AWS.EMR.Types: eiaEc2AvailabilityZone :: Lens' Ec2InstanceAttributes (Maybe Text)
- Network.AWS.EMR.Types: eiaEc2KeyName :: Lens' Ec2InstanceAttributes (Maybe Text)
- Network.AWS.EMR.Types: eiaEc2SubnetId :: Lens' Ec2InstanceAttributes (Maybe Text)
- Network.AWS.EMR.Types: eiaIamInstanceProfile :: Lens' Ec2InstanceAttributes (Maybe Text)
- Network.AWS.EMR.Types: hadoopJarStepConfig :: Text -> HadoopJarStepConfig
- Network.AWS.EMR.Types: hjscJar :: Lens' HadoopJarStepConfig Text
- Network.AWS.EMR.Types: hscJar :: Lens' HadoopStepConfig (Maybe Text)
- Network.AWS.EMR.Types: iEc2InstanceId :: Lens' Instance (Maybe Text)
- Network.AWS.EMR.Types: iPrivateDnsName :: Lens' Instance (Maybe Text)
- Network.AWS.EMR.Types: iPrivateIpAddress :: Lens' Instance (Maybe Text)
- Network.AWS.EMR.Types: iPublicDnsName :: Lens' Instance (Maybe Text)
- Network.AWS.EMR.Types: iPublicIpAddress :: Lens' Instance (Maybe Text)
- Network.AWS.EMR.Types: igdBidPrice :: Lens' InstanceGroupDetail (Maybe Text)
- Network.AWS.EMR.Types: igdCreationDateTime :: Lens' InstanceGroupDetail UTCTime
- Network.AWS.EMR.Types: igdEndDateTime :: Lens' InstanceGroupDetail (Maybe UTCTime)
- Network.AWS.EMR.Types: igdInstanceGroupId :: Lens' InstanceGroupDetail (Maybe Text)
- Network.AWS.EMR.Types: igdInstanceRequestCount :: Lens' InstanceGroupDetail Int
- Network.AWS.EMR.Types: igdInstanceRole :: Lens' InstanceGroupDetail InstanceRoleType
- Network.AWS.EMR.Types: igdInstanceRunningCount :: Lens' InstanceGroupDetail Int
- Network.AWS.EMR.Types: igdInstanceType :: Lens' InstanceGroupDetail Text
- Network.AWS.EMR.Types: igdLastStateChangeReason :: Lens' InstanceGroupDetail (Maybe Text)
- Network.AWS.EMR.Types: igdMarket :: Lens' InstanceGroupDetail MarketType
- Network.AWS.EMR.Types: igdName :: Lens' InstanceGroupDetail (Maybe Text)
- Network.AWS.EMR.Types: igdReadyDateTime :: Lens' InstanceGroupDetail (Maybe UTCTime)
- Network.AWS.EMR.Types: igdStartDateTime :: Lens' InstanceGroupDetail (Maybe UTCTime)
- Network.AWS.EMR.Types: igdState :: Lens' InstanceGroupDetail InstanceGroupState
- Network.AWS.EMR.Types: instance Constructor C1_0ActionOnFailure
- Network.AWS.EMR.Types: instance Constructor C1_0ClusterState
- Network.AWS.EMR.Types: instance Constructor C1_0ClusterStateChangeReasonCode
- Network.AWS.EMR.Types: instance Constructor C1_0InstanceGroupState
- Network.AWS.EMR.Types: instance Constructor C1_0InstanceGroupStateChangeReasonCode
- Network.AWS.EMR.Types: instance Constructor C1_0InstanceGroupType
- Network.AWS.EMR.Types: instance Constructor C1_0InstanceRoleType
- Network.AWS.EMR.Types: instance Constructor C1_0InstanceState
- Network.AWS.EMR.Types: instance Constructor C1_0InstanceStateChangeReasonCode
- Network.AWS.EMR.Types: instance Constructor C1_0JobFlowExecutionState
- Network.AWS.EMR.Types: instance Constructor C1_0MarketType
- Network.AWS.EMR.Types: instance Constructor C1_0StepExecutionState
- Network.AWS.EMR.Types: instance Constructor C1_0StepState
- Network.AWS.EMR.Types: instance Constructor C1_0StepStateChangeReasonCode
- Network.AWS.EMR.Types: instance Constructor C1_1ActionOnFailure
- Network.AWS.EMR.Types: instance Constructor C1_1ClusterState
- Network.AWS.EMR.Types: instance Constructor C1_1ClusterStateChangeReasonCode
- Network.AWS.EMR.Types: instance Constructor C1_1InstanceGroupState
- Network.AWS.EMR.Types: instance Constructor C1_1InstanceGroupStateChangeReasonCode
- Network.AWS.EMR.Types: instance Constructor C1_1InstanceGroupType
- Network.AWS.EMR.Types: instance Constructor C1_1InstanceRoleType
- Network.AWS.EMR.Types: instance Constructor C1_1InstanceState
- Network.AWS.EMR.Types: instance Constructor C1_1InstanceStateChangeReasonCode
- Network.AWS.EMR.Types: instance Constructor C1_1JobFlowExecutionState
- Network.AWS.EMR.Types: instance Constructor C1_1MarketType
- Network.AWS.EMR.Types: instance Constructor C1_1StepExecutionState
- Network.AWS.EMR.Types: instance Constructor C1_1StepState
- Network.AWS.EMR.Types: instance Constructor C1_2ActionOnFailure
- Network.AWS.EMR.Types: instance Constructor C1_2ClusterState
- Network.AWS.EMR.Types: instance Constructor C1_2ClusterStateChangeReasonCode
- Network.AWS.EMR.Types: instance Constructor C1_2InstanceGroupState
- Network.AWS.EMR.Types: instance Constructor C1_2InstanceGroupStateChangeReasonCode
- Network.AWS.EMR.Types: instance Constructor C1_2InstanceGroupType
- Network.AWS.EMR.Types: instance Constructor C1_2InstanceRoleType
- Network.AWS.EMR.Types: instance Constructor C1_2InstanceState
- Network.AWS.EMR.Types: instance Constructor C1_2InstanceStateChangeReasonCode
- Network.AWS.EMR.Types: instance Constructor C1_2JobFlowExecutionState
- Network.AWS.EMR.Types: instance Constructor C1_2StepExecutionState
- Network.AWS.EMR.Types: instance Constructor C1_2StepState
- Network.AWS.EMR.Types: instance Constructor C1_3ActionOnFailure
- Network.AWS.EMR.Types: instance Constructor C1_3ClusterState
- Network.AWS.EMR.Types: instance Constructor C1_3ClusterStateChangeReasonCode
- Network.AWS.EMR.Types: instance Constructor C1_3InstanceGroupState
- Network.AWS.EMR.Types: instance Constructor C1_3InstanceGroupStateChangeReasonCode
- Network.AWS.EMR.Types: instance Constructor C1_3InstanceState
- Network.AWS.EMR.Types: instance Constructor C1_3InstanceStateChangeReasonCode
- Network.AWS.EMR.Types: instance Constructor C1_3JobFlowExecutionState
- Network.AWS.EMR.Types: instance Constructor C1_3StepExecutionState
- Network.AWS.EMR.Types: instance Constructor C1_3StepState
- Network.AWS.EMR.Types: instance Constructor C1_4ClusterState
- Network.AWS.EMR.Types: instance Constructor C1_4ClusterStateChangeReasonCode
- Network.AWS.EMR.Types: instance Constructor C1_4InstanceGroupState
- Network.AWS.EMR.Types: instance Constructor C1_4InstanceState
- Network.AWS.EMR.Types: instance Constructor C1_4InstanceStateChangeReasonCode
- Network.AWS.EMR.Types: instance Constructor C1_4JobFlowExecutionState
- Network.AWS.EMR.Types: instance Constructor C1_4StepExecutionState
- Network.AWS.EMR.Types: instance Constructor C1_4StepState
- Network.AWS.EMR.Types: instance Constructor C1_5ClusterState
- Network.AWS.EMR.Types: instance Constructor C1_5ClusterStateChangeReasonCode
- Network.AWS.EMR.Types: instance Constructor C1_5InstanceGroupState
- Network.AWS.EMR.Types: instance Constructor C1_5JobFlowExecutionState
- Network.AWS.EMR.Types: instance Constructor C1_5StepExecutionState
- Network.AWS.EMR.Types: instance Constructor C1_5StepState
- Network.AWS.EMR.Types: instance Constructor C1_6ClusterState
- Network.AWS.EMR.Types: instance Constructor C1_6ClusterStateChangeReasonCode
- Network.AWS.EMR.Types: instance Constructor C1_6InstanceGroupState
- Network.AWS.EMR.Types: instance Constructor C1_6JobFlowExecutionState
- Network.AWS.EMR.Types: instance Constructor C1_6StepExecutionState
- Network.AWS.EMR.Types: instance Constructor C1_7InstanceGroupState
- Network.AWS.EMR.Types: instance Constructor C1_7JobFlowExecutionState
- Network.AWS.EMR.Types: instance Constructor C1_8InstanceGroupState
- Network.AWS.EMR.Types: instance Constructor C1_9InstanceGroupState
- Network.AWS.EMR.Types: instance Datatype D1ActionOnFailure
- Network.AWS.EMR.Types: instance Datatype D1ClusterState
- Network.AWS.EMR.Types: instance Datatype D1ClusterStateChangeReasonCode
- Network.AWS.EMR.Types: instance Datatype D1InstanceGroupState
- Network.AWS.EMR.Types: instance Datatype D1InstanceGroupStateChangeReasonCode
- Network.AWS.EMR.Types: instance Datatype D1InstanceGroupType
- Network.AWS.EMR.Types: instance Datatype D1InstanceRoleType
- Network.AWS.EMR.Types: instance Datatype D1InstanceState
- Network.AWS.EMR.Types: instance Datatype D1InstanceStateChangeReasonCode
- Network.AWS.EMR.Types: instance Datatype D1JobFlowExecutionState
- Network.AWS.EMR.Types: instance Datatype D1MarketType
- Network.AWS.EMR.Types: instance Datatype D1StepExecutionState
- Network.AWS.EMR.Types: instance Datatype D1StepState
- Network.AWS.EMR.Types: instance Datatype D1StepStateChangeReasonCode
- Network.AWS.EMR.Types: instance Enum ActionOnFailure
- Network.AWS.EMR.Types: instance Enum ClusterState
- Network.AWS.EMR.Types: instance Enum ClusterStateChangeReasonCode
- Network.AWS.EMR.Types: instance Enum InstanceGroupState
- Network.AWS.EMR.Types: instance Enum InstanceGroupStateChangeReasonCode
- Network.AWS.EMR.Types: instance Enum InstanceGroupType
- Network.AWS.EMR.Types: instance Enum InstanceRoleType
- Network.AWS.EMR.Types: instance Enum InstanceState
- Network.AWS.EMR.Types: instance Enum InstanceStateChangeReasonCode
- Network.AWS.EMR.Types: instance Enum JobFlowExecutionState
- Network.AWS.EMR.Types: instance Enum MarketType
- Network.AWS.EMR.Types: instance Enum StepExecutionState
- Network.AWS.EMR.Types: instance Enum StepState
- Network.AWS.EMR.Types: instance Enum StepStateChangeReasonCode
- Network.AWS.EMR.Types: instance Eq ActionOnFailure
- Network.AWS.EMR.Types: instance Eq Application
- Network.AWS.EMR.Types: instance Eq BootstrapActionConfig
- Network.AWS.EMR.Types: instance Eq BootstrapActionDetail
- Network.AWS.EMR.Types: instance Eq Cluster
- Network.AWS.EMR.Types: instance Eq ClusterState
- Network.AWS.EMR.Types: instance Eq ClusterStateChangeReason
- Network.AWS.EMR.Types: instance Eq ClusterStateChangeReasonCode
- Network.AWS.EMR.Types: instance Eq ClusterStatus
- Network.AWS.EMR.Types: instance Eq ClusterSummary
- Network.AWS.EMR.Types: instance Eq ClusterTimeline
- Network.AWS.EMR.Types: instance Eq Command
- Network.AWS.EMR.Types: instance Eq Ec2InstanceAttributes
- Network.AWS.EMR.Types: instance Eq HadoopJarStepConfig
- Network.AWS.EMR.Types: instance Eq HadoopStepConfig
- Network.AWS.EMR.Types: instance Eq Instance
- Network.AWS.EMR.Types: instance Eq InstanceGroup
- Network.AWS.EMR.Types: instance Eq InstanceGroupConfig
- Network.AWS.EMR.Types: instance Eq InstanceGroupDetail
- Network.AWS.EMR.Types: instance Eq InstanceGroupModifyConfig
- Network.AWS.EMR.Types: instance Eq InstanceGroupState
- Network.AWS.EMR.Types: instance Eq InstanceGroupStateChangeReason
- Network.AWS.EMR.Types: instance Eq InstanceGroupStateChangeReasonCode
- Network.AWS.EMR.Types: instance Eq InstanceGroupStatus
- Network.AWS.EMR.Types: instance Eq InstanceGroupTimeline
- Network.AWS.EMR.Types: instance Eq InstanceGroupType
- Network.AWS.EMR.Types: instance Eq InstanceRoleType
- Network.AWS.EMR.Types: instance Eq InstanceState
- Network.AWS.EMR.Types: instance Eq InstanceStateChangeReason
- Network.AWS.EMR.Types: instance Eq InstanceStateChangeReasonCode
- Network.AWS.EMR.Types: instance Eq InstanceStatus
- Network.AWS.EMR.Types: instance Eq InstanceTimeline
- Network.AWS.EMR.Types: instance Eq JobFlowDetail
- Network.AWS.EMR.Types: instance Eq JobFlowExecutionState
- Network.AWS.EMR.Types: instance Eq JobFlowExecutionStatusDetail
- Network.AWS.EMR.Types: instance Eq JobFlowInstancesConfig
- Network.AWS.EMR.Types: instance Eq JobFlowInstancesDetail
- Network.AWS.EMR.Types: instance Eq KeyValue
- Network.AWS.EMR.Types: instance Eq MarketType
- Network.AWS.EMR.Types: instance Eq PlacementType
- Network.AWS.EMR.Types: instance Eq ScriptBootstrapActionConfig
- Network.AWS.EMR.Types: instance Eq Step
- Network.AWS.EMR.Types: instance Eq StepConfig
- Network.AWS.EMR.Types: instance Eq StepDetail
- Network.AWS.EMR.Types: instance Eq StepExecutionState
- Network.AWS.EMR.Types: instance Eq StepExecutionStatusDetail
- Network.AWS.EMR.Types: instance Eq StepState
- Network.AWS.EMR.Types: instance Eq StepStateChangeReason
- Network.AWS.EMR.Types: instance Eq StepStateChangeReasonCode
- Network.AWS.EMR.Types: instance Eq StepStatus
- Network.AWS.EMR.Types: instance Eq StepSummary
- Network.AWS.EMR.Types: instance Eq StepTimeline
- Network.AWS.EMR.Types: instance Eq SupportedProductConfig
- Network.AWS.EMR.Types: instance Eq Tag
- Network.AWS.EMR.Types: instance FromJSON ActionOnFailure
- Network.AWS.EMR.Types: instance FromJSON Application
- Network.AWS.EMR.Types: instance FromJSON BootstrapActionConfig
- Network.AWS.EMR.Types: instance FromJSON BootstrapActionDetail
- Network.AWS.EMR.Types: instance FromJSON Cluster
- Network.AWS.EMR.Types: instance FromJSON ClusterState
- Network.AWS.EMR.Types: instance FromJSON ClusterStateChangeReason
- Network.AWS.EMR.Types: instance FromJSON ClusterStateChangeReasonCode
- Network.AWS.EMR.Types: instance FromJSON ClusterStatus
- Network.AWS.EMR.Types: instance FromJSON ClusterSummary
- Network.AWS.EMR.Types: instance FromJSON ClusterTimeline
- Network.AWS.EMR.Types: instance FromJSON Command
- Network.AWS.EMR.Types: instance FromJSON Ec2InstanceAttributes
- Network.AWS.EMR.Types: instance FromJSON HadoopJarStepConfig
- Network.AWS.EMR.Types: instance FromJSON HadoopStepConfig
- Network.AWS.EMR.Types: instance FromJSON Instance
- Network.AWS.EMR.Types: instance FromJSON InstanceGroup
- Network.AWS.EMR.Types: instance FromJSON InstanceGroupConfig
- Network.AWS.EMR.Types: instance FromJSON InstanceGroupDetail
- Network.AWS.EMR.Types: instance FromJSON InstanceGroupModifyConfig
- Network.AWS.EMR.Types: instance FromJSON InstanceGroupState
- Network.AWS.EMR.Types: instance FromJSON InstanceGroupStateChangeReason
- Network.AWS.EMR.Types: instance FromJSON InstanceGroupStateChangeReasonCode
- Network.AWS.EMR.Types: instance FromJSON InstanceGroupStatus
- Network.AWS.EMR.Types: instance FromJSON InstanceGroupTimeline
- Network.AWS.EMR.Types: instance FromJSON InstanceGroupType
- Network.AWS.EMR.Types: instance FromJSON InstanceRoleType
- Network.AWS.EMR.Types: instance FromJSON InstanceState
- Network.AWS.EMR.Types: instance FromJSON InstanceStateChangeReason
- Network.AWS.EMR.Types: instance FromJSON InstanceStateChangeReasonCode
- Network.AWS.EMR.Types: instance FromJSON InstanceStatus
- Network.AWS.EMR.Types: instance FromJSON InstanceTimeline
- Network.AWS.EMR.Types: instance FromJSON JobFlowDetail
- Network.AWS.EMR.Types: instance FromJSON JobFlowExecutionState
- Network.AWS.EMR.Types: instance FromJSON JobFlowExecutionStatusDetail
- Network.AWS.EMR.Types: instance FromJSON JobFlowInstancesConfig
- Network.AWS.EMR.Types: instance FromJSON JobFlowInstancesDetail
- Network.AWS.EMR.Types: instance FromJSON KeyValue
- Network.AWS.EMR.Types: instance FromJSON MarketType
- Network.AWS.EMR.Types: instance FromJSON PlacementType
- Network.AWS.EMR.Types: instance FromJSON ScriptBootstrapActionConfig
- Network.AWS.EMR.Types: instance FromJSON Step
- Network.AWS.EMR.Types: instance FromJSON StepConfig
- Network.AWS.EMR.Types: instance FromJSON StepDetail
- Network.AWS.EMR.Types: instance FromJSON StepExecutionState
- Network.AWS.EMR.Types: instance FromJSON StepExecutionStatusDetail
- Network.AWS.EMR.Types: instance FromJSON StepState
- Network.AWS.EMR.Types: instance FromJSON StepStateChangeReason
- Network.AWS.EMR.Types: instance FromJSON StepStateChangeReasonCode
- Network.AWS.EMR.Types: instance FromJSON StepStatus
- Network.AWS.EMR.Types: instance FromJSON StepSummary
- Network.AWS.EMR.Types: instance FromJSON StepTimeline
- Network.AWS.EMR.Types: instance FromJSON SupportedProductConfig
- Network.AWS.EMR.Types: instance FromJSON Tag
- Network.AWS.EMR.Types: instance FromText ActionOnFailure
- Network.AWS.EMR.Types: instance FromText ClusterState
- Network.AWS.EMR.Types: instance FromText ClusterStateChangeReasonCode
- Network.AWS.EMR.Types: instance FromText InstanceGroupState
- Network.AWS.EMR.Types: instance FromText InstanceGroupStateChangeReasonCode
- Network.AWS.EMR.Types: instance FromText InstanceGroupType
- Network.AWS.EMR.Types: instance FromText InstanceRoleType
- Network.AWS.EMR.Types: instance FromText InstanceState
- Network.AWS.EMR.Types: instance FromText InstanceStateChangeReasonCode
- Network.AWS.EMR.Types: instance FromText JobFlowExecutionState
- Network.AWS.EMR.Types: instance FromText MarketType
- Network.AWS.EMR.Types: instance FromText StepExecutionState
- Network.AWS.EMR.Types: instance FromText StepState
- Network.AWS.EMR.Types: instance FromText StepStateChangeReasonCode
- Network.AWS.EMR.Types: instance Generic ActionOnFailure
- Network.AWS.EMR.Types: instance Generic ClusterState
- Network.AWS.EMR.Types: instance Generic ClusterStateChangeReasonCode
- Network.AWS.EMR.Types: instance Generic InstanceGroupState
- Network.AWS.EMR.Types: instance Generic InstanceGroupStateChangeReasonCode
- Network.AWS.EMR.Types: instance Generic InstanceGroupType
- Network.AWS.EMR.Types: instance Generic InstanceRoleType
- Network.AWS.EMR.Types: instance Generic InstanceState
- Network.AWS.EMR.Types: instance Generic InstanceStateChangeReasonCode
- Network.AWS.EMR.Types: instance Generic JobFlowExecutionState
- Network.AWS.EMR.Types: instance Generic MarketType
- Network.AWS.EMR.Types: instance Generic StepExecutionState
- Network.AWS.EMR.Types: instance Generic StepState
- Network.AWS.EMR.Types: instance Generic StepStateChangeReasonCode
- Network.AWS.EMR.Types: instance Hashable ActionOnFailure
- Network.AWS.EMR.Types: instance Hashable ClusterState
- Network.AWS.EMR.Types: instance Hashable ClusterStateChangeReasonCode
- Network.AWS.EMR.Types: instance Hashable InstanceGroupState
- Network.AWS.EMR.Types: instance Hashable InstanceGroupStateChangeReasonCode
- Network.AWS.EMR.Types: instance Hashable InstanceGroupType
- Network.AWS.EMR.Types: instance Hashable InstanceRoleType
- Network.AWS.EMR.Types: instance Hashable InstanceState
- Network.AWS.EMR.Types: instance Hashable InstanceStateChangeReasonCode
- Network.AWS.EMR.Types: instance Hashable JobFlowExecutionState
- Network.AWS.EMR.Types: instance Hashable MarketType
- Network.AWS.EMR.Types: instance Hashable StepExecutionState
- Network.AWS.EMR.Types: instance Hashable StepState
- Network.AWS.EMR.Types: instance Hashable StepStateChangeReasonCode
- Network.AWS.EMR.Types: instance IsString PlacementType
- Network.AWS.EMR.Types: instance Monoid PlacementType
- Network.AWS.EMR.Types: instance Ord ActionOnFailure
- Network.AWS.EMR.Types: instance Ord ClusterState
- Network.AWS.EMR.Types: instance Ord ClusterStateChangeReasonCode
- Network.AWS.EMR.Types: instance Ord ClusterTimeline
- Network.AWS.EMR.Types: instance Ord Command
- Network.AWS.EMR.Types: instance Ord Ec2InstanceAttributes
- Network.AWS.EMR.Types: instance Ord InstanceGroupModifyConfig
- Network.AWS.EMR.Types: instance Ord InstanceGroupState
- Network.AWS.EMR.Types: instance Ord InstanceGroupStateChangeReasonCode
- Network.AWS.EMR.Types: instance Ord InstanceGroupTimeline
- Network.AWS.EMR.Types: instance Ord InstanceGroupType
- Network.AWS.EMR.Types: instance Ord InstanceRoleType
- Network.AWS.EMR.Types: instance Ord InstanceState
- Network.AWS.EMR.Types: instance Ord InstanceStateChangeReasonCode
- Network.AWS.EMR.Types: instance Ord InstanceTimeline
- Network.AWS.EMR.Types: instance Ord JobFlowExecutionState
- Network.AWS.EMR.Types: instance Ord KeyValue
- Network.AWS.EMR.Types: instance Ord MarketType
- Network.AWS.EMR.Types: instance Ord PlacementType
- Network.AWS.EMR.Types: instance Ord ScriptBootstrapActionConfig
- Network.AWS.EMR.Types: instance Ord StepExecutionState
- Network.AWS.EMR.Types: instance Ord StepState
- Network.AWS.EMR.Types: instance Ord StepStateChangeReasonCode
- Network.AWS.EMR.Types: instance Ord StepTimeline
- Network.AWS.EMR.Types: instance Ord SupportedProductConfig
- Network.AWS.EMR.Types: instance Ord Tag
- Network.AWS.EMR.Types: instance Read ActionOnFailure
- Network.AWS.EMR.Types: instance Read Application
- Network.AWS.EMR.Types: instance Read BootstrapActionConfig
- Network.AWS.EMR.Types: instance Read BootstrapActionDetail
- Network.AWS.EMR.Types: instance Read Cluster
- Network.AWS.EMR.Types: instance Read ClusterState
- Network.AWS.EMR.Types: instance Read ClusterStateChangeReason
- Network.AWS.EMR.Types: instance Read ClusterStateChangeReasonCode
- Network.AWS.EMR.Types: instance Read ClusterStatus
- Network.AWS.EMR.Types: instance Read ClusterSummary
- Network.AWS.EMR.Types: instance Read ClusterTimeline
- Network.AWS.EMR.Types: instance Read Command
- Network.AWS.EMR.Types: instance Read Ec2InstanceAttributes
- Network.AWS.EMR.Types: instance Read HadoopJarStepConfig
- Network.AWS.EMR.Types: instance Read HadoopStepConfig
- Network.AWS.EMR.Types: instance Read Instance
- Network.AWS.EMR.Types: instance Read InstanceGroup
- Network.AWS.EMR.Types: instance Read InstanceGroupConfig
- Network.AWS.EMR.Types: instance Read InstanceGroupDetail
- Network.AWS.EMR.Types: instance Read InstanceGroupModifyConfig
- Network.AWS.EMR.Types: instance Read InstanceGroupState
- Network.AWS.EMR.Types: instance Read InstanceGroupStateChangeReason
- Network.AWS.EMR.Types: instance Read InstanceGroupStateChangeReasonCode
- Network.AWS.EMR.Types: instance Read InstanceGroupStatus
- Network.AWS.EMR.Types: instance Read InstanceGroupTimeline
- Network.AWS.EMR.Types: instance Read InstanceGroupType
- Network.AWS.EMR.Types: instance Read InstanceRoleType
- Network.AWS.EMR.Types: instance Read InstanceState
- Network.AWS.EMR.Types: instance Read InstanceStateChangeReason
- Network.AWS.EMR.Types: instance Read InstanceStateChangeReasonCode
- Network.AWS.EMR.Types: instance Read InstanceStatus
- Network.AWS.EMR.Types: instance Read InstanceTimeline
- Network.AWS.EMR.Types: instance Read JobFlowDetail
- Network.AWS.EMR.Types: instance Read JobFlowExecutionState
- Network.AWS.EMR.Types: instance Read JobFlowExecutionStatusDetail
- Network.AWS.EMR.Types: instance Read JobFlowInstancesConfig
- Network.AWS.EMR.Types: instance Read JobFlowInstancesDetail
- Network.AWS.EMR.Types: instance Read KeyValue
- Network.AWS.EMR.Types: instance Read MarketType
- Network.AWS.EMR.Types: instance Read PlacementType
- Network.AWS.EMR.Types: instance Read ScriptBootstrapActionConfig
- Network.AWS.EMR.Types: instance Read Step
- Network.AWS.EMR.Types: instance Read StepConfig
- Network.AWS.EMR.Types: instance Read StepDetail
- Network.AWS.EMR.Types: instance Read StepExecutionState
- Network.AWS.EMR.Types: instance Read StepExecutionStatusDetail
- Network.AWS.EMR.Types: instance Read StepState
- Network.AWS.EMR.Types: instance Read StepStateChangeReason
- Network.AWS.EMR.Types: instance Read StepStateChangeReasonCode
- Network.AWS.EMR.Types: instance Read StepStatus
- Network.AWS.EMR.Types: instance Read StepSummary
- Network.AWS.EMR.Types: instance Read StepTimeline
- Network.AWS.EMR.Types: instance Read SupportedProductConfig
- Network.AWS.EMR.Types: instance Read Tag
- Network.AWS.EMR.Types: instance Show ActionOnFailure
- Network.AWS.EMR.Types: instance Show Application
- Network.AWS.EMR.Types: instance Show BootstrapActionConfig
- Network.AWS.EMR.Types: instance Show BootstrapActionDetail
- Network.AWS.EMR.Types: instance Show Cluster
- Network.AWS.EMR.Types: instance Show ClusterState
- Network.AWS.EMR.Types: instance Show ClusterStateChangeReason
- Network.AWS.EMR.Types: instance Show ClusterStateChangeReasonCode
- Network.AWS.EMR.Types: instance Show ClusterStatus
- Network.AWS.EMR.Types: instance Show ClusterSummary
- Network.AWS.EMR.Types: instance Show ClusterTimeline
- Network.AWS.EMR.Types: instance Show Command
- Network.AWS.EMR.Types: instance Show Ec2InstanceAttributes
- Network.AWS.EMR.Types: instance Show HadoopJarStepConfig
- Network.AWS.EMR.Types: instance Show HadoopStepConfig
- Network.AWS.EMR.Types: instance Show Instance
- Network.AWS.EMR.Types: instance Show InstanceGroup
- Network.AWS.EMR.Types: instance Show InstanceGroupConfig
- Network.AWS.EMR.Types: instance Show InstanceGroupDetail
- Network.AWS.EMR.Types: instance Show InstanceGroupModifyConfig
- Network.AWS.EMR.Types: instance Show InstanceGroupState
- Network.AWS.EMR.Types: instance Show InstanceGroupStateChangeReason
- Network.AWS.EMR.Types: instance Show InstanceGroupStateChangeReasonCode
- Network.AWS.EMR.Types: instance Show InstanceGroupStatus
- Network.AWS.EMR.Types: instance Show InstanceGroupTimeline
- Network.AWS.EMR.Types: instance Show InstanceGroupType
- Network.AWS.EMR.Types: instance Show InstanceRoleType
- Network.AWS.EMR.Types: instance Show InstanceState
- Network.AWS.EMR.Types: instance Show InstanceStateChangeReason
- Network.AWS.EMR.Types: instance Show InstanceStateChangeReasonCode
- Network.AWS.EMR.Types: instance Show InstanceStatus
- Network.AWS.EMR.Types: instance Show InstanceTimeline
- Network.AWS.EMR.Types: instance Show JobFlowDetail
- Network.AWS.EMR.Types: instance Show JobFlowExecutionState
- Network.AWS.EMR.Types: instance Show JobFlowExecutionStatusDetail
- Network.AWS.EMR.Types: instance Show JobFlowInstancesConfig
- Network.AWS.EMR.Types: instance Show JobFlowInstancesDetail
- Network.AWS.EMR.Types: instance Show KeyValue
- Network.AWS.EMR.Types: instance Show MarketType
- Network.AWS.EMR.Types: instance Show PlacementType
- Network.AWS.EMR.Types: instance Show ScriptBootstrapActionConfig
- Network.AWS.EMR.Types: instance Show Step
- Network.AWS.EMR.Types: instance Show StepConfig
- Network.AWS.EMR.Types: instance Show StepDetail
- Network.AWS.EMR.Types: instance Show StepExecutionState
- Network.AWS.EMR.Types: instance Show StepExecutionStatusDetail
- Network.AWS.EMR.Types: instance Show StepState
- Network.AWS.EMR.Types: instance Show StepStateChangeReason
- Network.AWS.EMR.Types: instance Show StepStateChangeReasonCode
- Network.AWS.EMR.Types: instance Show StepStatus
- Network.AWS.EMR.Types: instance Show StepSummary
- Network.AWS.EMR.Types: instance Show StepTimeline
- Network.AWS.EMR.Types: instance Show SupportedProductConfig
- Network.AWS.EMR.Types: instance Show Tag
- Network.AWS.EMR.Types: instance ToByteString ActionOnFailure
- Network.AWS.EMR.Types: instance ToByteString ClusterState
- Network.AWS.EMR.Types: instance ToByteString ClusterStateChangeReasonCode
- Network.AWS.EMR.Types: instance ToByteString InstanceGroupState
- Network.AWS.EMR.Types: instance ToByteString InstanceGroupStateChangeReasonCode
- Network.AWS.EMR.Types: instance ToByteString InstanceGroupType
- Network.AWS.EMR.Types: instance ToByteString InstanceRoleType
- Network.AWS.EMR.Types: instance ToByteString InstanceState
- Network.AWS.EMR.Types: instance ToByteString InstanceStateChangeReasonCode
- Network.AWS.EMR.Types: instance ToByteString JobFlowExecutionState
- Network.AWS.EMR.Types: instance ToByteString MarketType
- Network.AWS.EMR.Types: instance ToByteString StepExecutionState
- Network.AWS.EMR.Types: instance ToByteString StepState
- Network.AWS.EMR.Types: instance ToByteString StepStateChangeReasonCode
- Network.AWS.EMR.Types: instance ToHeader ActionOnFailure
- Network.AWS.EMR.Types: instance ToHeader ClusterState
- Network.AWS.EMR.Types: instance ToHeader ClusterStateChangeReasonCode
- Network.AWS.EMR.Types: instance ToHeader InstanceGroupState
- Network.AWS.EMR.Types: instance ToHeader InstanceGroupStateChangeReasonCode
- Network.AWS.EMR.Types: instance ToHeader InstanceGroupType
- Network.AWS.EMR.Types: instance ToHeader InstanceRoleType
- Network.AWS.EMR.Types: instance ToHeader InstanceState
- Network.AWS.EMR.Types: instance ToHeader InstanceStateChangeReasonCode
- Network.AWS.EMR.Types: instance ToHeader JobFlowExecutionState
- Network.AWS.EMR.Types: instance ToHeader MarketType
- Network.AWS.EMR.Types: instance ToHeader StepExecutionState
- Network.AWS.EMR.Types: instance ToHeader StepState
- Network.AWS.EMR.Types: instance ToHeader StepStateChangeReasonCode
- Network.AWS.EMR.Types: instance ToJSON ActionOnFailure
- Network.AWS.EMR.Types: instance ToJSON Application
- Network.AWS.EMR.Types: instance ToJSON BootstrapActionConfig
- Network.AWS.EMR.Types: instance ToJSON BootstrapActionDetail
- Network.AWS.EMR.Types: instance ToJSON Cluster
- Network.AWS.EMR.Types: instance ToJSON ClusterState
- Network.AWS.EMR.Types: instance ToJSON ClusterStateChangeReason
- Network.AWS.EMR.Types: instance ToJSON ClusterStateChangeReasonCode
- Network.AWS.EMR.Types: instance ToJSON ClusterStatus
- Network.AWS.EMR.Types: instance ToJSON ClusterSummary
- Network.AWS.EMR.Types: instance ToJSON ClusterTimeline
- Network.AWS.EMR.Types: instance ToJSON Command
- Network.AWS.EMR.Types: instance ToJSON Ec2InstanceAttributes
- Network.AWS.EMR.Types: instance ToJSON HadoopJarStepConfig
- Network.AWS.EMR.Types: instance ToJSON HadoopStepConfig
- Network.AWS.EMR.Types: instance ToJSON Instance
- Network.AWS.EMR.Types: instance ToJSON InstanceGroup
- Network.AWS.EMR.Types: instance ToJSON InstanceGroupConfig
- Network.AWS.EMR.Types: instance ToJSON InstanceGroupDetail
- Network.AWS.EMR.Types: instance ToJSON InstanceGroupModifyConfig
- Network.AWS.EMR.Types: instance ToJSON InstanceGroupState
- Network.AWS.EMR.Types: instance ToJSON InstanceGroupStateChangeReason
- Network.AWS.EMR.Types: instance ToJSON InstanceGroupStateChangeReasonCode
- Network.AWS.EMR.Types: instance ToJSON InstanceGroupStatus
- Network.AWS.EMR.Types: instance ToJSON InstanceGroupTimeline
- Network.AWS.EMR.Types: instance ToJSON InstanceGroupType
- Network.AWS.EMR.Types: instance ToJSON InstanceRoleType
- Network.AWS.EMR.Types: instance ToJSON InstanceState
- Network.AWS.EMR.Types: instance ToJSON InstanceStateChangeReason
- Network.AWS.EMR.Types: instance ToJSON InstanceStateChangeReasonCode
- Network.AWS.EMR.Types: instance ToJSON InstanceStatus
- Network.AWS.EMR.Types: instance ToJSON InstanceTimeline
- Network.AWS.EMR.Types: instance ToJSON JobFlowDetail
- Network.AWS.EMR.Types: instance ToJSON JobFlowExecutionState
- Network.AWS.EMR.Types: instance ToJSON JobFlowExecutionStatusDetail
- Network.AWS.EMR.Types: instance ToJSON JobFlowInstancesConfig
- Network.AWS.EMR.Types: instance ToJSON JobFlowInstancesDetail
- Network.AWS.EMR.Types: instance ToJSON KeyValue
- Network.AWS.EMR.Types: instance ToJSON MarketType
- Network.AWS.EMR.Types: instance ToJSON PlacementType
- Network.AWS.EMR.Types: instance ToJSON ScriptBootstrapActionConfig
- Network.AWS.EMR.Types: instance ToJSON Step
- Network.AWS.EMR.Types: instance ToJSON StepConfig
- Network.AWS.EMR.Types: instance ToJSON StepDetail
- Network.AWS.EMR.Types: instance ToJSON StepExecutionState
- Network.AWS.EMR.Types: instance ToJSON StepExecutionStatusDetail
- Network.AWS.EMR.Types: instance ToJSON StepState
- Network.AWS.EMR.Types: instance ToJSON StepStateChangeReason
- Network.AWS.EMR.Types: instance ToJSON StepStateChangeReasonCode
- Network.AWS.EMR.Types: instance ToJSON StepStatus
- Network.AWS.EMR.Types: instance ToJSON StepSummary
- Network.AWS.EMR.Types: instance ToJSON StepTimeline
- Network.AWS.EMR.Types: instance ToJSON SupportedProductConfig
- Network.AWS.EMR.Types: instance ToJSON Tag
- Network.AWS.EMR.Types: instance ToQuery ActionOnFailure
- Network.AWS.EMR.Types: instance ToQuery ClusterState
- Network.AWS.EMR.Types: instance ToQuery ClusterStateChangeReasonCode
- Network.AWS.EMR.Types: instance ToQuery InstanceGroupState
- Network.AWS.EMR.Types: instance ToQuery InstanceGroupStateChangeReasonCode
- Network.AWS.EMR.Types: instance ToQuery InstanceGroupType
- Network.AWS.EMR.Types: instance ToQuery InstanceRoleType
- Network.AWS.EMR.Types: instance ToQuery InstanceState
- Network.AWS.EMR.Types: instance ToQuery InstanceStateChangeReasonCode
- Network.AWS.EMR.Types: instance ToQuery JobFlowExecutionState
- Network.AWS.EMR.Types: instance ToQuery MarketType
- Network.AWS.EMR.Types: instance ToQuery StepExecutionState
- Network.AWS.EMR.Types: instance ToQuery StepState
- Network.AWS.EMR.Types: instance ToQuery StepStateChangeReasonCode
- Network.AWS.EMR.Types: instance ToText ActionOnFailure
- Network.AWS.EMR.Types: instance ToText ClusterState
- Network.AWS.EMR.Types: instance ToText ClusterStateChangeReasonCode
- Network.AWS.EMR.Types: instance ToText InstanceGroupState
- Network.AWS.EMR.Types: instance ToText InstanceGroupStateChangeReasonCode
- Network.AWS.EMR.Types: instance ToText InstanceGroupType
- Network.AWS.EMR.Types: instance ToText InstanceRoleType
- Network.AWS.EMR.Types: instance ToText InstanceState
- Network.AWS.EMR.Types: instance ToText InstanceStateChangeReasonCode
- Network.AWS.EMR.Types: instance ToText JobFlowExecutionState
- Network.AWS.EMR.Types: instance ToText MarketType
- Network.AWS.EMR.Types: instance ToText StepExecutionState
- Network.AWS.EMR.Types: instance ToText StepState
- Network.AWS.EMR.Types: instance ToText StepStateChangeReasonCode
- Network.AWS.EMR.Types: instanceGroupDetail :: MarketType -> InstanceRoleType -> Text -> Int -> Int -> InstanceGroupState -> UTCTime -> InstanceGroupDetail
- Network.AWS.EMR.Types: jfdAmiVersion :: Lens' JobFlowDetail (Maybe Text)
- Network.AWS.EMR.Types: jfdBootstrapActions :: Lens' JobFlowDetail [BootstrapActionDetail]
- Network.AWS.EMR.Types: jfdExecutionStatusDetail :: Lens' JobFlowDetail JobFlowExecutionStatusDetail
- Network.AWS.EMR.Types: jfdInstances :: Lens' JobFlowDetail JobFlowInstancesDetail
- Network.AWS.EMR.Types: jfdJobFlowId :: Lens' JobFlowDetail Text
- Network.AWS.EMR.Types: jfdJobFlowRole :: Lens' JobFlowDetail (Maybe Text)
- Network.AWS.EMR.Types: jfdLogUri :: Lens' JobFlowDetail (Maybe Text)
- Network.AWS.EMR.Types: jfdName :: Lens' JobFlowDetail Text
- Network.AWS.EMR.Types: jfdServiceRole :: Lens' JobFlowDetail (Maybe Text)
- Network.AWS.EMR.Types: jfdSteps :: Lens' JobFlowDetail [StepDetail]
- Network.AWS.EMR.Types: jfdSupportedProducts :: Lens' JobFlowDetail [Text]
- Network.AWS.EMR.Types: jfdVisibleToAllUsers :: Lens' JobFlowDetail (Maybe Bool)
- Network.AWS.EMR.Types: jfesdCreationDateTime :: Lens' JobFlowExecutionStatusDetail UTCTime
- Network.AWS.EMR.Types: jfesdEndDateTime :: Lens' JobFlowExecutionStatusDetail (Maybe UTCTime)
- Network.AWS.EMR.Types: jfesdLastStateChangeReason :: Lens' JobFlowExecutionStatusDetail (Maybe Text)
- Network.AWS.EMR.Types: jfesdReadyDateTime :: Lens' JobFlowExecutionStatusDetail (Maybe UTCTime)
- Network.AWS.EMR.Types: jfesdStartDateTime :: Lens' JobFlowExecutionStatusDetail (Maybe UTCTime)
- Network.AWS.EMR.Types: jfesdState :: Lens' JobFlowExecutionStatusDetail JobFlowExecutionState
- Network.AWS.EMR.Types: jficEc2KeyName :: Lens' JobFlowInstancesConfig (Maybe Text)
- Network.AWS.EMR.Types: jficEc2SubnetId :: Lens' JobFlowInstancesConfig (Maybe Text)
- Network.AWS.EMR.Types: jfidEc2KeyName :: Lens' JobFlowInstancesDetail (Maybe Text)
- Network.AWS.EMR.Types: jfidEc2SubnetId :: Lens' JobFlowInstancesDetail (Maybe Text)
- Network.AWS.EMR.Types: jfidHadoopVersion :: Lens' JobFlowInstancesDetail (Maybe Text)
- Network.AWS.EMR.Types: jfidInstanceCount :: Lens' JobFlowInstancesDetail Int
- Network.AWS.EMR.Types: jfidInstanceGroups :: Lens' JobFlowInstancesDetail [InstanceGroupDetail]
- Network.AWS.EMR.Types: jfidKeepJobFlowAliveWhenNoSteps :: Lens' JobFlowInstancesDetail (Maybe Bool)
- Network.AWS.EMR.Types: jfidMasterInstanceId :: Lens' JobFlowInstancesDetail (Maybe Text)
- Network.AWS.EMR.Types: jfidMasterInstanceType :: Lens' JobFlowInstancesDetail Text
- Network.AWS.EMR.Types: jfidMasterPublicDnsName :: Lens' JobFlowInstancesDetail (Maybe Text)
- Network.AWS.EMR.Types: jfidNormalizedInstanceHours :: Lens' JobFlowInstancesDetail (Maybe Int)
- Network.AWS.EMR.Types: jfidPlacement :: Lens' JobFlowInstancesDetail (Maybe PlacementType)
- Network.AWS.EMR.Types: jfidSlaveInstanceType :: Lens' JobFlowInstancesDetail Text
- Network.AWS.EMR.Types: jfidTerminationProtected :: Lens' JobFlowInstancesDetail (Maybe Bool)
- Network.AWS.EMR.Types: jobFlowDetail :: Text -> Text -> JobFlowExecutionStatusDetail -> JobFlowInstancesDetail -> JobFlowDetail
- Network.AWS.EMR.Types: jobFlowExecutionStatusDetail :: JobFlowExecutionState -> UTCTime -> JobFlowExecutionStatusDetail
- Network.AWS.EMR.Types: jobFlowInstancesDetail :: Text -> Text -> Int -> JobFlowInstancesDetail
- Network.AWS.EMR.Types: scHadoopJarStep :: Lens' StepConfig HadoopJarStepConfig
- Network.AWS.EMR.Types: sdExecutionStatusDetail :: Lens' StepDetail StepExecutionStatusDetail
- Network.AWS.EMR.Types: sdStepConfig :: Lens' StepDetail StepConfig
- Network.AWS.EMR.Types: sesdCreationDateTime :: Lens' StepExecutionStatusDetail UTCTime
- Network.AWS.EMR.Types: sesdEndDateTime :: Lens' StepExecutionStatusDetail (Maybe UTCTime)
- Network.AWS.EMR.Types: sesdLastStateChangeReason :: Lens' StepExecutionStatusDetail (Maybe Text)
- Network.AWS.EMR.Types: sesdStartDateTime :: Lens' StepExecutionStatusDetail (Maybe UTCTime)
- Network.AWS.EMR.Types: sesdState :: Lens' StepExecutionStatusDetail StepExecutionState
- Network.AWS.EMR.Types: stepDetail :: StepConfig -> StepExecutionStatusDetail -> StepDetail
- Network.AWS.EMR.Types: stepExecutionStatusDetail :: StepExecutionState -> UTCTime -> StepExecutionStatusDetail
+ Network.AWS.EMR: AllStepsCompleted :: ClusterStateChangeReasonCode
+ Network.AWS.EMR: BootstrapFailure :: ClusterStateChangeReasonCode
+ Network.AWS.EMR: Bootstrapping :: ClusterState
+ Network.AWS.EMR: CancelAndWait :: ActionOnFailure
+ Network.AWS.EMR: Continue :: ActionOnFailure
+ Network.AWS.EMR: Core :: InstanceRoleType
+ Network.AWS.EMR: IGSArrested :: InstanceGroupState
+ Network.AWS.EMR: IGSBootstrapping :: InstanceGroupState
+ Network.AWS.EMR: IGSCRCClusterTerminated :: InstanceGroupStateChangeReasonCode
+ Network.AWS.EMR: IGSCRCInstanceFailure :: InstanceGroupStateChangeReasonCode
+ Network.AWS.EMR: IGSCRCInternalError :: InstanceGroupStateChangeReasonCode
+ Network.AWS.EMR: IGSCRCValidationError :: InstanceGroupStateChangeReasonCode
+ Network.AWS.EMR: IGSEnded :: InstanceGroupState
+ Network.AWS.EMR: IGSProvisioning :: InstanceGroupState
+ Network.AWS.EMR: IGSResizing :: InstanceGroupState
+ Network.AWS.EMR: IGSRunning :: InstanceGroupState
+ Network.AWS.EMR: IGSShuttingDown :: InstanceGroupState
+ Network.AWS.EMR: IGSSuspended :: InstanceGroupState
+ Network.AWS.EMR: IGSTerminated :: InstanceGroupState
+ Network.AWS.EMR: IGSTerminating :: InstanceGroupState
+ Network.AWS.EMR: IGTCore :: InstanceGroupType
+ Network.AWS.EMR: IGTMaster :: InstanceGroupType
+ Network.AWS.EMR: IGTTask :: InstanceGroupType
+ Network.AWS.EMR: ISAwaitingFulfillment :: InstanceState
+ Network.AWS.EMR: ISBootstrapping :: InstanceState
+ Network.AWS.EMR: ISCRCBootstrapFailure :: InstanceStateChangeReasonCode
+ Network.AWS.EMR: ISCRCClusterTerminated :: InstanceStateChangeReasonCode
+ Network.AWS.EMR: ISCRCInstanceFailure :: InstanceStateChangeReasonCode
+ Network.AWS.EMR: ISCRCInternalError :: InstanceStateChangeReasonCode
+ Network.AWS.EMR: ISCRCValidationError :: InstanceStateChangeReasonCode
+ Network.AWS.EMR: ISProvisioning :: InstanceState
+ Network.AWS.EMR: ISRunning :: InstanceState
+ Network.AWS.EMR: ISTerminated :: InstanceState
+ Network.AWS.EMR: InstanceFailure :: ClusterStateChangeReasonCode
+ Network.AWS.EMR: InternalError :: ClusterStateChangeReasonCode
+ Network.AWS.EMR: Master :: InstanceRoleType
+ Network.AWS.EMR: None :: StepStateChangeReasonCode
+ Network.AWS.EMR: OnDemand :: MarketType
+ Network.AWS.EMR: Running :: ClusterState
+ Network.AWS.EMR: SSCancelled :: StepState
+ Network.AWS.EMR: SSCompleted :: StepState
+ Network.AWS.EMR: SSFailed :: StepState
+ Network.AWS.EMR: SSInterrupted :: StepState
+ Network.AWS.EMR: SSPending :: StepState
+ Network.AWS.EMR: SSRunning :: StepState
+ Network.AWS.EMR: Spot :: MarketType
+ Network.AWS.EMR: Starting :: ClusterState
+ Network.AWS.EMR: StepFailure :: ClusterStateChangeReasonCode
+ Network.AWS.EMR: Task :: InstanceRoleType
+ Network.AWS.EMR: TerminateCluster :: ActionOnFailure
+ Network.AWS.EMR: TerminateJobFlow :: ActionOnFailure
+ Network.AWS.EMR: Terminated :: ClusterState
+ Network.AWS.EMR: TerminatedWithErrors :: ClusterState
+ Network.AWS.EMR: Terminating :: ClusterState
+ Network.AWS.EMR: UserRequest :: ClusterStateChangeReasonCode
+ Network.AWS.EMR: ValidationError :: ClusterStateChangeReasonCode
+ Network.AWS.EMR: Waiting :: ClusterState
+ Network.AWS.EMR: _InternalServerError :: AsError a => Getting (First ServiceError) a ServiceError
+ Network.AWS.EMR: _InternalServerException :: AsError a => Getting (First ServiceError) a ServiceError
+ Network.AWS.EMR: _InvalidRequestException :: AsError a => Getting (First ServiceError) a ServiceError
+ Network.AWS.EMR: aAdditionalInfo :: Lens' Application (HashMap Text Text)
+ Network.AWS.EMR: aArgs :: Lens' Application [Text]
+ Network.AWS.EMR: aName :: Lens' Application (Maybe Text)
+ Network.AWS.EMR: aVersion :: Lens' Application (Maybe Text)
+ Network.AWS.EMR: application :: Application
+ Network.AWS.EMR: bacName :: Lens' BootstrapActionConfig Text
+ Network.AWS.EMR: bacScriptBootstrapAction :: Lens' BootstrapActionConfig ScriptBootstrapActionConfig
+ Network.AWS.EMR: bootstrapActionConfig :: Text -> ScriptBootstrapActionConfig -> BootstrapActionConfig
+ Network.AWS.EMR: cArgs :: Lens' Command [Text]
+ Network.AWS.EMR: cClassification :: Lens' Configuration (Maybe Text)
+ Network.AWS.EMR: cConfigurations :: Lens' Configuration [Configuration]
+ Network.AWS.EMR: cName :: Lens' Command (Maybe Text)
+ Network.AWS.EMR: cProperties :: Lens' Configuration (HashMap Text Text)
+ Network.AWS.EMR: cScriptPath :: Lens' Command (Maybe Text)
+ Network.AWS.EMR: cluApplications :: Lens' Cluster [Application]
+ Network.AWS.EMR: cluAutoTerminate :: Lens' Cluster (Maybe Bool)
+ Network.AWS.EMR: cluConfigurations :: Lens' Cluster [Configuration]
+ Network.AWS.EMR: cluEC2InstanceAttributes :: Lens' Cluster (Maybe EC2InstanceAttributes)
+ Network.AWS.EMR: cluId :: Lens' Cluster Text
+ Network.AWS.EMR: cluLogURI :: Lens' Cluster (Maybe Text)
+ Network.AWS.EMR: cluMasterPublicDNSName :: Lens' Cluster (Maybe Text)
+ Network.AWS.EMR: cluName :: Lens' Cluster Text
+ Network.AWS.EMR: cluNormalizedInstanceHours :: Lens' Cluster (Maybe Int)
+ Network.AWS.EMR: cluReleaseLabel :: Lens' Cluster (Maybe Text)
+ Network.AWS.EMR: cluRequestedAMIVersion :: Lens' Cluster (Maybe Text)
+ Network.AWS.EMR: cluRunningAMIVersion :: Lens' Cluster (Maybe Text)
+ Network.AWS.EMR: cluServiceRole :: Lens' Cluster (Maybe Text)
+ Network.AWS.EMR: cluStatus :: Lens' Cluster ClusterStatus
+ Network.AWS.EMR: cluTags :: Lens' Cluster [Tag]
+ Network.AWS.EMR: cluTerminationProtected :: Lens' Cluster (Maybe Bool)
+ Network.AWS.EMR: cluVisibleToAllUsers :: Lens' Cluster (Maybe Bool)
+ Network.AWS.EMR: cluster :: Text -> Text -> ClusterStatus -> Cluster
+ Network.AWS.EMR: clusterRunning :: Wait DescribeCluster
+ Network.AWS.EMR: clusterStateChangeReason :: ClusterStateChangeReason
+ Network.AWS.EMR: clusterStatus :: ClusterStatus
+ Network.AWS.EMR: clusterSummary :: ClusterSummary
+ Network.AWS.EMR: clusterTimeline :: ClusterTimeline
+ Network.AWS.EMR: command :: Command
+ Network.AWS.EMR: configuration :: Configuration
+ Network.AWS.EMR: csId :: Lens' ClusterSummary (Maybe Text)
+ Network.AWS.EMR: csName :: Lens' ClusterSummary (Maybe Text)
+ Network.AWS.EMR: csNormalizedInstanceHours :: Lens' ClusterSummary (Maybe Int)
+ Network.AWS.EMR: csState :: Lens' ClusterStatus (Maybe ClusterState)
+ Network.AWS.EMR: csStateChangeReason :: Lens' ClusterStatus (Maybe ClusterStateChangeReason)
+ Network.AWS.EMR: csStatus :: Lens' ClusterSummary (Maybe ClusterStatus)
+ Network.AWS.EMR: csTimeline :: Lens' ClusterStatus (Maybe ClusterTimeline)
+ Network.AWS.EMR: cscrCode :: Lens' ClusterStateChangeReason (Maybe ClusterStateChangeReasonCode)
+ Network.AWS.EMR: cscrMessage :: Lens' ClusterStateChangeReason (Maybe Text)
+ Network.AWS.EMR: ctCreationDateTime :: Lens' ClusterTimeline (Maybe UTCTime)
+ Network.AWS.EMR: ctEndDateTime :: Lens' ClusterTimeline (Maybe UTCTime)
+ Network.AWS.EMR: ctReadyDateTime :: Lens' ClusterTimeline (Maybe UTCTime)
+ Network.AWS.EMR: data ActionOnFailure
+ Network.AWS.EMR: data Application
+ Network.AWS.EMR: data BootstrapActionConfig
+ Network.AWS.EMR: data Cluster
+ Network.AWS.EMR: data ClusterState
+ Network.AWS.EMR: data ClusterStateChangeReason
+ Network.AWS.EMR: data ClusterStateChangeReasonCode
+ Network.AWS.EMR: data ClusterStatus
+ Network.AWS.EMR: data ClusterSummary
+ Network.AWS.EMR: data ClusterTimeline
+ Network.AWS.EMR: data Command
+ Network.AWS.EMR: data Configuration
+ Network.AWS.EMR: data EC2InstanceAttributes
+ Network.AWS.EMR: data EMR
+ Network.AWS.EMR: data HadoopJARStepConfig
+ Network.AWS.EMR: data HadoopStepConfig
+ Network.AWS.EMR: data Instance
+ Network.AWS.EMR: data InstanceGroup
+ Network.AWS.EMR: data InstanceGroupConfig
+ Network.AWS.EMR: data InstanceGroupModifyConfig
+ Network.AWS.EMR: data InstanceGroupState
+ Network.AWS.EMR: data InstanceGroupStateChangeReason
+ Network.AWS.EMR: data InstanceGroupStateChangeReasonCode
+ Network.AWS.EMR: data InstanceGroupStatus
+ Network.AWS.EMR: data InstanceGroupTimeline
+ Network.AWS.EMR: data InstanceGroupType
+ Network.AWS.EMR: data InstanceRoleType
+ Network.AWS.EMR: data InstanceState
+ Network.AWS.EMR: data InstanceStateChangeReason
+ Network.AWS.EMR: data InstanceStateChangeReasonCode
+ Network.AWS.EMR: data InstanceStatus
+ Network.AWS.EMR: data InstanceTimeline
+ Network.AWS.EMR: data JobFlowInstancesConfig
+ Network.AWS.EMR: data KeyValue
+ Network.AWS.EMR: data MarketType
+ Network.AWS.EMR: data PlacementType
+ Network.AWS.EMR: data ScriptBootstrapActionConfig
+ Network.AWS.EMR: data Step
+ Network.AWS.EMR: data StepConfig
+ Network.AWS.EMR: data StepState
+ Network.AWS.EMR: data StepStateChangeReason
+ Network.AWS.EMR: data StepStateChangeReasonCode
+ Network.AWS.EMR: data StepStatus
+ Network.AWS.EMR: data StepSummary
+ Network.AWS.EMR: data StepTimeline
+ Network.AWS.EMR: data SupportedProductConfig
+ Network.AWS.EMR: data Tag
+ Network.AWS.EMR: ec2InstanceAttributes :: EC2InstanceAttributes
+ Network.AWS.EMR: eiaAdditionalMasterSecurityGroups :: Lens' EC2InstanceAttributes [Text]
+ Network.AWS.EMR: eiaAdditionalSlaveSecurityGroups :: Lens' EC2InstanceAttributes [Text]
+ Network.AWS.EMR: eiaEC2AvailabilityZone :: Lens' EC2InstanceAttributes (Maybe Text)
+ Network.AWS.EMR: eiaEC2KeyName :: Lens' EC2InstanceAttributes (Maybe Text)
+ Network.AWS.EMR: eiaEC2SubnetId :: Lens' EC2InstanceAttributes (Maybe Text)
+ Network.AWS.EMR: eiaEmrManagedMasterSecurityGroup :: Lens' EC2InstanceAttributes (Maybe Text)
+ Network.AWS.EMR: eiaEmrManagedSlaveSecurityGroup :: Lens' EC2InstanceAttributes (Maybe Text)
+ Network.AWS.EMR: eiaIAMInstanceProfile :: Lens' EC2InstanceAttributes (Maybe Text)
+ Network.AWS.EMR: hadoopJARStepConfig :: Text -> HadoopJARStepConfig
+ Network.AWS.EMR: hadoopStepConfig :: HadoopStepConfig
+ Network.AWS.EMR: hjscArgs :: Lens' HadoopJARStepConfig [Text]
+ Network.AWS.EMR: hjscJAR :: Lens' HadoopJARStepConfig Text
+ Network.AWS.EMR: hjscMainClass :: Lens' HadoopJARStepConfig (Maybe Text)
+ Network.AWS.EMR: hjscProperties :: Lens' HadoopJARStepConfig [KeyValue]
+ Network.AWS.EMR: hscArgs :: Lens' HadoopStepConfig [Text]
+ Network.AWS.EMR: hscJAR :: Lens' HadoopStepConfig (Maybe Text)
+ Network.AWS.EMR: hscMainClass :: Lens' HadoopStepConfig (Maybe Text)
+ Network.AWS.EMR: hscProperties :: Lens' HadoopStepConfig (HashMap Text Text)
+ Network.AWS.EMR: iEC2InstanceId :: Lens' Instance (Maybe Text)
+ Network.AWS.EMR: iId :: Lens' Instance (Maybe Text)
+ Network.AWS.EMR: iPrivateDNSName :: Lens' Instance (Maybe Text)
+ Network.AWS.EMR: iPrivateIPAddress :: Lens' Instance (Maybe Text)
+ Network.AWS.EMR: iPublicDNSName :: Lens' Instance (Maybe Text)
+ Network.AWS.EMR: iPublicIPAddress :: Lens' Instance (Maybe Text)
+ Network.AWS.EMR: iStatus :: Lens' Instance (Maybe InstanceStatus)
+ Network.AWS.EMR: igBidPrice :: Lens' InstanceGroup (Maybe Text)
+ Network.AWS.EMR: igConfigurations :: Lens' InstanceGroup [Configuration]
+ Network.AWS.EMR: igId :: Lens' InstanceGroup (Maybe Text)
+ Network.AWS.EMR: igInstanceGroupType :: Lens' InstanceGroup (Maybe InstanceGroupType)
+ Network.AWS.EMR: igInstanceType :: Lens' InstanceGroup (Maybe Text)
+ Network.AWS.EMR: igMarket :: Lens' InstanceGroup (Maybe MarketType)
+ Network.AWS.EMR: igName :: Lens' InstanceGroup (Maybe Text)
+ Network.AWS.EMR: igRequestedInstanceCount :: Lens' InstanceGroup (Maybe Int)
+ Network.AWS.EMR: igRunningInstanceCount :: Lens' InstanceGroup (Maybe Int)
+ Network.AWS.EMR: igStatus :: Lens' InstanceGroup (Maybe InstanceGroupStatus)
+ Network.AWS.EMR: igcBidPrice :: Lens' InstanceGroupConfig (Maybe Text)
+ Network.AWS.EMR: igcConfigurations :: Lens' InstanceGroupConfig [Configuration]
+ Network.AWS.EMR: igcInstanceCount :: Lens' InstanceGroupConfig Int
+ Network.AWS.EMR: igcInstanceRole :: Lens' InstanceGroupConfig InstanceRoleType
+ Network.AWS.EMR: igcInstanceType :: Lens' InstanceGroupConfig Text
+ Network.AWS.EMR: igcMarket :: Lens' InstanceGroupConfig (Maybe MarketType)
+ Network.AWS.EMR: igcName :: Lens' InstanceGroupConfig (Maybe Text)
+ Network.AWS.EMR: igmcEC2InstanceIdsToTerminate :: Lens' InstanceGroupModifyConfig [Text]
+ Network.AWS.EMR: igmcInstanceCount :: Lens' InstanceGroupModifyConfig (Maybe Int)
+ Network.AWS.EMR: igmcInstanceGroupId :: Lens' InstanceGroupModifyConfig Text
+ Network.AWS.EMR: igsState :: Lens' InstanceGroupStatus (Maybe InstanceGroupState)
+ Network.AWS.EMR: igsStateChangeReason :: Lens' InstanceGroupStatus (Maybe InstanceGroupStateChangeReason)
+ Network.AWS.EMR: igsTimeline :: Lens' InstanceGroupStatus (Maybe InstanceGroupTimeline)
+ Network.AWS.EMR: igscrCode :: Lens' InstanceGroupStateChangeReason (Maybe InstanceGroupStateChangeReasonCode)
+ Network.AWS.EMR: igscrMessage :: Lens' InstanceGroupStateChangeReason (Maybe Text)
+ Network.AWS.EMR: igtCreationDateTime :: Lens' InstanceGroupTimeline (Maybe UTCTime)
+ Network.AWS.EMR: igtEndDateTime :: Lens' InstanceGroupTimeline (Maybe UTCTime)
+ Network.AWS.EMR: igtReadyDateTime :: Lens' InstanceGroupTimeline (Maybe UTCTime)
+ Network.AWS.EMR: instance' :: Instance
+ Network.AWS.EMR: instanceGroup :: InstanceGroup
+ Network.AWS.EMR: instanceGroupConfig :: InstanceRoleType -> Text -> Int -> InstanceGroupConfig
+ Network.AWS.EMR: instanceGroupModifyConfig :: Text -> InstanceGroupModifyConfig
+ Network.AWS.EMR: instanceGroupStateChangeReason :: InstanceGroupStateChangeReason
+ Network.AWS.EMR: instanceGroupStatus :: InstanceGroupStatus
+ Network.AWS.EMR: instanceGroupTimeline :: InstanceGroupTimeline
+ Network.AWS.EMR: instanceStateChangeReason :: InstanceStateChangeReason
+ Network.AWS.EMR: instanceStatus :: InstanceStatus
+ Network.AWS.EMR: instanceTimeline :: InstanceTimeline
+ Network.AWS.EMR: isState :: Lens' InstanceStatus (Maybe InstanceState)
+ Network.AWS.EMR: isStateChangeReason :: Lens' InstanceStatus (Maybe InstanceStateChangeReason)
+ Network.AWS.EMR: isTimeline :: Lens' InstanceStatus (Maybe InstanceTimeline)
+ Network.AWS.EMR: iscrCode :: Lens' InstanceStateChangeReason (Maybe InstanceStateChangeReasonCode)
+ Network.AWS.EMR: iscrMessage :: Lens' InstanceStateChangeReason (Maybe Text)
+ Network.AWS.EMR: itCreationDateTime :: Lens' InstanceTimeline (Maybe UTCTime)
+ Network.AWS.EMR: itEndDateTime :: Lens' InstanceTimeline (Maybe UTCTime)
+ Network.AWS.EMR: itReadyDateTime :: Lens' InstanceTimeline (Maybe UTCTime)
+ Network.AWS.EMR: jficAdditionalMasterSecurityGroups :: Lens' JobFlowInstancesConfig [Text]
+ Network.AWS.EMR: jficAdditionalSlaveSecurityGroups :: Lens' JobFlowInstancesConfig [Text]
+ Network.AWS.EMR: jficEC2KeyName :: Lens' JobFlowInstancesConfig (Maybe Text)
+ Network.AWS.EMR: jficEC2SubnetId :: Lens' JobFlowInstancesConfig (Maybe Text)
+ Network.AWS.EMR: jficEmrManagedMasterSecurityGroup :: Lens' JobFlowInstancesConfig (Maybe Text)
+ Network.AWS.EMR: jficEmrManagedSlaveSecurityGroup :: Lens' JobFlowInstancesConfig (Maybe Text)
+ Network.AWS.EMR: jficHadoopVersion :: Lens' JobFlowInstancesConfig (Maybe Text)
+ Network.AWS.EMR: jficInstanceCount :: Lens' JobFlowInstancesConfig (Maybe Int)
+ Network.AWS.EMR: jficInstanceGroups :: Lens' JobFlowInstancesConfig [InstanceGroupConfig]
+ Network.AWS.EMR: jficKeepJobFlowAliveWhenNoSteps :: Lens' JobFlowInstancesConfig (Maybe Bool)
+ Network.AWS.EMR: jficMasterInstanceType :: Lens' JobFlowInstancesConfig (Maybe Text)
+ Network.AWS.EMR: jficPlacement :: Lens' JobFlowInstancesConfig (Maybe PlacementType)
+ Network.AWS.EMR: jficSlaveInstanceType :: Lens' JobFlowInstancesConfig (Maybe Text)
+ Network.AWS.EMR: jficTerminationProtected :: Lens' JobFlowInstancesConfig (Maybe Bool)
+ Network.AWS.EMR: jobFlowInstancesConfig :: JobFlowInstancesConfig
+ Network.AWS.EMR: keyValue :: KeyValue
+ Network.AWS.EMR: kvKey :: Lens' KeyValue (Maybe Text)
+ Network.AWS.EMR: kvValue :: Lens' KeyValue (Maybe Text)
+ Network.AWS.EMR: placementType :: Text -> PlacementType
+ Network.AWS.EMR: ptAvailabilityZone :: Lens' PlacementType Text
+ Network.AWS.EMR: sActionOnFailure :: Lens' Step (Maybe ActionOnFailure)
+ Network.AWS.EMR: sConfig :: Lens' Step (Maybe HadoopStepConfig)
+ Network.AWS.EMR: sId :: Lens' Step (Maybe Text)
+ Network.AWS.EMR: sName :: Lens' Step (Maybe Text)
+ Network.AWS.EMR: sStatus :: Lens' Step (Maybe StepStatus)
+ Network.AWS.EMR: sbacArgs :: Lens' ScriptBootstrapActionConfig [Text]
+ Network.AWS.EMR: sbacPath :: Lens' ScriptBootstrapActionConfig Text
+ Network.AWS.EMR: scActionOnFailure :: Lens' StepConfig (Maybe ActionOnFailure)
+ Network.AWS.EMR: scHadoopJARStep :: Lens' StepConfig HadoopJARStepConfig
+ Network.AWS.EMR: scName :: Lens' StepConfig Text
+ Network.AWS.EMR: scriptBootstrapActionConfig :: Text -> ScriptBootstrapActionConfig
+ Network.AWS.EMR: spcArgs :: Lens' SupportedProductConfig [Text]
+ Network.AWS.EMR: spcName :: Lens' SupportedProductConfig (Maybe Text)
+ Network.AWS.EMR: ssActionOnFailure :: Lens' StepSummary (Maybe ActionOnFailure)
+ Network.AWS.EMR: ssConfig :: Lens' StepSummary (Maybe HadoopStepConfig)
+ Network.AWS.EMR: ssId :: Lens' StepSummary (Maybe Text)
+ Network.AWS.EMR: ssName :: Lens' StepSummary (Maybe Text)
+ Network.AWS.EMR: ssState :: Lens' StepStatus (Maybe StepState)
+ Network.AWS.EMR: ssStateChangeReason :: Lens' StepStatus (Maybe StepStateChangeReason)
+ Network.AWS.EMR: ssStatus :: Lens' StepSummary (Maybe StepStatus)
+ Network.AWS.EMR: ssTimeline :: Lens' StepStatus (Maybe StepTimeline)
+ Network.AWS.EMR: sscrCode :: Lens' StepStateChangeReason (Maybe StepStateChangeReasonCode)
+ Network.AWS.EMR: sscrMessage :: Lens' StepStateChangeReason (Maybe Text)
+ Network.AWS.EMR: stCreationDateTime :: Lens' StepTimeline (Maybe UTCTime)
+ Network.AWS.EMR: stEndDateTime :: Lens' StepTimeline (Maybe UTCTime)
+ Network.AWS.EMR: stStartDateTime :: Lens' StepTimeline (Maybe UTCTime)
+ Network.AWS.EMR: step :: Step
+ Network.AWS.EMR: stepConfig :: Text -> HadoopJARStepConfig -> StepConfig
+ Network.AWS.EMR: stepStateChangeReason :: StepStateChangeReason
+ Network.AWS.EMR: stepStatus :: StepStatus
+ Network.AWS.EMR: stepSummary :: StepSummary
+ Network.AWS.EMR: stepTimeline :: StepTimeline
+ Network.AWS.EMR: supportedProductConfig :: SupportedProductConfig
+ Network.AWS.EMR: tag :: Tag
+ Network.AWS.EMR: tagKey :: Lens' Tag (Maybe Text)
+ Network.AWS.EMR: tagValue :: Lens' Tag (Maybe Text)
+ Network.AWS.EMR.AddInstanceGroups: aigrsInstanceGroupIds :: Lens' AddInstanceGroupsResponse [Text]
+ Network.AWS.EMR.AddInstanceGroups: aigrsJobFlowId :: Lens' AddInstanceGroupsResponse (Maybe Text)
+ Network.AWS.EMR.AddInstanceGroups: aigrsStatus :: Lens' AddInstanceGroupsResponse Int
+ Network.AWS.EMR.AddInstanceGroups: instance Constructor C1_0AddInstanceGroups
+ Network.AWS.EMR.AddInstanceGroups: instance Constructor C1_0AddInstanceGroupsResponse
+ Network.AWS.EMR.AddInstanceGroups: instance Data AddInstanceGroups
+ Network.AWS.EMR.AddInstanceGroups: instance Data AddInstanceGroupsResponse
+ Network.AWS.EMR.AddInstanceGroups: instance Datatype D1AddInstanceGroups
+ Network.AWS.EMR.AddInstanceGroups: instance Datatype D1AddInstanceGroupsResponse
+ Network.AWS.EMR.AddInstanceGroups: instance Generic AddInstanceGroups
+ Network.AWS.EMR.AddInstanceGroups: instance Generic AddInstanceGroupsResponse
+ Network.AWS.EMR.AddInstanceGroups: instance Selector S1_0_0AddInstanceGroups
+ Network.AWS.EMR.AddInstanceGroups: instance Selector S1_0_0AddInstanceGroupsResponse
+ Network.AWS.EMR.AddInstanceGroups: instance Selector S1_0_1AddInstanceGroups
+ Network.AWS.EMR.AddInstanceGroups: instance Selector S1_0_1AddInstanceGroupsResponse
+ Network.AWS.EMR.AddInstanceGroups: instance Selector S1_0_2AddInstanceGroupsResponse
+ Network.AWS.EMR.AddInstanceGroups: instance Typeable AddInstanceGroups
+ Network.AWS.EMR.AddInstanceGroups: instance Typeable AddInstanceGroupsResponse
+ Network.AWS.EMR.AddJobFlowSteps: ajfsrsStatus :: Lens' AddJobFlowStepsResponse Int
+ Network.AWS.EMR.AddJobFlowSteps: ajfsrsStepIds :: Lens' AddJobFlowStepsResponse [Text]
+ Network.AWS.EMR.AddJobFlowSteps: instance Constructor C1_0AddJobFlowSteps
+ Network.AWS.EMR.AddJobFlowSteps: instance Constructor C1_0AddJobFlowStepsResponse
+ Network.AWS.EMR.AddJobFlowSteps: instance Data AddJobFlowSteps
+ Network.AWS.EMR.AddJobFlowSteps: instance Data AddJobFlowStepsResponse
+ Network.AWS.EMR.AddJobFlowSteps: instance Datatype D1AddJobFlowSteps
+ Network.AWS.EMR.AddJobFlowSteps: instance Datatype D1AddJobFlowStepsResponse
+ Network.AWS.EMR.AddJobFlowSteps: instance Generic AddJobFlowSteps
+ Network.AWS.EMR.AddJobFlowSteps: instance Generic AddJobFlowStepsResponse
+ Network.AWS.EMR.AddJobFlowSteps: instance Selector S1_0_0AddJobFlowSteps
+ Network.AWS.EMR.AddJobFlowSteps: instance Selector S1_0_0AddJobFlowStepsResponse
+ Network.AWS.EMR.AddJobFlowSteps: instance Selector S1_0_1AddJobFlowSteps
+ Network.AWS.EMR.AddJobFlowSteps: instance Selector S1_0_1AddJobFlowStepsResponse
+ Network.AWS.EMR.AddJobFlowSteps: instance Typeable AddJobFlowSteps
+ Network.AWS.EMR.AddJobFlowSteps: instance Typeable AddJobFlowStepsResponse
+ Network.AWS.EMR.AddTags: atrsStatus :: Lens' AddTagsResponse Int
+ Network.AWS.EMR.AddTags: instance Constructor C1_0AddTags
+ Network.AWS.EMR.AddTags: instance Data AddTags
+ Network.AWS.EMR.AddTags: instance Data AddTagsResponse
+ Network.AWS.EMR.AddTags: instance Datatype D1AddTags
+ Network.AWS.EMR.AddTags: instance Generic AddTags
+ Network.AWS.EMR.AddTags: instance Selector S1_0_0AddTags
+ Network.AWS.EMR.AddTags: instance Selector S1_0_0AddTagsResponse
+ Network.AWS.EMR.AddTags: instance Selector S1_0_1AddTags
+ Network.AWS.EMR.AddTags: instance Typeable AddTags
+ Network.AWS.EMR.AddTags: instance Typeable AddTagsResponse
+ Network.AWS.EMR.DescribeCluster: dcrsCluster :: Lens' DescribeClusterResponse Cluster
+ Network.AWS.EMR.DescribeCluster: dcrsStatus :: Lens' DescribeClusterResponse Int
+ Network.AWS.EMR.DescribeCluster: instance Constructor C1_0DescribeCluster
+ Network.AWS.EMR.DescribeCluster: instance Constructor C1_0DescribeClusterResponse
+ Network.AWS.EMR.DescribeCluster: instance Data DescribeCluster
+ Network.AWS.EMR.DescribeCluster: instance Data DescribeClusterResponse
+ Network.AWS.EMR.DescribeCluster: instance Datatype D1DescribeCluster
+ Network.AWS.EMR.DescribeCluster: instance Datatype D1DescribeClusterResponse
+ Network.AWS.EMR.DescribeCluster: instance Generic DescribeCluster
+ Network.AWS.EMR.DescribeCluster: instance Generic DescribeClusterResponse
+ Network.AWS.EMR.DescribeCluster: instance Selector S1_0_0DescribeCluster
+ Network.AWS.EMR.DescribeCluster: instance Selector S1_0_0DescribeClusterResponse
+ Network.AWS.EMR.DescribeCluster: instance Selector S1_0_1DescribeClusterResponse
+ Network.AWS.EMR.DescribeCluster: instance Typeable DescribeCluster
+ Network.AWS.EMR.DescribeCluster: instance Typeable DescribeClusterResponse
+ Network.AWS.EMR.DescribeStep: dsrsStatus :: Lens' DescribeStepResponse Int
+ Network.AWS.EMR.DescribeStep: dsrsStep :: Lens' DescribeStepResponse (Maybe Step)
+ Network.AWS.EMR.DescribeStep: instance Constructor C1_0DescribeStep
+ Network.AWS.EMR.DescribeStep: instance Constructor C1_0DescribeStepResponse
+ Network.AWS.EMR.DescribeStep: instance Data DescribeStep
+ Network.AWS.EMR.DescribeStep: instance Data DescribeStepResponse
+ Network.AWS.EMR.DescribeStep: instance Datatype D1DescribeStep
+ Network.AWS.EMR.DescribeStep: instance Datatype D1DescribeStepResponse
+ Network.AWS.EMR.DescribeStep: instance Generic DescribeStep
+ Network.AWS.EMR.DescribeStep: instance Generic DescribeStepResponse
+ Network.AWS.EMR.DescribeStep: instance Selector S1_0_0DescribeStep
+ Network.AWS.EMR.DescribeStep: instance Selector S1_0_0DescribeStepResponse
+ Network.AWS.EMR.DescribeStep: instance Selector S1_0_1DescribeStep
+ Network.AWS.EMR.DescribeStep: instance Selector S1_0_1DescribeStepResponse
+ Network.AWS.EMR.DescribeStep: instance Typeable DescribeStep
+ Network.AWS.EMR.DescribeStep: instance Typeable DescribeStepResponse
+ Network.AWS.EMR.ListBootstrapActions: instance Constructor C1_0ListBootstrapActions
+ Network.AWS.EMR.ListBootstrapActions: instance Constructor C1_0ListBootstrapActionsResponse
+ Network.AWS.EMR.ListBootstrapActions: instance Data ListBootstrapActions
+ Network.AWS.EMR.ListBootstrapActions: instance Data ListBootstrapActionsResponse
+ Network.AWS.EMR.ListBootstrapActions: instance Datatype D1ListBootstrapActions
+ Network.AWS.EMR.ListBootstrapActions: instance Datatype D1ListBootstrapActionsResponse
+ Network.AWS.EMR.ListBootstrapActions: instance Generic ListBootstrapActions
+ Network.AWS.EMR.ListBootstrapActions: instance Generic ListBootstrapActionsResponse
+ Network.AWS.EMR.ListBootstrapActions: instance Selector S1_0_0ListBootstrapActions
+ Network.AWS.EMR.ListBootstrapActions: instance Selector S1_0_0ListBootstrapActionsResponse
+ Network.AWS.EMR.ListBootstrapActions: instance Selector S1_0_1ListBootstrapActions
+ Network.AWS.EMR.ListBootstrapActions: instance Selector S1_0_1ListBootstrapActionsResponse
+ Network.AWS.EMR.ListBootstrapActions: instance Selector S1_0_2ListBootstrapActionsResponse
+ Network.AWS.EMR.ListBootstrapActions: instance Typeable ListBootstrapActions
+ Network.AWS.EMR.ListBootstrapActions: instance Typeable ListBootstrapActionsResponse
+ Network.AWS.EMR.ListBootstrapActions: lbarsBootstrapActions :: Lens' ListBootstrapActionsResponse [Command]
+ Network.AWS.EMR.ListBootstrapActions: lbarsMarker :: Lens' ListBootstrapActionsResponse (Maybe Text)
+ Network.AWS.EMR.ListBootstrapActions: lbarsStatus :: Lens' ListBootstrapActionsResponse Int
+ Network.AWS.EMR.ListClusters: instance Constructor C1_0ListClusters
+ Network.AWS.EMR.ListClusters: instance Constructor C1_0ListClustersResponse
+ Network.AWS.EMR.ListClusters: instance Data ListClusters
+ Network.AWS.EMR.ListClusters: instance Data ListClustersResponse
+ Network.AWS.EMR.ListClusters: instance Datatype D1ListClusters
+ Network.AWS.EMR.ListClusters: instance Datatype D1ListClustersResponse
+ Network.AWS.EMR.ListClusters: instance Generic ListClusters
+ Network.AWS.EMR.ListClusters: instance Generic ListClustersResponse
+ Network.AWS.EMR.ListClusters: instance Selector S1_0_0ListClusters
+ Network.AWS.EMR.ListClusters: instance Selector S1_0_0ListClustersResponse
+ Network.AWS.EMR.ListClusters: instance Selector S1_0_1ListClusters
+ Network.AWS.EMR.ListClusters: instance Selector S1_0_1ListClustersResponse
+ Network.AWS.EMR.ListClusters: instance Selector S1_0_2ListClusters
+ Network.AWS.EMR.ListClusters: instance Selector S1_0_2ListClustersResponse
+ Network.AWS.EMR.ListClusters: instance Selector S1_0_3ListClusters
+ Network.AWS.EMR.ListClusters: instance Typeable ListClusters
+ Network.AWS.EMR.ListClusters: instance Typeable ListClustersResponse
+ Network.AWS.EMR.ListClusters: lcrsClusters :: Lens' ListClustersResponse [ClusterSummary]
+ Network.AWS.EMR.ListClusters: lcrsMarker :: Lens' ListClustersResponse (Maybe Text)
+ Network.AWS.EMR.ListClusters: lcrsStatus :: Lens' ListClustersResponse Int
+ Network.AWS.EMR.ListInstanceGroups: instance Constructor C1_0ListInstanceGroups
+ Network.AWS.EMR.ListInstanceGroups: instance Constructor C1_0ListInstanceGroupsResponse
+ Network.AWS.EMR.ListInstanceGroups: instance Data ListInstanceGroups
+ Network.AWS.EMR.ListInstanceGroups: instance Data ListInstanceGroupsResponse
+ Network.AWS.EMR.ListInstanceGroups: instance Datatype D1ListInstanceGroups
+ Network.AWS.EMR.ListInstanceGroups: instance Datatype D1ListInstanceGroupsResponse
+ Network.AWS.EMR.ListInstanceGroups: instance Generic ListInstanceGroups
+ Network.AWS.EMR.ListInstanceGroups: instance Generic ListInstanceGroupsResponse
+ Network.AWS.EMR.ListInstanceGroups: instance Selector S1_0_0ListInstanceGroups
+ Network.AWS.EMR.ListInstanceGroups: instance Selector S1_0_0ListInstanceGroupsResponse
+ Network.AWS.EMR.ListInstanceGroups: instance Selector S1_0_1ListInstanceGroups
+ Network.AWS.EMR.ListInstanceGroups: instance Selector S1_0_1ListInstanceGroupsResponse
+ Network.AWS.EMR.ListInstanceGroups: instance Selector S1_0_2ListInstanceGroupsResponse
+ Network.AWS.EMR.ListInstanceGroups: instance Typeable ListInstanceGroups
+ Network.AWS.EMR.ListInstanceGroups: instance Typeable ListInstanceGroupsResponse
+ Network.AWS.EMR.ListInstanceGroups: ligrsInstanceGroups :: Lens' ListInstanceGroupsResponse [InstanceGroup]
+ Network.AWS.EMR.ListInstanceGroups: ligrsMarker :: Lens' ListInstanceGroupsResponse (Maybe Text)
+ Network.AWS.EMR.ListInstanceGroups: ligrsStatus :: Lens' ListInstanceGroupsResponse Int
+ Network.AWS.EMR.ListInstances: instance Constructor C1_0ListInstances
+ Network.AWS.EMR.ListInstances: instance Constructor C1_0ListInstancesResponse
+ Network.AWS.EMR.ListInstances: instance Data ListInstances
+ Network.AWS.EMR.ListInstances: instance Data ListInstancesResponse
+ Network.AWS.EMR.ListInstances: instance Datatype D1ListInstances
+ Network.AWS.EMR.ListInstances: instance Datatype D1ListInstancesResponse
+ Network.AWS.EMR.ListInstances: instance Generic ListInstances
+ Network.AWS.EMR.ListInstances: instance Generic ListInstancesResponse
+ Network.AWS.EMR.ListInstances: instance Selector S1_0_0ListInstances
+ Network.AWS.EMR.ListInstances: instance Selector S1_0_0ListInstancesResponse
+ Network.AWS.EMR.ListInstances: instance Selector S1_0_1ListInstances
+ Network.AWS.EMR.ListInstances: instance Selector S1_0_1ListInstancesResponse
+ Network.AWS.EMR.ListInstances: instance Selector S1_0_2ListInstances
+ Network.AWS.EMR.ListInstances: instance Selector S1_0_2ListInstancesResponse
+ Network.AWS.EMR.ListInstances: instance Selector S1_0_3ListInstances
+ Network.AWS.EMR.ListInstances: instance Typeable ListInstances
+ Network.AWS.EMR.ListInstances: instance Typeable ListInstancesResponse
+ Network.AWS.EMR.ListInstances: lirsInstances :: Lens' ListInstancesResponse [Instance]
+ Network.AWS.EMR.ListInstances: lirsMarker :: Lens' ListInstancesResponse (Maybe Text)
+ Network.AWS.EMR.ListInstances: lirsStatus :: Lens' ListInstancesResponse Int
+ Network.AWS.EMR.ListSteps: instance Constructor C1_0ListSteps
+ Network.AWS.EMR.ListSteps: instance Constructor C1_0ListStepsResponse
+ Network.AWS.EMR.ListSteps: instance Data ListSteps
+ Network.AWS.EMR.ListSteps: instance Data ListStepsResponse
+ Network.AWS.EMR.ListSteps: instance Datatype D1ListSteps
+ Network.AWS.EMR.ListSteps: instance Datatype D1ListStepsResponse
+ Network.AWS.EMR.ListSteps: instance Generic ListSteps
+ Network.AWS.EMR.ListSteps: instance Generic ListStepsResponse
+ Network.AWS.EMR.ListSteps: instance Selector S1_0_0ListSteps
+ Network.AWS.EMR.ListSteps: instance Selector S1_0_0ListStepsResponse
+ Network.AWS.EMR.ListSteps: instance Selector S1_0_1ListSteps
+ Network.AWS.EMR.ListSteps: instance Selector S1_0_1ListStepsResponse
+ Network.AWS.EMR.ListSteps: instance Selector S1_0_2ListSteps
+ Network.AWS.EMR.ListSteps: instance Selector S1_0_2ListStepsResponse
+ Network.AWS.EMR.ListSteps: instance Selector S1_0_3ListSteps
+ Network.AWS.EMR.ListSteps: instance Typeable ListSteps
+ Network.AWS.EMR.ListSteps: instance Typeable ListStepsResponse
+ Network.AWS.EMR.ListSteps: lsrsMarker :: Lens' ListStepsResponse (Maybe Text)
+ Network.AWS.EMR.ListSteps: lsrsStatus :: Lens' ListStepsResponse Int
+ Network.AWS.EMR.ListSteps: lsrsSteps :: Lens' ListStepsResponse [StepSummary]
+ Network.AWS.EMR.ModifyInstanceGroups: instance Constructor C1_0ModifyInstanceGroups
+ Network.AWS.EMR.ModifyInstanceGroups: instance Data ModifyInstanceGroups
+ Network.AWS.EMR.ModifyInstanceGroups: instance Data ModifyInstanceGroupsResponse
+ Network.AWS.EMR.ModifyInstanceGroups: instance Datatype D1ModifyInstanceGroups
+ Network.AWS.EMR.ModifyInstanceGroups: instance Generic ModifyInstanceGroups
+ Network.AWS.EMR.ModifyInstanceGroups: instance Selector S1_0_0ModifyInstanceGroups
+ Network.AWS.EMR.ModifyInstanceGroups: instance Typeable ModifyInstanceGroups
+ Network.AWS.EMR.ModifyInstanceGroups: instance Typeable ModifyInstanceGroupsResponse
+ Network.AWS.EMR.RemoveTags: instance Constructor C1_0RemoveTags
+ Network.AWS.EMR.RemoveTags: instance Data RemoveTags
+ Network.AWS.EMR.RemoveTags: instance Data RemoveTagsResponse
+ Network.AWS.EMR.RemoveTags: instance Datatype D1RemoveTags
+ Network.AWS.EMR.RemoveTags: instance Generic RemoveTags
+ Network.AWS.EMR.RemoveTags: instance Selector S1_0_0RemoveTags
+ Network.AWS.EMR.RemoveTags: instance Selector S1_0_0RemoveTagsResponse
+ Network.AWS.EMR.RemoveTags: instance Selector S1_0_1RemoveTags
+ Network.AWS.EMR.RemoveTags: instance Typeable RemoveTags
+ Network.AWS.EMR.RemoveTags: instance Typeable RemoveTagsResponse
+ Network.AWS.EMR.RemoveTags: rtrsStatus :: Lens' RemoveTagsResponse Int
+ Network.AWS.EMR.RunJobFlow: instance Constructor C1_0RunJobFlow
+ Network.AWS.EMR.RunJobFlow: instance Constructor C1_0RunJobFlowResponse
+ Network.AWS.EMR.RunJobFlow: instance Data RunJobFlow
+ Network.AWS.EMR.RunJobFlow: instance Data RunJobFlowResponse
+ Network.AWS.EMR.RunJobFlow: instance Datatype D1RunJobFlow
+ Network.AWS.EMR.RunJobFlow: instance Datatype D1RunJobFlowResponse
+ Network.AWS.EMR.RunJobFlow: instance Generic RunJobFlow
+ Network.AWS.EMR.RunJobFlow: instance Generic RunJobFlowResponse
+ Network.AWS.EMR.RunJobFlow: instance Selector S1_0_0RunJobFlow
+ Network.AWS.EMR.RunJobFlow: instance Selector S1_0_0RunJobFlowResponse
+ Network.AWS.EMR.RunJobFlow: instance Selector S1_0_10RunJobFlow
+ Network.AWS.EMR.RunJobFlow: instance Selector S1_0_11RunJobFlow
+ Network.AWS.EMR.RunJobFlow: instance Selector S1_0_12RunJobFlow
+ Network.AWS.EMR.RunJobFlow: instance Selector S1_0_13RunJobFlow
+ Network.AWS.EMR.RunJobFlow: instance Selector S1_0_14RunJobFlow
+ Network.AWS.EMR.RunJobFlow: instance Selector S1_0_15RunJobFlow
+ Network.AWS.EMR.RunJobFlow: instance Selector S1_0_1RunJobFlow
+ Network.AWS.EMR.RunJobFlow: instance Selector S1_0_1RunJobFlowResponse
+ Network.AWS.EMR.RunJobFlow: instance Selector S1_0_2RunJobFlow
+ Network.AWS.EMR.RunJobFlow: instance Selector S1_0_3RunJobFlow
+ Network.AWS.EMR.RunJobFlow: instance Selector S1_0_4RunJobFlow
+ Network.AWS.EMR.RunJobFlow: instance Selector S1_0_5RunJobFlow
+ Network.AWS.EMR.RunJobFlow: instance Selector S1_0_6RunJobFlow
+ Network.AWS.EMR.RunJobFlow: instance Selector S1_0_7RunJobFlow
+ Network.AWS.EMR.RunJobFlow: instance Selector S1_0_8RunJobFlow
+ Network.AWS.EMR.RunJobFlow: instance Selector S1_0_9RunJobFlow
+ Network.AWS.EMR.RunJobFlow: instance Typeable RunJobFlow
+ Network.AWS.EMR.RunJobFlow: instance Typeable RunJobFlowResponse
+ Network.AWS.EMR.RunJobFlow: rjfAMIVersion :: Lens' RunJobFlow (Maybe Text)
+ Network.AWS.EMR.RunJobFlow: rjfApplications :: Lens' RunJobFlow [Application]
+ Network.AWS.EMR.RunJobFlow: rjfConfigurations :: Lens' RunJobFlow [Configuration]
+ Network.AWS.EMR.RunJobFlow: rjfLogURI :: Lens' RunJobFlow (Maybe Text)
+ Network.AWS.EMR.RunJobFlow: rjfReleaseLabel :: Lens' RunJobFlow (Maybe Text)
+ Network.AWS.EMR.RunJobFlow: rjfrsJobFlowId :: Lens' RunJobFlowResponse (Maybe Text)
+ Network.AWS.EMR.RunJobFlow: rjfrsStatus :: Lens' RunJobFlowResponse Int
+ Network.AWS.EMR.SetTerminationProtection: instance Constructor C1_0SetTerminationProtection
+ Network.AWS.EMR.SetTerminationProtection: instance Data SetTerminationProtection
+ Network.AWS.EMR.SetTerminationProtection: instance Data SetTerminationProtectionResponse
+ Network.AWS.EMR.SetTerminationProtection: instance Datatype D1SetTerminationProtection
+ Network.AWS.EMR.SetTerminationProtection: instance Generic SetTerminationProtection
+ Network.AWS.EMR.SetTerminationProtection: instance Selector S1_0_0SetTerminationProtection
+ Network.AWS.EMR.SetTerminationProtection: instance Selector S1_0_1SetTerminationProtection
+ Network.AWS.EMR.SetTerminationProtection: instance Typeable SetTerminationProtection
+ Network.AWS.EMR.SetTerminationProtection: instance Typeable SetTerminationProtectionResponse
+ Network.AWS.EMR.SetVisibleToAllUsers: instance Constructor C1_0SetVisibleToAllUsers
+ Network.AWS.EMR.SetVisibleToAllUsers: instance Data SetVisibleToAllUsers
+ Network.AWS.EMR.SetVisibleToAllUsers: instance Data SetVisibleToAllUsersResponse
+ Network.AWS.EMR.SetVisibleToAllUsers: instance Datatype D1SetVisibleToAllUsers
+ Network.AWS.EMR.SetVisibleToAllUsers: instance Generic SetVisibleToAllUsers
+ Network.AWS.EMR.SetVisibleToAllUsers: instance Selector S1_0_0SetVisibleToAllUsers
+ Network.AWS.EMR.SetVisibleToAllUsers: instance Selector S1_0_1SetVisibleToAllUsers
+ Network.AWS.EMR.SetVisibleToAllUsers: instance Typeable SetVisibleToAllUsers
+ Network.AWS.EMR.SetVisibleToAllUsers: instance Typeable SetVisibleToAllUsersResponse
+ Network.AWS.EMR.TerminateJobFlows: instance Constructor C1_0TerminateJobFlows
+ Network.AWS.EMR.TerminateJobFlows: instance Data TerminateJobFlows
+ Network.AWS.EMR.TerminateJobFlows: instance Data TerminateJobFlowsResponse
+ Network.AWS.EMR.TerminateJobFlows: instance Datatype D1TerminateJobFlows
+ Network.AWS.EMR.TerminateJobFlows: instance Generic TerminateJobFlows
+ Network.AWS.EMR.TerminateJobFlows: instance Selector S1_0_0TerminateJobFlows
+ Network.AWS.EMR.TerminateJobFlows: instance Typeable TerminateJobFlows
+ Network.AWS.EMR.TerminateJobFlows: instance Typeable TerminateJobFlowsResponse
+ Network.AWS.EMR.Types: AllStepsCompleted :: ClusterStateChangeReasonCode
+ Network.AWS.EMR.Types: BootstrapFailure :: ClusterStateChangeReasonCode
+ Network.AWS.EMR.Types: Bootstrapping :: ClusterState
+ Network.AWS.EMR.Types: CancelAndWait :: ActionOnFailure
+ Network.AWS.EMR.Types: IGSCRCClusterTerminated :: InstanceGroupStateChangeReasonCode
+ Network.AWS.EMR.Types: IGSCRCInstanceFailure :: InstanceGroupStateChangeReasonCode
+ Network.AWS.EMR.Types: IGSCRCInternalError :: InstanceGroupStateChangeReasonCode
+ Network.AWS.EMR.Types: IGSCRCValidationError :: InstanceGroupStateChangeReasonCode
+ Network.AWS.EMR.Types: IGTCore :: InstanceGroupType
+ Network.AWS.EMR.Types: IGTMaster :: InstanceGroupType
+ Network.AWS.EMR.Types: IGTTask :: InstanceGroupType
+ Network.AWS.EMR.Types: Starting :: ClusterState
+ Network.AWS.EMR.Types: StepFailure :: ClusterStateChangeReasonCode
+ Network.AWS.EMR.Types: TerminateCluster :: ActionOnFailure
+ Network.AWS.EMR.Types: TerminateJobFlow :: ActionOnFailure
+ Network.AWS.EMR.Types: Terminated :: ClusterState
+ Network.AWS.EMR.Types: TerminatedWithErrors :: ClusterState
+ Network.AWS.EMR.Types: Terminating :: ClusterState
+ Network.AWS.EMR.Types: UserRequest :: ClusterStateChangeReasonCode
+ Network.AWS.EMR.Types: Waiting :: ClusterState
+ Network.AWS.EMR.Types: _InternalServerError :: AsError a => Getting (First ServiceError) a ServiceError
+ Network.AWS.EMR.Types: _InternalServerException :: AsError a => Getting (First ServiceError) a ServiceError
+ Network.AWS.EMR.Types: _InvalidRequestException :: AsError a => Getting (First ServiceError) a ServiceError
+ Network.AWS.EMR.Types: cClassification :: Lens' Configuration (Maybe Text)
+ Network.AWS.EMR.Types: cConfigurations :: Lens' Configuration [Configuration]
+ Network.AWS.EMR.Types: cProperties :: Lens' Configuration (HashMap Text Text)
+ Network.AWS.EMR.Types: cluApplications :: Lens' Cluster [Application]
+ Network.AWS.EMR.Types: cluAutoTerminate :: Lens' Cluster (Maybe Bool)
+ Network.AWS.EMR.Types: cluConfigurations :: Lens' Cluster [Configuration]
+ Network.AWS.EMR.Types: cluEC2InstanceAttributes :: Lens' Cluster (Maybe EC2InstanceAttributes)
+ Network.AWS.EMR.Types: cluId :: Lens' Cluster Text
+ Network.AWS.EMR.Types: cluLogURI :: Lens' Cluster (Maybe Text)
+ Network.AWS.EMR.Types: cluMasterPublicDNSName :: Lens' Cluster (Maybe Text)
+ Network.AWS.EMR.Types: cluName :: Lens' Cluster Text
+ Network.AWS.EMR.Types: cluNormalizedInstanceHours :: Lens' Cluster (Maybe Int)
+ Network.AWS.EMR.Types: cluReleaseLabel :: Lens' Cluster (Maybe Text)
+ Network.AWS.EMR.Types: cluRequestedAMIVersion :: Lens' Cluster (Maybe Text)
+ Network.AWS.EMR.Types: cluRunningAMIVersion :: Lens' Cluster (Maybe Text)
+ Network.AWS.EMR.Types: cluServiceRole :: Lens' Cluster (Maybe Text)
+ Network.AWS.EMR.Types: cluStatus :: Lens' Cluster ClusterStatus
+ Network.AWS.EMR.Types: cluTags :: Lens' Cluster [Tag]
+ Network.AWS.EMR.Types: cluTerminationProtected :: Lens' Cluster (Maybe Bool)
+ Network.AWS.EMR.Types: cluVisibleToAllUsers :: Lens' Cluster (Maybe Bool)
+ Network.AWS.EMR.Types: configuration :: Configuration
+ Network.AWS.EMR.Types: data Configuration
+ Network.AWS.EMR.Types: data EC2InstanceAttributes
+ Network.AWS.EMR.Types: data HadoopJARStepConfig
+ Network.AWS.EMR.Types: eiaEC2AvailabilityZone :: Lens' EC2InstanceAttributes (Maybe Text)
+ Network.AWS.EMR.Types: eiaEC2KeyName :: Lens' EC2InstanceAttributes (Maybe Text)
+ Network.AWS.EMR.Types: eiaEC2SubnetId :: Lens' EC2InstanceAttributes (Maybe Text)
+ Network.AWS.EMR.Types: eiaIAMInstanceProfile :: Lens' EC2InstanceAttributes (Maybe Text)
+ Network.AWS.EMR.Types: hadoopJARStepConfig :: Text -> HadoopJARStepConfig
+ Network.AWS.EMR.Types: hjscJAR :: Lens' HadoopJARStepConfig Text
+ Network.AWS.EMR.Types: hscJAR :: Lens' HadoopStepConfig (Maybe Text)
+ Network.AWS.EMR.Types: iEC2InstanceId :: Lens' Instance (Maybe Text)
+ Network.AWS.EMR.Types: iPrivateDNSName :: Lens' Instance (Maybe Text)
+ Network.AWS.EMR.Types: iPrivateIPAddress :: Lens' Instance (Maybe Text)
+ Network.AWS.EMR.Types: iPublicDNSName :: Lens' Instance (Maybe Text)
+ Network.AWS.EMR.Types: iPublicIPAddress :: Lens' Instance (Maybe Text)
+ Network.AWS.EMR.Types: igConfigurations :: Lens' InstanceGroup [Configuration]
+ Network.AWS.EMR.Types: igcConfigurations :: Lens' InstanceGroupConfig [Configuration]
+ Network.AWS.EMR.Types: jficEC2KeyName :: Lens' JobFlowInstancesConfig (Maybe Text)
+ Network.AWS.EMR.Types: jficEC2SubnetId :: Lens' JobFlowInstancesConfig (Maybe Text)
+ Network.AWS.EMR.Types: scHadoopJARStep :: Lens' StepConfig HadoopJARStepConfig
- Network.AWS.EMR.AddInstanceGroups: addInstanceGroupsResponse :: AddInstanceGroupsResponse
+ Network.AWS.EMR.AddInstanceGroups: addInstanceGroupsResponse :: Int -> AddInstanceGroupsResponse
- Network.AWS.EMR.AddJobFlowSteps: addJobFlowStepsResponse :: AddJobFlowStepsResponse
+ Network.AWS.EMR.AddJobFlowSteps: addJobFlowStepsResponse :: Int -> AddJobFlowStepsResponse
- Network.AWS.EMR.AddTags: addTagsResponse :: AddTagsResponse
+ Network.AWS.EMR.AddTags: addTagsResponse :: Int -> AddTagsResponse
- Network.AWS.EMR.DescribeCluster: describeClusterResponse :: Cluster -> DescribeClusterResponse
+ Network.AWS.EMR.DescribeCluster: describeClusterResponse :: Int -> Cluster -> DescribeClusterResponse
- Network.AWS.EMR.DescribeStep: describeStepResponse :: DescribeStepResponse
+ Network.AWS.EMR.DescribeStep: describeStepResponse :: Int -> DescribeStepResponse
- Network.AWS.EMR.ListBootstrapActions: listBootstrapActionsResponse :: ListBootstrapActionsResponse
+ Network.AWS.EMR.ListBootstrapActions: listBootstrapActionsResponse :: Int -> ListBootstrapActionsResponse
- Network.AWS.EMR.ListClusters: listClustersResponse :: ListClustersResponse
+ Network.AWS.EMR.ListClusters: listClustersResponse :: Int -> ListClustersResponse
- Network.AWS.EMR.ListInstanceGroups: listInstanceGroupsResponse :: ListInstanceGroupsResponse
+ Network.AWS.EMR.ListInstanceGroups: listInstanceGroupsResponse :: Int -> ListInstanceGroupsResponse
- Network.AWS.EMR.ListInstances: listInstancesResponse :: ListInstancesResponse
+ Network.AWS.EMR.ListInstances: listInstancesResponse :: Int -> ListInstancesResponse
- Network.AWS.EMR.ListSteps: listStepsResponse :: ListStepsResponse
+ Network.AWS.EMR.ListSteps: listStepsResponse :: Int -> ListStepsResponse
- Network.AWS.EMR.RemoveTags: removeTagsResponse :: RemoveTagsResponse
+ Network.AWS.EMR.RemoveTags: removeTagsResponse :: Int -> RemoveTagsResponse
- Network.AWS.EMR.RunJobFlow: runJobFlowResponse :: RunJobFlowResponse
+ Network.AWS.EMR.RunJobFlow: runJobFlowResponse :: Int -> RunJobFlowResponse
- Network.AWS.EMR.Types: Continue :: StepExecutionState
+ Network.AWS.EMR.Types: Continue :: ActionOnFailure
- Network.AWS.EMR.Types: Core :: InstanceGroupType
+ Network.AWS.EMR.Types: Core :: InstanceRoleType
- Network.AWS.EMR.Types: InstanceFailure :: InstanceGroupStateChangeReasonCode
+ Network.AWS.EMR.Types: InstanceFailure :: ClusterStateChangeReasonCode
- Network.AWS.EMR.Types: InternalError :: InstanceGroupStateChangeReasonCode
+ Network.AWS.EMR.Types: InternalError :: ClusterStateChangeReasonCode
- Network.AWS.EMR.Types: Master :: InstanceGroupType
+ Network.AWS.EMR.Types: Master :: InstanceRoleType
- Network.AWS.EMR.Types: Running :: StepExecutionState
+ Network.AWS.EMR.Types: Running :: ClusterState
- Network.AWS.EMR.Types: Task :: InstanceGroupType
+ Network.AWS.EMR.Types: Task :: InstanceRoleType
- Network.AWS.EMR.Types: ValidationError :: InstanceGroupStateChangeReasonCode
+ Network.AWS.EMR.Types: ValidationError :: ClusterStateChangeReasonCode
- Network.AWS.EMR.Types: ec2InstanceAttributes :: Ec2InstanceAttributes
+ Network.AWS.EMR.Types: ec2InstanceAttributes :: EC2InstanceAttributes
- Network.AWS.EMR.Types: eiaAdditionalMasterSecurityGroups :: Lens' Ec2InstanceAttributes [Text]
+ Network.AWS.EMR.Types: eiaAdditionalMasterSecurityGroups :: Lens' EC2InstanceAttributes [Text]
- Network.AWS.EMR.Types: eiaAdditionalSlaveSecurityGroups :: Lens' Ec2InstanceAttributes [Text]
+ Network.AWS.EMR.Types: eiaAdditionalSlaveSecurityGroups :: Lens' EC2InstanceAttributes [Text]
- Network.AWS.EMR.Types: eiaEmrManagedMasterSecurityGroup :: Lens' Ec2InstanceAttributes (Maybe Text)
+ Network.AWS.EMR.Types: eiaEmrManagedMasterSecurityGroup :: Lens' EC2InstanceAttributes (Maybe Text)
- Network.AWS.EMR.Types: eiaEmrManagedSlaveSecurityGroup :: Lens' Ec2InstanceAttributes (Maybe Text)
+ Network.AWS.EMR.Types: eiaEmrManagedSlaveSecurityGroup :: Lens' EC2InstanceAttributes (Maybe Text)
- Network.AWS.EMR.Types: hjscArgs :: Lens' HadoopJarStepConfig [Text]
+ Network.AWS.EMR.Types: hjscArgs :: Lens' HadoopJARStepConfig [Text]
- Network.AWS.EMR.Types: hjscMainClass :: Lens' HadoopJarStepConfig (Maybe Text)
+ Network.AWS.EMR.Types: hjscMainClass :: Lens' HadoopJARStepConfig (Maybe Text)
- Network.AWS.EMR.Types: hjscProperties :: Lens' HadoopJarStepConfig [KeyValue]
+ Network.AWS.EMR.Types: hjscProperties :: Lens' HadoopJARStepConfig [KeyValue]
- Network.AWS.EMR.Types: stepConfig :: Text -> HadoopJarStepConfig -> StepConfig
+ Network.AWS.EMR.Types: stepConfig :: Text -> HadoopJARStepConfig -> StepConfig

Files

README.md view
@@ -1,22 +1,35 @@ # Amazon Elastic MapReduce SDK -> _Warning:_ This is an experimental preview release which is still under heavy development and not intended for public consumption, _caveat emptor_!-+* [Version](#version) * [Description](#description) * [Contribute](#contribute) * [Licence](#licence) ++## Version++`1.0.0`++ ## Description -Amazon Elastic MapReduce (Amazon EMR) is a web service that makes it easy to-process large amounts of data efficiently. Amazon EMR uses Hadoop processing-combined with several AWS products to do such tasks as web indexing, data-mining, log file analysis, machine learning, scientific simulation, and data-warehousing.+Amazon Elastic MapReduce (Amazon EMR) is a web service that makes it+easy to process large amounts of data efficiently. Amazon EMR uses+Hadoop processing combined with several AWS products to do tasks such as+web indexing, data mining, log file analysis, machine learning,+scientific simulation, and data warehousing.  Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-emr) and the [AWS API Reference](http://docs.aws.amazon.com/ElasticMapReduce/latest/API/Welcome.html). +The types from this library are intended to be used with [amazonka](http://hackage.haskell.org/package/amazonka),+which provides mechanisms for specifying AuthN/AuthZ information and sending requests.++Use of lenses is required for constructing and manipulating types.+This is due to the amount of nesting of AWS types and transparency regarding+de/serialisation into more palatable Haskell values.+The provided lenses should be compatible with any of the major lens libraries+[lens](http://hackage.haskell.org/package/lens) or [lens-family-core](http://hackage.haskell.org/package/lens-family-core).  ## Contribute 
amazonka-emr.cabal view
@@ -1,29 +1,37 @@ name:                  amazonka-emr-version:               0.3.6+version:               1.0.0 synopsis:              Amazon Elastic MapReduce SDK. homepage:              https://github.com/brendanhay/amazonka license:               OtherLicense license-file:          LICENSE author:                Brendan Hay maintainer:            Brendan Hay <brendan.g.hay@gmail.com>-copyright:             Copyright (c) 2013-2014 Brendan Hay+copyright:             Copyright (c) 2013-2015 Brendan Hay category:              Network, AWS, Cloud, Distributed Computing build-type:            Simple extra-source-files:    README.md cabal-version:         >= 1.10  description:-    Amazon Elastic MapReduce (Amazon EMR) is a web service that makes it easy to-    process large amounts of data efficiently. Amazon EMR uses Hadoop processing-    combined with several AWS products to do such tasks as web indexing, data-    mining, log file analysis, machine learning, scientific simulation, and data-    warehousing.-+    Amazon Elastic MapReduce (Amazon EMR) is a web service that makes it+    easy to process large amounts of data efficiently. Amazon EMR uses+    Hadoop processing combined with several AWS products to do tasks such as+    web indexing, data mining, log file analysis, machine learning,+    scientific simulation, and data warehousing.     .-    /See:/ <http://docs.aws.amazon.com/ElasticMapReduce/latest/API/Welcome.html AWS API Reference>+    The types from this library are intended to be used with+    <http://hackage.haskell.org/package/amazonka amazonka>, which provides+    mechanisms for specifying AuthN/AuthZ information and sending requests.     .-    /Warning:/ This is an experimental preview release which is still under-    heavy development and not intended for public consumption, caveat emptor!+    Use of lenses is required for constructing and manipulating types.+    This is due to the amount of nesting of AWS types and transparency regarding+    de/serialisation into more palatable Haskell values.+    The provided lenses should be compatible with any of the major lens libraries+    such as <http://hackage.haskell.org/package/lens lens> or+    <http://hackage.haskell.org/package/lens-family-core lens-family-core>.+    .+    See "Network.AWS.EMR" and the <http://docs.aws.amazon.com/ElasticMapReduce/latest/API/Welcome.html AWS API Reference>+    to get started.  source-repository head     type:     git@@ -41,7 +49,6 @@         , Network.AWS.EMR.AddJobFlowSteps         , Network.AWS.EMR.AddTags         , Network.AWS.EMR.DescribeCluster-        , Network.AWS.EMR.DescribeJobFlows         , Network.AWS.EMR.DescribeStep         , Network.AWS.EMR.ListBootstrapActions         , Network.AWS.EMR.ListClusters@@ -58,7 +65,37 @@         , Network.AWS.EMR.Waiters      other-modules:+          Network.AWS.EMR.Types.Product+        , Network.AWS.EMR.Types.Sum      build-depends:-          amazonka-core == 0.3.6.*+          amazonka-core == 1.0.0.*         , base          >= 4.7     && < 5++test-suite amazonka-emr-test+    type:              exitcode-stdio-1.0+    default-language:  Haskell2010+    hs-source-dirs:    test+    main-is:           Main.hs++    ghc-options:       -Wall -threaded++    -- This is not comprehensive if modules have manually been added.+    -- It exists to ensure cabal 'somewhat' detects test module changes.+    other-modules:+          Test.AWS.EMR+        , Test.AWS.Gen.EMR+        , Test.AWS.EMR.Internal++    build-depends:+          amazonka-core == 1.0.0+        , amazonka-test == 1.0.0+        , amazonka-emr == 1.0.0+        , base+        , bytestring+        , lens+        , tasty+        , tasty-hunit+        , text+        , time+        , unordered-containers
gen/Network/AWS/EMR.hs view
@@ -1,58 +1,461 @@+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- | -- Module      : Network.AWS.EMR--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>--- License     : This Source Code Form is subject to the terms of---               the Mozilla Public License, v. 2.0.---               A copy of the MPL can be found in the LICENSE file or---               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Copyright   : (c) 2013-2015 Brendan Hay+-- License     : Mozilla Public License, v. 2.0. -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>--- Stability   : experimental+-- Stability   : auto-generated -- Portability : non-portable (GHC extensions) ----- Derived from AWS service descriptions, licensed under Apache 2.0.---- | Amazon Elastic MapReduce (Amazon EMR) is a web service that makes it easy to--- process large amounts of data efficiently. Amazon EMR uses Hadoop processing--- combined with several AWS products to do such tasks as web indexing, data--- mining, log file analysis, machine learning, scientific simulation, and data--- warehousing.+-- Amazon Elastic MapReduce (Amazon EMR) is a web service that makes it+-- easy to process large amounts of data efficiently. Amazon EMR uses+-- Hadoop processing combined with several AWS products to do tasks such as+-- web indexing, data mining, log file analysis, machine learning,+-- scientific simulation, and data warehousing.+--+-- /See:/ <http://docs.aws.amazon.com/ElasticMapReduce/latest/API/Welcome.html AWS API Reference> module Network.AWS.EMR-    ( module Network.AWS.EMR.AddInstanceGroups-    , module Network.AWS.EMR.AddJobFlowSteps-    , module Network.AWS.EMR.AddTags-    , module Network.AWS.EMR.DescribeCluster-    , module Network.AWS.EMR.DescribeJobFlows-    , module Network.AWS.EMR.DescribeStep-    , module Network.AWS.EMR.ListBootstrapActions-    , module Network.AWS.EMR.ListClusters-    , module Network.AWS.EMR.ListInstanceGroups-    , module Network.AWS.EMR.ListInstances-    , module Network.AWS.EMR.ListSteps-    , module Network.AWS.EMR.ModifyInstanceGroups-    , module Network.AWS.EMR.RemoveTags+    (+    -- * Service+      EMR++    -- * Errors+    -- $errors++    -- ** InvalidRequestException+    , _InvalidRequestException++    -- ** InternalServerError+    , _InternalServerError++    -- ** InternalServerException+    , _InternalServerException++    -- * Waiters+    -- $waiters++    -- ** ClusterRunning+    , clusterRunning++    -- * Operations+    -- $operations++    -- ** RunJobFlow     , module Network.AWS.EMR.RunJobFlow-    , module Network.AWS.EMR.SetTerminationProtection++    -- ** SetVisibleToAllUsers     , module Network.AWS.EMR.SetVisibleToAllUsers++    -- ** TerminateJobFlows     , module Network.AWS.EMR.TerminateJobFlows-    , module Network.AWS.EMR.Types-    , module Network.AWS.EMR.Waiters++    -- ** RemoveTags+    , module Network.AWS.EMR.RemoveTags++    -- ** DescribeStep+    , module Network.AWS.EMR.DescribeStep++    -- ** DescribeCluster+    , module Network.AWS.EMR.DescribeCluster++    -- ** ModifyInstanceGroups+    , module Network.AWS.EMR.ModifyInstanceGroups++    -- ** AddJobFlowSteps+    , module Network.AWS.EMR.AddJobFlowSteps++    -- ** SetTerminationProtection+    , module Network.AWS.EMR.SetTerminationProtection++    -- ** ListSteps (Paginated)+    , module Network.AWS.EMR.ListSteps++    -- ** AddInstanceGroups+    , module Network.AWS.EMR.AddInstanceGroups++    -- ** ListInstanceGroups (Paginated)+    , module Network.AWS.EMR.ListInstanceGroups++    -- ** ListBootstrapActions (Paginated)+    , module Network.AWS.EMR.ListBootstrapActions++    -- ** AddTags+    , module Network.AWS.EMR.AddTags++    -- ** ListInstances (Paginated)+    , module Network.AWS.EMR.ListInstances++    -- ** ListClusters (Paginated)+    , module Network.AWS.EMR.ListClusters++    -- * Types++    -- ** ActionOnFailure+    , ActionOnFailure (..)++    -- ** ClusterState+    , ClusterState (..)++    -- ** ClusterStateChangeReasonCode+    , ClusterStateChangeReasonCode (..)++    -- ** InstanceGroupState+    , InstanceGroupState (..)++    -- ** InstanceGroupStateChangeReasonCode+    , InstanceGroupStateChangeReasonCode (..)++    -- ** InstanceGroupType+    , InstanceGroupType (..)++    -- ** InstanceRoleType+    , InstanceRoleType (..)++    -- ** InstanceState+    , InstanceState (..)++    -- ** InstanceStateChangeReasonCode+    , InstanceStateChangeReasonCode (..)++    -- ** MarketType+    , MarketType (..)++    -- ** StepState+    , StepState (..)++    -- ** StepStateChangeReasonCode+    , StepStateChangeReasonCode (..)++    -- ** Application+    , Application+    , application+    , aAdditionalInfo+    , aArgs+    , aName+    , aVersion++    -- ** BootstrapActionConfig+    , BootstrapActionConfig+    , bootstrapActionConfig+    , bacName+    , bacScriptBootstrapAction++    -- ** Cluster+    , Cluster+    , cluster+    , cluRequestedAMIVersion+    , cluEC2InstanceAttributes+    , cluNormalizedInstanceHours+    , cluConfigurations+    , cluReleaseLabel+    , cluLogURI+    , cluRunningAMIVersion+    , cluMasterPublicDNSName+    , cluAutoTerminate+    , cluTerminationProtected+    , cluVisibleToAllUsers+    , cluApplications+    , cluTags+    , cluServiceRole+    , cluId+    , cluName+    , cluStatus++    -- ** ClusterStateChangeReason+    , ClusterStateChangeReason+    , clusterStateChangeReason+    , cscrCode+    , cscrMessage++    -- ** ClusterStatus+    , ClusterStatus+    , clusterStatus+    , csState+    , csStateChangeReason+    , csTimeline++    -- ** ClusterSummary+    , ClusterSummary+    , clusterSummary+    , csStatus+    , csNormalizedInstanceHours+    , csName+    , csId++    -- ** ClusterTimeline+    , ClusterTimeline+    , clusterTimeline+    , ctReadyDateTime+    , ctCreationDateTime+    , ctEndDateTime++    -- ** Command+    , Command+    , command+    , cArgs+    , cScriptPath+    , cName++    -- ** Configuration+    , Configuration+    , configuration+    , cConfigurations+    , cClassification+    , cProperties++    -- ** EC2InstanceAttributes+    , EC2InstanceAttributes+    , ec2InstanceAttributes+    , eiaEC2KeyName+    , eiaEmrManagedSlaveSecurityGroup+    , eiaAdditionalSlaveSecurityGroups+    , eiaIAMInstanceProfile+    , eiaAdditionalMasterSecurityGroups+    , eiaEmrManagedMasterSecurityGroup+    , eiaEC2SubnetId+    , eiaEC2AvailabilityZone++    -- ** HadoopJARStepConfig+    , HadoopJARStepConfig+    , hadoopJARStepConfig+    , hjscArgs+    , hjscMainClass+    , hjscProperties+    , hjscJAR++    -- ** HadoopStepConfig+    , HadoopStepConfig+    , hadoopStepConfig+    , hscArgs+    , hscJAR+    , hscMainClass+    , hscProperties++    -- ** Instance+    , Instance+    , instance'+    , iStatus+    , iPublicDNSName+    , iEC2InstanceId+    , iPrivateIPAddress+    , iId+    , iPrivateDNSName+    , iPublicIPAddress++    -- ** InstanceGroup+    , InstanceGroup+    , instanceGroup+    , igStatus+    , igBidPrice+    , igRequestedInstanceCount+    , igRunningInstanceCount+    , igConfigurations+    , igInstanceGroupType+    , igInstanceType+    , igMarket+    , igName+    , igId++    -- ** InstanceGroupConfig+    , InstanceGroupConfig+    , instanceGroupConfig+    , igcBidPrice+    , igcConfigurations+    , igcMarket+    , igcName+    , igcInstanceRole+    , igcInstanceType+    , igcInstanceCount++    -- ** InstanceGroupModifyConfig+    , InstanceGroupModifyConfig+    , instanceGroupModifyConfig+    , igmcInstanceCount+    , igmcEC2InstanceIdsToTerminate+    , igmcInstanceGroupId++    -- ** InstanceGroupStateChangeReason+    , InstanceGroupStateChangeReason+    , instanceGroupStateChangeReason+    , igscrCode+    , igscrMessage++    -- ** InstanceGroupStatus+    , InstanceGroupStatus+    , instanceGroupStatus+    , igsState+    , igsStateChangeReason+    , igsTimeline++    -- ** InstanceGroupTimeline+    , InstanceGroupTimeline+    , instanceGroupTimeline+    , igtReadyDateTime+    , igtCreationDateTime+    , igtEndDateTime++    -- ** InstanceStateChangeReason+    , InstanceStateChangeReason+    , instanceStateChangeReason+    , iscrCode+    , iscrMessage++    -- ** InstanceStatus+    , InstanceStatus+    , instanceStatus+    , isState+    , isStateChangeReason+    , isTimeline++    -- ** InstanceTimeline+    , InstanceTimeline+    , instanceTimeline+    , itReadyDateTime+    , itCreationDateTime+    , itEndDateTime++    -- ** JobFlowInstancesConfig+    , JobFlowInstancesConfig+    , jobFlowInstancesConfig+    , jficSlaveInstanceType+    , jficEC2KeyName+    , jficInstanceCount+    , jficEmrManagedSlaveSecurityGroup+    , jficAdditionalSlaveSecurityGroups+    , jficHadoopVersion+    , jficAdditionalMasterSecurityGroups+    , jficEmrManagedMasterSecurityGroup+    , jficEC2SubnetId+    , jficMasterInstanceType+    , jficInstanceGroups+    , jficKeepJobFlowAliveWhenNoSteps+    , jficTerminationProtected+    , jficPlacement++    -- ** KeyValue+    , KeyValue+    , keyValue+    , kvValue+    , kvKey++    -- ** PlacementType+    , PlacementType+    , placementType+    , ptAvailabilityZone++    -- ** ScriptBootstrapActionConfig+    , ScriptBootstrapActionConfig+    , scriptBootstrapActionConfig+    , sbacArgs+    , sbacPath++    -- ** Step+    , Step+    , step+    , sStatus+    , sActionOnFailure+    , sConfig+    , sName+    , sId++    -- ** StepConfig+    , StepConfig+    , stepConfig+    , scActionOnFailure+    , scName+    , scHadoopJARStep++    -- ** StepStateChangeReason+    , StepStateChangeReason+    , stepStateChangeReason+    , sscrCode+    , sscrMessage++    -- ** StepStatus+    , StepStatus+    , stepStatus+    , ssState+    , ssStateChangeReason+    , ssTimeline++    -- ** StepSummary+    , StepSummary+    , stepSummary+    , ssStatus+    , ssActionOnFailure+    , ssConfig+    , ssName+    , ssId++    -- ** StepTimeline+    , StepTimeline+    , stepTimeline+    , stCreationDateTime+    , stEndDateTime+    , stStartDateTime++    -- ** SupportedProductConfig+    , SupportedProductConfig+    , supportedProductConfig+    , spcArgs+    , spcName++    -- ** Tag+    , Tag+    , tag+    , tagValue+    , tagKey     ) where -import Network.AWS.EMR.AddInstanceGroups-import Network.AWS.EMR.AddJobFlowSteps-import Network.AWS.EMR.AddTags-import Network.AWS.EMR.DescribeCluster-import Network.AWS.EMR.DescribeJobFlows-import Network.AWS.EMR.DescribeStep-import Network.AWS.EMR.ListBootstrapActions-import Network.AWS.EMR.ListClusters-import Network.AWS.EMR.ListInstanceGroups-import Network.AWS.EMR.ListInstances-import Network.AWS.EMR.ListSteps-import Network.AWS.EMR.ModifyInstanceGroups-import Network.AWS.EMR.RemoveTags-import Network.AWS.EMR.RunJobFlow-import Network.AWS.EMR.SetTerminationProtection-import Network.AWS.EMR.SetVisibleToAllUsers-import Network.AWS.EMR.TerminateJobFlows-import Network.AWS.EMR.Types-import Network.AWS.EMR.Waiters+import           Network.AWS.EMR.AddInstanceGroups+import           Network.AWS.EMR.AddJobFlowSteps+import           Network.AWS.EMR.AddTags+import           Network.AWS.EMR.DescribeCluster+import           Network.AWS.EMR.DescribeStep+import           Network.AWS.EMR.ListBootstrapActions+import           Network.AWS.EMR.ListClusters+import           Network.AWS.EMR.ListInstanceGroups+import           Network.AWS.EMR.ListInstances+import           Network.AWS.EMR.ListSteps+import           Network.AWS.EMR.ModifyInstanceGroups+import           Network.AWS.EMR.RemoveTags+import           Network.AWS.EMR.RunJobFlow+import           Network.AWS.EMR.SetTerminationProtection+import           Network.AWS.EMR.SetVisibleToAllUsers+import           Network.AWS.EMR.TerminateJobFlows+import           Network.AWS.EMR.Types+import           Network.AWS.EMR.Waiters++{- $errors+Error matchers are designed for use with the functions provided by+<http://hackage.haskell.org/package/lens/docs/Control-Exception-Lens.html Control.Exception.Lens>.+This allows catching (and rethrowing) service specific errors returned+by 'EMR'.+-}++{- $operations+Some AWS operations return results that are incomplete and require subsequent+requests in order to obtain the entire result set. The process of sending+subsequent requests to continue where a previous request left off is called+pagination. For example, the 'ListObjects' operation of Amazon S3 returns up to+1000 objects at a time, and you must send subsequent requests with the+appropriate Marker in order to retrieve the next page of results.++Operations that have an 'AWSPager' instance can transparently perform subsequent+requests, correctly setting Markers and other request facets to iterate through+the entire result set of a truncated API operation. Operations which support+this have an additional note in the documentation.++Many operations have the ability to filter results on the server side. See the+individual operation parameters for details.+-}++{- $waiters+Waiters poll by repeatedly sending a request until some remote success condition+configured by the 'Wait' specification is fulfilled. The 'Wait' specification+determines how many attempts should be made, in addition to delay and retry strategies.+-}
gen/Network/AWS/EMR/AddInstanceGroups.hs view
@@ -1,136 +1,151 @@-{-# LANGUAGE DataKinds                   #-}-{-# LANGUAGE DeriveGeneric               #-}-{-# LANGUAGE FlexibleInstances           #-}-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}-{-# LANGUAGE LambdaCase                  #-}-{-# LANGUAGE NoImplicitPrelude           #-}-{-# LANGUAGE OverloadedStrings           #-}-{-# LANGUAGE RecordWildCards             #-}-{-# LANGUAGE TypeFamilies                #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}  {-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-} +-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- | -- Module      : Network.AWS.EMR.AddInstanceGroups--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>--- License     : This Source Code Form is subject to the terms of---               the Mozilla Public License, v. 2.0.---               A copy of the MPL can be found in the LICENSE file or---               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Copyright   : (c) 2013-2015 Brendan Hay+-- License     : Mozilla Public License, v. 2.0. -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>--- Stability   : experimental+-- Stability   : auto-generated -- Portability : non-portable (GHC extensions) ----- Derived from AWS service descriptions, licensed under Apache 2.0.---- | AddInstanceGroups adds an instance group to a running cluster.+-- AddInstanceGroups adds an instance group to a running cluster. ----- <http://docs.aws.amazon.com/ElasticMapReduce/latest/API/API_AddInstanceGroups.html>+-- /See:/ <http://docs.aws.amazon.com/ElasticMapReduce/latest/API/API_AddInstanceGroups.html AWS API Reference> for AddInstanceGroups. module Network.AWS.EMR.AddInstanceGroups     (-    -- * Request-      AddInstanceGroups-    -- ** Request constructor-    , addInstanceGroups-    -- ** Request lenses+    -- * Creating a Request+      addInstanceGroups+    , AddInstanceGroups+    -- * Request Lenses     , aigInstanceGroups     , aigJobFlowId -    -- * Response-    , AddInstanceGroupsResponse-    -- ** Response constructor+    -- * Destructuring the Response     , addInstanceGroupsResponse-    -- ** Response lenses-    , aigrInstanceGroupIds-    , aigrJobFlowId+    , AddInstanceGroupsResponse+    -- * Response Lenses+    , aigrsJobFlowId+    , aigrsInstanceGroupIds+    , aigrsStatus     ) where -import Network.AWS.Data (Object)-import Network.AWS.Prelude-import Network.AWS.Request.JSON-import Network.AWS.EMR.Types-import qualified GHC.Exts--data AddInstanceGroups = AddInstanceGroups-    { _aigInstanceGroups :: List "InstanceGroups" InstanceGroupConfig-    , _aigJobFlowId      :: Text-    } deriving (Eq, Read, Show)+import           Network.AWS.EMR.Types+import           Network.AWS.EMR.Types.Product+import           Network.AWS.Prelude+import           Network.AWS.Request+import           Network.AWS.Response --- | 'AddInstanceGroups' constructor.+-- | Input to an AddInstanceGroups call. ----- The fields accessible through corresponding lenses are:+-- /See:/ 'addInstanceGroups' smart constructor.+data AddInstanceGroups = AddInstanceGroups'+    { _aigInstanceGroups :: ![InstanceGroupConfig]+    , _aigJobFlowId      :: !Text+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'AddInstanceGroups' with the minimum fields required to make a request. ----- * 'aigInstanceGroups' @::@ ['InstanceGroupConfig']+-- Use one of the following lenses to modify other fields as desired: ----- * 'aigJobFlowId' @::@ 'Text'+-- * 'aigInstanceGroups' ---addInstanceGroups :: Text -- ^ 'aigJobFlowId'-                  -> AddInstanceGroups-addInstanceGroups p1 = AddInstanceGroups-    { _aigJobFlowId      = p1-    , _aigInstanceGroups = mempty+-- * 'aigJobFlowId'+addInstanceGroups+    :: Text -- ^ 'aigJobFlowId'+    -> AddInstanceGroups+addInstanceGroups pJobFlowId_ =+    AddInstanceGroups'+    { _aigInstanceGroups = mempty+    , _aigJobFlowId = pJobFlowId_     }  -- | Instance Groups to add. aigInstanceGroups :: Lens' AddInstanceGroups [InstanceGroupConfig]-aigInstanceGroups =-    lens _aigInstanceGroups (\s a -> s { _aigInstanceGroups = a })-        . _List+aigInstanceGroups = lens _aigInstanceGroups (\ s a -> s{_aigInstanceGroups = a}) . _Coerce;  -- | Job flow in which to add the instance groups. aigJobFlowId :: Lens' AddInstanceGroups Text-aigJobFlowId = lens _aigJobFlowId (\s a -> s { _aigJobFlowId = a })--data AddInstanceGroupsResponse = AddInstanceGroupsResponse-    { _aigrInstanceGroupIds :: List "InstanceGroupIds" Text-    , _aigrJobFlowId        :: Maybe Text-    } deriving (Eq, Ord, Read, Show)+aigJobFlowId = lens _aigJobFlowId (\ s a -> s{_aigJobFlowId = a}); --- | 'AddInstanceGroupsResponse' constructor.------ The fields accessible through corresponding lenses are:------ * 'aigrInstanceGroupIds' @::@ ['Text']------ * 'aigrJobFlowId' @::@ 'Maybe' 'Text'----addInstanceGroupsResponse :: AddInstanceGroupsResponse-addInstanceGroupsResponse = AddInstanceGroupsResponse-    { _aigrJobFlowId        = Nothing-    , _aigrInstanceGroupIds = mempty-    }+instance AWSRequest AddInstanceGroups where+        type Sv AddInstanceGroups = EMR+        type Rs AddInstanceGroups = AddInstanceGroupsResponse+        request = postJSON+        response+          = receiveJSON+              (\ s h x ->+                 AddInstanceGroupsResponse' <$>+                   (x .?> "JobFlowId") <*>+                     (x .?> "InstanceGroupIds" .!@ mempty)+                     <*> (pure (fromEnum s))) --- | Instance group IDs of the newly created instance groups.-aigrInstanceGroupIds :: Lens' AddInstanceGroupsResponse [Text]-aigrInstanceGroupIds =-    lens _aigrInstanceGroupIds (\s a -> s { _aigrInstanceGroupIds = a })-        . _List+instance ToHeaders AddInstanceGroups where+        toHeaders+          = const+              (mconcat+                 ["X-Amz-Target" =#+                    ("ElasticMapReduce.AddInstanceGroups" :: ByteString),+                  "Content-Type" =#+                    ("application/x-amz-json-1.1" :: ByteString)]) --- | The job flow ID in which the instance groups are added.-aigrJobFlowId :: Lens' AddInstanceGroupsResponse (Maybe Text)-aigrJobFlowId = lens _aigrJobFlowId (\s a -> s { _aigrJobFlowId = a })+instance ToJSON AddInstanceGroups where+        toJSON AddInstanceGroups'{..}+          = object+              ["InstanceGroups" .= _aigInstanceGroups,+               "JobFlowId" .= _aigJobFlowId]  instance ToPath AddInstanceGroups where-    toPath = const "/"+        toPath = const "/"  instance ToQuery AddInstanceGroups where-    toQuery = const mempty+        toQuery = const mempty -instance ToHeaders AddInstanceGroups+-- | Output from an AddInstanceGroups call.+--+-- /See:/ 'addInstanceGroupsResponse' smart constructor.+data AddInstanceGroupsResponse = AddInstanceGroupsResponse'+    { _aigrsJobFlowId        :: !(Maybe Text)+    , _aigrsInstanceGroupIds :: !(Maybe [Text])+    , _aigrsStatus           :: !Int+    } deriving (Eq,Read,Show,Data,Typeable,Generic) -instance ToJSON AddInstanceGroups where-    toJSON AddInstanceGroups{..} = object-        [ "InstanceGroups" .= _aigInstanceGroups-        , "JobFlowId"      .= _aigJobFlowId-        ]+-- | Creates a value of 'AddInstanceGroupsResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'aigrsJobFlowId'+--+-- * 'aigrsInstanceGroupIds'+--+-- * 'aigrsStatus'+addInstanceGroupsResponse+    :: Int -- ^ 'aigrsStatus'+    -> AddInstanceGroupsResponse+addInstanceGroupsResponse pStatus_ =+    AddInstanceGroupsResponse'+    { _aigrsJobFlowId = Nothing+    , _aigrsInstanceGroupIds = Nothing+    , _aigrsStatus = pStatus_+    } -instance AWSRequest AddInstanceGroups where-    type Sv AddInstanceGroups = EMR-    type Rs AddInstanceGroups = AddInstanceGroupsResponse+-- | The job flow ID in which the instance groups are added.+aigrsJobFlowId :: Lens' AddInstanceGroupsResponse (Maybe Text)+aigrsJobFlowId = lens _aigrsJobFlowId (\ s a -> s{_aigrsJobFlowId = a}); -    request  = post "AddInstanceGroups"-    response = jsonResponse+-- | Instance group IDs of the newly created instance groups.+aigrsInstanceGroupIds :: Lens' AddInstanceGroupsResponse [Text]+aigrsInstanceGroupIds = lens _aigrsInstanceGroupIds (\ s a -> s{_aigrsInstanceGroupIds = a}) . _Default . _Coerce; -instance FromJSON AddInstanceGroupsResponse where-    parseJSON = withObject "AddInstanceGroupsResponse" $ \o -> AddInstanceGroupsResponse-        <$> o .:? "InstanceGroupIds" .!= mempty-        <*> o .:? "JobFlowId"+-- | The response status code.+aigrsStatus :: Lens' AddInstanceGroupsResponse Int+aigrsStatus = lens _aigrsStatus (\ s a -> s{_aigrsStatus = a});
gen/Network/AWS/EMR/AddJobFlowSteps.hs view
@@ -1,151 +1,165 @@-{-# LANGUAGE DataKinds                   #-}-{-# LANGUAGE DeriveGeneric               #-}-{-# LANGUAGE FlexibleInstances           #-}-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}-{-# LANGUAGE LambdaCase                  #-}-{-# LANGUAGE NoImplicitPrelude           #-}-{-# LANGUAGE OverloadedStrings           #-}-{-# LANGUAGE RecordWildCards             #-}-{-# LANGUAGE TypeFamilies                #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}  {-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-} +-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- | -- Module      : Network.AWS.EMR.AddJobFlowSteps--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>--- License     : This Source Code Form is subject to the terms of---               the Mozilla Public License, v. 2.0.---               A copy of the MPL can be found in the LICENSE file or---               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Copyright   : (c) 2013-2015 Brendan Hay+-- License     : Mozilla Public License, v. 2.0. -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>--- Stability   : experimental+-- Stability   : auto-generated -- Portability : non-portable (GHC extensions) ----- Derived from AWS service descriptions, licensed under Apache 2.0.---- | AddJobFlowSteps adds new steps to a running job flow. A maximum of 256 steps--- are allowed in each job flow.+-- AddJobFlowSteps adds new steps to a running job flow. A maximum of 256+-- steps are allowed in each job flow. ----- If your job flow is long-running (such as a Hive data warehouse) or complex,--- you may require more than 256 steps to process your data. You can bypass the--- 256-step limitation in various ways, including using the SSH shell to connect--- to the master node and submitting queries directly to the software running on--- the master node, such as Hive and Hadoop. For more information on how to do--- this, go to <http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/AddMoreThan256Steps.html Add More than 256 Steps to a Job Flow> in the /Amazon ElasticMapReduce Developer's Guide/.+-- If your job flow is long-running (such as a Hive data warehouse) or+-- complex, you may require more than 256 steps to process your data. You+-- can bypass the 256-step limitation in various ways, including using the+-- SSH shell to connect to the master node and submitting queries directly+-- to the software running on the master node, such as Hive and Hadoop. For+-- more information on how to do this, go to+-- <http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/AddMoreThan256Steps.html Add More than 256 Steps to a Job Flow>+-- in the /Amazon Elastic MapReduce Developer\'s Guide/. -- -- A step specifies the location of a JAR file stored either on the master -- node of the job flow or in Amazon S3. Each step is performed by the main--- function of the main class of the JAR file. The main class can be specified--- either in the manifest of the JAR or by using the MainFunction parameter of--- the step.+-- function of the main class of the JAR file. The main class can be+-- specified either in the manifest of the JAR or by using the MainFunction+-- parameter of the step. ----- Elastic MapReduce executes each step in the order listed. For a step to be--- considered complete, the main function must exit with a zero exit code and--- all Hadoop jobs started while the step was running must have completed and--- run successfully.+-- Elastic MapReduce executes each step in the order listed. For a step to+-- be considered complete, the main function must exit with a zero exit+-- code and all Hadoop jobs started while the step was running must have+-- completed and run successfully. -- -- You can only add steps to a job flow that is in one of the following -- states: STARTING, BOOTSTRAPPING, RUNNING, or WAITING. ----- <http://docs.aws.amazon.com/ElasticMapReduce/latest/API/API_AddJobFlowSteps.html>+-- /See:/ <http://docs.aws.amazon.com/ElasticMapReduce/latest/API/API_AddJobFlowSteps.html AWS API Reference> for AddJobFlowSteps. module Network.AWS.EMR.AddJobFlowSteps     (-    -- * Request-      AddJobFlowSteps-    -- ** Request constructor-    , addJobFlowSteps-    -- ** Request lenses+    -- * Creating a Request+      addJobFlowSteps+    , AddJobFlowSteps+    -- * Request Lenses     , ajfsJobFlowId     , ajfsSteps -    -- * Response-    , AddJobFlowStepsResponse-    -- ** Response constructor+    -- * Destructuring the Response     , addJobFlowStepsResponse-    -- ** Response lenses-    , ajfsrStepIds+    , AddJobFlowStepsResponse+    -- * Response Lenses+    , ajfsrsStepIds+    , ajfsrsStatus     ) where -import Network.AWS.Data (Object)-import Network.AWS.Prelude-import Network.AWS.Request.JSON-import Network.AWS.EMR.Types-import qualified GHC.Exts--data AddJobFlowSteps = AddJobFlowSteps-    { _ajfsJobFlowId :: Text-    , _ajfsSteps     :: List "Steps" StepConfig-    } deriving (Eq, Read, Show)+import           Network.AWS.EMR.Types+import           Network.AWS.EMR.Types.Product+import           Network.AWS.Prelude+import           Network.AWS.Request+import           Network.AWS.Response --- | 'AddJobFlowSteps' constructor.+-- | The input argument to the AddJobFlowSteps operation. ----- The fields accessible through corresponding lenses are:+-- /See:/ 'addJobFlowSteps' smart constructor.+data AddJobFlowSteps = AddJobFlowSteps'+    { _ajfsJobFlowId :: !Text+    , _ajfsSteps     :: ![StepConfig]+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'AddJobFlowSteps' with the minimum fields required to make a request. ----- * 'ajfsJobFlowId' @::@ 'Text'+-- Use one of the following lenses to modify other fields as desired: ----- * 'ajfsSteps' @::@ ['StepConfig']+-- * 'ajfsJobFlowId' ---addJobFlowSteps :: Text -- ^ 'ajfsJobFlowId'-                -> AddJobFlowSteps-addJobFlowSteps p1 = AddJobFlowSteps-    { _ajfsJobFlowId = p1-    , _ajfsSteps     = mempty+-- * 'ajfsSteps'+addJobFlowSteps+    :: Text -- ^ 'ajfsJobFlowId'+    -> AddJobFlowSteps+addJobFlowSteps pJobFlowId_ =+    AddJobFlowSteps'+    { _ajfsJobFlowId = pJobFlowId_+    , _ajfsSteps = mempty     } --- | A string that uniquely identifies the job flow. This identifier is returned--- by 'RunJobFlow' and can also be obtained from 'ListClusters'.+-- | A string that uniquely identifies the job flow. This identifier is+-- returned by RunJobFlow and can also be obtained from ListClusters. ajfsJobFlowId :: Lens' AddJobFlowSteps Text-ajfsJobFlowId = lens _ajfsJobFlowId (\s a -> s { _ajfsJobFlowId = a })+ajfsJobFlowId = lens _ajfsJobFlowId (\ s a -> s{_ajfsJobFlowId = a}); --- | A list of 'StepConfig' to be executed by the job flow.+-- | A list of StepConfig to be executed by the job flow. ajfsSteps :: Lens' AddJobFlowSteps [StepConfig]-ajfsSteps = lens _ajfsSteps (\s a -> s { _ajfsSteps = a }) . _List--newtype AddJobFlowStepsResponse = AddJobFlowStepsResponse-    { _ajfsrStepIds :: List "StepIds" Text-    } deriving (Eq, Ord, Read, Show, Monoid, Semigroup)--instance GHC.Exts.IsList AddJobFlowStepsResponse where-    type Item AddJobFlowStepsResponse = Text+ajfsSteps = lens _ajfsSteps (\ s a -> s{_ajfsSteps = a}) . _Coerce; -    fromList = AddJobFlowStepsResponse . GHC.Exts.fromList-    toList   = GHC.Exts.toList . _ajfsrStepIds+instance AWSRequest AddJobFlowSteps where+        type Sv AddJobFlowSteps = EMR+        type Rs AddJobFlowSteps = AddJobFlowStepsResponse+        request = postJSON+        response+          = receiveJSON+              (\ s h x ->+                 AddJobFlowStepsResponse' <$>+                   (x .?> "StepIds" .!@ mempty) <*> (pure (fromEnum s))) --- | 'AddJobFlowStepsResponse' constructor.------ The fields accessible through corresponding lenses are:------ * 'ajfsrStepIds' @::@ ['Text']----addJobFlowStepsResponse :: AddJobFlowStepsResponse-addJobFlowStepsResponse = AddJobFlowStepsResponse-    { _ajfsrStepIds = mempty-    }+instance ToHeaders AddJobFlowSteps where+        toHeaders+          = const+              (mconcat+                 ["X-Amz-Target" =#+                    ("ElasticMapReduce.AddJobFlowSteps" :: ByteString),+                  "Content-Type" =#+                    ("application/x-amz-json-1.1" :: ByteString)]) --- | The identifiers of the list of steps added to the job flow.-ajfsrStepIds :: Lens' AddJobFlowStepsResponse [Text]-ajfsrStepIds = lens _ajfsrStepIds (\s a -> s { _ajfsrStepIds = a }) . _List+instance ToJSON AddJobFlowSteps where+        toJSON AddJobFlowSteps'{..}+          = object+              ["JobFlowId" .= _ajfsJobFlowId,+               "Steps" .= _ajfsSteps]  instance ToPath AddJobFlowSteps where-    toPath = const "/"+        toPath = const "/"  instance ToQuery AddJobFlowSteps where-    toQuery = const mempty--instance ToHeaders AddJobFlowSteps+        toQuery = const mempty -instance ToJSON AddJobFlowSteps where-    toJSON AddJobFlowSteps{..} = object-        [ "JobFlowId" .= _ajfsJobFlowId-        , "Steps"     .= _ajfsSteps-        ]+-- | The output for the AddJobFlowSteps operation.+--+-- /See:/ 'addJobFlowStepsResponse' smart constructor.+data AddJobFlowStepsResponse = AddJobFlowStepsResponse'+    { _ajfsrsStepIds :: !(Maybe [Text])+    , _ajfsrsStatus  :: !Int+    } deriving (Eq,Read,Show,Data,Typeable,Generic) -instance AWSRequest AddJobFlowSteps where-    type Sv AddJobFlowSteps = EMR-    type Rs AddJobFlowSteps = AddJobFlowStepsResponse+-- | Creates a value of 'AddJobFlowStepsResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ajfsrsStepIds'+--+-- * 'ajfsrsStatus'+addJobFlowStepsResponse+    :: Int -- ^ 'ajfsrsStatus'+    -> AddJobFlowStepsResponse+addJobFlowStepsResponse pStatus_ =+    AddJobFlowStepsResponse'+    { _ajfsrsStepIds = Nothing+    , _ajfsrsStatus = pStatus_+    } -    request  = post "AddJobFlowSteps"-    response = jsonResponse+-- | The identifiers of the list of steps added to the job flow.+ajfsrsStepIds :: Lens' AddJobFlowStepsResponse [Text]+ajfsrsStepIds = lens _ajfsrsStepIds (\ s a -> s{_ajfsrsStepIds = a}) . _Default . _Coerce; -instance FromJSON AddJobFlowStepsResponse where-    parseJSON = withObject "AddJobFlowStepsResponse" $ \o -> AddJobFlowStepsResponse-        <$> o .:? "StepIds" .!= mempty+-- | The response status code.+ajfsrsStatus :: Lens' AddJobFlowStepsResponse Int+ajfsrsStatus = lens _ajfsrsStatus (\ s a -> s{_ajfsrsStatus = a});
gen/Network/AWS/EMR/AddTags.hs view
@@ -1,110 +1,135 @@-{-# LANGUAGE DataKinds                   #-}-{-# LANGUAGE DeriveGeneric               #-}-{-# LANGUAGE FlexibleInstances           #-}-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}-{-# LANGUAGE LambdaCase                  #-}-{-# LANGUAGE NoImplicitPrelude           #-}-{-# LANGUAGE OverloadedStrings           #-}-{-# LANGUAGE RecordWildCards             #-}-{-# LANGUAGE TypeFamilies                #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}  {-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-} +-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- | -- Module      : Network.AWS.EMR.AddTags--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>--- License     : This Source Code Form is subject to the terms of---               the Mozilla Public License, v. 2.0.---               A copy of the MPL can be found in the LICENSE file or---               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Copyright   : (c) 2013-2015 Brendan Hay+-- License     : Mozilla Public License, v. 2.0. -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>--- Stability   : experimental+-- Stability   : auto-generated -- Portability : non-portable (GHC extensions) ----- Derived from AWS service descriptions, licensed under Apache 2.0.---- | Adds tags to an Amazon EMR resource. Tags make it easier to associate--- clusters in various ways, such as grouping clusters to track your Amazon EMR--- resource allocation costs. For more information, see <http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-plan-tags.html Tagging Amazon EMRResources>.+-- Adds tags to an Amazon EMR resource. Tags make it easier to associate+-- clusters in various ways, such as grouping clusters to track your Amazon+-- EMR resource allocation costs. For more information, see+-- <http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-plan-tags.html Tagging Amazon EMR Resources>. ----- <http://docs.aws.amazon.com/ElasticMapReduce/latest/API/API_AddTags.html>+-- /See:/ <http://docs.aws.amazon.com/ElasticMapReduce/latest/API/API_AddTags.html AWS API Reference> for AddTags. module Network.AWS.EMR.AddTags     (-    -- * Request-      AddTags-    -- ** Request constructor-    , addTags-    -- ** Request lenses+    -- * Creating a Request+      addTags+    , AddTags+    -- * Request Lenses     , atResourceId     , atTags -    -- * Response-    , AddTagsResponse-    -- ** Response constructor+    -- * Destructuring the Response     , addTagsResponse+    , AddTagsResponse+    -- * Response Lenses+    , atrsStatus     ) where -import Network.AWS.Data (Object)-import Network.AWS.Prelude-import Network.AWS.Request.JSON-import Network.AWS.EMR.Types-import qualified GHC.Exts--data AddTags = AddTags-    { _atResourceId :: Text-    , _atTags       :: List "Tags" Tag-    } deriving (Eq, Read, Show)+import           Network.AWS.EMR.Types+import           Network.AWS.EMR.Types.Product+import           Network.AWS.Prelude+import           Network.AWS.Request+import           Network.AWS.Response --- | 'AddTags' constructor.+-- | This input identifies a cluster and a list of tags to attach. ----- The fields accessible through corresponding lenses are:+-- /See:/ 'addTags' smart constructor.+data AddTags = AddTags'+    { _atResourceId :: !Text+    , _atTags       :: ![Tag]+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'AddTags' with the minimum fields required to make a request. ----- * 'atResourceId' @::@ 'Text'+-- Use one of the following lenses to modify other fields as desired: ----- * 'atTags' @::@ ['Tag']+-- * 'atResourceId' ---addTags :: Text -- ^ 'atResourceId'-        -> AddTags-addTags p1 = AddTags-    { _atResourceId = p1-    , _atTags       = mempty+-- * 'atTags'+addTags+    :: Text -- ^ 'atResourceId'+    -> AddTags+addTags pResourceId_ =+    AddTags'+    { _atResourceId = pResourceId_+    , _atTags = mempty     } --- | The Amazon EMR resource identifier to which tags will be added. This value--- must be a cluster identifier.+-- | The Amazon EMR resource identifier to which tags will be added. This+-- value must be a cluster identifier. atResourceId :: Lens' AddTags Text-atResourceId = lens _atResourceId (\s a -> s { _atResourceId = a })+atResourceId = lens _atResourceId (\ s a -> s{_atResourceId = a});  -- | A list of tags to associate with a cluster and propagate to Amazon EC2--- instances. Tags are user-defined key/value pairs that consist of a required--- key string with a maximum of 128 characters, and an optional value string--- with a maximum of 256 characters.+-- instances. Tags are user-defined key\/value pairs that consist of a+-- required key string with a maximum of 128 characters, and an optional+-- value string with a maximum of 256 characters. atTags :: Lens' AddTags [Tag]-atTags = lens _atTags (\s a -> s { _atTags = a }) . _List+atTags = lens _atTags (\ s a -> s{_atTags = a}) . _Coerce; -data AddTagsResponse = AddTagsResponse-    deriving (Eq, Ord, Read, Show, Generic)+instance AWSRequest AddTags where+        type Sv AddTags = EMR+        type Rs AddTags = AddTagsResponse+        request = postJSON+        response+          = receiveEmpty+              (\ s h x -> AddTagsResponse' <$> (pure (fromEnum s))) --- | 'AddTagsResponse' constructor.-addTagsResponse :: AddTagsResponse-addTagsResponse = AddTagsResponse+instance ToHeaders AddTags where+        toHeaders+          = const+              (mconcat+                 ["X-Amz-Target" =#+                    ("ElasticMapReduce.AddTags" :: ByteString),+                  "Content-Type" =#+                    ("application/x-amz-json-1.1" :: ByteString)]) +instance ToJSON AddTags where+        toJSON AddTags'{..}+          = object+              ["ResourceId" .= _atResourceId, "Tags" .= _atTags]+ instance ToPath AddTags where-    toPath = const "/"+        toPath = const "/"  instance ToQuery AddTags where-    toQuery = const mempty--instance ToHeaders AddTags+        toQuery = const mempty -instance ToJSON AddTags where-    toJSON AddTags{..} = object-        [ "ResourceId" .= _atResourceId-        , "Tags"       .= _atTags-        ]+-- | This output indicates the result of adding tags to a resource.+--+-- /See:/ 'addTagsResponse' smart constructor.+newtype AddTagsResponse = AddTagsResponse'+    { _atrsStatus :: Int+    } deriving (Eq,Read,Show,Data,Typeable,Generic) -instance AWSRequest AddTags where-    type Sv AddTags = EMR-    type Rs AddTags = AddTagsResponse+-- | Creates a value of 'AddTagsResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'atrsStatus'+addTagsResponse+    :: Int -- ^ 'atrsStatus'+    -> AddTagsResponse+addTagsResponse pStatus_ =+    AddTagsResponse'+    { _atrsStatus = pStatus_+    } -    request  = post "AddTags"-    response = nullResponse AddTagsResponse+-- | The response status code.+atrsStatus :: Lens' AddTagsResponse Int+atrsStatus = lens _atrsStatus (\ s a -> s{_atrsStatus = a});
gen/Network/AWS/EMR/DescribeCluster.hs view
@@ -1,115 +1,132 @@-{-# LANGUAGE DataKinds                   #-}-{-# LANGUAGE DeriveGeneric               #-}-{-# LANGUAGE FlexibleInstances           #-}-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}-{-# LANGUAGE LambdaCase                  #-}-{-# LANGUAGE NoImplicitPrelude           #-}-{-# LANGUAGE OverloadedStrings           #-}-{-# LANGUAGE RecordWildCards             #-}-{-# LANGUAGE TypeFamilies                #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}  {-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-} +-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- | -- Module      : Network.AWS.EMR.DescribeCluster--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>--- License     : This Source Code Form is subject to the terms of---               the Mozilla Public License, v. 2.0.---               A copy of the MPL can be found in the LICENSE file or---               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Copyright   : (c) 2013-2015 Brendan Hay+-- License     : Mozilla Public License, v. 2.0. -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>--- Stability   : experimental+-- Stability   : auto-generated -- Portability : non-portable (GHC extensions) ----- Derived from AWS service descriptions, licensed under Apache 2.0.---- | Provides cluster-level details including status, hardware and software--- configuration, VPC settings, and so on. For information about the cluster--- steps, see 'ListSteps'.+-- Provides cluster-level details including status, hardware and software+-- configuration, VPC settings, and so on. For information about the+-- cluster steps, see ListSteps. ----- <http://docs.aws.amazon.com/ElasticMapReduce/latest/API/API_DescribeCluster.html>+-- /See:/ <http://docs.aws.amazon.com/ElasticMapReduce/latest/API/API_DescribeCluster.html AWS API Reference> for DescribeCluster. module Network.AWS.EMR.DescribeCluster     (-    -- * Request-      DescribeCluster-    -- ** Request constructor-    , describeCluster-    -- ** Request lenses+    -- * Creating a Request+      describeCluster+    , DescribeCluster+    -- * Request Lenses     , dcClusterId -    -- * Response-    , DescribeClusterResponse-    -- ** Response constructor+    -- * Destructuring the Response     , describeClusterResponse-    -- ** Response lenses-    , dcrCluster+    , DescribeClusterResponse+    -- * Response Lenses+    , dcrsStatus+    , dcrsCluster     ) where -import Network.AWS.Data (Object)-import Network.AWS.Prelude-import Network.AWS.Request.JSON-import Network.AWS.EMR.Types-import qualified GHC.Exts+import           Network.AWS.EMR.Types+import           Network.AWS.EMR.Types.Product+import           Network.AWS.Prelude+import           Network.AWS.Request+import           Network.AWS.Response -newtype DescribeCluster = DescribeCluster+-- | This input determines which cluster to describe.+--+-- /See:/ 'describeCluster' smart constructor.+newtype DescribeCluster = DescribeCluster'     { _dcClusterId :: Text-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)+    } deriving (Eq,Read,Show,Data,Typeable,Generic) --- | 'DescribeCluster' constructor.------ The fields accessible through corresponding lenses are:+-- | Creates a value of 'DescribeCluster' with the minimum fields required to make a request. ----- * 'dcClusterId' @::@ 'Text'+-- Use one of the following lenses to modify other fields as desired: ---describeCluster :: Text -- ^ 'dcClusterId'-                -> DescribeCluster-describeCluster p1 = DescribeCluster-    { _dcClusterId = p1+-- * 'dcClusterId'+describeCluster+    :: Text -- ^ 'dcClusterId'+    -> DescribeCluster+describeCluster pClusterId_ =+    DescribeCluster'+    { _dcClusterId = pClusterId_     }  -- | The identifier of the cluster to describe. dcClusterId :: Lens' DescribeCluster Text-dcClusterId = lens _dcClusterId (\s a -> s { _dcClusterId = a })+dcClusterId = lens _dcClusterId (\ s a -> s{_dcClusterId = a}); -newtype DescribeClusterResponse = DescribeClusterResponse-    { _dcrCluster :: Cluster-    } deriving (Eq, Read, Show)+instance AWSRequest DescribeCluster where+        type Sv DescribeCluster = EMR+        type Rs DescribeCluster = DescribeClusterResponse+        request = postJSON+        response+          = receiveJSON+              (\ s h x ->+                 DescribeClusterResponse' <$>+                   (pure (fromEnum s)) <*> (x .:> "Cluster")) --- | 'DescribeClusterResponse' constructor.------ The fields accessible through corresponding lenses are:------ * 'dcrCluster' @::@ 'Cluster'----describeClusterResponse :: Cluster -- ^ 'dcrCluster'-                        -> DescribeClusterResponse-describeClusterResponse p1 = DescribeClusterResponse-    { _dcrCluster = p1-    }+instance ToHeaders DescribeCluster where+        toHeaders+          = const+              (mconcat+                 ["X-Amz-Target" =#+                    ("ElasticMapReduce.DescribeCluster" :: ByteString),+                  "Content-Type" =#+                    ("application/x-amz-json-1.1" :: ByteString)]) --- | This output contains the details for the requested cluster.-dcrCluster :: Lens' DescribeClusterResponse Cluster-dcrCluster = lens _dcrCluster (\s a -> s { _dcrCluster = a })+instance ToJSON DescribeCluster where+        toJSON DescribeCluster'{..}+          = object ["ClusterId" .= _dcClusterId]  instance ToPath DescribeCluster where-    toPath = const "/"+        toPath = const "/"  instance ToQuery DescribeCluster where-    toQuery = const mempty--instance ToHeaders DescribeCluster+        toQuery = const mempty -instance ToJSON DescribeCluster where-    toJSON DescribeCluster{..} = object-        [ "ClusterId" .= _dcClusterId-        ]+-- | This output contains the description of the cluster.+--+-- /See:/ 'describeClusterResponse' smart constructor.+data DescribeClusterResponse = DescribeClusterResponse'+    { _dcrsStatus  :: !Int+    , _dcrsCluster :: !Cluster+    } deriving (Eq,Read,Show,Data,Typeable,Generic) -instance AWSRequest DescribeCluster where-    type Sv DescribeCluster = EMR-    type Rs DescribeCluster = DescribeClusterResponse+-- | Creates a value of 'DescribeClusterResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dcrsStatus'+--+-- * 'dcrsCluster'+describeClusterResponse+    :: Int -- ^ 'dcrsStatus'+    -> Cluster -- ^ 'dcrsCluster'+    -> DescribeClusterResponse+describeClusterResponse pStatus_ pCluster_ =+    DescribeClusterResponse'+    { _dcrsStatus = pStatus_+    , _dcrsCluster = pCluster_+    } -    request  = post "DescribeCluster"-    response = jsonResponse+-- | The response status code.+dcrsStatus :: Lens' DescribeClusterResponse Int+dcrsStatus = lens _dcrsStatus (\ s a -> s{_dcrsStatus = a}); -instance FromJSON DescribeClusterResponse where-    parseJSON = withObject "DescribeClusterResponse" $ \o -> DescribeClusterResponse-        <$> o .:  "Cluster"+-- | This output contains the details for the requested cluster.+dcrsCluster :: Lens' DescribeClusterResponse Cluster+dcrsCluster = lens _dcrsCluster (\ s a -> s{_dcrsCluster = a});
− gen/Network/AWS/EMR/DescribeJobFlows.hs
@@ -1,162 +0,0 @@-{-# LANGUAGE DataKinds                   #-}-{-# LANGUAGE DeriveGeneric               #-}-{-# LANGUAGE FlexibleInstances           #-}-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}-{-# LANGUAGE LambdaCase                  #-}-{-# LANGUAGE NoImplicitPrelude           #-}-{-# LANGUAGE OverloadedStrings           #-}-{-# LANGUAGE RecordWildCards             #-}-{-# LANGUAGE TypeFamilies                #-}--{-# OPTIONS_GHC -fno-warn-unused-imports #-}---- Module      : Network.AWS.EMR.DescribeJobFlows--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>--- License     : This Source Code Form is subject to the terms of---               the Mozilla Public License, v. 2.0.---               A copy of the MPL can be found in the LICENSE file or---               you can obtain it at http://mozilla.org/MPL/2.0/.--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>--- Stability   : experimental--- Portability : non-portable (GHC extensions)------ Derived from AWS service descriptions, licensed under Apache 2.0.---- | This API is deprecated and will eventually be removed. We recommend you use 'ListClusters', 'DescribeCluster', 'ListSteps', 'ListInstanceGroups' and 'ListBootstrapActions'--- instead.------ DescribeJobFlows returns a list of job flows that match all of the supplied--- parameters. The parameters can include a list of job flow IDs, job flow--- states, and restrictions on job flow creation date and time.------ Regardless of supplied parameters, only job flows created within the last--- two months are returned.------ If no parameters are supplied, then job flows matching either of the--- following criteria are returned:------ Job flows created and completed in the last two weeks  Job flows created--- within the last two months that are in one of the following states: 'RUNNING', 'WAITING', 'SHUTTING_DOWN', 'STARTING'    Amazon Elastic MapReduce can return a maximum of--- 512 job flow descriptions.------ <http://docs.aws.amazon.com/ElasticMapReduce/latest/API/API_DescribeJobFlows.html>-module Network.AWS.EMR.DescribeJobFlows-    (-    -- * Request-      DescribeJobFlows-    -- ** Request constructor-    , describeJobFlows-    -- ** Request lenses-    , djfCreatedAfter-    , djfCreatedBefore-    , djfJobFlowIds-    , djfJobFlowStates--    -- * Response-    , DescribeJobFlowsResponse-    -- ** Response constructor-    , describeJobFlowsResponse-    -- ** Response lenses-    , djfrJobFlows-    ) where--import Network.AWS.Data (Object)-import Network.AWS.Prelude-import Network.AWS.Request.JSON-import Network.AWS.EMR.Types-import qualified GHC.Exts--data DescribeJobFlows = DescribeJobFlows-    { _djfCreatedAfter  :: Maybe POSIX-    , _djfCreatedBefore :: Maybe POSIX-    , _djfJobFlowIds    :: List "JobFlowIds" Text-    , _djfJobFlowStates :: List "JobFlowStates" JobFlowExecutionState-    } deriving (Eq, Read, Show)---- | 'DescribeJobFlows' constructor.------ The fields accessible through corresponding lenses are:------ * 'djfCreatedAfter' @::@ 'Maybe' 'UTCTime'------ * 'djfCreatedBefore' @::@ 'Maybe' 'UTCTime'------ * 'djfJobFlowIds' @::@ ['Text']------ * 'djfJobFlowStates' @::@ ['JobFlowExecutionState']----describeJobFlows :: DescribeJobFlows-describeJobFlows = DescribeJobFlows-    { _djfCreatedAfter  = Nothing-    , _djfCreatedBefore = Nothing-    , _djfJobFlowIds    = mempty-    , _djfJobFlowStates = mempty-    }---- | Return only job flows created after this date and time.-djfCreatedAfter :: Lens' DescribeJobFlows (Maybe UTCTime)-djfCreatedAfter = lens _djfCreatedAfter (\s a -> s { _djfCreatedAfter = a }) . mapping _Time---- | Return only job flows created before this date and time.-djfCreatedBefore :: Lens' DescribeJobFlows (Maybe UTCTime)-djfCreatedBefore = lens _djfCreatedBefore (\s a -> s { _djfCreatedBefore = a }) . mapping _Time---- | Return only job flows whose job flow ID is contained in this list.-djfJobFlowIds :: Lens' DescribeJobFlows [Text]-djfJobFlowIds = lens _djfJobFlowIds (\s a -> s { _djfJobFlowIds = a }) . _List---- | Return only job flows whose state is contained in this list.-djfJobFlowStates :: Lens' DescribeJobFlows [JobFlowExecutionState]-djfJobFlowStates = lens _djfJobFlowStates (\s a -> s { _djfJobFlowStates = a }) . _List--newtype DescribeJobFlowsResponse = DescribeJobFlowsResponse-    { _djfrJobFlows :: List "JobFlows" JobFlowDetail-    } deriving (Eq, Read, Show, Monoid, Semigroup)--instance GHC.Exts.IsList DescribeJobFlowsResponse where-    type Item DescribeJobFlowsResponse = JobFlowDetail--    fromList = DescribeJobFlowsResponse . GHC.Exts.fromList-    toList   = GHC.Exts.toList . _djfrJobFlows---- | 'DescribeJobFlowsResponse' constructor.------ The fields accessible through corresponding lenses are:------ * 'djfrJobFlows' @::@ ['JobFlowDetail']----describeJobFlowsResponse :: DescribeJobFlowsResponse-describeJobFlowsResponse = DescribeJobFlowsResponse-    { _djfrJobFlows = mempty-    }---- | A list of job flows matching the parameters supplied.-djfrJobFlows :: Lens' DescribeJobFlowsResponse [JobFlowDetail]-djfrJobFlows = lens _djfrJobFlows (\s a -> s { _djfrJobFlows = a }) . _List--instance ToPath DescribeJobFlows where-    toPath = const "/"--instance ToQuery DescribeJobFlows where-    toQuery = const mempty--instance ToHeaders DescribeJobFlows--instance ToJSON DescribeJobFlows where-    toJSON DescribeJobFlows{..} = object-        [ "CreatedAfter"  .= _djfCreatedAfter-        , "CreatedBefore" .= _djfCreatedBefore-        , "JobFlowIds"    .= _djfJobFlowIds-        , "JobFlowStates" .= _djfJobFlowStates-        ]--instance AWSRequest DescribeJobFlows where-    type Sv DescribeJobFlows = EMR-    type Rs DescribeJobFlows = DescribeJobFlowsResponse--    request  = post "DescribeJobFlows"-    response = jsonResponse--instance FromJSON DescribeJobFlowsResponse where-    parseJSON = withObject "DescribeJobFlowsResponse" $ \o -> DescribeJobFlowsResponse-        <$> o .:? "JobFlows" .!= mempty
gen/Network/AWS/EMR/DescribeStep.hs view
@@ -1,123 +1,140 @@-{-# LANGUAGE DataKinds                   #-}-{-# LANGUAGE DeriveGeneric               #-}-{-# LANGUAGE FlexibleInstances           #-}-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}-{-# LANGUAGE LambdaCase                  #-}-{-# LANGUAGE NoImplicitPrelude           #-}-{-# LANGUAGE OverloadedStrings           #-}-{-# LANGUAGE RecordWildCards             #-}-{-# LANGUAGE TypeFamilies                #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}  {-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-} +-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- | -- Module      : Network.AWS.EMR.DescribeStep--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>--- License     : This Source Code Form is subject to the terms of---               the Mozilla Public License, v. 2.0.---               A copy of the MPL can be found in the LICENSE file or---               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Copyright   : (c) 2013-2015 Brendan Hay+-- License     : Mozilla Public License, v. 2.0. -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>--- Stability   : experimental+-- Stability   : auto-generated -- Portability : non-portable (GHC extensions) ----- Derived from AWS service descriptions, licensed under Apache 2.0.---- | Provides more detail about the cluster step.+-- Provides more detail about the cluster step. ----- <http://docs.aws.amazon.com/ElasticMapReduce/latest/API/API_DescribeStep.html>+-- /See:/ <http://docs.aws.amazon.com/ElasticMapReduce/latest/API/API_DescribeStep.html AWS API Reference> for DescribeStep. module Network.AWS.EMR.DescribeStep     (-    -- * Request-      DescribeStep-    -- ** Request constructor-    , describeStep-    -- ** Request lenses+    -- * Creating a Request+      describeStep+    , DescribeStep+    -- * Request Lenses     , dsClusterId     , dsStepId -    -- * Response-    , DescribeStepResponse-    -- ** Response constructor+    -- * Destructuring the Response     , describeStepResponse-    -- ** Response lenses-    , dsrStep+    , DescribeStepResponse+    -- * Response Lenses+    , dsrsStep+    , dsrsStatus     ) where -import Network.AWS.Data (Object)-import Network.AWS.Prelude-import Network.AWS.Request.JSON-import Network.AWS.EMR.Types-import qualified GHC.Exts--data DescribeStep = DescribeStep-    { _dsClusterId :: Text-    , _dsStepId    :: Text-    } deriving (Eq, Ord, Read, Show)+import           Network.AWS.EMR.Types+import           Network.AWS.EMR.Types.Product+import           Network.AWS.Prelude+import           Network.AWS.Request+import           Network.AWS.Response --- | 'DescribeStep' constructor.+-- | This input determines which step to describe. ----- The fields accessible through corresponding lenses are:+-- /See:/ 'describeStep' smart constructor.+data DescribeStep = DescribeStep'+    { _dsClusterId :: !Text+    , _dsStepId    :: !Text+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'DescribeStep' with the minimum fields required to make a request. ----- * 'dsClusterId' @::@ 'Text'+-- Use one of the following lenses to modify other fields as desired: ----- * 'dsStepId' @::@ 'Text'+-- * 'dsClusterId' ---describeStep :: Text -- ^ 'dsClusterId'-             -> Text -- ^ 'dsStepId'-             -> DescribeStep-describeStep p1 p2 = DescribeStep-    { _dsClusterId = p1-    , _dsStepId    = p2+-- * 'dsStepId'+describeStep+    :: Text -- ^ 'dsClusterId'+    -> Text -- ^ 'dsStepId'+    -> DescribeStep+describeStep pClusterId_ pStepId_ =+    DescribeStep'+    { _dsClusterId = pClusterId_+    , _dsStepId = pStepId_     }  -- | The identifier of the cluster with steps to describe. dsClusterId :: Lens' DescribeStep Text-dsClusterId = lens _dsClusterId (\s a -> s { _dsClusterId = a })+dsClusterId = lens _dsClusterId (\ s a -> s{_dsClusterId = a});  -- | The identifier of the step to describe. dsStepId :: Lens' DescribeStep Text-dsStepId = lens _dsStepId (\s a -> s { _dsStepId = a })+dsStepId = lens _dsStepId (\ s a -> s{_dsStepId = a}); -newtype DescribeStepResponse = DescribeStepResponse-    { _dsrStep :: Maybe Step-    } deriving (Eq, Read, Show)+instance AWSRequest DescribeStep where+        type Sv DescribeStep = EMR+        type Rs DescribeStep = DescribeStepResponse+        request = postJSON+        response+          = receiveJSON+              (\ s h x ->+                 DescribeStepResponse' <$>+                   (x .?> "Step") <*> (pure (fromEnum s))) --- | 'DescribeStepResponse' constructor.------ The fields accessible through corresponding lenses are:------ * 'dsrStep' @::@ 'Maybe' 'Step'----describeStepResponse :: DescribeStepResponse-describeStepResponse = DescribeStepResponse-    { _dsrStep = Nothing-    }+instance ToHeaders DescribeStep where+        toHeaders+          = const+              (mconcat+                 ["X-Amz-Target" =#+                    ("ElasticMapReduce.DescribeStep" :: ByteString),+                  "Content-Type" =#+                    ("application/x-amz-json-1.1" :: ByteString)]) --- | The step details for the requested step identifier.-dsrStep :: Lens' DescribeStepResponse (Maybe Step)-dsrStep = lens _dsrStep (\s a -> s { _dsrStep = a })+instance ToJSON DescribeStep where+        toJSON DescribeStep'{..}+          = object+              ["ClusterId" .= _dsClusterId, "StepId" .= _dsStepId]  instance ToPath DescribeStep where-    toPath = const "/"+        toPath = const "/"  instance ToQuery DescribeStep where-    toQuery = const mempty--instance ToHeaders DescribeStep+        toQuery = const mempty -instance ToJSON DescribeStep where-    toJSON DescribeStep{..} = object-        [ "ClusterId" .= _dsClusterId-        , "StepId"    .= _dsStepId-        ]+-- | This output contains the description of the cluster step.+--+-- /See:/ 'describeStepResponse' smart constructor.+data DescribeStepResponse = DescribeStepResponse'+    { _dsrsStep   :: !(Maybe Step)+    , _dsrsStatus :: !Int+    } deriving (Eq,Read,Show,Data,Typeable,Generic) -instance AWSRequest DescribeStep where-    type Sv DescribeStep = EMR-    type Rs DescribeStep = DescribeStepResponse+-- | Creates a value of 'DescribeStepResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dsrsStep'+--+-- * 'dsrsStatus'+describeStepResponse+    :: Int -- ^ 'dsrsStatus'+    -> DescribeStepResponse+describeStepResponse pStatus_ =+    DescribeStepResponse'+    { _dsrsStep = Nothing+    , _dsrsStatus = pStatus_+    } -    request  = post "DescribeStep"-    response = jsonResponse+-- | The step details for the requested step identifier.+dsrsStep :: Lens' DescribeStepResponse (Maybe Step)+dsrsStep = lens _dsrsStep (\ s a -> s{_dsrsStep = a}); -instance FromJSON DescribeStepResponse where-    parseJSON = withObject "DescribeStepResponse" $ \o -> DescribeStepResponse-        <$> o .:? "Step"+-- | The response status code.+dsrsStatus :: Lens' DescribeStepResponse Int+dsrsStatus = lens _dsrsStatus (\ s a -> s{_dsrsStatus = a});
gen/Network/AWS/EMR/ListBootstrapActions.hs view
@@ -1,140 +1,166 @@-{-# LANGUAGE DataKinds                   #-}-{-# LANGUAGE DeriveGeneric               #-}-{-# LANGUAGE FlexibleInstances           #-}-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}-{-# LANGUAGE LambdaCase                  #-}-{-# LANGUAGE NoImplicitPrelude           #-}-{-# LANGUAGE OverloadedStrings           #-}-{-# LANGUAGE RecordWildCards             #-}-{-# LANGUAGE TypeFamilies                #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}  {-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-} +-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- | -- Module      : Network.AWS.EMR.ListBootstrapActions--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>--- License     : This Source Code Form is subject to the terms of---               the Mozilla Public License, v. 2.0.---               A copy of the MPL can be found in the LICENSE file or---               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Copyright   : (c) 2013-2015 Brendan Hay+-- License     : Mozilla Public License, v. 2.0. -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>--- Stability   : experimental+-- Stability   : auto-generated -- Portability : non-portable (GHC extensions) ----- Derived from AWS service descriptions, licensed under Apache 2.0.---- | Provides information about the bootstrap actions associated with a cluster.+-- Provides information about the bootstrap actions associated with a+-- cluster. ----- <http://docs.aws.amazon.com/ElasticMapReduce/latest/API/API_ListBootstrapActions.html>+-- /See:/ <http://docs.aws.amazon.com/ElasticMapReduce/latest/API/API_ListBootstrapActions.html AWS API Reference> for ListBootstrapActions.+--+-- This operation returns paginated results. module Network.AWS.EMR.ListBootstrapActions     (-    -- * Request-      ListBootstrapActions-    -- ** Request constructor-    , listBootstrapActions-    -- ** Request lenses-    , lbaClusterId+    -- * Creating a Request+      listBootstrapActions+    , ListBootstrapActions+    -- * Request Lenses     , lbaMarker+    , lbaClusterId -    -- * Response-    , ListBootstrapActionsResponse-    -- ** Response constructor+    -- * Destructuring the Response     , listBootstrapActionsResponse-    -- ** Response lenses-    , lbarBootstrapActions-    , lbarMarker+    , ListBootstrapActionsResponse+    -- * Response Lenses+    , lbarsBootstrapActions+    , lbarsMarker+    , lbarsStatus     ) where -import Network.AWS.Data (Object)-import Network.AWS.Prelude-import Network.AWS.Request.JSON-import Network.AWS.EMR.Types-import qualified GHC.Exts--data ListBootstrapActions = ListBootstrapActions-    { _lbaClusterId :: Text-    , _lbaMarker    :: Maybe Text-    } deriving (Eq, Ord, Read, Show)+import           Network.AWS.EMR.Types+import           Network.AWS.EMR.Types.Product+import           Network.AWS.Pager+import           Network.AWS.Prelude+import           Network.AWS.Request+import           Network.AWS.Response --- | 'ListBootstrapActions' constructor.+-- | This input determines which bootstrap actions to retrieve. ----- The fields accessible through corresponding lenses are:+-- /See:/ 'listBootstrapActions' smart constructor.+data ListBootstrapActions = ListBootstrapActions'+    { _lbaMarker    :: !(Maybe Text)+    , _lbaClusterId :: !Text+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'ListBootstrapActions' with the minimum fields required to make a request. ----- * 'lbaClusterId' @::@ 'Text'+-- Use one of the following lenses to modify other fields as desired: ----- * 'lbaMarker' @::@ 'Maybe' 'Text'+-- * 'lbaMarker' ---listBootstrapActions :: Text -- ^ 'lbaClusterId'-                     -> ListBootstrapActions-listBootstrapActions p1 = ListBootstrapActions-    { _lbaClusterId = p1-    , _lbaMarker    = Nothing+-- * 'lbaClusterId'+listBootstrapActions+    :: Text -- ^ 'lbaClusterId'+    -> ListBootstrapActions+listBootstrapActions pClusterId_ =+    ListBootstrapActions'+    { _lbaMarker = Nothing+    , _lbaClusterId = pClusterId_     } +-- | The pagination token that indicates the next set of results to retrieve+-- .+lbaMarker :: Lens' ListBootstrapActions (Maybe Text)+lbaMarker = lens _lbaMarker (\ s a -> s{_lbaMarker = a});+ -- | The cluster identifier for the bootstrap actions to list . lbaClusterId :: Lens' ListBootstrapActions Text-lbaClusterId = lens _lbaClusterId (\s a -> s { _lbaClusterId = a })---- | The pagination token that indicates the next set of results to retrieve .-lbaMarker :: Lens' ListBootstrapActions (Maybe Text)-lbaMarker = lens _lbaMarker (\s a -> s { _lbaMarker = a })+lbaClusterId = lens _lbaClusterId (\ s a -> s{_lbaClusterId = a}); -data ListBootstrapActionsResponse = ListBootstrapActionsResponse-    { _lbarBootstrapActions :: List "BootstrapActions" Command-    , _lbarMarker           :: Maybe Text-    } deriving (Eq, Read, Show)+instance AWSPager ListBootstrapActions where+        page rq rs+          | stop (rs ^. lbarsMarker) = Nothing+          | stop (rs ^. lbarsBootstrapActions) = Nothing+          | otherwise =+            Just $ rq & lbaMarker .~ rs ^. lbarsMarker --- | 'ListBootstrapActionsResponse' constructor.------ The fields accessible through corresponding lenses are:------ * 'lbarBootstrapActions' @::@ ['Command']------ * 'lbarMarker' @::@ 'Maybe' 'Text'----listBootstrapActionsResponse :: ListBootstrapActionsResponse-listBootstrapActionsResponse = ListBootstrapActionsResponse-    { _lbarBootstrapActions = mempty-    , _lbarMarker           = Nothing-    }+instance AWSRequest ListBootstrapActions where+        type Sv ListBootstrapActions = EMR+        type Rs ListBootstrapActions =+             ListBootstrapActionsResponse+        request = postJSON+        response+          = receiveJSON+              (\ s h x ->+                 ListBootstrapActionsResponse' <$>+                   (x .?> "BootstrapActions" .!@ mempty) <*>+                     (x .?> "Marker")+                     <*> (pure (fromEnum s))) --- | The bootstrap actions associated with the cluster .-lbarBootstrapActions :: Lens' ListBootstrapActionsResponse [Command]-lbarBootstrapActions =-    lens _lbarBootstrapActions (\s a -> s { _lbarBootstrapActions = a })-        . _List+instance ToHeaders ListBootstrapActions where+        toHeaders+          = const+              (mconcat+                 ["X-Amz-Target" =#+                    ("ElasticMapReduce.ListBootstrapActions" ::+                       ByteString),+                  "Content-Type" =#+                    ("application/x-amz-json-1.1" :: ByteString)]) --- | The pagination token that indicates the next set of results to retrieve .-lbarMarker :: Lens' ListBootstrapActionsResponse (Maybe Text)-lbarMarker = lens _lbarMarker (\s a -> s { _lbarMarker = a })+instance ToJSON ListBootstrapActions where+        toJSON ListBootstrapActions'{..}+          = object+              ["Marker" .= _lbaMarker,+               "ClusterId" .= _lbaClusterId]  instance ToPath ListBootstrapActions where-    toPath = const "/"+        toPath = const "/"  instance ToQuery ListBootstrapActions where-    toQuery = const mempty--instance ToHeaders ListBootstrapActions+        toQuery = const mempty -instance ToJSON ListBootstrapActions where-    toJSON ListBootstrapActions{..} = object-        [ "ClusterId" .= _lbaClusterId-        , "Marker"    .= _lbaMarker-        ]+-- | This output contains the boostrap actions detail .+--+-- /See:/ 'listBootstrapActionsResponse' smart constructor.+data ListBootstrapActionsResponse = ListBootstrapActionsResponse'+    { _lbarsBootstrapActions :: !(Maybe [Command])+    , _lbarsMarker           :: !(Maybe Text)+    , _lbarsStatus           :: !Int+    } deriving (Eq,Read,Show,Data,Typeable,Generic) -instance AWSRequest ListBootstrapActions where-    type Sv ListBootstrapActions = EMR-    type Rs ListBootstrapActions = ListBootstrapActionsResponse+-- | Creates a value of 'ListBootstrapActionsResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'lbarsBootstrapActions'+--+-- * 'lbarsMarker'+--+-- * 'lbarsStatus'+listBootstrapActionsResponse+    :: Int -- ^ 'lbarsStatus'+    -> ListBootstrapActionsResponse+listBootstrapActionsResponse pStatus_ =+    ListBootstrapActionsResponse'+    { _lbarsBootstrapActions = Nothing+    , _lbarsMarker = Nothing+    , _lbarsStatus = pStatus_+    } -    request  = post "ListBootstrapActions"-    response = jsonResponse+-- | The bootstrap actions associated with the cluster .+lbarsBootstrapActions :: Lens' ListBootstrapActionsResponse [Command]+lbarsBootstrapActions = lens _lbarsBootstrapActions (\ s a -> s{_lbarsBootstrapActions = a}) . _Default . _Coerce; -instance FromJSON ListBootstrapActionsResponse where-    parseJSON = withObject "ListBootstrapActionsResponse" $ \o -> ListBootstrapActionsResponse-        <$> o .:? "BootstrapActions" .!= mempty-        <*> o .:? "Marker"+-- | The pagination token that indicates the next set of results to retrieve+-- .+lbarsMarker :: Lens' ListBootstrapActionsResponse (Maybe Text)+lbarsMarker = lens _lbarsMarker (\ s a -> s{_lbarsMarker = a}); -instance AWSPager ListBootstrapActions where-    page rq rs-        | stop (rs ^. lbarMarker) = Nothing-        | otherwise = (\x -> rq & lbaMarker ?~ x)-            <$> (rs ^. lbarMarker)+-- | The response status code.+lbarsStatus :: Lens' ListBootstrapActionsResponse Int+lbarsStatus = lens _lbarsStatus (\ s a -> s{_lbarsStatus = a});
gen/Network/AWS/EMR/ListClusters.hs view
@@ -1,161 +1,185 @@-{-# LANGUAGE DataKinds                   #-}-{-# LANGUAGE DeriveGeneric               #-}-{-# LANGUAGE FlexibleInstances           #-}-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}-{-# LANGUAGE LambdaCase                  #-}-{-# LANGUAGE NoImplicitPrelude           #-}-{-# LANGUAGE OverloadedStrings           #-}-{-# LANGUAGE RecordWildCards             #-}-{-# LANGUAGE TypeFamilies                #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}  {-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-} +-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- | -- Module      : Network.AWS.EMR.ListClusters--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>--- License     : This Source Code Form is subject to the terms of---               the Mozilla Public License, v. 2.0.---               A copy of the MPL can be found in the LICENSE file or---               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Copyright   : (c) 2013-2015 Brendan Hay+-- License     : Mozilla Public License, v. 2.0. -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>--- Stability   : experimental+-- Stability   : auto-generated -- Portability : non-portable (GHC extensions) ----- Derived from AWS service descriptions, licensed under Apache 2.0.---- | Provides the status of all clusters visible to this AWS account. Allows you--- to filter the list of clusters based on certain criteria; for example,--- filtering by cluster creation date and time or by status. This call returns a--- maximum of 50 clusters per call, but returns a marker to track the paging of--- the cluster list across multiple ListClusters calls.+-- Provides the status of all clusters visible to this AWS account. Allows+-- you to filter the list of clusters based on certain criteria; for+-- example, filtering by cluster creation date and time or by status. This+-- call returns a maximum of 50 clusters per call, but returns a marker to+-- track the paging of the cluster list across multiple ListClusters calls. ----- <http://docs.aws.amazon.com/ElasticMapReduce/latest/API/API_ListClusters.html>+-- /See:/ <http://docs.aws.amazon.com/ElasticMapReduce/latest/API/API_ListClusters.html AWS API Reference> for ListClusters.+--+-- This operation returns paginated results. module Network.AWS.EMR.ListClusters     (-    -- * Request-      ListClusters-    -- ** Request constructor-    , listClusters-    -- ** Request lenses-    , lcClusterStates+    -- * Creating a Request+      listClusters+    , ListClusters+    -- * Request Lenses     , lcCreatedAfter-    , lcCreatedBefore     , lcMarker+    , lcClusterStates+    , lcCreatedBefore -    -- * Response-    , ListClustersResponse-    -- ** Response constructor+    -- * Destructuring the Response     , listClustersResponse-    -- ** Response lenses-    , lcrClusters-    , lcrMarker+    , ListClustersResponse+    -- * Response Lenses+    , lcrsMarker+    , lcrsClusters+    , lcrsStatus     ) where -import Network.AWS.Data (Object)-import Network.AWS.Prelude-import Network.AWS.Request.JSON-import Network.AWS.EMR.Types-import qualified GHC.Exts--data ListClusters = ListClusters-    { _lcClusterStates :: List "ClusterStates" ClusterState-    , _lcCreatedAfter  :: Maybe POSIX-    , _lcCreatedBefore :: Maybe POSIX-    , _lcMarker        :: Maybe Text-    } deriving (Eq, Read, Show)+import           Network.AWS.EMR.Types+import           Network.AWS.EMR.Types.Product+import           Network.AWS.Pager+import           Network.AWS.Prelude+import           Network.AWS.Request+import           Network.AWS.Response --- | 'ListClusters' constructor.+-- | This input determines how the ListClusters action filters the list of+-- clusters that it returns. ----- The fields accessible through corresponding lenses are:+-- /See:/ 'listClusters' smart constructor.+data ListClusters = ListClusters'+    { _lcCreatedAfter  :: !(Maybe POSIX)+    , _lcMarker        :: !(Maybe Text)+    , _lcClusterStates :: !(Maybe [ClusterState])+    , _lcCreatedBefore :: !(Maybe POSIX)+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'ListClusters' with the minimum fields required to make a request. ----- * 'lcClusterStates' @::@ ['ClusterState']+-- Use one of the following lenses to modify other fields as desired: ----- * 'lcCreatedAfter' @::@ 'Maybe' 'UTCTime'+-- * 'lcCreatedAfter' ----- * 'lcCreatedBefore' @::@ 'Maybe' 'UTCTime'+-- * 'lcMarker' ----- * 'lcMarker' @::@ 'Maybe' 'Text'+-- * 'lcClusterStates' ---listClusters :: ListClusters-listClusters = ListClusters-    { _lcCreatedAfter  = Nothing+-- * 'lcCreatedBefore'+listClusters+    :: ListClusters+listClusters =+    ListClusters'+    { _lcCreatedAfter = Nothing+    , _lcMarker = Nothing+    , _lcClusterStates = Nothing     , _lcCreatedBefore = Nothing-    , _lcClusterStates = mempty-    , _lcMarker        = Nothing     } --- | The cluster state filters to apply when listing clusters.-lcClusterStates :: Lens' ListClusters [ClusterState]-lcClusterStates = lens _lcClusterStates (\s a -> s { _lcClusterStates = a }) . _List- -- | The creation date and time beginning value filter for listing clusters . lcCreatedAfter :: Lens' ListClusters (Maybe UTCTime)-lcCreatedAfter = lens _lcCreatedAfter (\s a -> s { _lcCreatedAfter = a }) . mapping _Time---- | The creation date and time end value filter for listing clusters .-lcCreatedBefore :: Lens' ListClusters (Maybe UTCTime)-lcCreatedBefore = lens _lcCreatedBefore (\s a -> s { _lcCreatedBefore = a }) . mapping _Time+lcCreatedAfter = lens _lcCreatedAfter (\ s a -> s{_lcCreatedAfter = a}) . mapping _Time;  -- | The pagination token that indicates the next set of results to retrieve. lcMarker :: Lens' ListClusters (Maybe Text)-lcMarker = lens _lcMarker (\s a -> s { _lcMarker = a })+lcMarker = lens _lcMarker (\ s a -> s{_lcMarker = a}); -data ListClustersResponse = ListClustersResponse-    { _lcrClusters :: List "Clusters" ClusterSummary-    , _lcrMarker   :: Maybe Text-    } deriving (Eq, Read, Show)+-- | The cluster state filters to apply when listing clusters.+lcClusterStates :: Lens' ListClusters [ClusterState]+lcClusterStates = lens _lcClusterStates (\ s a -> s{_lcClusterStates = a}) . _Default . _Coerce; --- | 'ListClustersResponse' constructor.------ The fields accessible through corresponding lenses are:------ * 'lcrClusters' @::@ ['ClusterSummary']------ * 'lcrMarker' @::@ 'Maybe' 'Text'----listClustersResponse :: ListClustersResponse-listClustersResponse = ListClustersResponse-    { _lcrClusters = mempty-    , _lcrMarker   = Nothing-    }+-- | The creation date and time end value filter for listing clusters .+lcCreatedBefore :: Lens' ListClusters (Maybe UTCTime)+lcCreatedBefore = lens _lcCreatedBefore (\ s a -> s{_lcCreatedBefore = a}) . mapping _Time; --- | The list of clusters for the account based on the given filters.-lcrClusters :: Lens' ListClustersResponse [ClusterSummary]-lcrClusters = lens _lcrClusters (\s a -> s { _lcrClusters = a }) . _List+instance AWSPager ListClusters where+        page rq rs+          | stop (rs ^. lcrsMarker) = Nothing+          | stop (rs ^. lcrsClusters) = Nothing+          | otherwise =+            Just $ rq & lcMarker .~ rs ^. lcrsMarker --- | The pagination token that indicates the next set of results to retrieve.-lcrMarker :: Lens' ListClustersResponse (Maybe Text)-lcrMarker = lens _lcrMarker (\s a -> s { _lcrMarker = a })+instance AWSRequest ListClusters where+        type Sv ListClusters = EMR+        type Rs ListClusters = ListClustersResponse+        request = postJSON+        response+          = receiveJSON+              (\ s h x ->+                 ListClustersResponse' <$>+                   (x .?> "Marker") <*> (x .?> "Clusters" .!@ mempty)+                     <*> (pure (fromEnum s))) +instance ToHeaders ListClusters where+        toHeaders+          = const+              (mconcat+                 ["X-Amz-Target" =#+                    ("ElasticMapReduce.ListClusters" :: ByteString),+                  "Content-Type" =#+                    ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON ListClusters where+        toJSON ListClusters'{..}+          = object+              ["CreatedAfter" .= _lcCreatedAfter,+               "Marker" .= _lcMarker,+               "ClusterStates" .= _lcClusterStates,+               "CreatedBefore" .= _lcCreatedBefore]+ instance ToPath ListClusters where-    toPath = const "/"+        toPath = const "/"  instance ToQuery ListClusters where-    toQuery = const mempty--instance ToHeaders ListClusters+        toQuery = const mempty -instance ToJSON ListClusters where-    toJSON ListClusters{..} = object-        [ "CreatedAfter"  .= _lcCreatedAfter-        , "CreatedBefore" .= _lcCreatedBefore-        , "ClusterStates" .= _lcClusterStates-        , "Marker"        .= _lcMarker-        ]+-- | This contains a ClusterSummaryList with the cluster details; for+-- example, the cluster IDs, names, and status.+--+-- /See:/ 'listClustersResponse' smart constructor.+data ListClustersResponse = ListClustersResponse'+    { _lcrsMarker   :: !(Maybe Text)+    , _lcrsClusters :: !(Maybe [ClusterSummary])+    , _lcrsStatus   :: !Int+    } deriving (Eq,Read,Show,Data,Typeable,Generic) -instance AWSRequest ListClusters where-    type Sv ListClusters = EMR-    type Rs ListClusters = ListClustersResponse+-- | Creates a value of 'ListClustersResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'lcrsMarker'+--+-- * 'lcrsClusters'+--+-- * 'lcrsStatus'+listClustersResponse+    :: Int -- ^ 'lcrsStatus'+    -> ListClustersResponse+listClustersResponse pStatus_ =+    ListClustersResponse'+    { _lcrsMarker = Nothing+    , _lcrsClusters = Nothing+    , _lcrsStatus = pStatus_+    } -    request  = post "ListClusters"-    response = jsonResponse+-- | The pagination token that indicates the next set of results to retrieve.+lcrsMarker :: Lens' ListClustersResponse (Maybe Text)+lcrsMarker = lens _lcrsMarker (\ s a -> s{_lcrsMarker = a}); -instance FromJSON ListClustersResponse where-    parseJSON = withObject "ListClustersResponse" $ \o -> ListClustersResponse-        <$> o .:? "Clusters" .!= mempty-        <*> o .:? "Marker"+-- | The list of clusters for the account based on the given filters.+lcrsClusters :: Lens' ListClustersResponse [ClusterSummary]+lcrsClusters = lens _lcrsClusters (\ s a -> s{_lcrsClusters = a}) . _Default . _Coerce; -instance AWSPager ListClusters where-    page rq rs-        | stop (rs ^. lcrMarker) = Nothing-        | otherwise = (\x -> rq & lcMarker ?~ x)-            <$> (rs ^. lcrMarker)+-- | The response status code.+lcrsStatus :: Lens' ListClustersResponse Int+lcrsStatus = lens _lcrsStatus (\ s a -> s{_lcrsStatus = a});
gen/Network/AWS/EMR/ListInstanceGroups.hs view
@@ -1,140 +1,163 @@-{-# LANGUAGE DataKinds                   #-}-{-# LANGUAGE DeriveGeneric               #-}-{-# LANGUAGE FlexibleInstances           #-}-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}-{-# LANGUAGE LambdaCase                  #-}-{-# LANGUAGE NoImplicitPrelude           #-}-{-# LANGUAGE OverloadedStrings           #-}-{-# LANGUAGE RecordWildCards             #-}-{-# LANGUAGE TypeFamilies                #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}  {-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-} +-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- | -- Module      : Network.AWS.EMR.ListInstanceGroups--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>--- License     : This Source Code Form is subject to the terms of---               the Mozilla Public License, v. 2.0.---               A copy of the MPL can be found in the LICENSE file or---               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Copyright   : (c) 2013-2015 Brendan Hay+-- License     : Mozilla Public License, v. 2.0. -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>--- Stability   : experimental+-- Stability   : auto-generated -- Portability : non-portable (GHC extensions) ----- Derived from AWS service descriptions, licensed under Apache 2.0.---- | Provides all available details about the instance groups in a cluster.+-- Provides all available details about the instance groups in a cluster. ----- <http://docs.aws.amazon.com/ElasticMapReduce/latest/API/API_ListInstanceGroups.html>+-- /See:/ <http://docs.aws.amazon.com/ElasticMapReduce/latest/API/API_ListInstanceGroups.html AWS API Reference> for ListInstanceGroups.+--+-- This operation returns paginated results. module Network.AWS.EMR.ListInstanceGroups     (-    -- * Request-      ListInstanceGroups-    -- ** Request constructor-    , listInstanceGroups-    -- ** Request lenses-    , ligClusterId+    -- * Creating a Request+      listInstanceGroups+    , ListInstanceGroups+    -- * Request Lenses     , ligMarker+    , ligClusterId -    -- * Response-    , ListInstanceGroupsResponse-    -- ** Response constructor+    -- * Destructuring the Response     , listInstanceGroupsResponse-    -- ** Response lenses-    , ligrInstanceGroups-    , ligrMarker+    , ListInstanceGroupsResponse+    -- * Response Lenses+    , ligrsMarker+    , ligrsInstanceGroups+    , ligrsStatus     ) where -import Network.AWS.Data (Object)-import Network.AWS.Prelude-import Network.AWS.Request.JSON-import Network.AWS.EMR.Types-import qualified GHC.Exts--data ListInstanceGroups = ListInstanceGroups-    { _ligClusterId :: Text-    , _ligMarker    :: Maybe Text-    } deriving (Eq, Ord, Read, Show)+import           Network.AWS.EMR.Types+import           Network.AWS.EMR.Types.Product+import           Network.AWS.Pager+import           Network.AWS.Prelude+import           Network.AWS.Request+import           Network.AWS.Response --- | 'ListInstanceGroups' constructor.+-- | This input determines which instance groups to retrieve. ----- The fields accessible through corresponding lenses are:+-- /See:/ 'listInstanceGroups' smart constructor.+data ListInstanceGroups = ListInstanceGroups'+    { _ligMarker    :: !(Maybe Text)+    , _ligClusterId :: !Text+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'ListInstanceGroups' with the minimum fields required to make a request. ----- * 'ligClusterId' @::@ 'Text'+-- Use one of the following lenses to modify other fields as desired: ----- * 'ligMarker' @::@ 'Maybe' 'Text'+-- * 'ligMarker' ---listInstanceGroups :: Text -- ^ 'ligClusterId'-                   -> ListInstanceGroups-listInstanceGroups p1 = ListInstanceGroups-    { _ligClusterId = p1-    , _ligMarker    = Nothing+-- * 'ligClusterId'+listInstanceGroups+    :: Text -- ^ 'ligClusterId'+    -> ListInstanceGroups+listInstanceGroups pClusterId_ =+    ListInstanceGroups'+    { _ligMarker = Nothing+    , _ligClusterId = pClusterId_     } --- | The identifier of the cluster for which to list the instance groups.-ligClusterId :: Lens' ListInstanceGroups Text-ligClusterId = lens _ligClusterId (\s a -> s { _ligClusterId = a })- -- | The pagination token that indicates the next set of results to retrieve. ligMarker :: Lens' ListInstanceGroups (Maybe Text)-ligMarker = lens _ligMarker (\s a -> s { _ligMarker = a })+ligMarker = lens _ligMarker (\ s a -> s{_ligMarker = a}); -data ListInstanceGroupsResponse = ListInstanceGroupsResponse-    { _ligrInstanceGroups :: List "InstanceGroups" InstanceGroup-    , _ligrMarker         :: Maybe Text-    } deriving (Eq, Read, Show)+-- | The identifier of the cluster for which to list the instance groups.+ligClusterId :: Lens' ListInstanceGroups Text+ligClusterId = lens _ligClusterId (\ s a -> s{_ligClusterId = a}); --- | 'ListInstanceGroupsResponse' constructor.------ The fields accessible through corresponding lenses are:------ * 'ligrInstanceGroups' @::@ ['InstanceGroup']------ * 'ligrMarker' @::@ 'Maybe' 'Text'----listInstanceGroupsResponse :: ListInstanceGroupsResponse-listInstanceGroupsResponse = ListInstanceGroupsResponse-    { _ligrInstanceGroups = mempty-    , _ligrMarker         = Nothing-    }+instance AWSPager ListInstanceGroups where+        page rq rs+          | stop (rs ^. ligrsMarker) = Nothing+          | stop (rs ^. ligrsInstanceGroups) = Nothing+          | otherwise =+            Just $ rq & ligMarker .~ rs ^. ligrsMarker --- | The list of instance groups for the cluster and given filters.-ligrInstanceGroups :: Lens' ListInstanceGroupsResponse [InstanceGroup]-ligrInstanceGroups =-    lens _ligrInstanceGroups (\s a -> s { _ligrInstanceGroups = a })-        . _List+instance AWSRequest ListInstanceGroups where+        type Sv ListInstanceGroups = EMR+        type Rs ListInstanceGroups =+             ListInstanceGroupsResponse+        request = postJSON+        response+          = receiveJSON+              (\ s h x ->+                 ListInstanceGroupsResponse' <$>+                   (x .?> "Marker") <*>+                     (x .?> "InstanceGroups" .!@ mempty)+                     <*> (pure (fromEnum s))) --- | The pagination token that indicates the next set of results to retrieve.-ligrMarker :: Lens' ListInstanceGroupsResponse (Maybe Text)-ligrMarker = lens _ligrMarker (\s a -> s { _ligrMarker = a })+instance ToHeaders ListInstanceGroups where+        toHeaders+          = const+              (mconcat+                 ["X-Amz-Target" =#+                    ("ElasticMapReduce.ListInstanceGroups" ::+                       ByteString),+                  "Content-Type" =#+                    ("application/x-amz-json-1.1" :: ByteString)]) +instance ToJSON ListInstanceGroups where+        toJSON ListInstanceGroups'{..}+          = object+              ["Marker" .= _ligMarker,+               "ClusterId" .= _ligClusterId]+ instance ToPath ListInstanceGroups where-    toPath = const "/"+        toPath = const "/"  instance ToQuery ListInstanceGroups where-    toQuery = const mempty--instance ToHeaders ListInstanceGroups+        toQuery = const mempty -instance ToJSON ListInstanceGroups where-    toJSON ListInstanceGroups{..} = object-        [ "ClusterId" .= _ligClusterId-        , "Marker"    .= _ligMarker-        ]+-- | This input determines which instance groups to retrieve.+--+-- /See:/ 'listInstanceGroupsResponse' smart constructor.+data ListInstanceGroupsResponse = ListInstanceGroupsResponse'+    { _ligrsMarker         :: !(Maybe Text)+    , _ligrsInstanceGroups :: !(Maybe [InstanceGroup])+    , _ligrsStatus         :: !Int+    } deriving (Eq,Read,Show,Data,Typeable,Generic) -instance AWSRequest ListInstanceGroups where-    type Sv ListInstanceGroups = EMR-    type Rs ListInstanceGroups = ListInstanceGroupsResponse+-- | Creates a value of 'ListInstanceGroupsResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ligrsMarker'+--+-- * 'ligrsInstanceGroups'+--+-- * 'ligrsStatus'+listInstanceGroupsResponse+    :: Int -- ^ 'ligrsStatus'+    -> ListInstanceGroupsResponse+listInstanceGroupsResponse pStatus_ =+    ListInstanceGroupsResponse'+    { _ligrsMarker = Nothing+    , _ligrsInstanceGroups = Nothing+    , _ligrsStatus = pStatus_+    } -    request  = post "ListInstanceGroups"-    response = jsonResponse+-- | The pagination token that indicates the next set of results to retrieve.+ligrsMarker :: Lens' ListInstanceGroupsResponse (Maybe Text)+ligrsMarker = lens _ligrsMarker (\ s a -> s{_ligrsMarker = a}); -instance FromJSON ListInstanceGroupsResponse where-    parseJSON = withObject "ListInstanceGroupsResponse" $ \o -> ListInstanceGroupsResponse-        <$> o .:? "InstanceGroups" .!= mempty-        <*> o .:? "Marker"+-- | The list of instance groups for the cluster and given filters.+ligrsInstanceGroups :: Lens' ListInstanceGroupsResponse [InstanceGroup]+ligrsInstanceGroups = lens _ligrsInstanceGroups (\ s a -> s{_ligrsInstanceGroups = a}) . _Default . _Coerce; -instance AWSPager ListInstanceGroups where-    page rq rs-        | stop (rs ^. ligrMarker) = Nothing-        | otherwise = (\x -> rq & ligMarker ?~ x)-            <$> (rs ^. ligrMarker)+-- | The response status code.+ligrsStatus :: Lens' ListInstanceGroupsResponse Int+ligrsStatus = lens _ligrsStatus (\ s a -> s{_ligrsStatus = a});
gen/Network/AWS/EMR/ListInstances.hs view
@@ -1,165 +1,184 @@-{-# LANGUAGE DataKinds                   #-}-{-# LANGUAGE DeriveGeneric               #-}-{-# LANGUAGE FlexibleInstances           #-}-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}-{-# LANGUAGE LambdaCase                  #-}-{-# LANGUAGE NoImplicitPrelude           #-}-{-# LANGUAGE OverloadedStrings           #-}-{-# LANGUAGE RecordWildCards             #-}-{-# LANGUAGE TypeFamilies                #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}  {-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-} +-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- | -- Module      : Network.AWS.EMR.ListInstances--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>--- License     : This Source Code Form is subject to the terms of---               the Mozilla Public License, v. 2.0.---               A copy of the MPL can be found in the LICENSE file or---               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Copyright   : (c) 2013-2015 Brendan Hay+-- License     : Mozilla Public License, v. 2.0. -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>--- Stability   : experimental+-- Stability   : auto-generated -- Portability : non-portable (GHC extensions) ----- Derived from AWS service descriptions, licensed under Apache 2.0.---- | Provides information about the cluster instances that Amazon EMR provisions--- on behalf of a user when it creates the cluster. For example, this operation--- indicates when the EC2 instances reach the Ready state, when instances become--- available to Amazon EMR to use for jobs, and the IP addresses for cluster--- instances, etc.+-- Provides information about the cluster instances that Amazon EMR+-- provisions on behalf of a user when it creates the cluster. For example,+-- this operation indicates when the EC2 instances reach the Ready state,+-- when instances become available to Amazon EMR to use for jobs, and the+-- IP addresses for cluster instances, etc. ----- <http://docs.aws.amazon.com/ElasticMapReduce/latest/API/API_ListInstances.html>+-- /See:/ <http://docs.aws.amazon.com/ElasticMapReduce/latest/API/API_ListInstances.html AWS API Reference> for ListInstances.+--+-- This operation returns paginated results. module Network.AWS.EMR.ListInstances     (-    -- * Request-      ListInstances-    -- ** Request constructor-    , listInstances-    -- ** Request lenses-    , liClusterId-    , liInstanceGroupId+    -- * Creating a Request+      listInstances+    , ListInstances+    -- * Request Lenses     , liInstanceGroupTypes     , liMarker+    , liInstanceGroupId+    , liClusterId -    -- * Response-    , ListInstancesResponse-    -- ** Response constructor+    -- * Destructuring the Response     , listInstancesResponse-    -- ** Response lenses-    , lirInstances-    , lirMarker+    , ListInstancesResponse+    -- * Response Lenses+    , lirsInstances+    , lirsMarker+    , lirsStatus     ) where -import Network.AWS.Data (Object)-import Network.AWS.Prelude-import Network.AWS.Request.JSON-import Network.AWS.EMR.Types-import qualified GHC.Exts--data ListInstances = ListInstances-    { _liClusterId          :: Text-    , _liInstanceGroupId    :: Maybe Text-    , _liInstanceGroupTypes :: List "InstanceGroupTypes" InstanceGroupType-    , _liMarker             :: Maybe Text-    } deriving (Eq, Read, Show)+import           Network.AWS.EMR.Types+import           Network.AWS.EMR.Types.Product+import           Network.AWS.Pager+import           Network.AWS.Prelude+import           Network.AWS.Request+import           Network.AWS.Response --- | 'ListInstances' constructor.+-- | This input determines which instances to list. ----- The fields accessible through corresponding lenses are:+-- /See:/ 'listInstances' smart constructor.+data ListInstances = ListInstances'+    { _liInstanceGroupTypes :: !(Maybe [InstanceGroupType])+    , _liMarker             :: !(Maybe Text)+    , _liInstanceGroupId    :: !(Maybe Text)+    , _liClusterId          :: !Text+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'ListInstances' with the minimum fields required to make a request. ----- * 'liClusterId' @::@ 'Text'+-- Use one of the following lenses to modify other fields as desired: ----- * 'liInstanceGroupId' @::@ 'Maybe' 'Text'+-- * 'liInstanceGroupTypes' ----- * 'liInstanceGroupTypes' @::@ ['InstanceGroupType']+-- * 'liMarker' ----- * 'liMarker' @::@ 'Maybe' 'Text'+-- * 'liInstanceGroupId' ---listInstances :: Text -- ^ 'liClusterId'-              -> ListInstances-listInstances p1 = ListInstances-    { _liClusterId          = p1-    , _liInstanceGroupId    = Nothing-    , _liInstanceGroupTypes = mempty-    , _liMarker             = Nothing+-- * 'liClusterId'+listInstances+    :: Text -- ^ 'liClusterId'+    -> ListInstances+listInstances pClusterId_ =+    ListInstances'+    { _liInstanceGroupTypes = Nothing+    , _liMarker = Nothing+    , _liInstanceGroupId = Nothing+    , _liClusterId = pClusterId_     } --- | The identifier of the cluster for which to list the instances.-liClusterId :: Lens' ListInstances Text-liClusterId = lens _liClusterId (\s a -> s { _liClusterId = a })---- | The identifier of the instance group for which to list the instances.-liInstanceGroupId :: Lens' ListInstances (Maybe Text)-liInstanceGroupId =-    lens _liInstanceGroupId (\s a -> s { _liInstanceGroupId = a })- -- | The type of instance group for which to list the instances. liInstanceGroupTypes :: Lens' ListInstances [InstanceGroupType]-liInstanceGroupTypes =-    lens _liInstanceGroupTypes (\s a -> s { _liInstanceGroupTypes = a })-        . _List+liInstanceGroupTypes = lens _liInstanceGroupTypes (\ s a -> s{_liInstanceGroupTypes = a}) . _Default . _Coerce;  -- | The pagination token that indicates the next set of results to retrieve. liMarker :: Lens' ListInstances (Maybe Text)-liMarker = lens _liMarker (\s a -> s { _liMarker = a })+liMarker = lens _liMarker (\ s a -> s{_liMarker = a}); -data ListInstancesResponse = ListInstancesResponse-    { _lirInstances :: List "Instances" Instance-    , _lirMarker    :: Maybe Text-    } deriving (Eq, Read, Show)+-- | The identifier of the instance group for which to list the instances.+liInstanceGroupId :: Lens' ListInstances (Maybe Text)+liInstanceGroupId = lens _liInstanceGroupId (\ s a -> s{_liInstanceGroupId = a}); --- | 'ListInstancesResponse' constructor.------ The fields accessible through corresponding lenses are:------ * 'lirInstances' @::@ ['Instance']------ * 'lirMarker' @::@ 'Maybe' 'Text'----listInstancesResponse :: ListInstancesResponse-listInstancesResponse = ListInstancesResponse-    { _lirInstances = mempty-    , _lirMarker    = Nothing-    }+-- | The identifier of the cluster for which to list the instances.+liClusterId :: Lens' ListInstances Text+liClusterId = lens _liClusterId (\ s a -> s{_liClusterId = a}); --- | The list of instances for the cluster and given filters.-lirInstances :: Lens' ListInstancesResponse [Instance]-lirInstances = lens _lirInstances (\s a -> s { _lirInstances = a }) . _List+instance AWSPager ListInstances where+        page rq rs+          | stop (rs ^. lirsMarker) = Nothing+          | stop (rs ^. lirsInstances) = Nothing+          | otherwise =+            Just $ rq & liMarker .~ rs ^. lirsMarker --- | The pagination token that indicates the next set of results to retrieve.-lirMarker :: Lens' ListInstancesResponse (Maybe Text)-lirMarker = lens _lirMarker (\s a -> s { _lirMarker = a })+instance AWSRequest ListInstances where+        type Sv ListInstances = EMR+        type Rs ListInstances = ListInstancesResponse+        request = postJSON+        response+          = receiveJSON+              (\ s h x ->+                 ListInstancesResponse' <$>+                   (x .?> "Instances" .!@ mempty) <*> (x .?> "Marker")+                     <*> (pure (fromEnum s))) +instance ToHeaders ListInstances where+        toHeaders+          = const+              (mconcat+                 ["X-Amz-Target" =#+                    ("ElasticMapReduce.ListInstances" :: ByteString),+                  "Content-Type" =#+                    ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON ListInstances where+        toJSON ListInstances'{..}+          = object+              ["InstanceGroupTypes" .= _liInstanceGroupTypes,+               "Marker" .= _liMarker,+               "InstanceGroupId" .= _liInstanceGroupId,+               "ClusterId" .= _liClusterId]+ instance ToPath ListInstances where-    toPath = const "/"+        toPath = const "/"  instance ToQuery ListInstances where-    toQuery = const mempty--instance ToHeaders ListInstances+        toQuery = const mempty -instance ToJSON ListInstances where-    toJSON ListInstances{..} = object-        [ "ClusterId"          .= _liClusterId-        , "InstanceGroupId"    .= _liInstanceGroupId-        , "InstanceGroupTypes" .= _liInstanceGroupTypes-        , "Marker"             .= _liMarker-        ]+-- | This output contains the list of instances.+--+-- /See:/ 'listInstancesResponse' smart constructor.+data ListInstancesResponse = ListInstancesResponse'+    { _lirsInstances :: !(Maybe [Instance])+    , _lirsMarker    :: !(Maybe Text)+    , _lirsStatus    :: !Int+    } deriving (Eq,Read,Show,Data,Typeable,Generic) -instance AWSRequest ListInstances where-    type Sv ListInstances = EMR-    type Rs ListInstances = ListInstancesResponse+-- | Creates a value of 'ListInstancesResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'lirsInstances'+--+-- * 'lirsMarker'+--+-- * 'lirsStatus'+listInstancesResponse+    :: Int -- ^ 'lirsStatus'+    -> ListInstancesResponse+listInstancesResponse pStatus_ =+    ListInstancesResponse'+    { _lirsInstances = Nothing+    , _lirsMarker = Nothing+    , _lirsStatus = pStatus_+    } -    request  = post "ListInstances"-    response = jsonResponse+-- | The list of instances for the cluster and given filters.+lirsInstances :: Lens' ListInstancesResponse [Instance]+lirsInstances = lens _lirsInstances (\ s a -> s{_lirsInstances = a}) . _Default . _Coerce; -instance FromJSON ListInstancesResponse where-    parseJSON = withObject "ListInstancesResponse" $ \o -> ListInstancesResponse-        <$> o .:? "Instances" .!= mempty-        <*> o .:? "Marker"+-- | The pagination token that indicates the next set of results to retrieve.+lirsMarker :: Lens' ListInstancesResponse (Maybe Text)+lirsMarker = lens _lirsMarker (\ s a -> s{_lirsMarker = a}); -instance AWSPager ListInstances where-    page rq rs-        | stop (rs ^. lirMarker) = Nothing-        | otherwise = (\x -> rq & liMarker ?~ x)-            <$> (rs ^. lirMarker)+-- | The response status code.+lirsStatus :: Lens' ListInstancesResponse Int+lirsStatus = lens _lirsStatus (\ s a -> s{_lirsStatus = a});
gen/Network/AWS/EMR/ListSteps.hs view
@@ -1,158 +1,179 @@-{-# LANGUAGE DataKinds                   #-}-{-# LANGUAGE DeriveGeneric               #-}-{-# LANGUAGE FlexibleInstances           #-}-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}-{-# LANGUAGE LambdaCase                  #-}-{-# LANGUAGE NoImplicitPrelude           #-}-{-# LANGUAGE OverloadedStrings           #-}-{-# LANGUAGE RecordWildCards             #-}-{-# LANGUAGE TypeFamilies                #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}  {-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-} +-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- | -- Module      : Network.AWS.EMR.ListSteps--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>--- License     : This Source Code Form is subject to the terms of---               the Mozilla Public License, v. 2.0.---               A copy of the MPL can be found in the LICENSE file or---               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Copyright   : (c) 2013-2015 Brendan Hay+-- License     : Mozilla Public License, v. 2.0. -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>--- Stability   : experimental+-- Stability   : auto-generated -- Portability : non-portable (GHC extensions) ----- Derived from AWS service descriptions, licensed under Apache 2.0.---- | Provides a list of steps for the cluster.+-- Provides a list of steps for the cluster. ----- <http://docs.aws.amazon.com/ElasticMapReduce/latest/API/API_ListSteps.html>+-- /See:/ <http://docs.aws.amazon.com/ElasticMapReduce/latest/API/API_ListSteps.html AWS API Reference> for ListSteps.+--+-- This operation returns paginated results. module Network.AWS.EMR.ListSteps     (-    -- * Request-      ListSteps-    -- ** Request constructor-    , listSteps-    -- ** Request lenses-    , lsClusterId-    , lsMarker+    -- * Creating a Request+      listSteps+    , ListSteps+    -- * Request Lenses     , lsStepIds     , lsStepStates+    , lsMarker+    , lsClusterId -    -- * Response-    , ListStepsResponse-    -- ** Response constructor+    -- * Destructuring the Response     , listStepsResponse-    -- ** Response lenses-    , lsrMarker-    , lsrSteps+    , ListStepsResponse+    -- * Response Lenses+    , lsrsSteps+    , lsrsMarker+    , lsrsStatus     ) where -import Network.AWS.Data (Object)-import Network.AWS.Prelude-import Network.AWS.Request.JSON-import Network.AWS.EMR.Types-import qualified GHC.Exts--data ListSteps = ListSteps-    { _lsClusterId  :: Text-    , _lsMarker     :: Maybe Text-    , _lsStepIds    :: List "StepIds" Text-    , _lsStepStates :: List "StepStates" StepState-    } deriving (Eq, Read, Show)+import           Network.AWS.EMR.Types+import           Network.AWS.EMR.Types.Product+import           Network.AWS.Pager+import           Network.AWS.Prelude+import           Network.AWS.Request+import           Network.AWS.Response --- | 'ListSteps' constructor.+-- | This input determines which steps to list. ----- The fields accessible through corresponding lenses are:+-- /See:/ 'listSteps' smart constructor.+data ListSteps = ListSteps'+    { _lsStepIds    :: !(Maybe [Text])+    , _lsStepStates :: !(Maybe [StepState])+    , _lsMarker     :: !(Maybe Text)+    , _lsClusterId  :: !Text+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'ListSteps' with the minimum fields required to make a request. ----- * 'lsClusterId' @::@ 'Text'+-- Use one of the following lenses to modify other fields as desired: ----- * 'lsMarker' @::@ 'Maybe' 'Text'+-- * 'lsStepIds' ----- * 'lsStepIds' @::@ ['Text']+-- * 'lsStepStates' ----- * 'lsStepStates' @::@ ['StepState']+-- * 'lsMarker' ---listSteps :: Text -- ^ 'lsClusterId'-          -> ListSteps-listSteps p1 = ListSteps-    { _lsClusterId  = p1-    , _lsStepStates = mempty-    , _lsStepIds    = mempty-    , _lsMarker     = Nothing+-- * 'lsClusterId'+listSteps+    :: Text -- ^ 'lsClusterId'+    -> ListSteps+listSteps pClusterId_ =+    ListSteps'+    { _lsStepIds = Nothing+    , _lsStepStates = Nothing+    , _lsMarker = Nothing+    , _lsClusterId = pClusterId_     } --- | The identifier of the cluster for which to list the steps.-lsClusterId :: Lens' ListSteps Text-lsClusterId = lens _lsClusterId (\s a -> s { _lsClusterId = a })---- | The pagination token that indicates the next set of results to retrieve.-lsMarker :: Lens' ListSteps (Maybe Text)-lsMarker = lens _lsMarker (\s a -> s { _lsMarker = a })- -- | The filter to limit the step list based on the identifier of the steps. lsStepIds :: Lens' ListSteps [Text]-lsStepIds = lens _lsStepIds (\s a -> s { _lsStepIds = a }) . _List+lsStepIds = lens _lsStepIds (\ s a -> s{_lsStepIds = a}) . _Default . _Coerce;  -- | The filter to limit the step list based on certain states. lsStepStates :: Lens' ListSteps [StepState]-lsStepStates = lens _lsStepStates (\s a -> s { _lsStepStates = a }) . _List+lsStepStates = lens _lsStepStates (\ s a -> s{_lsStepStates = a}) . _Default . _Coerce; -data ListStepsResponse = ListStepsResponse-    { _lsrMarker :: Maybe Text-    , _lsrSteps  :: List "Steps" StepSummary-    } deriving (Eq, Read, Show)+-- | The pagination token that indicates the next set of results to retrieve.+lsMarker :: Lens' ListSteps (Maybe Text)+lsMarker = lens _lsMarker (\ s a -> s{_lsMarker = a}); --- | 'ListStepsResponse' constructor.------ The fields accessible through corresponding lenses are:------ * 'lsrMarker' @::@ 'Maybe' 'Text'------ * 'lsrSteps' @::@ ['StepSummary']----listStepsResponse :: ListStepsResponse-listStepsResponse = ListStepsResponse-    { _lsrSteps  = mempty-    , _lsrMarker = Nothing-    }+-- | The identifier of the cluster for which to list the steps.+lsClusterId :: Lens' ListSteps Text+lsClusterId = lens _lsClusterId (\ s a -> s{_lsClusterId = a}); --- | The pagination token that indicates the next set of results to retrieve.-lsrMarker :: Lens' ListStepsResponse (Maybe Text)-lsrMarker = lens _lsrMarker (\s a -> s { _lsrMarker = a })+instance AWSPager ListSteps where+        page rq rs+          | stop (rs ^. lsrsMarker) = Nothing+          | stop (rs ^. lsrsSteps) = Nothing+          | otherwise =+            Just $ rq & lsMarker .~ rs ^. lsrsMarker --- | The filtered list of steps for the cluster.-lsrSteps :: Lens' ListStepsResponse [StepSummary]-lsrSteps = lens _lsrSteps (\s a -> s { _lsrSteps = a }) . _List+instance AWSRequest ListSteps where+        type Sv ListSteps = EMR+        type Rs ListSteps = ListStepsResponse+        request = postJSON+        response+          = receiveJSON+              (\ s h x ->+                 ListStepsResponse' <$>+                   (x .?> "Steps" .!@ mempty) <*> (x .?> "Marker") <*>+                     (pure (fromEnum s))) +instance ToHeaders ListSteps where+        toHeaders+          = const+              (mconcat+                 ["X-Amz-Target" =#+                    ("ElasticMapReduce.ListSteps" :: ByteString),+                  "Content-Type" =#+                    ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON ListSteps where+        toJSON ListSteps'{..}+          = object+              ["StepIds" .= _lsStepIds,+               "StepStates" .= _lsStepStates, "Marker" .= _lsMarker,+               "ClusterId" .= _lsClusterId]+ instance ToPath ListSteps where-    toPath = const "/"+        toPath = const "/"  instance ToQuery ListSteps where-    toQuery = const mempty--instance ToHeaders ListSteps+        toQuery = const mempty -instance ToJSON ListSteps where-    toJSON ListSteps{..} = object-        [ "ClusterId"  .= _lsClusterId-        , "StepStates" .= _lsStepStates-        , "StepIds"    .= _lsStepIds-        , "Marker"     .= _lsMarker-        ]+-- | This output contains the list of steps.+--+-- /See:/ 'listStepsResponse' smart constructor.+data ListStepsResponse = ListStepsResponse'+    { _lsrsSteps  :: !(Maybe [StepSummary])+    , _lsrsMarker :: !(Maybe Text)+    , _lsrsStatus :: !Int+    } deriving (Eq,Read,Show,Data,Typeable,Generic) -instance AWSRequest ListSteps where-    type Sv ListSteps = EMR-    type Rs ListSteps = ListStepsResponse+-- | Creates a value of 'ListStepsResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'lsrsSteps'+--+-- * 'lsrsMarker'+--+-- * 'lsrsStatus'+listStepsResponse+    :: Int -- ^ 'lsrsStatus'+    -> ListStepsResponse+listStepsResponse pStatus_ =+    ListStepsResponse'+    { _lsrsSteps = Nothing+    , _lsrsMarker = Nothing+    , _lsrsStatus = pStatus_+    } -    request  = post "ListSteps"-    response = jsonResponse+-- | The filtered list of steps for the cluster.+lsrsSteps :: Lens' ListStepsResponse [StepSummary]+lsrsSteps = lens _lsrsSteps (\ s a -> s{_lsrsSteps = a}) . _Default . _Coerce; -instance FromJSON ListStepsResponse where-    parseJSON = withObject "ListStepsResponse" $ \o -> ListStepsResponse-        <$> o .:? "Marker"-        <*> o .:? "Steps" .!= mempty+-- | The pagination token that indicates the next set of results to retrieve.+lsrsMarker :: Lens' ListStepsResponse (Maybe Text)+lsrsMarker = lens _lsrsMarker (\ s a -> s{_lsrsMarker = a}); -instance AWSPager ListSteps where-    page rq rs-        | stop (rs ^. lsrMarker) = Nothing-        | otherwise = (\x -> rq & lsMarker ?~ x)-            <$> (rs ^. lsrMarker)+-- | The response status code.+lsrsStatus :: Lens' ListStepsResponse Int+lsrsStatus = lens _lsrsStatus (\ s a -> s{_lsrsStatus = a});
gen/Network/AWS/EMR/ModifyInstanceGroups.hs view
@@ -1,104 +1,105 @@-{-# LANGUAGE DataKinds                   #-}-{-# LANGUAGE DeriveGeneric               #-}-{-# LANGUAGE FlexibleInstances           #-}-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}-{-# LANGUAGE LambdaCase                  #-}-{-# LANGUAGE NoImplicitPrelude           #-}-{-# LANGUAGE OverloadedStrings           #-}-{-# LANGUAGE RecordWildCards             #-}-{-# LANGUAGE TypeFamilies                #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}  {-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-} +-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- | -- Module      : Network.AWS.EMR.ModifyInstanceGroups--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>--- License     : This Source Code Form is subject to the terms of---               the Mozilla Public License, v. 2.0.---               A copy of the MPL can be found in the LICENSE file or---               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Copyright   : (c) 2013-2015 Brendan Hay+-- License     : Mozilla Public License, v. 2.0. -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>--- Stability   : experimental+-- Stability   : auto-generated -- Portability : non-portable (GHC extensions) ----- Derived from AWS service descriptions, licensed under Apache 2.0.---- | ModifyInstanceGroups modifies the number of nodes and configuration settings--- of an instance group. The input parameters include the new target instance--- count for the group and the instance group ID. The call will either succeed--- or fail atomically.+-- ModifyInstanceGroups modifies the number of nodes and configuration+-- settings of an instance group. The input parameters include the new+-- target instance count for the group and the instance group ID. The call+-- will either succeed or fail atomically. ----- <http://docs.aws.amazon.com/ElasticMapReduce/latest/API/API_ModifyInstanceGroups.html>+-- /See:/ <http://docs.aws.amazon.com/ElasticMapReduce/latest/API/API_ModifyInstanceGroups.html AWS API Reference> for ModifyInstanceGroups. module Network.AWS.EMR.ModifyInstanceGroups     (-    -- * Request-      ModifyInstanceGroups-    -- ** Request constructor-    , modifyInstanceGroups-    -- ** Request lenses+    -- * Creating a Request+      modifyInstanceGroups+    , ModifyInstanceGroups+    -- * Request Lenses     , migInstanceGroups -    -- * Response-    , ModifyInstanceGroupsResponse-    -- ** Response constructor+    -- * Destructuring the Response     , modifyInstanceGroupsResponse+    , ModifyInstanceGroupsResponse     ) where -import Network.AWS.Data (Object)-import Network.AWS.Prelude-import Network.AWS.Request.JSON-import Network.AWS.EMR.Types-import qualified GHC.Exts--newtype ModifyInstanceGroups = ModifyInstanceGroups-    { _migInstanceGroups :: List "InstanceGroups" InstanceGroupModifyConfig-    } deriving (Eq, Read, Show, Monoid, Semigroup)--instance GHC.Exts.IsList ModifyInstanceGroups where-    type Item ModifyInstanceGroups = InstanceGroupModifyConfig--    fromList = ModifyInstanceGroups . GHC.Exts.fromList-    toList   = GHC.Exts.toList . _migInstanceGroups+import           Network.AWS.EMR.Types+import           Network.AWS.EMR.Types.Product+import           Network.AWS.Prelude+import           Network.AWS.Request+import           Network.AWS.Response --- | 'ModifyInstanceGroups' constructor.+-- | Change the size of some instance groups. ----- The fields accessible through corresponding lenses are:+-- /See:/ 'modifyInstanceGroups' smart constructor.+newtype ModifyInstanceGroups = ModifyInstanceGroups'+    { _migInstanceGroups :: Maybe [InstanceGroupModifyConfig]+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'ModifyInstanceGroups' with the minimum fields required to make a request. ----- * 'migInstanceGroups' @::@ ['InstanceGroupModifyConfig']+-- Use one of the following lenses to modify other fields as desired: ---modifyInstanceGroups :: ModifyInstanceGroups-modifyInstanceGroups = ModifyInstanceGroups-    { _migInstanceGroups = mempty+-- * 'migInstanceGroups'+modifyInstanceGroups+    :: ModifyInstanceGroups+modifyInstanceGroups =+    ModifyInstanceGroups'+    { _migInstanceGroups = Nothing     }  -- | Instance groups to change. migInstanceGroups :: Lens' ModifyInstanceGroups [InstanceGroupModifyConfig]-migInstanceGroups =-    lens _migInstanceGroups (\s a -> s { _migInstanceGroups = a })-        . _List+migInstanceGroups = lens _migInstanceGroups (\ s a -> s{_migInstanceGroups = a}) . _Default . _Coerce; -data ModifyInstanceGroupsResponse = ModifyInstanceGroupsResponse-    deriving (Eq, Ord, Read, Show, Generic)+instance AWSRequest ModifyInstanceGroups where+        type Sv ModifyInstanceGroups = EMR+        type Rs ModifyInstanceGroups =+             ModifyInstanceGroupsResponse+        request = postJSON+        response = receiveNull ModifyInstanceGroupsResponse' --- | 'ModifyInstanceGroupsResponse' constructor.-modifyInstanceGroupsResponse :: ModifyInstanceGroupsResponse-modifyInstanceGroupsResponse = ModifyInstanceGroupsResponse+instance ToHeaders ModifyInstanceGroups where+        toHeaders+          = const+              (mconcat+                 ["X-Amz-Target" =#+                    ("ElasticMapReduce.ModifyInstanceGroups" ::+                       ByteString),+                  "Content-Type" =#+                    ("application/x-amz-json-1.1" :: ByteString)]) +instance ToJSON ModifyInstanceGroups where+        toJSON ModifyInstanceGroups'{..}+          = object ["InstanceGroups" .= _migInstanceGroups]+ instance ToPath ModifyInstanceGroups where-    toPath = const "/"+        toPath = const "/"  instance ToQuery ModifyInstanceGroups where-    toQuery = const mempty--instance ToHeaders ModifyInstanceGroups--instance ToJSON ModifyInstanceGroups where-    toJSON ModifyInstanceGroups{..} = object-        [ "InstanceGroups" .= _migInstanceGroups-        ]+        toQuery = const mempty -instance AWSRequest ModifyInstanceGroups where-    type Sv ModifyInstanceGroups = EMR-    type Rs ModifyInstanceGroups = ModifyInstanceGroupsResponse+-- | /See:/ 'modifyInstanceGroupsResponse' smart constructor.+data ModifyInstanceGroupsResponse =+    ModifyInstanceGroupsResponse'+    deriving (Eq,Read,Show,Data,Typeable,Generic) -    request  = post "ModifyInstanceGroups"-    response = nullResponse ModifyInstanceGroupsResponse+-- | Creates a value of 'ModifyInstanceGroupsResponse' with the minimum fields required to make a request.+--+modifyInstanceGroupsResponse+    :: ModifyInstanceGroupsResponse+modifyInstanceGroupsResponse = ModifyInstanceGroupsResponse'
gen/Network/AWS/EMR/RemoveTags.hs view
@@ -1,109 +1,137 @@-{-# LANGUAGE DataKinds                   #-}-{-# LANGUAGE DeriveGeneric               #-}-{-# LANGUAGE FlexibleInstances           #-}-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}-{-# LANGUAGE LambdaCase                  #-}-{-# LANGUAGE NoImplicitPrelude           #-}-{-# LANGUAGE OverloadedStrings           #-}-{-# LANGUAGE RecordWildCards             #-}-{-# LANGUAGE TypeFamilies                #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}  {-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-} +-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- | -- Module      : Network.AWS.EMR.RemoveTags--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>--- License     : This Source Code Form is subject to the terms of---               the Mozilla Public License, v. 2.0.---               A copy of the MPL can be found in the LICENSE file or---               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Copyright   : (c) 2013-2015 Brendan Hay+-- License     : Mozilla Public License, v. 2.0. -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>--- Stability   : experimental+-- Stability   : auto-generated -- Portability : non-portable (GHC extensions) ----- Derived from AWS service descriptions, licensed under Apache 2.0.---- | Removes tags from an Amazon EMR resource. Tags make it easier to associate--- clusters in various ways, such as grouping clusters to track your Amazon EMR--- resource allocation costs. For more information, see <http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-plan-tags.html Tagging Amazon EMRResources>.+-- Removes tags from an Amazon EMR resource. Tags make it easier to+-- associate clusters in various ways, such as grouping clusters to track+-- your Amazon EMR resource allocation costs. For more information, see+-- <http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-plan-tags.html Tagging Amazon EMR Resources>. ----- The following example removes the stack tag with value Prod from a cluster:+-- The following example removes the stack tag with value Prod from a+-- cluster: ----- <http://docs.aws.amazon.com/ElasticMapReduce/latest/API/API_RemoveTags.html>+-- /See:/ <http://docs.aws.amazon.com/ElasticMapReduce/latest/API/API_RemoveTags.html AWS API Reference> for RemoveTags. module Network.AWS.EMR.RemoveTags     (-    -- * Request-      RemoveTags-    -- ** Request constructor-    , removeTags-    -- ** Request lenses+    -- * Creating a Request+      removeTags+    , RemoveTags+    -- * Request Lenses     , rtResourceId     , rtTagKeys -    -- * Response-    , RemoveTagsResponse-    -- ** Response constructor+    -- * Destructuring the Response     , removeTagsResponse+    , RemoveTagsResponse+    -- * Response Lenses+    , rtrsStatus     ) where -import Network.AWS.Data (Object)-import Network.AWS.Prelude-import Network.AWS.Request.JSON-import Network.AWS.EMR.Types-import qualified GHC.Exts--data RemoveTags = RemoveTags-    { _rtResourceId :: Text-    , _rtTagKeys    :: List "TagKeys" Text-    } deriving (Eq, Ord, Read, Show)+import           Network.AWS.EMR.Types+import           Network.AWS.EMR.Types.Product+import           Network.AWS.Prelude+import           Network.AWS.Request+import           Network.AWS.Response --- | 'RemoveTags' constructor.+-- | This input identifies a cluster and a list of tags to remove. ----- The fields accessible through corresponding lenses are:+-- /See:/ 'removeTags' smart constructor.+data RemoveTags = RemoveTags'+    { _rtResourceId :: !Text+    , _rtTagKeys    :: ![Text]+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'RemoveTags' with the minimum fields required to make a request. ----- * 'rtResourceId' @::@ 'Text'+-- Use one of the following lenses to modify other fields as desired: ----- * 'rtTagKeys' @::@ ['Text']+-- * 'rtResourceId' ---removeTags :: Text -- ^ 'rtResourceId'-           -> RemoveTags-removeTags p1 = RemoveTags-    { _rtResourceId = p1-    , _rtTagKeys    = mempty+-- * 'rtTagKeys'+removeTags+    :: Text -- ^ 'rtResourceId'+    -> RemoveTags+removeTags pResourceId_ =+    RemoveTags'+    { _rtResourceId = pResourceId_+    , _rtTagKeys = mempty     }  -- | The Amazon EMR resource identifier from which tags will be removed. This -- value must be a cluster identifier. rtResourceId :: Lens' RemoveTags Text-rtResourceId = lens _rtResourceId (\s a -> s { _rtResourceId = a })+rtResourceId = lens _rtResourceId (\ s a -> s{_rtResourceId = a});  -- | A list of tag keys to remove from a resource. rtTagKeys :: Lens' RemoveTags [Text]-rtTagKeys = lens _rtTagKeys (\s a -> s { _rtTagKeys = a }) . _List+rtTagKeys = lens _rtTagKeys (\ s a -> s{_rtTagKeys = a}) . _Coerce; -data RemoveTagsResponse = RemoveTagsResponse-    deriving (Eq, Ord, Read, Show, Generic)+instance AWSRequest RemoveTags where+        type Sv RemoveTags = EMR+        type Rs RemoveTags = RemoveTagsResponse+        request = postJSON+        response+          = receiveEmpty+              (\ s h x ->+                 RemoveTagsResponse' <$> (pure (fromEnum s))) --- | 'RemoveTagsResponse' constructor.-removeTagsResponse :: RemoveTagsResponse-removeTagsResponse = RemoveTagsResponse+instance ToHeaders RemoveTags where+        toHeaders+          = const+              (mconcat+                 ["X-Amz-Target" =#+                    ("ElasticMapReduce.RemoveTags" :: ByteString),+                  "Content-Type" =#+                    ("application/x-amz-json-1.1" :: ByteString)]) +instance ToJSON RemoveTags where+        toJSON RemoveTags'{..}+          = object+              ["ResourceId" .= _rtResourceId,+               "TagKeys" .= _rtTagKeys]+ instance ToPath RemoveTags where-    toPath = const "/"+        toPath = const "/"  instance ToQuery RemoveTags where-    toQuery = const mempty--instance ToHeaders RemoveTags+        toQuery = const mempty -instance ToJSON RemoveTags where-    toJSON RemoveTags{..} = object-        [ "ResourceId" .= _rtResourceId-        , "TagKeys"    .= _rtTagKeys-        ]+-- | This output indicates the result of removing tags from a resource.+--+-- /See:/ 'removeTagsResponse' smart constructor.+newtype RemoveTagsResponse = RemoveTagsResponse'+    { _rtrsStatus :: Int+    } deriving (Eq,Read,Show,Data,Typeable,Generic) -instance AWSRequest RemoveTags where-    type Sv RemoveTags = EMR-    type Rs RemoveTags = RemoveTagsResponse+-- | Creates a value of 'RemoveTagsResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'rtrsStatus'+removeTagsResponse+    :: Int -- ^ 'rtrsStatus'+    -> RemoveTagsResponse+removeTagsResponse pStatus_ =+    RemoveTagsResponse'+    { _rtrsStatus = pStatus_+    } -    request  = post "RemoveTags"-    response = nullResponse RemoveTagsResponse+-- | The response status code.+rtrsStatus :: Lens' RemoveTagsResponse Int+rtrsStatus = lens _rtrsStatus (\ s a -> s{_rtrsStatus = a});
gen/Network/AWS/EMR/RunJobFlow.hs view
@@ -1,293 +1,370 @@-{-# LANGUAGE DataKinds                   #-}-{-# LANGUAGE DeriveGeneric               #-}-{-# LANGUAGE FlexibleInstances           #-}-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}-{-# LANGUAGE LambdaCase                  #-}-{-# LANGUAGE NoImplicitPrelude           #-}-{-# LANGUAGE OverloadedStrings           #-}-{-# LANGUAGE RecordWildCards             #-}-{-# LANGUAGE TypeFamilies                #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}  {-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-} +-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- | -- Module      : Network.AWS.EMR.RunJobFlow--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>--- License     : This Source Code Form is subject to the terms of---               the Mozilla Public License, v. 2.0.---               A copy of the MPL can be found in the LICENSE file or---               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Copyright   : (c) 2013-2015 Brendan Hay+-- License     : Mozilla Public License, v. 2.0. -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>--- Stability   : experimental+-- Stability   : auto-generated -- Portability : non-portable (GHC extensions) ----- Derived from AWS service descriptions, licensed under Apache 2.0.---- | RunJobFlow creates and starts running a new job flow. The job flow will run--- the steps specified. Once the job flow completes, the cluster is stopped and--- the HDFS partition is lost. To prevent loss of data, configure the last step--- of the job flow to store results in Amazon S3. If the 'JobFlowInstancesConfig' 'KeepJobFlowAliveWhenNoSteps' parameter is set to 'TRUE', the job flow will transition to the WAITING state--- rather than shutting down once the steps have completed.+-- RunJobFlow creates and starts running a new job flow. The job flow will+-- run the steps specified. Once the job flow completes, the cluster is+-- stopped and the HDFS partition is lost. To prevent loss of data,+-- configure the last step of the job flow to store results in Amazon S3.+-- If the JobFlowInstancesConfig 'KeepJobFlowAliveWhenNoSteps' parameter is+-- set to 'TRUE', the job flow will transition to the WAITING state rather+-- than shutting down once the steps have completed. ----- For additional protection, you can set the 'JobFlowInstancesConfig' 'TerminationProtected' parameter to 'TRUE' to lock the job flow and prevent it from being terminated--- by API call, user intervention, or in the event of a job flow error.+-- For additional protection, you can set the JobFlowInstancesConfig+-- 'TerminationProtected' parameter to 'TRUE' to lock the job flow and+-- prevent it from being terminated by API call, user intervention, or in+-- the event of a job flow error. -- -- A maximum of 256 steps are allowed in each job flow. ----- If your job flow is long-running (such as a Hive data warehouse) or complex,--- you may require more than 256 steps to process your data. You can bypass the--- 256-step limitation in various ways, including using the SSH shell to connect--- to the master node and submitting queries directly to the software running on--- the master node, such as Hive and Hadoop. For more information on how to do--- this, go to <http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/AddMoreThan256Steps.html Add More than 256 Steps to a Job Flow> in the /Amazon ElasticMapReduce Developer's Guide/.+-- If your job flow is long-running (such as a Hive data warehouse) or+-- complex, you may require more than 256 steps to process your data. You+-- can bypass the 256-step limitation in various ways, including using the+-- SSH shell to connect to the master node and submitting queries directly+-- to the software running on the master node, such as Hive and Hadoop. For+-- more information on how to do this, go to+-- <http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/AddMoreThan256Steps.html Add More than 256 Steps to a Job Flow>+-- in the /Amazon Elastic MapReduce Developer\'s Guide/. ----- For long running job flows, we recommend that you periodically store your--- results.+-- For long running job flows, we recommend that you periodically store+-- your results. ----- <http://docs.aws.amazon.com/ElasticMapReduce/latest/API/API_RunJobFlow.html>+-- /See:/ <http://docs.aws.amazon.com/ElasticMapReduce/latest/API/API_RunJobFlow.html AWS API Reference> for RunJobFlow. module Network.AWS.EMR.RunJobFlow     (-    -- * Request-      RunJobFlow-    -- ** Request constructor-    , runJobFlow-    -- ** Request lenses+    -- * Creating a Request+      runJobFlow+    , RunJobFlow+    -- * Request Lenses+    , rjfAMIVersion     , rjfAdditionalInfo-    , rjfAmiVersion-    , rjfBootstrapActions-    , rjfInstances+    , rjfConfigurations     , rjfJobFlowRole-    , rjfLogUri-    , rjfName-    , rjfNewSupportedProducts-    , rjfServiceRole     , rjfSteps+    , rjfBootstrapActions+    , rjfReleaseLabel+    , rjfNewSupportedProducts+    , rjfLogURI     , rjfSupportedProducts-    , rjfTags     , rjfVisibleToAllUsers+    , rjfApplications+    , rjfTags+    , rjfServiceRole+    , rjfName+    , rjfInstances -    -- * Response-    , RunJobFlowResponse-    -- ** Response constructor+    -- * Destructuring the Response     , runJobFlowResponse-    -- ** Response lenses-    , rjfrJobFlowId+    , RunJobFlowResponse+    -- * Response Lenses+    , rjfrsJobFlowId+    , rjfrsStatus     ) where -import Network.AWS.Data (Object)-import Network.AWS.Prelude-import Network.AWS.Request.JSON-import Network.AWS.EMR.Types-import qualified GHC.Exts+import           Network.AWS.EMR.Types+import           Network.AWS.EMR.Types.Product+import           Network.AWS.Prelude+import           Network.AWS.Request+import           Network.AWS.Response -data RunJobFlow = RunJobFlow-    { _rjfAdditionalInfo       :: Maybe Text-    , _rjfAmiVersion           :: Maybe Text-    , _rjfBootstrapActions     :: List "BootstrapActions" BootstrapActionConfig-    , _rjfInstances            :: JobFlowInstancesConfig-    , _rjfJobFlowRole          :: Maybe Text-    , _rjfLogUri               :: Maybe Text-    , _rjfName                 :: Text-    , _rjfNewSupportedProducts :: List "NewSupportedProducts" SupportedProductConfig-    , _rjfServiceRole          :: Maybe Text-    , _rjfSteps                :: List "Steps" StepConfig-    , _rjfSupportedProducts    :: List "SupportedProducts" Text-    , _rjfTags                 :: List "Tags" Tag-    , _rjfVisibleToAllUsers    :: Maybe Bool-    } deriving (Eq, Read, Show)+-- | Input to the RunJobFlow operation.+--+-- /See:/ 'runJobFlow' smart constructor.+data RunJobFlow = RunJobFlow'+    { _rjfAMIVersion           :: !(Maybe Text)+    , _rjfAdditionalInfo       :: !(Maybe Text)+    , _rjfConfigurations       :: !(Maybe [Configuration])+    , _rjfJobFlowRole          :: !(Maybe Text)+    , _rjfSteps                :: !(Maybe [StepConfig])+    , _rjfBootstrapActions     :: !(Maybe [BootstrapActionConfig])+    , _rjfReleaseLabel         :: !(Maybe Text)+    , _rjfNewSupportedProducts :: !(Maybe [SupportedProductConfig])+    , _rjfLogURI               :: !(Maybe Text)+    , _rjfSupportedProducts    :: !(Maybe [Text])+    , _rjfVisibleToAllUsers    :: !(Maybe Bool)+    , _rjfApplications         :: !(Maybe [Application])+    , _rjfTags                 :: !(Maybe [Tag])+    , _rjfServiceRole          :: !(Maybe Text)+    , _rjfName                 :: !Text+    , _rjfInstances            :: !JobFlowInstancesConfig+    } deriving (Eq,Read,Show,Data,Typeable,Generic) --- | 'RunJobFlow' constructor.+-- | Creates a value of 'RunJobFlow' with the minimum fields required to make a request. ----- The fields accessible through corresponding lenses are:+-- Use one of the following lenses to modify other fields as desired: ----- * 'rjfAdditionalInfo' @::@ 'Maybe' 'Text'+-- * 'rjfAMIVersion' ----- * 'rjfAmiVersion' @::@ 'Maybe' 'Text'+-- * 'rjfAdditionalInfo' ----- * 'rjfBootstrapActions' @::@ ['BootstrapActionConfig']+-- * 'rjfConfigurations' ----- * 'rjfInstances' @::@ 'JobFlowInstancesConfig'+-- * 'rjfJobFlowRole' ----- * 'rjfJobFlowRole' @::@ 'Maybe' 'Text'+-- * 'rjfSteps' ----- * 'rjfLogUri' @::@ 'Maybe' 'Text'+-- * 'rjfBootstrapActions' ----- * 'rjfName' @::@ 'Text'+-- * 'rjfReleaseLabel' ----- * 'rjfNewSupportedProducts' @::@ ['SupportedProductConfig']+-- * 'rjfNewSupportedProducts' ----- * 'rjfServiceRole' @::@ 'Maybe' 'Text'+-- * 'rjfLogURI' ----- * 'rjfSteps' @::@ ['StepConfig']+-- * 'rjfSupportedProducts' ----- * 'rjfSupportedProducts' @::@ ['Text']+-- * 'rjfVisibleToAllUsers' ----- * 'rjfTags' @::@ ['Tag']+-- * 'rjfApplications' ----- * 'rjfVisibleToAllUsers' @::@ 'Maybe' 'Bool'+-- * 'rjfTags' ---runJobFlow :: Text -- ^ 'rjfName'-           -> JobFlowInstancesConfig -- ^ 'rjfInstances'-           -> RunJobFlow-runJobFlow p1 p2 = RunJobFlow-    { _rjfName                 = p1-    , _rjfInstances            = p2-    , _rjfLogUri               = Nothing-    , _rjfAdditionalInfo       = Nothing-    , _rjfAmiVersion           = Nothing-    , _rjfSteps                = mempty-    , _rjfBootstrapActions     = mempty-    , _rjfSupportedProducts    = mempty-    , _rjfNewSupportedProducts = mempty-    , _rjfVisibleToAllUsers    = Nothing-    , _rjfJobFlowRole          = Nothing-    , _rjfServiceRole          = Nothing-    , _rjfTags                 = mempty+-- * 'rjfServiceRole'+--+-- * 'rjfName'+--+-- * 'rjfInstances'+runJobFlow+    :: Text -- ^ 'rjfName'+    -> JobFlowInstancesConfig -- ^ 'rjfInstances'+    -> RunJobFlow+runJobFlow pName_ pInstances_ =+    RunJobFlow'+    { _rjfAMIVersion = Nothing+    , _rjfAdditionalInfo = Nothing+    , _rjfConfigurations = Nothing+    , _rjfJobFlowRole = Nothing+    , _rjfSteps = Nothing+    , _rjfBootstrapActions = Nothing+    , _rjfReleaseLabel = Nothing+    , _rjfNewSupportedProducts = Nothing+    , _rjfLogURI = Nothing+    , _rjfSupportedProducts = Nothing+    , _rjfVisibleToAllUsers = Nothing+    , _rjfApplications = Nothing+    , _rjfTags = Nothing+    , _rjfServiceRole = Nothing+    , _rjfName = pName_+    , _rjfInstances = pInstances_     } --- | A JSON string for selecting additional features.-rjfAdditionalInfo :: Lens' RunJobFlow (Maybe Text)-rjfAdditionalInfo =-    lens _rjfAdditionalInfo (\s a -> s { _rjfAdditionalInfo = a })---- | The version of the Amazon Machine Image (AMI) to use when launching Amazon--- EC2 instances in the job flow. The following values are valid:+-- | For Amazon EMR releases 3.x and 2.x. For Amazon EMR releases 4.x and+-- greater, use ReleaseLabel. ----- "latest" (uses the latest AMI) The version number of the AMI to use, for--- example, "2.0"  If the AMI supports multiple versions of Hadoop (for example,--- AMI 1.0 supports both Hadoop 0.18 and 0.20) you can use the 'JobFlowInstancesConfig' 'HadoopVersion' parameter to modify the version of Hadoop from the defaults--- shown above.+-- The version of the Amazon Machine Image (AMI) to use when launching+-- Amazon EC2 instances in the job flow. The following values are valid: --+-- -   The version number of the AMI to use, for example, \"2.0.\"+--+-- If the AMI supports multiple versions of Hadoop (for example, AMI 1.0+-- supports both Hadoop 0.18 and 0.20) you can use the+-- JobFlowInstancesConfig 'HadoopVersion' parameter to modify the version+-- of Hadoop from the defaults shown above.+-- -- For details about the AMI versions currently supported by Amazon Elastic--- MapReduce, go to <http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/EnvironmentConfig_AMIVersion.html#ami-versions-supported AMI Versions Supported in Elastic MapReduce> in the /AmazonElastic MapReduce Developer's Guide./-rjfAmiVersion :: Lens' RunJobFlow (Maybe Text)-rjfAmiVersion = lens _rjfAmiVersion (\s a -> s { _rjfAmiVersion = a })+-- MapReduce, go to+-- <http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/EnvironmentConfig_AMIVersion.html#ami-versions-supported AMI Versions Supported in Elastic MapReduce>+-- in the /Amazon Elastic MapReduce Developer\'s Guide./+rjfAMIVersion :: Lens' RunJobFlow (Maybe Text)+rjfAMIVersion = lens _rjfAMIVersion (\ s a -> s{_rjfAMIVersion = a}); --- | A list of bootstrap actions that will be run before Hadoop is started on the--- cluster nodes.-rjfBootstrapActions :: Lens' RunJobFlow [BootstrapActionConfig]-rjfBootstrapActions =-    lens _rjfBootstrapActions (\s a -> s { _rjfBootstrapActions = a })-        . _List+-- | A JSON string for selecting additional features.+rjfAdditionalInfo :: Lens' RunJobFlow (Maybe Text)+rjfAdditionalInfo = lens _rjfAdditionalInfo (\ s a -> s{_rjfAdditionalInfo = a}); --- | A specification of the number and type of Amazon EC2 instances on which to--- run the job flow.-rjfInstances :: Lens' RunJobFlow JobFlowInstancesConfig-rjfInstances = lens _rjfInstances (\s a -> s { _rjfInstances = a })+-- | Amazon EMR releases 4.x or later.+--+-- The list of configurations supplied for the EMR cluster you are+-- creating.+rjfConfigurations :: Lens' RunJobFlow [Configuration]+rjfConfigurations = lens _rjfConfigurations (\ s a -> s{_rjfConfigurations = a}) . _Default . _Coerce; --- | An IAM role for the job flow. The EC2 instances of the job flow assume this--- role. The default role is 'EMRJobflowDefault'. In order to use the default--- role, you must have already created it using the CLI.+-- | An IAM role for the job flow. The EC2 instances of the job flow assume+-- this role. The default role is 'EMRJobflowDefault'. In order to use the+-- default role, you must have already created it using the CLI. rjfJobFlowRole :: Lens' RunJobFlow (Maybe Text)-rjfJobFlowRole = lens _rjfJobFlowRole (\s a -> s { _rjfJobFlowRole = a })+rjfJobFlowRole = lens _rjfJobFlowRole (\ s a -> s{_rjfJobFlowRole = a}); --- | The location in Amazon S3 to write the log files of the job flow. If a value--- is not provided, logs are not created.-rjfLogUri :: Lens' RunJobFlow (Maybe Text)-rjfLogUri = lens _rjfLogUri (\s a -> s { _rjfLogUri = a })+-- | A list of steps to be executed by the job flow.+rjfSteps :: Lens' RunJobFlow [StepConfig]+rjfSteps = lens _rjfSteps (\ s a -> s{_rjfSteps = a}) . _Default . _Coerce; --- | The name of the job flow.-rjfName :: Lens' RunJobFlow Text-rjfName = lens _rjfName (\s a -> s { _rjfName = a })+-- | A list of bootstrap actions that will be run before Hadoop is started on+-- the cluster nodes.+rjfBootstrapActions :: Lens' RunJobFlow [BootstrapActionConfig]+rjfBootstrapActions = lens _rjfBootstrapActions (\ s a -> s{_rjfBootstrapActions = a}) . _Default . _Coerce; --- | A list of strings that indicates third-party software to use with the job--- flow that accepts a user argument list. EMR accepts and forwards the argument--- list to the corresponding installation script as bootstrap action arguments.--- For more information, see <http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-mapr.html Launch a Job Flow on the MapR Distribution forHadoop>. Currently supported values are:+-- | Amazon EMR releases 4.x or later. ----- "mapr-m3" - launch the job flow using MapR M3 Edition. "mapr-m5" - launch--- the job flow using MapR M5 Edition. "mapr" with the user arguments specifying--- "--edition,m3" or "--edition,m5" - launch the job flow using MapR M3 or M5--- Edition respectively.-rjfNewSupportedProducts :: Lens' RunJobFlow [SupportedProductConfig]-rjfNewSupportedProducts =-    lens _rjfNewSupportedProducts (\s a -> s { _rjfNewSupportedProducts = a })-        . _List+-- The release label for the Amazon EMR release. For Amazon EMR 3.x and 2.x+-- AMIs, use amiVersion instead instead of ReleaseLabel.+rjfReleaseLabel :: Lens' RunJobFlow (Maybe Text)+rjfReleaseLabel = lens _rjfReleaseLabel (\ s a -> s{_rjfReleaseLabel = a}); --- | The IAM role that will be assumed by the Amazon EMR service to access AWS--- resources on your behalf.-rjfServiceRole :: Lens' RunJobFlow (Maybe Text)-rjfServiceRole = lens _rjfServiceRole (\s a -> s { _rjfServiceRole = a })+-- | For Amazon EMR releases 3.x and 2.x. For Amazon EMR releases 4.x and+-- greater, use Applications.+--+-- A list of strings that indicates third-party software to use with the+-- job flow that accepts a user argument list. EMR accepts and forwards the+-- argument list to the corresponding installation script as bootstrap+-- action arguments. For more information, see+-- <http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-mapr.html Launch a Job Flow on the MapR Distribution for Hadoop>.+-- Currently supported values are:+--+-- -   \"mapr-m3\" - launch the cluster using MapR M3 Edition.+-- -   \"mapr-m5\" - launch the cluster using MapR M5 Edition.+-- -   \"mapr\" with the user arguments specifying \"--edition,m3\" or+--     \"--edition,m5\" - launch the job flow using MapR M3 or M5 Edition+--     respectively.+-- -   \"mapr-m7\" - launch the cluster using MapR M7 Edition.+-- -   \"hunk\" - launch the cluster with the Hunk Big Data Analtics+--     Platform.+-- -   \"hue\"- launch the cluster with Hue installed.+-- -   \"spark\" - launch the cluster with Apache Spark installed.+-- -   \"ganglia\" - launch the cluster with the Ganglia Monitoring System+--     installed.+rjfNewSupportedProducts :: Lens' RunJobFlow [SupportedProductConfig]+rjfNewSupportedProducts = lens _rjfNewSupportedProducts (\ s a -> s{_rjfNewSupportedProducts = a}) . _Default . _Coerce; --- | A list of steps to be executed by the job flow.-rjfSteps :: Lens' RunJobFlow [StepConfig]-rjfSteps = lens _rjfSteps (\s a -> s { _rjfSteps = a }) . _List+-- | The location in Amazon S3 to write the log files of the job flow. If a+-- value is not provided, logs are not created.+rjfLogURI :: Lens' RunJobFlow (Maybe Text)+rjfLogURI = lens _rjfLogURI (\ s a -> s{_rjfLogURI = a}); --- | A list of strings that indicates third-party software to use with the job--- flow. For more information, go to <http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-supported-products.html Use Third Party Applications with Amazon EMR>--- . Currently supported values are:+-- | For Amazon EMR releases 3.x and 2.x. For Amazon EMR releases 4.x and+-- greater, use Applications. ----- "mapr-m3" - launch the job flow using MapR M3 Edition. "mapr-m5" - launch--- the job flow using MapR M5 Edition.+-- A list of strings that indicates third-party software to use with the+-- job flow. For more information, go to+-- <http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-supported-products.html Use Third Party Applications with Amazon EMR>.+-- Currently supported values are:+--+-- -   \"mapr-m3\" - launch the job flow using MapR M3 Edition.+-- -   \"mapr-m5\" - launch the job flow using MapR M5 Edition. rjfSupportedProducts :: Lens' RunJobFlow [Text]-rjfSupportedProducts =-    lens _rjfSupportedProducts (\s a -> s { _rjfSupportedProducts = a })-        . _List+rjfSupportedProducts = lens _rjfSupportedProducts (\ s a -> s{_rjfSupportedProducts = a}) . _Default . _Coerce; +-- | Whether the job flow is visible to all IAM users of the AWS account+-- associated with the job flow. If this value is set to 'true', all IAM+-- users of that AWS account can view and (if they have the proper policy+-- permissions set) manage the job flow. If it is set to 'false', only the+-- IAM user that created the job flow can view and manage it.+rjfVisibleToAllUsers :: Lens' RunJobFlow (Maybe Bool)+rjfVisibleToAllUsers = lens _rjfVisibleToAllUsers (\ s a -> s{_rjfVisibleToAllUsers = a});++-- | Amazon EMR releases 4.x or later.+--+-- A list of applications for the cluster. Valid values are: \"Hadoop\",+-- \"Hive\", \"Mahout\", \"Pig\", and \"Spark.\" They are case insensitive.+rjfApplications :: Lens' RunJobFlow [Application]+rjfApplications = lens _rjfApplications (\ s a -> s{_rjfApplications = a}) . _Default . _Coerce;+ -- | A list of tags to associate with a cluster and propagate to Amazon EC2 -- instances. rjfTags :: Lens' RunJobFlow [Tag]-rjfTags = lens _rjfTags (\s a -> s { _rjfTags = a }) . _List+rjfTags = lens _rjfTags (\ s a -> s{_rjfTags = a}) . _Default . _Coerce; --- | Whether the job flow is visible to all IAM users of the AWS account--- associated with the job flow. If this value is set to 'true', all IAM users of--- that AWS account can view and (if they have the proper policy permissions--- set) manage the job flow. If it is set to 'false', only the IAM user that--- created the job flow can view and manage it.-rjfVisibleToAllUsers :: Lens' RunJobFlow (Maybe Bool)-rjfVisibleToAllUsers =-    lens _rjfVisibleToAllUsers (\s a -> s { _rjfVisibleToAllUsers = a })+-- | The IAM role that will be assumed by the Amazon EMR service to access+-- AWS resources on your behalf.+rjfServiceRole :: Lens' RunJobFlow (Maybe Text)+rjfServiceRole = lens _rjfServiceRole (\ s a -> s{_rjfServiceRole = a}); -newtype RunJobFlowResponse = RunJobFlowResponse-    { _rjfrJobFlowId :: Maybe Text-    } deriving (Eq, Ord, Read, Show, Monoid)+-- | The name of the job flow.+rjfName :: Lens' RunJobFlow Text+rjfName = lens _rjfName (\ s a -> s{_rjfName = a}); --- | 'RunJobFlowResponse' constructor.------ The fields accessible through corresponding lenses are:------ * 'rjfrJobFlowId' @::@ 'Maybe' 'Text'----runJobFlowResponse :: RunJobFlowResponse-runJobFlowResponse = RunJobFlowResponse-    { _rjfrJobFlowId = Nothing-    }+-- | A specification of the number and type of Amazon EC2 instances on which+-- to run the job flow.+rjfInstances :: Lens' RunJobFlow JobFlowInstancesConfig+rjfInstances = lens _rjfInstances (\ s a -> s{_rjfInstances = a}); --- | An unique identifier for the job flow.-rjfrJobFlowId :: Lens' RunJobFlowResponse (Maybe Text)-rjfrJobFlowId = lens _rjfrJobFlowId (\s a -> s { _rjfrJobFlowId = a })+instance AWSRequest RunJobFlow where+        type Sv RunJobFlow = EMR+        type Rs RunJobFlow = RunJobFlowResponse+        request = postJSON+        response+          = receiveJSON+              (\ s h x ->+                 RunJobFlowResponse' <$>+                   (x .?> "JobFlowId") <*> (pure (fromEnum s))) +instance ToHeaders RunJobFlow where+        toHeaders+          = const+              (mconcat+                 ["X-Amz-Target" =#+                    ("ElasticMapReduce.RunJobFlow" :: ByteString),+                  "Content-Type" =#+                    ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON RunJobFlow where+        toJSON RunJobFlow'{..}+          = object+              ["AmiVersion" .= _rjfAMIVersion,+               "AdditionalInfo" .= _rjfAdditionalInfo,+               "Configurations" .= _rjfConfigurations,+               "JobFlowRole" .= _rjfJobFlowRole,+               "Steps" .= _rjfSteps,+               "BootstrapActions" .= _rjfBootstrapActions,+               "ReleaseLabel" .= _rjfReleaseLabel,+               "NewSupportedProducts" .= _rjfNewSupportedProducts,+               "LogUri" .= _rjfLogURI,+               "SupportedProducts" .= _rjfSupportedProducts,+               "VisibleToAllUsers" .= _rjfVisibleToAllUsers,+               "Applications" .= _rjfApplications,+               "Tags" .= _rjfTags, "ServiceRole" .= _rjfServiceRole,+               "Name" .= _rjfName, "Instances" .= _rjfInstances]+ instance ToPath RunJobFlow where-    toPath = const "/"+        toPath = const "/"  instance ToQuery RunJobFlow where-    toQuery = const mempty--instance ToHeaders RunJobFlow+        toQuery = const mempty -instance ToJSON RunJobFlow where-    toJSON RunJobFlow{..} = object-        [ "Name"                 .= _rjfName-        , "LogUri"               .= _rjfLogUri-        , "AdditionalInfo"       .= _rjfAdditionalInfo-        , "AmiVersion"           .= _rjfAmiVersion-        , "Instances"            .= _rjfInstances-        , "Steps"                .= _rjfSteps-        , "BootstrapActions"     .= _rjfBootstrapActions-        , "SupportedProducts"    .= _rjfSupportedProducts-        , "NewSupportedProducts" .= _rjfNewSupportedProducts-        , "VisibleToAllUsers"    .= _rjfVisibleToAllUsers-        , "JobFlowRole"          .= _rjfJobFlowRole-        , "ServiceRole"          .= _rjfServiceRole-        , "Tags"                 .= _rjfTags-        ]+-- | The result of the RunJobFlow operation.+--+-- /See:/ 'runJobFlowResponse' smart constructor.+data RunJobFlowResponse = RunJobFlowResponse'+    { _rjfrsJobFlowId :: !(Maybe Text)+    , _rjfrsStatus    :: !Int+    } deriving (Eq,Read,Show,Data,Typeable,Generic) -instance AWSRequest RunJobFlow where-    type Sv RunJobFlow = EMR-    type Rs RunJobFlow = RunJobFlowResponse+-- | Creates a value of 'RunJobFlowResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'rjfrsJobFlowId'+--+-- * 'rjfrsStatus'+runJobFlowResponse+    :: Int -- ^ 'rjfrsStatus'+    -> RunJobFlowResponse+runJobFlowResponse pStatus_ =+    RunJobFlowResponse'+    { _rjfrsJobFlowId = Nothing+    , _rjfrsStatus = pStatus_+    } -    request  = post "RunJobFlow"-    response = jsonResponse+-- | An unique identifier for the job flow.+rjfrsJobFlowId :: Lens' RunJobFlowResponse (Maybe Text)+rjfrsJobFlowId = lens _rjfrsJobFlowId (\ s a -> s{_rjfrsJobFlowId = a}); -instance FromJSON RunJobFlowResponse where-    parseJSON = withObject "RunJobFlowResponse" $ \o -> RunJobFlowResponse-        <$> o .:? "JobFlowId"+-- | The response status code.+rjfrsStatus :: Lens' RunJobFlowResponse Int+rjfrsStatus = lens _rjfrsStatus (\ s a -> s{_rjfrsStatus = a});
gen/Network/AWS/EMR/SetTerminationProtection.hs view
@@ -1,123 +1,138 @@-{-# LANGUAGE DataKinds                   #-}-{-# LANGUAGE DeriveGeneric               #-}-{-# LANGUAGE FlexibleInstances           #-}-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}-{-# LANGUAGE LambdaCase                  #-}-{-# LANGUAGE NoImplicitPrelude           #-}-{-# LANGUAGE OverloadedStrings           #-}-{-# LANGUAGE RecordWildCards             #-}-{-# LANGUAGE TypeFamilies                #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}  {-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-} +-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- | -- Module      : Network.AWS.EMR.SetTerminationProtection--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>--- License     : This Source Code Form is subject to the terms of---               the Mozilla Public License, v. 2.0.---               A copy of the MPL can be found in the LICENSE file or---               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Copyright   : (c) 2013-2015 Brendan Hay+-- License     : Mozilla Public License, v. 2.0. -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>--- Stability   : experimental+-- Stability   : auto-generated -- Portability : non-portable (GHC extensions) ----- Derived from AWS service descriptions, licensed under Apache 2.0.---- | SetTerminationProtection locks a job flow so the Amazon EC2 instances in the--- cluster cannot be terminated by user intervention, an API call, or in the--- event of a job-flow error. The cluster still terminates upon successful--- completion of the job flow. Calling SetTerminationProtection on a job flow is--- analogous to calling the Amazon EC2 DisableAPITermination API on all of the--- EC2 instances in a cluster.+-- SetTerminationProtection locks a job flow so the Amazon EC2 instances in+-- the cluster cannot be terminated by user intervention, an API call, or+-- in the event of a job-flow error. The cluster still terminates upon+-- successful completion of the job flow. Calling SetTerminationProtection+-- on a job flow is analogous to calling the Amazon EC2+-- DisableAPITermination API on all of the EC2 instances in a cluster. ----- SetTerminationProtection is used to prevent accidental termination of a job--- flow and to ensure that in the event of an error, the instances will persist--- so you can recover any data stored in their ephemeral instance storage.+-- SetTerminationProtection is used to prevent accidental termination of a+-- job flow and to ensure that in the event of an error, the instances will+-- persist so you can recover any data stored in their ephemeral instance+-- storage. -- -- To terminate a job flow that has been locked by setting--- SetTerminationProtection to 'true', you must first unlock the job flow by a--- subsequent call to SetTerminationProtection in which you set the value to 'false'.+-- SetTerminationProtection to 'true', you must first unlock the job flow+-- by a subsequent call to SetTerminationProtection in which you set the+-- value to 'false'. ----- For more information, go to <http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/UsingEMR_TerminationProtection.html Protecting a Job Flow from Termination> in the /Amazon Elastic MapReduce Developer's Guide./+-- For more information, go to+-- <http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/UsingEMR_TerminationProtection.html Protecting a Job Flow from Termination>+-- in the /Amazon Elastic MapReduce Developer\'s Guide./ ----- <http://docs.aws.amazon.com/ElasticMapReduce/latest/API/API_SetTerminationProtection.html>+-- /See:/ <http://docs.aws.amazon.com/ElasticMapReduce/latest/API/API_SetTerminationProtection.html AWS API Reference> for SetTerminationProtection. module Network.AWS.EMR.SetTerminationProtection     (-    -- * Request-      SetTerminationProtection-    -- ** Request constructor-    , setTerminationProtection-    -- ** Request lenses+    -- * Creating a Request+      setTerminationProtection+    , SetTerminationProtection+    -- * Request Lenses     , stpJobFlowIds     , stpTerminationProtected -    -- * Response-    , SetTerminationProtectionResponse-    -- ** Response constructor+    -- * Destructuring the Response     , setTerminationProtectionResponse+    , SetTerminationProtectionResponse     ) where -import Network.AWS.Data (Object)-import Network.AWS.Prelude-import Network.AWS.Request.JSON-import Network.AWS.EMR.Types-import qualified GHC.Exts--data SetTerminationProtection = SetTerminationProtection-    { _stpJobFlowIds           :: List "JobFlowIds" Text-    , _stpTerminationProtected :: Bool-    } deriving (Eq, Ord, Read, Show)+import           Network.AWS.EMR.Types+import           Network.AWS.EMR.Types.Product+import           Network.AWS.Prelude+import           Network.AWS.Request+import           Network.AWS.Response --- | 'SetTerminationProtection' constructor.+-- | The input argument to the TerminationProtection operation. ----- The fields accessible through corresponding lenses are:+-- /See:/ 'setTerminationProtection' smart constructor.+data SetTerminationProtection = SetTerminationProtection'+    { _stpJobFlowIds           :: ![Text]+    , _stpTerminationProtected :: !Bool+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'SetTerminationProtection' with the minimum fields required to make a request. ----- * 'stpJobFlowIds' @::@ ['Text']+-- Use one of the following lenses to modify other fields as desired: ----- * 'stpTerminationProtected' @::@ 'Bool'+-- * 'stpJobFlowIds' ---setTerminationProtection :: Bool -- ^ 'stpTerminationProtected'-                         -> SetTerminationProtection-setTerminationProtection p1 = SetTerminationProtection-    { _stpTerminationProtected = p1-    , _stpJobFlowIds           = mempty+-- * 'stpTerminationProtected'+setTerminationProtection+    :: Bool -- ^ 'stpTerminationProtected'+    -> SetTerminationProtection+setTerminationProtection pTerminationProtected_ =+    SetTerminationProtection'+    { _stpJobFlowIds = mempty+    , _stpTerminationProtected = pTerminationProtected_     }  -- | A list of strings that uniquely identify the job flows to protect. This--- identifier is returned by 'RunJobFlow' and can also be obtained from 'DescribeJobFlows' .+-- identifier is returned by RunJobFlow and can also be obtained from+-- DescribeJobFlows . stpJobFlowIds :: Lens' SetTerminationProtection [Text]-stpJobFlowIds = lens _stpJobFlowIds (\s a -> s { _stpJobFlowIds = a }) . _List+stpJobFlowIds = lens _stpJobFlowIds (\ s a -> s{_stpJobFlowIds = a}) . _Coerce;  -- | A Boolean that indicates whether to protect the job flow and prevent the--- Amazon EC2 instances in the cluster from shutting down due to API calls, user--- intervention, or job-flow error.+-- Amazon EC2 instances in the cluster from shutting down due to API calls,+-- user intervention, or job-flow error. stpTerminationProtected :: Lens' SetTerminationProtection Bool-stpTerminationProtected =-    lens _stpTerminationProtected (\s a -> s { _stpTerminationProtected = a })+stpTerminationProtected = lens _stpTerminationProtected (\ s a -> s{_stpTerminationProtected = a}); -data SetTerminationProtectionResponse = SetTerminationProtectionResponse-    deriving (Eq, Ord, Read, Show, Generic)+instance AWSRequest SetTerminationProtection where+        type Sv SetTerminationProtection = EMR+        type Rs SetTerminationProtection =+             SetTerminationProtectionResponse+        request = postJSON+        response+          = receiveNull SetTerminationProtectionResponse' --- | 'SetTerminationProtectionResponse' constructor.-setTerminationProtectionResponse :: SetTerminationProtectionResponse-setTerminationProtectionResponse = SetTerminationProtectionResponse+instance ToHeaders SetTerminationProtection where+        toHeaders+          = const+              (mconcat+                 ["X-Amz-Target" =#+                    ("ElasticMapReduce.SetTerminationProtection" ::+                       ByteString),+                  "Content-Type" =#+                    ("application/x-amz-json-1.1" :: ByteString)]) +instance ToJSON SetTerminationProtection where+        toJSON SetTerminationProtection'{..}+          = object+              ["JobFlowIds" .= _stpJobFlowIds,+               "TerminationProtected" .= _stpTerminationProtected]+ instance ToPath SetTerminationProtection where-    toPath = const "/"+        toPath = const "/"  instance ToQuery SetTerminationProtection where-    toQuery = const mempty--instance ToHeaders SetTerminationProtection--instance ToJSON SetTerminationProtection where-    toJSON SetTerminationProtection{..} = object-        [ "JobFlowIds"           .= _stpJobFlowIds-        , "TerminationProtected" .= _stpTerminationProtected-        ]+        toQuery = const mempty -instance AWSRequest SetTerminationProtection where-    type Sv SetTerminationProtection = EMR-    type Rs SetTerminationProtection = SetTerminationProtectionResponse+-- | /See:/ 'setTerminationProtectionResponse' smart constructor.+data SetTerminationProtectionResponse =+    SetTerminationProtectionResponse'+    deriving (Eq,Read,Show,Data,Typeable,Generic) -    request  = post "SetTerminationProtection"-    response = nullResponse SetTerminationProtectionResponse+-- | Creates a value of 'SetTerminationProtectionResponse' with the minimum fields required to make a request.+--+setTerminationProtectionResponse+    :: SetTerminationProtectionResponse+setTerminationProtectionResponse = SetTerminationProtectionResponse'
gen/Network/AWS/EMR/SetVisibleToAllUsers.hs view
@@ -1,114 +1,123 @@-{-# LANGUAGE DataKinds                   #-}-{-# LANGUAGE DeriveGeneric               #-}-{-# LANGUAGE FlexibleInstances           #-}-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}-{-# LANGUAGE LambdaCase                  #-}-{-# LANGUAGE NoImplicitPrelude           #-}-{-# LANGUAGE OverloadedStrings           #-}-{-# LANGUAGE RecordWildCards             #-}-{-# LANGUAGE TypeFamilies                #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}  {-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-} +-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- | -- Module      : Network.AWS.EMR.SetVisibleToAllUsers--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>--- License     : This Source Code Form is subject to the terms of---               the Mozilla Public License, v. 2.0.---               A copy of the MPL can be found in the LICENSE file or---               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Copyright   : (c) 2013-2015 Brendan Hay+-- License     : Mozilla Public License, v. 2.0. -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>--- Stability   : experimental+-- Stability   : auto-generated -- Portability : non-portable (GHC extensions) ----- Derived from AWS service descriptions, licensed under Apache 2.0.---- | Sets whether all AWS Identity and Access Management (IAM) users under your--- account can access the specified job flows. This action works on running job--- flows. You can also set the visibility of a job flow when you launch it using--- the 'VisibleToAllUsers' parameter of 'RunJobFlow'. The SetVisibleToAllUsers--- action can be called only by an IAM user who created the job flow or the AWS--- account that owns the job flow.+-- Sets whether all AWS Identity and Access Management (IAM) users under+-- your account can access the specified job flows. This action works on+-- running job flows. You can also set the visibility of a job flow when+-- you launch it using the 'VisibleToAllUsers' parameter of RunJobFlow. The+-- SetVisibleToAllUsers action can be called only by an IAM user who+-- created the job flow or the AWS account that owns the job flow. ----- <http://docs.aws.amazon.com/ElasticMapReduce/latest/API/API_SetVisibleToAllUsers.html>+-- /See:/ <http://docs.aws.amazon.com/ElasticMapReduce/latest/API/API_SetVisibleToAllUsers.html AWS API Reference> for SetVisibleToAllUsers. module Network.AWS.EMR.SetVisibleToAllUsers     (-    -- * Request-      SetVisibleToAllUsers-    -- ** Request constructor-    , setVisibleToAllUsers-    -- ** Request lenses+    -- * Creating a Request+      setVisibleToAllUsers+    , SetVisibleToAllUsers+    -- * Request Lenses     , svtauJobFlowIds     , svtauVisibleToAllUsers -    -- * Response-    , SetVisibleToAllUsersResponse-    -- ** Response constructor+    -- * Destructuring the Response     , setVisibleToAllUsersResponse+    , SetVisibleToAllUsersResponse     ) where -import Network.AWS.Data (Object)-import Network.AWS.Prelude-import Network.AWS.Request.JSON-import Network.AWS.EMR.Types-import qualified GHC.Exts--data SetVisibleToAllUsers = SetVisibleToAllUsers-    { _svtauJobFlowIds        :: List "JobFlowIds" Text-    , _svtauVisibleToAllUsers :: Bool-    } deriving (Eq, Ord, Read, Show)+import           Network.AWS.EMR.Types+import           Network.AWS.EMR.Types.Product+import           Network.AWS.Prelude+import           Network.AWS.Request+import           Network.AWS.Response --- | 'SetVisibleToAllUsers' constructor.+-- | The input to the SetVisibleToAllUsers action. ----- The fields accessible through corresponding lenses are:+-- /See:/ 'setVisibleToAllUsers' smart constructor.+data SetVisibleToAllUsers = SetVisibleToAllUsers'+    { _svtauJobFlowIds        :: ![Text]+    , _svtauVisibleToAllUsers :: !Bool+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'SetVisibleToAllUsers' with the minimum fields required to make a request. ----- * 'svtauJobFlowIds' @::@ ['Text']+-- Use one of the following lenses to modify other fields as desired: ----- * 'svtauVisibleToAllUsers' @::@ 'Bool'+-- * 'svtauJobFlowIds' ---setVisibleToAllUsers :: Bool -- ^ 'svtauVisibleToAllUsers'-                     -> SetVisibleToAllUsers-setVisibleToAllUsers p1 = SetVisibleToAllUsers-    { _svtauVisibleToAllUsers = p1-    , _svtauJobFlowIds        = mempty+-- * 'svtauVisibleToAllUsers'+setVisibleToAllUsers+    :: Bool -- ^ 'svtauVisibleToAllUsers'+    -> SetVisibleToAllUsers+setVisibleToAllUsers pVisibleToAllUsers_ =+    SetVisibleToAllUsers'+    { _svtauJobFlowIds = mempty+    , _svtauVisibleToAllUsers = pVisibleToAllUsers_     }  -- | Identifiers of the job flows to receive the new visibility setting. svtauJobFlowIds :: Lens' SetVisibleToAllUsers [Text]-svtauJobFlowIds = lens _svtauJobFlowIds (\s a -> s { _svtauJobFlowIds = a }) . _List+svtauJobFlowIds = lens _svtauJobFlowIds (\ s a -> s{_svtauJobFlowIds = a}) . _Coerce;  -- | Whether the specified job flows are visible to all IAM users of the AWS--- account associated with the job flow. If this value is set to True, all IAM--- users of that AWS account can view and, if they have the proper IAM policy--- permissions set, manage the job flows. If it is set to False, only the IAM--- user that created a job flow can view and manage it.+-- account associated with the job flow. If this value is set to True, all+-- IAM users of that AWS account can view and, if they have the proper IAM+-- policy permissions set, manage the job flows. If it is set to False,+-- only the IAM user that created a job flow can view and manage it. svtauVisibleToAllUsers :: Lens' SetVisibleToAllUsers Bool-svtauVisibleToAllUsers =-    lens _svtauVisibleToAllUsers (\s a -> s { _svtauVisibleToAllUsers = a })+svtauVisibleToAllUsers = lens _svtauVisibleToAllUsers (\ s a -> s{_svtauVisibleToAllUsers = a}); -data SetVisibleToAllUsersResponse = SetVisibleToAllUsersResponse-    deriving (Eq, Ord, Read, Show, Generic)+instance AWSRequest SetVisibleToAllUsers where+        type Sv SetVisibleToAllUsers = EMR+        type Rs SetVisibleToAllUsers =+             SetVisibleToAllUsersResponse+        request = postJSON+        response = receiveNull SetVisibleToAllUsersResponse' --- | 'SetVisibleToAllUsersResponse' constructor.-setVisibleToAllUsersResponse :: SetVisibleToAllUsersResponse-setVisibleToAllUsersResponse = SetVisibleToAllUsersResponse+instance ToHeaders SetVisibleToAllUsers where+        toHeaders+          = const+              (mconcat+                 ["X-Amz-Target" =#+                    ("ElasticMapReduce.SetVisibleToAllUsers" ::+                       ByteString),+                  "Content-Type" =#+                    ("application/x-amz-json-1.1" :: ByteString)]) +instance ToJSON SetVisibleToAllUsers where+        toJSON SetVisibleToAllUsers'{..}+          = object+              ["JobFlowIds" .= _svtauJobFlowIds,+               "VisibleToAllUsers" .= _svtauVisibleToAllUsers]+ instance ToPath SetVisibleToAllUsers where-    toPath = const "/"+        toPath = const "/"  instance ToQuery SetVisibleToAllUsers where-    toQuery = const mempty--instance ToHeaders SetVisibleToAllUsers--instance ToJSON SetVisibleToAllUsers where-    toJSON SetVisibleToAllUsers{..} = object-        [ "JobFlowIds"        .= _svtauJobFlowIds-        , "VisibleToAllUsers" .= _svtauVisibleToAllUsers-        ]+        toQuery = const mempty -instance AWSRequest SetVisibleToAllUsers where-    type Sv SetVisibleToAllUsers = EMR-    type Rs SetVisibleToAllUsers = SetVisibleToAllUsersResponse+-- | /See:/ 'setVisibleToAllUsersResponse' smart constructor.+data SetVisibleToAllUsersResponse =+    SetVisibleToAllUsersResponse'+    deriving (Eq,Read,Show,Data,Typeable,Generic) -    request  = post "SetVisibleToAllUsers"-    response = nullResponse SetVisibleToAllUsersResponse+-- | Creates a value of 'SetVisibleToAllUsersResponse' with the minimum fields required to make a request.+--+setVisibleToAllUsersResponse+    :: SetVisibleToAllUsersResponse+setVisibleToAllUsersResponse = SetVisibleToAllUsersResponse'
gen/Network/AWS/EMR/TerminateJobFlows.hs view
@@ -1,108 +1,109 @@-{-# LANGUAGE DataKinds                   #-}-{-# LANGUAGE DeriveGeneric               #-}-{-# LANGUAGE FlexibleInstances           #-}-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}-{-# LANGUAGE LambdaCase                  #-}-{-# LANGUAGE NoImplicitPrelude           #-}-{-# LANGUAGE OverloadedStrings           #-}-{-# LANGUAGE RecordWildCards             #-}-{-# LANGUAGE TypeFamilies                #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}  {-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-} +-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- | -- Module      : Network.AWS.EMR.TerminateJobFlows--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>--- License     : This Source Code Form is subject to the terms of---               the Mozilla Public License, v. 2.0.---               A copy of the MPL can be found in the LICENSE file or---               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Copyright   : (c) 2013-2015 Brendan Hay+-- License     : Mozilla Public License, v. 2.0. -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>--- Stability   : experimental+-- Stability   : auto-generated -- Portability : non-portable (GHC extensions) ----- Derived from AWS service descriptions, licensed under Apache 2.0.---- | TerminateJobFlows shuts a list of job flows down. When a job flow is shut--- down, any step not yet completed is canceled and the EC2 instances on which--- the job flow is running are stopped. Any log files not already saved are--- uploaded to Amazon S3 if a LogUri was specified when the job flow was--- created.+-- TerminateJobFlows shuts a list of job flows down. When a job flow is+-- shut down, any step not yet completed is canceled and the EC2 instances+-- on which the job flow is running are stopped. Any log files not already+-- saved are uploaded to Amazon S3 if a LogUri was specified when the job+-- flow was created. ----- The maximum number of JobFlows allowed is 10. The call to TerminateJobFlows--- is asynchronous. Depending on the configuration of the job flow, it may take--- up to 5-20 minutes for the job flow to completely terminate and release--- allocated resources, such as Amazon EC2 instances.+-- The maximum number of JobFlows allowed is 10. The call to+-- TerminateJobFlows is asynchronous. Depending on the configuration of the+-- job flow, it may take up to 5-20 minutes for the job flow to completely+-- terminate and release allocated resources, such as Amazon EC2 instances. ----- <http://docs.aws.amazon.com/ElasticMapReduce/latest/API/API_TerminateJobFlows.html>+-- /See:/ <http://docs.aws.amazon.com/ElasticMapReduce/latest/API/API_TerminateJobFlows.html AWS API Reference> for TerminateJobFlows. module Network.AWS.EMR.TerminateJobFlows     (-    -- * Request-      TerminateJobFlows-    -- ** Request constructor-    , terminateJobFlows-    -- ** Request lenses+    -- * Creating a Request+      terminateJobFlows+    , TerminateJobFlows+    -- * Request Lenses     , tjfJobFlowIds -    -- * Response-    , TerminateJobFlowsResponse-    -- ** Response constructor+    -- * Destructuring the Response     , terminateJobFlowsResponse+    , TerminateJobFlowsResponse     ) where -import Network.AWS.Data (Object)-import Network.AWS.Prelude-import Network.AWS.Request.JSON-import Network.AWS.EMR.Types-import qualified GHC.Exts--newtype TerminateJobFlows = TerminateJobFlows-    { _tjfJobFlowIds :: List "JobFlowIds" Text-    } deriving (Eq, Ord, Read, Show, Monoid, Semigroup)--instance GHC.Exts.IsList TerminateJobFlows where-    type Item TerminateJobFlows = Text--    fromList = TerminateJobFlows . GHC.Exts.fromList-    toList   = GHC.Exts.toList . _tjfJobFlowIds+import           Network.AWS.EMR.Types+import           Network.AWS.EMR.Types.Product+import           Network.AWS.Prelude+import           Network.AWS.Request+import           Network.AWS.Response --- | 'TerminateJobFlows' constructor.+-- | Input to the TerminateJobFlows operation. ----- The fields accessible through corresponding lenses are:+-- /See:/ 'terminateJobFlows' smart constructor.+newtype TerminateJobFlows = TerminateJobFlows'+    { _tjfJobFlowIds :: [Text]+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'TerminateJobFlows' with the minimum fields required to make a request. ----- * 'tjfJobFlowIds' @::@ ['Text']+-- Use one of the following lenses to modify other fields as desired: ---terminateJobFlows :: TerminateJobFlows-terminateJobFlows = TerminateJobFlows+-- * 'tjfJobFlowIds'+terminateJobFlows+    :: TerminateJobFlows+terminateJobFlows =+    TerminateJobFlows'     { _tjfJobFlowIds = mempty     }  -- | A list of job flows to be shutdown. tjfJobFlowIds :: Lens' TerminateJobFlows [Text]-tjfJobFlowIds = lens _tjfJobFlowIds (\s a -> s { _tjfJobFlowIds = a }) . _List+tjfJobFlowIds = lens _tjfJobFlowIds (\ s a -> s{_tjfJobFlowIds = a}) . _Coerce; -data TerminateJobFlowsResponse = TerminateJobFlowsResponse-    deriving (Eq, Ord, Read, Show, Generic)+instance AWSRequest TerminateJobFlows where+        type Sv TerminateJobFlows = EMR+        type Rs TerminateJobFlows = TerminateJobFlowsResponse+        request = postJSON+        response = receiveNull TerminateJobFlowsResponse' --- | 'TerminateJobFlowsResponse' constructor.-terminateJobFlowsResponse :: TerminateJobFlowsResponse-terminateJobFlowsResponse = TerminateJobFlowsResponse+instance ToHeaders TerminateJobFlows where+        toHeaders+          = const+              (mconcat+                 ["X-Amz-Target" =#+                    ("ElasticMapReduce.TerminateJobFlows" :: ByteString),+                  "Content-Type" =#+                    ("application/x-amz-json-1.1" :: ByteString)]) +instance ToJSON TerminateJobFlows where+        toJSON TerminateJobFlows'{..}+          = object ["JobFlowIds" .= _tjfJobFlowIds]+ instance ToPath TerminateJobFlows where-    toPath = const "/"+        toPath = const "/"  instance ToQuery TerminateJobFlows where-    toQuery = const mempty--instance ToHeaders TerminateJobFlows--instance ToJSON TerminateJobFlows where-    toJSON TerminateJobFlows{..} = object-        [ "JobFlowIds" .= _tjfJobFlowIds-        ]+        toQuery = const mempty -instance AWSRequest TerminateJobFlows where-    type Sv TerminateJobFlows = EMR-    type Rs TerminateJobFlows = TerminateJobFlowsResponse+-- | /See:/ 'terminateJobFlowsResponse' smart constructor.+data TerminateJobFlowsResponse =+    TerminateJobFlowsResponse'+    deriving (Eq,Read,Show,Data,Typeable,Generic) -    request  = post "TerminateJobFlows"-    response = nullResponse TerminateJobFlowsResponse+-- | Creates a value of 'TerminateJobFlowsResponse' with the minimum fields required to make a request.+--+terminateJobFlowsResponse+    :: TerminateJobFlowsResponse+terminateJobFlowsResponse = TerminateJobFlowsResponse'
gen/Network/AWS/EMR/Types.hs view
@@ -1,3863 +1,393 @@-{-# LANGUAGE DataKinds                   #-}-{-# LANGUAGE DeriveGeneric               #-}-{-# LANGUAGE FlexibleInstances           #-}-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}-{-# LANGUAGE LambdaCase                  #-}-{-# LANGUAGE NoImplicitPrelude           #-}-{-# LANGUAGE OverloadedStrings           #-}-{-# LANGUAGE RecordWildCards             #-}-{-# LANGUAGE TypeFamilies                #-}-{-# LANGUAGE ViewPatterns                #-}--{-# OPTIONS_GHC -fno-warn-unused-imports #-}---- Module      : Network.AWS.EMR.Types--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>--- License     : This Source Code Form is subject to the terms of---               the Mozilla Public License, v. 2.0.---               A copy of the MPL can be found in the LICENSE file or---               you can obtain it at http://mozilla.org/MPL/2.0/.--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>--- Stability   : experimental--- Portability : non-portable (GHC extensions)------ Derived from AWS service descriptions, licensed under Apache 2.0.--module Network.AWS.EMR.Types-    (-    -- * Service-      EMR-    -- ** Error-    , JSONError--    -- * MarketType-    , MarketType (..)--    -- * InstanceGroupConfig-    , InstanceGroupConfig-    , instanceGroupConfig-    , igcBidPrice-    , igcInstanceCount-    , igcInstanceRole-    , igcInstanceType-    , igcMarket-    , igcName--    -- * InstanceStateChangeReason-    , InstanceStateChangeReason-    , instanceStateChangeReason-    , iscrCode-    , iscrMessage--    -- * JobFlowDetail-    , JobFlowDetail-    , jobFlowDetail-    , jfdAmiVersion-    , jfdBootstrapActions-    , jfdExecutionStatusDetail-    , jfdInstances-    , jfdJobFlowId-    , jfdJobFlowRole-    , jfdLogUri-    , jfdName-    , jfdServiceRole-    , jfdSteps-    , jfdSupportedProducts-    , jfdVisibleToAllUsers--    -- * KeyValue-    , KeyValue-    , keyValue-    , kvKey-    , kvValue--    -- * SupportedProductConfig-    , SupportedProductConfig-    , supportedProductConfig-    , spcArgs-    , spcName--    -- * Command-    , Command-    , command-    , cArgs-    , cName-    , cScriptPath--    -- * StepExecutionState-    , StepExecutionState (..)--    -- * ActionOnFailure-    , ActionOnFailure (..)--    -- * ClusterStateChangeReason-    , ClusterStateChangeReason-    , clusterStateChangeReason-    , cscrCode-    , cscrMessage--    -- * Tag-    , Tag-    , tag-    , tagKey-    , tagValue--    -- * Application-    , Application-    , application-    , aAdditionalInfo-    , aArgs-    , aName-    , aVersion--    -- * JobFlowExecutionStatusDetail-    , JobFlowExecutionStatusDetail-    , jobFlowExecutionStatusDetail-    , jfesdCreationDateTime-    , jfesdEndDateTime-    , jfesdLastStateChangeReason-    , jfesdReadyDateTime-    , jfesdStartDateTime-    , jfesdState--    -- * InstanceGroupStatus-    , InstanceGroupStatus-    , instanceGroupStatus-    , igsState-    , igsStateChangeReason-    , igsTimeline--    -- * Cluster-    , Cluster-    , cluster-    , c1Applications-    , c1AutoTerminate-    , c1Ec2InstanceAttributes-    , c1Id-    , c1LogUri-    , c1MasterPublicDnsName-    , c1Name-    , c1NormalizedInstanceHours-    , c1RequestedAmiVersion-    , c1RunningAmiVersion-    , c1ServiceRole-    , c1Status-    , c1Tags-    , c1TerminationProtected-    , c1VisibleToAllUsers--    -- * InstanceTimeline-    , InstanceTimeline-    , instanceTimeline-    , itCreationDateTime-    , itEndDateTime-    , itReadyDateTime--    -- * Ec2InstanceAttributes-    , Ec2InstanceAttributes-    , ec2InstanceAttributes-    , eiaAdditionalMasterSecurityGroups-    , eiaAdditionalSlaveSecurityGroups-    , eiaEc2AvailabilityZone-    , eiaEc2KeyName-    , eiaEc2SubnetId-    , eiaEmrManagedMasterSecurityGroup-    , eiaEmrManagedSlaveSecurityGroup-    , eiaIamInstanceProfile--    -- * StepStateChangeReasonCode-    , StepStateChangeReasonCode (..)--    -- * ClusterState-    , ClusterState (..)--    -- * HadoopStepConfig-    , HadoopStepConfig-    , hadoopStepConfig-    , hscArgs-    , hscJar-    , hscMainClass-    , hscProperties--    -- * JobFlowExecutionState-    , JobFlowExecutionState (..)--    -- * StepDetail-    , StepDetail-    , stepDetail-    , sdExecutionStatusDetail-    , sdStepConfig--    -- * InstanceGroupStateChangeReason-    , InstanceGroupStateChangeReason-    , instanceGroupStateChangeReason-    , igscrCode-    , igscrMessage--    -- * InstanceGroupType-    , InstanceGroupType (..)--    -- * InstanceGroupStateChangeReasonCode-    , InstanceGroupStateChangeReasonCode (..)--    -- * StepStatus-    , StepStatus-    , stepStatus-    , ssState-    , ssStateChangeReason-    , ssTimeline--    -- * StepSummary-    , StepSummary-    , stepSummary-    , ssActionOnFailure-    , ssConfig-    , ssId-    , ssName-    , ssStatus--    -- * InstanceGroupState-    , InstanceGroupState (..)--    -- * StepTimeline-    , StepTimeline-    , stepTimeline-    , stCreationDateTime-    , stEndDateTime-    , stStartDateTime--    -- * PlacementType-    , PlacementType-    , placementType-    , ptAvailabilityZone--    -- * HadoopJarStepConfig-    , HadoopJarStepConfig-    , hadoopJarStepConfig-    , hjscArgs-    , hjscJar-    , hjscMainClass-    , hjscProperties--    -- * InstanceGroupModifyConfig-    , InstanceGroupModifyConfig-    , instanceGroupModifyConfig-    , igmcEC2InstanceIdsToTerminate-    , igmcInstanceCount-    , igmcInstanceGroupId--    -- * InstanceGroupDetail-    , InstanceGroupDetail-    , instanceGroupDetail-    , igdBidPrice-    , igdCreationDateTime-    , igdEndDateTime-    , igdInstanceGroupId-    , igdInstanceRequestCount-    , igdInstanceRole-    , igdInstanceRunningCount-    , igdInstanceType-    , igdLastStateChangeReason-    , igdMarket-    , igdName-    , igdReadyDateTime-    , igdStartDateTime-    , igdState--    -- * StepStateChangeReason-    , StepStateChangeReason-    , stepStateChangeReason-    , sscrCode-    , sscrMessage--    -- * ClusterStateChangeReasonCode-    , ClusterStateChangeReasonCode (..)--    -- * Step-    , Step-    , step-    , sActionOnFailure-    , sConfig-    , sId-    , sName-    , sStatus--    -- * StepState-    , StepState (..)--    -- * InstanceGroupTimeline-    , InstanceGroupTimeline-    , instanceGroupTimeline-    , igtCreationDateTime-    , igtEndDateTime-    , igtReadyDateTime--    -- * BootstrapActionDetail-    , BootstrapActionDetail-    , bootstrapActionDetail-    , badBootstrapActionConfig--    -- * StepExecutionStatusDetail-    , StepExecutionStatusDetail-    , stepExecutionStatusDetail-    , sesdCreationDateTime-    , sesdEndDateTime-    , sesdLastStateChangeReason-    , sesdStartDateTime-    , sesdState--    -- * InstanceStatus-    , InstanceStatus-    , instanceStatus-    , isState-    , isStateChangeReason-    , isTimeline--    -- * InstanceRoleType-    , InstanceRoleType (..)--    -- * JobFlowInstancesConfig-    , JobFlowInstancesConfig-    , jobFlowInstancesConfig-    , jficAdditionalMasterSecurityGroups-    , jficAdditionalSlaveSecurityGroups-    , jficEc2KeyName-    , jficEc2SubnetId-    , jficEmrManagedMasterSecurityGroup-    , jficEmrManagedSlaveSecurityGroup-    , jficHadoopVersion-    , jficInstanceCount-    , jficInstanceGroups-    , jficKeepJobFlowAliveWhenNoSteps-    , jficMasterInstanceType-    , jficPlacement-    , jficSlaveInstanceType-    , jficTerminationProtected--    -- * StepConfig-    , StepConfig-    , stepConfig-    , scActionOnFailure-    , scHadoopJarStep-    , scName--    -- * InstanceGroup-    , InstanceGroup-    , instanceGroup-    , igBidPrice-    , igId-    , igInstanceGroupType-    , igInstanceType-    , igMarket-    , igName-    , igRequestedInstanceCount-    , igRunningInstanceCount-    , igStatus--    -- * BootstrapActionConfig-    , BootstrapActionConfig-    , bootstrapActionConfig-    , bacName-    , bacScriptBootstrapAction--    -- * ClusterSummary-    , ClusterSummary-    , clusterSummary-    , csId-    , csName-    , csNormalizedInstanceHours-    , csStatus--    -- * JobFlowInstancesDetail-    , JobFlowInstancesDetail-    , jobFlowInstancesDetail-    , jfidEc2KeyName-    , jfidEc2SubnetId-    , jfidHadoopVersion-    , jfidInstanceCount-    , jfidInstanceGroups-    , jfidKeepJobFlowAliveWhenNoSteps-    , jfidMasterInstanceId-    , jfidMasterInstanceType-    , jfidMasterPublicDnsName-    , jfidNormalizedInstanceHours-    , jfidPlacement-    , jfidSlaveInstanceType-    , jfidTerminationProtected--    -- * ClusterStatus-    , ClusterStatus-    , clusterStatus-    , csState-    , csStateChangeReason-    , csTimeline--    -- * InstanceState-    , InstanceState (..)--    -- * ClusterTimeline-    , ClusterTimeline-    , clusterTimeline-    , ctCreationDateTime-    , ctEndDateTime-    , ctReadyDateTime--    -- * InstanceStateChangeReasonCode-    , InstanceStateChangeReasonCode (..)--    -- * Instance-    , Instance-    , instance'-    , iEc2InstanceId-    , iId-    , iPrivateDnsName-    , iPrivateIpAddress-    , iPublicDnsName-    , iPublicIpAddress-    , iStatus--    -- * ScriptBootstrapActionConfig-    , ScriptBootstrapActionConfig-    , scriptBootstrapActionConfig-    , sbacArgs-    , sbacPath-    ) where--import Network.AWS.Prelude-import Network.AWS.Signing-import qualified GHC.Exts---- | Version @2009-03-31@ of the Amazon Elastic MapReduce service.-data EMR--instance AWSService EMR where-    type Sg EMR = V4-    type Er EMR = JSONError--    service = service'-      where-        service' :: Service EMR-        service' = Service-            { _svcAbbrev       = "EMR"-            , _svcPrefix       = "elasticmapreduce"-            , _svcVersion      = "2009-03-31"-            , _svcTargetPrefix = Just "ElasticMapReduce"-            , _svcJSONVersion  = Just "1.1"-            , _svcHandle       = handle-            , _svcRetry        = retry-            }--        handle :: Status-               -> Maybe (LazyByteString -> ServiceError JSONError)-        handle = jsonError statusSuccess service'--        retry :: Retry EMR-        retry = Exponential-            { _retryBase     = 0.05-            , _retryGrowth   = 2-            , _retryAttempts = 5-            , _retryCheck    = check-            }--        check :: Status-              -> JSONError-              -> Bool-        check (statusCode -> s) (awsErrorCode -> e)-            | s == 400 && (Just "ThrottlingException") == e = True -- Throttling-            | s == 500  = True -- General Server Error-            | s == 509  = True -- Limit Exceeded-            | s == 503  = True -- Service Unavailable-            | otherwise = False--data MarketType-    = OnDemand -- ^ ON_DEMAND-    | Spot     -- ^ SPOT-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable MarketType--instance FromText MarketType where-    parser = takeLowerText >>= \case-        "on_demand" -> pure OnDemand-        "spot"      -> pure Spot-        e           -> fail $-            "Failure parsing MarketType from " ++ show e--instance ToText MarketType where-    toText = \case-        OnDemand -> "ON_DEMAND"-        Spot     -> "SPOT"--instance ToByteString MarketType-instance ToHeader     MarketType-instance ToQuery      MarketType--instance FromJSON MarketType where-    parseJSON = parseJSONText "MarketType"--instance ToJSON MarketType where-    toJSON = toJSONText--data InstanceGroupConfig = InstanceGroupConfig-    { _igcBidPrice      :: Maybe Text-    , _igcInstanceCount :: Int-    , _igcInstanceRole  :: InstanceRoleType-    , _igcInstanceType  :: Text-    , _igcMarket        :: Maybe MarketType-    , _igcName          :: Maybe Text-    } deriving (Eq, Read, Show)---- | 'InstanceGroupConfig' constructor.------ The fields accessible through corresponding lenses are:------ * 'igcBidPrice' @::@ 'Maybe' 'Text'------ * 'igcInstanceCount' @::@ 'Int'------ * 'igcInstanceRole' @::@ 'InstanceRoleType'------ * 'igcInstanceType' @::@ 'Text'------ * 'igcMarket' @::@ 'Maybe' 'MarketType'------ * 'igcName' @::@ 'Maybe' 'Text'----instanceGroupConfig :: InstanceRoleType -- ^ 'igcInstanceRole'-                    -> Text -- ^ 'igcInstanceType'-                    -> Int -- ^ 'igcInstanceCount'-                    -> InstanceGroupConfig-instanceGroupConfig p1 p2 p3 = InstanceGroupConfig-    { _igcInstanceRole  = p1-    , _igcInstanceType  = p2-    , _igcInstanceCount = p3-    , _igcName          = Nothing-    , _igcMarket        = Nothing-    , _igcBidPrice      = Nothing-    }---- | Bid price for each Amazon EC2 instance in the instance group when launching--- nodes as Spot Instances, expressed in USD.-igcBidPrice :: Lens' InstanceGroupConfig (Maybe Text)-igcBidPrice = lens _igcBidPrice (\s a -> s { _igcBidPrice = a })---- | Target number of instances for the instance group.-igcInstanceCount :: Lens' InstanceGroupConfig Int-igcInstanceCount = lens _igcInstanceCount (\s a -> s { _igcInstanceCount = a })---- | The role of the instance group in the cluster.-igcInstanceRole :: Lens' InstanceGroupConfig InstanceRoleType-igcInstanceRole = lens _igcInstanceRole (\s a -> s { _igcInstanceRole = a })---- | The Amazon EC2 instance type for all instances in the instance group.-igcInstanceType :: Lens' InstanceGroupConfig Text-igcInstanceType = lens _igcInstanceType (\s a -> s { _igcInstanceType = a })---- | Market type of the Amazon EC2 instances used to create a cluster node.-igcMarket :: Lens' InstanceGroupConfig (Maybe MarketType)-igcMarket = lens _igcMarket (\s a -> s { _igcMarket = a })---- | Friendly name given to the instance group.-igcName :: Lens' InstanceGroupConfig (Maybe Text)-igcName = lens _igcName (\s a -> s { _igcName = a })--instance FromJSON InstanceGroupConfig where-    parseJSON = withObject "InstanceGroupConfig" $ \o -> InstanceGroupConfig-        <$> o .:? "BidPrice"-        <*> o .:  "InstanceCount"-        <*> o .:  "InstanceRole"-        <*> o .:  "InstanceType"-        <*> o .:? "Market"-        <*> o .:? "Name"--instance ToJSON InstanceGroupConfig where-    toJSON InstanceGroupConfig{..} = object-        [ "Name"          .= _igcName-        , "Market"        .= _igcMarket-        , "InstanceRole"  .= _igcInstanceRole-        , "BidPrice"      .= _igcBidPrice-        , "InstanceType"  .= _igcInstanceType-        , "InstanceCount" .= _igcInstanceCount-        ]--data InstanceStateChangeReason = InstanceStateChangeReason-    { _iscrCode    :: Maybe InstanceStateChangeReasonCode-    , _iscrMessage :: Maybe Text-    } deriving (Eq, Read, Show)---- | 'InstanceStateChangeReason' constructor.------ The fields accessible through corresponding lenses are:------ * 'iscrCode' @::@ 'Maybe' 'InstanceStateChangeReasonCode'------ * 'iscrMessage' @::@ 'Maybe' 'Text'----instanceStateChangeReason :: InstanceStateChangeReason-instanceStateChangeReason = InstanceStateChangeReason-    { _iscrCode    = Nothing-    , _iscrMessage = Nothing-    }---- | The programmable code for the state change reason.-iscrCode :: Lens' InstanceStateChangeReason (Maybe InstanceStateChangeReasonCode)-iscrCode = lens _iscrCode (\s a -> s { _iscrCode = a })---- | The status change reason description.-iscrMessage :: Lens' InstanceStateChangeReason (Maybe Text)-iscrMessage = lens _iscrMessage (\s a -> s { _iscrMessage = a })--instance FromJSON InstanceStateChangeReason where-    parseJSON = withObject "InstanceStateChangeReason" $ \o -> InstanceStateChangeReason-        <$> o .:? "Code"-        <*> o .:? "Message"--instance ToJSON InstanceStateChangeReason where-    toJSON InstanceStateChangeReason{..} = object-        [ "Code"    .= _iscrCode-        , "Message" .= _iscrMessage-        ]--data JobFlowDetail = JobFlowDetail-    { _jfdAmiVersion            :: Maybe Text-    , _jfdBootstrapActions      :: List "BootstrapActions" BootstrapActionDetail-    , _jfdExecutionStatusDetail :: JobFlowExecutionStatusDetail-    , _jfdInstances             :: JobFlowInstancesDetail-    , _jfdJobFlowId             :: Text-    , _jfdJobFlowRole           :: Maybe Text-    , _jfdLogUri                :: Maybe Text-    , _jfdName                  :: Text-    , _jfdServiceRole           :: Maybe Text-    , _jfdSteps                 :: List "Steps" StepDetail-    , _jfdSupportedProducts     :: List "SupportedProducts" Text-    , _jfdVisibleToAllUsers     :: Maybe Bool-    } deriving (Eq, Read, Show)---- | 'JobFlowDetail' constructor.------ The fields accessible through corresponding lenses are:------ * 'jfdAmiVersion' @::@ 'Maybe' 'Text'------ * 'jfdBootstrapActions' @::@ ['BootstrapActionDetail']------ * 'jfdExecutionStatusDetail' @::@ 'JobFlowExecutionStatusDetail'------ * 'jfdInstances' @::@ 'JobFlowInstancesDetail'------ * 'jfdJobFlowId' @::@ 'Text'------ * 'jfdJobFlowRole' @::@ 'Maybe' 'Text'------ * 'jfdLogUri' @::@ 'Maybe' 'Text'------ * 'jfdName' @::@ 'Text'------ * 'jfdServiceRole' @::@ 'Maybe' 'Text'------ * 'jfdSteps' @::@ ['StepDetail']------ * 'jfdSupportedProducts' @::@ ['Text']------ * 'jfdVisibleToAllUsers' @::@ 'Maybe' 'Bool'----jobFlowDetail :: Text -- ^ 'jfdJobFlowId'-              -> Text -- ^ 'jfdName'-              -> JobFlowExecutionStatusDetail -- ^ 'jfdExecutionStatusDetail'-              -> JobFlowInstancesDetail -- ^ 'jfdInstances'-              -> JobFlowDetail-jobFlowDetail p1 p2 p3 p4 = JobFlowDetail-    { _jfdJobFlowId             = p1-    , _jfdName                  = p2-    , _jfdExecutionStatusDetail = p3-    , _jfdInstances             = p4-    , _jfdLogUri                = Nothing-    , _jfdAmiVersion            = Nothing-    , _jfdSteps                 = mempty-    , _jfdBootstrapActions      = mempty-    , _jfdSupportedProducts     = mempty-    , _jfdVisibleToAllUsers     = Nothing-    , _jfdJobFlowRole           = Nothing-    , _jfdServiceRole           = Nothing-    }---- | The version of the AMI used to initialize Amazon EC2 instances in the job--- flow. For a list of AMI versions currently supported by Amazon--- ElasticMapReduce, go to <http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/EnvironmentConfig_AMIVersion.html#ami-versions-supported AMI Versions Supported in Elastic MapReduce> in the /Amazon Elastic MapReduce Developer's Guide./-jfdAmiVersion :: Lens' JobFlowDetail (Maybe Text)-jfdAmiVersion = lens _jfdAmiVersion (\s a -> s { _jfdAmiVersion = a })---- | A list of the bootstrap actions run by the job flow.-jfdBootstrapActions :: Lens' JobFlowDetail [BootstrapActionDetail]-jfdBootstrapActions =-    lens _jfdBootstrapActions (\s a -> s { _jfdBootstrapActions = a })-        . _List---- | Describes the execution status of the job flow.-jfdExecutionStatusDetail :: Lens' JobFlowDetail JobFlowExecutionStatusDetail-jfdExecutionStatusDetail =-    lens _jfdExecutionStatusDetail-        (\s a -> s { _jfdExecutionStatusDetail = a })---- | Describes the Amazon EC2 instances of the job flow.-jfdInstances :: Lens' JobFlowDetail JobFlowInstancesDetail-jfdInstances = lens _jfdInstances (\s a -> s { _jfdInstances = a })---- | The job flow identifier.-jfdJobFlowId :: Lens' JobFlowDetail Text-jfdJobFlowId = lens _jfdJobFlowId (\s a -> s { _jfdJobFlowId = a })---- | The IAM role that was specified when the job flow was launched. The EC2--- instances of the job flow assume this role.-jfdJobFlowRole :: Lens' JobFlowDetail (Maybe Text)-jfdJobFlowRole = lens _jfdJobFlowRole (\s a -> s { _jfdJobFlowRole = a })---- | The location in Amazon S3 where log files for the job are stored.-jfdLogUri :: Lens' JobFlowDetail (Maybe Text)-jfdLogUri = lens _jfdLogUri (\s a -> s { _jfdLogUri = a })---- | The name of the job flow.-jfdName :: Lens' JobFlowDetail Text-jfdName = lens _jfdName (\s a -> s { _jfdName = a })---- | The IAM role that will be assumed by the Amazon EMR service to access AWS--- resources on your behalf.-jfdServiceRole :: Lens' JobFlowDetail (Maybe Text)-jfdServiceRole = lens _jfdServiceRole (\s a -> s { _jfdServiceRole = a })---- | A list of steps run by the job flow.-jfdSteps :: Lens' JobFlowDetail [StepDetail]-jfdSteps = lens _jfdSteps (\s a -> s { _jfdSteps = a }) . _List---- | A list of strings set by third party software when the job flow is launched.--- If you are not using third party software to manage the job flow this value--- is empty.-jfdSupportedProducts :: Lens' JobFlowDetail [Text]-jfdSupportedProducts =-    lens _jfdSupportedProducts (\s a -> s { _jfdSupportedProducts = a })-        . _List---- | Specifies whether the job flow is visible to all IAM users of the AWS account--- associated with the job flow. If this value is set to 'true', all IAM users of--- that AWS account can view and (if they have the proper policy permissions--- set) manage the job flow. If it is set to 'false', only the IAM user that--- created the job flow can view and manage it. This value can be changed using--- the 'SetVisibleToAllUsers' action.-jfdVisibleToAllUsers :: Lens' JobFlowDetail (Maybe Bool)-jfdVisibleToAllUsers =-    lens _jfdVisibleToAllUsers (\s a -> s { _jfdVisibleToAllUsers = a })--instance FromJSON JobFlowDetail where-    parseJSON = withObject "JobFlowDetail" $ \o -> JobFlowDetail-        <$> o .:? "AmiVersion"-        <*> o .:? "BootstrapActions" .!= mempty-        <*> o .:  "ExecutionStatusDetail"-        <*> o .:  "Instances"-        <*> o .:  "JobFlowId"-        <*> o .:? "JobFlowRole"-        <*> o .:? "LogUri"-        <*> o .:  "Name"-        <*> o .:? "ServiceRole"-        <*> o .:? "Steps" .!= mempty-        <*> o .:? "SupportedProducts" .!= mempty-        <*> o .:? "VisibleToAllUsers"--instance ToJSON JobFlowDetail where-    toJSON JobFlowDetail{..} = object-        [ "JobFlowId"             .= _jfdJobFlowId-        , "Name"                  .= _jfdName-        , "LogUri"                .= _jfdLogUri-        , "AmiVersion"            .= _jfdAmiVersion-        , "ExecutionStatusDetail" .= _jfdExecutionStatusDetail-        , "Instances"             .= _jfdInstances-        , "Steps"                 .= _jfdSteps-        , "BootstrapActions"      .= _jfdBootstrapActions-        , "SupportedProducts"     .= _jfdSupportedProducts-        , "VisibleToAllUsers"     .= _jfdVisibleToAllUsers-        , "JobFlowRole"           .= _jfdJobFlowRole-        , "ServiceRole"           .= _jfdServiceRole-        ]--data KeyValue = KeyValue-    { _kvKey   :: Maybe Text-    , _kvValue :: Maybe Text-    } deriving (Eq, Ord, Read, Show)---- | 'KeyValue' constructor.------ The fields accessible through corresponding lenses are:------ * 'kvKey' @::@ 'Maybe' 'Text'------ * 'kvValue' @::@ 'Maybe' 'Text'----keyValue :: KeyValue-keyValue = KeyValue-    { _kvKey   = Nothing-    , _kvValue = Nothing-    }---- | The unique identifier of a key value pair.-kvKey :: Lens' KeyValue (Maybe Text)-kvKey = lens _kvKey (\s a -> s { _kvKey = a })---- | The value part of the identified key.-kvValue :: Lens' KeyValue (Maybe Text)-kvValue = lens _kvValue (\s a -> s { _kvValue = a })--instance FromJSON KeyValue where-    parseJSON = withObject "KeyValue" $ \o -> KeyValue-        <$> o .:? "Key"-        <*> o .:? "Value"--instance ToJSON KeyValue where-    toJSON KeyValue{..} = object-        [ "Key"   .= _kvKey-        , "Value" .= _kvValue-        ]--data SupportedProductConfig = SupportedProductConfig-    { _spcArgs :: List "Args" Text-    , _spcName :: Maybe Text-    } deriving (Eq, Ord, Read, Show)---- | 'SupportedProductConfig' constructor.------ The fields accessible through corresponding lenses are:------ * 'spcArgs' @::@ ['Text']------ * 'spcName' @::@ 'Maybe' 'Text'----supportedProductConfig :: SupportedProductConfig-supportedProductConfig = SupportedProductConfig-    { _spcName = Nothing-    , _spcArgs = mempty-    }---- | The list of user-supplied arguments.-spcArgs :: Lens' SupportedProductConfig [Text]-spcArgs = lens _spcArgs (\s a -> s { _spcArgs = a }) . _List---- | The name of the product configuration.-spcName :: Lens' SupportedProductConfig (Maybe Text)-spcName = lens _spcName (\s a -> s { _spcName = a })--instance FromJSON SupportedProductConfig where-    parseJSON = withObject "SupportedProductConfig" $ \o -> SupportedProductConfig-        <$> o .:? "Args" .!= mempty-        <*> o .:? "Name"--instance ToJSON SupportedProductConfig where-    toJSON SupportedProductConfig{..} = object-        [ "Name" .= _spcName-        , "Args" .= _spcArgs-        ]--data Command = Command-    { _cArgs       :: List "Args" Text-    , _cName       :: Maybe Text-    , _cScriptPath :: Maybe Text-    } deriving (Eq, Ord, Read, Show)---- | 'Command' constructor.------ The fields accessible through corresponding lenses are:------ * 'cArgs' @::@ ['Text']------ * 'cName' @::@ 'Maybe' 'Text'------ * 'cScriptPath' @::@ 'Maybe' 'Text'----command :: Command-command = Command-    { _cName       = Nothing-    , _cScriptPath = Nothing-    , _cArgs       = mempty-    }---- | Arguments for Amazon EMR to pass to the command for execution.-cArgs :: Lens' Command [Text]-cArgs = lens _cArgs (\s a -> s { _cArgs = a }) . _List---- | The name of the command.-cName :: Lens' Command (Maybe Text)-cName = lens _cName (\s a -> s { _cName = a })---- | The Amazon S3 location of the command script.-cScriptPath :: Lens' Command (Maybe Text)-cScriptPath = lens _cScriptPath (\s a -> s { _cScriptPath = a })--instance FromJSON Command where-    parseJSON = withObject "Command" $ \o -> Command-        <$> o .:? "Args" .!= mempty-        <*> o .:? "Name"-        <*> o .:? "ScriptPath"--instance ToJSON Command where-    toJSON Command{..} = object-        [ "Name"       .= _cName-        , "ScriptPath" .= _cScriptPath-        , "Args"       .= _cArgs-        ]--data StepExecutionState-    = Cancelled   -- ^ CANCELLED-    | Completed   -- ^ COMPLETED-    | Continue    -- ^ CONTINUE-    | Failed      -- ^ FAILED-    | Interrupted -- ^ INTERRUPTED-    | Pending     -- ^ PENDING-    | Running     -- ^ RUNNING-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable StepExecutionState--instance FromText StepExecutionState where-    parser = takeLowerText >>= \case-        "cancelled"   -> pure Cancelled-        "completed"   -> pure Completed-        "continue"    -> pure Continue-        "failed"      -> pure Failed-        "interrupted" -> pure Interrupted-        "pending"     -> pure Pending-        "running"     -> pure Running-        e             -> fail $-            "Failure parsing StepExecutionState from " ++ show e--instance ToText StepExecutionState where-    toText = \case-        Cancelled   -> "CANCELLED"-        Completed   -> "COMPLETED"-        Continue    -> "CONTINUE"-        Failed      -> "FAILED"-        Interrupted -> "INTERRUPTED"-        Pending     -> "PENDING"-        Running     -> "RUNNING"--instance ToByteString StepExecutionState-instance ToHeader     StepExecutionState-instance ToQuery      StepExecutionState--instance FromJSON StepExecutionState where-    parseJSON = parseJSONText "StepExecutionState"--instance ToJSON StepExecutionState where-    toJSON = toJSONText--data ActionOnFailure-    = AOFCancelAndWait    -- ^ CANCEL_AND_WAIT-    | AOFContinue         -- ^ CONTINUE-    | AOFTerminateCluster -- ^ TERMINATE_CLUSTER-    | AOFTerminateJobFlow -- ^ TERMINATE_JOB_FLOW-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable ActionOnFailure--instance FromText ActionOnFailure where-    parser = takeLowerText >>= \case-        "cancel_and_wait"    -> pure AOFCancelAndWait-        "continue"           -> pure AOFContinue-        "terminate_cluster"  -> pure AOFTerminateCluster-        "terminate_job_flow" -> pure AOFTerminateJobFlow-        e                    -> fail $-            "Failure parsing ActionOnFailure from " ++ show e--instance ToText ActionOnFailure where-    toText = \case-        AOFCancelAndWait    -> "CANCEL_AND_WAIT"-        AOFContinue         -> "CONTINUE"-        AOFTerminateCluster -> "TERMINATE_CLUSTER"-        AOFTerminateJobFlow -> "TERMINATE_JOB_FLOW"--instance ToByteString ActionOnFailure-instance ToHeader     ActionOnFailure-instance ToQuery      ActionOnFailure--instance FromJSON ActionOnFailure where-    parseJSON = parseJSONText "ActionOnFailure"--instance ToJSON ActionOnFailure where-    toJSON = toJSONText--data ClusterStateChangeReason = ClusterStateChangeReason-    { _cscrCode    :: Maybe ClusterStateChangeReasonCode-    , _cscrMessage :: Maybe Text-    } deriving (Eq, Read, Show)---- | 'ClusterStateChangeReason' constructor.------ The fields accessible through corresponding lenses are:------ * 'cscrCode' @::@ 'Maybe' 'ClusterStateChangeReasonCode'------ * 'cscrMessage' @::@ 'Maybe' 'Text'----clusterStateChangeReason :: ClusterStateChangeReason-clusterStateChangeReason = ClusterStateChangeReason-    { _cscrCode    = Nothing-    , _cscrMessage = Nothing-    }---- | The programmatic code for the state change reason.-cscrCode :: Lens' ClusterStateChangeReason (Maybe ClusterStateChangeReasonCode)-cscrCode = lens _cscrCode (\s a -> s { _cscrCode = a })---- | The descriptive message for the state change reason.-cscrMessage :: Lens' ClusterStateChangeReason (Maybe Text)-cscrMessage = lens _cscrMessage (\s a -> s { _cscrMessage = a })--instance FromJSON ClusterStateChangeReason where-    parseJSON = withObject "ClusterStateChangeReason" $ \o -> ClusterStateChangeReason-        <$> o .:? "Code"-        <*> o .:? "Message"--instance ToJSON ClusterStateChangeReason where-    toJSON ClusterStateChangeReason{..} = object-        [ "Code"    .= _cscrCode-        , "Message" .= _cscrMessage-        ]--data Tag = Tag-    { _tagKey   :: Maybe Text-    , _tagValue :: Maybe Text-    } deriving (Eq, Ord, Read, Show)---- | 'Tag' constructor.------ The fields accessible through corresponding lenses are:------ * 'tagKey' @::@ 'Maybe' 'Text'------ * 'tagValue' @::@ 'Maybe' 'Text'----tag :: Tag-tag = Tag-    { _tagKey   = Nothing-    , _tagValue = Nothing-    }---- | A user-defined key, which is the minimum required information for a valid--- tag. For more information, see <http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-plan-tags.html Tagging Amazon EMR Resources>.-tagKey :: Lens' Tag (Maybe Text)-tagKey = lens _tagKey (\s a -> s { _tagKey = a })---- | A user-defined value, which is optional in a tag. For more information, see <http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-plan-tags.html Tagging Amazon EMR Resources>.-tagValue :: Lens' Tag (Maybe Text)-tagValue = lens _tagValue (\s a -> s { _tagValue = a })--instance FromJSON Tag where-    parseJSON = withObject "Tag" $ \o -> Tag-        <$> o .:? "Key"-        <*> o .:? "Value"--instance ToJSON Tag where-    toJSON Tag{..} = object-        [ "Key"   .= _tagKey-        , "Value" .= _tagValue-        ]--data Application = Application-    { _aAdditionalInfo :: Map Text Text-    , _aArgs           :: List "Args" Text-    , _aName           :: Maybe Text-    , _aVersion        :: Maybe Text-    } deriving (Eq, Read, Show)---- | 'Application' constructor.------ The fields accessible through corresponding lenses are:------ * 'aAdditionalInfo' @::@ 'HashMap' 'Text' 'Text'------ * 'aArgs' @::@ ['Text']------ * 'aName' @::@ 'Maybe' 'Text'------ * 'aVersion' @::@ 'Maybe' 'Text'----application :: Application-application = Application-    { _aName           = Nothing-    , _aVersion        = Nothing-    , _aArgs           = mempty-    , _aAdditionalInfo = mempty-    }---- | This option is for advanced users only. This is meta information about--- third-party applications that third-party vendors use for testing purposes.-aAdditionalInfo :: Lens' Application (HashMap Text Text)-aAdditionalInfo = lens _aAdditionalInfo (\s a -> s { _aAdditionalInfo = a }) . _Map---- | Arguments for Amazon EMR to pass to the application.-aArgs :: Lens' Application [Text]-aArgs = lens _aArgs (\s a -> s { _aArgs = a }) . _List---- | The name of the application.-aName :: Lens' Application (Maybe Text)-aName = lens _aName (\s a -> s { _aName = a })---- | The version of the application.-aVersion :: Lens' Application (Maybe Text)-aVersion = lens _aVersion (\s a -> s { _aVersion = a })--instance FromJSON Application where-    parseJSON = withObject "Application" $ \o -> Application-        <$> o .:? "AdditionalInfo" .!= mempty-        <*> o .:? "Args" .!= mempty-        <*> o .:? "Name"-        <*> o .:? "Version"--instance ToJSON Application where-    toJSON Application{..} = object-        [ "Name"           .= _aName-        , "Version"        .= _aVersion-        , "Args"           .= _aArgs-        , "AdditionalInfo" .= _aAdditionalInfo-        ]--data JobFlowExecutionStatusDetail = JobFlowExecutionStatusDetail-    { _jfesdCreationDateTime      :: POSIX-    , _jfesdEndDateTime           :: Maybe POSIX-    , _jfesdLastStateChangeReason :: Maybe Text-    , _jfesdReadyDateTime         :: Maybe POSIX-    , _jfesdStartDateTime         :: Maybe POSIX-    , _jfesdState                 :: JobFlowExecutionState-    } deriving (Eq, Read, Show)---- | 'JobFlowExecutionStatusDetail' constructor.------ The fields accessible through corresponding lenses are:------ * 'jfesdCreationDateTime' @::@ 'UTCTime'------ * 'jfesdEndDateTime' @::@ 'Maybe' 'UTCTime'------ * 'jfesdLastStateChangeReason' @::@ 'Maybe' 'Text'------ * 'jfesdReadyDateTime' @::@ 'Maybe' 'UTCTime'------ * 'jfesdStartDateTime' @::@ 'Maybe' 'UTCTime'------ * 'jfesdState' @::@ 'JobFlowExecutionState'----jobFlowExecutionStatusDetail :: JobFlowExecutionState -- ^ 'jfesdState'-                             -> UTCTime -- ^ 'jfesdCreationDateTime'-                             -> JobFlowExecutionStatusDetail-jobFlowExecutionStatusDetail p1 p2 = JobFlowExecutionStatusDetail-    { _jfesdState                 = p1-    , _jfesdCreationDateTime      = withIso _Time (const id) p2-    , _jfesdStartDateTime         = Nothing-    , _jfesdReadyDateTime         = Nothing-    , _jfesdEndDateTime           = Nothing-    , _jfesdLastStateChangeReason = Nothing-    }---- | The creation date and time of the job flow.-jfesdCreationDateTime :: Lens' JobFlowExecutionStatusDetail UTCTime-jfesdCreationDateTime =-    lens _jfesdCreationDateTime (\s a -> s { _jfesdCreationDateTime = a })-        . _Time---- | The completion date and time of the job flow.-jfesdEndDateTime :: Lens' JobFlowExecutionStatusDetail (Maybe UTCTime)-jfesdEndDateTime = lens _jfesdEndDateTime (\s a -> s { _jfesdEndDateTime = a }) . mapping _Time---- | Description of the job flow last changed state.-jfesdLastStateChangeReason :: Lens' JobFlowExecutionStatusDetail (Maybe Text)-jfesdLastStateChangeReason =-    lens _jfesdLastStateChangeReason-        (\s a -> s { _jfesdLastStateChangeReason = a })---- | The date and time when the job flow was ready to start running bootstrap--- actions.-jfesdReadyDateTime :: Lens' JobFlowExecutionStatusDetail (Maybe UTCTime)-jfesdReadyDateTime =-    lens _jfesdReadyDateTime (\s a -> s { _jfesdReadyDateTime = a })-        . mapping _Time---- | The start date and time of the job flow.-jfesdStartDateTime :: Lens' JobFlowExecutionStatusDetail (Maybe UTCTime)-jfesdStartDateTime =-    lens _jfesdStartDateTime (\s a -> s { _jfesdStartDateTime = a })-        . mapping _Time---- | The state of the job flow.-jfesdState :: Lens' JobFlowExecutionStatusDetail JobFlowExecutionState-jfesdState = lens _jfesdState (\s a -> s { _jfesdState = a })--instance FromJSON JobFlowExecutionStatusDetail where-    parseJSON = withObject "JobFlowExecutionStatusDetail" $ \o -> JobFlowExecutionStatusDetail-        <$> o .:  "CreationDateTime"-        <*> o .:? "EndDateTime"-        <*> o .:? "LastStateChangeReason"-        <*> o .:? "ReadyDateTime"-        <*> o .:? "StartDateTime"-        <*> o .:  "State"--instance ToJSON JobFlowExecutionStatusDetail where-    toJSON JobFlowExecutionStatusDetail{..} = object-        [ "State"                 .= _jfesdState-        , "CreationDateTime"      .= _jfesdCreationDateTime-        , "StartDateTime"         .= _jfesdStartDateTime-        , "ReadyDateTime"         .= _jfesdReadyDateTime-        , "EndDateTime"           .= _jfesdEndDateTime-        , "LastStateChangeReason" .= _jfesdLastStateChangeReason-        ]--data InstanceGroupStatus = InstanceGroupStatus-    { _igsState             :: Maybe InstanceGroupState-    , _igsStateChangeReason :: Maybe InstanceGroupStateChangeReason-    , _igsTimeline          :: Maybe InstanceGroupTimeline-    } deriving (Eq, Read, Show)---- | 'InstanceGroupStatus' constructor.------ The fields accessible through corresponding lenses are:------ * 'igsState' @::@ 'Maybe' 'InstanceGroupState'------ * 'igsStateChangeReason' @::@ 'Maybe' 'InstanceGroupStateChangeReason'------ * 'igsTimeline' @::@ 'Maybe' 'InstanceGroupTimeline'----instanceGroupStatus :: InstanceGroupStatus-instanceGroupStatus = InstanceGroupStatus-    { _igsState             = Nothing-    , _igsStateChangeReason = Nothing-    , _igsTimeline          = Nothing-    }---- | The current state of the instance group.-igsState :: Lens' InstanceGroupStatus (Maybe InstanceGroupState)-igsState = lens _igsState (\s a -> s { _igsState = a })---- | The status change reason details for the instance group.-igsStateChangeReason :: Lens' InstanceGroupStatus (Maybe InstanceGroupStateChangeReason)-igsStateChangeReason =-    lens _igsStateChangeReason (\s a -> s { _igsStateChangeReason = a })---- | The timeline of the instance group status over time.-igsTimeline :: Lens' InstanceGroupStatus (Maybe InstanceGroupTimeline)-igsTimeline = lens _igsTimeline (\s a -> s { _igsTimeline = a })--instance FromJSON InstanceGroupStatus where-    parseJSON = withObject "InstanceGroupStatus" $ \o -> InstanceGroupStatus-        <$> o .:? "State"-        <*> o .:? "StateChangeReason"-        <*> o .:? "Timeline"--instance ToJSON InstanceGroupStatus where-    toJSON InstanceGroupStatus{..} = object-        [ "State"             .= _igsState-        , "StateChangeReason" .= _igsStateChangeReason-        , "Timeline"          .= _igsTimeline-        ]--data Cluster = Cluster-    { _c1Applications            :: List "Applications" Application-    , _c1AutoTerminate           :: Maybe Bool-    , _c1Ec2InstanceAttributes   :: Maybe Ec2InstanceAttributes-    , _c1Id                      :: Text-    , _c1LogUri                  :: Maybe Text-    , _c1MasterPublicDnsName     :: Maybe Text-    , _c1Name                    :: Text-    , _c1NormalizedInstanceHours :: Maybe Int-    , _c1RequestedAmiVersion     :: Maybe Text-    , _c1RunningAmiVersion       :: Maybe Text-    , _c1ServiceRole             :: Maybe Text-    , _c1Status                  :: ClusterStatus-    , _c1Tags                    :: List "Tags" Tag-    , _c1TerminationProtected    :: Maybe Bool-    , _c1VisibleToAllUsers       :: Maybe Bool-    } deriving (Eq, Read, Show)---- | 'Cluster' constructor.------ The fields accessible through corresponding lenses are:------ * 'c1Applications' @::@ ['Application']------ * 'c1AutoTerminate' @::@ 'Maybe' 'Bool'------ * 'c1Ec2InstanceAttributes' @::@ 'Maybe' 'Ec2InstanceAttributes'------ * 'c1Id' @::@ 'Text'------ * 'c1LogUri' @::@ 'Maybe' 'Text'------ * 'c1MasterPublicDnsName' @::@ 'Maybe' 'Text'------ * 'c1Name' @::@ 'Text'------ * 'c1NormalizedInstanceHours' @::@ 'Maybe' 'Int'------ * 'c1RequestedAmiVersion' @::@ 'Maybe' 'Text'------ * 'c1RunningAmiVersion' @::@ 'Maybe' 'Text'------ * 'c1ServiceRole' @::@ 'Maybe' 'Text'------ * 'c1Status' @::@ 'ClusterStatus'------ * 'c1Tags' @::@ ['Tag']------ * 'c1TerminationProtected' @::@ 'Maybe' 'Bool'------ * 'c1VisibleToAllUsers' @::@ 'Maybe' 'Bool'----cluster :: Text -- ^ 'c1Id'-        -> Text -- ^ 'c1Name'-        -> ClusterStatus -- ^ 'c1Status'-        -> Cluster-cluster p1 p2 p3 = Cluster-    { _c1Id                      = p1-    , _c1Name                    = p2-    , _c1Status                  = p3-    , _c1Ec2InstanceAttributes   = Nothing-    , _c1LogUri                  = Nothing-    , _c1RequestedAmiVersion     = Nothing-    , _c1RunningAmiVersion       = Nothing-    , _c1AutoTerminate           = Nothing-    , _c1TerminationProtected    = Nothing-    , _c1VisibleToAllUsers       = Nothing-    , _c1Applications            = mempty-    , _c1Tags                    = mempty-    , _c1ServiceRole             = Nothing-    , _c1NormalizedInstanceHours = Nothing-    , _c1MasterPublicDnsName     = Nothing-    }---- | The applications installed on this cluster.-c1Applications :: Lens' Cluster [Application]-c1Applications = lens _c1Applications (\s a -> s { _c1Applications = a }) . _List---- | Specifies whether the cluster should terminate after completing all steps.-c1AutoTerminate :: Lens' Cluster (Maybe Bool)-c1AutoTerminate = lens _c1AutoTerminate (\s a -> s { _c1AutoTerminate = a })--c1Ec2InstanceAttributes :: Lens' Cluster (Maybe Ec2InstanceAttributes)-c1Ec2InstanceAttributes =-    lens _c1Ec2InstanceAttributes (\s a -> s { _c1Ec2InstanceAttributes = a })---- | The unique identifier for the cluster.-c1Id :: Lens' Cluster Text-c1Id = lens _c1Id (\s a -> s { _c1Id = a })---- | The path to the Amazon S3 location where logs for this cluster are stored.-c1LogUri :: Lens' Cluster (Maybe Text)-c1LogUri = lens _c1LogUri (\s a -> s { _c1LogUri = a })---- | The public DNS name of the master Ec2 instance.-c1MasterPublicDnsName :: Lens' Cluster (Maybe Text)-c1MasterPublicDnsName =-    lens _c1MasterPublicDnsName (\s a -> s { _c1MasterPublicDnsName = a })---- | The name of the cluster.-c1Name :: Lens' Cluster Text-c1Name = lens _c1Name (\s a -> s { _c1Name = a })---- | An approximation of the cost of the job flow, represented in m1.small/hours.--- This value is incremented one time for every hour an m1.small instance runs.--- Larger instances are weighted more, so an EC2 instance that is roughly four--- times more expensive would result in the normalized instance hours being--- incremented by four. This result is only an approximation and does not--- reflect the actual billing rate.-c1NormalizedInstanceHours :: Lens' Cluster (Maybe Int)-c1NormalizedInstanceHours =-    lens _c1NormalizedInstanceHours-        (\s a -> s { _c1NormalizedInstanceHours = a })---- | The AMI version requested for this cluster.-c1RequestedAmiVersion :: Lens' Cluster (Maybe Text)-c1RequestedAmiVersion =-    lens _c1RequestedAmiVersion (\s a -> s { _c1RequestedAmiVersion = a })---- | The AMI version running on this cluster. This differs from the requested--- version only if the requested version is a meta version, such as "latest".-c1RunningAmiVersion :: Lens' Cluster (Maybe Text)-c1RunningAmiVersion =-    lens _c1RunningAmiVersion (\s a -> s { _c1RunningAmiVersion = a })---- | The IAM role that will be assumed by the Amazon EMR service to access AWS--- resources on your behalf.-c1ServiceRole :: Lens' Cluster (Maybe Text)-c1ServiceRole = lens _c1ServiceRole (\s a -> s { _c1ServiceRole = a })---- | The current status details about the cluster.-c1Status :: Lens' Cluster ClusterStatus-c1Status = lens _c1Status (\s a -> s { _c1Status = a })---- | A list of tags associated with a cluster.-c1Tags :: Lens' Cluster [Tag]-c1Tags = lens _c1Tags (\s a -> s { _c1Tags = a }) . _List---- | Indicates whether Amazon EMR will lock the cluster to prevent the EC2--- instances from being terminated by an API call or user intervention, or in--- the event of a cluster error.-c1TerminationProtected :: Lens' Cluster (Maybe Bool)-c1TerminationProtected =-    lens _c1TerminationProtected (\s a -> s { _c1TerminationProtected = a })---- | Indicates whether the job flow is visible to all IAM users of the AWS account--- associated with the job flow. If this value is set to 'true', all IAM users of--- that AWS account can view and manage the job flow if they have the proper--- policy permissions set. If this value is 'false', only the IAM user that--- created the cluster can view and manage it. This value can be changed using--- the 'SetVisibleToAllUsers' action.-c1VisibleToAllUsers :: Lens' Cluster (Maybe Bool)-c1VisibleToAllUsers =-    lens _c1VisibleToAllUsers (\s a -> s { _c1VisibleToAllUsers = a })--instance FromJSON Cluster where-    parseJSON = withObject "Cluster" $ \o -> Cluster-        <$> o .:? "Applications" .!= mempty-        <*> o .:? "AutoTerminate"-        <*> o .:? "Ec2InstanceAttributes"-        <*> o .:  "Id"-        <*> o .:? "LogUri"-        <*> o .:? "MasterPublicDnsName"-        <*> o .:  "Name"-        <*> o .:? "NormalizedInstanceHours"-        <*> o .:? "RequestedAmiVersion"-        <*> o .:? "RunningAmiVersion"-        <*> o .:? "ServiceRole"-        <*> o .:  "Status"-        <*> o .:? "Tags" .!= mempty-        <*> o .:? "TerminationProtected"-        <*> o .:? "VisibleToAllUsers"--instance ToJSON Cluster where-    toJSON Cluster{..} = object-        [ "Id"                      .= _c1Id-        , "Name"                    .= _c1Name-        , "Status"                  .= _c1Status-        , "Ec2InstanceAttributes"   .= _c1Ec2InstanceAttributes-        , "LogUri"                  .= _c1LogUri-        , "RequestedAmiVersion"     .= _c1RequestedAmiVersion-        , "RunningAmiVersion"       .= _c1RunningAmiVersion-        , "AutoTerminate"           .= _c1AutoTerminate-        , "TerminationProtected"    .= _c1TerminationProtected-        , "VisibleToAllUsers"       .= _c1VisibleToAllUsers-        , "Applications"            .= _c1Applications-        , "Tags"                    .= _c1Tags-        , "ServiceRole"             .= _c1ServiceRole-        , "NormalizedInstanceHours" .= _c1NormalizedInstanceHours-        , "MasterPublicDnsName"     .= _c1MasterPublicDnsName-        ]--data InstanceTimeline = InstanceTimeline-    { _itCreationDateTime :: Maybe POSIX-    , _itEndDateTime      :: Maybe POSIX-    , _itReadyDateTime    :: Maybe POSIX-    } deriving (Eq, Ord, Read, Show)---- | 'InstanceTimeline' constructor.------ The fields accessible through corresponding lenses are:------ * 'itCreationDateTime' @::@ 'Maybe' 'UTCTime'------ * 'itEndDateTime' @::@ 'Maybe' 'UTCTime'------ * 'itReadyDateTime' @::@ 'Maybe' 'UTCTime'----instanceTimeline :: InstanceTimeline-instanceTimeline = InstanceTimeline-    { _itCreationDateTime = Nothing-    , _itReadyDateTime    = Nothing-    , _itEndDateTime      = Nothing-    }---- | The creation date and time of the instance.-itCreationDateTime :: Lens' InstanceTimeline (Maybe UTCTime)-itCreationDateTime =-    lens _itCreationDateTime (\s a -> s { _itCreationDateTime = a })-        . mapping _Time---- | The date and time when the instance was terminated.-itEndDateTime :: Lens' InstanceTimeline (Maybe UTCTime)-itEndDateTime = lens _itEndDateTime (\s a -> s { _itEndDateTime = a }) . mapping _Time---- | The date and time when the instance was ready to perform tasks.-itReadyDateTime :: Lens' InstanceTimeline (Maybe UTCTime)-itReadyDateTime = lens _itReadyDateTime (\s a -> s { _itReadyDateTime = a }) . mapping _Time--instance FromJSON InstanceTimeline where-    parseJSON = withObject "InstanceTimeline" $ \o -> InstanceTimeline-        <$> o .:? "CreationDateTime"-        <*> o .:? "EndDateTime"-        <*> o .:? "ReadyDateTime"--instance ToJSON InstanceTimeline where-    toJSON InstanceTimeline{..} = object-        [ "CreationDateTime" .= _itCreationDateTime-        , "ReadyDateTime"    .= _itReadyDateTime-        , "EndDateTime"      .= _itEndDateTime-        ]--data Ec2InstanceAttributes = Ec2InstanceAttributes-    { _eiaAdditionalMasterSecurityGroups :: List "AdditionalMasterSecurityGroups" Text-    , _eiaAdditionalSlaveSecurityGroups  :: List "AdditionalSlaveSecurityGroups" Text-    , _eiaEc2AvailabilityZone            :: Maybe Text-    , _eiaEc2KeyName                     :: Maybe Text-    , _eiaEc2SubnetId                    :: Maybe Text-    , _eiaEmrManagedMasterSecurityGroup  :: Maybe Text-    , _eiaEmrManagedSlaveSecurityGroup   :: Maybe Text-    , _eiaIamInstanceProfile             :: Maybe Text-    } deriving (Eq, Ord, Read, Show)---- | 'Ec2InstanceAttributes' constructor.------ The fields accessible through corresponding lenses are:------ * 'eiaAdditionalMasterSecurityGroups' @::@ ['Text']------ * 'eiaAdditionalSlaveSecurityGroups' @::@ ['Text']------ * 'eiaEc2AvailabilityZone' @::@ 'Maybe' 'Text'------ * 'eiaEc2KeyName' @::@ 'Maybe' 'Text'------ * 'eiaEc2SubnetId' @::@ 'Maybe' 'Text'------ * 'eiaEmrManagedMasterSecurityGroup' @::@ 'Maybe' 'Text'------ * 'eiaEmrManagedSlaveSecurityGroup' @::@ 'Maybe' 'Text'------ * 'eiaIamInstanceProfile' @::@ 'Maybe' 'Text'----ec2InstanceAttributes :: Ec2InstanceAttributes-ec2InstanceAttributes = Ec2InstanceAttributes-    { _eiaEc2KeyName                     = Nothing-    , _eiaEc2SubnetId                    = Nothing-    , _eiaEc2AvailabilityZone            = Nothing-    , _eiaIamInstanceProfile             = Nothing-    , _eiaEmrManagedMasterSecurityGroup  = Nothing-    , _eiaEmrManagedSlaveSecurityGroup   = Nothing-    , _eiaAdditionalMasterSecurityGroups = mempty-    , _eiaAdditionalSlaveSecurityGroups  = mempty-    }---- | A list of additional Amazon EC2 security group IDs for the master node.-eiaAdditionalMasterSecurityGroups :: Lens' Ec2InstanceAttributes [Text]-eiaAdditionalMasterSecurityGroups =-    lens _eiaAdditionalMasterSecurityGroups-        (\s a -> s { _eiaAdditionalMasterSecurityGroups = a })-            . _List---- | A list of additional Amazon EC2 security group IDs for the slave nodes.-eiaAdditionalSlaveSecurityGroups :: Lens' Ec2InstanceAttributes [Text]-eiaAdditionalSlaveSecurityGroups =-    lens _eiaAdditionalSlaveSecurityGroups-        (\s a -> s { _eiaAdditionalSlaveSecurityGroups = a })-            . _List---- | The Availability Zone in which the cluster will run.-eiaEc2AvailabilityZone :: Lens' Ec2InstanceAttributes (Maybe Text)-eiaEc2AvailabilityZone =-    lens _eiaEc2AvailabilityZone (\s a -> s { _eiaEc2AvailabilityZone = a })---- | The name of the Amazon EC2 key pair to use when connecting with SSH into the--- master node as a user named "hadoop".-eiaEc2KeyName :: Lens' Ec2InstanceAttributes (Maybe Text)-eiaEc2KeyName = lens _eiaEc2KeyName (\s a -> s { _eiaEc2KeyName = a })---- | To launch the job flow in Amazon VPC, set this parameter to the identifier--- of the Amazon VPC subnet where you want the job flow to launch. If you do not--- specify this value, the job flow is launched in the normal AWS cloud, outside--- of a VPC.------ Amazon VPC currently does not support cluster compute quadruple extra large--- (cc1.4xlarge) instances. Thus, you cannot specify the cc1.4xlarge instance--- type for nodes of a job flow launched in a VPC.-eiaEc2SubnetId :: Lens' Ec2InstanceAttributes (Maybe Text)-eiaEc2SubnetId = lens _eiaEc2SubnetId (\s a -> s { _eiaEc2SubnetId = a })---- | The identifier of the Amazon EC2 security group (managed by Amazon Elastic--- MapReduce) for the master node.-eiaEmrManagedMasterSecurityGroup :: Lens' Ec2InstanceAttributes (Maybe Text)-eiaEmrManagedMasterSecurityGroup =-    lens _eiaEmrManagedMasterSecurityGroup-        (\s a -> s { _eiaEmrManagedMasterSecurityGroup = a })---- | The identifier of the Amazon EC2 security group (managed by Amazon Elastic--- MapReduce) for the slave nodes.-eiaEmrManagedSlaveSecurityGroup :: Lens' Ec2InstanceAttributes (Maybe Text)-eiaEmrManagedSlaveSecurityGroup =-    lens _eiaEmrManagedSlaveSecurityGroup-        (\s a -> s { _eiaEmrManagedSlaveSecurityGroup = a })---- | The IAM role that was specified when the job flow was launched. The EC2--- instances of the job flow assume this role.-eiaIamInstanceProfile :: Lens' Ec2InstanceAttributes (Maybe Text)-eiaIamInstanceProfile =-    lens _eiaIamInstanceProfile (\s a -> s { _eiaIamInstanceProfile = a })--instance FromJSON Ec2InstanceAttributes where-    parseJSON = withObject "Ec2InstanceAttributes" $ \o -> Ec2InstanceAttributes-        <$> o .:? "AdditionalMasterSecurityGroups" .!= mempty-        <*> o .:? "AdditionalSlaveSecurityGroups" .!= mempty-        <*> o .:? "Ec2AvailabilityZone"-        <*> o .:? "Ec2KeyName"-        <*> o .:? "Ec2SubnetId"-        <*> o .:? "EmrManagedMasterSecurityGroup"-        <*> o .:? "EmrManagedSlaveSecurityGroup"-        <*> o .:? "IamInstanceProfile"--instance ToJSON Ec2InstanceAttributes where-    toJSON Ec2InstanceAttributes{..} = object-        [ "Ec2KeyName"                     .= _eiaEc2KeyName-        , "Ec2SubnetId"                    .= _eiaEc2SubnetId-        , "Ec2AvailabilityZone"            .= _eiaEc2AvailabilityZone-        , "IamInstanceProfile"             .= _eiaIamInstanceProfile-        , "EmrManagedMasterSecurityGroup"  .= _eiaEmrManagedMasterSecurityGroup-        , "EmrManagedSlaveSecurityGroup"   .= _eiaEmrManagedSlaveSecurityGroup-        , "AdditionalMasterSecurityGroups" .= _eiaAdditionalMasterSecurityGroups-        , "AdditionalSlaveSecurityGroups"  .= _eiaAdditionalSlaveSecurityGroups-        ]--data StepStateChangeReasonCode-    = None -- ^ NONE-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable StepStateChangeReasonCode--instance FromText StepStateChangeReasonCode where-    parser = takeLowerText >>= \case-        "none" -> pure None-        e      -> fail $-            "Failure parsing StepStateChangeReasonCode from " ++ show e--instance ToText StepStateChangeReasonCode where-    toText None = "NONE"--instance ToByteString StepStateChangeReasonCode-instance ToHeader     StepStateChangeReasonCode-instance ToQuery      StepStateChangeReasonCode--instance FromJSON StepStateChangeReasonCode where-    parseJSON = parseJSONText "StepStateChangeReasonCode"--instance ToJSON StepStateChangeReasonCode where-    toJSON = toJSONText--data ClusterState-    = CSBootstrapping        -- ^ BOOTSTRAPPING-    | CSRunning              -- ^ RUNNING-    | CSStarting             -- ^ STARTING-    | CSTerminated           -- ^ TERMINATED-    | CSTerminatedWithErrors -- ^ TERMINATED_WITH_ERRORS-    | CSTerminating          -- ^ TERMINATING-    | CSWaiting              -- ^ WAITING-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable ClusterState--instance FromText ClusterState where-    parser = takeLowerText >>= \case-        "bootstrapping"          -> pure CSBootstrapping-        "running"                -> pure CSRunning-        "starting"               -> pure CSStarting-        "terminated"             -> pure CSTerminated-        "terminated_with_errors" -> pure CSTerminatedWithErrors-        "terminating"            -> pure CSTerminating-        "waiting"                -> pure CSWaiting-        e                        -> fail $-            "Failure parsing ClusterState from " ++ show e--instance ToText ClusterState where-    toText = \case-        CSBootstrapping        -> "BOOTSTRAPPING"-        CSRunning              -> "RUNNING"-        CSStarting             -> "STARTING"-        CSTerminated           -> "TERMINATED"-        CSTerminatedWithErrors -> "TERMINATED_WITH_ERRORS"-        CSTerminating          -> "TERMINATING"-        CSWaiting              -> "WAITING"--instance ToByteString ClusterState-instance ToHeader     ClusterState-instance ToQuery      ClusterState--instance FromJSON ClusterState where-    parseJSON = parseJSONText "ClusterState"--instance ToJSON ClusterState where-    toJSON = toJSONText--data HadoopStepConfig = HadoopStepConfig-    { _hscArgs       :: List "Args" Text-    , _hscJar        :: Maybe Text-    , _hscMainClass  :: Maybe Text-    , _hscProperties :: Map Text Text-    } deriving (Eq, Read, Show)---- | 'HadoopStepConfig' constructor.------ The fields accessible through corresponding lenses are:------ * 'hscArgs' @::@ ['Text']------ * 'hscJar' @::@ 'Maybe' 'Text'------ * 'hscMainClass' @::@ 'Maybe' 'Text'------ * 'hscProperties' @::@ 'HashMap' 'Text' 'Text'----hadoopStepConfig :: HadoopStepConfig-hadoopStepConfig = HadoopStepConfig-    { _hscJar        = Nothing-    , _hscProperties = mempty-    , _hscMainClass  = Nothing-    , _hscArgs       = mempty-    }---- | The list of command line arguments to pass to the JAR file's main function--- for execution.-hscArgs :: Lens' HadoopStepConfig [Text]-hscArgs = lens _hscArgs (\s a -> s { _hscArgs = a }) . _List---- | The path to the JAR file that runs during the step.-hscJar :: Lens' HadoopStepConfig (Maybe Text)-hscJar = lens _hscJar (\s a -> s { _hscJar = a })---- | The name of the main class in the specified Java file. If not specified, the--- JAR file should specify a main class in its manifest file.-hscMainClass :: Lens' HadoopStepConfig (Maybe Text)-hscMainClass = lens _hscMainClass (\s a -> s { _hscMainClass = a })---- | The list of Java properties that are set when the step runs. You can use--- these properties to pass key value pairs to your main function.-hscProperties :: Lens' HadoopStepConfig (HashMap Text Text)-hscProperties = lens _hscProperties (\s a -> s { _hscProperties = a }) . _Map--instance FromJSON HadoopStepConfig where-    parseJSON = withObject "HadoopStepConfig" $ \o -> HadoopStepConfig-        <$> o .:? "Args" .!= mempty-        <*> o .:? "Jar"-        <*> o .:? "MainClass"-        <*> o .:? "Properties" .!= mempty--instance ToJSON HadoopStepConfig where-    toJSON HadoopStepConfig{..} = object-        [ "Jar"        .= _hscJar-        , "Properties" .= _hscProperties-        , "MainClass"  .= _hscMainClass-        , "Args"       .= _hscArgs-        ]--data JobFlowExecutionState-    = JFESBootstrapping -- ^ BOOTSTRAPPING-    | JFESCompleted     -- ^ COMPLETED-    | JFESFailed        -- ^ FAILED-    | JFESRunning       -- ^ RUNNING-    | JFESShuttingDown  -- ^ SHUTTING_DOWN-    | JFESStarting      -- ^ STARTING-    | JFESTerminated    -- ^ TERMINATED-    | JFESWaiting       -- ^ WAITING-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable JobFlowExecutionState--instance FromText JobFlowExecutionState where-    parser = takeLowerText >>= \case-        "bootstrapping" -> pure JFESBootstrapping-        "completed"     -> pure JFESCompleted-        "failed"        -> pure JFESFailed-        "running"       -> pure JFESRunning-        "shutting_down" -> pure JFESShuttingDown-        "starting"      -> pure JFESStarting-        "terminated"    -> pure JFESTerminated-        "waiting"       -> pure JFESWaiting-        e               -> fail $-            "Failure parsing JobFlowExecutionState from " ++ show e--instance ToText JobFlowExecutionState where-    toText = \case-        JFESBootstrapping -> "BOOTSTRAPPING"-        JFESCompleted     -> "COMPLETED"-        JFESFailed        -> "FAILED"-        JFESRunning       -> "RUNNING"-        JFESShuttingDown  -> "SHUTTING_DOWN"-        JFESStarting      -> "STARTING"-        JFESTerminated    -> "TERMINATED"-        JFESWaiting       -> "WAITING"--instance ToByteString JobFlowExecutionState-instance ToHeader     JobFlowExecutionState-instance ToQuery      JobFlowExecutionState--instance FromJSON JobFlowExecutionState where-    parseJSON = parseJSONText "JobFlowExecutionState"--instance ToJSON JobFlowExecutionState where-    toJSON = toJSONText--data StepDetail = StepDetail-    { _sdExecutionStatusDetail :: StepExecutionStatusDetail-    , _sdStepConfig            :: StepConfig-    } deriving (Eq, Read, Show)---- | 'StepDetail' constructor.------ The fields accessible through corresponding lenses are:------ * 'sdExecutionStatusDetail' @::@ 'StepExecutionStatusDetail'------ * 'sdStepConfig' @::@ 'StepConfig'----stepDetail :: StepConfig -- ^ 'sdStepConfig'-           -> StepExecutionStatusDetail -- ^ 'sdExecutionStatusDetail'-           -> StepDetail-stepDetail p1 p2 = StepDetail-    { _sdStepConfig            = p1-    , _sdExecutionStatusDetail = p2-    }---- | The description of the step status.-sdExecutionStatusDetail :: Lens' StepDetail StepExecutionStatusDetail-sdExecutionStatusDetail =-    lens _sdExecutionStatusDetail (\s a -> s { _sdExecutionStatusDetail = a })---- | The step configuration.-sdStepConfig :: Lens' StepDetail StepConfig-sdStepConfig = lens _sdStepConfig (\s a -> s { _sdStepConfig = a })--instance FromJSON StepDetail where-    parseJSON = withObject "StepDetail" $ \o -> StepDetail-        <$> o .:  "ExecutionStatusDetail"-        <*> o .:  "StepConfig"--instance ToJSON StepDetail where-    toJSON StepDetail{..} = object-        [ "StepConfig"            .= _sdStepConfig-        , "ExecutionStatusDetail" .= _sdExecutionStatusDetail-        ]--data InstanceGroupStateChangeReason = InstanceGroupStateChangeReason-    { _igscrCode    :: Maybe InstanceGroupStateChangeReasonCode-    , _igscrMessage :: Maybe Text-    } deriving (Eq, Read, Show)---- | 'InstanceGroupStateChangeReason' constructor.------ The fields accessible through corresponding lenses are:------ * 'igscrCode' @::@ 'Maybe' 'InstanceGroupStateChangeReasonCode'------ * 'igscrMessage' @::@ 'Maybe' 'Text'----instanceGroupStateChangeReason :: InstanceGroupStateChangeReason-instanceGroupStateChangeReason = InstanceGroupStateChangeReason-    { _igscrCode    = Nothing-    , _igscrMessage = Nothing-    }---- | The programmable code for the state change reason.-igscrCode :: Lens' InstanceGroupStateChangeReason (Maybe InstanceGroupStateChangeReasonCode)-igscrCode = lens _igscrCode (\s a -> s { _igscrCode = a })---- | The status change reason description.-igscrMessage :: Lens' InstanceGroupStateChangeReason (Maybe Text)-igscrMessage = lens _igscrMessage (\s a -> s { _igscrMessage = a })--instance FromJSON InstanceGroupStateChangeReason where-    parseJSON = withObject "InstanceGroupStateChangeReason" $ \o -> InstanceGroupStateChangeReason-        <$> o .:? "Code"-        <*> o .:? "Message"--instance ToJSON InstanceGroupStateChangeReason where-    toJSON InstanceGroupStateChangeReason{..} = object-        [ "Code"    .= _igscrCode-        , "Message" .= _igscrMessage-        ]--data InstanceGroupType-    = Core   -- ^ CORE-    | Master -- ^ MASTER-    | Task   -- ^ TASK-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable InstanceGroupType--instance FromText InstanceGroupType where-    parser = takeLowerText >>= \case-        "core"   -> pure Core-        "master" -> pure Master-        "task"   -> pure Task-        e        -> fail $-            "Failure parsing InstanceGroupType from " ++ show e--instance ToText InstanceGroupType where-    toText = \case-        Core   -> "CORE"-        Master -> "MASTER"-        Task   -> "TASK"--instance ToByteString InstanceGroupType-instance ToHeader     InstanceGroupType-instance ToQuery      InstanceGroupType--instance FromJSON InstanceGroupType where-    parseJSON = parseJSONText "InstanceGroupType"--instance ToJSON InstanceGroupType where-    toJSON = toJSONText--data InstanceGroupStateChangeReasonCode-    = ClusterTerminated -- ^ CLUSTER_TERMINATED-    | InstanceFailure   -- ^ INSTANCE_FAILURE-    | InternalError     -- ^ INTERNAL_ERROR-    | ValidationError   -- ^ VALIDATION_ERROR-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable InstanceGroupStateChangeReasonCode--instance FromText InstanceGroupStateChangeReasonCode where-    parser = takeLowerText >>= \case-        "cluster_terminated" -> pure ClusterTerminated-        "instance_failure"   -> pure InstanceFailure-        "internal_error"     -> pure InternalError-        "validation_error"   -> pure ValidationError-        e                    -> fail $-            "Failure parsing InstanceGroupStateChangeReasonCode from " ++ show e--instance ToText InstanceGroupStateChangeReasonCode where-    toText = \case-        ClusterTerminated -> "CLUSTER_TERMINATED"-        InstanceFailure   -> "INSTANCE_FAILURE"-        InternalError     -> "INTERNAL_ERROR"-        ValidationError   -> "VALIDATION_ERROR"--instance ToByteString InstanceGroupStateChangeReasonCode-instance ToHeader     InstanceGroupStateChangeReasonCode-instance ToQuery      InstanceGroupStateChangeReasonCode--instance FromJSON InstanceGroupStateChangeReasonCode where-    parseJSON = parseJSONText "InstanceGroupStateChangeReasonCode"--instance ToJSON InstanceGroupStateChangeReasonCode where-    toJSON = toJSONText--data StepStatus = StepStatus-    { _ssState             :: Maybe StepState-    , _ssStateChangeReason :: Maybe StepStateChangeReason-    , _ssTimeline          :: Maybe StepTimeline-    } deriving (Eq, Read, Show)---- | 'StepStatus' constructor.------ The fields accessible through corresponding lenses are:------ * 'ssState' @::@ 'Maybe' 'StepState'------ * 'ssStateChangeReason' @::@ 'Maybe' 'StepStateChangeReason'------ * 'ssTimeline' @::@ 'Maybe' 'StepTimeline'----stepStatus :: StepStatus-stepStatus = StepStatus-    { _ssState             = Nothing-    , _ssStateChangeReason = Nothing-    , _ssTimeline          = Nothing-    }---- | The execution state of the cluster step.-ssState :: Lens' StepStatus (Maybe StepState)-ssState = lens _ssState (\s a -> s { _ssState = a })---- | The reason for the step execution status change.-ssStateChangeReason :: Lens' StepStatus (Maybe StepStateChangeReason)-ssStateChangeReason =-    lens _ssStateChangeReason (\s a -> s { _ssStateChangeReason = a })---- | The timeline of the cluster step status over time.-ssTimeline :: Lens' StepStatus (Maybe StepTimeline)-ssTimeline = lens _ssTimeline (\s a -> s { _ssTimeline = a })--instance FromJSON StepStatus where-    parseJSON = withObject "StepStatus" $ \o -> StepStatus-        <$> o .:? "State"-        <*> o .:? "StateChangeReason"-        <*> o .:? "Timeline"--instance ToJSON StepStatus where-    toJSON StepStatus{..} = object-        [ "State"             .= _ssState-        , "StateChangeReason" .= _ssStateChangeReason-        , "Timeline"          .= _ssTimeline-        ]--data StepSummary = StepSummary-    { _ssActionOnFailure :: Maybe ActionOnFailure-    , _ssConfig          :: Maybe HadoopStepConfig-    , _ssId              :: Maybe Text-    , _ssName            :: Maybe Text-    , _ssStatus          :: Maybe StepStatus-    } deriving (Eq, Read, Show)---- | 'StepSummary' constructor.------ The fields accessible through corresponding lenses are:------ * 'ssActionOnFailure' @::@ 'Maybe' 'ActionOnFailure'------ * 'ssConfig' @::@ 'Maybe' 'HadoopStepConfig'------ * 'ssId' @::@ 'Maybe' 'Text'------ * 'ssName' @::@ 'Maybe' 'Text'------ * 'ssStatus' @::@ 'Maybe' 'StepStatus'----stepSummary :: StepSummary-stepSummary = StepSummary-    { _ssId              = Nothing-    , _ssName            = Nothing-    , _ssConfig          = Nothing-    , _ssActionOnFailure = Nothing-    , _ssStatus          = Nothing-    }---- | This specifies what action to take when the cluster step fails. Possible--- values are TERMINATE_CLUSTER, CANCEL_AND_WAIT, and CONTINUE.-ssActionOnFailure :: Lens' StepSummary (Maybe ActionOnFailure)-ssActionOnFailure =-    lens _ssActionOnFailure (\s a -> s { _ssActionOnFailure = a })---- | The Hadoop job configuration of the cluster step.-ssConfig :: Lens' StepSummary (Maybe HadoopStepConfig)-ssConfig = lens _ssConfig (\s a -> s { _ssConfig = a })---- | The identifier of the cluster step.-ssId :: Lens' StepSummary (Maybe Text)-ssId = lens _ssId (\s a -> s { _ssId = a })---- | The name of the cluster step.-ssName :: Lens' StepSummary (Maybe Text)-ssName = lens _ssName (\s a -> s { _ssName = a })---- | The current execution status details of the cluster step.-ssStatus :: Lens' StepSummary (Maybe StepStatus)-ssStatus = lens _ssStatus (\s a -> s { _ssStatus = a })--instance FromJSON StepSummary where-    parseJSON = withObject "StepSummary" $ \o -> StepSummary-        <$> o .:? "ActionOnFailure"-        <*> o .:? "Config"-        <*> o .:? "Id"-        <*> o .:? "Name"-        <*> o .:? "Status"--instance ToJSON StepSummary where-    toJSON StepSummary{..} = object-        [ "Id"              .= _ssId-        , "Name"            .= _ssName-        , "Config"          .= _ssConfig-        , "ActionOnFailure" .= _ssActionOnFailure-        , "Status"          .= _ssStatus-        ]--data InstanceGroupState-    = IGSArrested      -- ^ ARRESTED-    | IGSBootstrapping -- ^ BOOTSTRAPPING-    | IGSEnded         -- ^ ENDED-    | IGSProvisioning  -- ^ PROVISIONING-    | IGSResizing      -- ^ RESIZING-    | IGSRunning       -- ^ RUNNING-    | IGSShuttingDown  -- ^ SHUTTING_DOWN-    | IGSSuspended     -- ^ SUSPENDED-    | IGSTerminated    -- ^ TERMINATED-    | IGSTerminating   -- ^ TERMINATING-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable InstanceGroupState--instance FromText InstanceGroupState where-    parser = takeLowerText >>= \case-        "arrested"      -> pure IGSArrested-        "bootstrapping" -> pure IGSBootstrapping-        "ended"         -> pure IGSEnded-        "provisioning"  -> pure IGSProvisioning-        "resizing"      -> pure IGSResizing-        "running"       -> pure IGSRunning-        "shutting_down" -> pure IGSShuttingDown-        "suspended"     -> pure IGSSuspended-        "terminated"    -> pure IGSTerminated-        "terminating"   -> pure IGSTerminating-        e               -> fail $-            "Failure parsing InstanceGroupState from " ++ show e--instance ToText InstanceGroupState where-    toText = \case-        IGSArrested      -> "ARRESTED"-        IGSBootstrapping -> "BOOTSTRAPPING"-        IGSEnded         -> "ENDED"-        IGSProvisioning  -> "PROVISIONING"-        IGSResizing      -> "RESIZING"-        IGSRunning       -> "RUNNING"-        IGSShuttingDown  -> "SHUTTING_DOWN"-        IGSSuspended     -> "SUSPENDED"-        IGSTerminated    -> "TERMINATED"-        IGSTerminating   -> "TERMINATING"--instance ToByteString InstanceGroupState-instance ToHeader     InstanceGroupState-instance ToQuery      InstanceGroupState--instance FromJSON InstanceGroupState where-    parseJSON = parseJSONText "InstanceGroupState"--instance ToJSON InstanceGroupState where-    toJSON = toJSONText--data StepTimeline = StepTimeline-    { _stCreationDateTime :: Maybe POSIX-    , _stEndDateTime      :: Maybe POSIX-    , _stStartDateTime    :: Maybe POSIX-    } deriving (Eq, Ord, Read, Show)---- | 'StepTimeline' constructor.------ The fields accessible through corresponding lenses are:------ * 'stCreationDateTime' @::@ 'Maybe' 'UTCTime'------ * 'stEndDateTime' @::@ 'Maybe' 'UTCTime'------ * 'stStartDateTime' @::@ 'Maybe' 'UTCTime'----stepTimeline :: StepTimeline-stepTimeline = StepTimeline-    { _stCreationDateTime = Nothing-    , _stStartDateTime    = Nothing-    , _stEndDateTime      = Nothing-    }---- | The date and time when the cluster step was created.-stCreationDateTime :: Lens' StepTimeline (Maybe UTCTime)-stCreationDateTime =-    lens _stCreationDateTime (\s a -> s { _stCreationDateTime = a })-        . mapping _Time---- | The date and time when the cluster step execution completed or failed.-stEndDateTime :: Lens' StepTimeline (Maybe UTCTime)-stEndDateTime = lens _stEndDateTime (\s a -> s { _stEndDateTime = a }) . mapping _Time---- | The date and time when the cluster step execution started.-stStartDateTime :: Lens' StepTimeline (Maybe UTCTime)-stStartDateTime = lens _stStartDateTime (\s a -> s { _stStartDateTime = a }) . mapping _Time--instance FromJSON StepTimeline where-    parseJSON = withObject "StepTimeline" $ \o -> StepTimeline-        <$> o .:? "CreationDateTime"-        <*> o .:? "EndDateTime"-        <*> o .:? "StartDateTime"--instance ToJSON StepTimeline where-    toJSON StepTimeline{..} = object-        [ "CreationDateTime" .= _stCreationDateTime-        , "StartDateTime"    .= _stStartDateTime-        , "EndDateTime"      .= _stEndDateTime-        ]--newtype PlacementType = PlacementType-    { _ptAvailabilityZone :: Text-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)---- | 'PlacementType' constructor.------ The fields accessible through corresponding lenses are:------ * 'ptAvailabilityZone' @::@ 'Text'----placementType :: Text -- ^ 'ptAvailabilityZone'-              -> PlacementType-placementType p1 = PlacementType-    { _ptAvailabilityZone = p1-    }---- | The Amazon EC2 Availability Zone for the job flow.-ptAvailabilityZone :: Lens' PlacementType Text-ptAvailabilityZone =-    lens _ptAvailabilityZone (\s a -> s { _ptAvailabilityZone = a })--instance FromJSON PlacementType where-    parseJSON = withObject "PlacementType" $ \o -> PlacementType-        <$> o .:  "AvailabilityZone"--instance ToJSON PlacementType where-    toJSON PlacementType{..} = object-        [ "AvailabilityZone" .= _ptAvailabilityZone-        ]--data HadoopJarStepConfig = HadoopJarStepConfig-    { _hjscArgs       :: List "Args" Text-    , _hjscJar        :: Text-    , _hjscMainClass  :: Maybe Text-    , _hjscProperties :: List "Properties" KeyValue-    } deriving (Eq, Read, Show)---- | 'HadoopJarStepConfig' constructor.------ The fields accessible through corresponding lenses are:------ * 'hjscArgs' @::@ ['Text']------ * 'hjscJar' @::@ 'Text'------ * 'hjscMainClass' @::@ 'Maybe' 'Text'------ * 'hjscProperties' @::@ ['KeyValue']----hadoopJarStepConfig :: Text -- ^ 'hjscJar'-                    -> HadoopJarStepConfig-hadoopJarStepConfig p1 = HadoopJarStepConfig-    { _hjscJar        = p1-    , _hjscProperties = mempty-    , _hjscMainClass  = Nothing-    , _hjscArgs       = mempty-    }---- | A list of command line arguments passed to the JAR file's main function when--- executed.-hjscArgs :: Lens' HadoopJarStepConfig [Text]-hjscArgs = lens _hjscArgs (\s a -> s { _hjscArgs = a }) . _List---- | A path to a JAR file run during the step.-hjscJar :: Lens' HadoopJarStepConfig Text-hjscJar = lens _hjscJar (\s a -> s { _hjscJar = a })---- | The name of the main class in the specified Java file. If not specified, the--- JAR file should specify a Main-Class in its manifest file.-hjscMainClass :: Lens' HadoopJarStepConfig (Maybe Text)-hjscMainClass = lens _hjscMainClass (\s a -> s { _hjscMainClass = a })---- | A list of Java properties that are set when the step runs. You can use these--- properties to pass key value pairs to your main function.-hjscProperties :: Lens' HadoopJarStepConfig [KeyValue]-hjscProperties = lens _hjscProperties (\s a -> s { _hjscProperties = a }) . _List--instance FromJSON HadoopJarStepConfig where-    parseJSON = withObject "HadoopJarStepConfig" $ \o -> HadoopJarStepConfig-        <$> o .:? "Args" .!= mempty-        <*> o .:  "Jar"-        <*> o .:? "MainClass"-        <*> o .:? "Properties" .!= mempty--instance ToJSON HadoopJarStepConfig where-    toJSON HadoopJarStepConfig{..} = object-        [ "Properties" .= _hjscProperties-        , "Jar"        .= _hjscJar-        , "MainClass"  .= _hjscMainClass-        , "Args"       .= _hjscArgs-        ]--data InstanceGroupModifyConfig = InstanceGroupModifyConfig-    { _igmcEC2InstanceIdsToTerminate :: List "EC2InstanceIdsToTerminate" Text-    , _igmcInstanceCount             :: Maybe Int-    , _igmcInstanceGroupId           :: Text-    } deriving (Eq, Ord, Read, Show)---- | 'InstanceGroupModifyConfig' constructor.------ The fields accessible through corresponding lenses are:------ * 'igmcEC2InstanceIdsToTerminate' @::@ ['Text']------ * 'igmcInstanceCount' @::@ 'Maybe' 'Int'------ * 'igmcInstanceGroupId' @::@ 'Text'----instanceGroupModifyConfig :: Text -- ^ 'igmcInstanceGroupId'-                          -> InstanceGroupModifyConfig-instanceGroupModifyConfig p1 = InstanceGroupModifyConfig-    { _igmcInstanceGroupId           = p1-    , _igmcInstanceCount             = Nothing-    , _igmcEC2InstanceIdsToTerminate = mempty-    }---- | The EC2 InstanceIds to terminate. For advanced users only. Once you terminate--- the instances, the instance group will not return to its original requested--- size.-igmcEC2InstanceIdsToTerminate :: Lens' InstanceGroupModifyConfig [Text]-igmcEC2InstanceIdsToTerminate =-    lens _igmcEC2InstanceIdsToTerminate-        (\s a -> s { _igmcEC2InstanceIdsToTerminate = a })-            . _List---- | Target size for the instance group.-igmcInstanceCount :: Lens' InstanceGroupModifyConfig (Maybe Int)-igmcInstanceCount =-    lens _igmcInstanceCount (\s a -> s { _igmcInstanceCount = a })---- | Unique ID of the instance group to expand or shrink.-igmcInstanceGroupId :: Lens' InstanceGroupModifyConfig Text-igmcInstanceGroupId =-    lens _igmcInstanceGroupId (\s a -> s { _igmcInstanceGroupId = a })--instance FromJSON InstanceGroupModifyConfig where-    parseJSON = withObject "InstanceGroupModifyConfig" $ \o -> InstanceGroupModifyConfig-        <$> o .:? "EC2InstanceIdsToTerminate" .!= mempty-        <*> o .:? "InstanceCount"-        <*> o .:  "InstanceGroupId"--instance ToJSON InstanceGroupModifyConfig where-    toJSON InstanceGroupModifyConfig{..} = object-        [ "InstanceGroupId"           .= _igmcInstanceGroupId-        , "InstanceCount"             .= _igmcInstanceCount-        , "EC2InstanceIdsToTerminate" .= _igmcEC2InstanceIdsToTerminate-        ]--data InstanceGroupDetail = InstanceGroupDetail-    { _igdBidPrice              :: Maybe Text-    , _igdCreationDateTime      :: POSIX-    , _igdEndDateTime           :: Maybe POSIX-    , _igdInstanceGroupId       :: Maybe Text-    , _igdInstanceRequestCount  :: Int-    , _igdInstanceRole          :: InstanceRoleType-    , _igdInstanceRunningCount  :: Int-    , _igdInstanceType          :: Text-    , _igdLastStateChangeReason :: Maybe Text-    , _igdMarket                :: MarketType-    , _igdName                  :: Maybe Text-    , _igdReadyDateTime         :: Maybe POSIX-    , _igdStartDateTime         :: Maybe POSIX-    , _igdState                 :: InstanceGroupState-    } deriving (Eq, Read, Show)---- | 'InstanceGroupDetail' constructor.------ The fields accessible through corresponding lenses are:------ * 'igdBidPrice' @::@ 'Maybe' 'Text'------ * 'igdCreationDateTime' @::@ 'UTCTime'------ * 'igdEndDateTime' @::@ 'Maybe' 'UTCTime'------ * 'igdInstanceGroupId' @::@ 'Maybe' 'Text'------ * 'igdInstanceRequestCount' @::@ 'Int'------ * 'igdInstanceRole' @::@ 'InstanceRoleType'------ * 'igdInstanceRunningCount' @::@ 'Int'------ * 'igdInstanceType' @::@ 'Text'------ * 'igdLastStateChangeReason' @::@ 'Maybe' 'Text'------ * 'igdMarket' @::@ 'MarketType'------ * 'igdName' @::@ 'Maybe' 'Text'------ * 'igdReadyDateTime' @::@ 'Maybe' 'UTCTime'------ * 'igdStartDateTime' @::@ 'Maybe' 'UTCTime'------ * 'igdState' @::@ 'InstanceGroupState'----instanceGroupDetail :: MarketType -- ^ 'igdMarket'-                    -> InstanceRoleType -- ^ 'igdInstanceRole'-                    -> Text -- ^ 'igdInstanceType'-                    -> Int -- ^ 'igdInstanceRequestCount'-                    -> Int -- ^ 'igdInstanceRunningCount'-                    -> InstanceGroupState -- ^ 'igdState'-                    -> UTCTime -- ^ 'igdCreationDateTime'-                    -> InstanceGroupDetail-instanceGroupDetail p1 p2 p3 p4 p5 p6 p7 = InstanceGroupDetail-    { _igdMarket                = p1-    , _igdInstanceRole          = p2-    , _igdInstanceType          = p3-    , _igdInstanceRequestCount  = p4-    , _igdInstanceRunningCount  = p5-    , _igdState                 = p6-    , _igdCreationDateTime      = withIso _Time (const id) p7-    , _igdInstanceGroupId       = Nothing-    , _igdName                  = Nothing-    , _igdBidPrice              = Nothing-    , _igdLastStateChangeReason = Nothing-    , _igdStartDateTime         = Nothing-    , _igdReadyDateTime         = Nothing-    , _igdEndDateTime           = Nothing-    }---- | Bid price for EC2 Instances when launching nodes as Spot Instances, expressed--- in USD.-igdBidPrice :: Lens' InstanceGroupDetail (Maybe Text)-igdBidPrice = lens _igdBidPrice (\s a -> s { _igdBidPrice = a })---- | The date/time the instance group was created.-igdCreationDateTime :: Lens' InstanceGroupDetail UTCTime-igdCreationDateTime =-    lens _igdCreationDateTime (\s a -> s { _igdCreationDateTime = a })-        . _Time---- | The date/time the instance group was terminated.-igdEndDateTime :: Lens' InstanceGroupDetail (Maybe UTCTime)-igdEndDateTime = lens _igdEndDateTime (\s a -> s { _igdEndDateTime = a }) . mapping _Time---- | Unique identifier for the instance group.-igdInstanceGroupId :: Lens' InstanceGroupDetail (Maybe Text)-igdInstanceGroupId =-    lens _igdInstanceGroupId (\s a -> s { _igdInstanceGroupId = a })---- | Target number of instances to run in the instance group.-igdInstanceRequestCount :: Lens' InstanceGroupDetail Int-igdInstanceRequestCount =-    lens _igdInstanceRequestCount (\s a -> s { _igdInstanceRequestCount = a })---- | Instance group role in the cluster-igdInstanceRole :: Lens' InstanceGroupDetail InstanceRoleType-igdInstanceRole = lens _igdInstanceRole (\s a -> s { _igdInstanceRole = a })---- | Actual count of running instances.-igdInstanceRunningCount :: Lens' InstanceGroupDetail Int-igdInstanceRunningCount =-    lens _igdInstanceRunningCount (\s a -> s { _igdInstanceRunningCount = a })---- | Amazon EC2 Instance type.-igdInstanceType :: Lens' InstanceGroupDetail Text-igdInstanceType = lens _igdInstanceType (\s a -> s { _igdInstanceType = a })---- | Details regarding the state of the instance group.-igdLastStateChangeReason :: Lens' InstanceGroupDetail (Maybe Text)-igdLastStateChangeReason =-    lens _igdLastStateChangeReason-        (\s a -> s { _igdLastStateChangeReason = a })---- | Market type of the Amazon EC2 instances used to create a cluster node.-igdMarket :: Lens' InstanceGroupDetail MarketType-igdMarket = lens _igdMarket (\s a -> s { _igdMarket = a })---- | Friendly name for the instance group.-igdName :: Lens' InstanceGroupDetail (Maybe Text)-igdName = lens _igdName (\s a -> s { _igdName = a })---- | The date/time the instance group was available to the cluster.-igdReadyDateTime :: Lens' InstanceGroupDetail (Maybe UTCTime)-igdReadyDateTime = lens _igdReadyDateTime (\s a -> s { _igdReadyDateTime = a }) . mapping _Time---- | The date/time the instance group was started.-igdStartDateTime :: Lens' InstanceGroupDetail (Maybe UTCTime)-igdStartDateTime = lens _igdStartDateTime (\s a -> s { _igdStartDateTime = a }) . mapping _Time---- | State of instance group. The following values are deprecated: STARTING,--- TERMINATED, and FAILED.-igdState :: Lens' InstanceGroupDetail InstanceGroupState-igdState = lens _igdState (\s a -> s { _igdState = a })--instance FromJSON InstanceGroupDetail where-    parseJSON = withObject "InstanceGroupDetail" $ \o -> InstanceGroupDetail-        <$> o .:? "BidPrice"-        <*> o .:  "CreationDateTime"-        <*> o .:? "EndDateTime"-        <*> o .:? "InstanceGroupId"-        <*> o .:  "InstanceRequestCount"-        <*> o .:  "InstanceRole"-        <*> o .:  "InstanceRunningCount"-        <*> o .:  "InstanceType"-        <*> o .:? "LastStateChangeReason"-        <*> o .:  "Market"-        <*> o .:? "Name"-        <*> o .:? "ReadyDateTime"-        <*> o .:? "StartDateTime"-        <*> o .:  "State"--instance ToJSON InstanceGroupDetail where-    toJSON InstanceGroupDetail{..} = object-        [ "InstanceGroupId"       .= _igdInstanceGroupId-        , "Name"                  .= _igdName-        , "Market"                .= _igdMarket-        , "InstanceRole"          .= _igdInstanceRole-        , "BidPrice"              .= _igdBidPrice-        , "InstanceType"          .= _igdInstanceType-        , "InstanceRequestCount"  .= _igdInstanceRequestCount-        , "InstanceRunningCount"  .= _igdInstanceRunningCount-        , "State"                 .= _igdState-        , "LastStateChangeReason" .= _igdLastStateChangeReason-        , "CreationDateTime"      .= _igdCreationDateTime-        , "StartDateTime"         .= _igdStartDateTime-        , "ReadyDateTime"         .= _igdReadyDateTime-        , "EndDateTime"           .= _igdEndDateTime-        ]--data StepStateChangeReason = StepStateChangeReason-    { _sscrCode    :: Maybe StepStateChangeReasonCode-    , _sscrMessage :: Maybe Text-    } deriving (Eq, Read, Show)---- | 'StepStateChangeReason' constructor.------ The fields accessible through corresponding lenses are:------ * 'sscrCode' @::@ 'Maybe' 'StepStateChangeReasonCode'------ * 'sscrMessage' @::@ 'Maybe' 'Text'----stepStateChangeReason :: StepStateChangeReason-stepStateChangeReason = StepStateChangeReason-    { _sscrCode    = Nothing-    , _sscrMessage = Nothing-    }---- | The programmable code for the state change reason.-sscrCode :: Lens' StepStateChangeReason (Maybe StepStateChangeReasonCode)-sscrCode = lens _sscrCode (\s a -> s { _sscrCode = a })---- | The descriptive message for the state change reason.-sscrMessage :: Lens' StepStateChangeReason (Maybe Text)-sscrMessage = lens _sscrMessage (\s a -> s { _sscrMessage = a })--instance FromJSON StepStateChangeReason where-    parseJSON = withObject "StepStateChangeReason" $ \o -> StepStateChangeReason-        <$> o .:? "Code"-        <*> o .:? "Message"--instance ToJSON StepStateChangeReason where-    toJSON StepStateChangeReason{..} = object-        [ "Code"    .= _sscrCode-        , "Message" .= _sscrMessage-        ]--data ClusterStateChangeReasonCode-    = CSCRCAllStepsCompleted -- ^ ALL_STEPS_COMPLETED-    | CSCRCBootstrapFailure  -- ^ BOOTSTRAP_FAILURE-    | CSCRCInstanceFailure   -- ^ INSTANCE_FAILURE-    | CSCRCInternalError     -- ^ INTERNAL_ERROR-    | CSCRCStepFailure       -- ^ STEP_FAILURE-    | CSCRCUserRequest       -- ^ USER_REQUEST-    | CSCRCValidationError   -- ^ VALIDATION_ERROR-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable ClusterStateChangeReasonCode--instance FromText ClusterStateChangeReasonCode where-    parser = takeLowerText >>= \case-        "all_steps_completed" -> pure CSCRCAllStepsCompleted-        "bootstrap_failure"   -> pure CSCRCBootstrapFailure-        "instance_failure"    -> pure CSCRCInstanceFailure-        "internal_error"      -> pure CSCRCInternalError-        "step_failure"        -> pure CSCRCStepFailure-        "user_request"        -> pure CSCRCUserRequest-        "validation_error"    -> pure CSCRCValidationError-        e                     -> fail $-            "Failure parsing ClusterStateChangeReasonCode from " ++ show e--instance ToText ClusterStateChangeReasonCode where-    toText = \case-        CSCRCAllStepsCompleted -> "ALL_STEPS_COMPLETED"-        CSCRCBootstrapFailure  -> "BOOTSTRAP_FAILURE"-        CSCRCInstanceFailure   -> "INSTANCE_FAILURE"-        CSCRCInternalError     -> "INTERNAL_ERROR"-        CSCRCStepFailure       -> "STEP_FAILURE"-        CSCRCUserRequest       -> "USER_REQUEST"-        CSCRCValidationError   -> "VALIDATION_ERROR"--instance ToByteString ClusterStateChangeReasonCode-instance ToHeader     ClusterStateChangeReasonCode-instance ToQuery      ClusterStateChangeReasonCode--instance FromJSON ClusterStateChangeReasonCode where-    parseJSON = parseJSONText "ClusterStateChangeReasonCode"--instance ToJSON ClusterStateChangeReasonCode where-    toJSON = toJSONText--data Step = Step-    { _sActionOnFailure :: Maybe ActionOnFailure-    , _sConfig          :: Maybe HadoopStepConfig-    , _sId              :: Maybe Text-    , _sName            :: Maybe Text-    , _sStatus          :: Maybe StepStatus-    } deriving (Eq, Read, Show)---- | 'Step' constructor.------ The fields accessible through corresponding lenses are:------ * 'sActionOnFailure' @::@ 'Maybe' 'ActionOnFailure'------ * 'sConfig' @::@ 'Maybe' 'HadoopStepConfig'------ * 'sId' @::@ 'Maybe' 'Text'------ * 'sName' @::@ 'Maybe' 'Text'------ * 'sStatus' @::@ 'Maybe' 'StepStatus'----step :: Step-step = Step-    { _sId              = Nothing-    , _sName            = Nothing-    , _sConfig          = Nothing-    , _sActionOnFailure = Nothing-    , _sStatus          = Nothing-    }---- | This specifies what action to take when the cluster step fails. Possible--- values are TERMINATE_CLUSTER, CANCEL_AND_WAIT, and CONTINUE.-sActionOnFailure :: Lens' Step (Maybe ActionOnFailure)-sActionOnFailure = lens _sActionOnFailure (\s a -> s { _sActionOnFailure = a })---- | The Hadoop job configuration of the cluster step.-sConfig :: Lens' Step (Maybe HadoopStepConfig)-sConfig = lens _sConfig (\s a -> s { _sConfig = a })---- | The identifier of the cluster step.-sId :: Lens' Step (Maybe Text)-sId = lens _sId (\s a -> s { _sId = a })---- | The name of the cluster step.-sName :: Lens' Step (Maybe Text)-sName = lens _sName (\s a -> s { _sName = a })---- | The current execution status details of the cluster step.-sStatus :: Lens' Step (Maybe StepStatus)-sStatus = lens _sStatus (\s a -> s { _sStatus = a })--instance FromJSON Step where-    parseJSON = withObject "Step" $ \o -> Step-        <$> o .:? "ActionOnFailure"-        <*> o .:? "Config"-        <*> o .:? "Id"-        <*> o .:? "Name"-        <*> o .:? "Status"--instance ToJSON Step where-    toJSON Step{..} = object-        [ "Id"              .= _sId-        , "Name"            .= _sName-        , "Config"          .= _sConfig-        , "ActionOnFailure" .= _sActionOnFailure-        , "Status"          .= _sStatus-        ]--data StepState-    = SSCancelled   -- ^ CANCELLED-    | SSCompleted   -- ^ COMPLETED-    | SSFailed      -- ^ FAILED-    | SSInterrupted -- ^ INTERRUPTED-    | SSPending     -- ^ PENDING-    | SSRunning     -- ^ RUNNING-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable StepState--instance FromText StepState where-    parser = takeLowerText >>= \case-        "cancelled"   -> pure SSCancelled-        "completed"   -> pure SSCompleted-        "failed"      -> pure SSFailed-        "interrupted" -> pure SSInterrupted-        "pending"     -> pure SSPending-        "running"     -> pure SSRunning-        e             -> fail $-            "Failure parsing StepState from " ++ show e--instance ToText StepState where-    toText = \case-        SSCancelled   -> "CANCELLED"-        SSCompleted   -> "COMPLETED"-        SSFailed      -> "FAILED"-        SSInterrupted -> "INTERRUPTED"-        SSPending     -> "PENDING"-        SSRunning     -> "RUNNING"--instance ToByteString StepState-instance ToHeader     StepState-instance ToQuery      StepState--instance FromJSON StepState where-    parseJSON = parseJSONText "StepState"--instance ToJSON StepState where-    toJSON = toJSONText--data InstanceGroupTimeline = InstanceGroupTimeline-    { _igtCreationDateTime :: Maybe POSIX-    , _igtEndDateTime      :: Maybe POSIX-    , _igtReadyDateTime    :: Maybe POSIX-    } deriving (Eq, Ord, Read, Show)---- | 'InstanceGroupTimeline' constructor.------ The fields accessible through corresponding lenses are:------ * 'igtCreationDateTime' @::@ 'Maybe' 'UTCTime'------ * 'igtEndDateTime' @::@ 'Maybe' 'UTCTime'------ * 'igtReadyDateTime' @::@ 'Maybe' 'UTCTime'----instanceGroupTimeline :: InstanceGroupTimeline-instanceGroupTimeline = InstanceGroupTimeline-    { _igtCreationDateTime = Nothing-    , _igtReadyDateTime    = Nothing-    , _igtEndDateTime      = Nothing-    }---- | The creation date and time of the instance group.-igtCreationDateTime :: Lens' InstanceGroupTimeline (Maybe UTCTime)-igtCreationDateTime =-    lens _igtCreationDateTime (\s a -> s { _igtCreationDateTime = a })-        . mapping _Time---- | The date and time when the instance group terminated.-igtEndDateTime :: Lens' InstanceGroupTimeline (Maybe UTCTime)-igtEndDateTime = lens _igtEndDateTime (\s a -> s { _igtEndDateTime = a }) . mapping _Time---- | The date and time when the instance group became ready to perform tasks.-igtReadyDateTime :: Lens' InstanceGroupTimeline (Maybe UTCTime)-igtReadyDateTime = lens _igtReadyDateTime (\s a -> s { _igtReadyDateTime = a }) . mapping _Time--instance FromJSON InstanceGroupTimeline where-    parseJSON = withObject "InstanceGroupTimeline" $ \o -> InstanceGroupTimeline-        <$> o .:? "CreationDateTime"-        <*> o .:? "EndDateTime"-        <*> o .:? "ReadyDateTime"--instance ToJSON InstanceGroupTimeline where-    toJSON InstanceGroupTimeline{..} = object-        [ "CreationDateTime" .= _igtCreationDateTime-        , "ReadyDateTime"    .= _igtReadyDateTime-        , "EndDateTime"      .= _igtEndDateTime-        ]--newtype BootstrapActionDetail = BootstrapActionDetail-    { _badBootstrapActionConfig :: Maybe BootstrapActionConfig-    } deriving (Eq, Read, Show)---- | 'BootstrapActionDetail' constructor.------ The fields accessible through corresponding lenses are:------ * 'badBootstrapActionConfig' @::@ 'Maybe' 'BootstrapActionConfig'----bootstrapActionDetail :: BootstrapActionDetail-bootstrapActionDetail = BootstrapActionDetail-    { _badBootstrapActionConfig = Nothing-    }---- | A description of the bootstrap action.-badBootstrapActionConfig :: Lens' BootstrapActionDetail (Maybe BootstrapActionConfig)-badBootstrapActionConfig =-    lens _badBootstrapActionConfig-        (\s a -> s { _badBootstrapActionConfig = a })--instance FromJSON BootstrapActionDetail where-    parseJSON = withObject "BootstrapActionDetail" $ \o -> BootstrapActionDetail-        <$> o .:? "BootstrapActionConfig"--instance ToJSON BootstrapActionDetail where-    toJSON BootstrapActionDetail{..} = object-        [ "BootstrapActionConfig" .= _badBootstrapActionConfig-        ]--data StepExecutionStatusDetail = StepExecutionStatusDetail-    { _sesdCreationDateTime      :: POSIX-    , _sesdEndDateTime           :: Maybe POSIX-    , _sesdLastStateChangeReason :: Maybe Text-    , _sesdStartDateTime         :: Maybe POSIX-    , _sesdState                 :: StepExecutionState-    } deriving (Eq, Read, Show)---- | 'StepExecutionStatusDetail' constructor.------ The fields accessible through corresponding lenses are:------ * 'sesdCreationDateTime' @::@ 'UTCTime'------ * 'sesdEndDateTime' @::@ 'Maybe' 'UTCTime'------ * 'sesdLastStateChangeReason' @::@ 'Maybe' 'Text'------ * 'sesdStartDateTime' @::@ 'Maybe' 'UTCTime'------ * 'sesdState' @::@ 'StepExecutionState'----stepExecutionStatusDetail :: StepExecutionState -- ^ 'sesdState'-                          -> UTCTime -- ^ 'sesdCreationDateTime'-                          -> StepExecutionStatusDetail-stepExecutionStatusDetail p1 p2 = StepExecutionStatusDetail-    { _sesdState                 = p1-    , _sesdCreationDateTime      = withIso _Time (const id) p2-    , _sesdStartDateTime         = Nothing-    , _sesdEndDateTime           = Nothing-    , _sesdLastStateChangeReason = Nothing-    }---- | The creation date and time of the step.-sesdCreationDateTime :: Lens' StepExecutionStatusDetail UTCTime-sesdCreationDateTime =-    lens _sesdCreationDateTime (\s a -> s { _sesdCreationDateTime = a })-        . _Time---- | The completion date and time of the step.-sesdEndDateTime :: Lens' StepExecutionStatusDetail (Maybe UTCTime)-sesdEndDateTime = lens _sesdEndDateTime (\s a -> s { _sesdEndDateTime = a }) . mapping _Time---- | A description of the step's current state.-sesdLastStateChangeReason :: Lens' StepExecutionStatusDetail (Maybe Text)-sesdLastStateChangeReason =-    lens _sesdLastStateChangeReason-        (\s a -> s { _sesdLastStateChangeReason = a })---- | The start date and time of the step.-sesdStartDateTime :: Lens' StepExecutionStatusDetail (Maybe UTCTime)-sesdStartDateTime =-    lens _sesdStartDateTime (\s a -> s { _sesdStartDateTime = a })-        . mapping _Time---- | The state of the job flow step.-sesdState :: Lens' StepExecutionStatusDetail StepExecutionState-sesdState = lens _sesdState (\s a -> s { _sesdState = a })--instance FromJSON StepExecutionStatusDetail where-    parseJSON = withObject "StepExecutionStatusDetail" $ \o -> StepExecutionStatusDetail-        <$> o .:  "CreationDateTime"-        <*> o .:? "EndDateTime"-        <*> o .:? "LastStateChangeReason"-        <*> o .:? "StartDateTime"-        <*> o .:  "State"--instance ToJSON StepExecutionStatusDetail where-    toJSON StepExecutionStatusDetail{..} = object-        [ "State"                 .= _sesdState-        , "CreationDateTime"      .= _sesdCreationDateTime-        , "StartDateTime"         .= _sesdStartDateTime-        , "EndDateTime"           .= _sesdEndDateTime-        , "LastStateChangeReason" .= _sesdLastStateChangeReason-        ]--data InstanceStatus = InstanceStatus-    { _isState             :: Maybe InstanceState-    , _isStateChangeReason :: Maybe InstanceStateChangeReason-    , _isTimeline          :: Maybe InstanceTimeline-    } deriving (Eq, Read, Show)---- | 'InstanceStatus' constructor.------ The fields accessible through corresponding lenses are:------ * 'isState' @::@ 'Maybe' 'InstanceState'------ * 'isStateChangeReason' @::@ 'Maybe' 'InstanceStateChangeReason'------ * 'isTimeline' @::@ 'Maybe' 'InstanceTimeline'----instanceStatus :: InstanceStatus-instanceStatus = InstanceStatus-    { _isState             = Nothing-    , _isStateChangeReason = Nothing-    , _isTimeline          = Nothing-    }---- | The current state of the instance.-isState :: Lens' InstanceStatus (Maybe InstanceState)-isState = lens _isState (\s a -> s { _isState = a })---- | The details of the status change reason for the instance.-isStateChangeReason :: Lens' InstanceStatus (Maybe InstanceStateChangeReason)-isStateChangeReason =-    lens _isStateChangeReason (\s a -> s { _isStateChangeReason = a })---- | The timeline of the instance status over time.-isTimeline :: Lens' InstanceStatus (Maybe InstanceTimeline)-isTimeline = lens _isTimeline (\s a -> s { _isTimeline = a })--instance FromJSON InstanceStatus where-    parseJSON = withObject "InstanceStatus" $ \o -> InstanceStatus-        <$> o .:? "State"-        <*> o .:? "StateChangeReason"-        <*> o .:? "Timeline"--instance ToJSON InstanceStatus where-    toJSON InstanceStatus{..} = object-        [ "State"             .= _isState-        , "StateChangeReason" .= _isStateChangeReason-        , "Timeline"          .= _isTimeline-        ]--data InstanceRoleType-    = IRTCore   -- ^ CORE-    | IRTMaster -- ^ MASTER-    | IRTTask   -- ^ TASK-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable InstanceRoleType--instance FromText InstanceRoleType where-    parser = takeLowerText >>= \case-        "core"   -> pure IRTCore-        "master" -> pure IRTMaster-        "task"   -> pure IRTTask-        e        -> fail $-            "Failure parsing InstanceRoleType from " ++ show e--instance ToText InstanceRoleType where-    toText = \case-        IRTCore   -> "CORE"-        IRTMaster -> "MASTER"-        IRTTask   -> "TASK"--instance ToByteString InstanceRoleType-instance ToHeader     InstanceRoleType-instance ToQuery      InstanceRoleType--instance FromJSON InstanceRoleType where-    parseJSON = parseJSONText "InstanceRoleType"--instance ToJSON InstanceRoleType where-    toJSON = toJSONText--data JobFlowInstancesConfig = JobFlowInstancesConfig-    { _jficAdditionalMasterSecurityGroups :: List "AdditionalMasterSecurityGroups" Text-    , _jficAdditionalSlaveSecurityGroups  :: List "AdditionalSlaveSecurityGroups" Text-    , _jficEc2KeyName                     :: Maybe Text-    , _jficEc2SubnetId                    :: Maybe Text-    , _jficEmrManagedMasterSecurityGroup  :: Maybe Text-    , _jficEmrManagedSlaveSecurityGroup   :: Maybe Text-    , _jficHadoopVersion                  :: Maybe Text-    , _jficInstanceCount                  :: Maybe Int-    , _jficInstanceGroups                 :: List "InstanceGroups" InstanceGroupConfig-    , _jficKeepJobFlowAliveWhenNoSteps    :: Maybe Bool-    , _jficMasterInstanceType             :: Maybe Text-    , _jficPlacement                      :: Maybe PlacementType-    , _jficSlaveInstanceType              :: Maybe Text-    , _jficTerminationProtected           :: Maybe Bool-    } deriving (Eq, Read, Show)---- | 'JobFlowInstancesConfig' constructor.------ The fields accessible through corresponding lenses are:------ * 'jficAdditionalMasterSecurityGroups' @::@ ['Text']------ * 'jficAdditionalSlaveSecurityGroups' @::@ ['Text']------ * 'jficEc2KeyName' @::@ 'Maybe' 'Text'------ * 'jficEc2SubnetId' @::@ 'Maybe' 'Text'------ * 'jficEmrManagedMasterSecurityGroup' @::@ 'Maybe' 'Text'------ * 'jficEmrManagedSlaveSecurityGroup' @::@ 'Maybe' 'Text'------ * 'jficHadoopVersion' @::@ 'Maybe' 'Text'------ * 'jficInstanceCount' @::@ 'Maybe' 'Int'------ * 'jficInstanceGroups' @::@ ['InstanceGroupConfig']------ * 'jficKeepJobFlowAliveWhenNoSteps' @::@ 'Maybe' 'Bool'------ * 'jficMasterInstanceType' @::@ 'Maybe' 'Text'------ * 'jficPlacement' @::@ 'Maybe' 'PlacementType'------ * 'jficSlaveInstanceType' @::@ 'Maybe' 'Text'------ * 'jficTerminationProtected' @::@ 'Maybe' 'Bool'----jobFlowInstancesConfig :: JobFlowInstancesConfig-jobFlowInstancesConfig = JobFlowInstancesConfig-    { _jficMasterInstanceType             = Nothing-    , _jficSlaveInstanceType              = Nothing-    , _jficInstanceCount                  = Nothing-    , _jficInstanceGroups                 = mempty-    , _jficEc2KeyName                     = Nothing-    , _jficPlacement                      = Nothing-    , _jficKeepJobFlowAliveWhenNoSteps    = Nothing-    , _jficTerminationProtected           = Nothing-    , _jficHadoopVersion                  = Nothing-    , _jficEc2SubnetId                    = Nothing-    , _jficEmrManagedMasterSecurityGroup  = Nothing-    , _jficEmrManagedSlaveSecurityGroup   = Nothing-    , _jficAdditionalMasterSecurityGroups = mempty-    , _jficAdditionalSlaveSecurityGroups  = mempty-    }---- | A list of additional Amazon EC2 security group IDs for the master node.-jficAdditionalMasterSecurityGroups :: Lens' JobFlowInstancesConfig [Text]-jficAdditionalMasterSecurityGroups =-    lens _jficAdditionalMasterSecurityGroups-        (\s a -> s { _jficAdditionalMasterSecurityGroups = a })-            . _List---- | A list of additional Amazon EC2 security group IDs for the slave nodes.-jficAdditionalSlaveSecurityGroups :: Lens' JobFlowInstancesConfig [Text]-jficAdditionalSlaveSecurityGroups =-    lens _jficAdditionalSlaveSecurityGroups-        (\s a -> s { _jficAdditionalSlaveSecurityGroups = a })-            . _List---- | The name of the Amazon EC2 key pair that can be used to ssh to the master--- node as the user called "hadoop."-jficEc2KeyName :: Lens' JobFlowInstancesConfig (Maybe Text)-jficEc2KeyName = lens _jficEc2KeyName (\s a -> s { _jficEc2KeyName = a })---- | To launch the job flow in Amazon Virtual Private Cloud (Amazon VPC), set--- this parameter to the identifier of the Amazon VPC subnet where you want the--- job flow to launch. If you do not specify this value, the job flow is--- launched in the normal Amazon Web Services cloud, outside of an Amazon VPC.------ Amazon VPC currently does not support cluster compute quadruple extra large--- (cc1.4xlarge) instances. Thus you cannot specify the cc1.4xlarge instance--- type for nodes of a job flow launched in a Amazon VPC.-jficEc2SubnetId :: Lens' JobFlowInstancesConfig (Maybe Text)-jficEc2SubnetId = lens _jficEc2SubnetId (\s a -> s { _jficEc2SubnetId = a })---- | The identifier of the Amazon EC2 security group (managed by Amazon--- ElasticMapReduce) for the master node.-jficEmrManagedMasterSecurityGroup :: Lens' JobFlowInstancesConfig (Maybe Text)-jficEmrManagedMasterSecurityGroup =-    lens _jficEmrManagedMasterSecurityGroup-        (\s a -> s { _jficEmrManagedMasterSecurityGroup = a })---- | The identifier of the Amazon EC2 security group (managed by Amazon--- ElasticMapReduce) for the slave nodes.-jficEmrManagedSlaveSecurityGroup :: Lens' JobFlowInstancesConfig (Maybe Text)-jficEmrManagedSlaveSecurityGroup =-    lens _jficEmrManagedSlaveSecurityGroup-        (\s a -> s { _jficEmrManagedSlaveSecurityGroup = a })---- | The Hadoop version for the job flow. Valid inputs are "0.18", "0.20",--- "0.20.205", "1.0.3", "2.2.0", or "2.4.0". If you do not set this value, the--- default of 0.18 is used, unless the AmiVersion parameter is set in the--- RunJobFlow call, in which case the default version of Hadoop for that AMI--- version is used.-jficHadoopVersion :: Lens' JobFlowInstancesConfig (Maybe Text)-jficHadoopVersion =-    lens _jficHadoopVersion (\s a -> s { _jficHadoopVersion = a })---- | The number of Amazon EC2 instances used to execute the job flow.-jficInstanceCount :: Lens' JobFlowInstancesConfig (Maybe Int)-jficInstanceCount =-    lens _jficInstanceCount (\s a -> s { _jficInstanceCount = a })---- | Configuration for the job flow's instance groups.-jficInstanceGroups :: Lens' JobFlowInstancesConfig [InstanceGroupConfig]-jficInstanceGroups =-    lens _jficInstanceGroups (\s a -> s { _jficInstanceGroups = a })-        . _List---- | Specifies whether the job flow should terminate after completing all steps.-jficKeepJobFlowAliveWhenNoSteps :: Lens' JobFlowInstancesConfig (Maybe Bool)-jficKeepJobFlowAliveWhenNoSteps =-    lens _jficKeepJobFlowAliveWhenNoSteps-        (\s a -> s { _jficKeepJobFlowAliveWhenNoSteps = a })---- | The EC2 instance type of the master node.-jficMasterInstanceType :: Lens' JobFlowInstancesConfig (Maybe Text)-jficMasterInstanceType =-    lens _jficMasterInstanceType (\s a -> s { _jficMasterInstanceType = a })---- | The Availability Zone the job flow will run in.-jficPlacement :: Lens' JobFlowInstancesConfig (Maybe PlacementType)-jficPlacement = lens _jficPlacement (\s a -> s { _jficPlacement = a })---- | The EC2 instance type of the slave nodes.-jficSlaveInstanceType :: Lens' JobFlowInstancesConfig (Maybe Text)-jficSlaveInstanceType =-    lens _jficSlaveInstanceType (\s a -> s { _jficSlaveInstanceType = a })---- | Specifies whether to lock the job flow to prevent the Amazon EC2 instances--- from being terminated by API call, user intervention, or in the event of a--- job flow error.-jficTerminationProtected :: Lens' JobFlowInstancesConfig (Maybe Bool)-jficTerminationProtected =-    lens _jficTerminationProtected-        (\s a -> s { _jficTerminationProtected = a })--instance FromJSON JobFlowInstancesConfig where-    parseJSON = withObject "JobFlowInstancesConfig" $ \o -> JobFlowInstancesConfig-        <$> o .:? "AdditionalMasterSecurityGroups" .!= mempty-        <*> o .:? "AdditionalSlaveSecurityGroups" .!= mempty-        <*> o .:? "Ec2KeyName"-        <*> o .:? "Ec2SubnetId"-        <*> o .:? "EmrManagedMasterSecurityGroup"-        <*> o .:? "EmrManagedSlaveSecurityGroup"-        <*> o .:? "HadoopVersion"-        <*> o .:? "InstanceCount"-        <*> o .:? "InstanceGroups" .!= mempty-        <*> o .:? "KeepJobFlowAliveWhenNoSteps"-        <*> o .:? "MasterInstanceType"-        <*> o .:? "Placement"-        <*> o .:? "SlaveInstanceType"-        <*> o .:? "TerminationProtected"--instance ToJSON JobFlowInstancesConfig where-    toJSON JobFlowInstancesConfig{..} = object-        [ "MasterInstanceType"             .= _jficMasterInstanceType-        , "SlaveInstanceType"              .= _jficSlaveInstanceType-        , "InstanceCount"                  .= _jficInstanceCount-        , "InstanceGroups"                 .= _jficInstanceGroups-        , "Ec2KeyName"                     .= _jficEc2KeyName-        , "Placement"                      .= _jficPlacement-        , "KeepJobFlowAliveWhenNoSteps"    .= _jficKeepJobFlowAliveWhenNoSteps-        , "TerminationProtected"           .= _jficTerminationProtected-        , "HadoopVersion"                  .= _jficHadoopVersion-        , "Ec2SubnetId"                    .= _jficEc2SubnetId-        , "EmrManagedMasterSecurityGroup"  .= _jficEmrManagedMasterSecurityGroup-        , "EmrManagedSlaveSecurityGroup"   .= _jficEmrManagedSlaveSecurityGroup-        , "AdditionalMasterSecurityGroups" .= _jficAdditionalMasterSecurityGroups-        , "AdditionalSlaveSecurityGroups"  .= _jficAdditionalSlaveSecurityGroups-        ]--data StepConfig = StepConfig-    { _scActionOnFailure :: Maybe ActionOnFailure-    , _scHadoopJarStep   :: HadoopJarStepConfig-    , _scName            :: Text-    } deriving (Eq, Read, Show)---- | 'StepConfig' constructor.------ The fields accessible through corresponding lenses are:------ * 'scActionOnFailure' @::@ 'Maybe' 'ActionOnFailure'------ * 'scHadoopJarStep' @::@ 'HadoopJarStepConfig'------ * 'scName' @::@ 'Text'----stepConfig :: Text -- ^ 'scName'-           -> HadoopJarStepConfig -- ^ 'scHadoopJarStep'-           -> StepConfig-stepConfig p1 p2 = StepConfig-    { _scName            = p1-    , _scHadoopJarStep   = p2-    , _scActionOnFailure = Nothing-    }---- | The action to take if the job flow step fails.-scActionOnFailure :: Lens' StepConfig (Maybe ActionOnFailure)-scActionOnFailure =-    lens _scActionOnFailure (\s a -> s { _scActionOnFailure = a })---- | The JAR file used for the job flow step.-scHadoopJarStep :: Lens' StepConfig HadoopJarStepConfig-scHadoopJarStep = lens _scHadoopJarStep (\s a -> s { _scHadoopJarStep = a })---- | The name of the job flow step.-scName :: Lens' StepConfig Text-scName = lens _scName (\s a -> s { _scName = a })--instance FromJSON StepConfig where-    parseJSON = withObject "StepConfig" $ \o -> StepConfig-        <$> o .:? "ActionOnFailure"-        <*> o .:  "HadoopJarStep"-        <*> o .:  "Name"--instance ToJSON StepConfig where-    toJSON StepConfig{..} = object-        [ "Name"            .= _scName-        , "ActionOnFailure" .= _scActionOnFailure-        , "HadoopJarStep"   .= _scHadoopJarStep-        ]--data InstanceGroup = InstanceGroup-    { _igBidPrice               :: Maybe Text-    , _igId                     :: Maybe Text-    , _igInstanceGroupType      :: Maybe InstanceGroupType-    , _igInstanceType           :: Maybe Text-    , _igMarket                 :: Maybe MarketType-    , _igName                   :: Maybe Text-    , _igRequestedInstanceCount :: Maybe Int-    , _igRunningInstanceCount   :: Maybe Int-    , _igStatus                 :: Maybe InstanceGroupStatus-    } deriving (Eq, Read, Show)---- | 'InstanceGroup' constructor.------ The fields accessible through corresponding lenses are:------ * 'igBidPrice' @::@ 'Maybe' 'Text'------ * 'igId' @::@ 'Maybe' 'Text'------ * 'igInstanceGroupType' @::@ 'Maybe' 'InstanceGroupType'------ * 'igInstanceType' @::@ 'Maybe' 'Text'------ * 'igMarket' @::@ 'Maybe' 'MarketType'------ * 'igName' @::@ 'Maybe' 'Text'------ * 'igRequestedInstanceCount' @::@ 'Maybe' 'Int'------ * 'igRunningInstanceCount' @::@ 'Maybe' 'Int'------ * 'igStatus' @::@ 'Maybe' 'InstanceGroupStatus'----instanceGroup :: InstanceGroup-instanceGroup = InstanceGroup-    { _igId                     = Nothing-    , _igName                   = Nothing-    , _igMarket                 = Nothing-    , _igInstanceGroupType      = Nothing-    , _igBidPrice               = Nothing-    , _igInstanceType           = Nothing-    , _igRequestedInstanceCount = Nothing-    , _igRunningInstanceCount   = Nothing-    , _igStatus                 = Nothing-    }---- | The bid price for each EC2 instance in the instance group when launching--- nodes as Spot Instances, expressed in USD.-igBidPrice :: Lens' InstanceGroup (Maybe Text)-igBidPrice = lens _igBidPrice (\s a -> s { _igBidPrice = a })---- | The identifier of the instance group.-igId :: Lens' InstanceGroup (Maybe Text)-igId = lens _igId (\s a -> s { _igId = a })---- | The type of the instance group. Valid values are MASTER, CORE or TASK.-igInstanceGroupType :: Lens' InstanceGroup (Maybe InstanceGroupType)-igInstanceGroupType =-    lens _igInstanceGroupType (\s a -> s { _igInstanceGroupType = a })---- | The EC2 instance type for all instances in the instance group.-igInstanceType :: Lens' InstanceGroup (Maybe Text)-igInstanceType = lens _igInstanceType (\s a -> s { _igInstanceType = a })---- | The marketplace to provision instances for this group. Valid values are--- ON_DEMAND or SPOT.-igMarket :: Lens' InstanceGroup (Maybe MarketType)-igMarket = lens _igMarket (\s a -> s { _igMarket = a })---- | The name of the instance group.-igName :: Lens' InstanceGroup (Maybe Text)-igName = lens _igName (\s a -> s { _igName = a })---- | The target number of instances for the instance group.-igRequestedInstanceCount :: Lens' InstanceGroup (Maybe Int)-igRequestedInstanceCount =-    lens _igRequestedInstanceCount-        (\s a -> s { _igRequestedInstanceCount = a })---- | The number of instances currently running in this instance group.-igRunningInstanceCount :: Lens' InstanceGroup (Maybe Int)-igRunningInstanceCount =-    lens _igRunningInstanceCount (\s a -> s { _igRunningInstanceCount = a })---- | The current status of the instance group.-igStatus :: Lens' InstanceGroup (Maybe InstanceGroupStatus)-igStatus = lens _igStatus (\s a -> s { _igStatus = a })--instance FromJSON InstanceGroup where-    parseJSON = withObject "InstanceGroup" $ \o -> InstanceGroup-        <$> o .:? "BidPrice"-        <*> o .:? "Id"-        <*> o .:? "InstanceGroupType"-        <*> o .:? "InstanceType"-        <*> o .:? "Market"-        <*> o .:? "Name"-        <*> o .:? "RequestedInstanceCount"-        <*> o .:? "RunningInstanceCount"-        <*> o .:? "Status"--instance ToJSON InstanceGroup where-    toJSON InstanceGroup{..} = object-        [ "Id"                     .= _igId-        , "Name"                   .= _igName-        , "Market"                 .= _igMarket-        , "InstanceGroupType"      .= _igInstanceGroupType-        , "BidPrice"               .= _igBidPrice-        , "InstanceType"           .= _igInstanceType-        , "RequestedInstanceCount" .= _igRequestedInstanceCount-        , "RunningInstanceCount"   .= _igRunningInstanceCount-        , "Status"                 .= _igStatus-        ]--data BootstrapActionConfig = BootstrapActionConfig-    { _bacName                  :: Text-    , _bacScriptBootstrapAction :: ScriptBootstrapActionConfig-    } deriving (Eq, Read, Show)---- | 'BootstrapActionConfig' constructor.------ The fields accessible through corresponding lenses are:------ * 'bacName' @::@ 'Text'------ * 'bacScriptBootstrapAction' @::@ 'ScriptBootstrapActionConfig'----bootstrapActionConfig :: Text -- ^ 'bacName'-                      -> ScriptBootstrapActionConfig -- ^ 'bacScriptBootstrapAction'-                      -> BootstrapActionConfig-bootstrapActionConfig p1 p2 = BootstrapActionConfig-    { _bacName                  = p1-    , _bacScriptBootstrapAction = p2-    }---- | The name of the bootstrap action.-bacName :: Lens' BootstrapActionConfig Text-bacName = lens _bacName (\s a -> s { _bacName = a })---- | The script run by the bootstrap action.-bacScriptBootstrapAction :: Lens' BootstrapActionConfig ScriptBootstrapActionConfig-bacScriptBootstrapAction =-    lens _bacScriptBootstrapAction-        (\s a -> s { _bacScriptBootstrapAction = a })--instance FromJSON BootstrapActionConfig where-    parseJSON = withObject "BootstrapActionConfig" $ \o -> BootstrapActionConfig-        <$> o .:  "Name"-        <*> o .:  "ScriptBootstrapAction"--instance ToJSON BootstrapActionConfig where-    toJSON BootstrapActionConfig{..} = object-        [ "Name"                  .= _bacName-        , "ScriptBootstrapAction" .= _bacScriptBootstrapAction-        ]--data ClusterSummary = ClusterSummary-    { _csId                      :: Maybe Text-    , _csName                    :: Maybe Text-    , _csNormalizedInstanceHours :: Maybe Int-    , _csStatus                  :: Maybe ClusterStatus-    } deriving (Eq, Read, Show)---- | 'ClusterSummary' constructor.------ The fields accessible through corresponding lenses are:------ * 'csId' @::@ 'Maybe' 'Text'------ * 'csName' @::@ 'Maybe' 'Text'------ * 'csNormalizedInstanceHours' @::@ 'Maybe' 'Int'------ * 'csStatus' @::@ 'Maybe' 'ClusterStatus'----clusterSummary :: ClusterSummary-clusterSummary = ClusterSummary-    { _csId                      = Nothing-    , _csName                    = Nothing-    , _csStatus                  = Nothing-    , _csNormalizedInstanceHours = Nothing-    }---- | The unique identifier for the cluster.-csId :: Lens' ClusterSummary (Maybe Text)-csId = lens _csId (\s a -> s { _csId = a })---- | The name of the cluster.-csName :: Lens' ClusterSummary (Maybe Text)-csName = lens _csName (\s a -> s { _csName = a })---- | An approximation of the cost of the job flow, represented in m1.small/hours.--- This value is incremented one time for every hour an m1.small instance runs.--- Larger instances are weighted more, so an EC2 instance that is roughly four--- times more expensive would result in the normalized instance hours being--- incremented by four. This result is only an approximation and does not--- reflect the actual billing rate.-csNormalizedInstanceHours :: Lens' ClusterSummary (Maybe Int)-csNormalizedInstanceHours =-    lens _csNormalizedInstanceHours-        (\s a -> s { _csNormalizedInstanceHours = a })---- | The details about the current status of the cluster.-csStatus :: Lens' ClusterSummary (Maybe ClusterStatus)-csStatus = lens _csStatus (\s a -> s { _csStatus = a })--instance FromJSON ClusterSummary where-    parseJSON = withObject "ClusterSummary" $ \o -> ClusterSummary-        <$> o .:? "Id"-        <*> o .:? "Name"-        <*> o .:? "NormalizedInstanceHours"-        <*> o .:? "Status"--instance ToJSON ClusterSummary where-    toJSON ClusterSummary{..} = object-        [ "Id"                      .= _csId-        , "Name"                    .= _csName-        , "Status"                  .= _csStatus-        , "NormalizedInstanceHours" .= _csNormalizedInstanceHours-        ]--data JobFlowInstancesDetail = JobFlowInstancesDetail-    { _jfidEc2KeyName                  :: Maybe Text-    , _jfidEc2SubnetId                 :: Maybe Text-    , _jfidHadoopVersion               :: Maybe Text-    , _jfidInstanceCount               :: Int-    , _jfidInstanceGroups              :: List "InstanceGroups" InstanceGroupDetail-    , _jfidKeepJobFlowAliveWhenNoSteps :: Maybe Bool-    , _jfidMasterInstanceId            :: Maybe Text-    , _jfidMasterInstanceType          :: Text-    , _jfidMasterPublicDnsName         :: Maybe Text-    , _jfidNormalizedInstanceHours     :: Maybe Int-    , _jfidPlacement                   :: Maybe PlacementType-    , _jfidSlaveInstanceType           :: Text-    , _jfidTerminationProtected        :: Maybe Bool-    } deriving (Eq, Read, Show)---- | 'JobFlowInstancesDetail' constructor.------ The fields accessible through corresponding lenses are:------ * 'jfidEc2KeyName' @::@ 'Maybe' 'Text'------ * 'jfidEc2SubnetId' @::@ 'Maybe' 'Text'------ * 'jfidHadoopVersion' @::@ 'Maybe' 'Text'------ * 'jfidInstanceCount' @::@ 'Int'------ * 'jfidInstanceGroups' @::@ ['InstanceGroupDetail']------ * 'jfidKeepJobFlowAliveWhenNoSteps' @::@ 'Maybe' 'Bool'------ * 'jfidMasterInstanceId' @::@ 'Maybe' 'Text'------ * 'jfidMasterInstanceType' @::@ 'Text'------ * 'jfidMasterPublicDnsName' @::@ 'Maybe' 'Text'------ * 'jfidNormalizedInstanceHours' @::@ 'Maybe' 'Int'------ * 'jfidPlacement' @::@ 'Maybe' 'PlacementType'------ * 'jfidSlaveInstanceType' @::@ 'Text'------ * 'jfidTerminationProtected' @::@ 'Maybe' 'Bool'----jobFlowInstancesDetail :: Text -- ^ 'jfidMasterInstanceType'-                       -> Text -- ^ 'jfidSlaveInstanceType'-                       -> Int -- ^ 'jfidInstanceCount'-                       -> JobFlowInstancesDetail-jobFlowInstancesDetail p1 p2 p3 = JobFlowInstancesDetail-    { _jfidMasterInstanceType          = p1-    , _jfidSlaveInstanceType           = p2-    , _jfidInstanceCount               = p3-    , _jfidMasterPublicDnsName         = Nothing-    , _jfidMasterInstanceId            = Nothing-    , _jfidInstanceGroups              = mempty-    , _jfidNormalizedInstanceHours     = Nothing-    , _jfidEc2KeyName                  = Nothing-    , _jfidEc2SubnetId                 = Nothing-    , _jfidPlacement                   = Nothing-    , _jfidKeepJobFlowAliveWhenNoSteps = Nothing-    , _jfidTerminationProtected        = Nothing-    , _jfidHadoopVersion               = Nothing-    }---- | The name of an Amazon EC2 key pair that can be used to ssh to the master node--- of job flow.-jfidEc2KeyName :: Lens' JobFlowInstancesDetail (Maybe Text)-jfidEc2KeyName = lens _jfidEc2KeyName (\s a -> s { _jfidEc2KeyName = a })---- | For job flows launched within Amazon Virtual Private Cloud, this value--- specifies the identifier of the subnet where the job flow was launched.-jfidEc2SubnetId :: Lens' JobFlowInstancesDetail (Maybe Text)-jfidEc2SubnetId = lens _jfidEc2SubnetId (\s a -> s { _jfidEc2SubnetId = a })---- | The Hadoop version for the job flow.-jfidHadoopVersion :: Lens' JobFlowInstancesDetail (Maybe Text)-jfidHadoopVersion =-    lens _jfidHadoopVersion (\s a -> s { _jfidHadoopVersion = a })---- | The number of Amazon EC2 instances in the cluster. If the value is 1, the--- same instance serves as both the master and slave node. If the value is--- greater than 1, one instance is the master node and all others are slave--- nodes.-jfidInstanceCount :: Lens' JobFlowInstancesDetail Int-jfidInstanceCount =-    lens _jfidInstanceCount (\s a -> s { _jfidInstanceCount = a })---- | Details about the job flow's instance groups.-jfidInstanceGroups :: Lens' JobFlowInstancesDetail [InstanceGroupDetail]-jfidInstanceGroups =-    lens _jfidInstanceGroups (\s a -> s { _jfidInstanceGroups = a })-        . _List---- | Specifies whether the job flow should terminate after completing all steps.-jfidKeepJobFlowAliveWhenNoSteps :: Lens' JobFlowInstancesDetail (Maybe Bool)-jfidKeepJobFlowAliveWhenNoSteps =-    lens _jfidKeepJobFlowAliveWhenNoSteps-        (\s a -> s { _jfidKeepJobFlowAliveWhenNoSteps = a })---- | The Amazon EC2 instance identifier of the master node.-jfidMasterInstanceId :: Lens' JobFlowInstancesDetail (Maybe Text)-jfidMasterInstanceId =-    lens _jfidMasterInstanceId (\s a -> s { _jfidMasterInstanceId = a })---- | The Amazon EC2 master node instance type.-jfidMasterInstanceType :: Lens' JobFlowInstancesDetail Text-jfidMasterInstanceType =-    lens _jfidMasterInstanceType (\s a -> s { _jfidMasterInstanceType = a })---- | The DNS name of the master node.-jfidMasterPublicDnsName :: Lens' JobFlowInstancesDetail (Maybe Text)-jfidMasterPublicDnsName =-    lens _jfidMasterPublicDnsName (\s a -> s { _jfidMasterPublicDnsName = a })---- | An approximation of the cost of the job flow, represented in m1.small/hours.--- This value is incremented once for every hour an m1.small runs. Larger--- instances are weighted more, so an Amazon EC2 instance that is roughly four--- times more expensive would result in the normalized instance hours being--- incremented by four. This result is only an approximation and does not--- reflect the actual billing rate.-jfidNormalizedInstanceHours :: Lens' JobFlowInstancesDetail (Maybe Int)-jfidNormalizedInstanceHours =-    lens _jfidNormalizedInstanceHours-        (\s a -> s { _jfidNormalizedInstanceHours = a })---- | The Amazon EC2 Availability Zone for the job flow.-jfidPlacement :: Lens' JobFlowInstancesDetail (Maybe PlacementType)-jfidPlacement = lens _jfidPlacement (\s a -> s { _jfidPlacement = a })---- | The Amazon EC2 slave node instance type.-jfidSlaveInstanceType :: Lens' JobFlowInstancesDetail Text-jfidSlaveInstanceType =-    lens _jfidSlaveInstanceType (\s a -> s { _jfidSlaveInstanceType = a })---- | Specifies whether the Amazon EC2 instances in the cluster are protected from--- termination by API calls, user intervention, or in the event of a job flow--- error.-jfidTerminationProtected :: Lens' JobFlowInstancesDetail (Maybe Bool)-jfidTerminationProtected =-    lens _jfidTerminationProtected-        (\s a -> s { _jfidTerminationProtected = a })--instance FromJSON JobFlowInstancesDetail where-    parseJSON = withObject "JobFlowInstancesDetail" $ \o -> JobFlowInstancesDetail-        <$> o .:? "Ec2KeyName"-        <*> o .:? "Ec2SubnetId"-        <*> o .:? "HadoopVersion"-        <*> o .:  "InstanceCount"-        <*> o .:? "InstanceGroups" .!= mempty-        <*> o .:? "KeepJobFlowAliveWhenNoSteps"-        <*> o .:? "MasterInstanceId"-        <*> o .:  "MasterInstanceType"-        <*> o .:? "MasterPublicDnsName"-        <*> o .:? "NormalizedInstanceHours"-        <*> o .:? "Placement"-        <*> o .:  "SlaveInstanceType"-        <*> o .:? "TerminationProtected"--instance ToJSON JobFlowInstancesDetail where-    toJSON JobFlowInstancesDetail{..} = object-        [ "MasterInstanceType"          .= _jfidMasterInstanceType-        , "MasterPublicDnsName"         .= _jfidMasterPublicDnsName-        , "MasterInstanceId"            .= _jfidMasterInstanceId-        , "SlaveInstanceType"           .= _jfidSlaveInstanceType-        , "InstanceCount"               .= _jfidInstanceCount-        , "InstanceGroups"              .= _jfidInstanceGroups-        , "NormalizedInstanceHours"     .= _jfidNormalizedInstanceHours-        , "Ec2KeyName"                  .= _jfidEc2KeyName-        , "Ec2SubnetId"                 .= _jfidEc2SubnetId-        , "Placement"                   .= _jfidPlacement-        , "KeepJobFlowAliveWhenNoSteps" .= _jfidKeepJobFlowAliveWhenNoSteps-        , "TerminationProtected"        .= _jfidTerminationProtected-        , "HadoopVersion"               .= _jfidHadoopVersion-        ]--data ClusterStatus = ClusterStatus-    { _csState             :: Maybe ClusterState-    , _csStateChangeReason :: Maybe ClusterStateChangeReason-    , _csTimeline          :: Maybe ClusterTimeline-    } deriving (Eq, Read, Show)---- | 'ClusterStatus' constructor.------ The fields accessible through corresponding lenses are:------ * 'csState' @::@ 'Maybe' 'ClusterState'------ * 'csStateChangeReason' @::@ 'Maybe' 'ClusterStateChangeReason'------ * 'csTimeline' @::@ 'Maybe' 'ClusterTimeline'----clusterStatus :: ClusterStatus-clusterStatus = ClusterStatus-    { _csState             = Nothing-    , _csStateChangeReason = Nothing-    , _csTimeline          = Nothing-    }---- | The current state of the cluster.-csState :: Lens' ClusterStatus (Maybe ClusterState)-csState = lens _csState (\s a -> s { _csState = a })---- | The reason for the cluster status change.-csStateChangeReason :: Lens' ClusterStatus (Maybe ClusterStateChangeReason)-csStateChangeReason =-    lens _csStateChangeReason (\s a -> s { _csStateChangeReason = a })---- | A timeline that represents the status of a cluster over the lifetime of the--- cluster.-csTimeline :: Lens' ClusterStatus (Maybe ClusterTimeline)-csTimeline = lens _csTimeline (\s a -> s { _csTimeline = a })--instance FromJSON ClusterStatus where-    parseJSON = withObject "ClusterStatus" $ \o -> ClusterStatus-        <$> o .:? "State"-        <*> o .:? "StateChangeReason"-        <*> o .:? "Timeline"--instance ToJSON ClusterStatus where-    toJSON ClusterStatus{..} = object-        [ "State"             .= _csState-        , "StateChangeReason" .= _csStateChangeReason-        , "Timeline"          .= _csTimeline-        ]--data InstanceState-    = ISAwaitingFulfillment -- ^ AWAITING_FULFILLMENT-    | ISBootstrapping       -- ^ BOOTSTRAPPING-    | ISProvisioning        -- ^ PROVISIONING-    | ISRunning             -- ^ RUNNING-    | ISTerminated          -- ^ TERMINATED-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable InstanceState--instance FromText InstanceState where-    parser = takeLowerText >>= \case-        "awaiting_fulfillment" -> pure ISAwaitingFulfillment-        "bootstrapping"        -> pure ISBootstrapping-        "provisioning"         -> pure ISProvisioning-        "running"              -> pure ISRunning-        "terminated"           -> pure ISTerminated-        e                      -> fail $-            "Failure parsing InstanceState from " ++ show e--instance ToText InstanceState where-    toText = \case-        ISAwaitingFulfillment -> "AWAITING_FULFILLMENT"-        ISBootstrapping       -> "BOOTSTRAPPING"-        ISProvisioning        -> "PROVISIONING"-        ISRunning             -> "RUNNING"-        ISTerminated          -> "TERMINATED"--instance ToByteString InstanceState-instance ToHeader     InstanceState-instance ToQuery      InstanceState--instance FromJSON InstanceState where-    parseJSON = parseJSONText "InstanceState"--instance ToJSON InstanceState where-    toJSON = toJSONText--data ClusterTimeline = ClusterTimeline-    { _ctCreationDateTime :: Maybe POSIX-    , _ctEndDateTime      :: Maybe POSIX-    , _ctReadyDateTime    :: Maybe POSIX-    } deriving (Eq, Ord, Read, Show)---- | 'ClusterTimeline' constructor.------ The fields accessible through corresponding lenses are:------ * 'ctCreationDateTime' @::@ 'Maybe' 'UTCTime'------ * 'ctEndDateTime' @::@ 'Maybe' 'UTCTime'------ * 'ctReadyDateTime' @::@ 'Maybe' 'UTCTime'----clusterTimeline :: ClusterTimeline-clusterTimeline = ClusterTimeline-    { _ctCreationDateTime = Nothing-    , _ctReadyDateTime    = Nothing-    , _ctEndDateTime      = Nothing-    }---- | The creation date and time of the cluster.-ctCreationDateTime :: Lens' ClusterTimeline (Maybe UTCTime)-ctCreationDateTime =-    lens _ctCreationDateTime (\s a -> s { _ctCreationDateTime = a })-        . mapping _Time---- | The date and time when the cluster was terminated.-ctEndDateTime :: Lens' ClusterTimeline (Maybe UTCTime)-ctEndDateTime = lens _ctEndDateTime (\s a -> s { _ctEndDateTime = a }) . mapping _Time---- | The date and time when the cluster was ready to execute steps.-ctReadyDateTime :: Lens' ClusterTimeline (Maybe UTCTime)-ctReadyDateTime = lens _ctReadyDateTime (\s a -> s { _ctReadyDateTime = a }) . mapping _Time--instance FromJSON ClusterTimeline where-    parseJSON = withObject "ClusterTimeline" $ \o -> ClusterTimeline-        <$> o .:? "CreationDateTime"-        <*> o .:? "EndDateTime"-        <*> o .:? "ReadyDateTime"--instance ToJSON ClusterTimeline where-    toJSON ClusterTimeline{..} = object-        [ "CreationDateTime" .= _ctCreationDateTime-        , "ReadyDateTime"    .= _ctReadyDateTime-        , "EndDateTime"      .= _ctEndDateTime-        ]--data InstanceStateChangeReasonCode-    = ISCRCBootstrapFailure  -- ^ BOOTSTRAP_FAILURE-    | ISCRCClusterTerminated -- ^ CLUSTER_TERMINATED-    | ISCRCInstanceFailure   -- ^ INSTANCE_FAILURE-    | ISCRCInternalError     -- ^ INTERNAL_ERROR-    | ISCRCValidationError   -- ^ VALIDATION_ERROR-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable InstanceStateChangeReasonCode--instance FromText InstanceStateChangeReasonCode where-    parser = takeLowerText >>= \case-        "bootstrap_failure"  -> pure ISCRCBootstrapFailure-        "cluster_terminated" -> pure ISCRCClusterTerminated-        "instance_failure"   -> pure ISCRCInstanceFailure-        "internal_error"     -> pure ISCRCInternalError-        "validation_error"   -> pure ISCRCValidationError-        e                    -> fail $-            "Failure parsing InstanceStateChangeReasonCode from " ++ show e--instance ToText InstanceStateChangeReasonCode where-    toText = \case-        ISCRCBootstrapFailure  -> "BOOTSTRAP_FAILURE"-        ISCRCClusterTerminated -> "CLUSTER_TERMINATED"-        ISCRCInstanceFailure   -> "INSTANCE_FAILURE"-        ISCRCInternalError     -> "INTERNAL_ERROR"-        ISCRCValidationError   -> "VALIDATION_ERROR"--instance ToByteString InstanceStateChangeReasonCode-instance ToHeader     InstanceStateChangeReasonCode-instance ToQuery      InstanceStateChangeReasonCode--instance FromJSON InstanceStateChangeReasonCode where-    parseJSON = parseJSONText "InstanceStateChangeReasonCode"--instance ToJSON InstanceStateChangeReasonCode where-    toJSON = toJSONText--data Instance = Instance-    { _iEc2InstanceId    :: Maybe Text-    , _iId               :: Maybe Text-    , _iPrivateDnsName   :: Maybe Text-    , _iPrivateIpAddress :: Maybe Text-    , _iPublicDnsName    :: Maybe Text-    , _iPublicIpAddress  :: Maybe Text-    , _iStatus           :: Maybe InstanceStatus-    } deriving (Eq, Read, Show)---- | 'Instance' constructor.------ The fields accessible through corresponding lenses are:------ * 'iEc2InstanceId' @::@ 'Maybe' 'Text'------ * 'iId' @::@ 'Maybe' 'Text'------ * 'iPrivateDnsName' @::@ 'Maybe' 'Text'------ * 'iPrivateIpAddress' @::@ 'Maybe' 'Text'------ * 'iPublicDnsName' @::@ 'Maybe' 'Text'------ * 'iPublicIpAddress' @::@ 'Maybe' 'Text'------ * 'iStatus' @::@ 'Maybe' 'InstanceStatus'----instance' :: Instance-instance' = Instance-    { _iId               = Nothing-    , _iEc2InstanceId    = Nothing-    , _iPublicDnsName    = Nothing-    , _iPublicIpAddress  = Nothing-    , _iPrivateDnsName   = Nothing-    , _iPrivateIpAddress = Nothing-    , _iStatus           = Nothing-    }---- | The unique identifier of the instance in Amazon EC2.-iEc2InstanceId :: Lens' Instance (Maybe Text)-iEc2InstanceId = lens _iEc2InstanceId (\s a -> s { _iEc2InstanceId = a })---- | The unique identifier for the instance in Amazon EMR.-iId :: Lens' Instance (Maybe Text)-iId = lens _iId (\s a -> s { _iId = a })---- | The private DNS name of the instance.-iPrivateDnsName :: Lens' Instance (Maybe Text)-iPrivateDnsName = lens _iPrivateDnsName (\s a -> s { _iPrivateDnsName = a })---- | The private IP address of the instance.-iPrivateIpAddress :: Lens' Instance (Maybe Text)-iPrivateIpAddress =-    lens _iPrivateIpAddress (\s a -> s { _iPrivateIpAddress = a })---- | The public DNS name of the instance.-iPublicDnsName :: Lens' Instance (Maybe Text)-iPublicDnsName = lens _iPublicDnsName (\s a -> s { _iPublicDnsName = a })---- | The public IP address of the instance.-iPublicIpAddress :: Lens' Instance (Maybe Text)-iPublicIpAddress = lens _iPublicIpAddress (\s a -> s { _iPublicIpAddress = a })---- | The current status of the instance.-iStatus :: Lens' Instance (Maybe InstanceStatus)-iStatus = lens _iStatus (\s a -> s { _iStatus = a })--instance FromJSON Instance where-    parseJSON = withObject "Instance" $ \o -> Instance-        <$> o .:? "Ec2InstanceId"-        <*> o .:? "Id"-        <*> o .:? "PrivateDnsName"-        <*> o .:? "PrivateIpAddress"-        <*> o .:? "PublicDnsName"-        <*> o .:? "PublicIpAddress"-        <*> o .:? "Status"--instance ToJSON Instance where-    toJSON Instance{..} = object-        [ "Id"               .= _iId-        , "Ec2InstanceId"    .= _iEc2InstanceId-        , "PublicDnsName"    .= _iPublicDnsName-        , "PublicIpAddress"  .= _iPublicIpAddress-        , "PrivateDnsName"   .= _iPrivateDnsName-        , "PrivateIpAddress" .= _iPrivateIpAddress-        , "Status"           .= _iStatus-        ]--data ScriptBootstrapActionConfig = ScriptBootstrapActionConfig-    { _sbacArgs :: List "Args" Text-    , _sbacPath :: Text-    } deriving (Eq, Ord, Read, Show)---- | 'ScriptBootstrapActionConfig' constructor.------ The fields accessible through corresponding lenses are:------ * 'sbacArgs' @::@ ['Text']------ * 'sbacPath' @::@ 'Text'----scriptBootstrapActionConfig :: Text -- ^ 'sbacPath'-                            -> ScriptBootstrapActionConfig-scriptBootstrapActionConfig p1 = ScriptBootstrapActionConfig-    { _sbacPath = p1-    , _sbacArgs = mempty-    }---- | A list of command line arguments to pass to the bootstrap action script.-sbacArgs :: Lens' ScriptBootstrapActionConfig [Text]-sbacArgs = lens _sbacArgs (\s a -> s { _sbacArgs = a }) . _List---- | Location of the script to run during a bootstrap action. Can be either a--- location in Amazon S3 or on a local file system.-sbacPath :: Lens' ScriptBootstrapActionConfig Text-sbacPath = lens _sbacPath (\s a -> s { _sbacPath = a })--instance FromJSON ScriptBootstrapActionConfig where-    parseJSON = withObject "ScriptBootstrapActionConfig" $ \o -> ScriptBootstrapActionConfig-        <$> o .:? "Args" .!= mempty-        <*> o .:  "Path"--instance ToJSON ScriptBootstrapActionConfig where-    toJSON ScriptBootstrapActionConfig{..} = object-        [ "Path" .= _sbacPath-        , "Args" .= _sbacArgs-        ]+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE TypeFamilies      #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Network.AWS.EMR.Types+-- Copyright   : (c) 2013-2015 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+module Network.AWS.EMR.Types+    (+    -- * Service+      EMR++    -- * Errors+    , _InvalidRequestException+    , _InternalServerError+    , _InternalServerException++    -- * ActionOnFailure+    , ActionOnFailure (..)++    -- * ClusterState+    , ClusterState (..)++    -- * ClusterStateChangeReasonCode+    , ClusterStateChangeReasonCode (..)++    -- * InstanceGroupState+    , InstanceGroupState (..)++    -- * InstanceGroupStateChangeReasonCode+    , InstanceGroupStateChangeReasonCode (..)++    -- * InstanceGroupType+    , InstanceGroupType (..)++    -- * InstanceRoleType+    , InstanceRoleType (..)++    -- * InstanceState+    , InstanceState (..)++    -- * InstanceStateChangeReasonCode+    , InstanceStateChangeReasonCode (..)++    -- * MarketType+    , MarketType (..)++    -- * StepState+    , StepState (..)++    -- * StepStateChangeReasonCode+    , StepStateChangeReasonCode (..)++    -- * Application+    , Application+    , application+    , aAdditionalInfo+    , aArgs+    , aName+    , aVersion++    -- * BootstrapActionConfig+    , BootstrapActionConfig+    , bootstrapActionConfig+    , bacName+    , bacScriptBootstrapAction++    -- * Cluster+    , Cluster+    , cluster+    , cluRequestedAMIVersion+    , cluEC2InstanceAttributes+    , cluNormalizedInstanceHours+    , cluConfigurations+    , cluReleaseLabel+    , cluLogURI+    , cluRunningAMIVersion+    , cluMasterPublicDNSName+    , cluAutoTerminate+    , cluTerminationProtected+    , cluVisibleToAllUsers+    , cluApplications+    , cluTags+    , cluServiceRole+    , cluId+    , cluName+    , cluStatus++    -- * ClusterStateChangeReason+    , ClusterStateChangeReason+    , clusterStateChangeReason+    , cscrCode+    , cscrMessage++    -- * ClusterStatus+    , ClusterStatus+    , clusterStatus+    , csState+    , csStateChangeReason+    , csTimeline++    -- * ClusterSummary+    , ClusterSummary+    , clusterSummary+    , csStatus+    , csNormalizedInstanceHours+    , csName+    , csId++    -- * ClusterTimeline+    , ClusterTimeline+    , clusterTimeline+    , ctReadyDateTime+    , ctCreationDateTime+    , ctEndDateTime++    -- * Command+    , Command+    , command+    , cArgs+    , cScriptPath+    , cName++    -- * Configuration+    , Configuration+    , configuration+    , cConfigurations+    , cClassification+    , cProperties++    -- * EC2InstanceAttributes+    , EC2InstanceAttributes+    , ec2InstanceAttributes+    , eiaEC2KeyName+    , eiaEmrManagedSlaveSecurityGroup+    , eiaAdditionalSlaveSecurityGroups+    , eiaIAMInstanceProfile+    , eiaAdditionalMasterSecurityGroups+    , eiaEmrManagedMasterSecurityGroup+    , eiaEC2SubnetId+    , eiaEC2AvailabilityZone++    -- * HadoopJARStepConfig+    , HadoopJARStepConfig+    , hadoopJARStepConfig+    , hjscArgs+    , hjscMainClass+    , hjscProperties+    , hjscJAR++    -- * HadoopStepConfig+    , HadoopStepConfig+    , hadoopStepConfig+    , hscArgs+    , hscJAR+    , hscMainClass+    , hscProperties++    -- * Instance+    , Instance+    , instance'+    , iStatus+    , iPublicDNSName+    , iEC2InstanceId+    , iPrivateIPAddress+    , iId+    , iPrivateDNSName+    , iPublicIPAddress++    -- * InstanceGroup+    , InstanceGroup+    , instanceGroup+    , igStatus+    , igBidPrice+    , igRequestedInstanceCount+    , igRunningInstanceCount+    , igConfigurations+    , igInstanceGroupType+    , igInstanceType+    , igMarket+    , igName+    , igId++    -- * InstanceGroupConfig+    , InstanceGroupConfig+    , instanceGroupConfig+    , igcBidPrice+    , igcConfigurations+    , igcMarket+    , igcName+    , igcInstanceRole+    , igcInstanceType+    , igcInstanceCount++    -- * InstanceGroupModifyConfig+    , InstanceGroupModifyConfig+    , instanceGroupModifyConfig+    , igmcInstanceCount+    , igmcEC2InstanceIdsToTerminate+    , igmcInstanceGroupId++    -- * InstanceGroupStateChangeReason+    , InstanceGroupStateChangeReason+    , instanceGroupStateChangeReason+    , igscrCode+    , igscrMessage++    -- * InstanceGroupStatus+    , InstanceGroupStatus+    , instanceGroupStatus+    , igsState+    , igsStateChangeReason+    , igsTimeline++    -- * InstanceGroupTimeline+    , InstanceGroupTimeline+    , instanceGroupTimeline+    , igtReadyDateTime+    , igtCreationDateTime+    , igtEndDateTime++    -- * InstanceStateChangeReason+    , InstanceStateChangeReason+    , instanceStateChangeReason+    , iscrCode+    , iscrMessage++    -- * InstanceStatus+    , InstanceStatus+    , instanceStatus+    , isState+    , isStateChangeReason+    , isTimeline++    -- * InstanceTimeline+    , InstanceTimeline+    , instanceTimeline+    , itReadyDateTime+    , itCreationDateTime+    , itEndDateTime++    -- * JobFlowInstancesConfig+    , JobFlowInstancesConfig+    , jobFlowInstancesConfig+    , jficSlaveInstanceType+    , jficEC2KeyName+    , jficInstanceCount+    , jficEmrManagedSlaveSecurityGroup+    , jficAdditionalSlaveSecurityGroups+    , jficHadoopVersion+    , jficAdditionalMasterSecurityGroups+    , jficEmrManagedMasterSecurityGroup+    , jficEC2SubnetId+    , jficMasterInstanceType+    , jficInstanceGroups+    , jficKeepJobFlowAliveWhenNoSteps+    , jficTerminationProtected+    , jficPlacement++    -- * KeyValue+    , KeyValue+    , keyValue+    , kvValue+    , kvKey++    -- * PlacementType+    , PlacementType+    , placementType+    , ptAvailabilityZone++    -- * ScriptBootstrapActionConfig+    , ScriptBootstrapActionConfig+    , scriptBootstrapActionConfig+    , sbacArgs+    , sbacPath++    -- * Step+    , Step+    , step+    , sStatus+    , sActionOnFailure+    , sConfig+    , sName+    , sId++    -- * StepConfig+    , StepConfig+    , stepConfig+    , scActionOnFailure+    , scName+    , scHadoopJARStep++    -- * StepStateChangeReason+    , StepStateChangeReason+    , stepStateChangeReason+    , sscrCode+    , sscrMessage++    -- * StepStatus+    , StepStatus+    , stepStatus+    , ssState+    , ssStateChangeReason+    , ssTimeline++    -- * StepSummary+    , StepSummary+    , stepSummary+    , ssStatus+    , ssActionOnFailure+    , ssConfig+    , ssName+    , ssId++    -- * StepTimeline+    , StepTimeline+    , stepTimeline+    , stCreationDateTime+    , stEndDateTime+    , stStartDateTime++    -- * SupportedProductConfig+    , SupportedProductConfig+    , supportedProductConfig+    , spcArgs+    , spcName++    -- * Tag+    , Tag+    , tag+    , tagValue+    , tagKey+    ) where++import           Network.AWS.EMR.Types.Product+import           Network.AWS.EMR.Types.Sum+import           Network.AWS.Prelude+import           Network.AWS.Sign.V4++-- | Version @2009-03-31@ of the Amazon Elastic MapReduce SDK.+data EMR++instance AWSService EMR where+    type Sg EMR = V4+    service = const svc+      where+        svc =+            Service+            { _svcAbbrev = "EMR"+            , _svcPrefix = "elasticmapreduce"+            , _svcVersion = "2009-03-31"+            , _svcEndpoint = defaultEndpoint svc+            , _svcTimeout = Just 70+            , _svcStatus = statusSuccess+            , _svcError = parseJSONError+            , _svcRetry = retry+            }+        retry =+            Exponential+            { _retryBase = 5.0e-2+            , _retryGrowth = 2+            , _retryAttempts = 5+            , _retryCheck = check+            }+        check e+          | has (hasCode "ThrottlingException" . hasStatus 400) e =+              Just "throttling_exception"+          | has (hasCode "Throttling" . hasStatus 400) e = Just "throttling"+          | has (hasStatus 503) e = Just "service_unavailable"+          | has (hasStatus 500) e = Just "general_server_error"+          | has (hasStatus 509) e = Just "limit_exceeded"+          | otherwise = Nothing++-- | This exception occurs when there is something wrong with user input.+_InvalidRequestException :: AsError a => Getting (First ServiceError) a ServiceError+_InvalidRequestException = _ServiceError . hasCode "InvalidRequestException"++-- | Indicates that an error occurred while processing the request and that+-- the request was not completed.+_InternalServerError :: AsError a => Getting (First ServiceError) a ServiceError+_InternalServerError =+    _ServiceError . hasStatus 500 . hasCode "InternalFailure"++-- | This exception occurs when there is an internal failure in the EMR+-- service.+_InternalServerException :: AsError a => Getting (First ServiceError) a ServiceError+_InternalServerException = _ServiceError . hasCode "InternalServerException"
+ gen/Network/AWS/EMR/Types/Product.hs view
@@ -0,0 +1,2151 @@+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Network.AWS.EMR.Types.Product+-- Copyright   : (c) 2013-2015 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+module Network.AWS.EMR.Types.Product where++import           Network.AWS.EMR.Types.Sum+import           Network.AWS.Prelude++-- | An application is any Amazon or third-party software that you can add to+-- the cluster. This structure contains a list of strings that indicates+-- the software to use with the cluster and accepts a user argument list.+-- Amazon EMR accepts and forwards the argument list to the corresponding+-- installation script as bootstrap action argument. For more information,+-- see+-- <http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-mapr.html Launch a Job Flow on the MapR Distribution for Hadoop>.+-- Currently supported values are:+--+-- -   \"mapr-m3\" - launch the job flow using MapR M3 Edition.+-- -   \"mapr-m5\" - launch the job flow using MapR M5 Edition.+-- -   \"mapr\" with the user arguments specifying \"--edition,m3\" or+--     \"--edition,m5\" - launch the job flow using MapR M3 or M5 Edition,+--     respectively.+--+-- In Amazon EMR releases 4.0 and greater, the only accepted parameter is+-- the application name. To pass arguments to applications, you supply a+-- configuration for each application.+--+-- /See:/ 'application' smart constructor.+data Application = Application'+    { _aAdditionalInfo :: !(Maybe (Map Text Text))+    , _aArgs           :: !(Maybe [Text])+    , _aName           :: !(Maybe Text)+    , _aVersion        :: !(Maybe Text)+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'Application' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'aAdditionalInfo'+--+-- * 'aArgs'+--+-- * 'aName'+--+-- * 'aVersion'+application+    :: Application+application =+    Application'+    { _aAdditionalInfo = Nothing+    , _aArgs = Nothing+    , _aName = Nothing+    , _aVersion = Nothing+    }++-- | This option is for advanced users only. This is meta information about+-- third-party applications that third-party vendors use for testing+-- purposes.+aAdditionalInfo :: Lens' Application (HashMap Text Text)+aAdditionalInfo = lens _aAdditionalInfo (\ s a -> s{_aAdditionalInfo = a}) . _Default . _Map;++-- | Arguments for Amazon EMR to pass to the application.+aArgs :: Lens' Application [Text]+aArgs = lens _aArgs (\ s a -> s{_aArgs = a}) . _Default . _Coerce;++-- | The name of the application.+aName :: Lens' Application (Maybe Text)+aName = lens _aName (\ s a -> s{_aName = a});++-- | The version of the application.+aVersion :: Lens' Application (Maybe Text)+aVersion = lens _aVersion (\ s a -> s{_aVersion = a});++instance FromJSON Application where+        parseJSON+          = withObject "Application"+              (\ x ->+                 Application' <$>+                   (x .:? "AdditionalInfo" .!= mempty) <*>+                     (x .:? "Args" .!= mempty)+                     <*> (x .:? "Name")+                     <*> (x .:? "Version"))++instance ToJSON Application where+        toJSON Application'{..}+          = object+              ["AdditionalInfo" .= _aAdditionalInfo,+               "Args" .= _aArgs, "Name" .= _aName,+               "Version" .= _aVersion]++-- | Configuration of a bootstrap action.+--+-- /See:/ 'bootstrapActionConfig' smart constructor.+data BootstrapActionConfig = BootstrapActionConfig'+    { _bacName                  :: !Text+    , _bacScriptBootstrapAction :: !ScriptBootstrapActionConfig+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'BootstrapActionConfig' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'bacName'+--+-- * 'bacScriptBootstrapAction'+bootstrapActionConfig+    :: Text -- ^ 'bacName'+    -> ScriptBootstrapActionConfig -- ^ 'bacScriptBootstrapAction'+    -> BootstrapActionConfig+bootstrapActionConfig pName_ pScriptBootstrapAction_ =+    BootstrapActionConfig'+    { _bacName = pName_+    , _bacScriptBootstrapAction = pScriptBootstrapAction_+    }++-- | The name of the bootstrap action.+bacName :: Lens' BootstrapActionConfig Text+bacName = lens _bacName (\ s a -> s{_bacName = a});++-- | The script run by the bootstrap action.+bacScriptBootstrapAction :: Lens' BootstrapActionConfig ScriptBootstrapActionConfig+bacScriptBootstrapAction = lens _bacScriptBootstrapAction (\ s a -> s{_bacScriptBootstrapAction = a});++instance ToJSON BootstrapActionConfig where+        toJSON BootstrapActionConfig'{..}+          = object+              ["Name" .= _bacName,+               "ScriptBootstrapAction" .= _bacScriptBootstrapAction]++-- | The detailed description of the cluster.+--+-- /See:/ 'cluster' smart constructor.+data Cluster = Cluster'+    { _cluRequestedAMIVersion     :: !(Maybe Text)+    , _cluEC2InstanceAttributes   :: !(Maybe EC2InstanceAttributes)+    , _cluNormalizedInstanceHours :: !(Maybe Int)+    , _cluConfigurations          :: !(Maybe [Configuration])+    , _cluReleaseLabel            :: !(Maybe Text)+    , _cluLogURI                  :: !(Maybe Text)+    , _cluRunningAMIVersion       :: !(Maybe Text)+    , _cluMasterPublicDNSName     :: !(Maybe Text)+    , _cluAutoTerminate           :: !(Maybe Bool)+    , _cluTerminationProtected    :: !(Maybe Bool)+    , _cluVisibleToAllUsers       :: !(Maybe Bool)+    , _cluApplications            :: !(Maybe [Application])+    , _cluTags                    :: !(Maybe [Tag])+    , _cluServiceRole             :: !(Maybe Text)+    , _cluId                      :: !Text+    , _cluName                    :: !Text+    , _cluStatus                  :: !ClusterStatus+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'Cluster' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'cluRequestedAMIVersion'+--+-- * 'cluEC2InstanceAttributes'+--+-- * 'cluNormalizedInstanceHours'+--+-- * 'cluConfigurations'+--+-- * 'cluReleaseLabel'+--+-- * 'cluLogURI'+--+-- * 'cluRunningAMIVersion'+--+-- * 'cluMasterPublicDNSName'+--+-- * 'cluAutoTerminate'+--+-- * 'cluTerminationProtected'+--+-- * 'cluVisibleToAllUsers'+--+-- * 'cluApplications'+--+-- * 'cluTags'+--+-- * 'cluServiceRole'+--+-- * 'cluId'+--+-- * 'cluName'+--+-- * 'cluStatus'+cluster+    :: Text -- ^ 'cluId'+    -> Text -- ^ 'cluName'+    -> ClusterStatus -- ^ 'cluStatus'+    -> Cluster+cluster pId_ pName_ pStatus_ =+    Cluster'+    { _cluRequestedAMIVersion = Nothing+    , _cluEC2InstanceAttributes = Nothing+    , _cluNormalizedInstanceHours = Nothing+    , _cluConfigurations = Nothing+    , _cluReleaseLabel = Nothing+    , _cluLogURI = Nothing+    , _cluRunningAMIVersion = Nothing+    , _cluMasterPublicDNSName = Nothing+    , _cluAutoTerminate = Nothing+    , _cluTerminationProtected = Nothing+    , _cluVisibleToAllUsers = Nothing+    , _cluApplications = Nothing+    , _cluTags = Nothing+    , _cluServiceRole = Nothing+    , _cluId = pId_+    , _cluName = pName_+    , _cluStatus = pStatus_+    }++-- | The AMI version requested for this cluster.+cluRequestedAMIVersion :: Lens' Cluster (Maybe Text)+cluRequestedAMIVersion = lens _cluRequestedAMIVersion (\ s a -> s{_cluRequestedAMIVersion = a});++-- | Undocumented member.+cluEC2InstanceAttributes :: Lens' Cluster (Maybe EC2InstanceAttributes)+cluEC2InstanceAttributes = lens _cluEC2InstanceAttributes (\ s a -> s{_cluEC2InstanceAttributes = a});++-- | An approximation of the cost of the job flow, represented in+-- m1.small\/hours. This value is incremented one time for every hour an+-- m1.small instance runs. Larger instances are weighted more, so an EC2+-- instance that is roughly four times more expensive would result in the+-- normalized instance hours being incremented by four. This result is only+-- an approximation and does not reflect the actual billing rate.+cluNormalizedInstanceHours :: Lens' Cluster (Maybe Int)+cluNormalizedInstanceHours = lens _cluNormalizedInstanceHours (\ s a -> s{_cluNormalizedInstanceHours = a});++-- | Amazon EMR releases 4.x or later.+--+-- The list of Configurations supplied to the EMR cluster.+cluConfigurations :: Lens' Cluster [Configuration]+cluConfigurations = lens _cluConfigurations (\ s a -> s{_cluConfigurations = a}) . _Default . _Coerce;++-- | The release label for the Amazon EMR release. For Amazon EMR 3.x and 2.x+-- AMIs, use amiVersion instead instead of ReleaseLabel.+cluReleaseLabel :: Lens' Cluster (Maybe Text)+cluReleaseLabel = lens _cluReleaseLabel (\ s a -> s{_cluReleaseLabel = a});++-- | The path to the Amazon S3 location where logs for this cluster are+-- stored.+cluLogURI :: Lens' Cluster (Maybe Text)+cluLogURI = lens _cluLogURI (\ s a -> s{_cluLogURI = a});++-- | The AMI version running on this cluster.+cluRunningAMIVersion :: Lens' Cluster (Maybe Text)+cluRunningAMIVersion = lens _cluRunningAMIVersion (\ s a -> s{_cluRunningAMIVersion = a});++-- | The public DNS name of the master EC2 instance.+cluMasterPublicDNSName :: Lens' Cluster (Maybe Text)+cluMasterPublicDNSName = lens _cluMasterPublicDNSName (\ s a -> s{_cluMasterPublicDNSName = a});++-- | Specifies whether the cluster should terminate after completing all+-- steps.+cluAutoTerminate :: Lens' Cluster (Maybe Bool)+cluAutoTerminate = lens _cluAutoTerminate (\ s a -> s{_cluAutoTerminate = a});++-- | Indicates whether Amazon EMR will lock the cluster to prevent the EC2+-- instances from being terminated by an API call or user intervention, or+-- in the event of a cluster error.+cluTerminationProtected :: Lens' Cluster (Maybe Bool)+cluTerminationProtected = lens _cluTerminationProtected (\ s a -> s{_cluTerminationProtected = a});++-- | Indicates whether the job flow is visible to all IAM users of the AWS+-- account associated with the job flow. If this value is set to 'true',+-- all IAM users of that AWS account can view and manage the job flow if+-- they have the proper policy permissions set. If this value is 'false',+-- only the IAM user that created the cluster can view and manage it. This+-- value can be changed using the SetVisibleToAllUsers action.+cluVisibleToAllUsers :: Lens' Cluster (Maybe Bool)+cluVisibleToAllUsers = lens _cluVisibleToAllUsers (\ s a -> s{_cluVisibleToAllUsers = a});++-- | The applications installed on this cluster.+cluApplications :: Lens' Cluster [Application]+cluApplications = lens _cluApplications (\ s a -> s{_cluApplications = a}) . _Default . _Coerce;++-- | A list of tags associated with a cluster.+cluTags :: Lens' Cluster [Tag]+cluTags = lens _cluTags (\ s a -> s{_cluTags = a}) . _Default . _Coerce;++-- | The IAM role that will be assumed by the Amazon EMR service to access+-- AWS resources on your behalf.+cluServiceRole :: Lens' Cluster (Maybe Text)+cluServiceRole = lens _cluServiceRole (\ s a -> s{_cluServiceRole = a});++-- | The unique identifier for the cluster.+cluId :: Lens' Cluster Text+cluId = lens _cluId (\ s a -> s{_cluId = a});++-- | The name of the cluster.+cluName :: Lens' Cluster Text+cluName = lens _cluName (\ s a -> s{_cluName = a});++-- | The current status details about the cluster.+cluStatus :: Lens' Cluster ClusterStatus+cluStatus = lens _cluStatus (\ s a -> s{_cluStatus = a});++instance FromJSON Cluster where+        parseJSON+          = withObject "Cluster"+              (\ x ->+                 Cluster' <$>+                   (x .:? "RequestedAmiVersion") <*>+                     (x .:? "Ec2InstanceAttributes")+                     <*> (x .:? "NormalizedInstanceHours")+                     <*> (x .:? "Configurations" .!= mempty)+                     <*> (x .:? "ReleaseLabel")+                     <*> (x .:? "LogUri")+                     <*> (x .:? "RunningAmiVersion")+                     <*> (x .:? "MasterPublicDnsName")+                     <*> (x .:? "AutoTerminate")+                     <*> (x .:? "TerminationProtected")+                     <*> (x .:? "VisibleToAllUsers")+                     <*> (x .:? "Applications" .!= mempty)+                     <*> (x .:? "Tags" .!= mempty)+                     <*> (x .:? "ServiceRole")+                     <*> (x .: "Id")+                     <*> (x .: "Name")+                     <*> (x .: "Status"))++-- | The reason that the cluster changed to its current state.+--+-- /See:/ 'clusterStateChangeReason' smart constructor.+data ClusterStateChangeReason = ClusterStateChangeReason'+    { _cscrCode    :: !(Maybe ClusterStateChangeReasonCode)+    , _cscrMessage :: !(Maybe Text)+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'ClusterStateChangeReason' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'cscrCode'+--+-- * 'cscrMessage'+clusterStateChangeReason+    :: ClusterStateChangeReason+clusterStateChangeReason =+    ClusterStateChangeReason'+    { _cscrCode = Nothing+    , _cscrMessage = Nothing+    }++-- | The programmatic code for the state change reason.+cscrCode :: Lens' ClusterStateChangeReason (Maybe ClusterStateChangeReasonCode)+cscrCode = lens _cscrCode (\ s a -> s{_cscrCode = a});++-- | The descriptive message for the state change reason.+cscrMessage :: Lens' ClusterStateChangeReason (Maybe Text)+cscrMessage = lens _cscrMessage (\ s a -> s{_cscrMessage = a});++instance FromJSON ClusterStateChangeReason where+        parseJSON+          = withObject "ClusterStateChangeReason"+              (\ x ->+                 ClusterStateChangeReason' <$>+                   (x .:? "Code") <*> (x .:? "Message"))++-- | The detailed status of the cluster.+--+-- /See:/ 'clusterStatus' smart constructor.+data ClusterStatus = ClusterStatus'+    { _csState             :: !(Maybe ClusterState)+    , _csStateChangeReason :: !(Maybe ClusterStateChangeReason)+    , _csTimeline          :: !(Maybe ClusterTimeline)+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'ClusterStatus' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'csState'+--+-- * 'csStateChangeReason'+--+-- * 'csTimeline'+clusterStatus+    :: ClusterStatus+clusterStatus =+    ClusterStatus'+    { _csState = Nothing+    , _csStateChangeReason = Nothing+    , _csTimeline = Nothing+    }++-- | The current state of the cluster.+csState :: Lens' ClusterStatus (Maybe ClusterState)+csState = lens _csState (\ s a -> s{_csState = a});++-- | The reason for the cluster status change.+csStateChangeReason :: Lens' ClusterStatus (Maybe ClusterStateChangeReason)+csStateChangeReason = lens _csStateChangeReason (\ s a -> s{_csStateChangeReason = a});++-- | A timeline that represents the status of a cluster over the lifetime of+-- the cluster.+csTimeline :: Lens' ClusterStatus (Maybe ClusterTimeline)+csTimeline = lens _csTimeline (\ s a -> s{_csTimeline = a});++instance FromJSON ClusterStatus where+        parseJSON+          = withObject "ClusterStatus"+              (\ x ->+                 ClusterStatus' <$>+                   (x .:? "State") <*> (x .:? "StateChangeReason") <*>+                     (x .:? "Timeline"))++-- | The summary description of the cluster.+--+-- /See:/ 'clusterSummary' smart constructor.+data ClusterSummary = ClusterSummary'+    { _csStatus                  :: !(Maybe ClusterStatus)+    , _csNormalizedInstanceHours :: !(Maybe Int)+    , _csName                    :: !(Maybe Text)+    , _csId                      :: !(Maybe Text)+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'ClusterSummary' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'csStatus'+--+-- * 'csNormalizedInstanceHours'+--+-- * 'csName'+--+-- * 'csId'+clusterSummary+    :: ClusterSummary+clusterSummary =+    ClusterSummary'+    { _csStatus = Nothing+    , _csNormalizedInstanceHours = Nothing+    , _csName = Nothing+    , _csId = Nothing+    }++-- | The details about the current status of the cluster.+csStatus :: Lens' ClusterSummary (Maybe ClusterStatus)+csStatus = lens _csStatus (\ s a -> s{_csStatus = a});++-- | An approximation of the cost of the job flow, represented in+-- m1.small\/hours. This value is incremented one time for every hour an+-- m1.small instance runs. Larger instances are weighted more, so an EC2+-- instance that is roughly four times more expensive would result in the+-- normalized instance hours being incremented by four. This result is only+-- an approximation and does not reflect the actual billing rate.+csNormalizedInstanceHours :: Lens' ClusterSummary (Maybe Int)+csNormalizedInstanceHours = lens _csNormalizedInstanceHours (\ s a -> s{_csNormalizedInstanceHours = a});++-- | The name of the cluster.+csName :: Lens' ClusterSummary (Maybe Text)+csName = lens _csName (\ s a -> s{_csName = a});++-- | The unique identifier for the cluster.+csId :: Lens' ClusterSummary (Maybe Text)+csId = lens _csId (\ s a -> s{_csId = a});++instance FromJSON ClusterSummary where+        parseJSON+          = withObject "ClusterSummary"+              (\ x ->+                 ClusterSummary' <$>+                   (x .:? "Status") <*>+                     (x .:? "NormalizedInstanceHours")+                     <*> (x .:? "Name")+                     <*> (x .:? "Id"))++-- | Represents the timeline of the cluster\'s lifecycle.+--+-- /See:/ 'clusterTimeline' smart constructor.+data ClusterTimeline = ClusterTimeline'+    { _ctReadyDateTime    :: !(Maybe POSIX)+    , _ctCreationDateTime :: !(Maybe POSIX)+    , _ctEndDateTime      :: !(Maybe POSIX)+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'ClusterTimeline' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ctReadyDateTime'+--+-- * 'ctCreationDateTime'+--+-- * 'ctEndDateTime'+clusterTimeline+    :: ClusterTimeline+clusterTimeline =+    ClusterTimeline'+    { _ctReadyDateTime = Nothing+    , _ctCreationDateTime = Nothing+    , _ctEndDateTime = Nothing+    }++-- | The date and time when the cluster was ready to execute steps.+ctReadyDateTime :: Lens' ClusterTimeline (Maybe UTCTime)+ctReadyDateTime = lens _ctReadyDateTime (\ s a -> s{_ctReadyDateTime = a}) . mapping _Time;++-- | The creation date and time of the cluster.+ctCreationDateTime :: Lens' ClusterTimeline (Maybe UTCTime)+ctCreationDateTime = lens _ctCreationDateTime (\ s a -> s{_ctCreationDateTime = a}) . mapping _Time;++-- | The date and time when the cluster was terminated.+ctEndDateTime :: Lens' ClusterTimeline (Maybe UTCTime)+ctEndDateTime = lens _ctEndDateTime (\ s a -> s{_ctEndDateTime = a}) . mapping _Time;++instance FromJSON ClusterTimeline where+        parseJSON+          = withObject "ClusterTimeline"+              (\ x ->+                 ClusterTimeline' <$>+                   (x .:? "ReadyDateTime") <*>+                     (x .:? "CreationDateTime")+                     <*> (x .:? "EndDateTime"))++-- | An entity describing an executable that runs on a cluster.+--+-- /See:/ 'command' smart constructor.+data Command = Command'+    { _cArgs       :: !(Maybe [Text])+    , _cScriptPath :: !(Maybe Text)+    , _cName       :: !(Maybe Text)+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'Command' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'cArgs'+--+-- * 'cScriptPath'+--+-- * 'cName'+command+    :: Command+command =+    Command'+    { _cArgs = Nothing+    , _cScriptPath = Nothing+    , _cName = Nothing+    }++-- | Arguments for Amazon EMR to pass to the command for execution.+cArgs :: Lens' Command [Text]+cArgs = lens _cArgs (\ s a -> s{_cArgs = a}) . _Default . _Coerce;++-- | The Amazon S3 location of the command script.+cScriptPath :: Lens' Command (Maybe Text)+cScriptPath = lens _cScriptPath (\ s a -> s{_cScriptPath = a});++-- | The name of the command.+cName :: Lens' Command (Maybe Text)+cName = lens _cName (\ s a -> s{_cName = a});++instance FromJSON Command where+        parseJSON+          = withObject "Command"+              (\ x ->+                 Command' <$>+                   (x .:? "Args" .!= mempty) <*> (x .:? "ScriptPath")+                     <*> (x .:? "Name"))++-- | Amazon EMR releases 4.x or later.+--+-- Specifies a hardware and software configuration of the EMR cluster. This+-- includes configurations for applications and software bundled with+-- Amazon EMR. The Configuration object is a JSON object which is defined+-- by a classification and a set of properties. Configurations can be+-- nested, so a configuration may have its own Configuration objects+-- listed.+--+-- /See:/ 'configuration' smart constructor.+data Configuration = Configuration'+    { _cConfigurations :: !(Maybe [Configuration])+    , _cClassification :: !(Maybe Text)+    , _cProperties     :: !(Maybe (Map Text Text))+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'Configuration' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'cConfigurations'+--+-- * 'cClassification'+--+-- * 'cProperties'+configuration+    :: Configuration+configuration =+    Configuration'+    { _cConfigurations = Nothing+    , _cClassification = Nothing+    , _cProperties = Nothing+    }++-- | A list of configurations you apply to this configuration object.+cConfigurations :: Lens' Configuration [Configuration]+cConfigurations = lens _cConfigurations (\ s a -> s{_cConfigurations = a}) . _Default . _Coerce;++-- | The classification of a configuration. For more information see,+-- <http://docs.aws.amazon.com/ElasticMapReduce/latest/API/EmrConfigurations.html Amazon EMR Configurations>.+cClassification :: Lens' Configuration (Maybe Text)+cClassification = lens _cClassification (\ s a -> s{_cClassification = a});++-- | A set of properties supplied to the Configuration object.+cProperties :: Lens' Configuration (HashMap Text Text)+cProperties = lens _cProperties (\ s a -> s{_cProperties = a}) . _Default . _Map;++instance FromJSON Configuration where+        parseJSON+          = withObject "Configuration"+              (\ x ->+                 Configuration' <$>+                   (x .:? "Configurations" .!= mempty) <*>+                     (x .:? "Classification")+                     <*> (x .:? "Properties" .!= mempty))++instance ToJSON Configuration where+        toJSON Configuration'{..}+          = object+              ["Configurations" .= _cConfigurations,+               "Classification" .= _cClassification,+               "Properties" .= _cProperties]++-- | Provides information about the EC2 instances in a cluster grouped by+-- category. For example, key name, subnet ID, IAM instance profile, and so+-- on.+--+-- /See:/ 'ec2InstanceAttributes' smart constructor.+data EC2InstanceAttributes = EC2InstanceAttributes'+    { _eiaEC2KeyName                     :: !(Maybe Text)+    , _eiaEmrManagedSlaveSecurityGroup   :: !(Maybe Text)+    , _eiaAdditionalSlaveSecurityGroups  :: !(Maybe [Text])+    , _eiaIAMInstanceProfile             :: !(Maybe Text)+    , _eiaAdditionalMasterSecurityGroups :: !(Maybe [Text])+    , _eiaEmrManagedMasterSecurityGroup  :: !(Maybe Text)+    , _eiaEC2SubnetId                    :: !(Maybe Text)+    , _eiaEC2AvailabilityZone            :: !(Maybe Text)+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'EC2InstanceAttributes' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'eiaEC2KeyName'+--+-- * 'eiaEmrManagedSlaveSecurityGroup'+--+-- * 'eiaAdditionalSlaveSecurityGroups'+--+-- * 'eiaIAMInstanceProfile'+--+-- * 'eiaAdditionalMasterSecurityGroups'+--+-- * 'eiaEmrManagedMasterSecurityGroup'+--+-- * 'eiaEC2SubnetId'+--+-- * 'eiaEC2AvailabilityZone'+ec2InstanceAttributes+    :: EC2InstanceAttributes+ec2InstanceAttributes =+    EC2InstanceAttributes'+    { _eiaEC2KeyName = Nothing+    , _eiaEmrManagedSlaveSecurityGroup = Nothing+    , _eiaAdditionalSlaveSecurityGroups = Nothing+    , _eiaIAMInstanceProfile = Nothing+    , _eiaAdditionalMasterSecurityGroups = Nothing+    , _eiaEmrManagedMasterSecurityGroup = Nothing+    , _eiaEC2SubnetId = Nothing+    , _eiaEC2AvailabilityZone = Nothing+    }++-- | The name of the Amazon EC2 key pair to use when connecting with SSH into+-- the master node as a user named \"hadoop\".+eiaEC2KeyName :: Lens' EC2InstanceAttributes (Maybe Text)+eiaEC2KeyName = lens _eiaEC2KeyName (\ s a -> s{_eiaEC2KeyName = a});++-- | The identifier of the Amazon EC2 security group (managed by Amazon+-- Elastic MapReduce) for the slave nodes.+eiaEmrManagedSlaveSecurityGroup :: Lens' EC2InstanceAttributes (Maybe Text)+eiaEmrManagedSlaveSecurityGroup = lens _eiaEmrManagedSlaveSecurityGroup (\ s a -> s{_eiaEmrManagedSlaveSecurityGroup = a});++-- | A list of additional Amazon EC2 security group IDs for the slave nodes.+eiaAdditionalSlaveSecurityGroups :: Lens' EC2InstanceAttributes [Text]+eiaAdditionalSlaveSecurityGroups = lens _eiaAdditionalSlaveSecurityGroups (\ s a -> s{_eiaAdditionalSlaveSecurityGroups = a}) . _Default . _Coerce;++-- | The IAM role that was specified when the job flow was launched. The EC2+-- instances of the job flow assume this role.+eiaIAMInstanceProfile :: Lens' EC2InstanceAttributes (Maybe Text)+eiaIAMInstanceProfile = lens _eiaIAMInstanceProfile (\ s a -> s{_eiaIAMInstanceProfile = a});++-- | A list of additional Amazon EC2 security group IDs for the master node.+eiaAdditionalMasterSecurityGroups :: Lens' EC2InstanceAttributes [Text]+eiaAdditionalMasterSecurityGroups = lens _eiaAdditionalMasterSecurityGroups (\ s a -> s{_eiaAdditionalMasterSecurityGroups = a}) . _Default . _Coerce;++-- | The identifier of the Amazon EC2 security group (managed by Amazon+-- Elastic MapReduce) for the master node.+eiaEmrManagedMasterSecurityGroup :: Lens' EC2InstanceAttributes (Maybe Text)+eiaEmrManagedMasterSecurityGroup = lens _eiaEmrManagedMasterSecurityGroup (\ s a -> s{_eiaEmrManagedMasterSecurityGroup = a});++-- | To launch the job flow in Amazon VPC, set this parameter to the+-- identifier of the Amazon VPC subnet where you want the job flow to+-- launch. If you do not specify this value, the job flow is launched in+-- the normal AWS cloud, outside of a VPC.+--+-- Amazon VPC currently does not support cluster compute quadruple extra+-- large (cc1.4xlarge) instances. Thus, you cannot specify the cc1.4xlarge+-- instance type for nodes of a job flow launched in a VPC.+eiaEC2SubnetId :: Lens' EC2InstanceAttributes (Maybe Text)+eiaEC2SubnetId = lens _eiaEC2SubnetId (\ s a -> s{_eiaEC2SubnetId = a});++-- | The Availability Zone in which the cluster will run.+eiaEC2AvailabilityZone :: Lens' EC2InstanceAttributes (Maybe Text)+eiaEC2AvailabilityZone = lens _eiaEC2AvailabilityZone (\ s a -> s{_eiaEC2AvailabilityZone = a});++instance FromJSON EC2InstanceAttributes where+        parseJSON+          = withObject "EC2InstanceAttributes"+              (\ x ->+                 EC2InstanceAttributes' <$>+                   (x .:? "Ec2KeyName") <*>+                     (x .:? "EmrManagedSlaveSecurityGroup")+                     <*>+                     (x .:? "AdditionalSlaveSecurityGroups" .!= mempty)+                     <*> (x .:? "IamInstanceProfile")+                     <*>+                     (x .:? "AdditionalMasterSecurityGroups" .!= mempty)+                     <*> (x .:? "EmrManagedMasterSecurityGroup")+                     <*> (x .:? "Ec2SubnetId")+                     <*> (x .:? "Ec2AvailabilityZone"))++-- | A job flow step consisting of a JAR file whose main function will be+-- executed. The main function submits a job for Hadoop to execute and+-- waits for the job to finish or fail.+--+-- /See:/ 'hadoopJARStepConfig' smart constructor.+data HadoopJARStepConfig = HadoopJARStepConfig'+    { _hjscArgs       :: !(Maybe [Text])+    , _hjscMainClass  :: !(Maybe Text)+    , _hjscProperties :: !(Maybe [KeyValue])+    , _hjscJAR        :: !Text+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'HadoopJARStepConfig' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'hjscArgs'+--+-- * 'hjscMainClass'+--+-- * 'hjscProperties'+--+-- * 'hjscJAR'+hadoopJARStepConfig+    :: Text -- ^ 'hjscJAR'+    -> HadoopJARStepConfig+hadoopJARStepConfig pJAR_ =+    HadoopJARStepConfig'+    { _hjscArgs = Nothing+    , _hjscMainClass = Nothing+    , _hjscProperties = Nothing+    , _hjscJAR = pJAR_+    }++-- | A list of command line arguments passed to the JAR file\'s main function+-- when executed.+hjscArgs :: Lens' HadoopJARStepConfig [Text]+hjscArgs = lens _hjscArgs (\ s a -> s{_hjscArgs = a}) . _Default . _Coerce;++-- | The name of the main class in the specified Java file. If not specified,+-- the JAR file should specify a Main-Class in its manifest file.+hjscMainClass :: Lens' HadoopJARStepConfig (Maybe Text)+hjscMainClass = lens _hjscMainClass (\ s a -> s{_hjscMainClass = a});++-- | A list of Java properties that are set when the step runs. You can use+-- these properties to pass key value pairs to your main function.+hjscProperties :: Lens' HadoopJARStepConfig [KeyValue]+hjscProperties = lens _hjscProperties (\ s a -> s{_hjscProperties = a}) . _Default . _Coerce;++-- | A path to a JAR file run during the step.+hjscJAR :: Lens' HadoopJARStepConfig Text+hjscJAR = lens _hjscJAR (\ s a -> s{_hjscJAR = a});++instance ToJSON HadoopJARStepConfig where+        toJSON HadoopJARStepConfig'{..}+          = object+              ["Args" .= _hjscArgs, "MainClass" .= _hjscMainClass,+               "Properties" .= _hjscProperties, "Jar" .= _hjscJAR]++-- | A cluster step consisting of a JAR file whose main function will be+-- executed. The main function submits a job for Hadoop to execute and+-- waits for the job to finish or fail.+--+-- /See:/ 'hadoopStepConfig' smart constructor.+data HadoopStepConfig = HadoopStepConfig'+    { _hscArgs       :: !(Maybe [Text])+    , _hscJAR        :: !(Maybe Text)+    , _hscMainClass  :: !(Maybe Text)+    , _hscProperties :: !(Maybe (Map Text Text))+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'HadoopStepConfig' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'hscArgs'+--+-- * 'hscJAR'+--+-- * 'hscMainClass'+--+-- * 'hscProperties'+hadoopStepConfig+    :: HadoopStepConfig+hadoopStepConfig =+    HadoopStepConfig'+    { _hscArgs = Nothing+    , _hscJAR = Nothing+    , _hscMainClass = Nothing+    , _hscProperties = Nothing+    }++-- | The list of command line arguments to pass to the JAR file\'s main+-- function for execution.+hscArgs :: Lens' HadoopStepConfig [Text]+hscArgs = lens _hscArgs (\ s a -> s{_hscArgs = a}) . _Default . _Coerce;++-- | The path to the JAR file that runs during the step.+hscJAR :: Lens' HadoopStepConfig (Maybe Text)+hscJAR = lens _hscJAR (\ s a -> s{_hscJAR = a});++-- | The name of the main class in the specified Java file. If not specified,+-- the JAR file should specify a main class in its manifest file.+hscMainClass :: Lens' HadoopStepConfig (Maybe Text)+hscMainClass = lens _hscMainClass (\ s a -> s{_hscMainClass = a});++-- | The list of Java properties that are set when the step runs. You can use+-- these properties to pass key value pairs to your main function.+hscProperties :: Lens' HadoopStepConfig (HashMap Text Text)+hscProperties = lens _hscProperties (\ s a -> s{_hscProperties = a}) . _Default . _Map;++instance FromJSON HadoopStepConfig where+        parseJSON+          = withObject "HadoopStepConfig"+              (\ x ->+                 HadoopStepConfig' <$>+                   (x .:? "Args" .!= mempty) <*> (x .:? "Jar") <*>+                     (x .:? "MainClass")+                     <*> (x .:? "Properties" .!= mempty))++-- | Represents an EC2 instance provisioned as part of cluster.+--+-- /See:/ 'instance'' smart constructor.+data Instance = Instance'+    { _iStatus           :: !(Maybe InstanceStatus)+    , _iPublicDNSName    :: !(Maybe Text)+    , _iEC2InstanceId    :: !(Maybe Text)+    , _iPrivateIPAddress :: !(Maybe Text)+    , _iId               :: !(Maybe Text)+    , _iPrivateDNSName   :: !(Maybe Text)+    , _iPublicIPAddress  :: !(Maybe Text)+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'Instance' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'iStatus'+--+-- * 'iPublicDNSName'+--+-- * 'iEC2InstanceId'+--+-- * 'iPrivateIPAddress'+--+-- * 'iId'+--+-- * 'iPrivateDNSName'+--+-- * 'iPublicIPAddress'+instance'+    :: Instance+instance' =+    Instance'+    { _iStatus = Nothing+    , _iPublicDNSName = Nothing+    , _iEC2InstanceId = Nothing+    , _iPrivateIPAddress = Nothing+    , _iId = Nothing+    , _iPrivateDNSName = Nothing+    , _iPublicIPAddress = Nothing+    }++-- | The current status of the instance.+iStatus :: Lens' Instance (Maybe InstanceStatus)+iStatus = lens _iStatus (\ s a -> s{_iStatus = a});++-- | The public DNS name of the instance.+iPublicDNSName :: Lens' Instance (Maybe Text)+iPublicDNSName = lens _iPublicDNSName (\ s a -> s{_iPublicDNSName = a});++-- | The unique identifier of the instance in Amazon EC2.+iEC2InstanceId :: Lens' Instance (Maybe Text)+iEC2InstanceId = lens _iEC2InstanceId (\ s a -> s{_iEC2InstanceId = a});++-- | The private IP address of the instance.+iPrivateIPAddress :: Lens' Instance (Maybe Text)+iPrivateIPAddress = lens _iPrivateIPAddress (\ s a -> s{_iPrivateIPAddress = a});++-- | The unique identifier for the instance in Amazon EMR.+iId :: Lens' Instance (Maybe Text)+iId = lens _iId (\ s a -> s{_iId = a});++-- | The private DNS name of the instance.+iPrivateDNSName :: Lens' Instance (Maybe Text)+iPrivateDNSName = lens _iPrivateDNSName (\ s a -> s{_iPrivateDNSName = a});++-- | The public IP address of the instance.+iPublicIPAddress :: Lens' Instance (Maybe Text)+iPublicIPAddress = lens _iPublicIPAddress (\ s a -> s{_iPublicIPAddress = a});++instance FromJSON Instance where+        parseJSON+          = withObject "Instance"+              (\ x ->+                 Instance' <$>+                   (x .:? "Status") <*> (x .:? "PublicDnsName") <*>+                     (x .:? "Ec2InstanceId")+                     <*> (x .:? "PrivateIpAddress")+                     <*> (x .:? "Id")+                     <*> (x .:? "PrivateDnsName")+                     <*> (x .:? "PublicIpAddress"))++-- | This entity represents an instance group, which is a group of instances+-- that have common purpose. For example, CORE instance group is used for+-- HDFS.+--+-- /See:/ 'instanceGroup' smart constructor.+data InstanceGroup = InstanceGroup'+    { _igStatus                 :: !(Maybe InstanceGroupStatus)+    , _igBidPrice               :: !(Maybe Text)+    , _igRequestedInstanceCount :: !(Maybe Int)+    , _igRunningInstanceCount   :: !(Maybe Int)+    , _igConfigurations         :: !(Maybe [Configuration])+    , _igInstanceGroupType      :: !(Maybe InstanceGroupType)+    , _igInstanceType           :: !(Maybe Text)+    , _igMarket                 :: !(Maybe MarketType)+    , _igName                   :: !(Maybe Text)+    , _igId                     :: !(Maybe Text)+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'InstanceGroup' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'igStatus'+--+-- * 'igBidPrice'+--+-- * 'igRequestedInstanceCount'+--+-- * 'igRunningInstanceCount'+--+-- * 'igConfigurations'+--+-- * 'igInstanceGroupType'+--+-- * 'igInstanceType'+--+-- * 'igMarket'+--+-- * 'igName'+--+-- * 'igId'+instanceGroup+    :: InstanceGroup+instanceGroup =+    InstanceGroup'+    { _igStatus = Nothing+    , _igBidPrice = Nothing+    , _igRequestedInstanceCount = Nothing+    , _igRunningInstanceCount = Nothing+    , _igConfigurations = Nothing+    , _igInstanceGroupType = Nothing+    , _igInstanceType = Nothing+    , _igMarket = Nothing+    , _igName = Nothing+    , _igId = Nothing+    }++-- | The current status of the instance group.+igStatus :: Lens' InstanceGroup (Maybe InstanceGroupStatus)+igStatus = lens _igStatus (\ s a -> s{_igStatus = a});++-- | The bid price for each EC2 instance in the instance group when launching+-- nodes as Spot Instances, expressed in USD.+igBidPrice :: Lens' InstanceGroup (Maybe Text)+igBidPrice = lens _igBidPrice (\ s a -> s{_igBidPrice = a});++-- | The target number of instances for the instance group.+igRequestedInstanceCount :: Lens' InstanceGroup (Maybe Int)+igRequestedInstanceCount = lens _igRequestedInstanceCount (\ s a -> s{_igRequestedInstanceCount = a});++-- | The number of instances currently running in this instance group.+igRunningInstanceCount :: Lens' InstanceGroup (Maybe Int)+igRunningInstanceCount = lens _igRunningInstanceCount (\ s a -> s{_igRunningInstanceCount = a});++-- | Amazon EMR releases 4.x or later.+--+-- The list of configurations supplied for an EMR cluster instance group.+-- You can specify a separate configuration for each instance group+-- (master, core, and task).+igConfigurations :: Lens' InstanceGroup [Configuration]+igConfigurations = lens _igConfigurations (\ s a -> s{_igConfigurations = a}) . _Default . _Coerce;++-- | The type of the instance group. Valid values are MASTER, CORE or TASK.+igInstanceGroupType :: Lens' InstanceGroup (Maybe InstanceGroupType)+igInstanceGroupType = lens _igInstanceGroupType (\ s a -> s{_igInstanceGroupType = a});++-- | The EC2 instance type for all instances in the instance group.+igInstanceType :: Lens' InstanceGroup (Maybe Text)+igInstanceType = lens _igInstanceType (\ s a -> s{_igInstanceType = a});++-- | The marketplace to provision instances for this group. Valid values are+-- ON_DEMAND or SPOT.+igMarket :: Lens' InstanceGroup (Maybe MarketType)+igMarket = lens _igMarket (\ s a -> s{_igMarket = a});++-- | The name of the instance group.+igName :: Lens' InstanceGroup (Maybe Text)+igName = lens _igName (\ s a -> s{_igName = a});++-- | The identifier of the instance group.+igId :: Lens' InstanceGroup (Maybe Text)+igId = lens _igId (\ s a -> s{_igId = a});++instance FromJSON InstanceGroup where+        parseJSON+          = withObject "InstanceGroup"+              (\ x ->+                 InstanceGroup' <$>+                   (x .:? "Status") <*> (x .:? "BidPrice") <*>+                     (x .:? "RequestedInstanceCount")+                     <*> (x .:? "RunningInstanceCount")+                     <*> (x .:? "Configurations" .!= mempty)+                     <*> (x .:? "InstanceGroupType")+                     <*> (x .:? "InstanceType")+                     <*> (x .:? "Market")+                     <*> (x .:? "Name")+                     <*> (x .:? "Id"))++-- | Configuration defining a new instance group.+--+-- /See:/ 'instanceGroupConfig' smart constructor.+data InstanceGroupConfig = InstanceGroupConfig'+    { _igcBidPrice       :: !(Maybe Text)+    , _igcConfigurations :: !(Maybe [Configuration])+    , _igcMarket         :: !(Maybe MarketType)+    , _igcName           :: !(Maybe Text)+    , _igcInstanceRole   :: !InstanceRoleType+    , _igcInstanceType   :: !Text+    , _igcInstanceCount  :: !Int+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'InstanceGroupConfig' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'igcBidPrice'+--+-- * 'igcConfigurations'+--+-- * 'igcMarket'+--+-- * 'igcName'+--+-- * 'igcInstanceRole'+--+-- * 'igcInstanceType'+--+-- * 'igcInstanceCount'+instanceGroupConfig+    :: InstanceRoleType -- ^ 'igcInstanceRole'+    -> Text -- ^ 'igcInstanceType'+    -> Int -- ^ 'igcInstanceCount'+    -> InstanceGroupConfig+instanceGroupConfig pInstanceRole_ pInstanceType_ pInstanceCount_ =+    InstanceGroupConfig'+    { _igcBidPrice = Nothing+    , _igcConfigurations = Nothing+    , _igcMarket = Nothing+    , _igcName = Nothing+    , _igcInstanceRole = pInstanceRole_+    , _igcInstanceType = pInstanceType_+    , _igcInstanceCount = pInstanceCount_+    }++-- | Bid price for each Amazon EC2 instance in the instance group when+-- launching nodes as Spot Instances, expressed in USD.+igcBidPrice :: Lens' InstanceGroupConfig (Maybe Text)+igcBidPrice = lens _igcBidPrice (\ s a -> s{_igcBidPrice = a});++-- | Amazon EMR releases 4.x or later.+--+-- The list of configurations supplied for an EMR cluster instance group.+-- You can specify a separate configuration for each instance group+-- (master, core, and task).+igcConfigurations :: Lens' InstanceGroupConfig [Configuration]+igcConfigurations = lens _igcConfigurations (\ s a -> s{_igcConfigurations = a}) . _Default . _Coerce;++-- | Market type of the Amazon EC2 instances used to create a cluster node.+igcMarket :: Lens' InstanceGroupConfig (Maybe MarketType)+igcMarket = lens _igcMarket (\ s a -> s{_igcMarket = a});++-- | Friendly name given to the instance group.+igcName :: Lens' InstanceGroupConfig (Maybe Text)+igcName = lens _igcName (\ s a -> s{_igcName = a});++-- | The role of the instance group in the cluster.+igcInstanceRole :: Lens' InstanceGroupConfig InstanceRoleType+igcInstanceRole = lens _igcInstanceRole (\ s a -> s{_igcInstanceRole = a});++-- | The Amazon EC2 instance type for all instances in the instance group.+igcInstanceType :: Lens' InstanceGroupConfig Text+igcInstanceType = lens _igcInstanceType (\ s a -> s{_igcInstanceType = a});++-- | Target number of instances for the instance group.+igcInstanceCount :: Lens' InstanceGroupConfig Int+igcInstanceCount = lens _igcInstanceCount (\ s a -> s{_igcInstanceCount = a});++instance ToJSON InstanceGroupConfig where+        toJSON InstanceGroupConfig'{..}+          = object+              ["BidPrice" .= _igcBidPrice,+               "Configurations" .= _igcConfigurations,+               "Market" .= _igcMarket, "Name" .= _igcName,+               "InstanceRole" .= _igcInstanceRole,+               "InstanceType" .= _igcInstanceType,+               "InstanceCount" .= _igcInstanceCount]++-- | Modify an instance group size.+--+-- /See:/ 'instanceGroupModifyConfig' smart constructor.+data InstanceGroupModifyConfig = InstanceGroupModifyConfig'+    { _igmcInstanceCount             :: !(Maybe Int)+    , _igmcEC2InstanceIdsToTerminate :: !(Maybe [Text])+    , _igmcInstanceGroupId           :: !Text+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'InstanceGroupModifyConfig' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'igmcInstanceCount'+--+-- * 'igmcEC2InstanceIdsToTerminate'+--+-- * 'igmcInstanceGroupId'+instanceGroupModifyConfig+    :: Text -- ^ 'igmcInstanceGroupId'+    -> InstanceGroupModifyConfig+instanceGroupModifyConfig pInstanceGroupId_ =+    InstanceGroupModifyConfig'+    { _igmcInstanceCount = Nothing+    , _igmcEC2InstanceIdsToTerminate = Nothing+    , _igmcInstanceGroupId = pInstanceGroupId_+    }++-- | Target size for the instance group.+igmcInstanceCount :: Lens' InstanceGroupModifyConfig (Maybe Int)+igmcInstanceCount = lens _igmcInstanceCount (\ s a -> s{_igmcInstanceCount = a});++-- | The EC2 InstanceIds to terminate. For advanced users only. Once you+-- terminate the instances, the instance group will not return to its+-- original requested size.+igmcEC2InstanceIdsToTerminate :: Lens' InstanceGroupModifyConfig [Text]+igmcEC2InstanceIdsToTerminate = lens _igmcEC2InstanceIdsToTerminate (\ s a -> s{_igmcEC2InstanceIdsToTerminate = a}) . _Default . _Coerce;++-- | Unique ID of the instance group to expand or shrink.+igmcInstanceGroupId :: Lens' InstanceGroupModifyConfig Text+igmcInstanceGroupId = lens _igmcInstanceGroupId (\ s a -> s{_igmcInstanceGroupId = a});++instance ToJSON InstanceGroupModifyConfig where+        toJSON InstanceGroupModifyConfig'{..}+          = object+              ["InstanceCount" .= _igmcInstanceCount,+               "EC2InstanceIdsToTerminate" .=+                 _igmcEC2InstanceIdsToTerminate,+               "InstanceGroupId" .= _igmcInstanceGroupId]++-- | The status change reason details for the instance group.+--+-- /See:/ 'instanceGroupStateChangeReason' smart constructor.+data InstanceGroupStateChangeReason = InstanceGroupStateChangeReason'+    { _igscrCode    :: !(Maybe InstanceGroupStateChangeReasonCode)+    , _igscrMessage :: !(Maybe Text)+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'InstanceGroupStateChangeReason' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'igscrCode'+--+-- * 'igscrMessage'+instanceGroupStateChangeReason+    :: InstanceGroupStateChangeReason+instanceGroupStateChangeReason =+    InstanceGroupStateChangeReason'+    { _igscrCode = Nothing+    , _igscrMessage = Nothing+    }++-- | The programmable code for the state change reason.+igscrCode :: Lens' InstanceGroupStateChangeReason (Maybe InstanceGroupStateChangeReasonCode)+igscrCode = lens _igscrCode (\ s a -> s{_igscrCode = a});++-- | The status change reason description.+igscrMessage :: Lens' InstanceGroupStateChangeReason (Maybe Text)+igscrMessage = lens _igscrMessage (\ s a -> s{_igscrMessage = a});++instance FromJSON InstanceGroupStateChangeReason+         where+        parseJSON+          = withObject "InstanceGroupStateChangeReason"+              (\ x ->+                 InstanceGroupStateChangeReason' <$>+                   (x .:? "Code") <*> (x .:? "Message"))++-- | The details of the instance group status.+--+-- /See:/ 'instanceGroupStatus' smart constructor.+data InstanceGroupStatus = InstanceGroupStatus'+    { _igsState             :: !(Maybe InstanceGroupState)+    , _igsStateChangeReason :: !(Maybe InstanceGroupStateChangeReason)+    , _igsTimeline          :: !(Maybe InstanceGroupTimeline)+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'InstanceGroupStatus' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'igsState'+--+-- * 'igsStateChangeReason'+--+-- * 'igsTimeline'+instanceGroupStatus+    :: InstanceGroupStatus+instanceGroupStatus =+    InstanceGroupStatus'+    { _igsState = Nothing+    , _igsStateChangeReason = Nothing+    , _igsTimeline = Nothing+    }++-- | The current state of the instance group.+igsState :: Lens' InstanceGroupStatus (Maybe InstanceGroupState)+igsState = lens _igsState (\ s a -> s{_igsState = a});++-- | The status change reason details for the instance group.+igsStateChangeReason :: Lens' InstanceGroupStatus (Maybe InstanceGroupStateChangeReason)+igsStateChangeReason = lens _igsStateChangeReason (\ s a -> s{_igsStateChangeReason = a});++-- | The timeline of the instance group status over time.+igsTimeline :: Lens' InstanceGroupStatus (Maybe InstanceGroupTimeline)+igsTimeline = lens _igsTimeline (\ s a -> s{_igsTimeline = a});++instance FromJSON InstanceGroupStatus where+        parseJSON+          = withObject "InstanceGroupStatus"+              (\ x ->+                 InstanceGroupStatus' <$>+                   (x .:? "State") <*> (x .:? "StateChangeReason") <*>+                     (x .:? "Timeline"))++-- | The timeline of the instance group lifecycle.+--+-- /See:/ 'instanceGroupTimeline' smart constructor.+data InstanceGroupTimeline = InstanceGroupTimeline'+    { _igtReadyDateTime    :: !(Maybe POSIX)+    , _igtCreationDateTime :: !(Maybe POSIX)+    , _igtEndDateTime      :: !(Maybe POSIX)+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'InstanceGroupTimeline' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'igtReadyDateTime'+--+-- * 'igtCreationDateTime'+--+-- * 'igtEndDateTime'+instanceGroupTimeline+    :: InstanceGroupTimeline+instanceGroupTimeline =+    InstanceGroupTimeline'+    { _igtReadyDateTime = Nothing+    , _igtCreationDateTime = Nothing+    , _igtEndDateTime = Nothing+    }++-- | The date and time when the instance group became ready to perform tasks.+igtReadyDateTime :: Lens' InstanceGroupTimeline (Maybe UTCTime)+igtReadyDateTime = lens _igtReadyDateTime (\ s a -> s{_igtReadyDateTime = a}) . mapping _Time;++-- | The creation date and time of the instance group.+igtCreationDateTime :: Lens' InstanceGroupTimeline (Maybe UTCTime)+igtCreationDateTime = lens _igtCreationDateTime (\ s a -> s{_igtCreationDateTime = a}) . mapping _Time;++-- | The date and time when the instance group terminated.+igtEndDateTime :: Lens' InstanceGroupTimeline (Maybe UTCTime)+igtEndDateTime = lens _igtEndDateTime (\ s a -> s{_igtEndDateTime = a}) . mapping _Time;++instance FromJSON InstanceGroupTimeline where+        parseJSON+          = withObject "InstanceGroupTimeline"+              (\ x ->+                 InstanceGroupTimeline' <$>+                   (x .:? "ReadyDateTime") <*>+                     (x .:? "CreationDateTime")+                     <*> (x .:? "EndDateTime"))++-- | The details of the status change reason for the instance.+--+-- /See:/ 'instanceStateChangeReason' smart constructor.+data InstanceStateChangeReason = InstanceStateChangeReason'+    { _iscrCode    :: !(Maybe InstanceStateChangeReasonCode)+    , _iscrMessage :: !(Maybe Text)+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'InstanceStateChangeReason' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'iscrCode'+--+-- * 'iscrMessage'+instanceStateChangeReason+    :: InstanceStateChangeReason+instanceStateChangeReason =+    InstanceStateChangeReason'+    { _iscrCode = Nothing+    , _iscrMessage = Nothing+    }++-- | The programmable code for the state change reason.+iscrCode :: Lens' InstanceStateChangeReason (Maybe InstanceStateChangeReasonCode)+iscrCode = lens _iscrCode (\ s a -> s{_iscrCode = a});++-- | The status change reason description.+iscrMessage :: Lens' InstanceStateChangeReason (Maybe Text)+iscrMessage = lens _iscrMessage (\ s a -> s{_iscrMessage = a});++instance FromJSON InstanceStateChangeReason where+        parseJSON+          = withObject "InstanceStateChangeReason"+              (\ x ->+                 InstanceStateChangeReason' <$>+                   (x .:? "Code") <*> (x .:? "Message"))++-- | The instance status details.+--+-- /See:/ 'instanceStatus' smart constructor.+data InstanceStatus = InstanceStatus'+    { _isState             :: !(Maybe InstanceState)+    , _isStateChangeReason :: !(Maybe InstanceStateChangeReason)+    , _isTimeline          :: !(Maybe InstanceTimeline)+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'InstanceStatus' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'isState'+--+-- * 'isStateChangeReason'+--+-- * 'isTimeline'+instanceStatus+    :: InstanceStatus+instanceStatus =+    InstanceStatus'+    { _isState = Nothing+    , _isStateChangeReason = Nothing+    , _isTimeline = Nothing+    }++-- | The current state of the instance.+isState :: Lens' InstanceStatus (Maybe InstanceState)+isState = lens _isState (\ s a -> s{_isState = a});++-- | The details of the status change reason for the instance.+isStateChangeReason :: Lens' InstanceStatus (Maybe InstanceStateChangeReason)+isStateChangeReason = lens _isStateChangeReason (\ s a -> s{_isStateChangeReason = a});++-- | The timeline of the instance status over time.+isTimeline :: Lens' InstanceStatus (Maybe InstanceTimeline)+isTimeline = lens _isTimeline (\ s a -> s{_isTimeline = a});++instance FromJSON InstanceStatus where+        parseJSON+          = withObject "InstanceStatus"+              (\ x ->+                 InstanceStatus' <$>+                   (x .:? "State") <*> (x .:? "StateChangeReason") <*>+                     (x .:? "Timeline"))++-- | The timeline of the instance lifecycle.+--+-- /See:/ 'instanceTimeline' smart constructor.+data InstanceTimeline = InstanceTimeline'+    { _itReadyDateTime    :: !(Maybe POSIX)+    , _itCreationDateTime :: !(Maybe POSIX)+    , _itEndDateTime      :: !(Maybe POSIX)+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'InstanceTimeline' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'itReadyDateTime'+--+-- * 'itCreationDateTime'+--+-- * 'itEndDateTime'+instanceTimeline+    :: InstanceTimeline+instanceTimeline =+    InstanceTimeline'+    { _itReadyDateTime = Nothing+    , _itCreationDateTime = Nothing+    , _itEndDateTime = Nothing+    }++-- | The date and time when the instance was ready to perform tasks.+itReadyDateTime :: Lens' InstanceTimeline (Maybe UTCTime)+itReadyDateTime = lens _itReadyDateTime (\ s a -> s{_itReadyDateTime = a}) . mapping _Time;++-- | The creation date and time of the instance.+itCreationDateTime :: Lens' InstanceTimeline (Maybe UTCTime)+itCreationDateTime = lens _itCreationDateTime (\ s a -> s{_itCreationDateTime = a}) . mapping _Time;++-- | The date and time when the instance was terminated.+itEndDateTime :: Lens' InstanceTimeline (Maybe UTCTime)+itEndDateTime = lens _itEndDateTime (\ s a -> s{_itEndDateTime = a}) . mapping _Time;++instance FromJSON InstanceTimeline where+        parseJSON+          = withObject "InstanceTimeline"+              (\ x ->+                 InstanceTimeline' <$>+                   (x .:? "ReadyDateTime") <*>+                     (x .:? "CreationDateTime")+                     <*> (x .:? "EndDateTime"))++-- | A description of the Amazon EC2 instance running the job flow. A valid+-- JobFlowInstancesConfig must contain at least InstanceGroups, which is+-- the recommended configuration. However, a valid alternative is to have+-- MasterInstanceType, SlaveInstanceType, and InstanceCount (all three must+-- be present).+--+-- /See:/ 'jobFlowInstancesConfig' smart constructor.+data JobFlowInstancesConfig = JobFlowInstancesConfig'+    { _jficSlaveInstanceType              :: !(Maybe Text)+    , _jficEC2KeyName                     :: !(Maybe Text)+    , _jficInstanceCount                  :: !(Maybe Int)+    , _jficEmrManagedSlaveSecurityGroup   :: !(Maybe Text)+    , _jficAdditionalSlaveSecurityGroups  :: !(Maybe [Text])+    , _jficHadoopVersion                  :: !(Maybe Text)+    , _jficAdditionalMasterSecurityGroups :: !(Maybe [Text])+    , _jficEmrManagedMasterSecurityGroup  :: !(Maybe Text)+    , _jficEC2SubnetId                    :: !(Maybe Text)+    , _jficMasterInstanceType             :: !(Maybe Text)+    , _jficInstanceGroups                 :: !(Maybe [InstanceGroupConfig])+    , _jficKeepJobFlowAliveWhenNoSteps    :: !(Maybe Bool)+    , _jficTerminationProtected           :: !(Maybe Bool)+    , _jficPlacement                      :: !(Maybe PlacementType)+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'JobFlowInstancesConfig' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'jficSlaveInstanceType'+--+-- * 'jficEC2KeyName'+--+-- * 'jficInstanceCount'+--+-- * 'jficEmrManagedSlaveSecurityGroup'+--+-- * 'jficAdditionalSlaveSecurityGroups'+--+-- * 'jficHadoopVersion'+--+-- * 'jficAdditionalMasterSecurityGroups'+--+-- * 'jficEmrManagedMasterSecurityGroup'+--+-- * 'jficEC2SubnetId'+--+-- * 'jficMasterInstanceType'+--+-- * 'jficInstanceGroups'+--+-- * 'jficKeepJobFlowAliveWhenNoSteps'+--+-- * 'jficTerminationProtected'+--+-- * 'jficPlacement'+jobFlowInstancesConfig+    :: JobFlowInstancesConfig+jobFlowInstancesConfig =+    JobFlowInstancesConfig'+    { _jficSlaveInstanceType = Nothing+    , _jficEC2KeyName = Nothing+    , _jficInstanceCount = Nothing+    , _jficEmrManagedSlaveSecurityGroup = Nothing+    , _jficAdditionalSlaveSecurityGroups = Nothing+    , _jficHadoopVersion = Nothing+    , _jficAdditionalMasterSecurityGroups = Nothing+    , _jficEmrManagedMasterSecurityGroup = Nothing+    , _jficEC2SubnetId = Nothing+    , _jficMasterInstanceType = Nothing+    , _jficInstanceGroups = Nothing+    , _jficKeepJobFlowAliveWhenNoSteps = Nothing+    , _jficTerminationProtected = Nothing+    , _jficPlacement = Nothing+    }++-- | The EC2 instance type of the slave nodes.+jficSlaveInstanceType :: Lens' JobFlowInstancesConfig (Maybe Text)+jficSlaveInstanceType = lens _jficSlaveInstanceType (\ s a -> s{_jficSlaveInstanceType = a});++-- | The name of the Amazon EC2 key pair that can be used to ssh to the+-- master node as the user called \"hadoop.\"+jficEC2KeyName :: Lens' JobFlowInstancesConfig (Maybe Text)+jficEC2KeyName = lens _jficEC2KeyName (\ s a -> s{_jficEC2KeyName = a});++-- | The number of Amazon EC2 instances used to execute the job flow.+jficInstanceCount :: Lens' JobFlowInstancesConfig (Maybe Int)+jficInstanceCount = lens _jficInstanceCount (\ s a -> s{_jficInstanceCount = a});++-- | The identifier of the Amazon EC2 security group (managed by Amazon+-- ElasticMapReduce) for the slave nodes.+jficEmrManagedSlaveSecurityGroup :: Lens' JobFlowInstancesConfig (Maybe Text)+jficEmrManagedSlaveSecurityGroup = lens _jficEmrManagedSlaveSecurityGroup (\ s a -> s{_jficEmrManagedSlaveSecurityGroup = a});++-- | A list of additional Amazon EC2 security group IDs for the slave nodes.+jficAdditionalSlaveSecurityGroups :: Lens' JobFlowInstancesConfig [Text]+jficAdditionalSlaveSecurityGroups = lens _jficAdditionalSlaveSecurityGroups (\ s a -> s{_jficAdditionalSlaveSecurityGroups = a}) . _Default . _Coerce;++-- | The Hadoop version for the job flow. Valid inputs are \"0.18\"+-- (deprecated), \"0.20\" (deprecated), \"0.20.205\" (deprecated),+-- \"1.0.3\", \"2.2.0\", or \"2.4.0\". If you do not set this value, the+-- default of 0.18 is used, unless the AmiVersion parameter is set in the+-- RunJobFlow call, in which case the default version of Hadoop for that+-- AMI version is used.+jficHadoopVersion :: Lens' JobFlowInstancesConfig (Maybe Text)+jficHadoopVersion = lens _jficHadoopVersion (\ s a -> s{_jficHadoopVersion = a});++-- | A list of additional Amazon EC2 security group IDs for the master node.+jficAdditionalMasterSecurityGroups :: Lens' JobFlowInstancesConfig [Text]+jficAdditionalMasterSecurityGroups = lens _jficAdditionalMasterSecurityGroups (\ s a -> s{_jficAdditionalMasterSecurityGroups = a}) . _Default . _Coerce;++-- | The identifier of the Amazon EC2 security group (managed by Amazon+-- ElasticMapReduce) for the master node.+jficEmrManagedMasterSecurityGroup :: Lens' JobFlowInstancesConfig (Maybe Text)+jficEmrManagedMasterSecurityGroup = lens _jficEmrManagedMasterSecurityGroup (\ s a -> s{_jficEmrManagedMasterSecurityGroup = a});++-- | To launch the job flow in Amazon Virtual Private Cloud (Amazon VPC), set+-- this parameter to the identifier of the Amazon VPC subnet where you want+-- the job flow to launch. If you do not specify this value, the job flow+-- is launched in the normal Amazon Web Services cloud, outside of an+-- Amazon VPC.+--+-- Amazon VPC currently does not support cluster compute quadruple extra+-- large (cc1.4xlarge) instances. Thus you cannot specify the cc1.4xlarge+-- instance type for nodes of a job flow launched in a Amazon VPC.+jficEC2SubnetId :: Lens' JobFlowInstancesConfig (Maybe Text)+jficEC2SubnetId = lens _jficEC2SubnetId (\ s a -> s{_jficEC2SubnetId = a});++-- | The EC2 instance type of the master node.+jficMasterInstanceType :: Lens' JobFlowInstancesConfig (Maybe Text)+jficMasterInstanceType = lens _jficMasterInstanceType (\ s a -> s{_jficMasterInstanceType = a});++-- | Configuration for the job flow\'s instance groups.+jficInstanceGroups :: Lens' JobFlowInstancesConfig [InstanceGroupConfig]+jficInstanceGroups = lens _jficInstanceGroups (\ s a -> s{_jficInstanceGroups = a}) . _Default . _Coerce;++-- | Specifies whether the job flow should be kept alive after completing all+-- steps.+jficKeepJobFlowAliveWhenNoSteps :: Lens' JobFlowInstancesConfig (Maybe Bool)+jficKeepJobFlowAliveWhenNoSteps = lens _jficKeepJobFlowAliveWhenNoSteps (\ s a -> s{_jficKeepJobFlowAliveWhenNoSteps = a});++-- | Specifies whether to lock the job flow to prevent the Amazon EC2+-- instances from being terminated by API call, user intervention, or in+-- the event of a job flow error.+jficTerminationProtected :: Lens' JobFlowInstancesConfig (Maybe Bool)+jficTerminationProtected = lens _jficTerminationProtected (\ s a -> s{_jficTerminationProtected = a});++-- | The Availability Zone the job flow will run in.+jficPlacement :: Lens' JobFlowInstancesConfig (Maybe PlacementType)+jficPlacement = lens _jficPlacement (\ s a -> s{_jficPlacement = a});++instance ToJSON JobFlowInstancesConfig where+        toJSON JobFlowInstancesConfig'{..}+          = object+              ["SlaveInstanceType" .= _jficSlaveInstanceType,+               "Ec2KeyName" .= _jficEC2KeyName,+               "InstanceCount" .= _jficInstanceCount,+               "EmrManagedSlaveSecurityGroup" .=+                 _jficEmrManagedSlaveSecurityGroup,+               "AdditionalSlaveSecurityGroups" .=+                 _jficAdditionalSlaveSecurityGroups,+               "HadoopVersion" .= _jficHadoopVersion,+               "AdditionalMasterSecurityGroups" .=+                 _jficAdditionalMasterSecurityGroups,+               "EmrManagedMasterSecurityGroup" .=+                 _jficEmrManagedMasterSecurityGroup,+               "Ec2SubnetId" .= _jficEC2SubnetId,+               "MasterInstanceType" .= _jficMasterInstanceType,+               "InstanceGroups" .= _jficInstanceGroups,+               "KeepJobFlowAliveWhenNoSteps" .=+                 _jficKeepJobFlowAliveWhenNoSteps,+               "TerminationProtected" .= _jficTerminationProtected,+               "Placement" .= _jficPlacement]++-- | A key value pair.+--+-- /See:/ 'keyValue' smart constructor.+data KeyValue = KeyValue'+    { _kvValue :: !(Maybe Text)+    , _kvKey   :: !(Maybe Text)+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'KeyValue' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'kvValue'+--+-- * 'kvKey'+keyValue+    :: KeyValue+keyValue =+    KeyValue'+    { _kvValue = Nothing+    , _kvKey = Nothing+    }++-- | The value part of the identified key.+kvValue :: Lens' KeyValue (Maybe Text)+kvValue = lens _kvValue (\ s a -> s{_kvValue = a});++-- | The unique identifier of a key value pair.+kvKey :: Lens' KeyValue (Maybe Text)+kvKey = lens _kvKey (\ s a -> s{_kvKey = a});++instance ToJSON KeyValue where+        toJSON KeyValue'{..}+          = object ["Value" .= _kvValue, "Key" .= _kvKey]++-- | The Amazon EC2 location for the job flow.+--+-- /See:/ 'placementType' smart constructor.+newtype PlacementType = PlacementType'+    { _ptAvailabilityZone :: Text+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'PlacementType' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ptAvailabilityZone'+placementType+    :: Text -- ^ 'ptAvailabilityZone'+    -> PlacementType+placementType pAvailabilityZone_ =+    PlacementType'+    { _ptAvailabilityZone = pAvailabilityZone_+    }++-- | The Amazon EC2 Availability Zone for the job flow.+ptAvailabilityZone :: Lens' PlacementType Text+ptAvailabilityZone = lens _ptAvailabilityZone (\ s a -> s{_ptAvailabilityZone = a});++instance ToJSON PlacementType where+        toJSON PlacementType'{..}+          = object ["AvailabilityZone" .= _ptAvailabilityZone]++-- | Configuration of the script to run during a bootstrap action.+--+-- /See:/ 'scriptBootstrapActionConfig' smart constructor.+data ScriptBootstrapActionConfig = ScriptBootstrapActionConfig'+    { _sbacArgs :: !(Maybe [Text])+    , _sbacPath :: !Text+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'ScriptBootstrapActionConfig' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'sbacArgs'+--+-- * 'sbacPath'+scriptBootstrapActionConfig+    :: Text -- ^ 'sbacPath'+    -> ScriptBootstrapActionConfig+scriptBootstrapActionConfig pPath_ =+    ScriptBootstrapActionConfig'+    { _sbacArgs = Nothing+    , _sbacPath = pPath_+    }++-- | A list of command line arguments to pass to the bootstrap action script.+sbacArgs :: Lens' ScriptBootstrapActionConfig [Text]+sbacArgs = lens _sbacArgs (\ s a -> s{_sbacArgs = a}) . _Default . _Coerce;++-- | Location of the script to run during a bootstrap action. Can be either a+-- location in Amazon S3 or on a local file system.+sbacPath :: Lens' ScriptBootstrapActionConfig Text+sbacPath = lens _sbacPath (\ s a -> s{_sbacPath = a});++instance ToJSON ScriptBootstrapActionConfig where+        toJSON ScriptBootstrapActionConfig'{..}+          = object ["Args" .= _sbacArgs, "Path" .= _sbacPath]++-- | This represents a step in a cluster.+--+-- /See:/ 'step' smart constructor.+data Step = Step'+    { _sStatus          :: !(Maybe StepStatus)+    , _sActionOnFailure :: !(Maybe ActionOnFailure)+    , _sConfig          :: !(Maybe HadoopStepConfig)+    , _sName            :: !(Maybe Text)+    , _sId              :: !(Maybe Text)+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'Step' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'sStatus'+--+-- * 'sActionOnFailure'+--+-- * 'sConfig'+--+-- * 'sName'+--+-- * 'sId'+step+    :: Step+step =+    Step'+    { _sStatus = Nothing+    , _sActionOnFailure = Nothing+    , _sConfig = Nothing+    , _sName = Nothing+    , _sId = Nothing+    }++-- | The current execution status details of the cluster step.+sStatus :: Lens' Step (Maybe StepStatus)+sStatus = lens _sStatus (\ s a -> s{_sStatus = a});++-- | This specifies what action to take when the cluster step fails. Possible+-- values are TERMINATE_CLUSTER, CANCEL_AND_WAIT, and CONTINUE.+sActionOnFailure :: Lens' Step (Maybe ActionOnFailure)+sActionOnFailure = lens _sActionOnFailure (\ s a -> s{_sActionOnFailure = a});++-- | The Hadoop job configuration of the cluster step.+sConfig :: Lens' Step (Maybe HadoopStepConfig)+sConfig = lens _sConfig (\ s a -> s{_sConfig = a});++-- | The name of the cluster step.+sName :: Lens' Step (Maybe Text)+sName = lens _sName (\ s a -> s{_sName = a});++-- | The identifier of the cluster step.+sId :: Lens' Step (Maybe Text)+sId = lens _sId (\ s a -> s{_sId = a});++instance FromJSON Step where+        parseJSON+          = withObject "Step"+              (\ x ->+                 Step' <$>+                   (x .:? "Status") <*> (x .:? "ActionOnFailure") <*>+                     (x .:? "Config")+                     <*> (x .:? "Name")+                     <*> (x .:? "Id"))++-- | Specification of a job flow step.+--+-- /See:/ 'stepConfig' smart constructor.+data StepConfig = StepConfig'+    { _scActionOnFailure :: !(Maybe ActionOnFailure)+    , _scName            :: !Text+    , _scHadoopJARStep   :: !HadoopJARStepConfig+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'StepConfig' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'scActionOnFailure'+--+-- * 'scName'+--+-- * 'scHadoopJARStep'+stepConfig+    :: Text -- ^ 'scName'+    -> HadoopJARStepConfig -- ^ 'scHadoopJARStep'+    -> StepConfig+stepConfig pName_ pHadoopJARStep_ =+    StepConfig'+    { _scActionOnFailure = Nothing+    , _scName = pName_+    , _scHadoopJARStep = pHadoopJARStep_+    }++-- | The action to take if the job flow step fails.+scActionOnFailure :: Lens' StepConfig (Maybe ActionOnFailure)+scActionOnFailure = lens _scActionOnFailure (\ s a -> s{_scActionOnFailure = a});++-- | The name of the job flow step.+scName :: Lens' StepConfig Text+scName = lens _scName (\ s a -> s{_scName = a});++-- | The JAR file used for the job flow step.+scHadoopJARStep :: Lens' StepConfig HadoopJARStepConfig+scHadoopJARStep = lens _scHadoopJARStep (\ s a -> s{_scHadoopJARStep = a});++instance ToJSON StepConfig where+        toJSON StepConfig'{..}+          = object+              ["ActionOnFailure" .= _scActionOnFailure,+               "Name" .= _scName,+               "HadoopJarStep" .= _scHadoopJARStep]++-- | The details of the step state change reason.+--+-- /See:/ 'stepStateChangeReason' smart constructor.+data StepStateChangeReason = StepStateChangeReason'+    { _sscrCode    :: !(Maybe StepStateChangeReasonCode)+    , _sscrMessage :: !(Maybe Text)+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'StepStateChangeReason' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'sscrCode'+--+-- * 'sscrMessage'+stepStateChangeReason+    :: StepStateChangeReason+stepStateChangeReason =+    StepStateChangeReason'+    { _sscrCode = Nothing+    , _sscrMessage = Nothing+    }++-- | The programmable code for the state change reason. Note: Currently, the+-- service provides no code for the state change.+sscrCode :: Lens' StepStateChangeReason (Maybe StepStateChangeReasonCode)+sscrCode = lens _sscrCode (\ s a -> s{_sscrCode = a});++-- | The descriptive message for the state change reason.+sscrMessage :: Lens' StepStateChangeReason (Maybe Text)+sscrMessage = lens _sscrMessage (\ s a -> s{_sscrMessage = a});++instance FromJSON StepStateChangeReason where+        parseJSON+          = withObject "StepStateChangeReason"+              (\ x ->+                 StepStateChangeReason' <$>+                   (x .:? "Code") <*> (x .:? "Message"))++-- | The execution status details of the cluster step.+--+-- /See:/ 'stepStatus' smart constructor.+data StepStatus = StepStatus'+    { _ssState             :: !(Maybe StepState)+    , _ssStateChangeReason :: !(Maybe StepStateChangeReason)+    , _ssTimeline          :: !(Maybe StepTimeline)+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'StepStatus' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ssState'+--+-- * 'ssStateChangeReason'+--+-- * 'ssTimeline'+stepStatus+    :: StepStatus+stepStatus =+    StepStatus'+    { _ssState = Nothing+    , _ssStateChangeReason = Nothing+    , _ssTimeline = Nothing+    }++-- | The execution state of the cluster step.+ssState :: Lens' StepStatus (Maybe StepState)+ssState = lens _ssState (\ s a -> s{_ssState = a});++-- | The reason for the step execution status change.+ssStateChangeReason :: Lens' StepStatus (Maybe StepStateChangeReason)+ssStateChangeReason = lens _ssStateChangeReason (\ s a -> s{_ssStateChangeReason = a});++-- | The timeline of the cluster step status over time.+ssTimeline :: Lens' StepStatus (Maybe StepTimeline)+ssTimeline = lens _ssTimeline (\ s a -> s{_ssTimeline = a});++instance FromJSON StepStatus where+        parseJSON+          = withObject "StepStatus"+              (\ x ->+                 StepStatus' <$>+                   (x .:? "State") <*> (x .:? "StateChangeReason") <*>+                     (x .:? "Timeline"))++-- | The summary of the cluster step.+--+-- /See:/ 'stepSummary' smart constructor.+data StepSummary = StepSummary'+    { _ssStatus          :: !(Maybe StepStatus)+    , _ssActionOnFailure :: !(Maybe ActionOnFailure)+    , _ssConfig          :: !(Maybe HadoopStepConfig)+    , _ssName            :: !(Maybe Text)+    , _ssId              :: !(Maybe Text)+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'StepSummary' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ssStatus'+--+-- * 'ssActionOnFailure'+--+-- * 'ssConfig'+--+-- * 'ssName'+--+-- * 'ssId'+stepSummary+    :: StepSummary+stepSummary =+    StepSummary'+    { _ssStatus = Nothing+    , _ssActionOnFailure = Nothing+    , _ssConfig = Nothing+    , _ssName = Nothing+    , _ssId = Nothing+    }++-- | The current execution status details of the cluster step.+ssStatus :: Lens' StepSummary (Maybe StepStatus)+ssStatus = lens _ssStatus (\ s a -> s{_ssStatus = a});++-- | This specifies what action to take when the cluster step fails. Possible+-- values are TERMINATE_CLUSTER, CANCEL_AND_WAIT, and CONTINUE.+ssActionOnFailure :: Lens' StepSummary (Maybe ActionOnFailure)+ssActionOnFailure = lens _ssActionOnFailure (\ s a -> s{_ssActionOnFailure = a});++-- | The Hadoop job configuration of the cluster step.+ssConfig :: Lens' StepSummary (Maybe HadoopStepConfig)+ssConfig = lens _ssConfig (\ s a -> s{_ssConfig = a});++-- | The name of the cluster step.+ssName :: Lens' StepSummary (Maybe Text)+ssName = lens _ssName (\ s a -> s{_ssName = a});++-- | The identifier of the cluster step.+ssId :: Lens' StepSummary (Maybe Text)+ssId = lens _ssId (\ s a -> s{_ssId = a});++instance FromJSON StepSummary where+        parseJSON+          = withObject "StepSummary"+              (\ x ->+                 StepSummary' <$>+                   (x .:? "Status") <*> (x .:? "ActionOnFailure") <*>+                     (x .:? "Config")+                     <*> (x .:? "Name")+                     <*> (x .:? "Id"))++-- | The timeline of the cluster step lifecycle.+--+-- /See:/ 'stepTimeline' smart constructor.+data StepTimeline = StepTimeline'+    { _stCreationDateTime :: !(Maybe POSIX)+    , _stEndDateTime      :: !(Maybe POSIX)+    , _stStartDateTime    :: !(Maybe POSIX)+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'StepTimeline' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'stCreationDateTime'+--+-- * 'stEndDateTime'+--+-- * 'stStartDateTime'+stepTimeline+    :: StepTimeline+stepTimeline =+    StepTimeline'+    { _stCreationDateTime = Nothing+    , _stEndDateTime = Nothing+    , _stStartDateTime = Nothing+    }++-- | The date and time when the cluster step was created.+stCreationDateTime :: Lens' StepTimeline (Maybe UTCTime)+stCreationDateTime = lens _stCreationDateTime (\ s a -> s{_stCreationDateTime = a}) . mapping _Time;++-- | The date and time when the cluster step execution completed or failed.+stEndDateTime :: Lens' StepTimeline (Maybe UTCTime)+stEndDateTime = lens _stEndDateTime (\ s a -> s{_stEndDateTime = a}) . mapping _Time;++-- | The date and time when the cluster step execution started.+stStartDateTime :: Lens' StepTimeline (Maybe UTCTime)+stStartDateTime = lens _stStartDateTime (\ s a -> s{_stStartDateTime = a}) . mapping _Time;++instance FromJSON StepTimeline where+        parseJSON+          = withObject "StepTimeline"+              (\ x ->+                 StepTimeline' <$>+                   (x .:? "CreationDateTime") <*> (x .:? "EndDateTime")+                     <*> (x .:? "StartDateTime"))++-- | The list of supported product configurations which allow user-supplied+-- arguments. EMR accepts these arguments and forwards them to the+-- corresponding installation script as bootstrap action arguments.+--+-- /See:/ 'supportedProductConfig' smart constructor.+data SupportedProductConfig = SupportedProductConfig'+    { _spcArgs :: !(Maybe [Text])+    , _spcName :: !(Maybe Text)+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'SupportedProductConfig' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'spcArgs'+--+-- * 'spcName'+supportedProductConfig+    :: SupportedProductConfig+supportedProductConfig =+    SupportedProductConfig'+    { _spcArgs = Nothing+    , _spcName = Nothing+    }++-- | The list of user-supplied arguments.+spcArgs :: Lens' SupportedProductConfig [Text]+spcArgs = lens _spcArgs (\ s a -> s{_spcArgs = a}) . _Default . _Coerce;++-- | The name of the product configuration.+spcName :: Lens' SupportedProductConfig (Maybe Text)+spcName = lens _spcName (\ s a -> s{_spcName = a});++instance ToJSON SupportedProductConfig where+        toJSON SupportedProductConfig'{..}+          = object ["Args" .= _spcArgs, "Name" .= _spcName]++-- | A key\/value pair containing user-defined metadata that you can+-- associate with an Amazon EMR resource. Tags make it easier to associate+-- clusters in various ways, such as grouping clu\\ sters to track your+-- Amazon EMR resource allocation costs. For more information, see+-- <http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-plan-tags.html Tagging Amazon EMR Resources>.+--+-- /See:/ 'tag' smart constructor.+data Tag = Tag'+    { _tagValue :: !(Maybe Text)+    , _tagKey   :: !(Maybe Text)+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'Tag' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'tagValue'+--+-- * 'tagKey'+tag+    :: Tag+tag =+    Tag'+    { _tagValue = Nothing+    , _tagKey = Nothing+    }++-- | A user-defined value, which is optional in a tag. For more information,+-- see+-- <http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-plan-tags.html Tagging Amazon EMR Resources>.+tagValue :: Lens' Tag (Maybe Text)+tagValue = lens _tagValue (\ s a -> s{_tagValue = a});++-- | A user-defined key, which is the minimum required information for a+-- valid tag. For more information, see+-- <http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-plan-tags.html Tagging Amazon EMR Resources>.+tagKey :: Lens' Tag (Maybe Text)+tagKey = lens _tagKey (\ s a -> s{_tagKey = a});++instance FromJSON Tag where+        parseJSON+          = withObject "Tag"+              (\ x -> Tag' <$> (x .:? "Value") <*> (x .:? "Key"))++instance ToJSON Tag where+        toJSON Tag'{..}+          = object ["Value" .= _tagValue, "Key" .= _tagKey]
+ gen/Network/AWS/EMR/Types/Sum.hs view
@@ -0,0 +1,434 @@+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE LambdaCase         #-}+{-# LANGUAGE OverloadedStrings  #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Network.AWS.EMR.Types.Sum+-- Copyright   : (c) 2013-2015 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+module Network.AWS.EMR.Types.Sum where++import           Network.AWS.Prelude++data ActionOnFailure+    = CancelAndWait+    | Continue+    | TerminateCluster+    | TerminateJobFlow+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)++instance FromText ActionOnFailure where+    parser = takeLowerText >>= \case+        "cancel_and_wait" -> pure CancelAndWait+        "continue" -> pure Continue+        "terminate_cluster" -> pure TerminateCluster+        "terminate_job_flow" -> pure TerminateJobFlow+        e -> fromTextError $ "Failure parsing ActionOnFailure from value: '" <> e+           <> "'. Accepted values: cancel_and_wait, continue, terminate_cluster, terminate_job_flow"++instance ToText ActionOnFailure where+    toText = \case+        CancelAndWait -> "cancel_and_wait"+        Continue -> "continue"+        TerminateCluster -> "terminate_cluster"+        TerminateJobFlow -> "terminate_job_flow"++instance Hashable     ActionOnFailure+instance ToByteString ActionOnFailure+instance ToQuery      ActionOnFailure+instance ToHeader     ActionOnFailure++instance ToJSON ActionOnFailure where+    toJSON = toJSONText++instance FromJSON ActionOnFailure where+    parseJSON = parseJSONText "ActionOnFailure"++data ClusterState+    = Bootstrapping+    | Running+    | Starting+    | Terminated+    | TerminatedWithErrors+    | Terminating+    | Waiting+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)++instance FromText ClusterState where+    parser = takeLowerText >>= \case+        "bootstrapping" -> pure Bootstrapping+        "running" -> pure Running+        "starting" -> pure Starting+        "terminated" -> pure Terminated+        "terminated_with_errors" -> pure TerminatedWithErrors+        "terminating" -> pure Terminating+        "waiting" -> pure Waiting+        e -> fromTextError $ "Failure parsing ClusterState from value: '" <> e+           <> "'. Accepted values: bootstrapping, running, starting, terminated, terminated_with_errors, terminating, waiting"++instance ToText ClusterState where+    toText = \case+        Bootstrapping -> "bootstrapping"+        Running -> "running"+        Starting -> "starting"+        Terminated -> "terminated"+        TerminatedWithErrors -> "terminated_with_errors"+        Terminating -> "terminating"+        Waiting -> "waiting"++instance Hashable     ClusterState+instance ToByteString ClusterState+instance ToQuery      ClusterState+instance ToHeader     ClusterState++instance ToJSON ClusterState where+    toJSON = toJSONText++instance FromJSON ClusterState where+    parseJSON = parseJSONText "ClusterState"++data ClusterStateChangeReasonCode+    = AllStepsCompleted+    | BootstrapFailure+    | InstanceFailure+    | InternalError+    | StepFailure+    | UserRequest+    | ValidationError+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)++instance FromText ClusterStateChangeReasonCode where+    parser = takeLowerText >>= \case+        "all_steps_completed" -> pure AllStepsCompleted+        "bootstrap_failure" -> pure BootstrapFailure+        "instance_failure" -> pure InstanceFailure+        "internal_error" -> pure InternalError+        "step_failure" -> pure StepFailure+        "user_request" -> pure UserRequest+        "validation_error" -> pure ValidationError+        e -> fromTextError $ "Failure parsing ClusterStateChangeReasonCode from value: '" <> e+           <> "'. Accepted values: all_steps_completed, bootstrap_failure, instance_failure, internal_error, step_failure, user_request, validation_error"++instance ToText ClusterStateChangeReasonCode where+    toText = \case+        AllStepsCompleted -> "all_steps_completed"+        BootstrapFailure -> "bootstrap_failure"+        InstanceFailure -> "instance_failure"+        InternalError -> "internal_error"+        StepFailure -> "step_failure"+        UserRequest -> "user_request"+        ValidationError -> "validation_error"++instance Hashable     ClusterStateChangeReasonCode+instance ToByteString ClusterStateChangeReasonCode+instance ToQuery      ClusterStateChangeReasonCode+instance ToHeader     ClusterStateChangeReasonCode++instance FromJSON ClusterStateChangeReasonCode where+    parseJSON = parseJSONText "ClusterStateChangeReasonCode"++data InstanceGroupState+    = IGSArrested+    | IGSBootstrapping+    | IGSEnded+    | IGSProvisioning+    | IGSResizing+    | IGSRunning+    | IGSShuttingDown+    | IGSSuspended+    | IGSTerminated+    | IGSTerminating+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)++instance FromText InstanceGroupState where+    parser = takeLowerText >>= \case+        "arrested" -> pure IGSArrested+        "bootstrapping" -> pure IGSBootstrapping+        "ended" -> pure IGSEnded+        "provisioning" -> pure IGSProvisioning+        "resizing" -> pure IGSResizing+        "running" -> pure IGSRunning+        "shutting_down" -> pure IGSShuttingDown+        "suspended" -> pure IGSSuspended+        "terminated" -> pure IGSTerminated+        "terminating" -> pure IGSTerminating+        e -> fromTextError $ "Failure parsing InstanceGroupState from value: '" <> e+           <> "'. Accepted values: arrested, bootstrapping, ended, provisioning, resizing, running, shutting_down, suspended, terminated, terminating"++instance ToText InstanceGroupState where+    toText = \case+        IGSArrested -> "arrested"+        IGSBootstrapping -> "bootstrapping"+        IGSEnded -> "ended"+        IGSProvisioning -> "provisioning"+        IGSResizing -> "resizing"+        IGSRunning -> "running"+        IGSShuttingDown -> "shutting_down"+        IGSSuspended -> "suspended"+        IGSTerminated -> "terminated"+        IGSTerminating -> "terminating"++instance Hashable     InstanceGroupState+instance ToByteString InstanceGroupState+instance ToQuery      InstanceGroupState+instance ToHeader     InstanceGroupState++instance FromJSON InstanceGroupState where+    parseJSON = parseJSONText "InstanceGroupState"++data InstanceGroupStateChangeReasonCode+    = IGSCRCClusterTerminated+    | IGSCRCInstanceFailure+    | IGSCRCInternalError+    | IGSCRCValidationError+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)++instance FromText InstanceGroupStateChangeReasonCode where+    parser = takeLowerText >>= \case+        "cluster_terminated" -> pure IGSCRCClusterTerminated+        "instance_failure" -> pure IGSCRCInstanceFailure+        "internal_error" -> pure IGSCRCInternalError+        "validation_error" -> pure IGSCRCValidationError+        e -> fromTextError $ "Failure parsing InstanceGroupStateChangeReasonCode from value: '" <> e+           <> "'. Accepted values: cluster_terminated, instance_failure, internal_error, validation_error"++instance ToText InstanceGroupStateChangeReasonCode where+    toText = \case+        IGSCRCClusterTerminated -> "cluster_terminated"+        IGSCRCInstanceFailure -> "instance_failure"+        IGSCRCInternalError -> "internal_error"+        IGSCRCValidationError -> "validation_error"++instance Hashable     InstanceGroupStateChangeReasonCode+instance ToByteString InstanceGroupStateChangeReasonCode+instance ToQuery      InstanceGroupStateChangeReasonCode+instance ToHeader     InstanceGroupStateChangeReasonCode++instance FromJSON InstanceGroupStateChangeReasonCode where+    parseJSON = parseJSONText "InstanceGroupStateChangeReasonCode"++data InstanceGroupType+    = IGTCore+    | IGTMaster+    | IGTTask+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)++instance FromText InstanceGroupType where+    parser = takeLowerText >>= \case+        "core" -> pure IGTCore+        "master" -> pure IGTMaster+        "task" -> pure IGTTask+        e -> fromTextError $ "Failure parsing InstanceGroupType from value: '" <> e+           <> "'. Accepted values: core, master, task"++instance ToText InstanceGroupType where+    toText = \case+        IGTCore -> "core"+        IGTMaster -> "master"+        IGTTask -> "task"++instance Hashable     InstanceGroupType+instance ToByteString InstanceGroupType+instance ToQuery      InstanceGroupType+instance ToHeader     InstanceGroupType++instance ToJSON InstanceGroupType where+    toJSON = toJSONText++instance FromJSON InstanceGroupType where+    parseJSON = parseJSONText "InstanceGroupType"++data InstanceRoleType+    = Core+    | Master+    | Task+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)++instance FromText InstanceRoleType where+    parser = takeLowerText >>= \case+        "core" -> pure Core+        "master" -> pure Master+        "task" -> pure Task+        e -> fromTextError $ "Failure parsing InstanceRoleType from value: '" <> e+           <> "'. Accepted values: core, master, task"++instance ToText InstanceRoleType where+    toText = \case+        Core -> "core"+        Master -> "master"+        Task -> "task"++instance Hashable     InstanceRoleType+instance ToByteString InstanceRoleType+instance ToQuery      InstanceRoleType+instance ToHeader     InstanceRoleType++instance ToJSON InstanceRoleType where+    toJSON = toJSONText++data InstanceState+    = ISAwaitingFulfillment+    | ISBootstrapping+    | ISProvisioning+    | ISRunning+    | ISTerminated+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)++instance FromText InstanceState where+    parser = takeLowerText >>= \case+        "awaiting_fulfillment" -> pure ISAwaitingFulfillment+        "bootstrapping" -> pure ISBootstrapping+        "provisioning" -> pure ISProvisioning+        "running" -> pure ISRunning+        "terminated" -> pure ISTerminated+        e -> fromTextError $ "Failure parsing InstanceState from value: '" <> e+           <> "'. Accepted values: awaiting_fulfillment, bootstrapping, provisioning, running, terminated"++instance ToText InstanceState where+    toText = \case+        ISAwaitingFulfillment -> "awaiting_fulfillment"+        ISBootstrapping -> "bootstrapping"+        ISProvisioning -> "provisioning"+        ISRunning -> "running"+        ISTerminated -> "terminated"++instance Hashable     InstanceState+instance ToByteString InstanceState+instance ToQuery      InstanceState+instance ToHeader     InstanceState++instance FromJSON InstanceState where+    parseJSON = parseJSONText "InstanceState"++data InstanceStateChangeReasonCode+    = ISCRCBootstrapFailure+    | ISCRCClusterTerminated+    | ISCRCInstanceFailure+    | ISCRCInternalError+    | ISCRCValidationError+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)++instance FromText InstanceStateChangeReasonCode where+    parser = takeLowerText >>= \case+        "bootstrap_failure" -> pure ISCRCBootstrapFailure+        "cluster_terminated" -> pure ISCRCClusterTerminated+        "instance_failure" -> pure ISCRCInstanceFailure+        "internal_error" -> pure ISCRCInternalError+        "validation_error" -> pure ISCRCValidationError+        e -> fromTextError $ "Failure parsing InstanceStateChangeReasonCode from value: '" <> e+           <> "'. Accepted values: bootstrap_failure, cluster_terminated, instance_failure, internal_error, validation_error"++instance ToText InstanceStateChangeReasonCode where+    toText = \case+        ISCRCBootstrapFailure -> "bootstrap_failure"+        ISCRCClusterTerminated -> "cluster_terminated"+        ISCRCInstanceFailure -> "instance_failure"+        ISCRCInternalError -> "internal_error"+        ISCRCValidationError -> "validation_error"++instance Hashable     InstanceStateChangeReasonCode+instance ToByteString InstanceStateChangeReasonCode+instance ToQuery      InstanceStateChangeReasonCode+instance ToHeader     InstanceStateChangeReasonCode++instance FromJSON InstanceStateChangeReasonCode where+    parseJSON = parseJSONText "InstanceStateChangeReasonCode"++data MarketType+    = OnDemand+    | Spot+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)++instance FromText MarketType where+    parser = takeLowerText >>= \case+        "on_demand" -> pure OnDemand+        "spot" -> pure Spot+        e -> fromTextError $ "Failure parsing MarketType from value: '" <> e+           <> "'. Accepted values: on_demand, spot"++instance ToText MarketType where+    toText = \case+        OnDemand -> "on_demand"+        Spot -> "spot"++instance Hashable     MarketType+instance ToByteString MarketType+instance ToQuery      MarketType+instance ToHeader     MarketType++instance ToJSON MarketType where+    toJSON = toJSONText++instance FromJSON MarketType where+    parseJSON = parseJSONText "MarketType"++data StepState+    = SSCancelled+    | SSCompleted+    | SSFailed+    | SSInterrupted+    | SSPending+    | SSRunning+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)++instance FromText StepState where+    parser = takeLowerText >>= \case+        "cancelled" -> pure SSCancelled+        "completed" -> pure SSCompleted+        "failed" -> pure SSFailed+        "interrupted" -> pure SSInterrupted+        "pending" -> pure SSPending+        "running" -> pure SSRunning+        e -> fromTextError $ "Failure parsing StepState from value: '" <> e+           <> "'. Accepted values: cancelled, completed, failed, interrupted, pending, running"++instance ToText StepState where+    toText = \case+        SSCancelled -> "cancelled"+        SSCompleted -> "completed"+        SSFailed -> "failed"+        SSInterrupted -> "interrupted"+        SSPending -> "pending"+        SSRunning -> "running"++instance Hashable     StepState+instance ToByteString StepState+instance ToQuery      StepState+instance ToHeader     StepState++instance ToJSON StepState where+    toJSON = toJSONText++instance FromJSON StepState where+    parseJSON = parseJSONText "StepState"++data StepStateChangeReasonCode =+    None+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)++instance FromText StepStateChangeReasonCode where+    parser = takeLowerText >>= \case+        "none" -> pure None+        e -> fromTextError $ "Failure parsing StepStateChangeReasonCode from value: '" <> e+           <> "'. Accepted values: none"++instance ToText StepStateChangeReasonCode where+    toText = \case+        None -> "none"++instance Hashable     StepStateChangeReasonCode+instance ToByteString StepStateChangeReasonCode+instance ToQuery      StepStateChangeReasonCode+instance ToHeader     StepStateChangeReasonCode++instance FromJSON StepStateChangeReasonCode where+    parseJSON = parseJSONText "StepStateChangeReasonCode"
gen/Network/AWS/EMR/Waiters.hs view
@@ -1,39 +1,56 @@ {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE TypeFamilies      #-} +{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- | -- Module      : Network.AWS.EMR.Waiters--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>--- License     : This Source Code Form is subject to the terms of---               the Mozilla Public License, v. 2.0.---               A copy of the MPL can be found in the LICENSE file or---               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Copyright   : (c) 2013-2015 Brendan Hay+-- License     : Mozilla Public License, v. 2.0. -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>--- Stability   : experimental+-- Stability   : auto-generated -- Portability : non-portable (GHC extensions) ----- Derived from AWS service descriptions, licensed under Apache 2.0.- module Network.AWS.EMR.Waiters where -import Network.AWS.EMR.DescribeCluster-import Network.AWS.EMR.Types-import Network.AWS.Waiters+import           Network.AWS.EMR.DescribeCluster+import           Network.AWS.EMR.Types+import           Network.AWS.Prelude+import           Network.AWS.Waiter +-- | Polls 'Network.AWS.EMR.DescribeCluster' every 30 seconds until a+-- successful state is reached. An error is returned after 60 failed checks. clusterRunning :: Wait DescribeCluster-clusterRunning = Wait-    { _waitName      = "ClusterRunning"-    , _waitAttempts  = 60-    , _waitDelay     = 30-    , _waitAcceptors =-        [ matchAll CSRunning AcceptSuccess-            (dcrCluster . c1Status . csState . _Just)-        , matchAll CSWaiting AcceptSuccess-            (dcrCluster . c1Status . csState . _Just)-        , matchAll CSTerminating AcceptFailure-            (dcrCluster . c1Status . csState . _Just)-        , matchAll CSTerminated AcceptFailure-            (dcrCluster . c1Status . csState . _Just)-        , matchAll CSTerminatedWithErrors AcceptFailure-            (dcrCluster . c1Status . csState . _Just)-        ]+clusterRunning =+    Wait+    { _waitName = "ClusterRunning"+    , _waitAttempts = 60+    , _waitDelay = 30+    , _waitAcceptors = [ matchAll+                             "RUNNING"+                             AcceptSuccess+                             (dcrsCluster .+                              cluStatus . csState . _Just . to toTextCI)+                       , matchAll+                             "WAITING"+                             AcceptSuccess+                             (dcrsCluster .+                              cluStatus . csState . _Just . to toTextCI)+                       , matchAll+                             "TERMINATING"+                             AcceptFailure+                             (dcrsCluster .+                              cluStatus . csState . _Just . to toTextCI)+                       , matchAll+                             "TERMINATED"+                             AcceptFailure+                             (dcrsCluster .+                              cluStatus . csState . _Just . to toTextCI)+                       , matchAll+                             "TERMINATED_WITH_ERRORS"+                             AcceptFailure+                             (dcrsCluster .+                              cluStatus . csState . _Just . to toTextCI)]     }
+ test/Main.hs view
@@ -0,0 +1,21 @@+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- |+-- Module      : Main+-- Copyright   : (c) 2013-2015 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+module Main (main) where++import Test.Tasty+import Test.AWS.EMR+import Test.AWS.EMR.Internal++main :: IO ()+main = defaultMain $ testGroup "EMR"+    [ testGroup "tests"    tests+    , testGroup "fixtures" fixtures+    ]
+ test/Test/AWS/EMR.hs view
@@ -0,0 +1,26 @@+{-# LANGUAGE OverloadedStrings #-}++-- Module      : Test.AWS.EMR+-- Copyright   : (c) 2013-2015 Brendan Hay+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++module Test.AWS.EMR+    ( tests+    , fixtures+    ) where++import           Network.AWS.EMR+import           Test.AWS.Gen.EMR+import           Test.Tasty++tests :: [TestTree]+tests = []++fixtures :: [TestTree]+fixtures = []
+ test/Test/AWS/EMR/Internal.hs view
@@ -0,0 +1,16 @@+{-# LANGUAGE OverloadedStrings #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Test.AWS.EMR.Internal+-- Copyright   : (c) 2013-2015 Brendan Hay+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++module Test.AWS.EMR.Internal where++import Test.AWS.Prelude
+ test/Test/AWS/Gen/EMR.hs view
@@ -0,0 +1,311 @@+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-orphans        #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Test.AWS.Gen.EMR+-- Copyright   : (c) 2013-2015 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+module Test.AWS.Gen.EMR where++import Data.Proxy+import Test.AWS.Fixture+import Test.AWS.Prelude+import Test.Tasty+import Network.AWS.EMR+import Test.AWS.EMR.Internal++-- Auto-generated: the actual test selection needs to be manually placed into+-- the top-level so that real test data can be incrementally added.+--+-- This commented snippet is what the entire set should look like:++-- fixtures :: TestTree+-- fixtures =+--     [ testGroup "request"+--         [ testRunJobFlow $+--             runJobFlow+--+--         , testSetVisibleToAllUsers $+--             setVisibleToAllUsers+--+--         , testTerminateJobFlows $+--             terminateJobFlows+--+--         , testRemoveTags $+--             removeTags+--+--         , testDescribeStep $+--             describeStep+--+--         , testDescribeCluster $+--             describeCluster+--+--         , testModifyInstanceGroups $+--             modifyInstanceGroups+--+--         , testAddJobFlowSteps $+--             addJobFlowSteps+--+--         , testSetTerminationProtection $+--             setTerminationProtection+--+--         , testListSteps $+--             listSteps+--+--         , testAddInstanceGroups $+--             addInstanceGroups+--+--         , testListInstanceGroups $+--             listInstanceGroups+--+--         , testListBootstrapActions $+--             listBootstrapActions+--+--         , testAddTags $+--             addTags+--+--         , testListInstances $+--             listInstances+--+--         , testListClusters $+--             listClusters+--+--           ]++--     , testGroup "response"+--         [ testRunJobFlowResponse $+--             runJobFlowResponse+--+--         , testSetVisibleToAllUsersResponse $+--             setVisibleToAllUsersResponse+--+--         , testTerminateJobFlowsResponse $+--             terminateJobFlowsResponse+--+--         , testRemoveTagsResponse $+--             removeTagsResponse+--+--         , testDescribeStepResponse $+--             describeStepResponse+--+--         , testDescribeClusterResponse $+--             describeClusterResponse+--+--         , testModifyInstanceGroupsResponse $+--             modifyInstanceGroupsResponse+--+--         , testAddJobFlowStepsResponse $+--             addJobFlowStepsResponse+--+--         , testSetTerminationProtectionResponse $+--             setTerminationProtectionResponse+--+--         , testListStepsResponse $+--             listStepsResponse+--+--         , testAddInstanceGroupsResponse $+--             addInstanceGroupsResponse+--+--         , testListInstanceGroupsResponse $+--             listInstanceGroupsResponse+--+--         , testListBootstrapActionsResponse $+--             listBootstrapActionsResponse+--+--         , testAddTagsResponse $+--             addTagsResponse+--+--         , testListInstancesResponse $+--             listInstancesResponse+--+--         , testListClustersResponse $+--             listClustersResponse+--+--           ]+--     ]++-- Requests++testRunJobFlow :: RunJobFlow -> TestTree+testRunJobFlow = req+    "RunJobFlow"+    "fixture/RunJobFlow"++testSetVisibleToAllUsers :: SetVisibleToAllUsers -> TestTree+testSetVisibleToAllUsers = req+    "SetVisibleToAllUsers"+    "fixture/SetVisibleToAllUsers"++testTerminateJobFlows :: TerminateJobFlows -> TestTree+testTerminateJobFlows = req+    "TerminateJobFlows"+    "fixture/TerminateJobFlows"++testRemoveTags :: RemoveTags -> TestTree+testRemoveTags = req+    "RemoveTags"+    "fixture/RemoveTags"++testDescribeStep :: DescribeStep -> TestTree+testDescribeStep = req+    "DescribeStep"+    "fixture/DescribeStep"++testDescribeCluster :: DescribeCluster -> TestTree+testDescribeCluster = req+    "DescribeCluster"+    "fixture/DescribeCluster"++testModifyInstanceGroups :: ModifyInstanceGroups -> TestTree+testModifyInstanceGroups = req+    "ModifyInstanceGroups"+    "fixture/ModifyInstanceGroups"++testAddJobFlowSteps :: AddJobFlowSteps -> TestTree+testAddJobFlowSteps = req+    "AddJobFlowSteps"+    "fixture/AddJobFlowSteps"++testSetTerminationProtection :: SetTerminationProtection -> TestTree+testSetTerminationProtection = req+    "SetTerminationProtection"+    "fixture/SetTerminationProtection"++testListSteps :: ListSteps -> TestTree+testListSteps = req+    "ListSteps"+    "fixture/ListSteps"++testAddInstanceGroups :: AddInstanceGroups -> TestTree+testAddInstanceGroups = req+    "AddInstanceGroups"+    "fixture/AddInstanceGroups"++testListInstanceGroups :: ListInstanceGroups -> TestTree+testListInstanceGroups = req+    "ListInstanceGroups"+    "fixture/ListInstanceGroups"++testListBootstrapActions :: ListBootstrapActions -> TestTree+testListBootstrapActions = req+    "ListBootstrapActions"+    "fixture/ListBootstrapActions"++testAddTags :: AddTags -> TestTree+testAddTags = req+    "AddTags"+    "fixture/AddTags"++testListInstances :: ListInstances -> TestTree+testListInstances = req+    "ListInstances"+    "fixture/ListInstances"++testListClusters :: ListClusters -> TestTree+testListClusters = req+    "ListClusters"+    "fixture/ListClusters"++-- Responses++testRunJobFlowResponse :: RunJobFlowResponse -> TestTree+testRunJobFlowResponse = res+    "RunJobFlowResponse"+    "fixture/RunJobFlowResponse"+    (Proxy :: Proxy RunJobFlow)++testSetVisibleToAllUsersResponse :: SetVisibleToAllUsersResponse -> TestTree+testSetVisibleToAllUsersResponse = res+    "SetVisibleToAllUsersResponse"+    "fixture/SetVisibleToAllUsersResponse"+    (Proxy :: Proxy SetVisibleToAllUsers)++testTerminateJobFlowsResponse :: TerminateJobFlowsResponse -> TestTree+testTerminateJobFlowsResponse = res+    "TerminateJobFlowsResponse"+    "fixture/TerminateJobFlowsResponse"+    (Proxy :: Proxy TerminateJobFlows)++testRemoveTagsResponse :: RemoveTagsResponse -> TestTree+testRemoveTagsResponse = res+    "RemoveTagsResponse"+    "fixture/RemoveTagsResponse"+    (Proxy :: Proxy RemoveTags)++testDescribeStepResponse :: DescribeStepResponse -> TestTree+testDescribeStepResponse = res+    "DescribeStepResponse"+    "fixture/DescribeStepResponse"+    (Proxy :: Proxy DescribeStep)++testDescribeClusterResponse :: DescribeClusterResponse -> TestTree+testDescribeClusterResponse = res+    "DescribeClusterResponse"+    "fixture/DescribeClusterResponse"+    (Proxy :: Proxy DescribeCluster)++testModifyInstanceGroupsResponse :: ModifyInstanceGroupsResponse -> TestTree+testModifyInstanceGroupsResponse = res+    "ModifyInstanceGroupsResponse"+    "fixture/ModifyInstanceGroupsResponse"+    (Proxy :: Proxy ModifyInstanceGroups)++testAddJobFlowStepsResponse :: AddJobFlowStepsResponse -> TestTree+testAddJobFlowStepsResponse = res+    "AddJobFlowStepsResponse"+    "fixture/AddJobFlowStepsResponse"+    (Proxy :: Proxy AddJobFlowSteps)++testSetTerminationProtectionResponse :: SetTerminationProtectionResponse -> TestTree+testSetTerminationProtectionResponse = res+    "SetTerminationProtectionResponse"+    "fixture/SetTerminationProtectionResponse"+    (Proxy :: Proxy SetTerminationProtection)++testListStepsResponse :: ListStepsResponse -> TestTree+testListStepsResponse = res+    "ListStepsResponse"+    "fixture/ListStepsResponse"+    (Proxy :: Proxy ListSteps)++testAddInstanceGroupsResponse :: AddInstanceGroupsResponse -> TestTree+testAddInstanceGroupsResponse = res+    "AddInstanceGroupsResponse"+    "fixture/AddInstanceGroupsResponse"+    (Proxy :: Proxy AddInstanceGroups)++testListInstanceGroupsResponse :: ListInstanceGroupsResponse -> TestTree+testListInstanceGroupsResponse = res+    "ListInstanceGroupsResponse"+    "fixture/ListInstanceGroupsResponse"+    (Proxy :: Proxy ListInstanceGroups)++testListBootstrapActionsResponse :: ListBootstrapActionsResponse -> TestTree+testListBootstrapActionsResponse = res+    "ListBootstrapActionsResponse"+    "fixture/ListBootstrapActionsResponse"+    (Proxy :: Proxy ListBootstrapActions)++testAddTagsResponse :: AddTagsResponse -> TestTree+testAddTagsResponse = res+    "AddTagsResponse"+    "fixture/AddTagsResponse"+    (Proxy :: Proxy AddTags)++testListInstancesResponse :: ListInstancesResponse -> TestTree+testListInstancesResponse = res+    "ListInstancesResponse"+    "fixture/ListInstancesResponse"+    (Proxy :: Proxy ListInstances)++testListClustersResponse :: ListClustersResponse -> TestTree+testListClustersResponse = res+    "ListClustersResponse"+    "fixture/ListClustersResponse"+    (Proxy :: Proxy ListClusters)