diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
 
 ## Version
 
-`1.4.0`
+`1.4.1`
 
 
 ## Description
diff --git a/amazonka-elasticache.cabal b/amazonka-elasticache.cabal
--- a/amazonka-elasticache.cabal
+++ b/amazonka-elasticache.cabal
@@ -1,5 +1,5 @@
 name:                  amazonka-elasticache
-version:               1.4.0
+version:               1.4.1
 synopsis:              Amazon ElastiCache SDK.
 homepage:              https://github.com/brendanhay/amazonka
 bug-reports:           https://github.com/brendanhay/amazonka/issues
@@ -81,6 +81,7 @@
         , Network.AWS.ElastiCache.DescribeReservedCacheNodes
         , Network.AWS.ElastiCache.DescribeReservedCacheNodesOfferings
         , Network.AWS.ElastiCache.DescribeSnapshots
+        , Network.AWS.ElastiCache.ListAllowedNodeTypeModifications
         , Network.AWS.ElastiCache.ListTagsForResource
         , Network.AWS.ElastiCache.ModifyCacheCluster
         , Network.AWS.ElastiCache.ModifyCacheParameterGroup
@@ -99,7 +100,7 @@
         , Network.AWS.ElastiCache.Types.Sum
 
     build-depends:
-          amazonka-core == 1.4.0.*
+          amazonka-core == 1.4.1.*
         , base          >= 4.7     && < 5
 
 test-suite amazonka-elasticache-test
@@ -119,9 +120,9 @@
         , Test.AWS.ElastiCache.Internal
 
     build-depends:
-          amazonka-core == 1.4.0.*
-        , amazonka-test == 1.4.0.*
-        , amazonka-elasticache == 1.4.0.*
+          amazonka-core == 1.4.1.*
+        , amazonka-test == 1.4.1.*
+        , amazonka-elasticache == 1.4.1.*
         , base
         , bytestring
         , tasty
diff --git a/fixture/ListAllowedNodeTypeModifications.yaml b/fixture/ListAllowedNodeTypeModifications.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListAllowedNodeTypeModifications.yaml
diff --git a/fixture/ListAllowedNodeTypeModificationsResponse.proto b/fixture/ListAllowedNodeTypeModificationsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListAllowedNodeTypeModificationsResponse.proto
diff --git a/gen/Network/AWS/ElastiCache.hs b/gen/Network/AWS/ElastiCache.hs
--- a/gen/Network/AWS/ElastiCache.hs
+++ b/gen/Network/AWS/ElastiCache.hs
@@ -249,6 +249,9 @@
     -- ** ResetCacheParameterGroup
     , module Network.AWS.ElastiCache.ResetCacheParameterGroup
 
+    -- ** ListAllowedNodeTypeModifications
+    , module Network.AWS.ElastiCache.ListAllowedNodeTypeModifications
+
     -- ** DescribeSnapshots (Paginated)
     , module Network.AWS.ElastiCache.DescribeSnapshots
 
@@ -494,6 +497,7 @@
     , PendingModifiedValues
     , pendingModifiedValues
     , pmvEngineVersion
+    , pmvCacheNodeType
     , pmvCacheNodeIdsToRemove
     , pmvNumCacheNodes
 
@@ -624,6 +628,7 @@
 import           Network.AWS.ElastiCache.DescribeReservedCacheNodes
 import           Network.AWS.ElastiCache.DescribeReservedCacheNodesOfferings
 import           Network.AWS.ElastiCache.DescribeSnapshots
+import           Network.AWS.ElastiCache.ListAllowedNodeTypeModifications
 import           Network.AWS.ElastiCache.ListTagsForResource
 import           Network.AWS.ElastiCache.ModifyCacheCluster
 import           Network.AWS.ElastiCache.ModifyCacheParameterGroup
diff --git a/gen/Network/AWS/ElastiCache/AddTagsToResource.hs b/gen/Network/AWS/ElastiCache/AddTagsToResource.hs
--- a/gen/Network/AWS/ElastiCache/AddTagsToResource.hs
+++ b/gen/Network/AWS/ElastiCache/AddTagsToResource.hs
@@ -77,8 +77,13 @@
     , _attrTags = mempty
     }
 
--- | The name of the resource to which the tags are to be added, for example
--- 'arn:aws:elasticache:us-west-2:0123456789:cluster:myCluster'.
+-- | The Amazon Resource Name (ARN) of the resource to which the tags are to
+-- be added, for example
+-- 'arn:aws:elasticache:us-west-2:0123456789:cluster:myCluster' or
+-- 'arn:aws:elasticache:us-west-2:0123456789:snapshot:mySnapshot'.
+--
+-- For more information on ARNs, go to
+-- <http://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon Resource Names (ARNs) and AWS Service Namespaces>.
 attrResourceName :: Lens' AddTagsToResource Text
 attrResourceName = lens _attrResourceName (\ s a -> s{_attrResourceName = a});
 
@@ -95,6 +100,8 @@
               (\ s h x -> parseXML x)
 
 instance Hashable AddTagsToResource
+
+instance NFData AddTagsToResource
 
 instance ToHeaders AddTagsToResource where
         toHeaders = const mempty
diff --git a/gen/Network/AWS/ElastiCache/AuthorizeCacheSecurityGroupIngress.hs b/gen/Network/AWS/ElastiCache/AuthorizeCacheSecurityGroupIngress.hs
--- a/gen/Network/AWS/ElastiCache/AuthorizeCacheSecurityGroupIngress.hs
+++ b/gen/Network/AWS/ElastiCache/AuthorizeCacheSecurityGroupIngress.hs
@@ -109,6 +109,8 @@
 
 instance Hashable AuthorizeCacheSecurityGroupIngress
 
+instance NFData AuthorizeCacheSecurityGroupIngress
+
 instance ToHeaders AuthorizeCacheSecurityGroupIngress
          where
         toHeaders = const mempty
@@ -159,3 +161,6 @@
 -- | The response status code.
 acsgirsResponseStatus :: Lens' AuthorizeCacheSecurityGroupIngressResponse Int
 acsgirsResponseStatus = lens _acsgirsResponseStatus (\ s a -> s{_acsgirsResponseStatus = a});
+
+instance NFData
+         AuthorizeCacheSecurityGroupIngressResponse
diff --git a/gen/Network/AWS/ElastiCache/CopySnapshot.hs b/gen/Network/AWS/ElastiCache/CopySnapshot.hs
--- a/gen/Network/AWS/ElastiCache/CopySnapshot.hs
+++ b/gen/Network/AWS/ElastiCache/CopySnapshot.hs
@@ -87,6 +87,8 @@
 
 instance Hashable CopySnapshot
 
+instance NFData CopySnapshot
+
 instance ToHeaders CopySnapshot where
         toHeaders = const mempty
 
@@ -130,3 +132,5 @@
 -- | The response status code.
 csrsResponseStatus :: Lens' CopySnapshotResponse Int
 csrsResponseStatus = lens _csrsResponseStatus (\ s a -> s{_csrsResponseStatus = a});
+
+instance NFData CopySnapshotResponse
diff --git a/gen/Network/AWS/ElastiCache/CreateCacheCluster.hs b/gen/Network/AWS/ElastiCache/CreateCacheCluster.hs
--- a/gen/Network/AWS/ElastiCache/CreateCacheCluster.hs
+++ b/gen/Network/AWS/ElastiCache/CreateCacheCluster.hs
@@ -172,6 +172,13 @@
 -- | The version number of the cache engine to be used for this cache
 -- cluster. To view the supported cache engine versions, use the
 -- /DescribeCacheEngineVersions/ action.
