diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
 
 ## Version
 
-`0.1.1`
+`0.2.0`
 
 
 ## Description
diff --git a/gen/Network/Google/Container.hs b/gen/Network/Google/Container.hs
--- a/gen/Network/Google/Container.hs
+++ b/gen/Network/Google/Container.hs
@@ -54,12 +54,21 @@
     -- ** container.projects.zones.clusters.nodePools.list
     , module Network.Google.Resource.Container.Projects.Zones.Clusters.NodePools.List
 
+    -- ** container.projects.zones.clusters.nodePools.rollback
+    , module Network.Google.Resource.Container.Projects.Zones.Clusters.NodePools.Rollback
+
+    -- ** container.projects.zones.clusters.nodePools.setManagement
+    , module Network.Google.Resource.Container.Projects.Zones.Clusters.NodePools.SetManagement
+
     -- ** container.projects.zones.clusters.update
     , module Network.Google.Resource.Container.Projects.Zones.Clusters.Update
 
     -- ** container.projects.zones.getServerconfig
     , module Network.Google.Resource.Container.Projects.Zones.GetServerConfig
 
+    -- ** container.projects.zones.operations.cancel
+    , module Network.Google.Resource.Container.Projects.Zones.Operations.Cancel
+
     -- ** container.projects.zones.operations.get
     , module Network.Google.Resource.Container.Projects.Zones.Operations.Get
 
@@ -89,6 +98,7 @@
     , cluster
     , cStatus
     , cNodePools
+    , cEnableKubernetesAlpha
     , cNodeConfig
     , cNodeIPv4CIdRSize
     , cClusterIPv4CIdR
@@ -107,6 +117,7 @@
     , cSubnetwork
     , cCurrentNodeCount
     , cEndpoint
+    , cExpireTime
     , cLocations
     , cLoggingService
     , cDescription
@@ -114,6 +125,10 @@
     , cMonitoringService
     , cCreateTime
 
+    -- ** CancelOperationRequest
+    , CancelOperationRequest
+    , cancelOperationRequest
+
     -- ** UpdateClusterRequest
     , UpdateClusterRequest
     , updateClusterRequest
@@ -122,10 +137,16 @@
     -- ** NodeConfig
     , NodeConfig
     , nodeConfig
+    , ncLocalSsdCount
     , ncDiskSizeGb
     , ncOAuthScopes
+    , ncServiceAccount
+    , ncImageType
     , ncMachineType
     , ncMetadata
+    , ncLabels
+    , ncTags
+    , ncPreemptible
 
     -- ** HTTPLoadBalancing
     , HTTPLoadBalancing
@@ -144,6 +165,23 @@
     , oTargetLink
     , oDetail
 
+    -- ** Empty
+    , Empty
+    , empty
+
+    -- ** NodeManagement
+    , NodeManagement
+    , nodeManagement
+    , nmAutoUpgrade
+    , nmUpgradeOptions
+
+    -- ** NodePoolAutoscaling
+    , NodePoolAutoscaling
+    , nodePoolAutoscaling
+    , npaMaxNodeCount
+    , npaEnabled
+    , npaMinNodeCount
+
     -- ** AddonsConfig
     , AddonsConfig
     , addonsConfig
@@ -154,14 +192,21 @@
     , NodePool
     , nodePool
     , npStatus
+    , npAutoscaling
     , npConfig
     , npInitialNodeCount
+    , npManagement
     , npSelfLink
     , npName
     , npStatusMessage
     , npVersion
     , npInstanceGroupURLs
 
+    -- ** SetNodePoolManagementRequest
+    , SetNodePoolManagementRequest
+    , setNodePoolManagementRequest
+    , snpmrManagement
+
     -- ** MasterAuth
     , MasterAuth
     , masterAuth
@@ -176,14 +221,26 @@
     , nodeConfigMetadata
     , ncmAddtional
 
+    -- ** NodeConfigLabels
+    , NodeConfigLabels
+    , nodeConfigLabels
+    , nclAddtional
+
     -- ** ServerConfig
     , ServerConfig
     , serverConfig
+    , scDefaultImageType
     , scValidNodeVersions
-    , scDefaultImageFamily
-    , scValidImageFamilies
+    , scValidImageTypes
     , scDefaultClusterVersion
+    , scValidMasterVersions
 
+    -- ** AutoUpgradeOptions
+    , AutoUpgradeOptions
+    , autoUpgradeOptions
+    , auoAutoUpgradeStartTime
+    , auoDescription
+
     -- ** ListClustersResponse
     , ListClustersResponse
     , listClustersResponse
@@ -193,12 +250,19 @@
     -- ** ClusterUpdate
     , ClusterUpdate
     , clusterUpdate
+    , cuDesiredNodePoolAutoscaling
     , cuDesiredAddonsConfig
     , cuDesiredNodePoolId
+    , cuDesiredImageType
     , cuDesiredNodeVersion
     , cuDesiredMasterVersion
+    , cuDesiredLocations
     , cuDesiredMonitoringService
 
+    -- ** RollbackNodePoolUpgradeRequest
+    , RollbackNodePoolUpgradeRequest
+    , rollbackNodePoolUpgradeRequest
+
     -- ** ListNodePoolsResponse
     , ListNodePoolsResponse
     , listNodePoolsResponse
@@ -220,8 +284,11 @@
 import           Network.Google.Resource.Container.Projects.Zones.Clusters.NodePools.Delete
 import           Network.Google.Resource.Container.Projects.Zones.Clusters.NodePools.Get
 import           Network.Google.Resource.Container.Projects.Zones.Clusters.NodePools.List
+import           Network.Google.Resource.Container.Projects.Zones.Clusters.NodePools.Rollback
+import           Network.Google.Resource.Container.Projects.Zones.Clusters.NodePools.SetManagement
 import           Network.Google.Resource.Container.Projects.Zones.Clusters.Update
 import           Network.Google.Resource.Container.Projects.Zones.GetServerConfig
+import           Network.Google.Resource.Container.Projects.Zones.Operations.Cancel
 import           Network.Google.Resource.Container.Projects.Zones.Operations.Get
 import           Network.Google.Resource.Container.Projects.Zones.Operations.List
 
@@ -233,8 +300,12 @@
 type ContainerAPI =
      ProjectsZonesOperationsListResource :<|>
        ProjectsZonesOperationsGetResource
+       :<|> ProjectsZonesOperationsCancelResource
        :<|> ProjectsZonesClustersNodePoolsListResource
        :<|> ProjectsZonesClustersNodePoolsGetResource
+       :<|> ProjectsZonesClustersNodePoolsRollbackResource
+       :<|>
+       ProjectsZonesClustersNodePoolsSetManagementResource
        :<|> ProjectsZonesClustersNodePoolsCreateResource
        :<|> ProjectsZonesClustersNodePoolsDeleteResource
        :<|> ProjectsZonesClustersListResource
diff --git a/gen/Network/Google/Container/Types.hs b/gen/Network/Google/Container/Types.hs
--- a/gen/Network/Google/Container/Types.hs
+++ b/gen/Network/Google/Container/Types.hs
@@ -43,6 +43,7 @@
     , cluster
     , cStatus
     , cNodePools
+    , cEnableKubernetesAlpha
     , cNodeConfig
     , cNodeIPv4CIdRSize
     , cClusterIPv4CIdR
@@ -61,6 +62,7 @@
     , cSubnetwork
     , cCurrentNodeCount
     , cEndpoint
+    , cExpireTime
     , cLocations
     , cLoggingService
     , cDescription
@@ -68,6 +70,10 @@
     , cMonitoringService
     , cCreateTime
 
+    -- * CancelOperationRequest
+    , CancelOperationRequest
+    , cancelOperationRequest
+
     -- * UpdateClusterRequest
     , UpdateClusterRequest
     , updateClusterRequest
@@ -76,10 +82,16 @@
     -- * NodeConfig
     , NodeConfig
     , nodeConfig
+    , ncLocalSsdCount
     , ncDiskSizeGb
     , ncOAuthScopes
+    , ncServiceAccount
+    , ncImageType
     , ncMachineType
     , ncMetadata
+    , ncLabels
+    , ncTags
+    , ncPreemptible
 
     -- * HTTPLoadBalancing
     , HTTPLoadBalancing
@@ -98,6 +110,23 @@
     , oTargetLink
     , oDetail
 
+    -- * Empty
+    , Empty
+    , empty
+
+    -- * NodeManagement
+    , NodeManagement
+    , nodeManagement
+    , nmAutoUpgrade
+    , nmUpgradeOptions
+
+    -- * NodePoolAutoscaling
+    , NodePoolAutoscaling
+    , nodePoolAutoscaling
+    , npaMaxNodeCount
+    , npaEnabled
+    , npaMinNodeCount
+
     -- * AddonsConfig
     , AddonsConfig
     , addonsConfig
@@ -108,14 +137,21 @@
     , NodePool
     , nodePool
     , npStatus
+    , npAutoscaling
     , npConfig
     , npInitialNodeCount
+    , npManagement
     , npSelfLink
     , npName
     , npStatusMessage
     , npVersion
     , npInstanceGroupURLs
 
+    -- * SetNodePoolManagementRequest
+    , SetNodePoolManagementRequest
+    , setNodePoolManagementRequest
+    , snpmrManagement
+
     -- * MasterAuth
     , MasterAuth
     , masterAuth
@@ -130,14 +166,26 @@
     , nodeConfigMetadata
     , ncmAddtional
 
+    -- * NodeConfigLabels
+    , NodeConfigLabels
+    , nodeConfigLabels
+    , nclAddtional
+
     -- * ServerConfig
     , ServerConfig
     , serverConfig
+    , scDefaultImageType
     , scValidNodeVersions
-    , scDefaultImageFamily
-    , scValidImageFamilies
+    , scValidImageTypes
     , scDefaultClusterVersion
+    , scValidMasterVersions
 
+    -- * AutoUpgradeOptions
+    , AutoUpgradeOptions
+    , autoUpgradeOptions
+    , auoAutoUpgradeStartTime
+    , auoDescription
+
     -- * ListClustersResponse
     , ListClustersResponse
     , listClustersResponse
@@ -147,11 +195,18 @@
     -- * ClusterUpdate
     , ClusterUpdate
     , clusterUpdate
+    , cuDesiredNodePoolAutoscaling
     , cuDesiredAddonsConfig
     , cuDesiredNodePoolId
+    , cuDesiredImageType
     , cuDesiredNodeVersion
     , cuDesiredMasterVersion
+    , cuDesiredLocations
     , cuDesiredMonitoringService
+
+    -- * RollbackNodePoolUpgradeRequest
+    , RollbackNodePoolUpgradeRequest
+    , rollbackNodePoolUpgradeRequest
 
     -- * ListNodePoolsResponse
     , ListNodePoolsResponse
diff --git a/gen/Network/Google/Container/Types/Product.hs b/gen/Network/Google/Container/Types/Product.hs
--- a/gen/Network/Google/Container/Types/Product.hs
+++ b/gen/Network/Google/Container/Types/Product.hs
@@ -154,6 +154,7 @@
 data Cluster = Cluster'
     { _cStatus                :: !(Maybe Text)
     , _cNodePools             :: !(Maybe [NodePool])
+    , _cEnableKubernetesAlpha :: !(Maybe Bool)
     , _cNodeConfig            :: !(Maybe NodeConfig)
     , _cNodeIPv4CIdRSize      :: !(Maybe (Textual Int32))
     , _cClusterIPv4CIdR       :: !(Maybe Text)
@@ -172,6 +173,7 @@
     , _cSubnetwork            :: !(Maybe Text)
     , _cCurrentNodeCount      :: !(Maybe (Textual Int32))
     , _cEndpoint              :: !(Maybe Text)
+    , _cExpireTime            :: !(Maybe Text)
     , _cLocations             :: !(Maybe [Text])
     , _cLoggingService        :: !(Maybe Text)
     , _cDescription           :: !(Maybe Text)
@@ -188,6 +190,8 @@
 --
 -- * 'cNodePools'
 --
+-- * 'cEnableKubernetesAlpha'
+--
 -- * 'cNodeConfig'
 --
 -- * 'cNodeIPv4CIdRSize'
@@ -224,6 +228,8 @@
 --
 -- * 'cEndpoint'
 --
+-- * 'cExpireTime'
+--
 -- * 'cLocations'
 --
 -- * 'cLoggingService'
@@ -241,6 +247,7 @@
     Cluster'
     { _cStatus = Nothing
     , _cNodePools = Nothing
+    , _cEnableKubernetesAlpha = Nothing
     , _cNodeConfig = Nothing
     , _cNodeIPv4CIdRSize = Nothing
     , _cClusterIPv4CIdR = Nothing
@@ -259,6 +266,7 @@
     , _cSubnetwork = Nothing
     , _cCurrentNodeCount = Nothing
     , _cEndpoint = Nothing
+    , _cExpireTime = Nothing
     , _cLocations = Nothing
     , _cLoggingService = Nothing
     , _cDescription = Nothing
@@ -271,15 +279,24 @@
 cStatus :: Lens' Cluster (Maybe Text)
 cStatus = lens _cStatus (\ s a -> s{_cStatus = a})
 
--- | The node pools associated with this cluster. When creating a new
--- cluster, only a single node pool should be specified. This field should
--- not be set if \"node_config\" or \"initial_node_count\" are specified.
+-- | The node pools associated with this cluster. This field should not be
+-- set if \"node_config\" or \"initial_node_count\" are specified.
 cNodePools :: Lens' Cluster [NodePool]
 cNodePools
   = lens _cNodePools (\ s a -> s{_cNodePools = a}) .
       _Default
       . _Coerce
 
+-- | Kubernetes alpha features are enabled on this cluster. This includes
+-- alpha API groups (e.g. v1alpha1) and features that may not be production
+-- ready in the kubernetes version of the master and nodes. The cluster has
+-- no SLA for uptime and master\/node upgrades are disabled. Alpha enabled
+-- clusters are automatically deleted thirty days after creation.
+cEnableKubernetesAlpha :: Lens' Cluster (Maybe Bool)
+cEnableKubernetesAlpha
+  = lens _cEnableKubernetesAlpha
+      (\ s a -> s{_cEnableKubernetesAlpha = a})
+
 -- | Parameters used in creating the cluster\'s nodes. See \`nodeConfig\` for
 -- the description of its properties. For requests, this field should only
 -- be used in lieu of a \"node_pool\" object, since this configuration
@@ -419,6 +436,12 @@
 cEndpoint
   = lens _cEndpoint (\ s a -> s{_cEndpoint = a})
 
+-- | [Output only] The time the cluster will be automatically deleted in
+-- [RFC3339](https:\/\/www.ietf.org\/rfc\/rfc3339.txt) text format.
+cExpireTime :: Lens' Cluster (Maybe Text)
+cExpireTime
+  = lens _cExpireTime (\ s a -> s{_cExpireTime = a})
+
 -- | The list of Google Compute Engine
 -- [locations](\/compute\/docs\/zones#available) in which the cluster\'s
 -- nodes should be located.
@@ -474,6 +497,7 @@
               (\ o ->
                  Cluster' <$>
                    (o .:? "status") <*> (o .:? "nodePools" .!= mempty)
+                     <*> (o .:? "enableKubernetesAlpha")
                      <*> (o .:? "nodeConfig")
                      <*> (o .:? "nodeIpv4CidrSize")
                      <*> (o .:? "clusterIpv4Cidr")
@@ -492,6 +516,7 @@
                      <*> (o .:? "subnetwork")
                      <*> (o .:? "currentNodeCount")
                      <*> (o .:? "endpoint")
+                     <*> (o .:? "expireTime")
                      <*> (o .:? "locations" .!= mempty)
                      <*> (o .:? "loggingService")
                      <*> (o .:? "description")
@@ -505,6 +530,8 @@
               (catMaybes
                  [("status" .=) <$> _cStatus,
                   ("nodePools" .=) <$> _cNodePools,
+                  ("enableKubernetesAlpha" .=) <$>
+                    _cEnableKubernetesAlpha,
                   ("nodeConfig" .=) <$> _cNodeConfig,
                   ("nodeIpv4CidrSize" .=) <$> _cNodeIPv4CIdRSize,
                   ("clusterIpv4Cidr" .=) <$> _cClusterIPv4CIdR,
@@ -525,6 +552,7 @@
                   ("subnetwork" .=) <$> _cSubnetwork,
                   ("currentNodeCount" .=) <$> _cCurrentNodeCount,
                   ("endpoint" .=) <$> _cEndpoint,
+                  ("expireTime" .=) <$> _cExpireTime,
                   ("locations" .=) <$> _cLocations,
                   ("loggingService" .=) <$> _cLoggingService,
                   ("description" .=) <$> _cDescription,
@@ -532,6 +560,27 @@
                   ("monitoringService" .=) <$> _cMonitoringService,
                   ("createTime" .=) <$> _cCreateTime])
 
+-- | CancelOperationRequest cancels a single operation.
+--
+-- /See:/ 'cancelOperationRequest' smart constructor.
+data CancelOperationRequest =
+    CancelOperationRequest'
+    deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CancelOperationRequest' with the minimum fields required to make a request.
+--
+cancelOperationRequest
+    :: CancelOperationRequest
+cancelOperationRequest = CancelOperationRequest'
+
+instance FromJSON CancelOperationRequest where
+        parseJSON
+          = withObject "CancelOperationRequest"
+              (\ o -> pure CancelOperationRequest')
+
+instance ToJSON CancelOperationRequest where
+        toJSON = const emptyObject
+
 -- | UpdateClusterRequest updates the settings of a cluster.
 --
 -- /See:/ 'updateClusterRequest' smart constructor.
@@ -569,33 +618,68 @@
 --
 -- /See:/ 'nodeConfig' smart constructor.
 data NodeConfig = NodeConfig'
-    { _ncDiskSizeGb  :: !(Maybe (Textual Int32))
-    , _ncOAuthScopes :: !(Maybe [Text])
-    , _ncMachineType :: !(Maybe Text)
-    , _ncMetadata    :: !(Maybe NodeConfigMetadata)
+    { _ncLocalSsdCount  :: !(Maybe (Textual Int32))
+    , _ncDiskSizeGb     :: !(Maybe (Textual Int32))
+    , _ncOAuthScopes    :: !(Maybe [Text])
+    , _ncServiceAccount :: !(Maybe Text)
+    , _ncImageType      :: !(Maybe Text)
+    , _ncMachineType    :: !(Maybe Text)
+    , _ncMetadata       :: !(Maybe NodeConfigMetadata)
+    , _ncLabels         :: !(Maybe NodeConfigLabels)
+    , _ncTags           :: !(Maybe [Text])
+    , _ncPreemptible    :: !(Maybe Bool)
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'NodeConfig' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'ncLocalSsdCount'
+--
 -- * 'ncDiskSizeGb'
 --
 -- * 'ncOAuthScopes'
 --
+-- * 'ncServiceAccount'
+--
+-- * 'ncImageType'
+--
 -- * 'ncMachineType'
 --
 -- * 'ncMetadata'
+--
+-- * 'ncLabels'
+--
+-- * 'ncTags'
+--
+-- * 'ncPreemptible'
 nodeConfig
     :: NodeConfig
 nodeConfig =
     NodeConfig'
-    { _ncDiskSizeGb = Nothing
+    { _ncLocalSsdCount = Nothing
+    , _ncDiskSizeGb = Nothing
     , _ncOAuthScopes = Nothing
+    , _ncServiceAccount = Nothing
+    , _ncImageType = Nothing
     , _ncMachineType = Nothing
     , _ncMetadata = Nothing
+    , _ncLabels = Nothing
+    , _ncTags = Nothing
+    , _ncPreemptible = Nothing
     }
 
+-- | The number of local SSD disks to be attached to the node. The limit for
+-- this value is dependant upon the maximum number of disks available on a
+-- machine per zone. See:
+-- https:\/\/cloud.google.com\/compute\/docs\/disks\/local-ssd#local_ssd_limits
+-- for more information.
+ncLocalSsdCount :: Lens' NodeConfig (Maybe Int32)
+ncLocalSsdCount
+  = lens _ncLocalSsdCount
+      (\ s a -> s{_ncLocalSsdCount = a})
+      . mapping _Coerce
+
 -- | Size of the disk attached to each node, specified in GB. The smallest
 -- allowed disk size is 10GB. If unspecified, the default disk size is
 -- 100GB.
@@ -621,6 +705,20 @@
       . _Default
       . _Coerce
 
+-- | The Google Cloud Platform Service Account to be used by the node VMs. If
+-- no Service Account is specified, the \"default\" service account is
+-- used.
+ncServiceAccount :: Lens' NodeConfig (Maybe Text)
+ncServiceAccount
+  = lens _ncServiceAccount
+      (\ s a -> s{_ncServiceAccount = a})
+
+-- | The image type to use for this node. Note that for a given image type,
+-- the latest version of it will be used.
+ncImageType :: Lens' NodeConfig (Maybe Text)
+ncImageType
+  = lens _ncImageType (\ s a -> s{_ncImageType = a})
+
 -- | The name of a Google Compute Engine [machine
 -- type](\/compute\/docs\/machine-types) (e.g. \`n1-standard-1\`). If
 -- unspecified, the default machine type is \`n1-standard-1\`.
@@ -643,24 +741,61 @@
 ncMetadata
   = lens _ncMetadata (\ s a -> s{_ncMetadata = a})
 
+-- | The map of Kubernetes labels (key\/value pairs) to be applied to each
+-- node. These will added in addition to any default label(s) that
+-- Kubernetes may apply to the node. In case of conflict in label keys, the
+-- applied set may differ depending on the Kubernetes version -- it\'s best
+-- to assume the behavior is undefined and conflicts should be avoided. For
+-- more information, including usage and the valid values, see:
+-- http:\/\/kubernetes.io\/v1.1\/docs\/user-guide\/labels.html
+ncLabels :: Lens' NodeConfig (Maybe NodeConfigLabels)
+ncLabels = lens _ncLabels (\ s a -> s{_ncLabels = a})
+
+-- | The list of instance tags applied to all nodes. Tags are used to
+-- identify valid sources or targets for network firewalls and are
+-- specified by the client during cluster or node pool creation. Each tag
+-- within the list must comply with RFC1035.
+ncTags :: Lens' NodeConfig [Text]
+ncTags
+  = lens _ncTags (\ s a -> s{_ncTags = a}) . _Default .
+      _Coerce
+
+-- | Whether the nodes are created as preemptible VM instances. See:
+-- https:\/\/cloud.google.com\/compute\/docs\/instances\/preemptible for
+-- more inforamtion about preemptible VM instances.
+ncPreemptible :: Lens' NodeConfig (Maybe Bool)
+ncPreemptible
+  = lens _ncPreemptible
+      (\ s a -> s{_ncPreemptible = a})
+
 instance FromJSON NodeConfig where
         parseJSON
           = withObject "NodeConfig"
               (\ o ->
                  NodeConfig' <$>
-                   (o .:? "diskSizeGb") <*>
+                   (o .:? "localSsdCount") <*> (o .:? "diskSizeGb") <*>
                      (o .:? "oauthScopes" .!= mempty)
+                     <*> (o .:? "serviceAccount")
+                     <*> (o .:? "imageType")
                      <*> (o .:? "machineType")
-                     <*> (o .:? "metadata"))
+                     <*> (o .:? "metadata")
+                     <*> (o .:? "labels")
+                     <*> (o .:? "tags" .!= mempty)
+                     <*> (o .:? "preemptible"))
 
 instance ToJSON NodeConfig where
         toJSON NodeConfig'{..}
           = object
               (catMaybes
-                 [("diskSizeGb" .=) <$> _ncDiskSizeGb,
+                 [("localSsdCount" .=) <$> _ncLocalSsdCount,
+                  ("diskSizeGb" .=) <$> _ncDiskSizeGb,
                   ("oauthScopes" .=) <$> _ncOAuthScopes,
+                  ("serviceAccount" .=) <$> _ncServiceAccount,
+                  ("imageType" .=) <$> _ncImageType,
                   ("machineType" .=) <$> _ncMachineType,
-                  ("metadata" .=) <$> _ncMetadata])
+                  ("metadata" .=) <$> _ncMetadata,
+                  ("labels" .=) <$> _ncLabels, ("tags" .=) <$> _ncTags,
+                  ("preemptible" .=) <$> _ncPreemptible])
 
 -- | Configuration options for the HTTP (L7) load balancing controller addon,
 -- which makes it easy to set up HTTP load balancers for services in a
@@ -814,6 +949,144 @@
                   ("targetLink" .=) <$> _oTargetLink,
                   ("detail" .=) <$> _oDetail])
 
+-- | A generic empty message that you can re-use to avoid defining duplicated
+-- empty messages in your APIs. A typical example is to use it as the
+-- request or the response type of an API method. For instance: service Foo
+-- { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); } The
+-- JSON representation for \`Empty\` is empty JSON object \`{}\`.
+--
+-- /See:/ 'empty' smart constructor.
+data Empty =
+    Empty'
+    deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Empty' with the minimum fields required to make a request.
+--
+empty
+    :: Empty
+empty = Empty'
+
+instance FromJSON Empty where
+        parseJSON = withObject "Empty" (\ o -> pure Empty')
+
+instance ToJSON Empty where
+        toJSON = const emptyObject
+
+-- | NodeManagement defines the set of node management services turned on for
+-- the node pool.
+--
+-- /See:/ 'nodeManagement' smart constructor.
+data NodeManagement = NodeManagement'
+    { _nmAutoUpgrade    :: !(Maybe Bool)
+    , _nmUpgradeOptions :: !(Maybe AutoUpgradeOptions)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeManagement' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'nmAutoUpgrade'
+--
+-- * 'nmUpgradeOptions'
+nodeManagement
+    :: NodeManagement
+nodeManagement =
+    NodeManagement'
+    { _nmAutoUpgrade = Nothing
+    , _nmUpgradeOptions = Nothing
+    }
+
+-- | Whether the nodes will be automatically upgraded.
+nmAutoUpgrade :: Lens' NodeManagement (Maybe Bool)
+nmAutoUpgrade
+  = lens _nmAutoUpgrade
+      (\ s a -> s{_nmAutoUpgrade = a})
+
+-- | Specifies the Auto Upgrade knobs for the node pool.
+nmUpgradeOptions :: Lens' NodeManagement (Maybe AutoUpgradeOptions)
+nmUpgradeOptions
+  = lens _nmUpgradeOptions
+      (\ s a -> s{_nmUpgradeOptions = a})
+
+instance FromJSON NodeManagement where
+        parseJSON
+          = withObject "NodeManagement"
+              (\ o ->
+                 NodeManagement' <$>
+                   (o .:? "autoUpgrade") <*> (o .:? "upgradeOptions"))
+
+instance ToJSON NodeManagement where
+        toJSON NodeManagement'{..}
+          = object
+              (catMaybes
+                 [("autoUpgrade" .=) <$> _nmAutoUpgrade,
+                  ("upgradeOptions" .=) <$> _nmUpgradeOptions])
+
+-- | NodePoolAutoscaling contains information required by cluster autoscaler
+-- to adjust the size of the node pool to the current cluster usage.
+--
+-- /See:/ 'nodePoolAutoscaling' smart constructor.
+data NodePoolAutoscaling = NodePoolAutoscaling'
+    { _npaMaxNodeCount :: !(Maybe (Textual Int32))
+    , _npaEnabled      :: !(Maybe Bool)
+    , _npaMinNodeCount :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodePoolAutoscaling' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'npaMaxNodeCount'
+--
+-- * 'npaEnabled'
+--
+-- * 'npaMinNodeCount'
+nodePoolAutoscaling
+    :: NodePoolAutoscaling
+nodePoolAutoscaling =
+    NodePoolAutoscaling'
+    { _npaMaxNodeCount = Nothing
+    , _npaEnabled = Nothing
+    , _npaMinNodeCount = Nothing
+    }
+
+-- | Maximum number of nodes in the NodePool. Must be >= min_node_count.
+-- There has to enough quota to scale up the cluster.
+npaMaxNodeCount :: Lens' NodePoolAutoscaling (Maybe Int32)
+npaMaxNodeCount
+  = lens _npaMaxNodeCount
+      (\ s a -> s{_npaMaxNodeCount = a})
+      . mapping _Coerce
+
+-- | Is autoscaling enabled for this node pool.
+npaEnabled :: Lens' NodePoolAutoscaling (Maybe Bool)
+npaEnabled
+  = lens _npaEnabled (\ s a -> s{_npaEnabled = a})
+
+-- | Minimum number of nodes in the NodePool. Must be >= 1 and \<=
+-- max_node_count.
+npaMinNodeCount :: Lens' NodePoolAutoscaling (Maybe Int32)
+npaMinNodeCount
+  = lens _npaMinNodeCount
+      (\ s a -> s{_npaMinNodeCount = a})
+      . mapping _Coerce
+
+instance FromJSON NodePoolAutoscaling where
+        parseJSON
+          = withObject "NodePoolAutoscaling"
+              (\ o ->
+                 NodePoolAutoscaling' <$>
+                   (o .:? "maxNodeCount") <*> (o .:? "enabled") <*>
+                     (o .:? "minNodeCount"))
+
+instance ToJSON NodePoolAutoscaling where
+        toJSON NodePoolAutoscaling'{..}
+          = object
+              (catMaybes
+                 [("maxNodeCount" .=) <$> _npaMaxNodeCount,
+                  ("enabled" .=) <$> _npaEnabled,
+                  ("minNodeCount" .=) <$> _npaMinNodeCount])
+
 -- | Configuration for the addons that can be automatically spun up in the
 -- cluster, enabling additional functionality.
 --
@@ -879,8 +1152,10 @@
 -- /See:/ 'nodePool' smart constructor.
 data NodePool = NodePool'
     { _npStatus            :: !(Maybe Text)
+    , _npAutoscaling       :: !(Maybe NodePoolAutoscaling)
     , _npConfig            :: !(Maybe NodeConfig)
     , _npInitialNodeCount  :: !(Maybe (Textual Int32))
+    , _npManagement        :: !(Maybe NodeManagement)
     , _npSelfLink          :: !(Maybe Text)
     , _npName              :: !(Maybe Text)
     , _npStatusMessage     :: !(Maybe Text)
@@ -894,10 +1169,14 @@
 --
 -- * 'npStatus'
 --
+-- * 'npAutoscaling'
+--
 -- * 'npConfig'
 --
 -- * 'npInitialNodeCount'
 --
+-- * 'npManagement'
+--
 -- * 'npSelfLink'
 --
 -- * 'npName'
@@ -912,8 +1191,10 @@
 nodePool =
     NodePool'
     { _npStatus = Nothing
+    , _npAutoscaling = Nothing
     , _npConfig = Nothing
     , _npInitialNodeCount = Nothing
+    , _npManagement = Nothing
     , _npSelfLink = Nothing
     , _npName = Nothing
     , _npStatusMessage = Nothing
@@ -921,10 +1202,17 @@
     , _npInstanceGroupURLs = Nothing
     }
 
--- | The status of the nodes in this pool instance.
+-- | [Output only] The status of the nodes in this pool instance.
 npStatus :: Lens' NodePool (Maybe Text)
 npStatus = lens _npStatus (\ s a -> s{_npStatus = a})
 
+-- | Autoscaler configuration for this NodePool. Autoscaler is enabled only
+-- if a valid configuration is present.
+npAutoscaling :: Lens' NodePool (Maybe NodePoolAutoscaling)
+npAutoscaling
+  = lens _npAutoscaling
+      (\ s a -> s{_npAutoscaling = a})
+
 -- | The node configuration of the pool.
 npConfig :: Lens' NodePool (Maybe NodeConfig)
 npConfig = lens _npConfig (\ s a -> s{_npConfig = a})
@@ -938,7 +1226,12 @@
       (\ s a -> s{_npInitialNodeCount = a})
       . mapping _Coerce
 
--- | Server-defined URL for the resource.
+-- | NodeManagement configuration for this NodePool.
+npManagement :: Lens' NodePool (Maybe NodeManagement)
+npManagement
+  = lens _npManagement (\ s a -> s{_npManagement = a})
+
+-- | [Output only] Server-defined URL for the resource.
 npSelfLink :: Lens' NodePool (Maybe Text)
 npSelfLink
   = lens _npSelfLink (\ s a -> s{_npSelfLink = a})
@@ -954,7 +1247,7 @@
   = lens _npStatusMessage
       (\ s a -> s{_npStatusMessage = a})
 
--- | The version of the Kubernetes of this node.
+-- | [Output only] The version of the Kubernetes of this node.
 npVersion :: Lens' NodePool (Maybe Text)
 npVersion
   = lens _npVersion (\ s a -> s{_npVersion = a})
@@ -974,8 +1267,10 @@
           = withObject "NodePool"
               (\ o ->
                  NodePool' <$>
-                   (o .:? "status") <*> (o .:? "config") <*>
-                     (o .:? "initialNodeCount")
+                   (o .:? "status") <*> (o .:? "autoscaling") <*>
+                     (o .:? "config")
+                     <*> (o .:? "initialNodeCount")
+                     <*> (o .:? "management")
                      <*> (o .:? "selfLink")
                      <*> (o .:? "name")
                      <*> (o .:? "statusMessage")
@@ -987,14 +1282,54 @@
           = object
               (catMaybes
                  [("status" .=) <$> _npStatus,
+                  ("autoscaling" .=) <$> _npAutoscaling,
                   ("config" .=) <$> _npConfig,
                   ("initialNodeCount" .=) <$> _npInitialNodeCount,
+                  ("management" .=) <$> _npManagement,
                   ("selfLink" .=) <$> _npSelfLink,
                   ("name" .=) <$> _npName,
                   ("statusMessage" .=) <$> _npStatusMessage,
                   ("version" .=) <$> _npVersion,
                   ("instanceGroupUrls" .=) <$> _npInstanceGroupURLs])
 
+-- | SetNodePoolManagementRequest sets the node management properties of a
+-- node pool.
+--
+-- /See:/ 'setNodePoolManagementRequest' smart constructor.
+newtype SetNodePoolManagementRequest = SetNodePoolManagementRequest'
+    { _snpmrManagement :: Maybe NodeManagement
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SetNodePoolManagementRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'snpmrManagement'
+setNodePoolManagementRequest
+    :: SetNodePoolManagementRequest
+setNodePoolManagementRequest =
+    SetNodePoolManagementRequest'
+    { _snpmrManagement = Nothing
+    }
+
+-- | NodeManagement configuration for the node pool.
+snpmrManagement :: Lens' SetNodePoolManagementRequest (Maybe NodeManagement)
+snpmrManagement
+  = lens _snpmrManagement
+      (\ s a -> s{_snpmrManagement = a})
+
+instance FromJSON SetNodePoolManagementRequest where
+        parseJSON
+          = withObject "SetNodePoolManagementRequest"
+              (\ o ->
+                 SetNodePoolManagementRequest' <$>
+                   (o .:? "management"))
+
+instance ToJSON SetNodePoolManagementRequest where
+        toJSON SetNodePoolManagementRequest'{..}
+          = object
+              (catMaybes [("management" .=) <$> _snpmrManagement])
+
 -- | The authentication information for accessing the master endpoint.
 -- Authentication can be done using HTTP basic auth or using client
 -- certificates.
@@ -1128,37 +1463,86 @@
 instance ToJSON NodeConfigMetadata where
         toJSON = toJSON . _ncmAddtional
 
+-- | The map of Kubernetes labels (key\/value pairs) to be applied to each
+-- node. These will added in addition to any default label(s) that
+-- Kubernetes may apply to the node. In case of conflict in label keys, the
+-- applied set may differ depending on the Kubernetes version -- it\'s best
+-- to assume the behavior is undefined and conflicts should be avoided. For
+-- more information, including usage and the valid values, see:
+-- http:\/\/kubernetes.io\/v1.1\/docs\/user-guide\/labels.html
+--
+-- /See:/ 'nodeConfigLabels' smart constructor.
+newtype NodeConfigLabels = NodeConfigLabels'
+    { _nclAddtional :: HashMap Text Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeConfigLabels' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'nclAddtional'
+nodeConfigLabels
+    :: HashMap Text Text -- ^ 'nclAddtional'
+    -> NodeConfigLabels
+nodeConfigLabels pNclAddtional_ =
+    NodeConfigLabels'
+    { _nclAddtional = _Coerce # pNclAddtional_
+    }
+
+nclAddtional :: Lens' NodeConfigLabels (HashMap Text Text)
+nclAddtional
+  = lens _nclAddtional (\ s a -> s{_nclAddtional = a})
+      . _Coerce
+
+instance FromJSON NodeConfigLabels where
+        parseJSON
+          = withObject "NodeConfigLabels"
+              (\ o -> NodeConfigLabels' <$> (parseJSONObject o))
+
+instance ToJSON NodeConfigLabels where
+        toJSON = toJSON . _nclAddtional
+
 -- | Container Engine service configuration.
 --
 -- /See:/ 'serverConfig' smart constructor.
 data ServerConfig = ServerConfig'
-    { _scValidNodeVersions     :: !(Maybe [Text])
-    , _scDefaultImageFamily    :: !(Maybe Text)
-    , _scValidImageFamilies    :: !(Maybe [Text])
+    { _scDefaultImageType      :: !(Maybe Text)
+    , _scValidNodeVersions     :: !(Maybe [Text])
+    , _scValidImageTypes       :: !(Maybe [Text])
     , _scDefaultClusterVersion :: !(Maybe Text)
+    , _scValidMasterVersions   :: !(Maybe [Text])
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'ServerConfig' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'scValidNodeVersions'
+-- * 'scDefaultImageType'
 --
--- * 'scDefaultImageFamily'
+-- * 'scValidNodeVersions'
 --
--- * 'scValidImageFamilies'
+-- * 'scValidImageTypes'
 --
 -- * 'scDefaultClusterVersion'
+--
+-- * 'scValidMasterVersions'
 serverConfig
     :: ServerConfig
 serverConfig =
     ServerConfig'
-    { _scValidNodeVersions = Nothing
-    , _scDefaultImageFamily = Nothing
-    , _scValidImageFamilies = Nothing
+    { _scDefaultImageType = Nothing
+    , _scValidNodeVersions = Nothing
+    , _scValidImageTypes = Nothing
     , _scDefaultClusterVersion = Nothing
+    , _scValidMasterVersions = Nothing
     }
 
+-- | Default image type.
+scDefaultImageType :: Lens' ServerConfig (Maybe Text)
+scDefaultImageType
+  = lens _scDefaultImageType
+      (\ s a -> s{_scDefaultImageType = a})
+
 -- | List of valid node upgrade target versions.
 scValidNodeVersions :: Lens' ServerConfig [Text]
 scValidNodeVersions
@@ -1167,17 +1551,11 @@
       . _Default
       . _Coerce
 
--- | Default image family.
-scDefaultImageFamily :: Lens' ServerConfig (Maybe Text)
-scDefaultImageFamily
-  = lens _scDefaultImageFamily
-      (\ s a -> s{_scDefaultImageFamily = a})
-
--- | List of valid image families.
-scValidImageFamilies :: Lens' ServerConfig [Text]
-scValidImageFamilies
-  = lens _scValidImageFamilies
-      (\ s a -> s{_scValidImageFamilies = a})
+-- | List of valid image types.
+scValidImageTypes :: Lens' ServerConfig [Text]
+scValidImageTypes
+  = lens _scValidImageTypes
+      (\ s a -> s{_scValidImageTypes = a})
       . _Default
       . _Coerce
 
@@ -1187,26 +1565,92 @@
   = lens _scDefaultClusterVersion
       (\ s a -> s{_scDefaultClusterVersion = a})
 
+-- | List of valid master versions.
+scValidMasterVersions :: Lens' ServerConfig [Text]
+scValidMasterVersions
+  = lens _scValidMasterVersions
+      (\ s a -> s{_scValidMasterVersions = a})
+      . _Default
+      . _Coerce
+
 instance FromJSON ServerConfig where
         parseJSON
           = withObject "ServerConfig"
               (\ o ->
                  ServerConfig' <$>
-                   (o .:? "validNodeVersions" .!= mempty) <*>
-                     (o .:? "defaultImageFamily")
-                     <*> (o .:? "validImageFamilies" .!= mempty)
-                     <*> (o .:? "defaultClusterVersion"))
+                   (o .:? "defaultImageType") <*>
+                     (o .:? "validNodeVersions" .!= mempty)
+                     <*> (o .:? "validImageTypes" .!= mempty)
+                     <*> (o .:? "defaultClusterVersion")
+                     <*> (o .:? "validMasterVersions" .!= mempty))
 
 instance ToJSON ServerConfig where
         toJSON ServerConfig'{..}
           = object
               (catMaybes
-                 [("validNodeVersions" .=) <$> _scValidNodeVersions,
-                  ("defaultImageFamily" .=) <$> _scDefaultImageFamily,
-                  ("validImageFamilies" .=) <$> _scValidImageFamilies,
+                 [("defaultImageType" .=) <$> _scDefaultImageType,
+                  ("validNodeVersions" .=) <$> _scValidNodeVersions,
+                  ("validImageTypes" .=) <$> _scValidImageTypes,
                   ("defaultClusterVersion" .=) <$>
-                    _scDefaultClusterVersion])
+                    _scDefaultClusterVersion,
+                  ("validMasterVersions" .=) <$>
+                    _scValidMasterVersions])
 
+-- | AutoUpgradeOptions defines the set of options for the user to control
+-- how the Auto Upgrades will proceed.
+--
+-- /See:/ 'autoUpgradeOptions' smart constructor.
+data AutoUpgradeOptions = AutoUpgradeOptions'
+    { _auoAutoUpgradeStartTime :: !(Maybe Text)
+    , _auoDescription          :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AutoUpgradeOptions' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'auoAutoUpgradeStartTime'
+--
+-- * 'auoDescription'
+autoUpgradeOptions
+    :: AutoUpgradeOptions
+autoUpgradeOptions =
+    AutoUpgradeOptions'
+    { _auoAutoUpgradeStartTime = Nothing
+    , _auoDescription = Nothing
+    }
+
+-- | [Output only] This field is set when upgrades are about to commence with
+-- the approximate start time for the upgrades, in
+-- [RFC3339](https:\/\/www.ietf.org\/rfc\/rfc3339.txt) text format.
+auoAutoUpgradeStartTime :: Lens' AutoUpgradeOptions (Maybe Text)
+auoAutoUpgradeStartTime
+  = lens _auoAutoUpgradeStartTime
+      (\ s a -> s{_auoAutoUpgradeStartTime = a})
+
+-- | [Output only] This field is set when upgrades are about to commence with
+-- the description of the upgrade.
+auoDescription :: Lens' AutoUpgradeOptions (Maybe Text)
+auoDescription
+  = lens _auoDescription
+      (\ s a -> s{_auoDescription = a})
+
+instance FromJSON AutoUpgradeOptions where
+        parseJSON
+          = withObject "AutoUpgradeOptions"
+              (\ o ->
+                 AutoUpgradeOptions' <$>
+                   (o .:? "autoUpgradeStartTime") <*>
+                     (o .:? "description"))
+
+instance ToJSON AutoUpgradeOptions where
+        toJSON AutoUpgradeOptions'{..}
+          = object
+              (catMaybes
+                 [("autoUpgradeStartTime" .=) <$>
+                    _auoAutoUpgradeStartTime,
+                  ("description" .=) <$> _auoDescription])
+
 -- | ListClustersResponse is the result of ListClustersRequest.
 --
 -- /See:/ 'listClustersResponse' smart constructor.
@@ -1268,51 +1712,80 @@
 --
 -- /See:/ 'clusterUpdate' smart constructor.
 data ClusterUpdate = ClusterUpdate'
-    { _cuDesiredAddonsConfig      :: !(Maybe AddonsConfig)
-    , _cuDesiredNodePoolId        :: !(Maybe Text)
-    , _cuDesiredNodeVersion       :: !(Maybe Text)
-    , _cuDesiredMasterVersion     :: !(Maybe Text)
-    , _cuDesiredMonitoringService :: !(Maybe Text)
+    { _cuDesiredNodePoolAutoscaling :: !(Maybe NodePoolAutoscaling)
+    , _cuDesiredAddonsConfig        :: !(Maybe AddonsConfig)
+    , _cuDesiredNodePoolId          :: !(Maybe Text)
+    , _cuDesiredImageType           :: !(Maybe Text)
+    , _cuDesiredNodeVersion         :: !(Maybe Text)
+    , _cuDesiredMasterVersion       :: !(Maybe Text)
+    , _cuDesiredLocations           :: !(Maybe [Text])
+    , _cuDesiredMonitoringService   :: !(Maybe Text)
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'ClusterUpdate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'cuDesiredNodePoolAutoscaling'
+--
 -- * 'cuDesiredAddonsConfig'
 --
 -- * 'cuDesiredNodePoolId'
 --
+-- * 'cuDesiredImageType'
+--
 -- * 'cuDesiredNodeVersion'
 --
 -- * 'cuDesiredMasterVersion'
 --
+-- * 'cuDesiredLocations'
+--
 -- * 'cuDesiredMonitoringService'
 clusterUpdate
     :: ClusterUpdate
 clusterUpdate =
     ClusterUpdate'
-    { _cuDesiredAddonsConfig = Nothing
+    { _cuDesiredNodePoolAutoscaling = Nothing
+    , _cuDesiredAddonsConfig = Nothing
     , _cuDesiredNodePoolId = Nothing
+    , _cuDesiredImageType = Nothing
     , _cuDesiredNodeVersion = Nothing
     , _cuDesiredMasterVersion = Nothing
+    , _cuDesiredLocations = Nothing
     , _cuDesiredMonitoringService = Nothing
     }
 
+-- | Autoscaler configuration for the node pool specified in
+-- desired_node_pool_id. If there is only one pool in the cluster and
+-- desired_node_pool_id is not provided then the change applies to that
+-- single node pool.
+cuDesiredNodePoolAutoscaling :: Lens' ClusterUpdate (Maybe NodePoolAutoscaling)
+cuDesiredNodePoolAutoscaling
+  = lens _cuDesiredNodePoolAutoscaling
+      (\ s a -> s{_cuDesiredNodePoolAutoscaling = a})
+
 -- | Configurations for the various addons available to run in the cluster.
 cuDesiredAddonsConfig :: Lens' ClusterUpdate (Maybe AddonsConfig)
 cuDesiredAddonsConfig
   = lens _cuDesiredAddonsConfig
       (\ s a -> s{_cuDesiredAddonsConfig = a})
 
--- | The node pool to be upgraded. This field is mandatory if the
--- \"desired_node_version\" or \"desired_image_family\" is specified and
--- there is more than one node pool on the cluster.
+-- | The node pool to be upgraded. This field is mandatory if
+-- \"desired_node_version\", \"desired_image_family\" or
+-- \"desired_node_pool_autoscaling\" is specified and there is more than
+-- one node pool on the cluster.
 cuDesiredNodePoolId :: Lens' ClusterUpdate (Maybe Text)
 cuDesiredNodePoolId
   = lens _cuDesiredNodePoolId
       (\ s a -> s{_cuDesiredNodePoolId = a})
 
+-- | The desired image type for the node pool. NOTE: Set the
+-- \"desired_node_pool\" field as well.
+cuDesiredImageType :: Lens' ClusterUpdate (Maybe Text)
+cuDesiredImageType
+  = lens _cuDesiredImageType
+      (\ s a -> s{_cuDesiredImageType = a})
+
 -- | The Kubernetes version to change the nodes to (typically an upgrade).
 -- Use \`-\` to upgrade to the latest version supported by the server.
 cuDesiredNodeVersion :: Lens' ClusterUpdate (Maybe Text)
@@ -1328,6 +1801,19 @@
   = lens _cuDesiredMasterVersion
       (\ s a -> s{_cuDesiredMasterVersion = a})
 
+-- | The desired list of Google Compute Engine
+-- [locations](\/compute\/docs\/zones#available) in which the cluster\'s
+-- nodes should be located. Changing the locations a cluster is in will
+-- result in nodes being either created or removed from the cluster,
+-- depending on whether locations are being added or removed. This list
+-- must always include the cluster\'s primary zone.
+cuDesiredLocations :: Lens' ClusterUpdate [Text]
+cuDesiredLocations
+  = lens _cuDesiredLocations
+      (\ s a -> s{_cuDesiredLocations = a})
+      . _Default
+      . _Coerce
+
 -- | The monitoring service the cluster should use to write metrics.
 -- Currently available options: * \"monitoring.googleapis.com\" - the
 -- Google Cloud Monitoring service * \"none\" - no metrics will be exported
@@ -1342,24 +1828,55 @@
           = withObject "ClusterUpdate"
               (\ o ->
                  ClusterUpdate' <$>
-                   (o .:? "desiredAddonsConfig") <*>
-                     (o .:? "desiredNodePoolId")
+                   (o .:? "desiredNodePoolAutoscaling") <*>
+                     (o .:? "desiredAddonsConfig")
+                     <*> (o .:? "desiredNodePoolId")
+                     <*> (o .:? "desiredImageType")
                      <*> (o .:? "desiredNodeVersion")
                      <*> (o .:? "desiredMasterVersion")
+                     <*> (o .:? "desiredLocations" .!= mempty)
                      <*> (o .:? "desiredMonitoringService"))
 
 instance ToJSON ClusterUpdate where
         toJSON ClusterUpdate'{..}
           = object
               (catMaybes
-                 [("desiredAddonsConfig" .=) <$>
+                 [("desiredNodePoolAutoscaling" .=) <$>
+                    _cuDesiredNodePoolAutoscaling,
+                  ("desiredAddonsConfig" .=) <$>
                     _cuDesiredAddonsConfig,
                   ("desiredNodePoolId" .=) <$> _cuDesiredNodePoolId,
+                  ("desiredImageType" .=) <$> _cuDesiredImageType,
                   ("desiredNodeVersion" .=) <$> _cuDesiredNodeVersion,
                   ("desiredMasterVersion" .=) <$>
                     _cuDesiredMasterVersion,
+                  ("desiredLocations" .=) <$> _cuDesiredLocations,
                   ("desiredMonitoringService" .=) <$>
                     _cuDesiredMonitoringService])
+
+-- | RollbackNodePoolUpgradeRequest rollbacks the previously Aborted or
+-- Failed NodePool upgrade. This will be an no-op if the last upgrade
+-- successfully completed.
+--
+-- /See:/ 'rollbackNodePoolUpgradeRequest' smart constructor.
+data RollbackNodePoolUpgradeRequest =
+    RollbackNodePoolUpgradeRequest'
+    deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RollbackNodePoolUpgradeRequest' with the minimum fields required to make a request.
+--
+rollbackNodePoolUpgradeRequest
+    :: RollbackNodePoolUpgradeRequest
+rollbackNodePoolUpgradeRequest = RollbackNodePoolUpgradeRequest'
+
+instance FromJSON RollbackNodePoolUpgradeRequest
+         where
+        parseJSON
+          = withObject "RollbackNodePoolUpgradeRequest"
+              (\ o -> pure RollbackNodePoolUpgradeRequest')
+
+instance ToJSON RollbackNodePoolUpgradeRequest where
+        toJSON = const emptyObject
 
 -- | ListNodePoolsResponse is the result of ListNodePoolsRequest.
 --
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/Rollback.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/Rollback.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/Rollback.hs
@@ -0,0 +1,241 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Container.Projects.Zones.Clusters.NodePools.Rollback
+-- Copyright   : (c) 2015-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)
+--
+-- Roll back the previously Aborted or Failed NodePool upgrade. This will
+-- be an no-op if the last upgrade successfully completed.
+--
+-- /See:/ <https://cloud.google.com/container-engine/ Google Container Engine API Reference> for @container.projects.zones.clusters.nodePools.rollback@.
+module Network.Google.Resource.Container.Projects.Zones.Clusters.NodePools.Rollback
+    (
+    -- * REST Resource
+      ProjectsZonesClustersNodePoolsRollbackResource
+
+    -- * Creating a Request
+    , projectsZonesClustersNodePoolsRollback
+    , ProjectsZonesClustersNodePoolsRollback
+
+    -- * Request Lenses
+    , pzcnprXgafv
+    , pzcnprUploadProtocol
+    , pzcnprPp
+    , pzcnprAccessToken
+    , pzcnprUploadType
+    , pzcnprZone
+    , pzcnprPayload
+    , pzcnprNodePoolId
+    , pzcnprBearerToken
+    , pzcnprClusterId
+    , pzcnprProjectId
+    , pzcnprCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.zones.clusters.nodePools.rollback@ method which the
+-- 'ProjectsZonesClustersNodePoolsRollback' request conforms to.
+type ProjectsZonesClustersNodePoolsRollbackResource =
+     "v1" :>
+       "projects" :>
+         Capture "projectId" Text :>
+           "zones" :>
+             Capture "zone" Text :>
+               "clusters" :>
+                 Capture "clusterId" Text :>
+                   "nodePools" :>
+                     CaptureMode "nodePoolId" "rollback" Text :>
+                       QueryParam "$.xgafv" Text :>
+                         QueryParam "upload_protocol" Text :>
+                           QueryParam "pp" Bool :>
+                             QueryParam "access_token" Text :>
+                               QueryParam "uploadType" Text :>
+                                 QueryParam "bearer_token" Text :>
+                                   QueryParam "callback" Text :>
+                                     QueryParam "alt" AltJSON :>
+                                       ReqBody '[JSON]
+                                         RollbackNodePoolUpgradeRequest
+                                         :> Post '[JSON] Operation
+
+-- | Roll back the previously Aborted or Failed NodePool upgrade. This will
+-- be an no-op if the last upgrade successfully completed.
+--
+-- /See:/ 'projectsZonesClustersNodePoolsRollback' smart constructor.
+data ProjectsZonesClustersNodePoolsRollback = ProjectsZonesClustersNodePoolsRollback'
+    { _pzcnprXgafv          :: !(Maybe Text)
+    , _pzcnprUploadProtocol :: !(Maybe Text)
+    , _pzcnprPp             :: !Bool
+    , _pzcnprAccessToken    :: !(Maybe Text)
+    , _pzcnprUploadType     :: !(Maybe Text)
+    , _pzcnprZone           :: !Text
+    , _pzcnprPayload        :: !RollbackNodePoolUpgradeRequest
+    , _pzcnprNodePoolId     :: !Text
+    , _pzcnprBearerToken    :: !(Maybe Text)
+    , _pzcnprClusterId      :: !Text
+    , _pzcnprProjectId      :: !Text
+    , _pzcnprCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsZonesClustersNodePoolsRollback' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pzcnprXgafv'
+--
+-- * 'pzcnprUploadProtocol'
+--
+-- * 'pzcnprPp'
+--
+-- * 'pzcnprAccessToken'
+--
+-- * 'pzcnprUploadType'
+--
+-- * 'pzcnprZone'
+--
+-- * 'pzcnprPayload'
+--
+-- * 'pzcnprNodePoolId'
+--
+-- * 'pzcnprBearerToken'
+--
+-- * 'pzcnprClusterId'
+--
+-- * 'pzcnprProjectId'
+--
+-- * 'pzcnprCallback'
+projectsZonesClustersNodePoolsRollback
+    :: Text -- ^ 'pzcnprZone'
+    -> RollbackNodePoolUpgradeRequest -- ^ 'pzcnprPayload'
+    -> Text -- ^ 'pzcnprNodePoolId'
+    -> Text -- ^ 'pzcnprClusterId'
+    -> Text -- ^ 'pzcnprProjectId'
+    -> ProjectsZonesClustersNodePoolsRollback
+projectsZonesClustersNodePoolsRollback pPzcnprZone_ pPzcnprPayload_ pPzcnprNodePoolId_ pPzcnprClusterId_ pPzcnprProjectId_ =
+    ProjectsZonesClustersNodePoolsRollback'
+    { _pzcnprXgafv = Nothing
+    , _pzcnprUploadProtocol = Nothing
+    , _pzcnprPp = True
+    , _pzcnprAccessToken = Nothing
+    , _pzcnprUploadType = Nothing
+    , _pzcnprZone = pPzcnprZone_
+    , _pzcnprPayload = pPzcnprPayload_
+    , _pzcnprNodePoolId = pPzcnprNodePoolId_
+    , _pzcnprBearerToken = Nothing
+    , _pzcnprClusterId = pPzcnprClusterId_
+    , _pzcnprProjectId = pPzcnprProjectId_
+    , _pzcnprCallback = Nothing
+    }
+
+-- | V1 error format.
+pzcnprXgafv :: Lens' ProjectsZonesClustersNodePoolsRollback (Maybe Text)
+pzcnprXgafv
+  = lens _pzcnprXgafv (\ s a -> s{_pzcnprXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pzcnprUploadProtocol :: Lens' ProjectsZonesClustersNodePoolsRollback (Maybe Text)
+pzcnprUploadProtocol
+  = lens _pzcnprUploadProtocol
+      (\ s a -> s{_pzcnprUploadProtocol = a})
+
+-- | Pretty-print response.
+pzcnprPp :: Lens' ProjectsZonesClustersNodePoolsRollback Bool
+pzcnprPp = lens _pzcnprPp (\ s a -> s{_pzcnprPp = a})
+
+-- | OAuth access token.
+pzcnprAccessToken :: Lens' ProjectsZonesClustersNodePoolsRollback (Maybe Text)
+pzcnprAccessToken
+  = lens _pzcnprAccessToken
+      (\ s a -> s{_pzcnprAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pzcnprUploadType :: Lens' ProjectsZonesClustersNodePoolsRollback (Maybe Text)
+pzcnprUploadType
+  = lens _pzcnprUploadType
+      (\ s a -> s{_pzcnprUploadType = a})
+
+-- | The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+pzcnprZone :: Lens' ProjectsZonesClustersNodePoolsRollback Text
+pzcnprZone
+  = lens _pzcnprZone (\ s a -> s{_pzcnprZone = a})
+
+-- | Multipart request metadata.
+pzcnprPayload :: Lens' ProjectsZonesClustersNodePoolsRollback RollbackNodePoolUpgradeRequest
+pzcnprPayload
+  = lens _pzcnprPayload
+      (\ s a -> s{_pzcnprPayload = a})
+
+-- | The name of the node pool to rollback.
+pzcnprNodePoolId :: Lens' ProjectsZonesClustersNodePoolsRollback Text
+pzcnprNodePoolId
+  = lens _pzcnprNodePoolId
+      (\ s a -> s{_pzcnprNodePoolId = a})
+
+-- | OAuth bearer token.
+pzcnprBearerToken :: Lens' ProjectsZonesClustersNodePoolsRollback (Maybe Text)
+pzcnprBearerToken
+  = lens _pzcnprBearerToken
+      (\ s a -> s{_pzcnprBearerToken = a})
+
+-- | The name of the cluster to rollback.
+pzcnprClusterId :: Lens' ProjectsZonesClustersNodePoolsRollback Text
+pzcnprClusterId
+  = lens _pzcnprClusterId
+      (\ s a -> s{_pzcnprClusterId = a})
+
+-- | The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840).
+pzcnprProjectId :: Lens' ProjectsZonesClustersNodePoolsRollback Text
+pzcnprProjectId
+  = lens _pzcnprProjectId
+      (\ s a -> s{_pzcnprProjectId = a})
+
+-- | JSONP
+pzcnprCallback :: Lens' ProjectsZonesClustersNodePoolsRollback (Maybe Text)
+pzcnprCallback
+  = lens _pzcnprCallback
+      (\ s a -> s{_pzcnprCallback = a})
+
+instance GoogleRequest
+         ProjectsZonesClustersNodePoolsRollback where
+        type Rs ProjectsZonesClustersNodePoolsRollback =
+             Operation
+        type Scopes ProjectsZonesClustersNodePoolsRollback =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsZonesClustersNodePoolsRollback'{..}
+          = go _pzcnprProjectId _pzcnprZone _pzcnprClusterId
+              _pzcnprNodePoolId
+              _pzcnprXgafv
+              _pzcnprUploadProtocol
+              (Just _pzcnprPp)
+              _pzcnprAccessToken
+              _pzcnprUploadType
+              _pzcnprBearerToken
+              _pzcnprCallback
+              (Just AltJSON)
+              _pzcnprPayload
+              containerService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsZonesClustersNodePoolsRollbackResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/SetManagement.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/SetManagement.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/SetManagement.hs
@@ -0,0 +1,244 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Container.Projects.Zones.Clusters.NodePools.SetManagement
+-- Copyright   : (c) 2015-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)
+--
+-- Sets the NodeManagement options for a node pool.
+--
+-- /See:/ <https://cloud.google.com/container-engine/ Google Container Engine API Reference> for @container.projects.zones.clusters.nodePools.setManagement@.
+module Network.Google.Resource.Container.Projects.Zones.Clusters.NodePools.SetManagement
+    (
+    -- * REST Resource
+      ProjectsZonesClustersNodePoolsSetManagementResource
+
+    -- * Creating a Request
+    , projectsZonesClustersNodePoolsSetManagement
+    , ProjectsZonesClustersNodePoolsSetManagement
+
+    -- * Request Lenses
+    , pzcnpsmXgafv
+    , pzcnpsmUploadProtocol
+    , pzcnpsmPp
+    , pzcnpsmAccessToken
+    , pzcnpsmUploadType
+    , pzcnpsmZone
+    , pzcnpsmPayload
+    , pzcnpsmNodePoolId
+    , pzcnpsmBearerToken
+    , pzcnpsmClusterId
+    , pzcnpsmProjectId
+    , pzcnpsmCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.zones.clusters.nodePools.setManagement@ method which the
+-- 'ProjectsZonesClustersNodePoolsSetManagement' request conforms to.
+type ProjectsZonesClustersNodePoolsSetManagementResource
+     =
+     "v1" :>
+       "projects" :>
+         Capture "projectId" Text :>
+           "zones" :>
+             Capture "zone" Text :>
+               "clusters" :>
+                 Capture "clusterId" Text :>
+                   "nodePools" :>
+                     Capture "nodePoolId" Text :>
+                       "setManagement" :>
+                         QueryParam "$.xgafv" Text :>
+                           QueryParam "upload_protocol" Text :>
+                             QueryParam "pp" Bool :>
+                               QueryParam "access_token" Text :>
+                                 QueryParam "uploadType" Text :>
+                                   QueryParam "bearer_token" Text :>
+                                     QueryParam "callback" Text :>
+                                       QueryParam "alt" AltJSON :>
+                                         ReqBody '[JSON]
+                                           SetNodePoolManagementRequest
+                                           :> Post '[JSON] Operation
+
+-- | Sets the NodeManagement options for a node pool.
+--
+-- /See:/ 'projectsZonesClustersNodePoolsSetManagement' smart constructor.
+data ProjectsZonesClustersNodePoolsSetManagement = ProjectsZonesClustersNodePoolsSetManagement'
+    { _pzcnpsmXgafv          :: !(Maybe Text)
+    , _pzcnpsmUploadProtocol :: !(Maybe Text)
+    , _pzcnpsmPp             :: !Bool
+    , _pzcnpsmAccessToken    :: !(Maybe Text)
+    , _pzcnpsmUploadType     :: !(Maybe Text)
+    , _pzcnpsmZone           :: !Text
+    , _pzcnpsmPayload        :: !SetNodePoolManagementRequest
+    , _pzcnpsmNodePoolId     :: !Text
+    , _pzcnpsmBearerToken    :: !(Maybe Text)
+    , _pzcnpsmClusterId      :: !Text
+    , _pzcnpsmProjectId      :: !Text
+    , _pzcnpsmCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsZonesClustersNodePoolsSetManagement' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pzcnpsmXgafv'
+--
+-- * 'pzcnpsmUploadProtocol'
+--
+-- * 'pzcnpsmPp'
+--
+-- * 'pzcnpsmAccessToken'
+--
+-- * 'pzcnpsmUploadType'
+--
+-- * 'pzcnpsmZone'
+--
+-- * 'pzcnpsmPayload'
+--
+-- * 'pzcnpsmNodePoolId'
+--
+-- * 'pzcnpsmBearerToken'
+--
+-- * 'pzcnpsmClusterId'
+--
+-- * 'pzcnpsmProjectId'
+--
+-- * 'pzcnpsmCallback'
+projectsZonesClustersNodePoolsSetManagement
+    :: Text -- ^ 'pzcnpsmZone'
+    -> SetNodePoolManagementRequest -- ^ 'pzcnpsmPayload'
+    -> Text -- ^ 'pzcnpsmNodePoolId'
+    -> Text -- ^ 'pzcnpsmClusterId'
+    -> Text -- ^ 'pzcnpsmProjectId'
+    -> ProjectsZonesClustersNodePoolsSetManagement
+projectsZonesClustersNodePoolsSetManagement pPzcnpsmZone_ pPzcnpsmPayload_ pPzcnpsmNodePoolId_ pPzcnpsmClusterId_ pPzcnpsmProjectId_ =
+    ProjectsZonesClustersNodePoolsSetManagement'
+    { _pzcnpsmXgafv = Nothing
+    , _pzcnpsmUploadProtocol = Nothing
+    , _pzcnpsmPp = True
+    , _pzcnpsmAccessToken = Nothing
+    , _pzcnpsmUploadType = Nothing
+    , _pzcnpsmZone = pPzcnpsmZone_
+    , _pzcnpsmPayload = pPzcnpsmPayload_
+    , _pzcnpsmNodePoolId = pPzcnpsmNodePoolId_
+    , _pzcnpsmBearerToken = Nothing
+    , _pzcnpsmClusterId = pPzcnpsmClusterId_
+    , _pzcnpsmProjectId = pPzcnpsmProjectId_
+    , _pzcnpsmCallback = Nothing
+    }
+
+-- | V1 error format.
+pzcnpsmXgafv :: Lens' ProjectsZonesClustersNodePoolsSetManagement (Maybe Text)
+pzcnpsmXgafv
+  = lens _pzcnpsmXgafv (\ s a -> s{_pzcnpsmXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pzcnpsmUploadProtocol :: Lens' ProjectsZonesClustersNodePoolsSetManagement (Maybe Text)
+pzcnpsmUploadProtocol
+  = lens _pzcnpsmUploadProtocol
+      (\ s a -> s{_pzcnpsmUploadProtocol = a})
+
+-- | Pretty-print response.
+pzcnpsmPp :: Lens' ProjectsZonesClustersNodePoolsSetManagement Bool
+pzcnpsmPp
+  = lens _pzcnpsmPp (\ s a -> s{_pzcnpsmPp = a})
+
+-- | OAuth access token.
+pzcnpsmAccessToken :: Lens' ProjectsZonesClustersNodePoolsSetManagement (Maybe Text)
+pzcnpsmAccessToken
+  = lens _pzcnpsmAccessToken
+      (\ s a -> s{_pzcnpsmAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pzcnpsmUploadType :: Lens' ProjectsZonesClustersNodePoolsSetManagement (Maybe Text)
+pzcnpsmUploadType
+  = lens _pzcnpsmUploadType
+      (\ s a -> s{_pzcnpsmUploadType = a})
+
+-- | The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+pzcnpsmZone :: Lens' ProjectsZonesClustersNodePoolsSetManagement Text
+pzcnpsmZone
+  = lens _pzcnpsmZone (\ s a -> s{_pzcnpsmZone = a})
+
+-- | Multipart request metadata.
+pzcnpsmPayload :: Lens' ProjectsZonesClustersNodePoolsSetManagement SetNodePoolManagementRequest
+pzcnpsmPayload
+  = lens _pzcnpsmPayload
+      (\ s a -> s{_pzcnpsmPayload = a})
+
+-- | The name of the node pool to update.
+pzcnpsmNodePoolId :: Lens' ProjectsZonesClustersNodePoolsSetManagement Text
+pzcnpsmNodePoolId
+  = lens _pzcnpsmNodePoolId
+      (\ s a -> s{_pzcnpsmNodePoolId = a})
+
+-- | OAuth bearer token.
+pzcnpsmBearerToken :: Lens' ProjectsZonesClustersNodePoolsSetManagement (Maybe Text)
+pzcnpsmBearerToken
+  = lens _pzcnpsmBearerToken
+      (\ s a -> s{_pzcnpsmBearerToken = a})
+
+-- | The name of the cluster to update.
+pzcnpsmClusterId :: Lens' ProjectsZonesClustersNodePoolsSetManagement Text
+pzcnpsmClusterId
+  = lens _pzcnpsmClusterId
+      (\ s a -> s{_pzcnpsmClusterId = a})
+
+-- | The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840).
+pzcnpsmProjectId :: Lens' ProjectsZonesClustersNodePoolsSetManagement Text
+pzcnpsmProjectId
+  = lens _pzcnpsmProjectId
+      (\ s a -> s{_pzcnpsmProjectId = a})
+
+-- | JSONP
+pzcnpsmCallback :: Lens' ProjectsZonesClustersNodePoolsSetManagement (Maybe Text)
+pzcnpsmCallback
+  = lens _pzcnpsmCallback
+      (\ s a -> s{_pzcnpsmCallback = a})
+
+instance GoogleRequest
+         ProjectsZonesClustersNodePoolsSetManagement where
+        type Rs ProjectsZonesClustersNodePoolsSetManagement =
+             Operation
+        type Scopes
+               ProjectsZonesClustersNodePoolsSetManagement
+             = '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsZonesClustersNodePoolsSetManagement'{..}
+          = go _pzcnpsmProjectId _pzcnpsmZone _pzcnpsmClusterId
+              _pzcnpsmNodePoolId
+              _pzcnpsmXgafv
+              _pzcnpsmUploadProtocol
+              (Just _pzcnpsmPp)
+              _pzcnpsmAccessToken
+              _pzcnpsmUploadType
+              _pzcnpsmBearerToken
+              _pzcnpsmCallback
+              (Just AltJSON)
+              _pzcnpsmPayload
+              containerService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy
+                           ProjectsZonesClustersNodePoolsSetManagementResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Operations/Cancel.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Operations/Cancel.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Operations/Cancel.hs
@@ -0,0 +1,218 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Container.Projects.Zones.Operations.Cancel
+-- Copyright   : (c) 2015-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)
+--
+-- Cancels the specified operation.
+--
+-- /See:/ <https://cloud.google.com/container-engine/ Google Container Engine API Reference> for @container.projects.zones.operations.cancel@.
+module Network.Google.Resource.Container.Projects.Zones.Operations.Cancel
+    (
+    -- * REST Resource
+      ProjectsZonesOperationsCancelResource
+
+    -- * Creating a Request
+    , projectsZonesOperationsCancel
+    , ProjectsZonesOperationsCancel
+
+    -- * Request Lenses
+    , pzocXgafv
+    , pzocUploadProtocol
+    , pzocPp
+    , pzocAccessToken
+    , pzocUploadType
+    , pzocZone
+    , pzocPayload
+    , pzocBearerToken
+    , pzocProjectId
+    , pzocOperationId
+    , pzocCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.zones.operations.cancel@ method which the
+-- 'ProjectsZonesOperationsCancel' request conforms to.
+type ProjectsZonesOperationsCancelResource =
+     "v1" :>
+       "projects" :>
+         Capture "projectId" Text :>
+           "zones" :>
+             Capture "zone" Text :>
+               "operations" :>
+                 CaptureMode "operationId" "cancel" Text :>
+                   QueryParam "$.xgafv" Text :>
+                     QueryParam "upload_protocol" Text :>
+                       QueryParam "pp" Bool :>
+                         QueryParam "access_token" Text :>
+                           QueryParam "uploadType" Text :>
+                             QueryParam "bearer_token" Text :>
+                               QueryParam "callback" Text :>
+                                 QueryParam "alt" AltJSON :>
+                                   ReqBody '[JSON] CancelOperationRequest :>
+                                     Post '[JSON] Empty
+
+-- | Cancels the specified operation.
+--
+-- /See:/ 'projectsZonesOperationsCancel' smart constructor.
+data ProjectsZonesOperationsCancel = ProjectsZonesOperationsCancel'
+    { _pzocXgafv          :: !(Maybe Text)
+    , _pzocUploadProtocol :: !(Maybe Text)
+    , _pzocPp             :: !Bool
+    , _pzocAccessToken    :: !(Maybe Text)
+    , _pzocUploadType     :: !(Maybe Text)
+    , _pzocZone           :: !Text
+    , _pzocPayload        :: !CancelOperationRequest
+    , _pzocBearerToken    :: !(Maybe Text)
+    , _pzocProjectId      :: !Text
+    , _pzocOperationId    :: !Text
+    , _pzocCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsZonesOperationsCancel' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pzocXgafv'
+--
+-- * 'pzocUploadProtocol'
+--
+-- * 'pzocPp'
+--
+-- * 'pzocAccessToken'
+--
+-- * 'pzocUploadType'
+--
+-- * 'pzocZone'
+--
+-- * 'pzocPayload'
+--
+-- * 'pzocBearerToken'
+--
+-- * 'pzocProjectId'
+--
+-- * 'pzocOperationId'
+--
+-- * 'pzocCallback'
+projectsZonesOperationsCancel
+    :: Text -- ^ 'pzocZone'
+    -> CancelOperationRequest -- ^ 'pzocPayload'
+    -> Text -- ^ 'pzocProjectId'
+    -> Text -- ^ 'pzocOperationId'
+    -> ProjectsZonesOperationsCancel
+projectsZonesOperationsCancel pPzocZone_ pPzocPayload_ pPzocProjectId_ pPzocOperationId_ =
+    ProjectsZonesOperationsCancel'
+    { _pzocXgafv = Nothing
+    , _pzocUploadProtocol = Nothing
+    , _pzocPp = True
+    , _pzocAccessToken = Nothing
+    , _pzocUploadType = Nothing
+    , _pzocZone = pPzocZone_
+    , _pzocPayload = pPzocPayload_
+    , _pzocBearerToken = Nothing
+    , _pzocProjectId = pPzocProjectId_
+    , _pzocOperationId = pPzocOperationId_
+    , _pzocCallback = Nothing
+    }
+
+-- | V1 error format.
+pzocXgafv :: Lens' ProjectsZonesOperationsCancel (Maybe Text)
+pzocXgafv
+  = lens _pzocXgafv (\ s a -> s{_pzocXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pzocUploadProtocol :: Lens' ProjectsZonesOperationsCancel (Maybe Text)
+pzocUploadProtocol
+  = lens _pzocUploadProtocol
+      (\ s a -> s{_pzocUploadProtocol = a})
+
+-- | Pretty-print response.
+pzocPp :: Lens' ProjectsZonesOperationsCancel Bool
+pzocPp = lens _pzocPp (\ s a -> s{_pzocPp = a})
+
+-- | OAuth access token.
+pzocAccessToken :: Lens' ProjectsZonesOperationsCancel (Maybe Text)
+pzocAccessToken
+  = lens _pzocAccessToken
+      (\ s a -> s{_pzocAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pzocUploadType :: Lens' ProjectsZonesOperationsCancel (Maybe Text)
+pzocUploadType
+  = lens _pzocUploadType
+      (\ s a -> s{_pzocUploadType = a})
+
+-- | The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the operation resides.
+pzocZone :: Lens' ProjectsZonesOperationsCancel Text
+pzocZone = lens _pzocZone (\ s a -> s{_pzocZone = a})
+
+-- | Multipart request metadata.
+pzocPayload :: Lens' ProjectsZonesOperationsCancel CancelOperationRequest
+pzocPayload
+  = lens _pzocPayload (\ s a -> s{_pzocPayload = a})
+
+-- | OAuth bearer token.
+pzocBearerToken :: Lens' ProjectsZonesOperationsCancel (Maybe Text)
+pzocBearerToken
+  = lens _pzocBearerToken
+      (\ s a -> s{_pzocBearerToken = a})
+
+-- | The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840).
+pzocProjectId :: Lens' ProjectsZonesOperationsCancel Text
+pzocProjectId
+  = lens _pzocProjectId
+      (\ s a -> s{_pzocProjectId = a})
+
+-- | The server-assigned \`name\` of the operation.
+pzocOperationId :: Lens' ProjectsZonesOperationsCancel Text
+pzocOperationId
+  = lens _pzocOperationId
+      (\ s a -> s{_pzocOperationId = a})
+
+-- | JSONP
+pzocCallback :: Lens' ProjectsZonesOperationsCancel (Maybe Text)
+pzocCallback
+  = lens _pzocCallback (\ s a -> s{_pzocCallback = a})
+
+instance GoogleRequest ProjectsZonesOperationsCancel
+         where
+        type Rs ProjectsZonesOperationsCancel = Empty
+        type Scopes ProjectsZonesOperationsCancel =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsZonesOperationsCancel'{..}
+          = go _pzocProjectId _pzocZone _pzocOperationId
+              _pzocXgafv
+              _pzocUploadProtocol
+              (Just _pzocPp)
+              _pzocAccessToken
+              _pzocUploadType
+              _pzocBearerToken
+              _pzocCallback
+              (Just AltJSON)
+              _pzocPayload
+              containerService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsZonesOperationsCancelResource)
+                      mempty
diff --git a/gogol-container.cabal b/gogol-container.cabal
--- a/gogol-container.cabal
+++ b/gogol-container.cabal
@@ -1,5 +1,5 @@
 name:                  gogol-container
-version:               0.1.1
+version:               0.2.0
 synopsis:              Google Container Engine SDK.
 homepage:              https://github.com/brendanhay/gogol
 bug-reports:           https://github.com/brendanhay/gogol/issues
@@ -44,8 +44,11 @@
         , Network.Google.Resource.Container.Projects.Zones.Clusters.NodePools.Delete
         , Network.Google.Resource.Container.Projects.Zones.Clusters.NodePools.Get
         , Network.Google.Resource.Container.Projects.Zones.Clusters.NodePools.List
+        , Network.Google.Resource.Container.Projects.Zones.Clusters.NodePools.Rollback
+        , Network.Google.Resource.Container.Projects.Zones.Clusters.NodePools.SetManagement
         , Network.Google.Resource.Container.Projects.Zones.Clusters.Update
         , Network.Google.Resource.Container.Projects.Zones.GetServerConfig
+        , Network.Google.Resource.Container.Projects.Zones.Operations.Cancel
         , Network.Google.Resource.Container.Projects.Zones.Operations.Get
         , Network.Google.Resource.Container.Projects.Zones.Operations.List
 
@@ -54,5 +57,5 @@
         , Network.Google.Container.Types.Sum
 
     build-depends:
-          gogol-core == 0.1.1.*
+          gogol-core == 0.2.0.*
         , base       >= 4.7 && < 5