+--
+-- __Important:__ You can upgrade to a newer engine version (see
+-- <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/SelectEngine.html#VersionManagement Selecting a Cache Engine and Version>),
+-- but you cannot downgrade to an earlier engine version. If you want to
+-- use an earlier engine version, you must delete the existing cache
+-- cluster or replication group and create it anew with the earlier engine
+-- version.
 cccEngineVersion :: Lens' CreateCacheCluster (Maybe Text)
 cccEngineVersion = lens _cccEngineVersion (\ s a -> s{_cccEngineVersion = a});
 
@@ -279,10 +286,10 @@
 --
 -- Example: One Memcached node in each of three different Availability
 -- Zones:
--- 'PreferredAvailabilityZones.member.1=us-west-2a&PreferredAvailabilityZones.member.2=us-west-2b&PreferredAvailabilityZones.member.3=us-west-2c'
+-- 'PreferredAvailabilityZones.member.1=us-west-2a&amp;PreferredAvailabilityZones.member.2=us-west-2b&amp;PreferredAvailabilityZones.member.3=us-west-2c'
 --
 -- Example: All three Memcached nodes in one Availability Zone:
--- 'PreferredAvailabilityZones.member.1=us-west-2a&PreferredAvailabilityZones.member.2=us-west-2a&PreferredAvailabilityZones.member.3=us-west-2a'
+-- 'PreferredAvailabilityZones.member.1=us-west-2a&amp;PreferredAvailabilityZones.member.2=us-west-2a&amp;PreferredAvailabilityZones.member.3=us-west-2a'
 cccPreferredAvailabilityZones :: Lens' CreateCacheCluster [Text]
 cccPreferredAvailabilityZones = lens _cccPreferredAvailabilityZones (\ s a -> s{_cccPreferredAvailabilityZones = a}) . _Default . _Coerce;
 
@@ -427,6 +434,8 @@
 
 instance Hashable CreateCacheCluster
 
+instance NFData CreateCacheCluster
+
 instance ToHeaders CreateCacheCluster where
         toHeaders = const mempty
 
@@ -506,3 +515,5 @@
 -- | The response status code.
 cccrsResponseStatus :: Lens' CreateCacheClusterResponse Int
 cccrsResponseStatus = lens _cccrsResponseStatus (\ s a -> s{_cccrsResponseStatus = a});
+
+instance NFData CreateCacheClusterResponse
diff --git a/gen/Network/AWS/ElastiCache/CreateCacheParameterGroup.hs b/gen/Network/AWS/ElastiCache/CreateCacheParameterGroup.hs
--- a/gen/Network/AWS/ElastiCache/CreateCacheParameterGroup.hs
+++ b/gen/Network/AWS/ElastiCache/CreateCacheParameterGroup.hs
@@ -104,6 +104,8 @@
 
 instance Hashable CreateCacheParameterGroup
 
+instance NFData CreateCacheParameterGroup
+
 instance ToHeaders CreateCacheParameterGroup where
         toHeaders = const mempty
 
@@ -151,3 +153,5 @@
 -- | The response status code.
 ccpgrsResponseStatus :: Lens' CreateCacheParameterGroupResponse Int
 ccpgrsResponseStatus = lens _ccpgrsResponseStatus (\ s a -> s{_ccpgrsResponseStatus = a});
+
+instance NFData CreateCacheParameterGroupResponse
diff --git a/gen/Network/AWS/ElastiCache/CreateCacheSecurityGroup.hs b/gen/Network/AWS/ElastiCache/CreateCacheSecurityGroup.hs
--- a/gen/Network/AWS/ElastiCache/CreateCacheSecurityGroup.hs
+++ b/gen/Network/AWS/ElastiCache/CreateCacheSecurityGroup.hs
@@ -102,6 +102,8 @@
 
 instance Hashable CreateCacheSecurityGroup
 
+instance NFData CreateCacheSecurityGroup
+
 instance ToHeaders CreateCacheSecurityGroup where
         toHeaders = const mempty
 
@@ -147,3 +149,5 @@
 -- | The response status code.
 ccsgrsResponseStatus :: Lens' CreateCacheSecurityGroupResponse Int
 ccsgrsResponseStatus = lens _ccsgrsResponseStatus (\ s a -> s{_ccsgrsResponseStatus = a});
+
+instance NFData CreateCacheSecurityGroupResponse
diff --git a/gen/Network/AWS/ElastiCache/CreateCacheSubnetGroup.hs b/gen/Network/AWS/ElastiCache/CreateCacheSubnetGroup.hs
--- a/gen/Network/AWS/ElastiCache/CreateCacheSubnetGroup.hs
+++ b/gen/Network/AWS/ElastiCache/CreateCacheSubnetGroup.hs
@@ -106,6 +106,8 @@
 
 instance Hashable CreateCacheSubnetGroup
 
+instance NFData CreateCacheSubnetGroup
+
 instance ToHeaders CreateCacheSubnetGroup where
         toHeaders = const mempty
 
@@ -153,3 +155,5 @@
 -- | The response status code.
 crsResponseStatus :: Lens' CreateCacheSubnetGroupResponse Int
 crsResponseStatus = lens _crsResponseStatus (\ s a -> s{_crsResponseStatus = a});
+
+instance NFData CreateCacheSubnetGroupResponse
diff --git a/gen/Network/AWS/ElastiCache/CreateReplicationGroup.hs b/gen/Network/AWS/ElastiCache/CreateReplicationGroup.hs
--- a/gen/Network/AWS/ElastiCache/CreateReplicationGroup.hs
+++ b/gen/Network/AWS/ElastiCache/CreateReplicationGroup.hs
@@ -197,6 +197,13 @@
 -- | The version number of the cache engine to be used for the cache clusters
 -- in this replication group. To view the supported cache engine versions,
 -- use the /DescribeCacheEngineVersions/ action.
+--
+-- __Important:__ You can upgrade to a newer engine version (see
+-- <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/SelectEngine.html#VersionManagement Selecting a Cache Engine and Version>),
+-- but you cannot downgrade to an earlier engine version. If you want to
+-- use an earlier engine version, you must delete the existing cache
+-- cluster or replication group and create it anew with the earlier engine
+-- version.
 crgEngineVersion :: Lens' CreateReplicationGroup (Maybe Text)
 crgEngineVersion = lens _crgEngineVersion (\ s a -> s{_crgEngineVersion = a});
 
@@ -416,6 +423,8 @@
 
 instance Hashable CreateReplicationGroup
 
+instance NFData CreateReplicationGroup
+
 instance ToHeaders CreateReplicationGroup where
         toHeaders = const mempty
 
@@ -497,3 +506,5 @@
 -- | The response status code.
 crgrsResponseStatus :: Lens' CreateReplicationGroupResponse Int
 crgrsResponseStatus = lens _crgrsResponseStatus (\ s a -> s{_crgrsResponseStatus = a});
+
+instance NFData CreateReplicationGroupResponse
diff --git a/gen/Network/AWS/ElastiCache/CreateSnapshot.hs b/gen/Network/AWS/ElastiCache/CreateSnapshot.hs
--- a/gen/Network/AWS/ElastiCache/CreateSnapshot.hs
+++ b/gen/Network/AWS/ElastiCache/CreateSnapshot.hs
@@ -89,6 +89,8 @@
 
 instance Hashable CreateSnapshot
 
+instance NFData CreateSnapshot
+
 instance ToHeaders CreateSnapshot where
         toHeaders = const mempty
 
@@ -132,3 +134,5 @@
 -- | The response status code.
 crersResponseStatus :: Lens' CreateSnapshotResponse Int
 crersResponseStatus = lens _crersResponseStatus (\ s a -> s{_crersResponseStatus = a});
+
+instance NFData CreateSnapshotResponse
diff --git a/gen/Network/AWS/ElastiCache/DeleteCacheCluster.hs b/gen/Network/AWS/ElastiCache/DeleteCacheCluster.hs
--- a/gen/Network/AWS/ElastiCache/DeleteCacheCluster.hs
+++ b/gen/Network/AWS/ElastiCache/DeleteCacheCluster.hs
@@ -97,6 +97,8 @@
 
 instance Hashable DeleteCacheCluster
 
+instance NFData DeleteCacheCluster
+
 instance ToHeaders DeleteCacheCluster where
         toHeaders = const mempty
 
@@ -141,3 +143,5 @@
 -- | The response status code.
 dccrsResponseStatus :: Lens' DeleteCacheClusterResponse Int
 dccrsResponseStatus = lens _dccrsResponseStatus (\ s a -> s{_dccrsResponseStatus = a});
+
+instance NFData DeleteCacheClusterResponse
diff --git a/gen/Network/AWS/ElastiCache/DeleteCacheParameterGroup.hs b/gen/Network/AWS/ElastiCache/DeleteCacheParameterGroup.hs
--- a/gen/Network/AWS/ElastiCache/DeleteCacheParameterGroup.hs
+++ b/gen/Network/AWS/ElastiCache/DeleteCacheParameterGroup.hs
@@ -77,6 +77,8 @@
 
 instance Hashable DeleteCacheParameterGroup
 
+instance NFData DeleteCacheParameterGroup
+
 instance ToHeaders DeleteCacheParameterGroup where
         toHeaders = const mempty
 
@@ -102,3 +104,5 @@
 deleteCacheParameterGroupResponse
     :: DeleteCacheParameterGroupResponse
 deleteCacheParameterGroupResponse = DeleteCacheParameterGroupResponse'
+
+instance NFData DeleteCacheParameterGroupResponse
diff --git a/gen/Network/AWS/ElastiCache/DeleteCacheSecurityGroup.hs b/gen/Network/AWS/ElastiCache/DeleteCacheSecurityGroup.hs
--- a/gen/Network/AWS/ElastiCache/DeleteCacheSecurityGroup.hs
+++ b/gen/Network/AWS/ElastiCache/DeleteCacheSecurityGroup.hs
@@ -77,6 +77,8 @@
 
 instance Hashable DeleteCacheSecurityGroup
 
+instance NFData DeleteCacheSecurityGroup
+
 instance ToHeaders DeleteCacheSecurityGroup where
         toHeaders = const mempty
 
@@ -102,3 +104,5 @@
 deleteCacheSecurityGroupResponse
     :: DeleteCacheSecurityGroupResponse
 deleteCacheSecurityGroupResponse = DeleteCacheSecurityGroupResponse'
+
+instance NFData DeleteCacheSecurityGroupResponse
diff --git a/gen/Network/AWS/ElastiCache/DeleteCacheSubnetGroup.hs b/gen/Network/AWS/ElastiCache/DeleteCacheSubnetGroup.hs
--- a/gen/Network/AWS/ElastiCache/DeleteCacheSubnetGroup.hs
+++ b/gen/Network/AWS/ElastiCache/DeleteCacheSubnetGroup.hs
@@ -78,6 +78,8 @@
 
 instance Hashable DeleteCacheSubnetGroup
 
+instance NFData DeleteCacheSubnetGroup
+
 instance ToHeaders DeleteCacheSubnetGroup where
         toHeaders = const mempty
 
@@ -102,3 +104,5 @@
 deleteCacheSubnetGroupResponse
     :: DeleteCacheSubnetGroupResponse
 deleteCacheSubnetGroupResponse = DeleteCacheSubnetGroupResponse'
+
+instance NFData DeleteCacheSubnetGroupResponse
diff --git a/gen/Network/AWS/ElastiCache/DeleteReplicationGroup.hs b/gen/Network/AWS/ElastiCache/DeleteReplicationGroup.hs
--- a/gen/Network/AWS/ElastiCache/DeleteReplicationGroup.hs
+++ b/gen/Network/AWS/ElastiCache/DeleteReplicationGroup.hs
@@ -109,6 +109,8 @@
 
 instance Hashable DeleteReplicationGroup
 
+instance NFData DeleteReplicationGroup
+
 instance ToHeaders DeleteReplicationGroup where
         toHeaders = const mempty
 
@@ -155,3 +157,5 @@
 -- | The response status code.
 delrsResponseStatus :: Lens' DeleteReplicationGroupResponse Int
 delrsResponseStatus = lens _delrsResponseStatus (\ s a -> s{_delrsResponseStatus = a});
+
+instance NFData DeleteReplicationGroupResponse
diff --git a/gen/Network/AWS/ElastiCache/DeleteSnapshot.hs b/gen/Network/AWS/ElastiCache/DeleteSnapshot.hs
--- a/gen/Network/AWS/ElastiCache/DeleteSnapshot.hs
+++ b/gen/Network/AWS/ElastiCache/DeleteSnapshot.hs
@@ -79,6 +79,8 @@
 
 instance Hashable DeleteSnapshot
 
+instance NFData DeleteSnapshot
+
 instance ToHeaders DeleteSnapshot where
         toHeaders = const mempty
 
@@ -121,3 +123,5 @@
 -- | The response status code.
 dsrsResponseStatus :: Lens' DeleteSnapshotResponse Int
 dsrsResponseStatus = lens _dsrsResponseStatus (\ s a -> s{_dsrsResponseStatus = a});
+
+instance NFData DeleteSnapshotResponse
diff --git a/gen/Network/AWS/ElastiCache/DescribeCacheClusters.hs b/gen/Network/AWS/ElastiCache/DescribeCacheClusters.hs
--- a/gen/Network/AWS/ElastiCache/DescribeCacheClusters.hs
+++ b/gen/Network/AWS/ElastiCache/DescribeCacheClusters.hs
@@ -152,6 +152,8 @@
 
 instance Hashable DescribeCacheClusters
 
+instance NFData DescribeCacheClusters
+
 instance ToHeaders DescribeCacheClusters where
         toHeaders = const mempty
 
@@ -207,3 +209,5 @@
 -- | The response status code.
 drsResponseStatus :: Lens' DescribeCacheClustersResponse Int
 drsResponseStatus = lens _drsResponseStatus (\ s a -> s{_drsResponseStatus = a});
+
+instance NFData DescribeCacheClustersResponse
diff --git a/gen/Network/AWS/ElastiCache/DescribeCacheEngineVersions.hs b/gen/Network/AWS/ElastiCache/DescribeCacheEngineVersions.hs
--- a/gen/Network/AWS/ElastiCache/DescribeCacheEngineVersions.hs
+++ b/gen/Network/AWS/ElastiCache/DescribeCacheEngineVersions.hs
@@ -157,6 +157,8 @@
 
 instance Hashable DescribeCacheEngineVersions
 
+instance NFData DescribeCacheEngineVersions
+
 instance ToHeaders DescribeCacheEngineVersions where
         toHeaders = const mempty
 
@@ -216,3 +218,5 @@
 -- | The response status code.
 dcevrsResponseStatus :: Lens' DescribeCacheEngineVersionsResponse Int
 dcevrsResponseStatus = lens _dcevrsResponseStatus (\ s a -> s{_dcevrsResponseStatus = a});
+
+instance NFData DescribeCacheEngineVersionsResponse
diff --git a/gen/Network/AWS/ElastiCache/DescribeCacheParameterGroups.hs b/gen/Network/AWS/ElastiCache/DescribeCacheParameterGroups.hs
--- a/gen/Network/AWS/ElastiCache/DescribeCacheParameterGroups.hs
+++ b/gen/Network/AWS/ElastiCache/DescribeCacheParameterGroups.hs
@@ -122,6 +122,8 @@
 
 instance Hashable DescribeCacheParameterGroups
 
+instance NFData DescribeCacheParameterGroups
+
 instance ToHeaders DescribeCacheParameterGroups where
         toHeaders = const mempty
 
@@ -179,3 +181,5 @@
 -- | The response status code.
 dcpgrsResponseStatus :: Lens' DescribeCacheParameterGroupsResponse Int
 dcpgrsResponseStatus = lens _dcpgrsResponseStatus (\ s a -> s{_dcpgrsResponseStatus = a});
+
+instance NFData DescribeCacheParameterGroupsResponse
diff --git a/gen/Network/AWS/ElastiCache/DescribeCacheParameters.hs b/gen/Network/AWS/ElastiCache/DescribeCacheParameters.hs
--- a/gen/Network/AWS/ElastiCache/DescribeCacheParameters.hs
+++ b/gen/Network/AWS/ElastiCache/DescribeCacheParameters.hs
@@ -136,6 +136,8 @@
 
 instance Hashable DescribeCacheParameters
 
+instance NFData DescribeCacheParameters
+
 instance ToHeaders DescribeCacheParameters where
         toHeaders = const mempty
 
@@ -202,3 +204,5 @@
 -- | The response status code.
 dcprsResponseStatus :: Lens' DescribeCacheParametersResponse Int
 dcprsResponseStatus = lens _dcprsResponseStatus (\ s a -> s{_dcprsResponseStatus = a});
+
+instance NFData DescribeCacheParametersResponse
diff --git a/gen/Network/AWS/ElastiCache/DescribeCacheSecurityGroups.hs b/gen/Network/AWS/ElastiCache/DescribeCacheSecurityGroups.hs
--- a/gen/Network/AWS/ElastiCache/DescribeCacheSecurityGroups.hs
+++ b/gen/Network/AWS/ElastiCache/DescribeCacheSecurityGroups.hs
@@ -121,6 +121,8 @@
 
 instance Hashable DescribeCacheSecurityGroups
 
+instance NFData DescribeCacheSecurityGroups
+
 instance ToHeaders DescribeCacheSecurityGroups where
         toHeaders = const mempty
 
@@ -178,3 +180,5 @@
 -- | The response status code.
 dcsgsrsResponseStatus :: Lens' DescribeCacheSecurityGroupsResponse Int
 dcsgsrsResponseStatus = lens _dcsgsrsResponseStatus (\ s a -> s{_dcsgsrsResponseStatus = a});
+
+instance NFData DescribeCacheSecurityGroupsResponse
diff --git a/gen/Network/AWS/ElastiCache/DescribeCacheSubnetGroups.hs b/gen/Network/AWS/ElastiCache/DescribeCacheSubnetGroups.hs
--- a/gen/Network/AWS/ElastiCache/DescribeCacheSubnetGroups.hs
+++ b/gen/Network/AWS/ElastiCache/DescribeCacheSubnetGroups.hs
@@ -120,6 +120,8 @@
 
 instance Hashable DescribeCacheSubnetGroups
 
+instance NFData DescribeCacheSubnetGroups
+
 instance ToHeaders DescribeCacheSubnetGroups where
         toHeaders = const mempty
 
@@ -176,3 +178,5 @@
 -- | The response status code.
 dcsgrsResponseStatus :: Lens' DescribeCacheSubnetGroupsResponse Int
 dcsgrsResponseStatus = lens _dcsgrsResponseStatus (\ s a -> s{_dcsgrsResponseStatus = a});
+
+instance NFData DescribeCacheSubnetGroupsResponse
diff --git a/gen/Network/AWS/ElastiCache/DescribeEngineDefaultParameters.hs b/gen/Network/AWS/ElastiCache/DescribeEngineDefaultParameters.hs
--- a/gen/Network/AWS/ElastiCache/DescribeEngineDefaultParameters.hs
+++ b/gen/Network/AWS/ElastiCache/DescribeEngineDefaultParameters.hs
@@ -125,6 +125,8 @@
 
 instance Hashable DescribeEngineDefaultParameters
 
+instance NFData DescribeEngineDefaultParameters
+
 instance ToHeaders DescribeEngineDefaultParameters
          where
         toHeaders = const mempty
@@ -174,3 +176,6 @@
 -- | Undocumented member.
 dedprsEngineDefaults :: Lens' DescribeEngineDefaultParametersResponse EngineDefaults
 dedprsEngineDefaults = lens _dedprsEngineDefaults (\ s a -> s{_dedprsEngineDefaults = a});
+
+instance NFData
+         DescribeEngineDefaultParametersResponse
diff --git a/gen/Network/AWS/ElastiCache/DescribeEvents.hs b/gen/Network/AWS/ElastiCache/DescribeEvents.hs
--- a/gen/Network/AWS/ElastiCache/DescribeEvents.hs
+++ b/gen/Network/AWS/ElastiCache/DescribeEvents.hs
@@ -166,6 +166,8 @@
 
 instance Hashable DescribeEvents
 
+instance NFData DescribeEvents
+
 instance ToHeaders DescribeEvents where
         toHeaders = const mempty
 
@@ -223,3 +225,5 @@
 -- | The response status code.
 dersResponseStatus :: Lens' DescribeEventsResponse Int
 dersResponseStatus = lens _dersResponseStatus (\ s a -> s{_dersResponseStatus = a});
+
+instance NFData DescribeEventsResponse
diff --git a/gen/Network/AWS/ElastiCache/DescribeReplicationGroups.hs b/gen/Network/AWS/ElastiCache/DescribeReplicationGroups.hs
--- a/gen/Network/AWS/ElastiCache/DescribeReplicationGroups.hs
+++ b/gen/Network/AWS/ElastiCache/DescribeReplicationGroups.hs
@@ -125,6 +125,8 @@
 
 instance Hashable DescribeReplicationGroups
 
+instance NFData DescribeReplicationGroups
+
 instance ToHeaders DescribeReplicationGroups where
         toHeaders = const mempty
 
@@ -181,3 +183,5 @@
 -- | The response status code.
 drgrsResponseStatus :: Lens' DescribeReplicationGroupsResponse Int
 drgrsResponseStatus = lens _drgrsResponseStatus (\ s a -> s{_drgrsResponseStatus = a});
+
+instance NFData DescribeReplicationGroupsResponse
diff --git a/gen/Network/AWS/ElastiCache/DescribeReservedCacheNodes.hs b/gen/Network/AWS/ElastiCache/DescribeReservedCacheNodes.hs
--- a/gen/Network/AWS/ElastiCache/DescribeReservedCacheNodes.hs
+++ b/gen/Network/AWS/ElastiCache/DescribeReservedCacheNodes.hs
@@ -207,6 +207,8 @@
 
 instance Hashable DescribeReservedCacheNodes
 
+instance NFData DescribeReservedCacheNodes
+
 instance ToHeaders DescribeReservedCacheNodes where
         toHeaders = const mempty
 
@@ -269,3 +271,5 @@
 -- | The response status code.
 drcnrsResponseStatus :: Lens' DescribeReservedCacheNodesResponse Int
 drcnrsResponseStatus = lens _drcnrsResponseStatus (\ s a -> s{_drcnrsResponseStatus = a});
+
+instance NFData DescribeReservedCacheNodesResponse
diff --git a/gen/Network/AWS/ElastiCache/DescribeReservedCacheNodesOfferings.hs b/gen/Network/AWS/ElastiCache/DescribeReservedCacheNodesOfferings.hs
--- a/gen/Network/AWS/ElastiCache/DescribeReservedCacheNodesOfferings.hs
+++ b/gen/Network/AWS/ElastiCache/DescribeReservedCacheNodesOfferings.hs
@@ -202,6 +202,8 @@
 
 instance Hashable DescribeReservedCacheNodesOfferings
 
+instance NFData DescribeReservedCacheNodesOfferings
+
 instance ToHeaders
          DescribeReservedCacheNodesOfferings where
         toHeaders = const mempty
@@ -267,3 +269,6 @@
 -- | The response status code.
 drcnorsResponseStatus :: Lens' DescribeReservedCacheNodesOfferingsResponse Int
 drcnorsResponseStatus = lens _drcnorsResponseStatus (\ s a -> s{_drcnorsResponseStatus = a});
+
+instance NFData
+         DescribeReservedCacheNodesOfferingsResponse
diff --git a/gen/Network/AWS/ElastiCache/DescribeSnapshots.hs b/gen/Network/AWS/ElastiCache/DescribeSnapshots.hs
--- a/gen/Network/AWS/ElastiCache/DescribeSnapshots.hs
+++ b/gen/Network/AWS/ElastiCache/DescribeSnapshots.hs
@@ -143,6 +143,8 @@
 
 instance Hashable DescribeSnapshots
 
+instance NFData DescribeSnapshots
+
 instance ToHeaders DescribeSnapshots where
         toHeaders = const mempty
 
@@ -202,3 +204,5 @@
 -- | The response status code.
 dssrsResponseStatus :: Lens' DescribeSnapshotsResponse Int
 dssrsResponseStatus = lens _dssrsResponseStatus (\ s a -> s{_dssrsResponseStatus = a});
+
+instance NFData DescribeSnapshotsResponse
diff --git a/gen/Network/AWS/ElastiCache/ListAllowedNodeTypeModifications.hs b/gen/Network/AWS/ElastiCache/ListAllowedNodeTypeModifications.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/ElastiCache/ListAllowedNodeTypeModifications.hs
@@ -0,0 +1,173 @@
+{-# 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.ElastiCache.ListAllowedNodeTypeModifications
+-- Copyright   : (c) 2013-2016 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)
+--
+-- The 'ListAllowedNodeTypeModifications' action lists all available node
+-- types that you can scale your Redis cluster\'s or replication group\'s
+-- current node type up to.
+--
+-- When you use the 'ModifyCacheCluster' or 'ModifyReplicationGroup' APIs
+-- to scale up your cluster or replication group, the value of the
+-- /CacheNodeType/ parameter must be one of the node types returned by this
+-- action.
+module Network.AWS.ElastiCache.ListAllowedNodeTypeModifications
+    (
+    -- * Creating a Request
+      listAllowedNodeTypeModifications
+    , ListAllowedNodeTypeModifications
+    -- * Request Lenses
+    , lantmCacheClusterId
+    , lantmReplicationGroupId
+
+    -- * Destructuring the Response
+    , listAllowedNodeTypeModificationsResponse
+    , ListAllowedNodeTypeModificationsResponse
+    -- * Response Lenses
+    , lantmrsScaleUpModifications
+    , lantmrsResponseStatus
+    ) where
+
+import           Network.AWS.ElastiCache.Types
+import           Network.AWS.ElastiCache.Types.Product
+import           Network.AWS.Lens
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | The input parameters for the /ListAllowedNodeTypeModifications/ action.
+--
+-- /See:/ 'listAllowedNodeTypeModifications' smart constructor.
+data ListAllowedNodeTypeModifications = ListAllowedNodeTypeModifications'
+    { _lantmCacheClusterId     :: !(Maybe Text)
+    , _lantmReplicationGroupId :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListAllowedNodeTypeModifications' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lantmCacheClusterId'
+--
+-- * 'lantmReplicationGroupId'
+listAllowedNodeTypeModifications
+    :: ListAllowedNodeTypeModifications
+listAllowedNodeTypeModifications =
+    ListAllowedNodeTypeModifications'
+    { _lantmCacheClusterId = Nothing
+    , _lantmReplicationGroupId = Nothing
+    }
+
+-- | The name of the cache cluster you want to scale up to a larger node
+-- instanced type. ElastiCache uses the cluster id to identify the current
+-- node type of this cluster and from that to to create a list of node
+-- types you can scale up to.
+--
+-- __Important:__
+-- You must provide a value for either the /CacheClusterId/ or the
+-- /ReplicationGroupId/.
+lantmCacheClusterId :: Lens' ListAllowedNodeTypeModifications (Maybe Text)
+lantmCacheClusterId = lens _lantmCacheClusterId (\ s a -> s{_lantmCacheClusterId = a});
+
+-- | The name of the replication group want to scale up to a larger node
+-- type. ElastiCache uses the replication group id to identify the current
+-- node type being used by this replication group, and from that to create
+-- a list of node types you can scale up to.
+--
+-- __Important:__
+-- You must provide a value for either the /CacheClusterId/ or the
+-- /ReplicationGroupId/.
+lantmReplicationGroupId :: Lens' ListAllowedNodeTypeModifications (Maybe Text)
+lantmReplicationGroupId = lens _lantmReplicationGroupId (\ s a -> s{_lantmReplicationGroupId = a});
+
+instance AWSRequest ListAllowedNodeTypeModifications
+         where
+        type Rs ListAllowedNodeTypeModifications =
+             ListAllowedNodeTypeModificationsResponse
+        request = postQuery elastiCache
+        response
+          = receiveXMLWrapper
+              "ListAllowedNodeTypeModificationsResult"
+              (\ s h x ->
+                 ListAllowedNodeTypeModificationsResponse' <$>
+                   (x .@? "ScaleUpModifications" .!@ mempty >>=
+                      may (parseXMLList "member"))
+                     <*> (pure (fromEnum s)))
+
+instance Hashable ListAllowedNodeTypeModifications
+
+instance NFData ListAllowedNodeTypeModifications
+
+instance ToHeaders ListAllowedNodeTypeModifications
+         where
+        toHeaders = const mempty
+
+instance ToPath ListAllowedNodeTypeModifications
+         where
+        toPath = const "/"
+
+instance ToQuery ListAllowedNodeTypeModifications
+         where
+        toQuery ListAllowedNodeTypeModifications'{..}
+          = mconcat
+              ["Action" =:
+                 ("ListAllowedNodeTypeModifications" :: ByteString),
+               "Version" =: ("2015-02-02" :: ByteString),
+               "CacheClusterId" =: _lantmCacheClusterId,
+               "ReplicationGroupId" =: _lantmReplicationGroupId]
+
+-- | Represents the allowed node types you can use to modify your cache
+-- cluster or replication group.
+--
+-- /See:/ 'listAllowedNodeTypeModificationsResponse' smart constructor.
+data ListAllowedNodeTypeModificationsResponse = ListAllowedNodeTypeModificationsResponse'
+    { _lantmrsScaleUpModifications :: !(Maybe [Text])
+    , _lantmrsResponseStatus       :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListAllowedNodeTypeModificationsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lantmrsScaleUpModifications'
+--
+-- * 'lantmrsResponseStatus'
+listAllowedNodeTypeModificationsResponse
+    :: Int -- ^ 'lantmrsResponseStatus'
+    -> ListAllowedNodeTypeModificationsResponse
+listAllowedNodeTypeModificationsResponse pResponseStatus_ =
+    ListAllowedNodeTypeModificationsResponse'
+    { _lantmrsScaleUpModifications = Nothing
+    , _lantmrsResponseStatus = pResponseStatus_
+    }
+
+-- | A string list, each element of which specifies a cache node type which
+-- you can use to scale your cache cluster or replication group.
+--
+-- When scaling up a Redis cluster or replication group using
+-- 'ModifyCacheCluster' or 'ModifyReplicationGroup', use a value from this
+-- list for the /CacheNodeType/ parameter.
+lantmrsScaleUpModifications :: Lens' ListAllowedNodeTypeModificationsResponse [Text]
+lantmrsScaleUpModifications = lens _lantmrsScaleUpModifications (\ s a -> s{_lantmrsScaleUpModifications = a}) . _Default . _Coerce;
+
+-- | The response status code.
+lantmrsResponseStatus :: Lens' ListAllowedNodeTypeModificationsResponse Int
+lantmrsResponseStatus = lens _lantmrsResponseStatus (\ s a -> s{_lantmrsResponseStatus = a});
+
+instance NFData
+         ListAllowedNodeTypeModificationsResponse
diff --git a/gen/Network/AWS/ElastiCache/ListTagsForResource.hs b/gen/Network/AWS/ElastiCache/ListTagsForResource.hs
--- a/gen/Network/AWS/ElastiCache/ListTagsForResource.hs
+++ b/gen/Network/AWS/ElastiCache/ListTagsForResource.hs
@@ -68,8 +68,13 @@
     { _ltfrResourceName = pResourceName_
     }
 
--- | The name of the resource for which you want the list of tags, for
--- example 'arn:aws:elasticache:us-west-2:0123456789:cluster:myCluster'.
+-- | The Amazon Resource Name (ARN) of the resource for which you want the
+-- list of tags, for example
+-- 'arn:aws:elasticache:us-west-2:0123456789:cluster:myCluster' or
+-- 'arn:aws:elasticache:us-west-2:0123456789:snapshot:mySnapshot'.
+--
+-- For more information on ARNs, go to
+-- <http://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon Resource Names (ARNs) and AWS Service Namespaces>.
 ltfrResourceName :: Lens' ListTagsForResource Text
 ltfrResourceName = lens _ltfrResourceName (\ s a -> s{_ltfrResourceName = a});
 
@@ -81,6 +86,8 @@
               (\ s h x -> parseXML x)
 
 instance Hashable ListTagsForResource
+
+instance NFData ListTagsForResource
 
 instance ToHeaders ListTagsForResource where
         toHeaders = const mempty
diff --git a/gen/Network/AWS/ElastiCache/ModifyCacheCluster.hs b/gen/Network/AWS/ElastiCache/ModifyCacheCluster.hs
--- a/gen/Network/AWS/ElastiCache/ModifyCacheCluster.hs
+++ b/gen/Network/AWS/ElastiCache/ModifyCacheCluster.hs
@@ -29,6 +29,7 @@
     , ModifyCacheCluster
     -- * Request Lenses
     , mccEngineVersion
+    , mccCacheNodeType
     , mccSecurityGroupIds
     , mccAutoMinorVersionUpgrade
     , mccCacheParameterGroupName
@@ -65,6 +66,7 @@
 -- /See:/ 'modifyCacheCluster' smart constructor.
 data ModifyCacheCluster = ModifyCacheCluster'
     { _mccEngineVersion              :: !(Maybe Text)
+    , _mccCacheNodeType              :: !(Maybe Text)
     , _mccSecurityGroupIds           :: !(Maybe [Text])
     , _mccAutoMinorVersionUpgrade    :: !(Maybe Bool)
     , _mccCacheParameterGroupName    :: !(Maybe Text)
@@ -88,6 +90,8 @@
 --
 -- * 'mccEngineVersion'
 --
+-- * 'mccCacheNodeType'
+--
 -- * 'mccSecurityGroupIds'
 --
 -- * 'mccAutoMinorVersionUpgrade'
@@ -123,6 +127,7 @@
 modifyCacheCluster pCacheClusterId_ =
     ModifyCacheCluster'
     { _mccEngineVersion = Nothing
+    , _mccCacheNodeType = Nothing
     , _mccSecurityGroupIds = Nothing
     , _mccAutoMinorVersionUpgrade = Nothing
     , _mccCacheParameterGroupName = Nothing
@@ -141,9 +146,21 @@
     }
 
 -- | The upgraded version of the cache engine to be run on the cache nodes.
+--
+-- __Important:__ You can upgrade to a newer engine version (see
+-- <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/SelectEngine.html#VersionManagement Selecting a Cache Engine and Version>),
+-- but you cannot downgrade to an earlier engine version. If you want to
+-- use an earlier engine version, you must delete the existing cache
+-- cluster and create it anew with the earlier engine version.
 mccEngineVersion :: Lens' ModifyCacheCluster (Maybe Text)
 mccEngineVersion = lens _mccEngineVersion (\ s a -> s{_mccEngineVersion = a});
 
+-- | A valid cache node type that you want to scale this cache cluster to.
+-- The value of this parameter must be one of the /ScaleUpModifications/
+-- values returned by the 'ListAllowedCacheNodeTypeModification' action.
+mccCacheNodeType :: Lens' ModifyCacheCluster (Maybe Text)
+mccCacheNodeType = lens _mccCacheNodeType (\ s a -> s{_mccCacheNodeType = a});
+
 -- | Specifies the VPC Security Groups associated with the cache cluster.
 --
 -- This parameter can be used only with clusters that are created in an
@@ -202,22 +219,33 @@
 --
 -- __Impact of new add\/remove requests upon pending requests__
 --
--- >   --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--- >   Scenarios    Pending action   New Request   Results
--- >   ------------ ---------------- ------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--- >   Scenario-1   Delete           Delete        The new delete, pending or immediate, replaces the pending delete.
--- >
--- >   Scenario-2   Delete           Create        The new create, pending or immediate, replaces the pending delete.
--- >
--- >   Scenario-3   Create           Delete        The new delete, pending or immediate, replaces the pending create.
--- >
--- >   Scenario-4   Create           Create        The new create is added to the pending create.
--- >                                               __Important:__
--- >                                               If the new create request is __Apply Immediately - Yes__, all creates are performed immediately. If the new create request is __Apply Immediately - No__, all creates are pending.
--- >   --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+-- -   Scenario-1
+--     -   Pending Action: Delete
+--     -   New Request: Delete
+--     -   Result: The new delete, pending or immediate, replaces the
+--         pending delete.
+-- -   Scenario-2
+--     -   Pending Action: Delete
+--     -   New Request: Create
+--     -   Result: The new create, pending or immediate, replaces the
+--         pending delete.
+-- -   Scenario-3
+--     -   Pending Action: Create
+--     -   New Request: Delete
+--     -   Result: The new delete, pending or immediate, replaces the
+--         pending create.
+-- -   Scenario-4
+--     -   Pending Action: Create
+--     -   New Request: Create
+--     -   Result: The new create is added to the pending create.
+--         __Important:__
+--         If the new create request is __Apply Immediately - Yes__, all
+--         creates are performed immediately.
+--         If the new create request is __Apply Immediately - No__, all
+--         creates are pending.
 --
 -- Example:
--- 'NewAvailabilityZones.member.1=us-west-2a&NewAvailabilityZones.member.2=us-west-2b&NewAvailabilityZones.member.3=us-west-2c'
+-- 'NewAvailabilityZones.member.1=us-west-2a&amp;NewAvailabilityZones.member.2=us-west-2b&amp;NewAvailabilityZones.member.3=us-west-2c'
 mccNewAvailabilityZones :: Lens' ModifyCacheCluster [Text]
 mccNewAvailabilityZones = lens _mccNewAvailabilityZones (\ s a -> s{_mccNewAvailabilityZones = a}) . _Default . _Coerce;
 
@@ -380,6 +408,8 @@
 
 instance Hashable ModifyCacheCluster
 
+instance NFData ModifyCacheCluster
+
 instance ToHeaders ModifyCacheCluster where
         toHeaders = const mempty
 
@@ -392,6 +422,7 @@
               ["Action" =: ("ModifyCacheCluster" :: ByteString),
                "Version" =: ("2015-02-02" :: ByteString),
                "EngineVersion" =: _mccEngineVersion,
+               "CacheNodeType" =: _mccCacheNodeType,
                "SecurityGroupIds" =:
                  toQuery
                    (toQueryList "SecurityGroupId" <$>
@@ -454,3 +485,5 @@
 -- | The response status code.
 mccrsResponseStatus :: Lens' ModifyCacheClusterResponse Int
 mccrsResponseStatus = lens _mccrsResponseStatus (\ s a -> s{_mccrsResponseStatus = a});
+
+instance NFData ModifyCacheClusterResponse
diff --git a/gen/Network/AWS/ElastiCache/ModifyCacheParameterGroup.hs b/gen/Network/AWS/ElastiCache/ModifyCacheParameterGroup.hs
--- a/gen/Network/AWS/ElastiCache/ModifyCacheParameterGroup.hs
+++ b/gen/Network/AWS/ElastiCache/ModifyCacheParameterGroup.hs
@@ -88,6 +88,8 @@
 
 instance Hashable ModifyCacheParameterGroup
 
+instance NFData ModifyCacheParameterGroup
+
 instance ToHeaders ModifyCacheParameterGroup where
         toHeaders = const mempty
 
diff --git a/gen/Network/AWS/ElastiCache/ModifyCacheSubnetGroup.hs b/gen/Network/AWS/ElastiCache/ModifyCacheSubnetGroup.hs
--- a/gen/Network/AWS/ElastiCache/ModifyCacheSubnetGroup.hs
+++ b/gen/Network/AWS/ElastiCache/ModifyCacheSubnetGroup.hs
@@ -103,6 +103,8 @@
 
 instance Hashable ModifyCacheSubnetGroup
 
+instance NFData ModifyCacheSubnetGroup
+
 instance ToHeaders ModifyCacheSubnetGroup where
         toHeaders = const mempty
 
@@ -151,3 +153,5 @@
 -- | The response status code.
 mcsgrsResponseStatus :: Lens' ModifyCacheSubnetGroupResponse Int
 mcsgrsResponseStatus = lens _mcsgrsResponseStatus (\ s a -> s{_mcsgrsResponseStatus = a});
+
+instance NFData ModifyCacheSubnetGroupResponse
diff --git a/gen/Network/AWS/ElastiCache/ModifyReplicationGroup.hs b/gen/Network/AWS/ElastiCache/ModifyReplicationGroup.hs
--- a/gen/Network/AWS/ElastiCache/ModifyReplicationGroup.hs
+++ b/gen/Network/AWS/ElastiCache/ModifyReplicationGroup.hs
@@ -28,6 +28,7 @@
     -- * Request Lenses
     , mrgAutomaticFailoverEnabled
     , mrgEngineVersion
+    , mrgCacheNodeType
     , mrgSnapshottingClusterId
     , mrgSecurityGroupIds
     , mrgAutoMinorVersionUpgrade
@@ -64,6 +65,7 @@
 data ModifyReplicationGroup = ModifyReplicationGroup'
     { _mrgAutomaticFailoverEnabled    :: !(Maybe Bool)
     , _mrgEngineVersion               :: !(Maybe Text)
+    , _mrgCacheNodeType               :: !(Maybe Text)
     , _mrgSnapshottingClusterId       :: !(Maybe Text)
     , _mrgSecurityGroupIds            :: !(Maybe [Text])
     , _mrgAutoMinorVersionUpgrade     :: !(Maybe Bool)
@@ -88,6 +90,8 @@
 --
 -- * 'mrgEngineVersion'
 --
+-- * 'mrgCacheNodeType'
+--
 -- * 'mrgSnapshottingClusterId'
 --
 -- * 'mrgSecurityGroupIds'
@@ -122,6 +126,7 @@
     ModifyReplicationGroup'
     { _mrgAutomaticFailoverEnabled = Nothing
     , _mrgEngineVersion = Nothing
+    , _mrgCacheNodeType = Nothing
     , _mrgSnapshottingClusterId = Nothing
     , _mrgSecurityGroupIds = Nothing
     , _mrgAutoMinorVersionUpgrade = Nothing
@@ -152,9 +157,22 @@
 
 -- | The upgraded version of the cache engine to be run on the cache clusters
 -- in the replication group.
+--
+-- __Important:__ You can upgrade to a newer engine version (see
+-- <http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/SelectEngine.html#VersionManagement Selecting a Cache Engine and Version>),
+-- but you cannot downgrade to an earlier engine version. If you want to
+-- use an earlier engine version, you must delete the existing replication
+-- group and create it anew with the earlier engine version.
 mrgEngineVersion :: Lens' ModifyReplicationGroup (Maybe Text)
 mrgEngineVersion = lens _mrgEngineVersion (\ s a -> s{_mrgEngineVersion = a});
 
+-- | A valid cache node type that you want to scale this replication group
+-- to. The value of this parameter must be one of the
+-- /ScaleUpModifications/ values returned by the
+-- 'ListAllowedCacheNodeTypeModification' action.
+mrgCacheNodeType :: Lens' ModifyReplicationGroup (Maybe Text)
+mrgCacheNodeType = lens _mrgCacheNodeType (\ s a -> s{_mrgCacheNodeType = a});
+
 -- | The cache cluster ID that will be used as the daily snapshot source for
 -- the replication group.
 mrgSnapshottingClusterId :: Lens' ModifyReplicationGroup (Maybe Text)
@@ -194,10 +212,10 @@
 mrgSnapshotWindow :: Lens' ModifyReplicationGroup (Maybe Text)
 mrgSnapshotWindow = lens _mrgSnapshotWindow (\ s a -> s{_mrgSnapshotWindow = a});
 
--- | If this parameter is specified, ElastiCache will promote each of the
--- cache clusters in the specified replication group to the primary role.
--- The nodes of all other cache clusters in the replication group will be
--- read replicas.
+-- | If this parameter is specified, ElastiCache will promote the specified
+-- cluster in the specified replication group to the primary role. The
+-- nodes of all other clusters in the replication group will be read
+-- replicas.
 mrgPrimaryClusterId :: Lens' ModifyReplicationGroup (Maybe Text)
 mrgPrimaryClusterId = lens _mrgPrimaryClusterId (\ s a -> s{_mrgPrimaryClusterId = a});
 
@@ -286,6 +304,8 @@
 
 instance Hashable ModifyReplicationGroup
 
+instance NFData ModifyReplicationGroup
+
 instance ToHeaders ModifyReplicationGroup where
         toHeaders = const mempty
 
@@ -301,6 +321,7 @@
                "AutomaticFailoverEnabled" =:
                  _mrgAutomaticFailoverEnabled,
                "EngineVersion" =: _mrgEngineVersion,
+               "CacheNodeType" =: _mrgCacheNodeType,
                "SnapshottingClusterId" =: _mrgSnapshottingClusterId,
                "SecurityGroupIds" =:
                  toQuery
@@ -357,3 +378,5 @@
 -- | The response status code.
 mrgrsResponseStatus :: Lens' ModifyReplicationGroupResponse Int
 mrgrsResponseStatus = lens _mrgrsResponseStatus (\ s a -> s{_mrgrsResponseStatus = a});
+
+instance NFData ModifyReplicationGroupResponse
diff --git a/gen/Network/AWS/ElastiCache/PurchaseReservedCacheNodesOffering.hs b/gen/Network/AWS/ElastiCache/PurchaseReservedCacheNodesOffering.hs
--- a/gen/Network/AWS/ElastiCache/PurchaseReservedCacheNodesOffering.hs
+++ b/gen/Network/AWS/ElastiCache/PurchaseReservedCacheNodesOffering.hs
@@ -81,6 +81,11 @@
 
 -- | A customer-specified identifier to track this reservation.
 --
+-- __Note:__
+-- The Reserved Cache Node ID is an unique customer-specified identifier to
+-- track this reservation. If this parameter is not specified, ElastiCache
+-- automatically generates an identifier for the reservation.
+--
 -- Example: myreservationID
 prcnoReservedCacheNodeId :: Lens' PurchaseReservedCacheNodesOffering (Maybe Text)
 prcnoReservedCacheNodeId = lens _prcnoReservedCacheNodeId (\ s a -> s{_prcnoReservedCacheNodeId = a});
@@ -105,6 +110,8 @@
 
 instance Hashable PurchaseReservedCacheNodesOffering
 
+instance NFData PurchaseReservedCacheNodesOffering
+
 instance ToHeaders PurchaseReservedCacheNodesOffering
          where
         toHeaders = const mempty
@@ -154,3 +161,6 @@
 -- | The response status code.
 prcnorsResponseStatus :: Lens' PurchaseReservedCacheNodesOfferingResponse Int
 prcnorsResponseStatus = lens _prcnorsResponseStatus (\ s a -> s{_prcnorsResponseStatus = a});
+
+instance NFData
+         PurchaseReservedCacheNodesOfferingResponse
diff --git a/gen/Network/AWS/ElastiCache/RebootCacheCluster.hs b/gen/Network/AWS/ElastiCache/RebootCacheCluster.hs
--- a/gen/Network/AWS/ElastiCache/RebootCacheCluster.hs
+++ b/gen/Network/AWS/ElastiCache/RebootCacheCluster.hs
@@ -100,6 +100,8 @@
 
 instance Hashable RebootCacheCluster
 
+instance NFData RebootCacheCluster
+
 instance ToHeaders RebootCacheCluster where
         toHeaders = const mempty
 
@@ -144,3 +146,5 @@
 -- | The response status code.
 rccrsResponseStatus :: Lens' RebootCacheClusterResponse Int
 rccrsResponseStatus = lens _rccrsResponseStatus (\ s a -> s{_rccrsResponseStatus = a});
+
+instance NFData RebootCacheClusterResponse
diff --git a/gen/Network/AWS/ElastiCache/RemoveTagsFromResource.hs b/gen/Network/AWS/ElastiCache/RemoveTagsFromResource.hs
--- a/gen/Network/AWS/ElastiCache/RemoveTagsFromResource.hs
+++ b/gen/Network/AWS/ElastiCache/RemoveTagsFromResource.hs
@@ -67,9 +67,13 @@
     , _rtfrTagKeys = mempty
     }
 
--- | The name of the ElastiCache resource from which you want the listed tags
--- removed, for example
--- 'arn:aws:elasticache:us-west-2:0123456789:cluster:myCluster'.
+-- | The Amazon Resource Name (ARN) of the resource from which you want the
+-- tags removed, for example
+-- 'arn:aws:elasticache:us-west-2:0123456789:cluster:myCluster' or
+-- 'arn:aws:elasticache:us-west-2:0123456789:snapshot:mySnapshot'.
+--
+-- For more information on ARNs, go to
+-- <http://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon Resource Names (ARNs) and AWS Service Namespaces>.
 rtfrResourceName :: Lens' RemoveTagsFromResource Text
 rtfrResourceName = lens _rtfrResourceName (\ s a -> s{_rtfrResourceName = a});
 
@@ -88,6 +92,8 @@
               (\ s h x -> parseXML x)
 
 instance Hashable RemoveTagsFromResource
+
+instance NFData RemoveTagsFromResource
 
 instance ToHeaders RemoveTagsFromResource where
         toHeaders = const mempty
diff --git a/gen/Network/AWS/ElastiCache/ResetCacheParameterGroup.hs b/gen/Network/AWS/ElastiCache/ResetCacheParameterGroup.hs
--- a/gen/Network/AWS/ElastiCache/ResetCacheParameterGroup.hs
+++ b/gen/Network/AWS/ElastiCache/ResetCacheParameterGroup.hs
@@ -102,6 +102,8 @@
 
 instance Hashable ResetCacheParameterGroup
 
+instance NFData ResetCacheParameterGroup
+
 instance ToHeaders ResetCacheParameterGroup where
         toHeaders = const mempty
 
diff --git a/gen/Network/AWS/ElastiCache/RevokeCacheSecurityGroupIngress.hs b/gen/Network/AWS/ElastiCache/RevokeCacheSecurityGroupIngress.hs
--- a/gen/Network/AWS/ElastiCache/RevokeCacheSecurityGroupIngress.hs
+++ b/gen/Network/AWS/ElastiCache/RevokeCacheSecurityGroupIngress.hs
@@ -104,6 +104,8 @@
 
 instance Hashable RevokeCacheSecurityGroupIngress
 
+instance NFData RevokeCacheSecurityGroupIngress
+
 instance ToHeaders RevokeCacheSecurityGroupIngress
          where
         toHeaders = const mempty
@@ -153,3 +155,6 @@
 -- | The response status code.
 rcsgirsResponseStatus :: Lens' RevokeCacheSecurityGroupIngressResponse Int
 rcsgirsResponseStatus = lens _rcsgirsResponseStatus (\ s a -> s{_rcsgirsResponseStatus = a});
+
+instance NFData
+         RevokeCacheSecurityGroupIngressResponse
diff --git a/gen/Network/AWS/ElastiCache/Types.hs b/gen/Network/AWS/ElastiCache/Types.hs
--- a/gen/Network/AWS/ElastiCache/Types.hs
+++ b/gen/Network/AWS/ElastiCache/Types.hs
@@ -263,6 +263,7 @@
     , PendingModifiedValues
     , pendingModifiedValues
     , pmvEngineVersion
+    , pmvCacheNodeType
     , pmvCacheNodeIdsToRemove
     , pmvNumCacheNodes
 
@@ -399,6 +400,8 @@
       | has (hasCode "ThrottlingException" . hasStatus 400) e =
           Just "throttling_exception"
       | has (hasCode "Throttling" . hasStatus 400) e = Just "throttling"
+      | has (hasStatus 504) e = Just "gateway_timeout"
+      | has (hasStatus 502) e = Just "bad_gateway"
       | has (hasStatus 503) e = Just "service_unavailable"
       | has (hasStatus 500) e = Just "general_server_error"
       | has (hasStatus 509) e = Just "limit_exceeded"
diff --git a/gen/Network/AWS/ElastiCache/Types/Product.hs b/gen/Network/AWS/ElastiCache/Types/Product.hs
--- a/gen/Network/AWS/ElastiCache/Types/Product.hs
+++ b/gen/Network/AWS/ElastiCache/Types/Product.hs
@@ -49,6 +49,8 @@
 
 instance Hashable AvailabilityZone
 
+instance NFData AvailabilityZone
+
 -- | Contains all of the attributes of a specific cache cluster.
 --
 -- /See:/ 'cacheCluster' smart constructor.
@@ -152,8 +154,7 @@
     , _ccNumCacheNodes = Nothing
     }
 
--- | The version of the cache engine version that is used in this cache
--- cluster.
+-- | The version of the cache engine that is used in this cache cluster.
 ccEngineVersion :: Lens' CacheCluster (Maybe Text)
 ccEngineVersion = lens _ccEngineVersion (\ s a -> s{_ccEngineVersion = a});
 
@@ -342,6 +343,8 @@
 
 instance Hashable CacheCluster
 
+instance NFData CacheCluster
+
 -- | Provides all of the details about a particular cache engine version.
 --
 -- /See:/ 'cacheEngineVersion' smart constructor.
@@ -409,6 +412,8 @@
 
 instance Hashable CacheEngineVersion
 
+instance NFData CacheEngineVersion
+
 -- | Represents an individual cache node within a cache cluster. Each cache
 -- node runs its own instance of the cluster\'s protocol-compliant caching
 -- software - either Memcached or Redis.
@@ -529,6 +534,8 @@
 
 instance Hashable CacheNode
 
+instance NFData CacheNode
+
 -- | A parameter that has a different value for each cache node type it is
 -- applied to. For example, in a Redis cache cluster, a /cache.m1.large/
 -- cache node type would have a larger /maxmemory/ value than a
@@ -629,6 +636,8 @@
 
 instance Hashable CacheNodeTypeSpecificParameter
 
+instance NFData CacheNodeTypeSpecificParameter
+
 -- | A value that applies only to a certain cache node type.
 --
 -- /See:/ 'cacheNodeTypeSpecificValue' smart constructor.
@@ -667,6 +676,8 @@
 
 instance Hashable CacheNodeTypeSpecificValue
 
+instance NFData CacheNodeTypeSpecificValue
+
 -- | Represents the output of a /CreateCacheParameterGroup/ action.
 --
 -- /See:/ 'cacheParameterGroup' smart constructor.
@@ -716,6 +727,8 @@
 
 instance Hashable CacheParameterGroup
 
+instance NFData CacheParameterGroup
+
 -- | Represents the output of one of the following actions:
 --
 -- -   /ModifyCacheParameterGroup/
@@ -749,6 +762,8 @@
 
 instance Hashable CacheParameterGroupNameMessage
 
+instance NFData CacheParameterGroupNameMessage
+
 -- | The status of the cache parameter group.
 --
 -- /See:/ 'cacheParameterGroupStatus' smart constructor.
@@ -800,6 +815,8 @@
 
 instance Hashable CacheParameterGroupStatus
 
+instance NFData CacheParameterGroupStatus
+
 -- | Represents the output of one of the following actions:
 --
 -- -   /AuthorizeCacheSecurityGroupIngress/
@@ -864,6 +881,8 @@
 
 instance Hashable CacheSecurityGroup
 
+instance NFData CacheSecurityGroup
+
 -- | Represents a cache cluster\'s status within a particular cache security
 -- group.
 --
@@ -905,6 +924,8 @@
 
 instance Hashable CacheSecurityGroupMembership
 
+instance NFData CacheSecurityGroupMembership
+
 -- | Represents the output of one of the following actions:
 --
 -- -   /CreateCacheSubnetGroup/
@@ -967,6 +988,8 @@
 
 instance Hashable CacheSubnetGroup
 
+instance NFData CacheSubnetGroup
+
 -- | Provides ownership and status information for an Amazon EC2 security
 -- group.
 --
@@ -1016,6 +1039,8 @@
 
 instance Hashable EC2SecurityGroup
 
+instance NFData EC2SecurityGroup
+
 -- | Represents the information required for client programs to connect to a
 -- cache node.
 --
@@ -1054,6 +1079,8 @@
 
 instance Hashable Endpoint
 
+instance NFData Endpoint
+
 -- | Represents the output of a /DescribeEngineDefaultParameters/ action.
 --
 -- /See:/ 'engineDefaults' smart constructor.
@@ -1117,6 +1144,8 @@
 
 instance Hashable EngineDefaults
 
+instance NFData EngineDefaults
+
 -- | Represents a single occurrence of something interesting within the
 -- system. Some examples of events are creating a cache cluster, adding or
 -- removing a cache node, or rebooting a node.
@@ -1178,6 +1207,8 @@
 
 instance Hashable Event
 
+instance NFData Event
+
 -- | Represents a collection of cache nodes in a replication group.
 --
 -- /See:/ 'nodeGroup' smart constructor.
@@ -1238,6 +1269,8 @@
 
 instance Hashable NodeGroup
 
+instance NFData NodeGroup
+
 -- | Represents a single node within a node group.
 --
 -- /See:/ 'nodeGroupMember' smart constructor.
@@ -1305,6 +1338,8 @@
 
 instance Hashable NodeGroupMember
 
+instance NFData NodeGroupMember
+
 -- | Represents an individual cache node in a snapshot of a cache cluster.
 --
 -- /See:/ 'nodeSnapshot' smart constructor.
@@ -1364,6 +1399,8 @@
 
 instance Hashable NodeSnapshot
 
+instance NFData NodeSnapshot
+
 -- | Describes a notification topic and its status. Notification topics are
 -- used for publishing ElastiCache events to subscribers using Amazon
 -- Simple Notification Service (SNS).
@@ -1404,6 +1441,8 @@
 
 instance Hashable NotificationConfiguration
 
+instance NFData NotificationConfiguration
+
 -- | Describes an individual setting that controls some aspect of ElastiCache
 -- behavior.
 --
@@ -1500,6 +1539,8 @@
 
 instance Hashable Parameter
 
+instance NFData Parameter
+
 -- | Describes a name-value pair that is used to update the value of a
 -- parameter.
 --
@@ -1534,6 +1575,8 @@
 
 instance Hashable ParameterNameValue
 
+instance NFData ParameterNameValue
+
 instance ToQuery ParameterNameValue where
         toQuery ParameterNameValue'{..}
           = mconcat
@@ -1546,6 +1589,7 @@
 -- /See:/ 'pendingModifiedValues' smart constructor.
 data PendingModifiedValues = PendingModifiedValues'
     { _pmvEngineVersion        :: !(Maybe Text)
+    , _pmvCacheNodeType        :: !(Maybe Text)
     , _pmvCacheNodeIdsToRemove :: !(Maybe [Text])
     , _pmvNumCacheNodes        :: !(Maybe Int)
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
@@ -1556,6 +1600,8 @@
 --
 -- * 'pmvEngineVersion'
 --
+-- * 'pmvCacheNodeType'
+--
 -- * 'pmvCacheNodeIdsToRemove'
 --
 -- * 'pmvNumCacheNodes'
@@ -1564,6 +1610,7 @@
 pendingModifiedValues =
     PendingModifiedValues'
     { _pmvEngineVersion = Nothing
+    , _pmvCacheNodeType = Nothing
     , _pmvCacheNodeIdsToRemove = Nothing
     , _pmvNumCacheNodes = Nothing
     }
@@ -1572,6 +1619,11 @@
 pmvEngineVersion :: Lens' PendingModifiedValues (Maybe Text)
 pmvEngineVersion = lens _pmvEngineVersion (\ s a -> s{_pmvEngineVersion = a});
 
+-- | The cache node type that this cache cluster or replication group will be
+-- scaled to.
+pmvCacheNodeType :: Lens' PendingModifiedValues (Maybe Text)
+pmvCacheNodeType = lens _pmvCacheNodeType (\ s a -> s{_pmvCacheNodeType = a});
+
 -- | A list of cache node IDs that are being removed (or will be removed)
 -- from the cache cluster. A node ID is a numeric identifier (0001, 0002,
 -- etc.).
@@ -1588,13 +1640,16 @@
 instance FromXML PendingModifiedValues where
         parseXML x
           = PendingModifiedValues' <$>
-              (x .@? "EngineVersion") <*>
+              (x .@? "EngineVersion") <*> (x .@? "CacheNodeType")
+                <*>
                 (x .@? "CacheNodeIdsToRemove" .!@ mempty >>=
                    may (parseXMLList "CacheNodeId"))
                 <*> (x .@? "NumCacheNodes")
 
 instance Hashable PendingModifiedValues
 
+instance NFData PendingModifiedValues
+
 -- | Contains the specific price and frequency of a recurring charges for a
 -- reserved cache node, or for a reserved cache node offering.
 --
@@ -1635,6 +1690,8 @@
 
 instance Hashable RecurringCharge
 
+instance NFData RecurringCharge
+
 -- | Contains all of the attributes of a specific replication group.
 --
 -- /See:/ 'replicationGroup' smart constructor.
@@ -1741,6 +1798,8 @@
 
 instance Hashable ReplicationGroup
 
+instance NFData ReplicationGroup
+
 -- | The settings to be applied to the replication group, either immediately
 -- or during the next maintenance window.
 --
@@ -1790,6 +1849,8 @@
 instance Hashable
          ReplicationGroupPendingModifiedValues
 
+instance NFData ReplicationGroupPendingModifiedValues
+
 -- | Represents the output of a /PurchaseReservedCacheNodesOffering/ action.
 --
 -- /See:/ 'reservedCacheNode' smart constructor.
@@ -1950,6 +2011,8 @@
 
 instance Hashable ReservedCacheNode
 
+instance NFData ReservedCacheNode
+
 -- | Describes all of the attributes of a reserved cache node offering.
 --
 -- /See:/ 'reservedCacheNodesOffering' smart constructor.
@@ -2075,6 +2138,8 @@
 
 instance Hashable ReservedCacheNodesOffering
 
+instance NFData ReservedCacheNodesOffering
+
 -- | Represents a single cache security group and its status.
 --
 -- /See:/ 'securityGroupMembership' smart constructor.
@@ -2115,6 +2180,8 @@
 
 instance Hashable SecurityGroupMembership
 
+instance NFData SecurityGroupMembership
+
 -- | Represents a copy of an entire cache cluster as of the time when the
 -- snapshot was taken.
 --
@@ -2386,6 +2453,8 @@
 
 instance Hashable Snapshot
 
+instance NFData Snapshot
+
 -- | Represents the subnet associated with a cache cluster. This parameter
 -- refers to subnets defined in Amazon Virtual Private Cloud (Amazon VPC)
 -- and used with ElastiCache.
@@ -2427,6 +2496,8 @@
 
 instance Hashable Subnet
 
+instance NFData Subnet
+
 -- | A cost allocation Tag that can be added to an ElastiCache cluster or
 -- replication group. Tags are composed of a Key\/Value pair. A tag with a
 -- null Value is permitted.
@@ -2466,6 +2537,8 @@
 
 instance Hashable Tag
 
+instance NFData Tag
+
 instance ToQuery Tag where
         toQuery Tag'{..}
           = mconcat ["Value" =: _tagValue, "Key" =: _tagKey]
@@ -2501,3 +2574,5 @@
                  may (parseXMLList "Tag"))
 
 instance Hashable TagListMessage
+
+instance NFData TagListMessage
diff --git a/gen/Network/AWS/ElastiCache/Types/Sum.hs b/gen/Network/AWS/ElastiCache/Types/Sum.hs
--- a/gen/Network/AWS/ElastiCache/Types/Sum.hs
+++ b/gen/Network/AWS/ElastiCache/Types/Sum.hs
@@ -37,6 +37,7 @@
         SingleAz -> "single-az"
 
 instance Hashable     AZMode
+instance NFData       AZMode
 instance ToByteString AZMode
 instance ToQuery      AZMode
 instance ToHeader     AZMode
@@ -65,6 +66,7 @@
         AFSEnabling -> "enabling"
 
 instance Hashable     AutomaticFailoverStatus
+instance NFData       AutomaticFailoverStatus
 instance ToByteString AutomaticFailoverStatus
 instance ToQuery      AutomaticFailoverStatus
 instance ToHeader     AutomaticFailoverStatus
@@ -90,6 +92,7 @@
         Enabled -> "enabled"
 
 instance Hashable     PendingAutomaticFailoverStatus
+instance NFData       PendingAutomaticFailoverStatus
 instance ToByteString PendingAutomaticFailoverStatus
 instance ToQuery      PendingAutomaticFailoverStatus
 instance ToHeader     PendingAutomaticFailoverStatus
@@ -121,6 +124,7 @@
         CacheSubnetGroup -> "cache-subnet-group"
 
 instance Hashable     SourceType
+instance NFData       SourceType
 instance ToByteString SourceType
 instance ToQuery      SourceType
 instance ToHeader     SourceType
diff --git a/test/Test/AWS/Gen/ElastiCache.hs b/test/Test/AWS/Gen/ElastiCache.hs
--- a/test/Test/AWS/Gen/ElastiCache.hs
+++ b/test/Test/AWS/Gen/ElastiCache.hs
@@ -100,6 +100,9 @@
 --         , testResetCacheParameterGroup $
 --             resetCacheParameterGroup
 --
+--         , testListAllowedNodeTypeModifications $
+--             listAllowedNodeTypeModifications
+--
 --         , testDescribeSnapshots $
 --             describeSnapshots
 --
@@ -214,6 +217,9 @@
 --         , testResetCacheParameterGroupResponse $
 --             cacheParameterGroupNameMessage
 --
+--         , testListAllowedNodeTypeModificationsResponse $
+--             listAllowedNodeTypeModificationsResponse
+--
 --         , testDescribeSnapshotsResponse $
 --             describeSnapshotsResponse
 --
@@ -378,6 +384,11 @@
     "ResetCacheParameterGroup"
     "fixture/ResetCacheParameterGroup.yaml"
 
+testListAllowedNodeTypeModifications :: ListAllowedNodeTypeModifications -> TestTree
+testListAllowedNodeTypeModifications = req
+    "ListAllowedNodeTypeModifications"
+    "fixture/ListAllowedNodeTypeModifications.yaml"
+
 testDescribeSnapshots :: DescribeSnapshots -> TestTree
 testDescribeSnapshots = req
     "DescribeSnapshots"
@@ -612,6 +623,13 @@
     "fixture/ResetCacheParameterGroupResponse.proto"
     elastiCache
     (Proxy :: Proxy ResetCacheParameterGroup)
+
+testListAllowedNodeTypeModificationsResponse :: ListAllowedNodeTypeModificationsResponse -> TestTree
+testListAllowedNodeTypeModificationsResponse = res
+    "ListAllowedNodeTypeModificationsResponse"
+    "fixture/ListAllowedNodeTypeModificationsResponse.proto"
+    elastiCache
+    (Proxy :: Proxy ListAllowedNodeTypeModifications)
 
 testDescribeSnapshotsResponse :: DescribeSnapshotsResponse -> TestTree
 testDescribeSnapshotsResponse = res
