diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
 
 ## Version
 
-`0.3.0`
+`0.5.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
@@ -30,6 +30,9 @@
 
     -- * Resources
 
+    -- ** container.projects.aggregated.usableSubnetworks.list
+    , module Network.Google.Resource.Container.Projects.Aggregated.UsableSubnetworks.List
+
     -- ** container.projects.locations.clusters.completeIpRotation
     , module Network.Google.Resource.Container.Projects.Locations.Clusters.CompleteIPRotation
 
@@ -42,6 +45,9 @@
     -- ** container.projects.locations.clusters.get
     , module Network.Google.Resource.Container.Projects.Locations.Clusters.Get
 
+    -- ** container.projects.locations.clusters.getJwks
+    , module Network.Google.Resource.Container.Projects.Locations.Clusters.GetJWKs
+
     -- ** container.projects.locations.clusters.list
     , module Network.Google.Resource.Container.Projects.Locations.Clusters.List
 
@@ -108,6 +114,9 @@
     -- ** container.projects.locations.clusters.updateMaster
     , module Network.Google.Resource.Container.Projects.Locations.Clusters.UpdateMaster
 
+    -- ** container.projects.locations.clusters.well-known.getOpenid-configuration
+    , module Network.Google.Resource.Container.Projects.Locations.Clusters.WellKnown.GetOpenidConfiguration
+
     -- ** container.projects.locations.getServerConfig
     , module Network.Google.Resource.Container.Projects.Locations.GetServerConfig
 
@@ -217,6 +226,12 @@
     , networkPolicyConfig
     , npcDisabled
 
+    -- ** ListUsableSubnetworksResponse
+    , ListUsableSubnetworksResponse
+    , listUsableSubnetworksResponse
+    , lusrNextPageToken
+    , lusrSubnetworks
+
     -- ** UpdateNodePoolRequest
     , UpdateNodePoolRequest
     , updateNodePoolRequest
@@ -255,6 +270,9 @@
     , slarClusterId
     , slarProjectId
 
+    -- ** UsableSubnetworkSecondaryRangeStatus
+    , UsableSubnetworkSecondaryRangeStatus (..)
+
     -- ** HorizontalPodAutoscaling
     , HorizontalPodAutoscaling
     , horizontalPodAutoscaling
@@ -291,6 +309,7 @@
     , cNodePools
     , cEnableKubernetesAlpha
     , cResourceLabels
+    , cTpuIPv4CIdRBlock
     , cNodeConfig
     , cNodeIPv4CIdRSize
     , cClusterIPv4CIdR
@@ -311,11 +330,13 @@
     , cName
     , cCurrentMasterVersion
     , cStatusMessage
+    , cDefaultMaxPodsConstraint
     , cSubnetwork
     , cCurrentNodeCount
     , cPrivateClusterConfig
     , cMaintenancePolicy
     , cConditions
+    , cEnableTpu
     , cEndpoint
     , cExpireTime
     , cNetworkPolicy
@@ -426,6 +447,13 @@
     -- ** OperationOperationType
     , OperationOperationType (..)
 
+    -- ** UsableSubnetworkSecondaryRange
+    , UsableSubnetworkSecondaryRange
+    , usableSubnetworkSecondaryRange
+    , ussrStatus
+    , ussrRangeName
+    , ussrIPCIdRRange
+
     -- ** NodeManagement
     , NodeManagement
     , nodeManagement
@@ -456,6 +484,15 @@
     , smprMaintenancePolicy
     , smprProjectId
 
+    -- ** UsableSubnetwork
+    , UsableSubnetwork
+    , usableSubnetwork
+    , usNetwork
+    , usStatusMessage
+    , usSecondaryIPRanges
+    , usIPCIdRRange
+    , usSubnetwork
+
     -- ** KubernetesDashboard
     , KubernetesDashboard
     , kubernetesDashboard
@@ -476,6 +513,30 @@
     , slrProjectId
     , slrLabelFingerprint
 
+    -- ** GetOpenIdConfigResponse
+    , GetOpenIdConfigResponse
+    , getOpenIdConfigResponse
+    , goicrIdTokenSigningAlgValuesSupported
+    , goicrResponseTypesSupported
+    , goicrJWKsURI
+    , goicrGrantTypes
+    , goicrClaimsSupported
+    , goicrIssuer
+    , goicrSubjectTypesSupported
+
+    -- ** JWK
+    , JWK
+    , jwk
+    , jCrv
+    , jAlg
+    , jUse
+    , jKid
+    , jN
+    , jE
+    , jX
+    , jKty
+    , jY
+
     -- ** OperationStatus
     , OperationStatus (..)
 
@@ -484,10 +545,16 @@
     , maintenanceWindow
     , mwDailyMaintenanceWindow
 
+    -- ** MaxPodsConstraint
+    , MaxPodsConstraint
+    , maxPodsConstraint
+    , mpcMaxPodsPerNode
+
     -- ** IPAllocationPolicy
     , IPAllocationPolicy
     , ipAllocationPolicy
     , iapServicesSecondaryRangeName
+    , iapTpuIPv4CIdRBlock
     , iapNodeIPv4CIdR
     , iapUseIPAliases
     , iapClusterIPv4CIdR
@@ -521,6 +588,7 @@
     , npConfig
     , npInitialNodeCount
     , npManagement
+    , npMaxPodsConstraint
     , npSelfLink
     , npName
     , npStatusMessage
@@ -719,6 +787,11 @@
     -- ** ClusterStatus
     , ClusterStatus (..)
 
+    -- ** GetJSONWebKeysResponse
+    , GetJSONWebKeysResponse
+    , getJSONWebKeysResponse
+    , gjwkrKeys
+
     -- ** NodeTaintEffect
     , NodeTaintEffect (..)
 
@@ -742,10 +815,12 @@
 
 import           Network.Google.Container.Types
 import           Network.Google.Prelude
+import           Network.Google.Resource.Container.Projects.Aggregated.UsableSubnetworks.List
 import           Network.Google.Resource.Container.Projects.Locations.Clusters.CompleteIPRotation
 import           Network.Google.Resource.Container.Projects.Locations.Clusters.Create
 import           Network.Google.Resource.Container.Projects.Locations.Clusters.Delete
 import           Network.Google.Resource.Container.Projects.Locations.Clusters.Get
+import           Network.Google.Resource.Container.Projects.Locations.Clusters.GetJWKs
 import           Network.Google.Resource.Container.Projects.Locations.Clusters.List
 import           Network.Google.Resource.Container.Projects.Locations.Clusters.NodePools.Create
 import           Network.Google.Resource.Container.Projects.Locations.Clusters.NodePools.Delete
@@ -768,6 +843,7 @@
 import           Network.Google.Resource.Container.Projects.Locations.Clusters.StartIPRotation
 import           Network.Google.Resource.Container.Projects.Locations.Clusters.Update
 import           Network.Google.Resource.Container.Projects.Locations.Clusters.UpdateMaster
+import           Network.Google.Resource.Container.Projects.Locations.Clusters.WellKnown.GetOpenidConfiguration
 import           Network.Google.Resource.Container.Projects.Locations.GetServerConfig
 import           Network.Google.Resource.Container.Projects.Locations.Operations.Cancel
 import           Network.Google.Resource.Container.Projects.Locations.Operations.Get
@@ -809,8 +885,9 @@
 
 -- | Represents the entirety of the methods and resources available for the Kubernetes Engine API service.
 type ContainerAPI =
-     ProjectsZonesOperationsListResource :<|>
-       ProjectsZonesOperationsGetResource
+     ProjectsAggregatedUsableSubnetworksListResource :<|>
+       ProjectsZonesOperationsListResource
+       :<|> ProjectsZonesOperationsGetResource
        :<|> ProjectsZonesOperationsCancelResource
        :<|> ProjectsZonesClustersNodePoolsSetSizeResource
        :<|> ProjectsZonesClustersNodePoolsListResource
@@ -859,6 +936,8 @@
        :<|> ProjectsLocationsClustersNodePoolsDeleteResource
        :<|> ProjectsLocationsClustersNodePoolsUpdateResource
        :<|>
+       ProjectsLocationsClustersWellKnownGetOpenidConfigurationResource
+       :<|>
        ProjectsLocationsClustersSetNetworkPolicyResource
        :<|> ProjectsLocationsClustersSetLocationsResource
        :<|> ProjectsLocationsClustersListResource
@@ -876,6 +955,7 @@
        ProjectsLocationsClustersCompleteIPRotationResource
        :<|>
        ProjectsLocationsClustersSetMaintenancePolicyResource
+       :<|> ProjectsLocationsClustersGetJWKsResource
        :<|> ProjectsLocationsClustersDeleteResource
        :<|> ProjectsLocationsClustersUpdateResource
        :<|> ProjectsLocationsClustersSetLoggingResource
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
@@ -27,6 +27,12 @@
     , networkPolicyConfig
     , npcDisabled
 
+    -- * ListUsableSubnetworksResponse
+    , ListUsableSubnetworksResponse
+    , listUsableSubnetworksResponse
+    , lusrNextPageToken
+    , lusrSubnetworks
+
     -- * UpdateNodePoolRequest
     , UpdateNodePoolRequest
     , updateNodePoolRequest
@@ -65,6 +71,9 @@
     , slarClusterId
     , slarProjectId
 
+    -- * UsableSubnetworkSecondaryRangeStatus
+    , UsableSubnetworkSecondaryRangeStatus (..)
+
     -- * HorizontalPodAutoscaling
     , HorizontalPodAutoscaling
     , horizontalPodAutoscaling
@@ -101,6 +110,7 @@
     , cNodePools
     , cEnableKubernetesAlpha
     , cResourceLabels
+    , cTpuIPv4CIdRBlock
     , cNodeConfig
     , cNodeIPv4CIdRSize
     , cClusterIPv4CIdR
@@ -121,11 +131,13 @@
     , cName
     , cCurrentMasterVersion
     , cStatusMessage
+    , cDefaultMaxPodsConstraint
     , cSubnetwork
     , cCurrentNodeCount
     , cPrivateClusterConfig
     , cMaintenancePolicy
     , cConditions
+    , cEnableTpu
     , cEndpoint
     , cExpireTime
     , cNetworkPolicy
@@ -236,6 +248,13 @@
     -- * OperationOperationType
     , OperationOperationType (..)
 
+    -- * UsableSubnetworkSecondaryRange
+    , UsableSubnetworkSecondaryRange
+    , usableSubnetworkSecondaryRange
+    , ussrStatus
+    , ussrRangeName
+    , ussrIPCIdRRange
+
     -- * NodeManagement
     , NodeManagement
     , nodeManagement
@@ -266,6 +285,15 @@
     , smprMaintenancePolicy
     , smprProjectId
 
+    -- * UsableSubnetwork
+    , UsableSubnetwork
+    , usableSubnetwork
+    , usNetwork
+    , usStatusMessage
+    , usSecondaryIPRanges
+    , usIPCIdRRange
+    , usSubnetwork
+
     -- * KubernetesDashboard
     , KubernetesDashboard
     , kubernetesDashboard
@@ -286,6 +314,30 @@
     , slrProjectId
     , slrLabelFingerprint
 
+    -- * GetOpenIdConfigResponse
+    , GetOpenIdConfigResponse
+    , getOpenIdConfigResponse
+    , goicrIdTokenSigningAlgValuesSupported
+    , goicrResponseTypesSupported
+    , goicrJWKsURI
+    , goicrGrantTypes
+    , goicrClaimsSupported
+    , goicrIssuer
+    , goicrSubjectTypesSupported
+
+    -- * JWK
+    , JWK
+    , jwk
+    , jCrv
+    , jAlg
+    , jUse
+    , jKid
+    , jN
+    , jE
+    , jX
+    , jKty
+    , jY
+
     -- * OperationStatus
     , OperationStatus (..)
 
@@ -294,10 +346,16 @@
     , maintenanceWindow
     , mwDailyMaintenanceWindow
 
+    -- * MaxPodsConstraint
+    , MaxPodsConstraint
+    , maxPodsConstraint
+    , mpcMaxPodsPerNode
+
     -- * IPAllocationPolicy
     , IPAllocationPolicy
     , ipAllocationPolicy
     , iapServicesSecondaryRangeName
+    , iapTpuIPv4CIdRBlock
     , iapNodeIPv4CIdR
     , iapUseIPAliases
     , iapClusterIPv4CIdR
@@ -331,6 +389,7 @@
     , npConfig
     , npInitialNodeCount
     , npManagement
+    , npMaxPodsConstraint
     , npSelfLink
     , npName
     , npStatusMessage
@@ -529,6 +588,11 @@
     -- * ClusterStatus
     , ClusterStatus (..)
 
+    -- * GetJSONWebKeysResponse
+    , GetJSONWebKeysResponse
+    , getJSONWebKeysResponse
+    , gjwkrKeys
+
     -- * NodeTaintEffect
     , NodeTaintEffect (..)
 
@@ -562,4 +626,4 @@
 
 -- | View and manage your data across Google Cloud Platform services
 cloudPlatformScope :: Proxy '["https://www.googleapis.com/auth/cloud-platform"]
-cloudPlatformScope = Proxy;
+cloudPlatformScope = Proxy
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
@@ -25,5030 +25,5807 @@
 -- is enabled for the nodes.
 --
 -- /See:/ 'networkPolicyConfig' smart constructor.
-newtype NetworkPolicyConfig = NetworkPolicyConfig'
-    { _npcDisabled :: Maybe Bool
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'NetworkPolicyConfig' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'npcDisabled'
-networkPolicyConfig
-    :: NetworkPolicyConfig
-networkPolicyConfig =
-    NetworkPolicyConfig'
-    { _npcDisabled = Nothing
-    }
-
--- | Whether NetworkPolicy is enabled for this cluster.
-npcDisabled :: Lens' NetworkPolicyConfig (Maybe Bool)
-npcDisabled
-  = lens _npcDisabled (\ s a -> s{_npcDisabled = a})
-
-instance FromJSON NetworkPolicyConfig where
-        parseJSON
-          = withObject "NetworkPolicyConfig"
-              (\ o -> NetworkPolicyConfig' <$> (o .:? "disabled"))
-
-instance ToJSON NetworkPolicyConfig where
-        toJSON NetworkPolicyConfig'{..}
-          = object
-              (catMaybes [("disabled" .=) <$> _npcDisabled])
-
--- | UpdateNodePoolRequests update a node pool\'s image and\/or version.
---
--- /See:/ 'updateNodePoolRequest' smart constructor.
-data UpdateNodePoolRequest = UpdateNodePoolRequest'
-    { _unprZone        :: !(Maybe Text)
-    , _unprNodePoolId  :: !(Maybe Text)
-    , _unprImageType   :: !(Maybe Text)
-    , _unprName        :: !(Maybe Text)
-    , _unprClusterId   :: !(Maybe Text)
-    , _unprNodeVersion :: !(Maybe Text)
-    , _unprProjectId   :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'UpdateNodePoolRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'unprZone'
---
--- * 'unprNodePoolId'
---
--- * 'unprImageType'
---
--- * 'unprName'
---
--- * 'unprClusterId'
---
--- * 'unprNodeVersion'
---
--- * 'unprProjectId'
-updateNodePoolRequest
-    :: UpdateNodePoolRequest
-updateNodePoolRequest =
-    UpdateNodePoolRequest'
-    { _unprZone = Nothing
-    , _unprNodePoolId = Nothing
-    , _unprImageType = Nothing
-    , _unprName = Nothing
-    , _unprClusterId = Nothing
-    , _unprNodeVersion = Nothing
-    , _unprProjectId = Nothing
-    }
-
--- | Deprecated. The name of the Google Compute Engine
--- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
--- This field has been deprecated and replaced by the name field.
-unprZone :: Lens' UpdateNodePoolRequest (Maybe Text)
-unprZone = lens _unprZone (\ s a -> s{_unprZone = a})
-
--- | Deprecated. The name of the node pool to upgrade. This field has been
--- deprecated and replaced by the name field.
-unprNodePoolId :: Lens' UpdateNodePoolRequest (Maybe Text)
-unprNodePoolId
-  = lens _unprNodePoolId
-      (\ s a -> s{_unprNodePoolId = a})
-
--- | The desired image type for the node pool.
-unprImageType :: Lens' UpdateNodePoolRequest (Maybe Text)
-unprImageType
-  = lens _unprImageType
-      (\ s a -> s{_unprImageType = a})
-
--- | The name (project, location, cluster, node pool) of the node pool to
--- update. Specified in the format
--- \'projects\/*\/locations\/*\/clusters\/*\/nodePools\/*\'.
-unprName :: Lens' UpdateNodePoolRequest (Maybe Text)
-unprName = lens _unprName (\ s a -> s{_unprName = a})
-
--- | Deprecated. The name of the cluster to upgrade. This field has been
--- deprecated and replaced by the name field.
-unprClusterId :: Lens' UpdateNodePoolRequest (Maybe Text)
-unprClusterId
-  = lens _unprClusterId
-      (\ s a -> s{_unprClusterId = a})
-
--- | The Kubernetes version to change the nodes to (typically an upgrade).
--- Users may specify either explicit versions offered by Kubernetes Engine
--- or version aliases, which have the following behavior: - \"latest\":
--- picks the highest valid Kubernetes version - \"1.X\": picks the highest
--- valid patch+gke.N patch in the 1.X version - \"1.X.Y\": picks the
--- highest valid gke.N patch in the 1.X.Y version - \"1.X.Y-gke.N\": picks
--- an explicit Kubernetes version - \"-\": picks the Kubernetes master
--- version
-unprNodeVersion :: Lens' UpdateNodePoolRequest (Maybe Text)
-unprNodeVersion
-  = lens _unprNodeVersion
-      (\ s a -> s{_unprNodeVersion = a})
-
--- | Deprecated. The Google Developers Console [project ID or project
--- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
--- field has been deprecated and replaced by the name field.
-unprProjectId :: Lens' UpdateNodePoolRequest (Maybe Text)
-unprProjectId
-  = lens _unprProjectId
-      (\ s a -> s{_unprProjectId = a})
-
-instance FromJSON UpdateNodePoolRequest where
-        parseJSON
-          = withObject "UpdateNodePoolRequest"
-              (\ o ->
-                 UpdateNodePoolRequest' <$>
-                   (o .:? "zone") <*> (o .:? "nodePoolId") <*>
-                     (o .:? "imageType")
-                     <*> (o .:? "name")
-                     <*> (o .:? "clusterId")
-                     <*> (o .:? "nodeVersion")
-                     <*> (o .:? "projectId"))
-
-instance ToJSON UpdateNodePoolRequest where
-        toJSON UpdateNodePoolRequest'{..}
-          = object
-              (catMaybes
-                 [("zone" .=) <$> _unprZone,
-                  ("nodePoolId" .=) <$> _unprNodePoolId,
-                  ("imageType" .=) <$> _unprImageType,
-                  ("name" .=) <$> _unprName,
-                  ("clusterId" .=) <$> _unprClusterId,
-                  ("nodeVersion" .=) <$> _unprNodeVersion,
-                  ("projectId" .=) <$> _unprProjectId])
-
--- | UpdateMasterRequest updates the master of the cluster.
---
--- /See:/ 'updateMasterRequest' smart constructor.
-data UpdateMasterRequest = UpdateMasterRequest'
-    { _umrZone          :: !(Maybe Text)
-    , _umrName          :: !(Maybe Text)
-    , _umrClusterId     :: !(Maybe Text)
-    , _umrProjectId     :: !(Maybe Text)
-    , _umrMasterVersion :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'UpdateMasterRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'umrZone'
---
--- * 'umrName'
---
--- * 'umrClusterId'
---
--- * 'umrProjectId'
---
--- * 'umrMasterVersion'
-updateMasterRequest
-    :: UpdateMasterRequest
-updateMasterRequest =
-    UpdateMasterRequest'
-    { _umrZone = Nothing
-    , _umrName = Nothing
-    , _umrClusterId = Nothing
-    , _umrProjectId = Nothing
-    , _umrMasterVersion = Nothing
-    }
-
--- | Deprecated. The name of the Google Compute Engine
--- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
--- This field has been deprecated and replaced by the name field.
-umrZone :: Lens' UpdateMasterRequest (Maybe Text)
-umrZone = lens _umrZone (\ s a -> s{_umrZone = a})
-
--- | The name (project, location, cluster) of the cluster to update.
--- Specified in the format \'projects\/*\/locations\/*\/clusters\/*\'.
-umrName :: Lens' UpdateMasterRequest (Maybe Text)
-umrName = lens _umrName (\ s a -> s{_umrName = a})
-
--- | Deprecated. The name of the cluster to upgrade. This field has been
--- deprecated and replaced by the name field.
-umrClusterId :: Lens' UpdateMasterRequest (Maybe Text)
-umrClusterId
-  = lens _umrClusterId (\ s a -> s{_umrClusterId = a})
-
--- | Deprecated. The Google Developers Console [project ID or project
--- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
--- field has been deprecated and replaced by the name field.
-umrProjectId :: Lens' UpdateMasterRequest (Maybe Text)
-umrProjectId
-  = lens _umrProjectId (\ s a -> s{_umrProjectId = a})
-
--- | The Kubernetes version to change the master to. Users may specify either
--- explicit versions offered by Kubernetes Engine or version aliases, which
--- have the following behavior: - \"latest\": picks the highest valid
--- Kubernetes version - \"1.X\": picks the highest valid patch+gke.N patch
--- in the 1.X version - \"1.X.Y\": picks the highest valid gke.N patch in
--- the 1.X.Y version - \"1.X.Y-gke.N\": picks an explicit Kubernetes
--- version - \"-\": picks the default Kubernetes version
-umrMasterVersion :: Lens' UpdateMasterRequest (Maybe Text)
-umrMasterVersion
-  = lens _umrMasterVersion
-      (\ s a -> s{_umrMasterVersion = a})
-
-instance FromJSON UpdateMasterRequest where
-        parseJSON
-          = withObject "UpdateMasterRequest"
-              (\ o ->
-                 UpdateMasterRequest' <$>
-                   (o .:? "zone") <*> (o .:? "name") <*>
-                     (o .:? "clusterId")
-                     <*> (o .:? "projectId")
-                     <*> (o .:? "masterVersion"))
-
-instance ToJSON UpdateMasterRequest where
-        toJSON UpdateMasterRequest'{..}
-          = object
-              (catMaybes
-                 [("zone" .=) <$> _umrZone, ("name" .=) <$> _umrName,
-                  ("clusterId" .=) <$> _umrClusterId,
-                  ("projectId" .=) <$> _umrProjectId,
-                  ("masterVersion" .=) <$> _umrMasterVersion])
-
--- | StartIPRotationRequest creates a new IP for the cluster and then
--- performs a node upgrade on each node pool to point to the new IP.
---
--- /See:/ 'startIPRotationRequest' smart constructor.
-data StartIPRotationRequest = StartIPRotationRequest'
-    { _sirrZone              :: !(Maybe Text)
-    , _sirrRotateCredentials :: !(Maybe Bool)
-    , _sirrName              :: !(Maybe Text)
-    , _sirrClusterId         :: !(Maybe Text)
-    , _sirrProjectId         :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'StartIPRotationRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sirrZone'
---
--- * 'sirrRotateCredentials'
---
--- * 'sirrName'
---
--- * 'sirrClusterId'
---
--- * 'sirrProjectId'
-startIPRotationRequest
-    :: StartIPRotationRequest
-startIPRotationRequest =
-    StartIPRotationRequest'
-    { _sirrZone = Nothing
-    , _sirrRotateCredentials = Nothing
-    , _sirrName = Nothing
-    , _sirrClusterId = Nothing
-    , _sirrProjectId = Nothing
-    }
-
--- | Deprecated. The name of the Google Compute Engine
--- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
--- This field has been deprecated and replaced by the name field.
-sirrZone :: Lens' StartIPRotationRequest (Maybe Text)
-sirrZone = lens _sirrZone (\ s a -> s{_sirrZone = a})
-
--- | Whether to rotate credentials during IP rotation.
-sirrRotateCredentials :: Lens' StartIPRotationRequest (Maybe Bool)
-sirrRotateCredentials
-  = lens _sirrRotateCredentials
-      (\ s a -> s{_sirrRotateCredentials = a})
-
--- | The name (project, location, cluster id) of the cluster to start IP
--- rotation. Specified in the format
--- \'projects\/*\/locations\/*\/clusters\/*\'.
-sirrName :: Lens' StartIPRotationRequest (Maybe Text)
-sirrName = lens _sirrName (\ s a -> s{_sirrName = a})
-
--- | Deprecated. The name of the cluster. This field has been deprecated and
--- replaced by the name field.
-sirrClusterId :: Lens' StartIPRotationRequest (Maybe Text)
-sirrClusterId
-  = lens _sirrClusterId
-      (\ s a -> s{_sirrClusterId = a})
-
--- | Deprecated. The Google Developers Console [project ID or project
--- number](https:\/\/developers.google.com\/console\/help\/new\/#projectnumber).
--- This field has been deprecated and replaced by the name field.
-sirrProjectId :: Lens' StartIPRotationRequest (Maybe Text)
-sirrProjectId
-  = lens _sirrProjectId
-      (\ s a -> s{_sirrProjectId = a})
-
-instance FromJSON StartIPRotationRequest where
-        parseJSON
-          = withObject "StartIPRotationRequest"
-              (\ o ->
-                 StartIPRotationRequest' <$>
-                   (o .:? "zone") <*> (o .:? "rotateCredentials") <*>
-                     (o .:? "name")
-                     <*> (o .:? "clusterId")
-                     <*> (o .:? "projectId"))
-
-instance ToJSON StartIPRotationRequest where
-        toJSON StartIPRotationRequest'{..}
-          = object
-              (catMaybes
-                 [("zone" .=) <$> _sirrZone,
-                  ("rotateCredentials" .=) <$> _sirrRotateCredentials,
-                  ("name" .=) <$> _sirrName,
-                  ("clusterId" .=) <$> _sirrClusterId,
-                  ("projectId" .=) <$> _sirrProjectId])
-
--- | SetLegacyAbacRequest enables or disables the ABAC authorization
--- mechanism for a cluster.
---
--- /See:/ 'setLegacyAbacRequest' smart constructor.
-data SetLegacyAbacRequest = SetLegacyAbacRequest'
-    { _slarEnabled   :: !(Maybe Bool)
-    , _slarZone      :: !(Maybe Text)
-    , _slarName      :: !(Maybe Text)
-    , _slarClusterId :: !(Maybe Text)
-    , _slarProjectId :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SetLegacyAbacRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'slarEnabled'
---
--- * 'slarZone'
---
--- * 'slarName'
---
--- * 'slarClusterId'
---
--- * 'slarProjectId'
-setLegacyAbacRequest
-    :: SetLegacyAbacRequest
-setLegacyAbacRequest =
-    SetLegacyAbacRequest'
-    { _slarEnabled = Nothing
-    , _slarZone = Nothing
-    , _slarName = Nothing
-    , _slarClusterId = Nothing
-    , _slarProjectId = Nothing
-    }
-
--- | Whether ABAC authorization will be enabled in the cluster.
-slarEnabled :: Lens' SetLegacyAbacRequest (Maybe Bool)
-slarEnabled
-  = lens _slarEnabled (\ s a -> s{_slarEnabled = a})
-
--- | Deprecated. The name of the Google Compute Engine
--- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
--- This field has been deprecated and replaced by the name field.
-slarZone :: Lens' SetLegacyAbacRequest (Maybe Text)
-slarZone = lens _slarZone (\ s a -> s{_slarZone = a})
-
--- | The name (project, location, cluster id) of the cluster to set legacy
--- abac. Specified in the format
--- \'projects\/*\/locations\/*\/clusters\/*\'.
-slarName :: Lens' SetLegacyAbacRequest (Maybe Text)
-slarName = lens _slarName (\ s a -> s{_slarName = a})
-
--- | Deprecated. The name of the cluster to update. This field has been
--- deprecated and replaced by the name field.
-slarClusterId :: Lens' SetLegacyAbacRequest (Maybe Text)
-slarClusterId
-  = lens _slarClusterId
-      (\ s a -> s{_slarClusterId = a})
-
--- | Deprecated. The Google Developers Console [project ID or project
--- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
--- field has been deprecated and replaced by the name field.
-slarProjectId :: Lens' SetLegacyAbacRequest (Maybe Text)
-slarProjectId
-  = lens _slarProjectId
-      (\ s a -> s{_slarProjectId = a})
-
-instance FromJSON SetLegacyAbacRequest where
-        parseJSON
-          = withObject "SetLegacyAbacRequest"
-              (\ o ->
-                 SetLegacyAbacRequest' <$>
-                   (o .:? "enabled") <*> (o .:? "zone") <*>
-                     (o .:? "name")
-                     <*> (o .:? "clusterId")
-                     <*> (o .:? "projectId"))
-
-instance ToJSON SetLegacyAbacRequest where
-        toJSON SetLegacyAbacRequest'{..}
-          = object
-              (catMaybes
-                 [("enabled" .=) <$> _slarEnabled,
-                  ("zone" .=) <$> _slarZone, ("name" .=) <$> _slarName,
-                  ("clusterId" .=) <$> _slarClusterId,
-                  ("projectId" .=) <$> _slarProjectId])
-
--- | Configuration options for the horizontal pod autoscaling feature, which
--- increases or decreases the number of replica pods a replication
--- controller has based on the resource usage of the existing pods.
---
--- /See:/ 'horizontalPodAutoscaling' smart constructor.
-newtype HorizontalPodAutoscaling = HorizontalPodAutoscaling'
-    { _hpaDisabled :: Maybe Bool
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'HorizontalPodAutoscaling' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'hpaDisabled'
-horizontalPodAutoscaling
-    :: HorizontalPodAutoscaling
-horizontalPodAutoscaling =
-    HorizontalPodAutoscaling'
-    { _hpaDisabled = Nothing
-    }
-
--- | Whether the Horizontal Pod Autoscaling feature is enabled in the
--- cluster. When enabled, it ensures that a Heapster pod is running in the
--- cluster, which is also used by the Cloud Monitoring service.
-hpaDisabled :: Lens' HorizontalPodAutoscaling (Maybe Bool)
-hpaDisabled
-  = lens _hpaDisabled (\ s a -> s{_hpaDisabled = a})
-
-instance FromJSON HorizontalPodAutoscaling where
-        parseJSON
-          = withObject "HorizontalPodAutoscaling"
-              (\ o ->
-                 HorizontalPodAutoscaling' <$> (o .:? "disabled"))
-
-instance ToJSON HorizontalPodAutoscaling where
-        toJSON HorizontalPodAutoscaling'{..}
-          = object
-              (catMaybes [("disabled" .=) <$> _hpaDisabled])
-
--- | SetMasterAuthRequest updates the admin password of a cluster.
---
--- /See:/ 'setMasterAuthRequest' smart constructor.
-data SetMasterAuthRequest = SetMasterAuthRequest'
-    { _smarAction    :: !(Maybe SetMasterAuthRequestAction)
-    , _smarZone      :: !(Maybe Text)
-    , _smarName      :: !(Maybe Text)
-    , _smarClusterId :: !(Maybe Text)
-    , _smarProjectId :: !(Maybe Text)
-    , _smarUpdate    :: !(Maybe MasterAuth)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SetMasterAuthRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'smarAction'
---
--- * 'smarZone'
---
--- * 'smarName'
---
--- * 'smarClusterId'
---
--- * 'smarProjectId'
---
--- * 'smarUpdate'
-setMasterAuthRequest
-    :: SetMasterAuthRequest
-setMasterAuthRequest =
-    SetMasterAuthRequest'
-    { _smarAction = Nothing
-    , _smarZone = Nothing
-    , _smarName = Nothing
-    , _smarClusterId = Nothing
-    , _smarProjectId = Nothing
-    , _smarUpdate = Nothing
-    }
-
--- | The exact form of action to be taken on the master auth.
-smarAction :: Lens' SetMasterAuthRequest (Maybe SetMasterAuthRequestAction)
-smarAction
-  = lens _smarAction (\ s a -> s{_smarAction = a})
-
--- | Deprecated. The name of the Google Compute Engine
--- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
--- This field has been deprecated and replaced by the name field.
-smarZone :: Lens' SetMasterAuthRequest (Maybe Text)
-smarZone = lens _smarZone (\ s a -> s{_smarZone = a})
-
--- | The name (project, location, cluster) of the cluster to set auth.
--- Specified in the format \'projects\/*\/locations\/*\/clusters\/*\'.
-smarName :: Lens' SetMasterAuthRequest (Maybe Text)
-smarName = lens _smarName (\ s a -> s{_smarName = a})
-
--- | Deprecated. The name of the cluster to upgrade. This field has been
--- deprecated and replaced by the name field.
-smarClusterId :: Lens' SetMasterAuthRequest (Maybe Text)
-smarClusterId
-  = lens _smarClusterId
-      (\ s a -> s{_smarClusterId = a})
-
--- | Deprecated. The Google Developers Console [project ID or project
--- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
--- field has been deprecated and replaced by the name field.
-smarProjectId :: Lens' SetMasterAuthRequest (Maybe Text)
-smarProjectId
-  = lens _smarProjectId
-      (\ s a -> s{_smarProjectId = a})
-
--- | A description of the update.
-smarUpdate :: Lens' SetMasterAuthRequest (Maybe MasterAuth)
-smarUpdate
-  = lens _smarUpdate (\ s a -> s{_smarUpdate = a})
-
-instance FromJSON SetMasterAuthRequest where
-        parseJSON
-          = withObject "SetMasterAuthRequest"
-              (\ o ->
-                 SetMasterAuthRequest' <$>
-                   (o .:? "action") <*> (o .:? "zone") <*>
-                     (o .:? "name")
-                     <*> (o .:? "clusterId")
-                     <*> (o .:? "projectId")
-                     <*> (o .:? "update"))
-
-instance ToJSON SetMasterAuthRequest where
-        toJSON SetMasterAuthRequest'{..}
-          = object
-              (catMaybes
-                 [("action" .=) <$> _smarAction,
-                  ("zone" .=) <$> _smarZone, ("name" .=) <$> _smarName,
-                  ("clusterId" .=) <$> _smarClusterId,
-                  ("projectId" .=) <$> _smarProjectId,
-                  ("update" .=) <$> _smarUpdate])
-
--- | ListOperationsResponse is the result of ListOperationsRequest.
---
--- /See:/ 'listOperationsResponse' smart constructor.
-data ListOperationsResponse = ListOperationsResponse'
-    { _lorOperations   :: !(Maybe [Operation])
-    , _lorMissingZones :: !(Maybe [Text])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ListOperationsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lorOperations'
---
--- * 'lorMissingZones'
-listOperationsResponse
-    :: ListOperationsResponse
-listOperationsResponse =
-    ListOperationsResponse'
-    { _lorOperations = Nothing
-    , _lorMissingZones = Nothing
-    }
-
--- | A list of operations in the project in the specified zone.
-lorOperations :: Lens' ListOperationsResponse [Operation]
-lorOperations
-  = lens _lorOperations
-      (\ s a -> s{_lorOperations = a})
-      . _Default
-      . _Coerce
-
--- | If any zones are listed here, the list of operations returned may be
--- missing the operations from those zones.
-lorMissingZones :: Lens' ListOperationsResponse [Text]
-lorMissingZones
-  = lens _lorMissingZones
-      (\ s a -> s{_lorMissingZones = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON ListOperationsResponse where
-        parseJSON
-          = withObject "ListOperationsResponse"
-              (\ o ->
-                 ListOperationsResponse' <$>
-                   (o .:? "operations" .!= mempty) <*>
-                     (o .:? "missingZones" .!= mempty))
-
-instance ToJSON ListOperationsResponse where
-        toJSON ListOperationsResponse'{..}
-          = object
-              (catMaybes
-                 [("operations" .=) <$> _lorOperations,
-                  ("missingZones" .=) <$> _lorMissingZones])
-
--- | CreateClusterRequest creates a cluster.
---
--- /See:/ 'createClusterRequest' smart constructor.
-data CreateClusterRequest = CreateClusterRequest'
-    { _ccrParent    :: !(Maybe Text)
-    , _ccrCluster   :: !(Maybe Cluster)
-    , _ccrZone      :: !(Maybe Text)
-    , _ccrProjectId :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'CreateClusterRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ccrParent'
---
--- * 'ccrCluster'
---
--- * 'ccrZone'
---
--- * 'ccrProjectId'
-createClusterRequest
-    :: CreateClusterRequest
-createClusterRequest =
-    CreateClusterRequest'
-    { _ccrParent = Nothing
-    , _ccrCluster = Nothing
-    , _ccrZone = Nothing
-    , _ccrProjectId = Nothing
-    }
-
--- | The parent (project and location) where the cluster will be created.
--- Specified in the format \'projects\/*\/locations\/*\'.
-ccrParent :: Lens' CreateClusterRequest (Maybe Text)
-ccrParent
-  = lens _ccrParent (\ s a -> s{_ccrParent = a})
-
--- | A [cluster
--- resource](\/container-engine\/reference\/rest\/v1\/projects.zones.clusters)
-ccrCluster :: Lens' CreateClusterRequest (Maybe Cluster)
-ccrCluster
-  = lens _ccrCluster (\ s a -> s{_ccrCluster = a})
-
--- | Deprecated. The name of the Google Compute Engine
--- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
--- This field has been deprecated and replaced by the parent field.
-ccrZone :: Lens' CreateClusterRequest (Maybe Text)
-ccrZone = lens _ccrZone (\ s a -> s{_ccrZone = a})
-
--- | Deprecated. The Google Developers Console [project ID or project
--- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
--- field has been deprecated and replaced by the parent field.
-ccrProjectId :: Lens' CreateClusterRequest (Maybe Text)
-ccrProjectId
-  = lens _ccrProjectId (\ s a -> s{_ccrProjectId = a})
-
-instance FromJSON CreateClusterRequest where
-        parseJSON
-          = withObject "CreateClusterRequest"
-              (\ o ->
-                 CreateClusterRequest' <$>
-                   (o .:? "parent") <*> (o .:? "cluster") <*>
-                     (o .:? "zone")
-                     <*> (o .:? "projectId"))
-
-instance ToJSON CreateClusterRequest where
-        toJSON CreateClusterRequest'{..}
-          = object
-              (catMaybes
-                 [("parent" .=) <$> _ccrParent,
-                  ("cluster" .=) <$> _ccrCluster,
-                  ("zone" .=) <$> _ccrZone,
-                  ("projectId" .=) <$> _ccrProjectId])
-
--- | A Google Kubernetes Engine cluster.
---
--- /See:/ 'cluster' smart constructor.
-data Cluster = Cluster'
-    { _cStatus                         :: !(Maybe ClusterStatus)
-    , _cNodePools                      :: !(Maybe [NodePool])
-    , _cEnableKubernetesAlpha          :: !(Maybe Bool)
-    , _cResourceLabels                 :: !(Maybe ClusterResourceLabels)
-    , _cNodeConfig                     :: !(Maybe NodeConfig)
-    , _cNodeIPv4CIdRSize               :: !(Maybe (Textual Int32))
-    , _cClusterIPv4CIdR                :: !(Maybe Text)
-    , _cLocation                       :: !(Maybe Text)
-    , _cInitialNodeCount               :: !(Maybe (Textual Int32))
-    , _cCurrentNodeVersion             :: !(Maybe Text)
-    , _cNetwork                        :: !(Maybe Text)
-    , _cInitialClusterVersion          :: !(Maybe Text)
-    , _cZone                           :: !(Maybe Text)
-    , _cAddonsConfig                   :: !(Maybe AddonsConfig)
-    , _cServicesIPv4CIdR               :: !(Maybe Text)
-    , _cIPAllocationPolicy             :: !(Maybe IPAllocationPolicy)
-    , _cMasterAuthorizedNetworksConfig :: !(Maybe MasterAuthorizedNetworksConfig)
-    , _cLegacyAbac                     :: !(Maybe LegacyAbac)
-    , _cNetworkConfig                  :: !(Maybe NetworkConfig)
-    , _cMasterAuth                     :: !(Maybe MasterAuth)
-    , _cSelfLink                       :: !(Maybe Text)
-    , _cName                           :: !(Maybe Text)
-    , _cCurrentMasterVersion           :: !(Maybe Text)
-    , _cStatusMessage                  :: !(Maybe Text)
-    , _cSubnetwork                     :: !(Maybe Text)
-    , _cCurrentNodeCount               :: !(Maybe (Textual Int32))
-    , _cPrivateClusterConfig           :: !(Maybe PrivateClusterConfig)
-    , _cMaintenancePolicy              :: !(Maybe MaintenancePolicy)
-    , _cConditions                     :: !(Maybe [StatusCondition])
-    , _cEndpoint                       :: !(Maybe Text)
-    , _cExpireTime                     :: !(Maybe Text)
-    , _cNetworkPolicy                  :: !(Maybe NetworkPolicy)
-    , _cLocations                      :: !(Maybe [Text])
-    , _cLoggingService                 :: !(Maybe Text)
-    , _cLabelFingerprint               :: !(Maybe Text)
-    , _cDescription                    :: !(Maybe Text)
-    , _cInstanceGroupURLs              :: !(Maybe [Text])
-    , _cMonitoringService              :: !(Maybe Text)
-    , _cCreateTime                     :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Cluster' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cStatus'
---
--- * 'cNodePools'
---
--- * 'cEnableKubernetesAlpha'
---
--- * 'cResourceLabels'
---
--- * 'cNodeConfig'
---
--- * 'cNodeIPv4CIdRSize'
---
--- * 'cClusterIPv4CIdR'
---
--- * 'cLocation'
---
--- * 'cInitialNodeCount'
---
--- * 'cCurrentNodeVersion'
---
--- * 'cNetwork'
---
--- * 'cInitialClusterVersion'
---
--- * 'cZone'
---
--- * 'cAddonsConfig'
---
--- * 'cServicesIPv4CIdR'
---
--- * 'cIPAllocationPolicy'
---
--- * 'cMasterAuthorizedNetworksConfig'
---
--- * 'cLegacyAbac'
---
--- * 'cNetworkConfig'
---
--- * 'cMasterAuth'
---
--- * 'cSelfLink'
---
--- * 'cName'
---
--- * 'cCurrentMasterVersion'
---
--- * 'cStatusMessage'
---
--- * 'cSubnetwork'
---
--- * 'cCurrentNodeCount'
---
--- * 'cPrivateClusterConfig'
---
--- * 'cMaintenancePolicy'
---
--- * 'cConditions'
---
--- * 'cEndpoint'
---
--- * 'cExpireTime'
---
--- * 'cNetworkPolicy'
---
--- * 'cLocations'
---
--- * 'cLoggingService'
---
--- * 'cLabelFingerprint'
---
--- * 'cDescription'
---
--- * 'cInstanceGroupURLs'
---
--- * 'cMonitoringService'
---
--- * 'cCreateTime'
-cluster
-    :: Cluster
-cluster =
-    Cluster'
-    { _cStatus = Nothing
-    , _cNodePools = Nothing
-    , _cEnableKubernetesAlpha = Nothing
-    , _cResourceLabels = Nothing
-    , _cNodeConfig = Nothing
-    , _cNodeIPv4CIdRSize = Nothing
-    , _cClusterIPv4CIdR = Nothing
-    , _cLocation = Nothing
-    , _cInitialNodeCount = Nothing
-    , _cCurrentNodeVersion = Nothing
-    , _cNetwork = Nothing
-    , _cInitialClusterVersion = Nothing
-    , _cZone = Nothing
-    , _cAddonsConfig = Nothing
-    , _cServicesIPv4CIdR = Nothing
-    , _cIPAllocationPolicy = Nothing
-    , _cMasterAuthorizedNetworksConfig = Nothing
-    , _cLegacyAbac = Nothing
-    , _cNetworkConfig = Nothing
-    , _cMasterAuth = Nothing
-    , _cSelfLink = Nothing
-    , _cName = Nothing
-    , _cCurrentMasterVersion = Nothing
-    , _cStatusMessage = Nothing
-    , _cSubnetwork = Nothing
-    , _cCurrentNodeCount = Nothing
-    , _cPrivateClusterConfig = Nothing
-    , _cMaintenancePolicy = Nothing
-    , _cConditions = Nothing
-    , _cEndpoint = Nothing
-    , _cExpireTime = Nothing
-    , _cNetworkPolicy = Nothing
-    , _cLocations = Nothing
-    , _cLoggingService = Nothing
-    , _cLabelFingerprint = Nothing
-    , _cDescription = Nothing
-    , _cInstanceGroupURLs = Nothing
-    , _cMonitoringService = Nothing
-    , _cCreateTime = Nothing
-    }
-
--- | [Output only] The current status of this cluster.
-cStatus :: Lens' Cluster (Maybe ClusterStatus)
-cStatus = lens _cStatus (\ s a -> s{_cStatus = a})
-
--- | 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})
-
--- | The resource labels for the cluster to use to annotate any related
--- Google Compute Engine resources.
-cResourceLabels :: Lens' Cluster (Maybe ClusterResourceLabels)
-cResourceLabels
-  = lens _cResourceLabels
-      (\ s a -> s{_cResourceLabels = 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
--- (along with the \"initial_node_count\") will be used to create a
--- \"NodePool\" object with an auto-generated name. Do not use this and a
--- node_pool at the same time. For responses, this field will be populated
--- with the node configuration of the first node pool. If unspecified, the
--- defaults are used.
-cNodeConfig :: Lens' Cluster (Maybe NodeConfig)
-cNodeConfig
-  = lens _cNodeConfig (\ s a -> s{_cNodeConfig = a})
-
--- | [Output only] The size of the address space on each node for hosting
--- containers. This is provisioned from within the \`container_ipv4_cidr\`
--- range.
-cNodeIPv4CIdRSize :: Lens' Cluster (Maybe Int32)
-cNodeIPv4CIdRSize
-  = lens _cNodeIPv4CIdRSize
-      (\ s a -> s{_cNodeIPv4CIdRSize = a})
-      . mapping _Coerce
-
--- | The IP address range of the container pods in this cluster, in
--- [CIDR](http:\/\/en.wikipedia.org\/wiki\/Classless_Inter-Domain_Routing)
--- notation (e.g. \`10.96.0.0\/14\`). Leave blank to have one automatically
--- chosen or specify a \`\/14\` block in \`10.0.0.0\/8\`.
-cClusterIPv4CIdR :: Lens' Cluster (Maybe Text)
-cClusterIPv4CIdR
-  = lens _cClusterIPv4CIdR
-      (\ s a -> s{_cClusterIPv4CIdR = a})
-
--- | [Output only] The name of the Google Compute Engine
--- [zone](\/compute\/docs\/regions-zones\/regions-zones#available) or
--- [region](\/compute\/docs\/regions-zones\/regions-zones#available) in
--- which the cluster resides.
-cLocation :: Lens' Cluster (Maybe Text)
-cLocation
-  = lens _cLocation (\ s a -> s{_cLocation = a})
-
--- | The number of nodes to create in this cluster. You must ensure that your
--- Compute Engine </compute/docs/resource-quotas resource quota> is
--- sufficient for this number of instances. You must also have available
--- firewall and routes quota. For requests, this field should only be used
--- in lieu of a \"node_pool\" object, since this configuration (along with
--- the \"node_config\") will be used to create a \"NodePool\" object with
--- an auto-generated name. Do not use this and a node_pool at the same
--- time.
-cInitialNodeCount :: Lens' Cluster (Maybe Int32)
-cInitialNodeCount
-  = lens _cInitialNodeCount
-      (\ s a -> s{_cInitialNodeCount = a})
-      . mapping _Coerce
-
--- | [Output only] Deprecated, use
--- [NodePool.version](\/kubernetes-engine\/docs\/reference\/rest\/v1\/projects.zones.clusters.nodePool)
--- instead. The current version of the node software components. If they
--- are currently at multiple versions because they\'re in the process of
--- being upgraded, this reflects the minimum version of all nodes.
-cCurrentNodeVersion :: Lens' Cluster (Maybe Text)
-cCurrentNodeVersion
-  = lens _cCurrentNodeVersion
-      (\ s a -> s{_cCurrentNodeVersion = a})
-
--- | The name of the Google Compute Engine
--- [network](\/compute\/docs\/networks-and-firewalls#networks) to which the
--- cluster is connected. If left unspecified, the \`default\` network will
--- be used.
-cNetwork :: Lens' Cluster (Maybe Text)
-cNetwork = lens _cNetwork (\ s a -> s{_cNetwork = a})
-
--- | The initial Kubernetes version for this cluster. Valid versions are
--- those found in validMasterVersions returned by getServerConfig. The
--- version can be upgraded over time; such upgrades are reflected in
--- currentMasterVersion and currentNodeVersion. Users may specify either
--- explicit versions offered by Kubernetes Engine or version aliases, which
--- have the following behavior: - \"latest\": picks the highest valid
--- Kubernetes version - \"1.X\": picks the highest valid patch+gke.N patch
--- in the 1.X version - \"1.X.Y\": picks the highest valid gke.N patch in
--- the 1.X.Y version - \"1.X.Y-gke.N\": picks an explicit Kubernetes
--- version - \"\",\"-\": picks the default Kubernetes version
-cInitialClusterVersion :: Lens' Cluster (Maybe Text)
-cInitialClusterVersion
-  = lens _cInitialClusterVersion
-      (\ s a -> s{_cInitialClusterVersion = a})
-
--- | [Output only] The name of the Google Compute Engine
--- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
--- This field is deprecated, use location instead.
-cZone :: Lens' Cluster (Maybe Text)
-cZone = lens _cZone (\ s a -> s{_cZone = a})
-
--- | Configurations for the various addons available to run in the cluster.
-cAddonsConfig :: Lens' Cluster (Maybe AddonsConfig)
-cAddonsConfig
-  = lens _cAddonsConfig
-      (\ s a -> s{_cAddonsConfig = a})
-
--- | [Output only] The IP address range of the Kubernetes services in this
--- cluster, in
--- [CIDR](http:\/\/en.wikipedia.org\/wiki\/Classless_Inter-Domain_Routing)
--- notation (e.g. \`1.2.3.4\/29\`). Service addresses are typically put in
--- the last \`\/16\` from the container CIDR.
-cServicesIPv4CIdR :: Lens' Cluster (Maybe Text)
-cServicesIPv4CIdR
-  = lens _cServicesIPv4CIdR
-      (\ s a -> s{_cServicesIPv4CIdR = a})
-
--- | Configuration for cluster IP allocation.
-cIPAllocationPolicy :: Lens' Cluster (Maybe IPAllocationPolicy)
-cIPAllocationPolicy
-  = lens _cIPAllocationPolicy
-      (\ s a -> s{_cIPAllocationPolicy = a})
-
--- | The configuration options for master authorized networks feature.
-cMasterAuthorizedNetworksConfig :: Lens' Cluster (Maybe MasterAuthorizedNetworksConfig)
-cMasterAuthorizedNetworksConfig
-  = lens _cMasterAuthorizedNetworksConfig
-      (\ s a -> s{_cMasterAuthorizedNetworksConfig = a})
-
--- | Configuration for the legacy ABAC authorization mode.
-cLegacyAbac :: Lens' Cluster (Maybe LegacyAbac)
-cLegacyAbac
-  = lens _cLegacyAbac (\ s a -> s{_cLegacyAbac = a})
-
--- | Configuration for cluster networking.
-cNetworkConfig :: Lens' Cluster (Maybe NetworkConfig)
-cNetworkConfig
-  = lens _cNetworkConfig
-      (\ s a -> s{_cNetworkConfig = a})
-
--- | The authentication information for accessing the master endpoint. If
--- unspecified, the defaults are used: For clusters before v1.12, if
--- master_auth is unspecified, \`username\` will be set to \"admin\", a
--- random password will be generated, and a client certificate will be
--- issued.
-cMasterAuth :: Lens' Cluster (Maybe MasterAuth)
-cMasterAuth
-  = lens _cMasterAuth (\ s a -> s{_cMasterAuth = a})
-
--- | [Output only] Server-defined URL for the resource.
-cSelfLink :: Lens' Cluster (Maybe Text)
-cSelfLink
-  = lens _cSelfLink (\ s a -> s{_cSelfLink = a})
-
--- | The name of this cluster. The name must be unique within this project
--- and zone, and can be up to 40 characters with the following
--- restrictions: * Lowercase letters, numbers, and hyphens only. * Must
--- start with a letter. * Must end with a number or a letter.
-cName :: Lens' Cluster (Maybe Text)
-cName = lens _cName (\ s a -> s{_cName = a})
-
--- | [Output only] The current software version of the master endpoint.
-cCurrentMasterVersion :: Lens' Cluster (Maybe Text)
-cCurrentMasterVersion
-  = lens _cCurrentMasterVersion
-      (\ s a -> s{_cCurrentMasterVersion = a})
-
--- | [Output only] Additional information about the current status of this
--- cluster, if available.
-cStatusMessage :: Lens' Cluster (Maybe Text)
-cStatusMessage
-  = lens _cStatusMessage
-      (\ s a -> s{_cStatusMessage = a})
-
--- | The name of the Google Compute Engine
--- [subnetwork](\/compute\/docs\/subnetworks) to which the cluster is
--- connected.
-cSubnetwork :: Lens' Cluster (Maybe Text)
-cSubnetwork
-  = lens _cSubnetwork (\ s a -> s{_cSubnetwork = a})
-
--- | [Output only] The number of nodes currently in the cluster. Deprecated.
--- Call Kubernetes API directly to retrieve node information.
-cCurrentNodeCount :: Lens' Cluster (Maybe Int32)
-cCurrentNodeCount
-  = lens _cCurrentNodeCount
-      (\ s a -> s{_cCurrentNodeCount = a})
-      . mapping _Coerce
-
--- | Configuration for private cluster.
-cPrivateClusterConfig :: Lens' Cluster (Maybe PrivateClusterConfig)
-cPrivateClusterConfig
-  = lens _cPrivateClusterConfig
-      (\ s a -> s{_cPrivateClusterConfig = a})
-
--- | Configure the maintenance policy for this cluster.
-cMaintenancePolicy :: Lens' Cluster (Maybe MaintenancePolicy)
-cMaintenancePolicy
-  = lens _cMaintenancePolicy
-      (\ s a -> s{_cMaintenancePolicy = a})
-
--- | Which conditions caused the current cluster state.
-cConditions :: Lens' Cluster [StatusCondition]
-cConditions
-  = lens _cConditions (\ s a -> s{_cConditions = a}) .
-      _Default
-      . _Coerce
-
--- | [Output only] The IP address of this cluster\'s master endpoint. The
--- endpoint can be accessed from the internet at
--- \`https:\/\/username:password\'endpoint\/\`. See the \`masterAuth\`
--- property of this resource for username and password information.
-cEndpoint :: Lens' Cluster (Maybe Text)
-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})
-
--- | Configuration options for the NetworkPolicy feature.
-cNetworkPolicy :: Lens' Cluster (Maybe NetworkPolicy)
-cNetworkPolicy
-  = lens _cNetworkPolicy
-      (\ s a -> s{_cNetworkPolicy = a})
-
--- | The list of Google Compute Engine
--- [zones](\/compute\/docs\/zones#available) in which the cluster\'s nodes
--- should be located.
-cLocations :: Lens' Cluster [Text]
-cLocations
-  = lens _cLocations (\ s a -> s{_cLocations = a}) .
-      _Default
-      . _Coerce
-
--- | The logging service the cluster should use to write logs. Currently
--- available options: * \`logging.googleapis.com\` - the Google Cloud
--- Logging service. * \`none\` - no logs will be exported from the cluster.
--- * if left as an empty string,\`logging.googleapis.com\` will be used.
-cLoggingService :: Lens' Cluster (Maybe Text)
-cLoggingService
-  = lens _cLoggingService
-      (\ s a -> s{_cLoggingService = a})
-
--- | The fingerprint of the set of labels for this cluster.
-cLabelFingerprint :: Lens' Cluster (Maybe Text)
-cLabelFingerprint
-  = lens _cLabelFingerprint
-      (\ s a -> s{_cLabelFingerprint = a})
-
--- | An optional description of this cluster.
-cDescription :: Lens' Cluster (Maybe Text)
-cDescription
-  = lens _cDescription (\ s a -> s{_cDescription = a})
-
--- | Deprecated. Use node_pools.instance_group_urls.
-cInstanceGroupURLs :: Lens' Cluster [Text]
-cInstanceGroupURLs
-  = lens _cInstanceGroupURLs
-      (\ s a -> s{_cInstanceGroupURLs = 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 from the cluster. * if left as an empty string,
--- \`monitoring.googleapis.com\` will be used.
-cMonitoringService :: Lens' Cluster (Maybe Text)
-cMonitoringService
-  = lens _cMonitoringService
-      (\ s a -> s{_cMonitoringService = a})
-
--- | [Output only] The time the cluster was created, in
--- [RFC3339](https:\/\/www.ietf.org\/rfc\/rfc3339.txt) text format.
-cCreateTime :: Lens' Cluster (Maybe Text)
-cCreateTime
-  = lens _cCreateTime (\ s a -> s{_cCreateTime = a})
-
-instance FromJSON Cluster where
-        parseJSON
-          = withObject "Cluster"
-              (\ o ->
-                 Cluster' <$>
-                   (o .:? "status") <*> (o .:? "nodePools" .!= mempty)
-                     <*> (o .:? "enableKubernetesAlpha")
-                     <*> (o .:? "resourceLabels")
-                     <*> (o .:? "nodeConfig")
-                     <*> (o .:? "nodeIpv4CidrSize")
-                     <*> (o .:? "clusterIpv4Cidr")
-                     <*> (o .:? "location")
-                     <*> (o .:? "initialNodeCount")
-                     <*> (o .:? "currentNodeVersion")
-                     <*> (o .:? "network")
-                     <*> (o .:? "initialClusterVersion")
-                     <*> (o .:? "zone")
-                     <*> (o .:? "addonsConfig")
-                     <*> (o .:? "servicesIpv4Cidr")
-                     <*> (o .:? "ipAllocationPolicy")
-                     <*> (o .:? "masterAuthorizedNetworksConfig")
-                     <*> (o .:? "legacyAbac")
-                     <*> (o .:? "networkConfig")
-                     <*> (o .:? "masterAuth")
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "name")
-                     <*> (o .:? "currentMasterVersion")
-                     <*> (o .:? "statusMessage")
-                     <*> (o .:? "subnetwork")
-                     <*> (o .:? "currentNodeCount")
-                     <*> (o .:? "privateClusterConfig")
-                     <*> (o .:? "maintenancePolicy")
-                     <*> (o .:? "conditions" .!= mempty)
-                     <*> (o .:? "endpoint")
-                     <*> (o .:? "expireTime")
-                     <*> (o .:? "networkPolicy")
-                     <*> (o .:? "locations" .!= mempty)
-                     <*> (o .:? "loggingService")
-                     <*> (o .:? "labelFingerprint")
-                     <*> (o .:? "description")
-                     <*> (o .:? "instanceGroupUrls" .!= mempty)
-                     <*> (o .:? "monitoringService")
-                     <*> (o .:? "createTime"))
-
-instance ToJSON Cluster where
-        toJSON Cluster'{..}
-          = object
-              (catMaybes
-                 [("status" .=) <$> _cStatus,
-                  ("nodePools" .=) <$> _cNodePools,
-                  ("enableKubernetesAlpha" .=) <$>
-                    _cEnableKubernetesAlpha,
-                  ("resourceLabels" .=) <$> _cResourceLabels,
-                  ("nodeConfig" .=) <$> _cNodeConfig,
-                  ("nodeIpv4CidrSize" .=) <$> _cNodeIPv4CIdRSize,
-                  ("clusterIpv4Cidr" .=) <$> _cClusterIPv4CIdR,
-                  ("location" .=) <$> _cLocation,
-                  ("initialNodeCount" .=) <$> _cInitialNodeCount,
-                  ("currentNodeVersion" .=) <$> _cCurrentNodeVersion,
-                  ("network" .=) <$> _cNetwork,
-                  ("initialClusterVersion" .=) <$>
-                    _cInitialClusterVersion,
-                  ("zone" .=) <$> _cZone,
-                  ("addonsConfig" .=) <$> _cAddonsConfig,
-                  ("servicesIpv4Cidr" .=) <$> _cServicesIPv4CIdR,
-                  ("ipAllocationPolicy" .=) <$> _cIPAllocationPolicy,
-                  ("masterAuthorizedNetworksConfig" .=) <$>
-                    _cMasterAuthorizedNetworksConfig,
-                  ("legacyAbac" .=) <$> _cLegacyAbac,
-                  ("networkConfig" .=) <$> _cNetworkConfig,
-                  ("masterAuth" .=) <$> _cMasterAuth,
-                  ("selfLink" .=) <$> _cSelfLink,
-                  ("name" .=) <$> _cName,
-                  ("currentMasterVersion" .=) <$>
-                    _cCurrentMasterVersion,
-                  ("statusMessage" .=) <$> _cStatusMessage,
-                  ("subnetwork" .=) <$> _cSubnetwork,
-                  ("currentNodeCount" .=) <$> _cCurrentNodeCount,
-                  ("privateClusterConfig" .=) <$>
-                    _cPrivateClusterConfig,
-                  ("maintenancePolicy" .=) <$> _cMaintenancePolicy,
-                  ("conditions" .=) <$> _cConditions,
-                  ("endpoint" .=) <$> _cEndpoint,
-                  ("expireTime" .=) <$> _cExpireTime,
-                  ("networkPolicy" .=) <$> _cNetworkPolicy,
-                  ("locations" .=) <$> _cLocations,
-                  ("loggingService" .=) <$> _cLoggingService,
-                  ("labelFingerprint" .=) <$> _cLabelFingerprint,
-                  ("description" .=) <$> _cDescription,
-                  ("instanceGroupUrls" .=) <$> _cInstanceGroupURLs,
-                  ("monitoringService" .=) <$> _cMonitoringService,
-                  ("createTime" .=) <$> _cCreateTime])
-
--- | CancelOperationRequest cancels a single operation.
---
--- /See:/ 'cancelOperationRequest' smart constructor.
-data CancelOperationRequest = CancelOperationRequest'
-    { _corZone        :: !(Maybe Text)
-    , _corName        :: !(Maybe Text)
-    , _corProjectId   :: !(Maybe Text)
-    , _corOperationId :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'CancelOperationRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'corZone'
---
--- * 'corName'
---
--- * 'corProjectId'
---
--- * 'corOperationId'
-cancelOperationRequest
-    :: CancelOperationRequest
-cancelOperationRequest =
-    CancelOperationRequest'
-    { _corZone = Nothing
-    , _corName = Nothing
-    , _corProjectId = Nothing
-    , _corOperationId = Nothing
-    }
-
--- | Deprecated. The name of the Google Compute Engine
--- [zone](\/compute\/docs\/zones#available) in which the operation resides.
--- This field has been deprecated and replaced by the name field.
-corZone :: Lens' CancelOperationRequest (Maybe Text)
-corZone = lens _corZone (\ s a -> s{_corZone = a})
-
--- | The name (project, location, operation id) of the operation to cancel.
--- Specified in the format \'projects\/*\/locations\/*\/operations\/*\'.
-corName :: Lens' CancelOperationRequest (Maybe Text)
-corName = lens _corName (\ s a -> s{_corName = a})
-
--- | Deprecated. The Google Developers Console [project ID or project
--- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
--- field has been deprecated and replaced by the name field.
-corProjectId :: Lens' CancelOperationRequest (Maybe Text)
-corProjectId
-  = lens _corProjectId (\ s a -> s{_corProjectId = a})
-
--- | Deprecated. The server-assigned \`name\` of the operation. This field
--- has been deprecated and replaced by the name field.
-corOperationId :: Lens' CancelOperationRequest (Maybe Text)
-corOperationId
-  = lens _corOperationId
-      (\ s a -> s{_corOperationId = a})
-
-instance FromJSON CancelOperationRequest where
-        parseJSON
-          = withObject "CancelOperationRequest"
-              (\ o ->
-                 CancelOperationRequest' <$>
-                   (o .:? "zone") <*> (o .:? "name") <*>
-                     (o .:? "projectId")
-                     <*> (o .:? "operationId"))
-
-instance ToJSON CancelOperationRequest where
-        toJSON CancelOperationRequest'{..}
-          = object
-              (catMaybes
-                 [("zone" .=) <$> _corZone, ("name" .=) <$> _corName,
-                  ("projectId" .=) <$> _corProjectId,
-                  ("operationId" .=) <$> _corOperationId])
-
--- | UpdateClusterRequest updates the settings of a cluster.
---
--- /See:/ 'updateClusterRequest' smart constructor.
-data UpdateClusterRequest = UpdateClusterRequest'
-    { _ucrZone      :: !(Maybe Text)
-    , _ucrName      :: !(Maybe Text)
-    , _ucrClusterId :: !(Maybe Text)
-    , _ucrProjectId :: !(Maybe Text)
-    , _ucrUpdate    :: !(Maybe ClusterUpdate)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'UpdateClusterRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ucrZone'
---
--- * 'ucrName'
---
--- * 'ucrClusterId'
---
--- * 'ucrProjectId'
---
--- * 'ucrUpdate'
-updateClusterRequest
-    :: UpdateClusterRequest
-updateClusterRequest =
-    UpdateClusterRequest'
-    { _ucrZone = Nothing
-    , _ucrName = Nothing
-    , _ucrClusterId = Nothing
-    , _ucrProjectId = Nothing
-    , _ucrUpdate = Nothing
-    }
-
--- | Deprecated. The name of the Google Compute Engine
--- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
--- This field has been deprecated and replaced by the name field.
-ucrZone :: Lens' UpdateClusterRequest (Maybe Text)
-ucrZone = lens _ucrZone (\ s a -> s{_ucrZone = a})
-
--- | The name (project, location, cluster) of the cluster to update.
--- Specified in the format \'projects\/*\/locations\/*\/clusters\/*\'.
-ucrName :: Lens' UpdateClusterRequest (Maybe Text)
-ucrName = lens _ucrName (\ s a -> s{_ucrName = a})
-
--- | Deprecated. The name of the cluster to upgrade. This field has been
--- deprecated and replaced by the name field.
-ucrClusterId :: Lens' UpdateClusterRequest (Maybe Text)
-ucrClusterId
-  = lens _ucrClusterId (\ s a -> s{_ucrClusterId = a})
-
--- | Deprecated. The Google Developers Console [project ID or project
--- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
--- field has been deprecated and replaced by the name field.
-ucrProjectId :: Lens' UpdateClusterRequest (Maybe Text)
-ucrProjectId
-  = lens _ucrProjectId (\ s a -> s{_ucrProjectId = a})
-
--- | A description of the update.
-ucrUpdate :: Lens' UpdateClusterRequest (Maybe ClusterUpdate)
-ucrUpdate
-  = lens _ucrUpdate (\ s a -> s{_ucrUpdate = a})
-
-instance FromJSON UpdateClusterRequest where
-        parseJSON
-          = withObject "UpdateClusterRequest"
-              (\ o ->
-                 UpdateClusterRequest' <$>
-                   (o .:? "zone") <*> (o .:? "name") <*>
-                     (o .:? "clusterId")
-                     <*> (o .:? "projectId")
-                     <*> (o .:? "update"))
-
-instance ToJSON UpdateClusterRequest where
-        toJSON UpdateClusterRequest'{..}
-          = object
-              (catMaybes
-                 [("zone" .=) <$> _ucrZone, ("name" .=) <$> _ucrName,
-                  ("clusterId" .=) <$> _ucrClusterId,
-                  ("projectId" .=) <$> _ucrProjectId,
-                  ("update" .=) <$> _ucrUpdate])
-
--- | SetAddonsConfigRequest sets the addons associated with the cluster.
---
--- /See:/ 'setAddonsConfigRequest' smart constructor.
-data SetAddonsConfigRequest = SetAddonsConfigRequest'
-    { _sacrZone         :: !(Maybe Text)
-    , _sacrAddonsConfig :: !(Maybe AddonsConfig)
-    , _sacrName         :: !(Maybe Text)
-    , _sacrClusterId    :: !(Maybe Text)
-    , _sacrProjectId    :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SetAddonsConfigRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sacrZone'
---
--- * 'sacrAddonsConfig'
---
--- * 'sacrName'
---
--- * 'sacrClusterId'
---
--- * 'sacrProjectId'
-setAddonsConfigRequest
-    :: SetAddonsConfigRequest
-setAddonsConfigRequest =
-    SetAddonsConfigRequest'
-    { _sacrZone = Nothing
-    , _sacrAddonsConfig = Nothing
-    , _sacrName = Nothing
-    , _sacrClusterId = Nothing
-    , _sacrProjectId = Nothing
-    }
-
--- | Deprecated. The name of the Google Compute Engine
--- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
--- This field has been deprecated and replaced by the name field.
-sacrZone :: Lens' SetAddonsConfigRequest (Maybe Text)
-sacrZone = lens _sacrZone (\ s a -> s{_sacrZone = a})
-
--- | The desired configurations for the various addons available to run in
--- the cluster.
-sacrAddonsConfig :: Lens' SetAddonsConfigRequest (Maybe AddonsConfig)
-sacrAddonsConfig
-  = lens _sacrAddonsConfig
-      (\ s a -> s{_sacrAddonsConfig = a})
-
--- | The name (project, location, cluster) of the cluster to set addons.
--- Specified in the format \'projects\/*\/locations\/*\/clusters\/*\'.
-sacrName :: Lens' SetAddonsConfigRequest (Maybe Text)
-sacrName = lens _sacrName (\ s a -> s{_sacrName = a})
-
--- | Deprecated. The name of the cluster to upgrade. This field has been
--- deprecated and replaced by the name field.
-sacrClusterId :: Lens' SetAddonsConfigRequest (Maybe Text)
-sacrClusterId
-  = lens _sacrClusterId
-      (\ s a -> s{_sacrClusterId = a})
-
--- | Deprecated. The Google Developers Console [project ID or project
--- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
--- field has been deprecated and replaced by the name field.
-sacrProjectId :: Lens' SetAddonsConfigRequest (Maybe Text)
-sacrProjectId
-  = lens _sacrProjectId
-      (\ s a -> s{_sacrProjectId = a})
-
-instance FromJSON SetAddonsConfigRequest where
-        parseJSON
-          = withObject "SetAddonsConfigRequest"
-              (\ o ->
-                 SetAddonsConfigRequest' <$>
-                   (o .:? "zone") <*> (o .:? "addonsConfig") <*>
-                     (o .:? "name")
-                     <*> (o .:? "clusterId")
-                     <*> (o .:? "projectId"))
-
-instance ToJSON SetAddonsConfigRequest where
-        toJSON SetAddonsConfigRequest'{..}
-          = object
-              (catMaybes
-                 [("zone" .=) <$> _sacrZone,
-                  ("addonsConfig" .=) <$> _sacrAddonsConfig,
-                  ("name" .=) <$> _sacrName,
-                  ("clusterId" .=) <$> _sacrClusterId,
-                  ("projectId" .=) <$> _sacrProjectId])
-
--- | Parameters that describe the nodes in a cluster.
---
--- /See:/ 'nodeConfig' smart constructor.
-data NodeConfig = NodeConfig'
-    { _ncLocalSsdCount  :: !(Maybe (Textual Int32))
-    , _ncDiskSizeGb     :: !(Maybe (Textual Int32))
-    , _ncTaints         :: !(Maybe [NodeTaint])
-    , _ncOAuthScopes    :: !(Maybe [Text])
-    , _ncServiceAccount :: !(Maybe Text)
-    , _ncAccelerators   :: !(Maybe [AcceleratorConfig])
-    , _ncImageType      :: !(Maybe Text)
-    , _ncMachineType    :: !(Maybe Text)
-    , _ncMetadata       :: !(Maybe NodeConfigMetadata)
-    , _ncDiskType       :: !(Maybe Text)
-    , _ncLabels         :: !(Maybe NodeConfigLabels)
-    , _ncMinCPUPlatform :: !(Maybe Text)
-    , _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'
---
--- * 'ncTaints'
---
--- * 'ncOAuthScopes'
---
--- * 'ncServiceAccount'
---
--- * 'ncAccelerators'
---
--- * 'ncImageType'
---
--- * 'ncMachineType'
---
--- * 'ncMetadata'
---
--- * 'ncDiskType'
---
--- * 'ncLabels'
---
--- * 'ncMinCPUPlatform'
---
--- * 'ncTags'
---
--- * 'ncPreemptible'
-nodeConfig
-    :: NodeConfig
-nodeConfig =
-    NodeConfig'
-    { _ncLocalSsdCount = Nothing
-    , _ncDiskSizeGb = Nothing
-    , _ncTaints = Nothing
-    , _ncOAuthScopes = Nothing
-    , _ncServiceAccount = Nothing
-    , _ncAccelerators = Nothing
-    , _ncImageType = Nothing
-    , _ncMachineType = Nothing
-    , _ncMetadata = Nothing
-    , _ncDiskType = Nothing
-    , _ncLabels = Nothing
-    , _ncMinCPUPlatform = 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.
-ncDiskSizeGb :: Lens' NodeConfig (Maybe Int32)
-ncDiskSizeGb
-  = lens _ncDiskSizeGb (\ s a -> s{_ncDiskSizeGb = a})
-      . mapping _Coerce
-
--- | List of kubernetes taints to be applied to each node. For more
--- information, including usage and the valid values, see:
--- https:\/\/kubernetes.io\/docs\/concepts\/configuration\/taint-and-toleration\/
-ncTaints :: Lens' NodeConfig [NodeTaint]
-ncTaints
-  = lens _ncTaints (\ s a -> s{_ncTaints = a}) .
-      _Default
-      . _Coerce
-
--- | The set of Google API scopes to be made available on all of the node VMs
--- under the \"default\" service account. The following scopes are
--- recommended, but not required, and by default are not included: *
--- \`https:\/\/www.googleapis.com\/auth\/compute\` is required for mounting
--- persistent storage on your nodes. *
--- \`https:\/\/www.googleapis.com\/auth\/devstorage.read_only\` is required
--- for communicating with **gcr.io** (the [Google Container
--- Registry](\/container-registry\/)). If unspecified, no scopes are added,
--- unless Cloud Logging or Cloud Monitoring are enabled, in which case
--- their required scopes will be added.
-ncOAuthScopes :: Lens' NodeConfig [Text]
-ncOAuthScopes
-  = lens _ncOAuthScopes
-      (\ s a -> s{_ncOAuthScopes = a})
-      . _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})
-
--- | A list of hardware accelerators to be attached to each node. See
--- https:\/\/cloud.google.com\/compute\/docs\/gpus for more information
--- about support for GPUs.
-ncAccelerators :: Lens' NodeConfig [AcceleratorConfig]
-ncAccelerators
-  = lens _ncAccelerators
-      (\ s a -> s{_ncAccelerators = a})
-      . _Default
-      . _Coerce
-
--- | 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\`.
-ncMachineType :: Lens' NodeConfig (Maybe Text)
-ncMachineType
-  = lens _ncMachineType
-      (\ s a -> s{_ncMachineType = a})
-
--- | The metadata key\/value pairs assigned to instances in the cluster. Keys
--- must conform to the regexp [a-zA-Z0-9-_]+ and be less than 128 bytes in
--- length. These are reflected as part of a URL in the metadata server.
--- Additionally, to avoid ambiguity, keys must not conflict with any other
--- metadata keys for the project or be one of the reserved keys:
--- \"cluster-location\" \"cluster-name\" \"cluster-uid\" \"configure-sh\"
--- \"enable-os-login\" \"gci-update-strategy\" \"gci-ensure-gke-docker\"
--- \"instance-template\" \"kube-env\" \"startup-script\" \"user-data\"
--- Values are free-form strings, and only have meaning as interpreted by
--- the image running in the instance. The only restriction placed on them
--- is that each value\'s size must be less than or equal to 32 KB. The
--- total size of all keys and values must be less than 512 KB.
-ncMetadata :: Lens' NodeConfig (Maybe NodeConfigMetadata)
-ncMetadata
-  = lens _ncMetadata (\ s a -> s{_ncMetadata = a})
-
--- | Type of the disk attached to each node (e.g. \'pd-standard\' or
--- \'pd-ssd\') If unspecified, the default disk type is \'pd-standard\'
-ncDiskType :: Lens' NodeConfig (Maybe Text)
-ncDiskType
-  = lens _ncDiskType (\ s a -> s{_ncDiskType = 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:
--- https:\/\/kubernetes.io\/docs\/concepts\/overview\/working-with-objects\/labels\/
-ncLabels :: Lens' NodeConfig (Maybe NodeConfigLabels)
-ncLabels = lens _ncLabels (\ s a -> s{_ncLabels = a})
-
--- | Minimum CPU platform to be used by this instance. The instance may be
--- scheduled on the specified or newer CPU platform. Applicable values are
--- the friendly names of CPU platforms, such as
--- 'minCpuPlatform: \"Intel Haswell\"' or
--- 'minCpuPlatform: \"Intel Sandy Bridge\"'. For more information, read
--- [how to specify min CPU
--- platform](https:\/\/cloud.google.com\/compute\/docs\/instances\/specify-min-cpu-platform)
-ncMinCPUPlatform :: Lens' NodeConfig (Maybe Text)
-ncMinCPUPlatform
-  = lens _ncMinCPUPlatform
-      (\ s a -> s{_ncMinCPUPlatform = 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 information 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 .:? "localSsdCount") <*> (o .:? "diskSizeGb") <*>
-                     (o .:? "taints" .!= mempty)
-                     <*> (o .:? "oauthScopes" .!= mempty)
-                     <*> (o .:? "serviceAccount")
-                     <*> (o .:? "accelerators" .!= mempty)
-                     <*> (o .:? "imageType")
-                     <*> (o .:? "machineType")
-                     <*> (o .:? "metadata")
-                     <*> (o .:? "diskType")
-                     <*> (o .:? "labels")
-                     <*> (o .:? "minCpuPlatform")
-                     <*> (o .:? "tags" .!= mempty)
-                     <*> (o .:? "preemptible"))
-
-instance ToJSON NodeConfig where
-        toJSON NodeConfig'{..}
-          = object
-              (catMaybes
-                 [("localSsdCount" .=) <$> _ncLocalSsdCount,
-                  ("diskSizeGb" .=) <$> _ncDiskSizeGb,
-                  ("taints" .=) <$> _ncTaints,
-                  ("oauthScopes" .=) <$> _ncOAuthScopes,
-                  ("serviceAccount" .=) <$> _ncServiceAccount,
-                  ("accelerators" .=) <$> _ncAccelerators,
-                  ("imageType" .=) <$> _ncImageType,
-                  ("machineType" .=) <$> _ncMachineType,
-                  ("metadata" .=) <$> _ncMetadata,
-                  ("diskType" .=) <$> _ncDiskType,
-                  ("labels" .=) <$> _ncLabels,
-                  ("minCpuPlatform" .=) <$> _ncMinCPUPlatform,
-                  ("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
--- cluster.
---
--- /See:/ 'hTTPLoadBalancing' smart constructor.
-newtype HTTPLoadBalancing = HTTPLoadBalancing'
-    { _httplbDisabled :: Maybe Bool
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'HTTPLoadBalancing' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'httplbDisabled'
-hTTPLoadBalancing
-    :: HTTPLoadBalancing
-hTTPLoadBalancing =
-    HTTPLoadBalancing'
-    { _httplbDisabled = Nothing
-    }
-
--- | Whether the HTTP Load Balancing controller is enabled in the cluster.
--- When enabled, it runs a small pod in the cluster that manages the load
--- balancers.
-httplbDisabled :: Lens' HTTPLoadBalancing (Maybe Bool)
-httplbDisabled
-  = lens _httplbDisabled
-      (\ s a -> s{_httplbDisabled = a})
-
-instance FromJSON HTTPLoadBalancing where
-        parseJSON
-          = withObject "HTTPLoadBalancing"
-              (\ o -> HTTPLoadBalancing' <$> (o .:? "disabled"))
-
-instance ToJSON HTTPLoadBalancing where
-        toJSON HTTPLoadBalancing'{..}
-          = object
-              (catMaybes [("disabled" .=) <$> _httplbDisabled])
-
--- | This operation resource represents operations that may have happened or
--- are happening on the cluster. All fields are output only.
---
--- /See:/ 'operation' smart constructor.
-data Operation = Operation'
-    { _oNodepoolConditions :: !(Maybe [StatusCondition])
-    , _oStatus             :: !(Maybe OperationStatus)
-    , _oLocation           :: !(Maybe Text)
-    , _oStartTime          :: !(Maybe Text)
-    , _oZone               :: !(Maybe Text)
-    , _oSelfLink           :: !(Maybe Text)
-    , _oName               :: !(Maybe Text)
-    , _oStatusMessage      :: !(Maybe Text)
-    , _oEndTime            :: !(Maybe Text)
-    , _oClusterConditions  :: !(Maybe [StatusCondition])
-    , _oOperationType      :: !(Maybe OperationOperationType)
-    , _oTargetLink         :: !(Maybe Text)
-    , _oDetail             :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Operation' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'oNodepoolConditions'
---
--- * 'oStatus'
---
--- * 'oLocation'
---
--- * 'oStartTime'
---
--- * 'oZone'
---
--- * 'oSelfLink'
---
--- * 'oName'
---
--- * 'oStatusMessage'
---
--- * 'oEndTime'
---
--- * 'oClusterConditions'
---
--- * 'oOperationType'
---
--- * 'oTargetLink'
---
--- * 'oDetail'
-operation
-    :: Operation
-operation =
-    Operation'
-    { _oNodepoolConditions = Nothing
-    , _oStatus = Nothing
-    , _oLocation = Nothing
-    , _oStartTime = Nothing
-    , _oZone = Nothing
-    , _oSelfLink = Nothing
-    , _oName = Nothing
-    , _oStatusMessage = Nothing
-    , _oEndTime = Nothing
-    , _oClusterConditions = Nothing
-    , _oOperationType = Nothing
-    , _oTargetLink = Nothing
-    , _oDetail = Nothing
-    }
-
--- | Which conditions caused the current node pool state.
-oNodepoolConditions :: Lens' Operation [StatusCondition]
-oNodepoolConditions
-  = lens _oNodepoolConditions
-      (\ s a -> s{_oNodepoolConditions = a})
-      . _Default
-      . _Coerce
-
--- | The current status of the operation.
-oStatus :: Lens' Operation (Maybe OperationStatus)
-oStatus = lens _oStatus (\ s a -> s{_oStatus = a})
-
--- | [Output only] The name of the Google Compute Engine
--- [zone](\/compute\/docs\/regions-zones\/regions-zones#available) or
--- [region](\/compute\/docs\/regions-zones\/regions-zones#available) in
--- which the cluster resides.
-oLocation :: Lens' Operation (Maybe Text)
-oLocation
-  = lens _oLocation (\ s a -> s{_oLocation = a})
-
--- | [Output only] The time the operation started, in
--- [RFC3339](https:\/\/www.ietf.org\/rfc\/rfc3339.txt) text format.
-oStartTime :: Lens' Operation (Maybe Text)
-oStartTime
-  = lens _oStartTime (\ s a -> s{_oStartTime = a})
-
--- | The name of the Google Compute Engine
--- [zone](\/compute\/docs\/zones#available) in which the operation is
--- taking place. This field is deprecated, use location instead.
-oZone :: Lens' Operation (Maybe Text)
-oZone = lens _oZone (\ s a -> s{_oZone = a})
-
--- | Server-defined URL for the resource.
-oSelfLink :: Lens' Operation (Maybe Text)
-oSelfLink
-  = lens _oSelfLink (\ s a -> s{_oSelfLink = a})
-
--- | The server-assigned ID for the operation.
-oName :: Lens' Operation (Maybe Text)
-oName = lens _oName (\ s a -> s{_oName = a})
-
--- | If an error has occurred, a textual description of the error.
-oStatusMessage :: Lens' Operation (Maybe Text)
-oStatusMessage
-  = lens _oStatusMessage
-      (\ s a -> s{_oStatusMessage = a})
-
--- | [Output only] The time the operation completed, in
--- [RFC3339](https:\/\/www.ietf.org\/rfc\/rfc3339.txt) text format.
-oEndTime :: Lens' Operation (Maybe Text)
-oEndTime = lens _oEndTime (\ s a -> s{_oEndTime = a})
-
--- | Which conditions caused the current cluster state.
-oClusterConditions :: Lens' Operation [StatusCondition]
-oClusterConditions
-  = lens _oClusterConditions
-      (\ s a -> s{_oClusterConditions = a})
-      . _Default
-      . _Coerce
-
--- | The operation type.
-oOperationType :: Lens' Operation (Maybe OperationOperationType)
-oOperationType
-  = lens _oOperationType
-      (\ s a -> s{_oOperationType = a})
-
--- | Server-defined URL for the target of the operation.
-oTargetLink :: Lens' Operation (Maybe Text)
-oTargetLink
-  = lens _oTargetLink (\ s a -> s{_oTargetLink = a})
-
--- | Detailed operation progress, if available.
-oDetail :: Lens' Operation (Maybe Text)
-oDetail = lens _oDetail (\ s a -> s{_oDetail = a})
-
-instance FromJSON Operation where
-        parseJSON
-          = withObject "Operation"
-              (\ o ->
-                 Operation' <$>
-                   (o .:? "nodepoolConditions" .!= mempty) <*>
-                     (o .:? "status")
-                     <*> (o .:? "location")
-                     <*> (o .:? "startTime")
-                     <*> (o .:? "zone")
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "name")
-                     <*> (o .:? "statusMessage")
-                     <*> (o .:? "endTime")
-                     <*> (o .:? "clusterConditions" .!= mempty)
-                     <*> (o .:? "operationType")
-                     <*> (o .:? "targetLink")
-                     <*> (o .:? "detail"))
-
-instance ToJSON Operation where
-        toJSON Operation'{..}
-          = object
-              (catMaybes
-                 [("nodepoolConditions" .=) <$> _oNodepoolConditions,
-                  ("status" .=) <$> _oStatus,
-                  ("location" .=) <$> _oLocation,
-                  ("startTime" .=) <$> _oStartTime,
-                  ("zone" .=) <$> _oZone,
-                  ("selfLink" .=) <$> _oSelfLink,
-                  ("name" .=) <$> _oName,
-                  ("statusMessage" .=) <$> _oStatusMessage,
-                  ("endTime" .=) <$> _oEndTime,
-                  ("clusterConditions" .=) <$> _oClusterConditions,
-                  ("operationType" .=) <$> _oOperationType,
-                  ("targetLink" .=) <$> _oTargetLink,
-                  ("detail" .=) <$> _oDetail])
-
--- | The resource labels for the cluster to use to annotate any related
--- Google Compute Engine resources.
---
--- /See:/ 'clusterResourceLabels' smart constructor.
-newtype ClusterResourceLabels = ClusterResourceLabels'
-    { _crlAddtional :: HashMap Text Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ClusterResourceLabels' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'crlAddtional'
-clusterResourceLabels
-    :: HashMap Text Text -- ^ 'crlAddtional'
-    -> ClusterResourceLabels
-clusterResourceLabels pCrlAddtional_ =
-    ClusterResourceLabels'
-    { _crlAddtional = _Coerce # pCrlAddtional_
-    }
-
-crlAddtional :: Lens' ClusterResourceLabels (HashMap Text Text)
-crlAddtional
-  = lens _crlAddtional (\ s a -> s{_crlAddtional = a})
-      . _Coerce
-
-instance FromJSON ClusterResourceLabels where
-        parseJSON
-          = withObject "ClusterResourceLabels"
-              (\ o ->
-                 ClusterResourceLabels' <$> (parseJSONObject o))
-
-instance ToJSON ClusterResourceLabels where
-        toJSON = toJSON . _crlAddtional
-
--- | 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
-
--- | SetNodePoolAutoscalingRequest sets the autoscaler settings of a node
--- pool.
---
--- /See:/ 'setNodePoolAutoscalingRequest' smart constructor.
-data SetNodePoolAutoscalingRequest = SetNodePoolAutoscalingRequest'
-    { _snparAutoscaling :: !(Maybe NodePoolAutoscaling)
-    , _snparZone        :: !(Maybe Text)
-    , _snparNodePoolId  :: !(Maybe Text)
-    , _snparName        :: !(Maybe Text)
-    , _snparClusterId   :: !(Maybe Text)
-    , _snparProjectId   :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SetNodePoolAutoscalingRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'snparAutoscaling'
---
--- * 'snparZone'
---
--- * 'snparNodePoolId'
---
--- * 'snparName'
---
--- * 'snparClusterId'
---
--- * 'snparProjectId'
-setNodePoolAutoscalingRequest
-    :: SetNodePoolAutoscalingRequest
-setNodePoolAutoscalingRequest =
-    SetNodePoolAutoscalingRequest'
-    { _snparAutoscaling = Nothing
-    , _snparZone = Nothing
-    , _snparNodePoolId = Nothing
-    , _snparName = Nothing
-    , _snparClusterId = Nothing
-    , _snparProjectId = Nothing
-    }
-
--- | Autoscaling configuration for the node pool.
-snparAutoscaling :: Lens' SetNodePoolAutoscalingRequest (Maybe NodePoolAutoscaling)
-snparAutoscaling
-  = lens _snparAutoscaling
-      (\ s a -> s{_snparAutoscaling = a})
-
--- | Deprecated. The name of the Google Compute Engine
--- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
--- This field has been deprecated and replaced by the name field.
-snparZone :: Lens' SetNodePoolAutoscalingRequest (Maybe Text)
-snparZone
-  = lens _snparZone (\ s a -> s{_snparZone = a})
-
--- | Deprecated. The name of the node pool to upgrade. This field has been
--- deprecated and replaced by the name field.
-snparNodePoolId :: Lens' SetNodePoolAutoscalingRequest (Maybe Text)
-snparNodePoolId
-  = lens _snparNodePoolId
-      (\ s a -> s{_snparNodePoolId = a})
-
--- | The name (project, location, cluster, node pool) of the node pool to set
--- autoscaler settings. Specified in the format
--- \'projects\/*\/locations\/*\/clusters\/*\/nodePools\/*\'.
-snparName :: Lens' SetNodePoolAutoscalingRequest (Maybe Text)
-snparName
-  = lens _snparName (\ s a -> s{_snparName = a})
-
--- | Deprecated. The name of the cluster to upgrade. This field has been
--- deprecated and replaced by the name field.
-snparClusterId :: Lens' SetNodePoolAutoscalingRequest (Maybe Text)
-snparClusterId
-  = lens _snparClusterId
-      (\ s a -> s{_snparClusterId = a})
-
--- | Deprecated. The Google Developers Console [project ID or project
--- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
--- field has been deprecated and replaced by the name field.
-snparProjectId :: Lens' SetNodePoolAutoscalingRequest (Maybe Text)
-snparProjectId
-  = lens _snparProjectId
-      (\ s a -> s{_snparProjectId = a})
-
-instance FromJSON SetNodePoolAutoscalingRequest where
-        parseJSON
-          = withObject "SetNodePoolAutoscalingRequest"
-              (\ o ->
-                 SetNodePoolAutoscalingRequest' <$>
-                   (o .:? "autoscaling") <*> (o .:? "zone") <*>
-                     (o .:? "nodePoolId")
-                     <*> (o .:? "name")
-                     <*> (o .:? "clusterId")
-                     <*> (o .:? "projectId"))
-
-instance ToJSON SetNodePoolAutoscalingRequest where
-        toJSON SetNodePoolAutoscalingRequest'{..}
-          = object
-              (catMaybes
-                 [("autoscaling" .=) <$> _snparAutoscaling,
-                  ("zone" .=) <$> _snparZone,
-                  ("nodePoolId" .=) <$> _snparNodePoolId,
-                  ("name" .=) <$> _snparName,
-                  ("clusterId" .=) <$> _snparClusterId,
-                  ("projectId" .=) <$> _snparProjectId])
-
--- | CompleteIPRotationRequest moves the cluster master back into single-IP
--- mode.
---
--- /See:/ 'completeIPRotationRequest' smart constructor.
-data CompleteIPRotationRequest = CompleteIPRotationRequest'
-    { _cirrZone      :: !(Maybe Text)
-    , _cirrName      :: !(Maybe Text)
-    , _cirrClusterId :: !(Maybe Text)
-    , _cirrProjectId :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'CompleteIPRotationRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cirrZone'
---
--- * 'cirrName'
---
--- * 'cirrClusterId'
---
--- * 'cirrProjectId'
-completeIPRotationRequest
-    :: CompleteIPRotationRequest
-completeIPRotationRequest =
-    CompleteIPRotationRequest'
-    { _cirrZone = Nothing
-    , _cirrName = Nothing
-    , _cirrClusterId = Nothing
-    , _cirrProjectId = Nothing
-    }
-
--- | Deprecated. The name of the Google Compute Engine
--- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
--- This field has been deprecated and replaced by the name field.
-cirrZone :: Lens' CompleteIPRotationRequest (Maybe Text)
-cirrZone = lens _cirrZone (\ s a -> s{_cirrZone = a})
-
--- | The name (project, location, cluster id) of the cluster to complete IP
--- rotation. Specified in the format
--- \'projects\/*\/locations\/*\/clusters\/*\'.
-cirrName :: Lens' CompleteIPRotationRequest (Maybe Text)
-cirrName = lens _cirrName (\ s a -> s{_cirrName = a})
-
--- | Deprecated. The name of the cluster. This field has been deprecated and
--- replaced by the name field.
-cirrClusterId :: Lens' CompleteIPRotationRequest (Maybe Text)
-cirrClusterId
-  = lens _cirrClusterId
-      (\ s a -> s{_cirrClusterId = a})
-
--- | Deprecated. The Google Developers Console [project ID or project
--- number](https:\/\/developers.google.com\/console\/help\/new\/#projectnumber).
--- This field has been deprecated and replaced by the name field.
-cirrProjectId :: Lens' CompleteIPRotationRequest (Maybe Text)
-cirrProjectId
-  = lens _cirrProjectId
-      (\ s a -> s{_cirrProjectId = a})
-
-instance FromJSON CompleteIPRotationRequest where
-        parseJSON
-          = withObject "CompleteIPRotationRequest"
-              (\ o ->
-                 CompleteIPRotationRequest' <$>
-                   (o .:? "zone") <*> (o .:? "name") <*>
-                     (o .:? "clusterId")
-                     <*> (o .:? "projectId"))
-
-instance ToJSON CompleteIPRotationRequest where
-        toJSON CompleteIPRotationRequest'{..}
-          = object
-              (catMaybes
-                 [("zone" .=) <$> _cirrZone,
-                  ("name" .=) <$> _cirrName,
-                  ("clusterId" .=) <$> _cirrClusterId,
-                  ("projectId" .=) <$> _cirrProjectId])
-
--- | NodeManagement defines the set of node management services turned on for
--- the node pool.
---
--- /See:/ 'nodeManagement' smart constructor.
-data NodeManagement = NodeManagement'
-    { _nmAutoUpgrade    :: !(Maybe Bool)
-    , _nmAutoRepair     :: !(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'
---
--- * 'nmAutoRepair'
---
--- * 'nmUpgradeOptions'
-nodeManagement
-    :: NodeManagement
-nodeManagement =
-    NodeManagement'
-    { _nmAutoUpgrade = Nothing
-    , _nmAutoRepair = Nothing
-    , _nmUpgradeOptions = Nothing
-    }
-
--- | A flag that specifies whether node auto-upgrade is enabled for the node
--- pool. If enabled, node auto-upgrade helps keep the nodes in your node
--- pool up to date with the latest release version of Kubernetes.
-nmAutoUpgrade :: Lens' NodeManagement (Maybe Bool)
-nmAutoUpgrade
-  = lens _nmAutoUpgrade
-      (\ s a -> s{_nmAutoUpgrade = a})
-
--- | A flag that specifies whether the node auto-repair is enabled for the
--- node pool. If enabled, the nodes in this node pool will be monitored
--- and, if they fail health checks too many times, an automatic repair
--- action will be triggered.
-nmAutoRepair :: Lens' NodeManagement (Maybe Bool)
-nmAutoRepair
-  = lens _nmAutoRepair (\ s a -> s{_nmAutoRepair = 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 .:? "autoRepair") <*>
-                     (o .:? "upgradeOptions"))
-
-instance ToJSON NodeManagement where
-        toJSON NodeManagement'{..}
-          = object
-              (catMaybes
-                 [("autoUpgrade" .=) <$> _nmAutoUpgrade,
-                  ("autoRepair" .=) <$> _nmAutoRepair,
-                  ("upgradeOptions" .=) <$> _nmUpgradeOptions])
-
--- | Kubernetes taint is comprised of three fields: key, value, and effect.
--- Effect can only be one of three types: NoSchedule, PreferNoSchedule or
--- NoExecute. For more information, including usage and the valid values,
--- see:
--- https:\/\/kubernetes.io\/docs\/concepts\/configuration\/taint-and-toleration\/
---
--- /See:/ 'nodeTaint' smart constructor.
-data NodeTaint = NodeTaint'
-    { _ntEffect :: !(Maybe NodeTaintEffect)
-    , _ntValue  :: !(Maybe Text)
-    , _ntKey    :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'NodeTaint' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ntEffect'
---
--- * 'ntValue'
---
--- * 'ntKey'
-nodeTaint
-    :: NodeTaint
-nodeTaint =
-    NodeTaint'
-    { _ntEffect = Nothing
-    , _ntValue = Nothing
-    , _ntKey = Nothing
-    }
-
--- | Effect for taint.
-ntEffect :: Lens' NodeTaint (Maybe NodeTaintEffect)
-ntEffect = lens _ntEffect (\ s a -> s{_ntEffect = a})
-
--- | Value for taint.
-ntValue :: Lens' NodeTaint (Maybe Text)
-ntValue = lens _ntValue (\ s a -> s{_ntValue = a})
-
--- | Key for taint.
-ntKey :: Lens' NodeTaint (Maybe Text)
-ntKey = lens _ntKey (\ s a -> s{_ntKey = a})
-
-instance FromJSON NodeTaint where
-        parseJSON
-          = withObject "NodeTaint"
-              (\ o ->
-                 NodeTaint' <$>
-                   (o .:? "effect") <*> (o .:? "value") <*>
-                     (o .:? "key"))
-
-instance ToJSON NodeTaint where
-        toJSON NodeTaint'{..}
-          = object
-              (catMaybes
-                 [("effect" .=) <$> _ntEffect,
-                  ("value" .=) <$> _ntValue, ("key" .=) <$> _ntKey])
-
--- | 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])
-
--- | SetMaintenancePolicyRequest sets the maintenance policy for a cluster.
---
--- /See:/ 'setMaintenancePolicyRequest' smart constructor.
-data SetMaintenancePolicyRequest = SetMaintenancePolicyRequest'
-    { _smprZone              :: !(Maybe Text)
-    , _smprName              :: !(Maybe Text)
-    , _smprClusterId         :: !(Maybe Text)
-    , _smprMaintenancePolicy :: !(Maybe MaintenancePolicy)
-    , _smprProjectId         :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SetMaintenancePolicyRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'smprZone'
---
--- * 'smprName'
---
--- * 'smprClusterId'
---
--- * 'smprMaintenancePolicy'
---
--- * 'smprProjectId'
-setMaintenancePolicyRequest
-    :: SetMaintenancePolicyRequest
-setMaintenancePolicyRequest =
-    SetMaintenancePolicyRequest'
-    { _smprZone = Nothing
-    , _smprName = Nothing
-    , _smprClusterId = Nothing
-    , _smprMaintenancePolicy = Nothing
-    , _smprProjectId = Nothing
-    }
-
--- | The name of the Google Compute Engine
--- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
-smprZone :: Lens' SetMaintenancePolicyRequest (Maybe Text)
-smprZone = lens _smprZone (\ s a -> s{_smprZone = a})
-
--- | The name (project, location, cluster id) of the cluster to set
--- maintenance policy. Specified in the format
--- \'projects\/*\/locations\/*\/clusters\/*\'.
-smprName :: Lens' SetMaintenancePolicyRequest (Maybe Text)
-smprName = lens _smprName (\ s a -> s{_smprName = a})
-
--- | The name of the cluster to update.
-smprClusterId :: Lens' SetMaintenancePolicyRequest (Maybe Text)
-smprClusterId
-  = lens _smprClusterId
-      (\ s a -> s{_smprClusterId = a})
-
--- | The maintenance policy to be set for the cluster. An empty field clears
--- the existing maintenance policy.
-smprMaintenancePolicy :: Lens' SetMaintenancePolicyRequest (Maybe MaintenancePolicy)
-smprMaintenancePolicy
-  = lens _smprMaintenancePolicy
-      (\ s a -> s{_smprMaintenancePolicy = a})
-
--- | The Google Developers Console [project ID or project
--- number](https:\/\/support.google.com\/cloud\/answer\/6158840).
-smprProjectId :: Lens' SetMaintenancePolicyRequest (Maybe Text)
-smprProjectId
-  = lens _smprProjectId
-      (\ s a -> s{_smprProjectId = a})
-
-instance FromJSON SetMaintenancePolicyRequest where
-        parseJSON
-          = withObject "SetMaintenancePolicyRequest"
-              (\ o ->
-                 SetMaintenancePolicyRequest' <$>
-                   (o .:? "zone") <*> (o .:? "name") <*>
-                     (o .:? "clusterId")
-                     <*> (o .:? "maintenancePolicy")
-                     <*> (o .:? "projectId"))
-
-instance ToJSON SetMaintenancePolicyRequest where
-        toJSON SetMaintenancePolicyRequest'{..}
-          = object
-              (catMaybes
-                 [("zone" .=) <$> _smprZone,
-                  ("name" .=) <$> _smprName,
-                  ("clusterId" .=) <$> _smprClusterId,
-                  ("maintenancePolicy" .=) <$> _smprMaintenancePolicy,
-                  ("projectId" .=) <$> _smprProjectId])
-
--- | Configuration for the Kubernetes Dashboard.
---
--- /See:/ 'kubernetesDashboard' smart constructor.
-newtype KubernetesDashboard = KubernetesDashboard'
-    { _kdDisabled :: Maybe Bool
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'KubernetesDashboard' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'kdDisabled'
-kubernetesDashboard
-    :: KubernetesDashboard
-kubernetesDashboard =
-    KubernetesDashboard'
-    { _kdDisabled = Nothing
-    }
-
--- | Whether the Kubernetes Dashboard is enabled for this cluster.
-kdDisabled :: Lens' KubernetesDashboard (Maybe Bool)
-kdDisabled
-  = lens _kdDisabled (\ s a -> s{_kdDisabled = a})
-
-instance FromJSON KubernetesDashboard where
-        parseJSON
-          = withObject "KubernetesDashboard"
-              (\ o -> KubernetesDashboard' <$> (o .:? "disabled"))
-
-instance ToJSON KubernetesDashboard where
-        toJSON KubernetesDashboard'{..}
-          = object
-              (catMaybes [("disabled" .=) <$> _kdDisabled])
-
--- | Configuration for client certificates on the cluster.
---
--- /See:/ 'clientCertificateConfig' smart constructor.
-newtype ClientCertificateConfig = ClientCertificateConfig'
-    { _cccIssueClientCertificate :: Maybe Bool
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ClientCertificateConfig' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cccIssueClientCertificate'
-clientCertificateConfig
-    :: ClientCertificateConfig
-clientCertificateConfig =
-    ClientCertificateConfig'
-    { _cccIssueClientCertificate = Nothing
-    }
-
--- | Issue a client certificate.
-cccIssueClientCertificate :: Lens' ClientCertificateConfig (Maybe Bool)
-cccIssueClientCertificate
-  = lens _cccIssueClientCertificate
-      (\ s a -> s{_cccIssueClientCertificate = a})
-
-instance FromJSON ClientCertificateConfig where
-        parseJSON
-          = withObject "ClientCertificateConfig"
-              (\ o ->
-                 ClientCertificateConfig' <$>
-                   (o .:? "issueClientCertificate"))
-
-instance ToJSON ClientCertificateConfig where
-        toJSON ClientCertificateConfig'{..}
-          = object
-              (catMaybes
-                 [("issueClientCertificate" .=) <$>
-                    _cccIssueClientCertificate])
-
--- | SetLabelsRequest sets the Google Cloud Platform labels on a Google
--- Container Engine cluster, which will in turn set them for Google Compute
--- Engine resources used by that cluster
---
--- /See:/ 'setLabelsRequest' smart constructor.
-data SetLabelsRequest = SetLabelsRequest'
-    { _slrResourceLabels   :: !(Maybe SetLabelsRequestResourceLabels)
-    , _slrZone             :: !(Maybe Text)
-    , _slrName             :: !(Maybe Text)
-    , _slrClusterId        :: !(Maybe Text)
-    , _slrProjectId        :: !(Maybe Text)
-    , _slrLabelFingerprint :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SetLabelsRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'slrResourceLabels'
---
--- * 'slrZone'
---
--- * 'slrName'
---
--- * 'slrClusterId'
---
--- * 'slrProjectId'
---
--- * 'slrLabelFingerprint'
-setLabelsRequest
-    :: SetLabelsRequest
-setLabelsRequest =
-    SetLabelsRequest'
-    { _slrResourceLabels = Nothing
-    , _slrZone = Nothing
-    , _slrName = Nothing
-    , _slrClusterId = Nothing
-    , _slrProjectId = Nothing
-    , _slrLabelFingerprint = Nothing
-    }
-
--- | The labels to set for that cluster.
-slrResourceLabels :: Lens' SetLabelsRequest (Maybe SetLabelsRequestResourceLabels)
-slrResourceLabels
-  = lens _slrResourceLabels
-      (\ s a -> s{_slrResourceLabels = a})
-
--- | Deprecated. The name of the Google Compute Engine
--- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
--- This field has been deprecated and replaced by the name field.
-slrZone :: Lens' SetLabelsRequest (Maybe Text)
-slrZone = lens _slrZone (\ s a -> s{_slrZone = a})
-
--- | The name (project, location, cluster id) of the cluster to set labels.
--- Specified in the format \'projects\/*\/locations\/*\/clusters\/*\'.
-slrName :: Lens' SetLabelsRequest (Maybe Text)
-slrName = lens _slrName (\ s a -> s{_slrName = a})
-
--- | Deprecated. The name of the cluster. This field has been deprecated and
--- replaced by the name field.
-slrClusterId :: Lens' SetLabelsRequest (Maybe Text)
-slrClusterId
-  = lens _slrClusterId (\ s a -> s{_slrClusterId = a})
-
--- | Deprecated. The Google Developers Console [project ID or project
--- number](https:\/\/developers.google.com\/console\/help\/new\/#projectnumber).
--- This field has been deprecated and replaced by the name field.
-slrProjectId :: Lens' SetLabelsRequest (Maybe Text)
-slrProjectId
-  = lens _slrProjectId (\ s a -> s{_slrProjectId = a})
-
--- | The fingerprint of the previous set of labels for this resource, used to
--- detect conflicts. The fingerprint is initially generated by Kubernetes
--- Engine and changes after every request to modify or update labels. You
--- must always provide an up-to-date fingerprint hash when updating or
--- changing labels. Make a 'get()' request to the resource to get the
--- latest fingerprint.
-slrLabelFingerprint :: Lens' SetLabelsRequest (Maybe Text)
-slrLabelFingerprint
-  = lens _slrLabelFingerprint
-      (\ s a -> s{_slrLabelFingerprint = a})
-
-instance FromJSON SetLabelsRequest where
-        parseJSON
-          = withObject "SetLabelsRequest"
-              (\ o ->
-                 SetLabelsRequest' <$>
-                   (o .:? "resourceLabels") <*> (o .:? "zone") <*>
-                     (o .:? "name")
-                     <*> (o .:? "clusterId")
-                     <*> (o .:? "projectId")
-                     <*> (o .:? "labelFingerprint"))
-
-instance ToJSON SetLabelsRequest where
-        toJSON SetLabelsRequest'{..}
-          = object
-              (catMaybes
-                 [("resourceLabels" .=) <$> _slrResourceLabels,
-                  ("zone" .=) <$> _slrZone, ("name" .=) <$> _slrName,
-                  ("clusterId" .=) <$> _slrClusterId,
-                  ("projectId" .=) <$> _slrProjectId,
-                  ("labelFingerprint" .=) <$> _slrLabelFingerprint])
-
--- | MaintenanceWindow defines the maintenance window to be used for the
--- cluster.
---
--- /See:/ 'maintenanceWindow' smart constructor.
-newtype MaintenanceWindow = MaintenanceWindow'
-    { _mwDailyMaintenanceWindow :: Maybe DailyMaintenanceWindow
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'MaintenanceWindow' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mwDailyMaintenanceWindow'
-maintenanceWindow
-    :: MaintenanceWindow
-maintenanceWindow =
-    MaintenanceWindow'
-    { _mwDailyMaintenanceWindow = Nothing
-    }
-
--- | DailyMaintenanceWindow specifies a daily maintenance operation window.
-mwDailyMaintenanceWindow :: Lens' MaintenanceWindow (Maybe DailyMaintenanceWindow)
-mwDailyMaintenanceWindow
-  = lens _mwDailyMaintenanceWindow
-      (\ s a -> s{_mwDailyMaintenanceWindow = a})
-
-instance FromJSON MaintenanceWindow where
-        parseJSON
-          = withObject "MaintenanceWindow"
-              (\ o ->
-                 MaintenanceWindow' <$>
-                   (o .:? "dailyMaintenanceWindow"))
-
-instance ToJSON MaintenanceWindow where
-        toJSON MaintenanceWindow'{..}
-          = object
-              (catMaybes
-                 [("dailyMaintenanceWindow" .=) <$>
-                    _mwDailyMaintenanceWindow])
-
--- | Configuration for controlling how IPs are allocated in the cluster.
---
--- /See:/ 'ipAllocationPolicy' smart constructor.
-data IPAllocationPolicy = IPAllocationPolicy'
-    { _iapServicesSecondaryRangeName :: !(Maybe Text)
-    , _iapNodeIPv4CIdR               :: !(Maybe Text)
-    , _iapUseIPAliases               :: !(Maybe Bool)
-    , _iapClusterIPv4CIdR            :: !(Maybe Text)
-    , _iapSubnetworkName             :: !(Maybe Text)
-    , _iapClusterSecondaryRangeName  :: !(Maybe Text)
-    , _iapNodeIPv4CIdRBlock          :: !(Maybe Text)
-    , _iapServicesIPv4CIdR           :: !(Maybe Text)
-    , _iapClusterIPv4CIdRBlock       :: !(Maybe Text)
-    , _iapServicesIPv4CIdRBlock      :: !(Maybe Text)
-    , _iapCreateSubnetwork           :: !(Maybe Bool)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'IPAllocationPolicy' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iapServicesSecondaryRangeName'
---
--- * 'iapNodeIPv4CIdR'
---
--- * 'iapUseIPAliases'
---
--- * 'iapClusterIPv4CIdR'
---
--- * 'iapSubnetworkName'
---
--- * 'iapClusterSecondaryRangeName'
---
--- * 'iapNodeIPv4CIdRBlock'
---
--- * 'iapServicesIPv4CIdR'
---
--- * 'iapClusterIPv4CIdRBlock'
---
--- * 'iapServicesIPv4CIdRBlock'
---
--- * 'iapCreateSubnetwork'
-ipAllocationPolicy
-    :: IPAllocationPolicy
-ipAllocationPolicy =
-    IPAllocationPolicy'
-    { _iapServicesSecondaryRangeName = Nothing
-    , _iapNodeIPv4CIdR = Nothing
-    , _iapUseIPAliases = Nothing
-    , _iapClusterIPv4CIdR = Nothing
-    , _iapSubnetworkName = Nothing
-    , _iapClusterSecondaryRangeName = Nothing
-    , _iapNodeIPv4CIdRBlock = Nothing
-    , _iapServicesIPv4CIdR = Nothing
-    , _iapClusterIPv4CIdRBlock = Nothing
-    , _iapServicesIPv4CIdRBlock = Nothing
-    , _iapCreateSubnetwork = Nothing
-    }
-
--- | The name of the secondary range to be used as for the services CIDR
--- block. The secondary range will be used for service ClusterIPs. This
--- must be an existing secondary range associated with the cluster
--- subnetwork. This field is only applicable with use_ip_aliases is true
--- and create_subnetwork is false.
-iapServicesSecondaryRangeName :: Lens' IPAllocationPolicy (Maybe Text)
-iapServicesSecondaryRangeName
-  = lens _iapServicesSecondaryRangeName
-      (\ s a -> s{_iapServicesSecondaryRangeName = a})
-
--- | This field is deprecated, use node_ipv4_cidr_block.
-iapNodeIPv4CIdR :: Lens' IPAllocationPolicy (Maybe Text)
-iapNodeIPv4CIdR
-  = lens _iapNodeIPv4CIdR
-      (\ s a -> s{_iapNodeIPv4CIdR = a})
-
--- | Whether alias IPs will be used for pod IPs in the cluster.
-iapUseIPAliases :: Lens' IPAllocationPolicy (Maybe Bool)
-iapUseIPAliases
-  = lens _iapUseIPAliases
-      (\ s a -> s{_iapUseIPAliases = a})
-
--- | This field is deprecated, use cluster_ipv4_cidr_block.
-iapClusterIPv4CIdR :: Lens' IPAllocationPolicy (Maybe Text)
-iapClusterIPv4CIdR
-  = lens _iapClusterIPv4CIdR
-      (\ s a -> s{_iapClusterIPv4CIdR = a})
-
--- | A custom subnetwork name to be used if \`create_subnetwork\` is true. If
--- this field is empty, then an automatic name will be chosen for the new
--- subnetwork.
-iapSubnetworkName :: Lens' IPAllocationPolicy (Maybe Text)
-iapSubnetworkName
-  = lens _iapSubnetworkName
-      (\ s a -> s{_iapSubnetworkName = a})
-
--- | The name of the secondary range to be used for the cluster CIDR block.
--- The secondary range will be used for pod IP addresses. This must be an
--- existing secondary range associated with the cluster subnetwork. This
--- field is only applicable with use_ip_aliases is true and
--- create_subnetwork is false.
-iapClusterSecondaryRangeName :: Lens' IPAllocationPolicy (Maybe Text)
-iapClusterSecondaryRangeName
-  = lens _iapClusterSecondaryRangeName
-      (\ s a -> s{_iapClusterSecondaryRangeName = a})
-
--- | The IP address range of the instance IPs in this cluster. This is
--- applicable only if \`create_subnetwork\` is true. Set to blank to have a
--- range chosen with the default size. Set to \/netmask (e.g. \`\/14\`) to
--- have a range chosen with a specific netmask. Set to a
--- [CIDR](http:\/\/en.wikipedia.org\/wiki\/Classless_Inter-Domain_Routing)
--- notation (e.g. \`10.96.0.0\/14\`) from the RFC-1918 private networks
--- (e.g. \`10.0.0.0\/8\`, \`172.16.0.0\/12\`, \`192.168.0.0\/16\`) to pick
--- a specific range to use.
-iapNodeIPv4CIdRBlock :: Lens' IPAllocationPolicy (Maybe Text)
-iapNodeIPv4CIdRBlock
-  = lens _iapNodeIPv4CIdRBlock
-      (\ s a -> s{_iapNodeIPv4CIdRBlock = a})
-
--- | This field is deprecated, use services_ipv4_cidr_block.
-iapServicesIPv4CIdR :: Lens' IPAllocationPolicy (Maybe Text)
-iapServicesIPv4CIdR
-  = lens _iapServicesIPv4CIdR
-      (\ s a -> s{_iapServicesIPv4CIdR = a})
-
--- | The IP address range for the cluster pod IPs. If this field is set, then
--- \`cluster.cluster_ipv4_cidr\` must be left blank. This field is only
--- applicable when \`use_ip_aliases\` is true. Set to blank to have a range
--- chosen with the default size. Set to \/netmask (e.g. \`\/14\`) to have a
--- range chosen with a specific netmask. Set to a
--- [CIDR](http:\/\/en.wikipedia.org\/wiki\/Classless_Inter-Domain_Routing)
--- notation (e.g. \`10.96.0.0\/14\`) from the RFC-1918 private networks
--- (e.g. \`10.0.0.0\/8\`, \`172.16.0.0\/12\`, \`192.168.0.0\/16\`) to pick
--- a specific range to use.
-iapClusterIPv4CIdRBlock :: Lens' IPAllocationPolicy (Maybe Text)
-iapClusterIPv4CIdRBlock
-  = lens _iapClusterIPv4CIdRBlock
-      (\ s a -> s{_iapClusterIPv4CIdRBlock = a})
-
--- | The IP address range of the services IPs in this cluster. If blank, a
--- range will be automatically chosen with the default size. This field is
--- only applicable when \`use_ip_aliases\` is true. Set to blank to have a
--- range chosen with the default size. Set to \/netmask (e.g. \`\/14\`) to
--- have a range chosen with a specific netmask. Set to a
--- [CIDR](http:\/\/en.wikipedia.org\/wiki\/Classless_Inter-Domain_Routing)
--- notation (e.g. \`10.96.0.0\/14\`) from the RFC-1918 private networks
--- (e.g. \`10.0.0.0\/8\`, \`172.16.0.0\/12\`, \`192.168.0.0\/16\`) to pick
--- a specific range to use.
-iapServicesIPv4CIdRBlock :: Lens' IPAllocationPolicy (Maybe Text)
-iapServicesIPv4CIdRBlock
-  = lens _iapServicesIPv4CIdRBlock
-      (\ s a -> s{_iapServicesIPv4CIdRBlock = a})
-
--- | Whether a new subnetwork will be created automatically for the cluster.
--- This field is only applicable when \`use_ip_aliases\` is true.
-iapCreateSubnetwork :: Lens' IPAllocationPolicy (Maybe Bool)
-iapCreateSubnetwork
-  = lens _iapCreateSubnetwork
-      (\ s a -> s{_iapCreateSubnetwork = a})
-
-instance FromJSON IPAllocationPolicy where
-        parseJSON
-          = withObject "IPAllocationPolicy"
-              (\ o ->
-                 IPAllocationPolicy' <$>
-                   (o .:? "servicesSecondaryRangeName") <*>
-                     (o .:? "nodeIpv4Cidr")
-                     <*> (o .:? "useIpAliases")
-                     <*> (o .:? "clusterIpv4Cidr")
-                     <*> (o .:? "subnetworkName")
-                     <*> (o .:? "clusterSecondaryRangeName")
-                     <*> (o .:? "nodeIpv4CidrBlock")
-                     <*> (o .:? "servicesIpv4Cidr")
-                     <*> (o .:? "clusterIpv4CidrBlock")
-                     <*> (o .:? "servicesIpv4CidrBlock")
-                     <*> (o .:? "createSubnetwork"))
-
-instance ToJSON IPAllocationPolicy where
-        toJSON IPAllocationPolicy'{..}
-          = object
-              (catMaybes
-                 [("servicesSecondaryRangeName" .=) <$>
-                    _iapServicesSecondaryRangeName,
-                  ("nodeIpv4Cidr" .=) <$> _iapNodeIPv4CIdR,
-                  ("useIpAliases" .=) <$> _iapUseIPAliases,
-                  ("clusterIpv4Cidr" .=) <$> _iapClusterIPv4CIdR,
-                  ("subnetworkName" .=) <$> _iapSubnetworkName,
-                  ("clusterSecondaryRangeName" .=) <$>
-                    _iapClusterSecondaryRangeName,
-                  ("nodeIpv4CidrBlock" .=) <$> _iapNodeIPv4CIdRBlock,
-                  ("servicesIpv4Cidr" .=) <$> _iapServicesIPv4CIdR,
-                  ("clusterIpv4CidrBlock" .=) <$>
-                    _iapClusterIPv4CIdRBlock,
-                  ("servicesIpv4CidrBlock" .=) <$>
-                    _iapServicesIPv4CIdRBlock,
-                  ("createSubnetwork" .=) <$> _iapCreateSubnetwork])
-
--- | Configuration for the addons that can be automatically spun up in the
--- cluster, enabling additional functionality.
---
--- /See:/ 'addonsConfig' smart constructor.
-data AddonsConfig = AddonsConfig'
-    { _acNetworkPolicyConfig      :: !(Maybe NetworkPolicyConfig)
-    , _acHorizontalPodAutoscaling :: !(Maybe HorizontalPodAutoscaling)
-    , _acHTTPLoadBalancing        :: !(Maybe HTTPLoadBalancing)
-    , _acKubernetesDashboard      :: !(Maybe KubernetesDashboard)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AddonsConfig' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'acNetworkPolicyConfig'
---
--- * 'acHorizontalPodAutoscaling'
---
--- * 'acHTTPLoadBalancing'
---
--- * 'acKubernetesDashboard'
-addonsConfig
-    :: AddonsConfig
-addonsConfig =
-    AddonsConfig'
-    { _acNetworkPolicyConfig = Nothing
-    , _acHorizontalPodAutoscaling = Nothing
-    , _acHTTPLoadBalancing = Nothing
-    , _acKubernetesDashboard = Nothing
-    }
-
--- | Configuration for NetworkPolicy. This only tracks whether the addon is
--- enabled or not on the Master, it does not track whether network policy
--- is enabled for the nodes.
-acNetworkPolicyConfig :: Lens' AddonsConfig (Maybe NetworkPolicyConfig)
-acNetworkPolicyConfig
-  = lens _acNetworkPolicyConfig
-      (\ s a -> s{_acNetworkPolicyConfig = a})
-
--- | Configuration for the horizontal pod autoscaling feature, which
--- increases or decreases the number of replica pods a replication
--- controller has based on the resource usage of the existing pods.
-acHorizontalPodAutoscaling :: Lens' AddonsConfig (Maybe HorizontalPodAutoscaling)
-acHorizontalPodAutoscaling
-  = lens _acHorizontalPodAutoscaling
-      (\ s a -> s{_acHorizontalPodAutoscaling = a})
-
--- | Configuration for the HTTP (L7) load balancing controller addon, which
--- makes it easy to set up HTTP load balancers for services in a cluster.
-acHTTPLoadBalancing :: Lens' AddonsConfig (Maybe HTTPLoadBalancing)
-acHTTPLoadBalancing
-  = lens _acHTTPLoadBalancing
-      (\ s a -> s{_acHTTPLoadBalancing = a})
-
--- | Configuration for the Kubernetes Dashboard.
-acKubernetesDashboard :: Lens' AddonsConfig (Maybe KubernetesDashboard)
-acKubernetesDashboard
-  = lens _acKubernetesDashboard
-      (\ s a -> s{_acKubernetesDashboard = a})
-
-instance FromJSON AddonsConfig where
-        parseJSON
-          = withObject "AddonsConfig"
-              (\ o ->
-                 AddonsConfig' <$>
-                   (o .:? "networkPolicyConfig") <*>
-                     (o .:? "horizontalPodAutoscaling")
-                     <*> (o .:? "httpLoadBalancing")
-                     <*> (o .:? "kubernetesDashboard"))
-
-instance ToJSON AddonsConfig where
-        toJSON AddonsConfig'{..}
-          = object
-              (catMaybes
-                 [("networkPolicyConfig" .=) <$>
-                    _acNetworkPolicyConfig,
-                  ("horizontalPodAutoscaling" .=) <$>
-                    _acHorizontalPodAutoscaling,
-                  ("httpLoadBalancing" .=) <$> _acHTTPLoadBalancing,
-                  ("kubernetesDashboard" .=) <$>
-                    _acKubernetesDashboard])
-
--- | NetworkConfig reports the relative names of network & subnetwork.
---
--- /See:/ 'networkConfig' smart constructor.
-data NetworkConfig = NetworkConfig'
-    { _ncNetwork    :: !(Maybe Text)
-    , _ncSubnetwork :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'NetworkConfig' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ncNetwork'
---
--- * 'ncSubnetwork'
-networkConfig
-    :: NetworkConfig
-networkConfig =
-    NetworkConfig'
-    { _ncNetwork = Nothing
-    , _ncSubnetwork = Nothing
-    }
-
--- | Output only. The relative name of the Google Compute Engine
--- network(\/compute\/docs\/networks-and-firewalls#networks) to which the
--- cluster is connected. Example:
--- projects\/my-project\/global\/networks\/my-network
-ncNetwork :: Lens' NetworkConfig (Maybe Text)
-ncNetwork
-  = lens _ncNetwork (\ s a -> s{_ncNetwork = a})
-
--- | Output only. The relative name of the Google Compute Engine
--- [subnetwork](\/compute\/docs\/vpc) to which the cluster is connected.
--- Example:
--- projects\/my-project\/regions\/us-central1\/subnetworks\/my-subnet
-ncSubnetwork :: Lens' NetworkConfig (Maybe Text)
-ncSubnetwork
-  = lens _ncSubnetwork (\ s a -> s{_ncSubnetwork = a})
-
-instance FromJSON NetworkConfig where
-        parseJSON
-          = withObject "NetworkConfig"
-              (\ o ->
-                 NetworkConfig' <$>
-                   (o .:? "network") <*> (o .:? "subnetwork"))
-
-instance ToJSON NetworkConfig where
-        toJSON NetworkConfig'{..}
-          = object
-              (catMaybes
-                 [("network" .=) <$> _ncNetwork,
-                  ("subnetwork" .=) <$> _ncSubnetwork])
-
--- | NodePool contains the name and configuration for a cluster\'s node pool.
--- Node pools are a set of nodes (i.e. VM\'s), with a common configuration
--- and specification, under the control of the cluster master. They may
--- have a set of Kubernetes labels applied to them, which may be used to
--- reference them during pod scheduling. They may also be resized up or
--- down, to accommodate the workload.
---
--- /See:/ 'nodePool' smart constructor.
-data NodePool = NodePool'
-    { _npStatus            :: !(Maybe NodePoolStatus)
-    , _npAutoscaling       :: !(Maybe NodePoolAutoscaling)
-    , _npConfig            :: !(Maybe NodeConfig)
-    , _npInitialNodeCount  :: !(Maybe (Textual Int32))
-    , _npManagement        :: !(Maybe NodeManagement)
-    , _npSelfLink          :: !(Maybe Text)
-    , _npName              :: !(Maybe Text)
-    , _npStatusMessage     :: !(Maybe Text)
-    , _npVersion           :: !(Maybe Text)
-    , _npConditions        :: !(Maybe [StatusCondition])
-    , _npInstanceGroupURLs :: !(Maybe [Text])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'NodePool' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'npStatus'
---
--- * 'npAutoscaling'
---
--- * 'npConfig'
---
--- * 'npInitialNodeCount'
---
--- * 'npManagement'
---
--- * 'npSelfLink'
---
--- * 'npName'
---
--- * 'npStatusMessage'
---
--- * 'npVersion'
---
--- * 'npConditions'
---
--- * 'npInstanceGroupURLs'
-nodePool
-    :: NodePool
-nodePool =
-    NodePool'
-    { _npStatus = Nothing
-    , _npAutoscaling = Nothing
-    , _npConfig = Nothing
-    , _npInitialNodeCount = Nothing
-    , _npManagement = Nothing
-    , _npSelfLink = Nothing
-    , _npName = Nothing
-    , _npStatusMessage = Nothing
-    , _npVersion = Nothing
-    , _npConditions = Nothing
-    , _npInstanceGroupURLs = Nothing
-    }
-
--- | [Output only] The status of the nodes in this pool instance.
-npStatus :: Lens' NodePool (Maybe NodePoolStatus)
-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})
-
--- | The initial node count for the pool. You must ensure that your Compute
--- Engine </compute/docs/resource-quotas resource quota> is sufficient for
--- this number of instances. You must also have available firewall and
--- routes quota.
-npInitialNodeCount :: Lens' NodePool (Maybe Int32)
-npInitialNodeCount
-  = lens _npInitialNodeCount
-      (\ s a -> s{_npInitialNodeCount = a})
-      . mapping _Coerce
-
--- | 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})
-
--- | The name of the node pool.
-npName :: Lens' NodePool (Maybe Text)
-npName = lens _npName (\ s a -> s{_npName = a})
-
--- | [Output only] Additional information about the current status of this
--- node pool instance, if available.
-npStatusMessage :: Lens' NodePool (Maybe Text)
-npStatusMessage
-  = lens _npStatusMessage
-      (\ s a -> s{_npStatusMessage = a})
-
--- | The version of the Kubernetes of this node.
-npVersion :: Lens' NodePool (Maybe Text)
-npVersion
-  = lens _npVersion (\ s a -> s{_npVersion = a})
-
--- | Which conditions caused the current node pool state.
-npConditions :: Lens' NodePool [StatusCondition]
-npConditions
-  = lens _npConditions (\ s a -> s{_npConditions = a})
-      . _Default
-      . _Coerce
-
--- | [Output only] The resource URLs of the [managed instance
--- groups](\/compute\/docs\/instance-groups\/creating-groups-of-managed-instances)
--- associated with this node pool.
-npInstanceGroupURLs :: Lens' NodePool [Text]
-npInstanceGroupURLs
-  = lens _npInstanceGroupURLs
-      (\ s a -> s{_npInstanceGroupURLs = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON NodePool where
-        parseJSON
-          = withObject "NodePool"
-              (\ o ->
-                 NodePool' <$>
-                   (o .:? "status") <*> (o .:? "autoscaling") <*>
-                     (o .:? "config")
-                     <*> (o .:? "initialNodeCount")
-                     <*> (o .:? "management")
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "name")
-                     <*> (o .:? "statusMessage")
-                     <*> (o .:? "version")
-                     <*> (o .:? "conditions" .!= mempty)
-                     <*> (o .:? "instanceGroupUrls" .!= mempty))
-
-instance ToJSON NodePool where
-        toJSON NodePool'{..}
-          = object
-              (catMaybes
-                 [("status" .=) <$> _npStatus,
-                  ("autoscaling" .=) <$> _npAutoscaling,
-                  ("config" .=) <$> _npConfig,
-                  ("initialNodeCount" .=) <$> _npInitialNodeCount,
-                  ("management" .=) <$> _npManagement,
-                  ("selfLink" .=) <$> _npSelfLink,
-                  ("name" .=) <$> _npName,
-                  ("statusMessage" .=) <$> _npStatusMessage,
-                  ("version" .=) <$> _npVersion,
-                  ("conditions" .=) <$> _npConditions,
-                  ("instanceGroupUrls" .=) <$> _npInstanceGroupURLs])
-
--- | SetNodePoolManagementRequest sets the node management properties of a
--- node pool.
---
--- /See:/ 'setNodePoolManagementRequest' smart constructor.
-data SetNodePoolManagementRequest = SetNodePoolManagementRequest'
-    { _snpmrManagement :: !(Maybe NodeManagement)
-    , _snpmrZone       :: !(Maybe Text)
-    , _snpmrNodePoolId :: !(Maybe Text)
-    , _snpmrName       :: !(Maybe Text)
-    , _snpmrClusterId  :: !(Maybe Text)
-    , _snpmrProjectId  :: !(Maybe Text)
-    } 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'
---
--- * 'snpmrZone'
---
--- * 'snpmrNodePoolId'
---
--- * 'snpmrName'
---
--- * 'snpmrClusterId'
---
--- * 'snpmrProjectId'
-setNodePoolManagementRequest
-    :: SetNodePoolManagementRequest
-setNodePoolManagementRequest =
-    SetNodePoolManagementRequest'
-    { _snpmrManagement = Nothing
-    , _snpmrZone = Nothing
-    , _snpmrNodePoolId = Nothing
-    , _snpmrName = Nothing
-    , _snpmrClusterId = Nothing
-    , _snpmrProjectId = Nothing
-    }
-
--- | NodeManagement configuration for the node pool.
-snpmrManagement :: Lens' SetNodePoolManagementRequest (Maybe NodeManagement)
-snpmrManagement
-  = lens _snpmrManagement
-      (\ s a -> s{_snpmrManagement = a})
-
--- | Deprecated. The name of the Google Compute Engine
--- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
--- This field has been deprecated and replaced by the name field.
-snpmrZone :: Lens' SetNodePoolManagementRequest (Maybe Text)
-snpmrZone
-  = lens _snpmrZone (\ s a -> s{_snpmrZone = a})
-
--- | Deprecated. The name of the node pool to update. This field has been
--- deprecated and replaced by the name field.
-snpmrNodePoolId :: Lens' SetNodePoolManagementRequest (Maybe Text)
-snpmrNodePoolId
-  = lens _snpmrNodePoolId
-      (\ s a -> s{_snpmrNodePoolId = a})
-
--- | The name (project, location, cluster, node pool id) of the node pool to
--- set management properties. Specified in the format
--- \'projects\/*\/locations\/*\/clusters\/*\/nodePools\/*\'.
-snpmrName :: Lens' SetNodePoolManagementRequest (Maybe Text)
-snpmrName
-  = lens _snpmrName (\ s a -> s{_snpmrName = a})
-
--- | Deprecated. The name of the cluster to update. This field has been
--- deprecated and replaced by the name field.
-snpmrClusterId :: Lens' SetNodePoolManagementRequest (Maybe Text)
-snpmrClusterId
-  = lens _snpmrClusterId
-      (\ s a -> s{_snpmrClusterId = a})
-
--- | Deprecated. The Google Developers Console [project ID or project
--- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
--- field has been deprecated and replaced by the name field.
-snpmrProjectId :: Lens' SetNodePoolManagementRequest (Maybe Text)
-snpmrProjectId
-  = lens _snpmrProjectId
-      (\ s a -> s{_snpmrProjectId = a})
-
-instance FromJSON SetNodePoolManagementRequest where
-        parseJSON
-          = withObject "SetNodePoolManagementRequest"
-              (\ o ->
-                 SetNodePoolManagementRequest' <$>
-                   (o .:? "management") <*> (o .:? "zone") <*>
-                     (o .:? "nodePoolId")
-                     <*> (o .:? "name")
-                     <*> (o .:? "clusterId")
-                     <*> (o .:? "projectId"))
-
-instance ToJSON SetNodePoolManagementRequest where
-        toJSON SetNodePoolManagementRequest'{..}
-          = object
-              (catMaybes
-                 [("management" .=) <$> _snpmrManagement,
-                  ("zone" .=) <$> _snpmrZone,
-                  ("nodePoolId" .=) <$> _snpmrNodePoolId,
-                  ("name" .=) <$> _snpmrName,
-                  ("clusterId" .=) <$> _snpmrClusterId,
-                  ("projectId" .=) <$> _snpmrProjectId])
-
--- | Configuration options for the master authorized networks feature.
--- Enabled master authorized networks will disallow all external traffic to
--- access Kubernetes master through HTTPS except traffic from the given
--- CIDR blocks, Google Compute Engine Public IPs and Google Prod IPs.
---
--- /See:/ 'masterAuthorizedNetworksConfig' smart constructor.
-data MasterAuthorizedNetworksConfig = MasterAuthorizedNetworksConfig'
-    { _mancEnabled    :: !(Maybe Bool)
-    , _mancCIdRBlocks :: !(Maybe [CIdRBlock])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'MasterAuthorizedNetworksConfig' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mancEnabled'
---
--- * 'mancCIdRBlocks'
-masterAuthorizedNetworksConfig
-    :: MasterAuthorizedNetworksConfig
-masterAuthorizedNetworksConfig =
-    MasterAuthorizedNetworksConfig'
-    { _mancEnabled = Nothing
-    , _mancCIdRBlocks = Nothing
-    }
-
--- | Whether or not master authorized networks is enabled.
-mancEnabled :: Lens' MasterAuthorizedNetworksConfig (Maybe Bool)
-mancEnabled
-  = lens _mancEnabled (\ s a -> s{_mancEnabled = a})
-
--- | cidr_blocks define up to 10 external networks that could access
--- Kubernetes master through HTTPS.
-mancCIdRBlocks :: Lens' MasterAuthorizedNetworksConfig [CIdRBlock]
-mancCIdRBlocks
-  = lens _mancCIdRBlocks
-      (\ s a -> s{_mancCIdRBlocks = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON MasterAuthorizedNetworksConfig
-         where
-        parseJSON
-          = withObject "MasterAuthorizedNetworksConfig"
-              (\ o ->
-                 MasterAuthorizedNetworksConfig' <$>
-                   (o .:? "enabled") <*>
-                     (o .:? "cidrBlocks" .!= mempty))
-
-instance ToJSON MasterAuthorizedNetworksConfig where
-        toJSON MasterAuthorizedNetworksConfig'{..}
-          = object
-              (catMaybes
-                 [("enabled" .=) <$> _mancEnabled,
-                  ("cidrBlocks" .=) <$> _mancCIdRBlocks])
-
--- | Configuration for the legacy Attribute Based Access Control
--- authorization mode.
---
--- /See:/ 'legacyAbac' smart constructor.
-newtype LegacyAbac = LegacyAbac'
-    { _laEnabled :: Maybe Bool
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'LegacyAbac' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'laEnabled'
-legacyAbac
-    :: LegacyAbac
-legacyAbac =
-    LegacyAbac'
-    { _laEnabled = Nothing
-    }
-
--- | Whether the ABAC authorizer is enabled for this cluster. When enabled,
--- identities in the system, including service accounts, nodes, and
--- controllers, will have statically granted permissions beyond those
--- provided by the RBAC configuration or IAM.
-laEnabled :: Lens' LegacyAbac (Maybe Bool)
-laEnabled
-  = lens _laEnabled (\ s a -> s{_laEnabled = a})
-
-instance FromJSON LegacyAbac where
-        parseJSON
-          = withObject "LegacyAbac"
-              (\ o -> LegacyAbac' <$> (o .:? "enabled"))
-
-instance ToJSON LegacyAbac where
-        toJSON LegacyAbac'{..}
-          = object (catMaybes [("enabled" .=) <$> _laEnabled])
-
--- | The authentication information for accessing the master endpoint.
--- Authentication can be done using HTTP basic auth or using client
--- certificates.
---
--- /See:/ 'masterAuth' smart constructor.
-data MasterAuth = MasterAuth'
-    { _maClientKey               :: !(Maybe Text)
-    , _maUsername                :: !(Maybe Text)
-    , _maClientCertificateConfig :: !(Maybe ClientCertificateConfig)
-    , _maClientCertificate       :: !(Maybe Text)
-    , _maPassword                :: !(Maybe Text)
-    , _maClusterCaCertificate    :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'MasterAuth' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'maClientKey'
---
--- * 'maUsername'
---
--- * 'maClientCertificateConfig'
---
--- * 'maClientCertificate'
---
--- * 'maPassword'
---
--- * 'maClusterCaCertificate'
-masterAuth
-    :: MasterAuth
-masterAuth =
-    MasterAuth'
-    { _maClientKey = Nothing
-    , _maUsername = Nothing
-    , _maClientCertificateConfig = Nothing
-    , _maClientCertificate = Nothing
-    , _maPassword = Nothing
-    , _maClusterCaCertificate = Nothing
-    }
-
--- | [Output only] Base64-encoded private key used by clients to authenticate
--- to the cluster endpoint.
-maClientKey :: Lens' MasterAuth (Maybe Text)
-maClientKey
-  = lens _maClientKey (\ s a -> s{_maClientKey = a})
-
--- | The username to use for HTTP basic authentication to the master
--- endpoint. For clusters v1.6.0 and later, basic authentication can be
--- disabled by leaving username unspecified (or setting it to the empty
--- string).
-maUsername :: Lens' MasterAuth (Maybe Text)
-maUsername
-  = lens _maUsername (\ s a -> s{_maUsername = a})
-
--- | Configuration for client certificate authentication on the cluster. For
--- clusters before v1.12, if no configuration is specified, a client
--- certificate is issued.
-maClientCertificateConfig :: Lens' MasterAuth (Maybe ClientCertificateConfig)
-maClientCertificateConfig
-  = lens _maClientCertificateConfig
-      (\ s a -> s{_maClientCertificateConfig = a})
-
--- | [Output only] Base64-encoded public certificate used by clients to
--- authenticate to the cluster endpoint.
-maClientCertificate :: Lens' MasterAuth (Maybe Text)
-maClientCertificate
-  = lens _maClientCertificate
-      (\ s a -> s{_maClientCertificate = a})
-
--- | The password to use for HTTP basic authentication to the master
--- endpoint. Because the master endpoint is open to the Internet, you
--- should create a strong password. If a password is provided for cluster
--- creation, username must be non-empty.
-maPassword :: Lens' MasterAuth (Maybe Text)
-maPassword
-  = lens _maPassword (\ s a -> s{_maPassword = a})
-
--- | [Output only] Base64-encoded public certificate that is the root of
--- trust for the cluster.
-maClusterCaCertificate :: Lens' MasterAuth (Maybe Text)
-maClusterCaCertificate
-  = lens _maClusterCaCertificate
-      (\ s a -> s{_maClusterCaCertificate = a})
-
-instance FromJSON MasterAuth where
-        parseJSON
-          = withObject "MasterAuth"
-              (\ o ->
-                 MasterAuth' <$>
-                   (o .:? "clientKey") <*> (o .:? "username") <*>
-                     (o .:? "clientCertificateConfig")
-                     <*> (o .:? "clientCertificate")
-                     <*> (o .:? "password")
-                     <*> (o .:? "clusterCaCertificate"))
-
-instance ToJSON MasterAuth where
-        toJSON MasterAuth'{..}
-          = object
-              (catMaybes
-                 [("clientKey" .=) <$> _maClientKey,
-                  ("username" .=) <$> _maUsername,
-                  ("clientCertificateConfig" .=) <$>
-                    _maClientCertificateConfig,
-                  ("clientCertificate" .=) <$> _maClientCertificate,
-                  ("password" .=) <$> _maPassword,
-                  ("clusterCaCertificate" .=) <$>
-                    _maClusterCaCertificate])
-
--- | StatusCondition describes why a cluster or a node pool has a certain
--- status (e.g., ERROR or DEGRADED).
---
--- /See:/ 'statusCondition' smart constructor.
-data StatusCondition = StatusCondition'
-    { _scCode    :: !(Maybe StatusConditionCode)
-    , _scMessage :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'StatusCondition' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'scCode'
---
--- * 'scMessage'
-statusCondition
-    :: StatusCondition
-statusCondition =
-    StatusCondition'
-    { _scCode = Nothing
-    , _scMessage = Nothing
-    }
-
--- | Machine-friendly representation of the condition
-scCode :: Lens' StatusCondition (Maybe StatusConditionCode)
-scCode = lens _scCode (\ s a -> s{_scCode = a})
-
--- | Human-friendly representation of the condition
-scMessage :: Lens' StatusCondition (Maybe Text)
-scMessage
-  = lens _scMessage (\ s a -> s{_scMessage = a})
-
-instance FromJSON StatusCondition where
-        parseJSON
-          = withObject "StatusCondition"
-              (\ o ->
-                 StatusCondition' <$>
-                   (o .:? "code") <*> (o .:? "message"))
-
-instance ToJSON StatusCondition where
-        toJSON StatusCondition'{..}
-          = object
-              (catMaybes
-                 [("code" .=) <$> _scCode,
-                  ("message" .=) <$> _scMessage])
-
--- | The metadata key\/value pairs assigned to instances in the cluster. Keys
--- must conform to the regexp [a-zA-Z0-9-_]+ and be less than 128 bytes in
--- length. These are reflected as part of a URL in the metadata server.
--- Additionally, to avoid ambiguity, keys must not conflict with any other
--- metadata keys for the project or be one of the reserved keys:
--- \"cluster-location\" \"cluster-name\" \"cluster-uid\" \"configure-sh\"
--- \"enable-os-login\" \"gci-update-strategy\" \"gci-ensure-gke-docker\"
--- \"instance-template\" \"kube-env\" \"startup-script\" \"user-data\"
--- Values are free-form strings, and only have meaning as interpreted by
--- the image running in the instance. The only restriction placed on them
--- is that each value\'s size must be less than or equal to 32 KB. The
--- total size of all keys and values must be less than 512 KB.
---
--- /See:/ 'nodeConfigMetadata' smart constructor.
-newtype NodeConfigMetadata = NodeConfigMetadata'
-    { _ncmAddtional :: HashMap Text Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'NodeConfigMetadata' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ncmAddtional'
-nodeConfigMetadata
-    :: HashMap Text Text -- ^ 'ncmAddtional'
-    -> NodeConfigMetadata
-nodeConfigMetadata pNcmAddtional_ =
-    NodeConfigMetadata'
-    { _ncmAddtional = _Coerce # pNcmAddtional_
-    }
-
-ncmAddtional :: Lens' NodeConfigMetadata (HashMap Text Text)
-ncmAddtional
-  = lens _ncmAddtional (\ s a -> s{_ncmAddtional = a})
-      . _Coerce
-
-instance FromJSON NodeConfigMetadata where
-        parseJSON
-          = withObject "NodeConfigMetadata"
-              (\ o -> NodeConfigMetadata' <$> (parseJSONObject o))
-
-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:
--- https:\/\/kubernetes.io\/docs\/concepts\/overview\/working-with-objects\/labels\/
---
--- /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
-
--- | Kubernetes Engine service configuration.
---
--- /See:/ 'serverConfig' smart constructor.
-data ServerConfig = ServerConfig'
-    { _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:
---
--- * 'scDefaultImageType'
---
--- * 'scValidNodeVersions'
---
--- * 'scValidImageTypes'
---
--- * 'scDefaultClusterVersion'
---
--- * 'scValidMasterVersions'
-serverConfig
-    :: ServerConfig
-serverConfig =
-    ServerConfig'
-    { _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
-  = lens _scValidNodeVersions
-      (\ s a -> s{_scValidNodeVersions = a})
-      . _Default
-      . _Coerce
-
--- | List of valid image types.
-scValidImageTypes :: Lens' ServerConfig [Text]
-scValidImageTypes
-  = lens _scValidImageTypes
-      (\ s a -> s{_scValidImageTypes = a})
-      . _Default
-      . _Coerce
-
--- | Version of Kubernetes the service deploys by default.
-scDefaultClusterVersion :: Lens' ServerConfig (Maybe Text)
-scDefaultClusterVersion
-  = 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 .:? "defaultImageType") <*>
-                     (o .:? "validNodeVersions" .!= mempty)
-                     <*> (o .:? "validImageTypes" .!= mempty)
-                     <*> (o .:? "defaultClusterVersion")
-                     <*> (o .:? "validMasterVersions" .!= mempty))
-
-instance ToJSON ServerConfig where
-        toJSON ServerConfig'{..}
-          = object
-              (catMaybes
-                 [("defaultImageType" .=) <$> _scDefaultImageType,
-                  ("validNodeVersions" .=) <$> _scValidNodeVersions,
-                  ("validImageTypes" .=) <$> _scValidImageTypes,
-                  ("defaultClusterVersion" .=) <$>
-                    _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])
-
--- | SetNodePoolSizeRequest sets the size a node pool.
---
--- /See:/ 'setNodePoolSizeRequest' smart constructor.
-data SetNodePoolSizeRequest = SetNodePoolSizeRequest'
-    { _snpsrNodeCount  :: !(Maybe (Textual Int32))
-    , _snpsrZone       :: !(Maybe Text)
-    , _snpsrNodePoolId :: !(Maybe Text)
-    , _snpsrName       :: !(Maybe Text)
-    , _snpsrClusterId  :: !(Maybe Text)
-    , _snpsrProjectId  :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SetNodePoolSizeRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'snpsrNodeCount'
---
--- * 'snpsrZone'
---
--- * 'snpsrNodePoolId'
---
--- * 'snpsrName'
---
--- * 'snpsrClusterId'
---
--- * 'snpsrProjectId'
-setNodePoolSizeRequest
-    :: SetNodePoolSizeRequest
-setNodePoolSizeRequest =
-    SetNodePoolSizeRequest'
-    { _snpsrNodeCount = Nothing
-    , _snpsrZone = Nothing
-    , _snpsrNodePoolId = Nothing
-    , _snpsrName = Nothing
-    , _snpsrClusterId = Nothing
-    , _snpsrProjectId = Nothing
-    }
-
--- | The desired node count for the pool.
-snpsrNodeCount :: Lens' SetNodePoolSizeRequest (Maybe Int32)
-snpsrNodeCount
-  = lens _snpsrNodeCount
-      (\ s a -> s{_snpsrNodeCount = a})
-      . mapping _Coerce
-
--- | Deprecated. The name of the Google Compute Engine
--- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
--- This field has been deprecated and replaced by the name field.
-snpsrZone :: Lens' SetNodePoolSizeRequest (Maybe Text)
-snpsrZone
-  = lens _snpsrZone (\ s a -> s{_snpsrZone = a})
-
--- | Deprecated. The name of the node pool to update. This field has been
--- deprecated and replaced by the name field.
-snpsrNodePoolId :: Lens' SetNodePoolSizeRequest (Maybe Text)
-snpsrNodePoolId
-  = lens _snpsrNodePoolId
-      (\ s a -> s{_snpsrNodePoolId = a})
-
--- | The name (project, location, cluster, node pool id) of the node pool to
--- set size. Specified in the format
--- \'projects\/*\/locations\/*\/clusters\/*\/nodePools\/*\'.
-snpsrName :: Lens' SetNodePoolSizeRequest (Maybe Text)
-snpsrName
-  = lens _snpsrName (\ s a -> s{_snpsrName = a})
-
--- | Deprecated. The name of the cluster to update. This field has been
--- deprecated and replaced by the name field.
-snpsrClusterId :: Lens' SetNodePoolSizeRequest (Maybe Text)
-snpsrClusterId
-  = lens _snpsrClusterId
-      (\ s a -> s{_snpsrClusterId = a})
-
--- | Deprecated. The Google Developers Console [project ID or project
--- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
--- field has been deprecated and replaced by the name field.
-snpsrProjectId :: Lens' SetNodePoolSizeRequest (Maybe Text)
-snpsrProjectId
-  = lens _snpsrProjectId
-      (\ s a -> s{_snpsrProjectId = a})
-
-instance FromJSON SetNodePoolSizeRequest where
-        parseJSON
-          = withObject "SetNodePoolSizeRequest"
-              (\ o ->
-                 SetNodePoolSizeRequest' <$>
-                   (o .:? "nodeCount") <*> (o .:? "zone") <*>
-                     (o .:? "nodePoolId")
-                     <*> (o .:? "name")
-                     <*> (o .:? "clusterId")
-                     <*> (o .:? "projectId"))
-
-instance ToJSON SetNodePoolSizeRequest where
-        toJSON SetNodePoolSizeRequest'{..}
-          = object
-              (catMaybes
-                 [("nodeCount" .=) <$> _snpsrNodeCount,
-                  ("zone" .=) <$> _snpsrZone,
-                  ("nodePoolId" .=) <$> _snpsrNodePoolId,
-                  ("name" .=) <$> _snpsrName,
-                  ("clusterId" .=) <$> _snpsrClusterId,
-                  ("projectId" .=) <$> _snpsrProjectId])
-
--- | SetMonitoringServiceRequest sets the monitoring service of a cluster.
---
--- /See:/ 'setMonitoringServiceRequest' smart constructor.
-data SetMonitoringServiceRequest = SetMonitoringServiceRequest'
-    { _smsrZone              :: !(Maybe Text)
-    , _smsrName              :: !(Maybe Text)
-    , _smsrClusterId         :: !(Maybe Text)
-    , _smsrProjectId         :: !(Maybe Text)
-    , _smsrMonitoringService :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SetMonitoringServiceRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'smsrZone'
---
--- * 'smsrName'
---
--- * 'smsrClusterId'
---
--- * 'smsrProjectId'
---
--- * 'smsrMonitoringService'
-setMonitoringServiceRequest
-    :: SetMonitoringServiceRequest
-setMonitoringServiceRequest =
-    SetMonitoringServiceRequest'
-    { _smsrZone = Nothing
-    , _smsrName = Nothing
-    , _smsrClusterId = Nothing
-    , _smsrProjectId = Nothing
-    , _smsrMonitoringService = Nothing
-    }
-
--- | Deprecated. The name of the Google Compute Engine
--- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
--- This field has been deprecated and replaced by the name field.
-smsrZone :: Lens' SetMonitoringServiceRequest (Maybe Text)
-smsrZone = lens _smsrZone (\ s a -> s{_smsrZone = a})
-
--- | The name (project, location, cluster) of the cluster to set monitoring.
--- Specified in the format \'projects\/*\/locations\/*\/clusters\/*\'.
-smsrName :: Lens' SetMonitoringServiceRequest (Maybe Text)
-smsrName = lens _smsrName (\ s a -> s{_smsrName = a})
-
--- | Deprecated. The name of the cluster to upgrade. This field has been
--- deprecated and replaced by the name field.
-smsrClusterId :: Lens' SetMonitoringServiceRequest (Maybe Text)
-smsrClusterId
-  = lens _smsrClusterId
-      (\ s a -> s{_smsrClusterId = a})
-
--- | Deprecated. The Google Developers Console [project ID or project
--- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
--- field has been deprecated and replaced by the name field.
-smsrProjectId :: Lens' SetMonitoringServiceRequest (Maybe Text)
-smsrProjectId
-  = lens _smsrProjectId
-      (\ s a -> s{_smsrProjectId = a})
-
--- | 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
--- from the cluster
-smsrMonitoringService :: Lens' SetMonitoringServiceRequest (Maybe Text)
-smsrMonitoringService
-  = lens _smsrMonitoringService
-      (\ s a -> s{_smsrMonitoringService = a})
-
-instance FromJSON SetMonitoringServiceRequest where
-        parseJSON
-          = withObject "SetMonitoringServiceRequest"
-              (\ o ->
-                 SetMonitoringServiceRequest' <$>
-                   (o .:? "zone") <*> (o .:? "name") <*>
-                     (o .:? "clusterId")
-                     <*> (o .:? "projectId")
-                     <*> (o .:? "monitoringService"))
-
-instance ToJSON SetMonitoringServiceRequest where
-        toJSON SetMonitoringServiceRequest'{..}
-          = object
-              (catMaybes
-                 [("zone" .=) <$> _smsrZone,
-                  ("name" .=) <$> _smsrName,
-                  ("clusterId" .=) <$> _smsrClusterId,
-                  ("projectId" .=) <$> _smsrProjectId,
-                  ("monitoringService" .=) <$> _smsrMonitoringService])
-
--- | SetLoggingServiceRequest sets the logging service of a cluster.
---
--- /See:/ 'setLoggingServiceRequest' smart constructor.
-data SetLoggingServiceRequest = SetLoggingServiceRequest'
-    { _slsrZone           :: !(Maybe Text)
-    , _slsrName           :: !(Maybe Text)
-    , _slsrClusterId      :: !(Maybe Text)
-    , _slsrProjectId      :: !(Maybe Text)
-    , _slsrLoggingService :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SetLoggingServiceRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'slsrZone'
---
--- * 'slsrName'
---
--- * 'slsrClusterId'
---
--- * 'slsrProjectId'
---
--- * 'slsrLoggingService'
-setLoggingServiceRequest
-    :: SetLoggingServiceRequest
-setLoggingServiceRequest =
-    SetLoggingServiceRequest'
-    { _slsrZone = Nothing
-    , _slsrName = Nothing
-    , _slsrClusterId = Nothing
-    , _slsrProjectId = Nothing
-    , _slsrLoggingService = Nothing
-    }
-
--- | Deprecated. The name of the Google Compute Engine
--- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
--- This field has been deprecated and replaced by the name field.
-slsrZone :: Lens' SetLoggingServiceRequest (Maybe Text)
-slsrZone = lens _slsrZone (\ s a -> s{_slsrZone = a})
-
--- | The name (project, location, cluster) of the cluster to set logging.
--- Specified in the format \'projects\/*\/locations\/*\/clusters\/*\'.
-slsrName :: Lens' SetLoggingServiceRequest (Maybe Text)
-slsrName = lens _slsrName (\ s a -> s{_slsrName = a})
-
--- | Deprecated. The name of the cluster to upgrade. This field has been
--- deprecated and replaced by the name field.
-slsrClusterId :: Lens' SetLoggingServiceRequest (Maybe Text)
-slsrClusterId
-  = lens _slsrClusterId
-      (\ s a -> s{_slsrClusterId = a})
-
--- | Deprecated. The Google Developers Console [project ID or project
--- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
--- field has been deprecated and replaced by the name field.
-slsrProjectId :: Lens' SetLoggingServiceRequest (Maybe Text)
-slsrProjectId
-  = lens _slsrProjectId
-      (\ s a -> s{_slsrProjectId = a})
-
--- | The logging service the cluster should use to write metrics. Currently
--- available options: * \"logging.googleapis.com\" - the Google Cloud
--- Logging service * \"none\" - no metrics will be exported from the
--- cluster
-slsrLoggingService :: Lens' SetLoggingServiceRequest (Maybe Text)
-slsrLoggingService
-  = lens _slsrLoggingService
-      (\ s a -> s{_slsrLoggingService = a})
-
-instance FromJSON SetLoggingServiceRequest where
-        parseJSON
-          = withObject "SetLoggingServiceRequest"
-              (\ o ->
-                 SetLoggingServiceRequest' <$>
-                   (o .:? "zone") <*> (o .:? "name") <*>
-                     (o .:? "clusterId")
-                     <*> (o .:? "projectId")
-                     <*> (o .:? "loggingService"))
-
-instance ToJSON SetLoggingServiceRequest where
-        toJSON SetLoggingServiceRequest'{..}
-          = object
-              (catMaybes
-                 [("zone" .=) <$> _slsrZone,
-                  ("name" .=) <$> _slsrName,
-                  ("clusterId" .=) <$> _slsrClusterId,
-                  ("projectId" .=) <$> _slsrProjectId,
-                  ("loggingService" .=) <$> _slsrLoggingService])
-
--- | MaintenancePolicy defines the maintenance policy to be used for the
--- cluster.
---
--- /See:/ 'maintenancePolicy' smart constructor.
-newtype MaintenancePolicy = MaintenancePolicy'
-    { _mpWindow :: Maybe MaintenanceWindow
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'MaintenancePolicy' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mpWindow'
-maintenancePolicy
-    :: MaintenancePolicy
-maintenancePolicy =
-    MaintenancePolicy'
-    { _mpWindow = Nothing
-    }
-
--- | Specifies the maintenance window in which maintenance may be performed.
-mpWindow :: Lens' MaintenancePolicy (Maybe MaintenanceWindow)
-mpWindow = lens _mpWindow (\ s a -> s{_mpWindow = a})
-
-instance FromJSON MaintenancePolicy where
-        parseJSON
-          = withObject "MaintenancePolicy"
-              (\ o -> MaintenancePolicy' <$> (o .:? "window"))
-
-instance ToJSON MaintenancePolicy where
-        toJSON MaintenancePolicy'{..}
-          = object (catMaybes [("window" .=) <$> _mpWindow])
-
--- | CidrBlock contains an optional name and one CIDR block.
---
--- /See:/ 'cIdRBlock' smart constructor.
-data CIdRBlock = CIdRBlock'
-    { _cirbCIdRBlock   :: !(Maybe Text)
-    , _cirbDisplayName :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'CIdRBlock' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cirbCIdRBlock'
---
--- * 'cirbDisplayName'
-cIdRBlock
-    :: CIdRBlock
-cIdRBlock =
-    CIdRBlock'
-    { _cirbCIdRBlock = Nothing
-    , _cirbDisplayName = Nothing
-    }
-
--- | cidr_block must be specified in CIDR notation.
-cirbCIdRBlock :: Lens' CIdRBlock (Maybe Text)
-cirbCIdRBlock
-  = lens _cirbCIdRBlock
-      (\ s a -> s{_cirbCIdRBlock = a})
-
--- | display_name is an optional field for users to identify CIDR blocks.
-cirbDisplayName :: Lens' CIdRBlock (Maybe Text)
-cirbDisplayName
-  = lens _cirbDisplayName
-      (\ s a -> s{_cirbDisplayName = a})
-
-instance FromJSON CIdRBlock where
-        parseJSON
-          = withObject "CIdRBlock"
-              (\ o ->
-                 CIdRBlock' <$>
-                   (o .:? "cidrBlock") <*> (o .:? "displayName"))
-
-instance ToJSON CIdRBlock where
-        toJSON CIdRBlock'{..}
-          = object
-              (catMaybes
-                 [("cidrBlock" .=) <$> _cirbCIdRBlock,
-                  ("displayName" .=) <$> _cirbDisplayName])
-
--- | AcceleratorConfig represents a Hardware Accelerator request.
---
--- /See:/ 'acceleratorConfig' smart constructor.
-data AcceleratorConfig = AcceleratorConfig'
-    { _acAcceleratorCount :: !(Maybe (Textual Int64))
-    , _acAcceleratorType  :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AcceleratorConfig' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'acAcceleratorCount'
---
--- * 'acAcceleratorType'
-acceleratorConfig
-    :: AcceleratorConfig
-acceleratorConfig =
-    AcceleratorConfig'
-    { _acAcceleratorCount = Nothing
-    , _acAcceleratorType = Nothing
-    }
-
--- | The number of the accelerator cards exposed to an instance.
-acAcceleratorCount :: Lens' AcceleratorConfig (Maybe Int64)
-acAcceleratorCount
-  = lens _acAcceleratorCount
-      (\ s a -> s{_acAcceleratorCount = a})
-      . mapping _Coerce
-
--- | The accelerator type resource name. List of supported accelerators
--- [here](\/compute\/docs\/gpus\/#Introduction)
-acAcceleratorType :: Lens' AcceleratorConfig (Maybe Text)
-acAcceleratorType
-  = lens _acAcceleratorType
-      (\ s a -> s{_acAcceleratorType = a})
-
-instance FromJSON AcceleratorConfig where
-        parseJSON
-          = withObject "AcceleratorConfig"
-              (\ o ->
-                 AcceleratorConfig' <$>
-                   (o .:? "acceleratorCount") <*>
-                     (o .:? "acceleratorType"))
-
-instance ToJSON AcceleratorConfig where
-        toJSON AcceleratorConfig'{..}
-          = object
-              (catMaybes
-                 [("acceleratorCount" .=) <$> _acAcceleratorCount,
-                  ("acceleratorType" .=) <$> _acAcceleratorType])
-
--- | SetLocationsRequest sets the locations of the cluster.
---
--- /See:/ 'setLocationsRequest' smart constructor.
-data SetLocationsRequest = SetLocationsRequest'
-    { _sZone      :: !(Maybe Text)
-    , _sName      :: !(Maybe Text)
-    , _sClusterId :: !(Maybe Text)
-    , _sProjectId :: !(Maybe Text)
-    , _sLocations :: !(Maybe [Text])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SetLocationsRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sZone'
---
--- * 'sName'
---
--- * 'sClusterId'
---
--- * 'sProjectId'
---
--- * 'sLocations'
-setLocationsRequest
-    :: SetLocationsRequest
-setLocationsRequest =
-    SetLocationsRequest'
-    { _sZone = Nothing
-    , _sName = Nothing
-    , _sClusterId = Nothing
-    , _sProjectId = Nothing
-    , _sLocations = Nothing
-    }
-
--- | Deprecated. The name of the Google Compute Engine
--- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
--- This field has been deprecated and replaced by the name field.
-sZone :: Lens' SetLocationsRequest (Maybe Text)
-sZone = lens _sZone (\ s a -> s{_sZone = a})
-
--- | The name (project, location, cluster) of the cluster to set locations.
--- Specified in the format \'projects\/*\/locations\/*\/clusters\/*\'.
-sName :: Lens' SetLocationsRequest (Maybe Text)
-sName = lens _sName (\ s a -> s{_sName = a})
-
--- | Deprecated. The name of the cluster to upgrade. This field has been
--- deprecated and replaced by the name field.
-sClusterId :: Lens' SetLocationsRequest (Maybe Text)
-sClusterId
-  = lens _sClusterId (\ s a -> s{_sClusterId = a})
-
--- | Deprecated. The Google Developers Console [project ID or project
--- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
--- field has been deprecated and replaced by the name field.
-sProjectId :: Lens' SetLocationsRequest (Maybe Text)
-sProjectId
-  = lens _sProjectId (\ s a -> s{_sProjectId = a})
-
--- | The desired list of Google Compute Engine
--- [zones](\/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.
-sLocations :: Lens' SetLocationsRequest [Text]
-sLocations
-  = lens _sLocations (\ s a -> s{_sLocations = a}) .
-      _Default
-      . _Coerce
-
-instance FromJSON SetLocationsRequest where
-        parseJSON
-          = withObject "SetLocationsRequest"
-              (\ o ->
-                 SetLocationsRequest' <$>
-                   (o .:? "zone") <*> (o .:? "name") <*>
-                     (o .:? "clusterId")
-                     <*> (o .:? "projectId")
-                     <*> (o .:? "locations" .!= mempty))
-
-instance ToJSON SetLocationsRequest where
-        toJSON SetLocationsRequest'{..}
-          = object
-              (catMaybes
-                 [("zone" .=) <$> _sZone, ("name" .=) <$> _sName,
-                  ("clusterId" .=) <$> _sClusterId,
-                  ("projectId" .=) <$> _sProjectId,
-                  ("locations" .=) <$> _sLocations])
-
--- | SetNetworkPolicyRequest enables\/disables network policy for a cluster.
---
--- /See:/ 'setNetworkPolicyRequest' smart constructor.
-data SetNetworkPolicyRequest = SetNetworkPolicyRequest'
-    { _snprZone          :: !(Maybe Text)
-    , _snprName          :: !(Maybe Text)
-    , _snprClusterId     :: !(Maybe Text)
-    , _snprProjectId     :: !(Maybe Text)
-    , _snprNetworkPolicy :: !(Maybe NetworkPolicy)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SetNetworkPolicyRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'snprZone'
---
--- * 'snprName'
---
--- * 'snprClusterId'
---
--- * 'snprProjectId'
---
--- * 'snprNetworkPolicy'
-setNetworkPolicyRequest
-    :: SetNetworkPolicyRequest
-setNetworkPolicyRequest =
-    SetNetworkPolicyRequest'
-    { _snprZone = Nothing
-    , _snprName = Nothing
-    , _snprClusterId = Nothing
-    , _snprProjectId = Nothing
-    , _snprNetworkPolicy = Nothing
-    }
-
--- | Deprecated. The name of the Google Compute Engine
--- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
--- This field has been deprecated and replaced by the name field.
-snprZone :: Lens' SetNetworkPolicyRequest (Maybe Text)
-snprZone = lens _snprZone (\ s a -> s{_snprZone = a})
-
--- | The name (project, location, cluster id) of the cluster to set
--- networking policy. Specified in the format
--- \'projects\/*\/locations\/*\/clusters\/*\'.
-snprName :: Lens' SetNetworkPolicyRequest (Maybe Text)
-snprName = lens _snprName (\ s a -> s{_snprName = a})
-
--- | Deprecated. The name of the cluster. This field has been deprecated and
--- replaced by the name field.
-snprClusterId :: Lens' SetNetworkPolicyRequest (Maybe Text)
-snprClusterId
-  = lens _snprClusterId
-      (\ s a -> s{_snprClusterId = a})
-
--- | Deprecated. The Google Developers Console [project ID or project
--- number](https:\/\/developers.google.com\/console\/help\/new\/#projectnumber).
--- This field has been deprecated and replaced by the name field.
-snprProjectId :: Lens' SetNetworkPolicyRequest (Maybe Text)
-snprProjectId
-  = lens _snprProjectId
-      (\ s a -> s{_snprProjectId = a})
-
--- | Configuration options for the NetworkPolicy feature.
-snprNetworkPolicy :: Lens' SetNetworkPolicyRequest (Maybe NetworkPolicy)
-snprNetworkPolicy
-  = lens _snprNetworkPolicy
-      (\ s a -> s{_snprNetworkPolicy = a})
-
-instance FromJSON SetNetworkPolicyRequest where
-        parseJSON
-          = withObject "SetNetworkPolicyRequest"
-              (\ o ->
-                 SetNetworkPolicyRequest' <$>
-                   (o .:? "zone") <*> (o .:? "name") <*>
-                     (o .:? "clusterId")
-                     <*> (o .:? "projectId")
-                     <*> (o .:? "networkPolicy"))
-
-instance ToJSON SetNetworkPolicyRequest where
-        toJSON SetNetworkPolicyRequest'{..}
-          = object
-              (catMaybes
-                 [("zone" .=) <$> _snprZone,
-                  ("name" .=) <$> _snprName,
-                  ("clusterId" .=) <$> _snprClusterId,
-                  ("projectId" .=) <$> _snprProjectId,
-                  ("networkPolicy" .=) <$> _snprNetworkPolicy])
-
--- | Configuration options for private clusters.
---
--- /See:/ 'privateClusterConfig' smart constructor.
-data PrivateClusterConfig = PrivateClusterConfig'
-    { _pccEnablePrivateNodes    :: !(Maybe Bool)
-    , _pccEnablePrivateEndpoint :: !(Maybe Bool)
-    , _pccPublicEndpoint        :: !(Maybe Text)
-    , _pccMasterIPv4CIdRBlock   :: !(Maybe Text)
-    , _pccPrivateEndpoint       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'PrivateClusterConfig' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pccEnablePrivateNodes'
---
--- * 'pccEnablePrivateEndpoint'
---
--- * 'pccPublicEndpoint'
---
--- * 'pccMasterIPv4CIdRBlock'
---
--- * 'pccPrivateEndpoint'
-privateClusterConfig
-    :: PrivateClusterConfig
-privateClusterConfig =
-    PrivateClusterConfig'
-    { _pccEnablePrivateNodes = Nothing
-    , _pccEnablePrivateEndpoint = Nothing
-    , _pccPublicEndpoint = Nothing
-    , _pccMasterIPv4CIdRBlock = Nothing
-    , _pccPrivateEndpoint = Nothing
-    }
-
--- | Whether nodes have internal IP addresses only. If enabled, all nodes are
--- given only RFC 1918 private addresses and communicate with the master
--- via private networking.
-pccEnablePrivateNodes :: Lens' PrivateClusterConfig (Maybe Bool)
-pccEnablePrivateNodes
-  = lens _pccEnablePrivateNodes
-      (\ s a -> s{_pccEnablePrivateNodes = a})
-
--- | Whether the master\'s internal IP address is used as the cluster
--- endpoint.
-pccEnablePrivateEndpoint :: Lens' PrivateClusterConfig (Maybe Bool)
-pccEnablePrivateEndpoint
-  = lens _pccEnablePrivateEndpoint
-      (\ s a -> s{_pccEnablePrivateEndpoint = a})
-
--- | Output only. The external IP address of this cluster\'s master endpoint.
-pccPublicEndpoint :: Lens' PrivateClusterConfig (Maybe Text)
-pccPublicEndpoint
-  = lens _pccPublicEndpoint
-      (\ s a -> s{_pccPublicEndpoint = a})
-
--- | The IP range in CIDR notation to use for the hosted master network. This
--- range will be used for assigning internal IP addresses to the master or
--- set of masters, as well as the ILB VIP. This range must not overlap with
--- any other ranges in use within the cluster\'s network.
-pccMasterIPv4CIdRBlock :: Lens' PrivateClusterConfig (Maybe Text)
-pccMasterIPv4CIdRBlock
-  = lens _pccMasterIPv4CIdRBlock
-      (\ s a -> s{_pccMasterIPv4CIdRBlock = a})
-
--- | Output only. The internal IP address of this cluster\'s master endpoint.
-pccPrivateEndpoint :: Lens' PrivateClusterConfig (Maybe Text)
-pccPrivateEndpoint
-  = lens _pccPrivateEndpoint
-      (\ s a -> s{_pccPrivateEndpoint = a})
-
-instance FromJSON PrivateClusterConfig where
-        parseJSON
-          = withObject "PrivateClusterConfig"
-              (\ o ->
-                 PrivateClusterConfig' <$>
-                   (o .:? "enablePrivateNodes") <*>
-                     (o .:? "enablePrivateEndpoint")
-                     <*> (o .:? "publicEndpoint")
-                     <*> (o .:? "masterIpv4CidrBlock")
-                     <*> (o .:? "privateEndpoint"))
-
-instance ToJSON PrivateClusterConfig where
-        toJSON PrivateClusterConfig'{..}
-          = object
-              (catMaybes
-                 [("enablePrivateNodes" .=) <$>
-                    _pccEnablePrivateNodes,
-                  ("enablePrivateEndpoint" .=) <$>
-                    _pccEnablePrivateEndpoint,
-                  ("publicEndpoint" .=) <$> _pccPublicEndpoint,
-                  ("masterIpv4CidrBlock" .=) <$>
-                    _pccMasterIPv4CIdRBlock,
-                  ("privateEndpoint" .=) <$> _pccPrivateEndpoint])
-
--- | Time window specified for daily maintenance operations.
---
--- /See:/ 'dailyMaintenanceWindow' smart constructor.
-data DailyMaintenanceWindow = DailyMaintenanceWindow'
-    { _dmwStartTime :: !(Maybe Text)
-    , _dmwDuration  :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'DailyMaintenanceWindow' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dmwStartTime'
---
--- * 'dmwDuration'
-dailyMaintenanceWindow
-    :: DailyMaintenanceWindow
-dailyMaintenanceWindow =
-    DailyMaintenanceWindow'
-    { _dmwStartTime = Nothing
-    , _dmwDuration = Nothing
-    }
-
--- | Time within the maintenance window to start the maintenance operations.
--- Time format should be in
--- [RFC3339](https:\/\/www.ietf.org\/rfc\/rfc3339.txt) format \"HH:MM”,
--- where HH : [00-23] and MM : [00-59] GMT.
-dmwStartTime :: Lens' DailyMaintenanceWindow (Maybe Text)
-dmwStartTime
-  = lens _dmwStartTime (\ s a -> s{_dmwStartTime = a})
-
--- | [Output only] Duration of the time window, automatically chosen to be
--- smallest possible in the given scenario. Duration will be in
--- [RFC3339](https:\/\/www.ietf.org\/rfc\/rfc3339.txt) format \"PTnHnMnS\".
-dmwDuration :: Lens' DailyMaintenanceWindow (Maybe Text)
-dmwDuration
-  = lens _dmwDuration (\ s a -> s{_dmwDuration = a})
-
-instance FromJSON DailyMaintenanceWindow where
-        parseJSON
-          = withObject "DailyMaintenanceWindow"
-              (\ o ->
-                 DailyMaintenanceWindow' <$>
-                   (o .:? "startTime") <*> (o .:? "duration"))
-
-instance ToJSON DailyMaintenanceWindow where
-        toJSON DailyMaintenanceWindow'{..}
-          = object
-              (catMaybes
-                 [("startTime" .=) <$> _dmwStartTime,
-                  ("duration" .=) <$> _dmwDuration])
-
--- | ListClustersResponse is the result of ListClustersRequest.
---
--- /See:/ 'listClustersResponse' smart constructor.
-data ListClustersResponse = ListClustersResponse'
-    { _lcrClusters     :: !(Maybe [Cluster])
-    , _lcrMissingZones :: !(Maybe [Text])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ListClustersResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lcrClusters'
---
--- * 'lcrMissingZones'
-listClustersResponse
-    :: ListClustersResponse
-listClustersResponse =
-    ListClustersResponse'
-    { _lcrClusters = Nothing
-    , _lcrMissingZones = Nothing
-    }
-
--- | A list of clusters in the project in the specified zone, or across all
--- ones.
-lcrClusters :: Lens' ListClustersResponse [Cluster]
-lcrClusters
-  = lens _lcrClusters (\ s a -> s{_lcrClusters = a}) .
-      _Default
-      . _Coerce
-
--- | If any zones are listed here, the list of clusters returned may be
--- missing those zones.
-lcrMissingZones :: Lens' ListClustersResponse [Text]
-lcrMissingZones
-  = lens _lcrMissingZones
-      (\ s a -> s{_lcrMissingZones = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON ListClustersResponse where
-        parseJSON
-          = withObject "ListClustersResponse"
-              (\ o ->
-                 ListClustersResponse' <$>
-                   (o .:? "clusters" .!= mempty) <*>
-                     (o .:? "missingZones" .!= mempty))
-
-instance ToJSON ListClustersResponse where
-        toJSON ListClustersResponse'{..}
-          = object
-              (catMaybes
-                 [("clusters" .=) <$> _lcrClusters,
-                  ("missingZones" .=) <$> _lcrMissingZones])
-
--- | ClusterUpdate describes an update to the cluster. Exactly one update can
--- be applied to a cluster with each request, so at most one field can be
--- provided.
---
--- /See:/ 'clusterUpdate' smart constructor.
-data ClusterUpdate = ClusterUpdate'
-    { _cuDesiredNodePoolAutoscaling            :: !(Maybe NodePoolAutoscaling)
-    , _cuDesiredAddonsConfig                   :: !(Maybe AddonsConfig)
-    , _cuDesiredNodePoolId                     :: !(Maybe Text)
-    , _cuDesiredMasterAuthorizedNetworksConfig :: !(Maybe MasterAuthorizedNetworksConfig)
-    , _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'
---
--- * 'cuDesiredMasterAuthorizedNetworksConfig'
---
--- * 'cuDesiredImageType'
---
--- * 'cuDesiredNodeVersion'
---
--- * 'cuDesiredMasterVersion'
---
--- * 'cuDesiredLocations'
---
--- * 'cuDesiredMonitoringService'
-clusterUpdate
-    :: ClusterUpdate
-clusterUpdate =
-    ClusterUpdate'
-    { _cuDesiredNodePoolAutoscaling = Nothing
-    , _cuDesiredAddonsConfig = Nothing
-    , _cuDesiredNodePoolId = Nothing
-    , _cuDesiredMasterAuthorizedNetworksConfig = 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
--- \"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 configuration options for master authorized networks
--- feature.
-cuDesiredMasterAuthorizedNetworksConfig :: Lens' ClusterUpdate (Maybe MasterAuthorizedNetworksConfig)
-cuDesiredMasterAuthorizedNetworksConfig
-  = lens _cuDesiredMasterAuthorizedNetworksConfig
-      (\ s a ->
-         s{_cuDesiredMasterAuthorizedNetworksConfig = 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).
--- Users may specify either explicit versions offered by Kubernetes Engine
--- or version aliases, which have the following behavior: - \"latest\":
--- picks the highest valid Kubernetes version - \"1.X\": picks the highest
--- valid patch+gke.N patch in the 1.X version - \"1.X.Y\": picks the
--- highest valid gke.N patch in the 1.X.Y version - \"1.X.Y-gke.N\": picks
--- an explicit Kubernetes version - \"-\": picks the Kubernetes master
--- version
-cuDesiredNodeVersion :: Lens' ClusterUpdate (Maybe Text)
-cuDesiredNodeVersion
-  = lens _cuDesiredNodeVersion
-      (\ s a -> s{_cuDesiredNodeVersion = a})
-
--- | The Kubernetes version to change the master to. Users may specify either
--- explicit versions offered by Kubernetes Engine or version aliases, which
--- have the following behavior: - \"latest\": picks the highest valid
--- Kubernetes version - \"1.X\": picks the highest valid patch+gke.N patch
--- in the 1.X version - \"1.X.Y\": picks the highest valid gke.N patch in
--- the 1.X.Y version - \"1.X.Y-gke.N\": picks an explicit Kubernetes
--- version - \"-\": picks the default Kubernetes version
-cuDesiredMasterVersion :: Lens' ClusterUpdate (Maybe Text)
-cuDesiredMasterVersion
-  = lens _cuDesiredMasterVersion
-      (\ s a -> s{_cuDesiredMasterVersion = a})
-
--- | The desired list of Google Compute Engine
--- [zones](\/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
--- from the cluster
-cuDesiredMonitoringService :: Lens' ClusterUpdate (Maybe Text)
-cuDesiredMonitoringService
-  = lens _cuDesiredMonitoringService
-      (\ s a -> s{_cuDesiredMonitoringService = a})
-
-instance FromJSON ClusterUpdate where
-        parseJSON
-          = withObject "ClusterUpdate"
-              (\ o ->
-                 ClusterUpdate' <$>
-                   (o .:? "desiredNodePoolAutoscaling") <*>
-                     (o .:? "desiredAddonsConfig")
-                     <*> (o .:? "desiredNodePoolId")
-                     <*> (o .:? "desiredMasterAuthorizedNetworksConfig")
-                     <*> (o .:? "desiredImageType")
-                     <*> (o .:? "desiredNodeVersion")
-                     <*> (o .:? "desiredMasterVersion")
-                     <*> (o .:? "desiredLocations" .!= mempty)
-                     <*> (o .:? "desiredMonitoringService"))
-
-instance ToJSON ClusterUpdate where
-        toJSON ClusterUpdate'{..}
-          = object
-              (catMaybes
-                 [("desiredNodePoolAutoscaling" .=) <$>
-                    _cuDesiredNodePoolAutoscaling,
-                  ("desiredAddonsConfig" .=) <$>
-                    _cuDesiredAddonsConfig,
-                  ("desiredNodePoolId" .=) <$> _cuDesiredNodePoolId,
-                  ("desiredMasterAuthorizedNetworksConfig" .=) <$>
-                    _cuDesiredMasterAuthorizedNetworksConfig,
-                  ("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'
-    { _rnpurZone       :: !(Maybe Text)
-    , _rnpurNodePoolId :: !(Maybe Text)
-    , _rnpurName       :: !(Maybe Text)
-    , _rnpurClusterId  :: !(Maybe Text)
-    , _rnpurProjectId  :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'RollbackNodePoolUpgradeRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rnpurZone'
---
--- * 'rnpurNodePoolId'
---
--- * 'rnpurName'
---
--- * 'rnpurClusterId'
---
--- * 'rnpurProjectId'
-rollbackNodePoolUpgradeRequest
-    :: RollbackNodePoolUpgradeRequest
-rollbackNodePoolUpgradeRequest =
-    RollbackNodePoolUpgradeRequest'
-    { _rnpurZone = Nothing
-    , _rnpurNodePoolId = Nothing
-    , _rnpurName = Nothing
-    , _rnpurClusterId = Nothing
-    , _rnpurProjectId = Nothing
-    }
-
--- | Deprecated. The name of the Google Compute Engine
--- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
--- This field has been deprecated and replaced by the name field.
-rnpurZone :: Lens' RollbackNodePoolUpgradeRequest (Maybe Text)
-rnpurZone
-  = lens _rnpurZone (\ s a -> s{_rnpurZone = a})
-
--- | Deprecated. The name of the node pool to rollback. This field has been
--- deprecated and replaced by the name field.
-rnpurNodePoolId :: Lens' RollbackNodePoolUpgradeRequest (Maybe Text)
-rnpurNodePoolId
-  = lens _rnpurNodePoolId
-      (\ s a -> s{_rnpurNodePoolId = a})
-
--- | The name (project, location, cluster, node pool id) of the node poll to
--- rollback upgrade. Specified in the format
--- \'projects\/*\/locations\/*\/clusters\/*\/nodePools\/*\'.
-rnpurName :: Lens' RollbackNodePoolUpgradeRequest (Maybe Text)
-rnpurName
-  = lens _rnpurName (\ s a -> s{_rnpurName = a})
-
--- | Deprecated. The name of the cluster to rollback. This field has been
--- deprecated and replaced by the name field.
-rnpurClusterId :: Lens' RollbackNodePoolUpgradeRequest (Maybe Text)
-rnpurClusterId
-  = lens _rnpurClusterId
-      (\ s a -> s{_rnpurClusterId = a})
-
--- | Deprecated. The Google Developers Console [project ID or project
--- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
--- field has been deprecated and replaced by the name field.
-rnpurProjectId :: Lens' RollbackNodePoolUpgradeRequest (Maybe Text)
-rnpurProjectId
-  = lens _rnpurProjectId
-      (\ s a -> s{_rnpurProjectId = a})
-
-instance FromJSON RollbackNodePoolUpgradeRequest
-         where
-        parseJSON
-          = withObject "RollbackNodePoolUpgradeRequest"
-              (\ o ->
-                 RollbackNodePoolUpgradeRequest' <$>
-                   (o .:? "zone") <*> (o .:? "nodePoolId") <*>
-                     (o .:? "name")
-                     <*> (o .:? "clusterId")
-                     <*> (o .:? "projectId"))
-
-instance ToJSON RollbackNodePoolUpgradeRequest where
-        toJSON RollbackNodePoolUpgradeRequest'{..}
-          = object
-              (catMaybes
-                 [("zone" .=) <$> _rnpurZone,
-                  ("nodePoolId" .=) <$> _rnpurNodePoolId,
-                  ("name" .=) <$> _rnpurName,
-                  ("clusterId" .=) <$> _rnpurClusterId,
-                  ("projectId" .=) <$> _rnpurProjectId])
-
--- | Configuration options for the NetworkPolicy feature.
--- https:\/\/kubernetes.io\/docs\/concepts\/services-networking\/networkpolicies\/
---
--- /See:/ 'networkPolicy' smart constructor.
-data NetworkPolicy = NetworkPolicy'
-    { _npEnabled  :: !(Maybe Bool)
-    , _npProvider :: !(Maybe NetworkPolicyProvider)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'NetworkPolicy' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'npEnabled'
---
--- * 'npProvider'
-networkPolicy
-    :: NetworkPolicy
-networkPolicy =
-    NetworkPolicy'
-    { _npEnabled = Nothing
-    , _npProvider = Nothing
-    }
-
--- | Whether network policy is enabled on the cluster.
-npEnabled :: Lens' NetworkPolicy (Maybe Bool)
-npEnabled
-  = lens _npEnabled (\ s a -> s{_npEnabled = a})
-
--- | The selected network policy provider.
-npProvider :: Lens' NetworkPolicy (Maybe NetworkPolicyProvider)
-npProvider
-  = lens _npProvider (\ s a -> s{_npProvider = a})
-
-instance FromJSON NetworkPolicy where
-        parseJSON
-          = withObject "NetworkPolicy"
-              (\ o ->
-                 NetworkPolicy' <$>
-                   (o .:? "enabled") <*> (o .:? "provider"))
-
-instance ToJSON NetworkPolicy where
-        toJSON NetworkPolicy'{..}
-          = object
-              (catMaybes
-                 [("enabled" .=) <$> _npEnabled,
-                  ("provider" .=) <$> _npProvider])
-
--- | ListNodePoolsResponse is the result of ListNodePoolsRequest.
---
--- /See:/ 'listNodePoolsResponse' smart constructor.
-newtype ListNodePoolsResponse = ListNodePoolsResponse'
-    { _lnprNodePools :: Maybe [NodePool]
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ListNodePoolsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lnprNodePools'
-listNodePoolsResponse
-    :: ListNodePoolsResponse
-listNodePoolsResponse =
-    ListNodePoolsResponse'
-    { _lnprNodePools = Nothing
-    }
-
--- | A list of node pools for a cluster.
-lnprNodePools :: Lens' ListNodePoolsResponse [NodePool]
-lnprNodePools
-  = lens _lnprNodePools
-      (\ s a -> s{_lnprNodePools = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON ListNodePoolsResponse where
-        parseJSON
-          = withObject "ListNodePoolsResponse"
-              (\ o ->
-                 ListNodePoolsResponse' <$>
-                   (o .:? "nodePools" .!= mempty))
-
-instance ToJSON ListNodePoolsResponse where
-        toJSON ListNodePoolsResponse'{..}
-          = object
-              (catMaybes [("nodePools" .=) <$> _lnprNodePools])
-
--- | CreateNodePoolRequest creates a node pool for a cluster.
---
--- /See:/ 'createNodePoolRequest' smart constructor.
-data CreateNodePoolRequest = CreateNodePoolRequest'
-    { _cnprParent    :: !(Maybe Text)
-    , _cnprZone      :: !(Maybe Text)
-    , _cnprNodePool  :: !(Maybe NodePool)
-    , _cnprClusterId :: !(Maybe Text)
-    , _cnprProjectId :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'CreateNodePoolRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cnprParent'
---
--- * 'cnprZone'
---
--- * 'cnprNodePool'
---
--- * 'cnprClusterId'
---
--- * 'cnprProjectId'
-createNodePoolRequest
-    :: CreateNodePoolRequest
-createNodePoolRequest =
-    CreateNodePoolRequest'
-    { _cnprParent = Nothing
-    , _cnprZone = Nothing
-    , _cnprNodePool = Nothing
-    , _cnprClusterId = Nothing
-    , _cnprProjectId = Nothing
-    }
-
--- | The parent (project, location, cluster id) where the node pool will be
--- created. Specified in the format
--- \'projects\/*\/locations\/*\/clusters\/*\'.
-cnprParent :: Lens' CreateNodePoolRequest (Maybe Text)
-cnprParent
-  = lens _cnprParent (\ s a -> s{_cnprParent = a})
-
--- | Deprecated. The name of the Google Compute Engine
--- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
--- This field has been deprecated and replaced by the parent field.
-cnprZone :: Lens' CreateNodePoolRequest (Maybe Text)
-cnprZone = lens _cnprZone (\ s a -> s{_cnprZone = a})
-
--- | The node pool to create.
-cnprNodePool :: Lens' CreateNodePoolRequest (Maybe NodePool)
-cnprNodePool
-  = lens _cnprNodePool (\ s a -> s{_cnprNodePool = a})
-
--- | Deprecated. The name of the cluster. This field has been deprecated and
--- replaced by the parent field.
-cnprClusterId :: Lens' CreateNodePoolRequest (Maybe Text)
-cnprClusterId
-  = lens _cnprClusterId
-      (\ s a -> s{_cnprClusterId = a})
-
--- | Deprecated. The Google Developers Console [project ID or project
--- number](https:\/\/developers.google.com\/console\/help\/new\/#projectnumber).
--- This field has been deprecated and replaced by the parent field.
-cnprProjectId :: Lens' CreateNodePoolRequest (Maybe Text)
-cnprProjectId
-  = lens _cnprProjectId
-      (\ s a -> s{_cnprProjectId = a})
-
-instance FromJSON CreateNodePoolRequest where
-        parseJSON
-          = withObject "CreateNodePoolRequest"
-              (\ o ->
-                 CreateNodePoolRequest' <$>
-                   (o .:? "parent") <*> (o .:? "zone") <*>
-                     (o .:? "nodePool")
-                     <*> (o .:? "clusterId")
-                     <*> (o .:? "projectId"))
-
-instance ToJSON CreateNodePoolRequest where
-        toJSON CreateNodePoolRequest'{..}
-          = object
-              (catMaybes
-                 [("parent" .=) <$> _cnprParent,
-                  ("zone" .=) <$> _cnprZone,
-                  ("nodePool" .=) <$> _cnprNodePool,
-                  ("clusterId" .=) <$> _cnprClusterId,
-                  ("projectId" .=) <$> _cnprProjectId])
-
--- | The labels to set for that cluster.
---
--- /See:/ 'setLabelsRequestResourceLabels' smart constructor.
-newtype SetLabelsRequestResourceLabels = SetLabelsRequestResourceLabels'
-    { _slrrlAddtional :: HashMap Text Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SetLabelsRequestResourceLabels' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'slrrlAddtional'
-setLabelsRequestResourceLabels
-    :: HashMap Text Text -- ^ 'slrrlAddtional'
-    -> SetLabelsRequestResourceLabels
-setLabelsRequestResourceLabels pSlrrlAddtional_ =
-    SetLabelsRequestResourceLabels'
-    { _slrrlAddtional = _Coerce # pSlrrlAddtional_
-    }
+newtype NetworkPolicyConfig =
+  NetworkPolicyConfig'
+    { _npcDisabled :: Maybe Bool
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'NetworkPolicyConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'npcDisabled'
+networkPolicyConfig
+    :: NetworkPolicyConfig
+networkPolicyConfig = NetworkPolicyConfig' {_npcDisabled = Nothing}
+
+
+-- | Whether NetworkPolicy is enabled for this cluster.
+npcDisabled :: Lens' NetworkPolicyConfig (Maybe Bool)
+npcDisabled
+  = lens _npcDisabled (\ s a -> s{_npcDisabled = a})
+
+instance FromJSON NetworkPolicyConfig where
+        parseJSON
+          = withObject "NetworkPolicyConfig"
+              (\ o -> NetworkPolicyConfig' <$> (o .:? "disabled"))
+
+instance ToJSON NetworkPolicyConfig where
+        toJSON NetworkPolicyConfig'{..}
+          = object
+              (catMaybes [("disabled" .=) <$> _npcDisabled])
+
+-- | ListUsableSubnetworksResponse is the response of
+-- ListUsableSubnetworksRequest.
+--
+-- /See:/ 'listUsableSubnetworksResponse' smart constructor.
+data ListUsableSubnetworksResponse =
+  ListUsableSubnetworksResponse'
+    { _lusrNextPageToken :: !(Maybe Text)
+    , _lusrSubnetworks   :: !(Maybe [UsableSubnetwork])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ListUsableSubnetworksResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lusrNextPageToken'
+--
+-- * 'lusrSubnetworks'
+listUsableSubnetworksResponse
+    :: ListUsableSubnetworksResponse
+listUsableSubnetworksResponse =
+  ListUsableSubnetworksResponse'
+    {_lusrNextPageToken = Nothing, _lusrSubnetworks = Nothing}
+
+
+-- | This token allows you to get the next page of results for list requests.
+-- If the number of results is larger than \`page_size\`, use the
+-- \`next_page_token\` as a value for the query parameter \`page_token\` in
+-- the next request. The value will become empty when there are no more
+-- pages.
+lusrNextPageToken :: Lens' ListUsableSubnetworksResponse (Maybe Text)
+lusrNextPageToken
+  = lens _lusrNextPageToken
+      (\ s a -> s{_lusrNextPageToken = a})
+
+-- | A list of usable subnetworks in the specified network project.
+lusrSubnetworks :: Lens' ListUsableSubnetworksResponse [UsableSubnetwork]
+lusrSubnetworks
+  = lens _lusrSubnetworks
+      (\ s a -> s{_lusrSubnetworks = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON ListUsableSubnetworksResponse where
+        parseJSON
+          = withObject "ListUsableSubnetworksResponse"
+              (\ o ->
+                 ListUsableSubnetworksResponse' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "subnetworks" .!= mempty))
+
+instance ToJSON ListUsableSubnetworksResponse where
+        toJSON ListUsableSubnetworksResponse'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _lusrNextPageToken,
+                  ("subnetworks" .=) <$> _lusrSubnetworks])
+
+-- | UpdateNodePoolRequests update a node pool\'s image and\/or version.
+--
+-- /See:/ 'updateNodePoolRequest' smart constructor.
+data UpdateNodePoolRequest =
+  UpdateNodePoolRequest'
+    { _unprZone        :: !(Maybe Text)
+    , _unprNodePoolId  :: !(Maybe Text)
+    , _unprImageType   :: !(Maybe Text)
+    , _unprName        :: !(Maybe Text)
+    , _unprClusterId   :: !(Maybe Text)
+    , _unprNodeVersion :: !(Maybe Text)
+    , _unprProjectId   :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'UpdateNodePoolRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'unprZone'
+--
+-- * 'unprNodePoolId'
+--
+-- * 'unprImageType'
+--
+-- * 'unprName'
+--
+-- * 'unprClusterId'
+--
+-- * 'unprNodeVersion'
+--
+-- * 'unprProjectId'
+updateNodePoolRequest
+    :: UpdateNodePoolRequest
+updateNodePoolRequest =
+  UpdateNodePoolRequest'
+    { _unprZone = Nothing
+    , _unprNodePoolId = Nothing
+    , _unprImageType = Nothing
+    , _unprName = Nothing
+    , _unprClusterId = Nothing
+    , _unprNodeVersion = Nothing
+    , _unprProjectId = Nothing
+    }
+
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
+unprZone :: Lens' UpdateNodePoolRequest (Maybe Text)
+unprZone = lens _unprZone (\ s a -> s{_unprZone = a})
+
+-- | Deprecated. The name of the node pool to upgrade. This field has been
+-- deprecated and replaced by the name field.
+unprNodePoolId :: Lens' UpdateNodePoolRequest (Maybe Text)
+unprNodePoolId
+  = lens _unprNodePoolId
+      (\ s a -> s{_unprNodePoolId = a})
+
+-- | The desired image type for the node pool.
+unprImageType :: Lens' UpdateNodePoolRequest (Maybe Text)
+unprImageType
+  = lens _unprImageType
+      (\ s a -> s{_unprImageType = a})
+
+-- | The name (project, location, cluster, node pool) of the node pool to
+-- update. Specified in the format
+-- \'projects\/*\/locations\/*\/clusters\/*\/nodePools\/*\'.
+unprName :: Lens' UpdateNodePoolRequest (Maybe Text)
+unprName = lens _unprName (\ s a -> s{_unprName = a})
+
+-- | Deprecated. The name of the cluster to upgrade. This field has been
+-- deprecated and replaced by the name field.
+unprClusterId :: Lens' UpdateNodePoolRequest (Maybe Text)
+unprClusterId
+  = lens _unprClusterId
+      (\ s a -> s{_unprClusterId = a})
+
+-- | The Kubernetes version to change the nodes to (typically an upgrade).
+-- Users may specify either explicit versions offered by Kubernetes Engine
+-- or version aliases, which have the following behavior: - \"latest\":
+-- picks the highest valid Kubernetes version - \"1.X\": picks the highest
+-- valid patch+gke.N patch in the 1.X version - \"1.X.Y\": picks the
+-- highest valid gke.N patch in the 1.X.Y version - \"1.X.Y-gke.N\": picks
+-- an explicit Kubernetes version - \"-\": picks the Kubernetes master
+-- version
+unprNodeVersion :: Lens' UpdateNodePoolRequest (Maybe Text)
+unprNodeVersion
+  = lens _unprNodeVersion
+      (\ s a -> s{_unprNodeVersion = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
+-- field has been deprecated and replaced by the name field.
+unprProjectId :: Lens' UpdateNodePoolRequest (Maybe Text)
+unprProjectId
+  = lens _unprProjectId
+      (\ s a -> s{_unprProjectId = a})
+
+instance FromJSON UpdateNodePoolRequest where
+        parseJSON
+          = withObject "UpdateNodePoolRequest"
+              (\ o ->
+                 UpdateNodePoolRequest' <$>
+                   (o .:? "zone") <*> (o .:? "nodePoolId") <*>
+                     (o .:? "imageType")
+                     <*> (o .:? "name")
+                     <*> (o .:? "clusterId")
+                     <*> (o .:? "nodeVersion")
+                     <*> (o .:? "projectId"))
+
+instance ToJSON UpdateNodePoolRequest where
+        toJSON UpdateNodePoolRequest'{..}
+          = object
+              (catMaybes
+                 [("zone" .=) <$> _unprZone,
+                  ("nodePoolId" .=) <$> _unprNodePoolId,
+                  ("imageType" .=) <$> _unprImageType,
+                  ("name" .=) <$> _unprName,
+                  ("clusterId" .=) <$> _unprClusterId,
+                  ("nodeVersion" .=) <$> _unprNodeVersion,
+                  ("projectId" .=) <$> _unprProjectId])
+
+-- | UpdateMasterRequest updates the master of the cluster.
+--
+-- /See:/ 'updateMasterRequest' smart constructor.
+data UpdateMasterRequest =
+  UpdateMasterRequest'
+    { _umrZone          :: !(Maybe Text)
+    , _umrName          :: !(Maybe Text)
+    , _umrClusterId     :: !(Maybe Text)
+    , _umrProjectId     :: !(Maybe Text)
+    , _umrMasterVersion :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'UpdateMasterRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'umrZone'
+--
+-- * 'umrName'
+--
+-- * 'umrClusterId'
+--
+-- * 'umrProjectId'
+--
+-- * 'umrMasterVersion'
+updateMasterRequest
+    :: UpdateMasterRequest
+updateMasterRequest =
+  UpdateMasterRequest'
+    { _umrZone = Nothing
+    , _umrName = Nothing
+    , _umrClusterId = Nothing
+    , _umrProjectId = Nothing
+    , _umrMasterVersion = Nothing
+    }
+
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
+umrZone :: Lens' UpdateMasterRequest (Maybe Text)
+umrZone = lens _umrZone (\ s a -> s{_umrZone = a})
+
+-- | The name (project, location, cluster) of the cluster to update.
+-- Specified in the format \'projects\/*\/locations\/*\/clusters\/*\'.
+umrName :: Lens' UpdateMasterRequest (Maybe Text)
+umrName = lens _umrName (\ s a -> s{_umrName = a})
+
+-- | Deprecated. The name of the cluster to upgrade. This field has been
+-- deprecated and replaced by the name field.
+umrClusterId :: Lens' UpdateMasterRequest (Maybe Text)
+umrClusterId
+  = lens _umrClusterId (\ s a -> s{_umrClusterId = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
+-- field has been deprecated and replaced by the name field.
+umrProjectId :: Lens' UpdateMasterRequest (Maybe Text)
+umrProjectId
+  = lens _umrProjectId (\ s a -> s{_umrProjectId = a})
+
+-- | The Kubernetes version to change the master to. Users may specify either
+-- explicit versions offered by Kubernetes Engine or version aliases, which
+-- have the following behavior: - \"latest\": picks the highest valid
+-- Kubernetes version - \"1.X\": picks the highest valid patch+gke.N patch
+-- in the 1.X version - \"1.X.Y\": picks the highest valid gke.N patch in
+-- the 1.X.Y version - \"1.X.Y-gke.N\": picks an explicit Kubernetes
+-- version - \"-\": picks the default Kubernetes version
+umrMasterVersion :: Lens' UpdateMasterRequest (Maybe Text)
+umrMasterVersion
+  = lens _umrMasterVersion
+      (\ s a -> s{_umrMasterVersion = a})
+
+instance FromJSON UpdateMasterRequest where
+        parseJSON
+          = withObject "UpdateMasterRequest"
+              (\ o ->
+                 UpdateMasterRequest' <$>
+                   (o .:? "zone") <*> (o .:? "name") <*>
+                     (o .:? "clusterId")
+                     <*> (o .:? "projectId")
+                     <*> (o .:? "masterVersion"))
+
+instance ToJSON UpdateMasterRequest where
+        toJSON UpdateMasterRequest'{..}
+          = object
+              (catMaybes
+                 [("zone" .=) <$> _umrZone, ("name" .=) <$> _umrName,
+                  ("clusterId" .=) <$> _umrClusterId,
+                  ("projectId" .=) <$> _umrProjectId,
+                  ("masterVersion" .=) <$> _umrMasterVersion])
+
+-- | StartIPRotationRequest creates a new IP for the cluster and then
+-- performs a node upgrade on each node pool to point to the new IP.
+--
+-- /See:/ 'startIPRotationRequest' smart constructor.
+data StartIPRotationRequest =
+  StartIPRotationRequest'
+    { _sirrZone              :: !(Maybe Text)
+    , _sirrRotateCredentials :: !(Maybe Bool)
+    , _sirrName              :: !(Maybe Text)
+    , _sirrClusterId         :: !(Maybe Text)
+    , _sirrProjectId         :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'StartIPRotationRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sirrZone'
+--
+-- * 'sirrRotateCredentials'
+--
+-- * 'sirrName'
+--
+-- * 'sirrClusterId'
+--
+-- * 'sirrProjectId'
+startIPRotationRequest
+    :: StartIPRotationRequest
+startIPRotationRequest =
+  StartIPRotationRequest'
+    { _sirrZone = Nothing
+    , _sirrRotateCredentials = Nothing
+    , _sirrName = Nothing
+    , _sirrClusterId = Nothing
+    , _sirrProjectId = Nothing
+    }
+
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
+sirrZone :: Lens' StartIPRotationRequest (Maybe Text)
+sirrZone = lens _sirrZone (\ s a -> s{_sirrZone = a})
+
+-- | Whether to rotate credentials during IP rotation.
+sirrRotateCredentials :: Lens' StartIPRotationRequest (Maybe Bool)
+sirrRotateCredentials
+  = lens _sirrRotateCredentials
+      (\ s a -> s{_sirrRotateCredentials = a})
+
+-- | The name (project, location, cluster id) of the cluster to start IP
+-- rotation. Specified in the format
+-- \'projects\/*\/locations\/*\/clusters\/*\'.
+sirrName :: Lens' StartIPRotationRequest (Maybe Text)
+sirrName = lens _sirrName (\ s a -> s{_sirrName = a})
+
+-- | Deprecated. The name of the cluster. This field has been deprecated and
+-- replaced by the name field.
+sirrClusterId :: Lens' StartIPRotationRequest (Maybe Text)
+sirrClusterId
+  = lens _sirrClusterId
+      (\ s a -> s{_sirrClusterId = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/developers.google.com\/console\/help\/new\/#projectnumber).
+-- This field has been deprecated and replaced by the name field.
+sirrProjectId :: Lens' StartIPRotationRequest (Maybe Text)
+sirrProjectId
+  = lens _sirrProjectId
+      (\ s a -> s{_sirrProjectId = a})
+
+instance FromJSON StartIPRotationRequest where
+        parseJSON
+          = withObject "StartIPRotationRequest"
+              (\ o ->
+                 StartIPRotationRequest' <$>
+                   (o .:? "zone") <*> (o .:? "rotateCredentials") <*>
+                     (o .:? "name")
+                     <*> (o .:? "clusterId")
+                     <*> (o .:? "projectId"))
+
+instance ToJSON StartIPRotationRequest where
+        toJSON StartIPRotationRequest'{..}
+          = object
+              (catMaybes
+                 [("zone" .=) <$> _sirrZone,
+                  ("rotateCredentials" .=) <$> _sirrRotateCredentials,
+                  ("name" .=) <$> _sirrName,
+                  ("clusterId" .=) <$> _sirrClusterId,
+                  ("projectId" .=) <$> _sirrProjectId])
+
+-- | SetLegacyAbacRequest enables or disables the ABAC authorization
+-- mechanism for a cluster.
+--
+-- /See:/ 'setLegacyAbacRequest' smart constructor.
+data SetLegacyAbacRequest =
+  SetLegacyAbacRequest'
+    { _slarEnabled   :: !(Maybe Bool)
+    , _slarZone      :: !(Maybe Text)
+    , _slarName      :: !(Maybe Text)
+    , _slarClusterId :: !(Maybe Text)
+    , _slarProjectId :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'SetLegacyAbacRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'slarEnabled'
+--
+-- * 'slarZone'
+--
+-- * 'slarName'
+--
+-- * 'slarClusterId'
+--
+-- * 'slarProjectId'
+setLegacyAbacRequest
+    :: SetLegacyAbacRequest
+setLegacyAbacRequest =
+  SetLegacyAbacRequest'
+    { _slarEnabled = Nothing
+    , _slarZone = Nothing
+    , _slarName = Nothing
+    , _slarClusterId = Nothing
+    , _slarProjectId = Nothing
+    }
+
+
+-- | Whether ABAC authorization will be enabled in the cluster.
+slarEnabled :: Lens' SetLegacyAbacRequest (Maybe Bool)
+slarEnabled
+  = lens _slarEnabled (\ s a -> s{_slarEnabled = a})
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
+slarZone :: Lens' SetLegacyAbacRequest (Maybe Text)
+slarZone = lens _slarZone (\ s a -> s{_slarZone = a})
+
+-- | The name (project, location, cluster id) of the cluster to set legacy
+-- abac. Specified in the format
+-- \'projects\/*\/locations\/*\/clusters\/*\'.
+slarName :: Lens' SetLegacyAbacRequest (Maybe Text)
+slarName = lens _slarName (\ s a -> s{_slarName = a})
+
+-- | Deprecated. The name of the cluster to update. This field has been
+-- deprecated and replaced by the name field.
+slarClusterId :: Lens' SetLegacyAbacRequest (Maybe Text)
+slarClusterId
+  = lens _slarClusterId
+      (\ s a -> s{_slarClusterId = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
+-- field has been deprecated and replaced by the name field.
+slarProjectId :: Lens' SetLegacyAbacRequest (Maybe Text)
+slarProjectId
+  = lens _slarProjectId
+      (\ s a -> s{_slarProjectId = a})
+
+instance FromJSON SetLegacyAbacRequest where
+        parseJSON
+          = withObject "SetLegacyAbacRequest"
+              (\ o ->
+                 SetLegacyAbacRequest' <$>
+                   (o .:? "enabled") <*> (o .:? "zone") <*>
+                     (o .:? "name")
+                     <*> (o .:? "clusterId")
+                     <*> (o .:? "projectId"))
+
+instance ToJSON SetLegacyAbacRequest where
+        toJSON SetLegacyAbacRequest'{..}
+          = object
+              (catMaybes
+                 [("enabled" .=) <$> _slarEnabled,
+                  ("zone" .=) <$> _slarZone, ("name" .=) <$> _slarName,
+                  ("clusterId" .=) <$> _slarClusterId,
+                  ("projectId" .=) <$> _slarProjectId])
+
+-- | Configuration options for the horizontal pod autoscaling feature, which
+-- increases or decreases the number of replica pods a replication
+-- controller has based on the resource usage of the existing pods.
+--
+-- /See:/ 'horizontalPodAutoscaling' smart constructor.
+newtype HorizontalPodAutoscaling =
+  HorizontalPodAutoscaling'
+    { _hpaDisabled :: Maybe Bool
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'HorizontalPodAutoscaling' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'hpaDisabled'
+horizontalPodAutoscaling
+    :: HorizontalPodAutoscaling
+horizontalPodAutoscaling = HorizontalPodAutoscaling' {_hpaDisabled = Nothing}
+
+
+-- | Whether the Horizontal Pod Autoscaling feature is enabled in the
+-- cluster. When enabled, it ensures that a Heapster pod is running in the
+-- cluster, which is also used by the Cloud Monitoring service.
+hpaDisabled :: Lens' HorizontalPodAutoscaling (Maybe Bool)
+hpaDisabled
+  = lens _hpaDisabled (\ s a -> s{_hpaDisabled = a})
+
+instance FromJSON HorizontalPodAutoscaling where
+        parseJSON
+          = withObject "HorizontalPodAutoscaling"
+              (\ o ->
+                 HorizontalPodAutoscaling' <$> (o .:? "disabled"))
+
+instance ToJSON HorizontalPodAutoscaling where
+        toJSON HorizontalPodAutoscaling'{..}
+          = object
+              (catMaybes [("disabled" .=) <$> _hpaDisabled])
+
+-- | SetMasterAuthRequest updates the admin password of a cluster.
+--
+-- /See:/ 'setMasterAuthRequest' smart constructor.
+data SetMasterAuthRequest =
+  SetMasterAuthRequest'
+    { _smarAction    :: !(Maybe SetMasterAuthRequestAction)
+    , _smarZone      :: !(Maybe Text)
+    , _smarName      :: !(Maybe Text)
+    , _smarClusterId :: !(Maybe Text)
+    , _smarProjectId :: !(Maybe Text)
+    , _smarUpdate    :: !(Maybe MasterAuth)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'SetMasterAuthRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'smarAction'
+--
+-- * 'smarZone'
+--
+-- * 'smarName'
+--
+-- * 'smarClusterId'
+--
+-- * 'smarProjectId'
+--
+-- * 'smarUpdate'
+setMasterAuthRequest
+    :: SetMasterAuthRequest
+setMasterAuthRequest =
+  SetMasterAuthRequest'
+    { _smarAction = Nothing
+    , _smarZone = Nothing
+    , _smarName = Nothing
+    , _smarClusterId = Nothing
+    , _smarProjectId = Nothing
+    , _smarUpdate = Nothing
+    }
+
+
+-- | The exact form of action to be taken on the master auth.
+smarAction :: Lens' SetMasterAuthRequest (Maybe SetMasterAuthRequestAction)
+smarAction
+  = lens _smarAction (\ s a -> s{_smarAction = a})
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
+smarZone :: Lens' SetMasterAuthRequest (Maybe Text)
+smarZone = lens _smarZone (\ s a -> s{_smarZone = a})
+
+-- | The name (project, location, cluster) of the cluster to set auth.
+-- Specified in the format \'projects\/*\/locations\/*\/clusters\/*\'.
+smarName :: Lens' SetMasterAuthRequest (Maybe Text)
+smarName = lens _smarName (\ s a -> s{_smarName = a})
+
+-- | Deprecated. The name of the cluster to upgrade. This field has been
+-- deprecated and replaced by the name field.
+smarClusterId :: Lens' SetMasterAuthRequest (Maybe Text)
+smarClusterId
+  = lens _smarClusterId
+      (\ s a -> s{_smarClusterId = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
+-- field has been deprecated and replaced by the name field.
+smarProjectId :: Lens' SetMasterAuthRequest (Maybe Text)
+smarProjectId
+  = lens _smarProjectId
+      (\ s a -> s{_smarProjectId = a})
+
+-- | A description of the update.
+smarUpdate :: Lens' SetMasterAuthRequest (Maybe MasterAuth)
+smarUpdate
+  = lens _smarUpdate (\ s a -> s{_smarUpdate = a})
+
+instance FromJSON SetMasterAuthRequest where
+        parseJSON
+          = withObject "SetMasterAuthRequest"
+              (\ o ->
+                 SetMasterAuthRequest' <$>
+                   (o .:? "action") <*> (o .:? "zone") <*>
+                     (o .:? "name")
+                     <*> (o .:? "clusterId")
+                     <*> (o .:? "projectId")
+                     <*> (o .:? "update"))
+
+instance ToJSON SetMasterAuthRequest where
+        toJSON SetMasterAuthRequest'{..}
+          = object
+              (catMaybes
+                 [("action" .=) <$> _smarAction,
+                  ("zone" .=) <$> _smarZone, ("name" .=) <$> _smarName,
+                  ("clusterId" .=) <$> _smarClusterId,
+                  ("projectId" .=) <$> _smarProjectId,
+                  ("update" .=) <$> _smarUpdate])
+
+-- | ListOperationsResponse is the result of ListOperationsRequest.
+--
+-- /See:/ 'listOperationsResponse' smart constructor.
+data ListOperationsResponse =
+  ListOperationsResponse'
+    { _lorOperations   :: !(Maybe [Operation])
+    , _lorMissingZones :: !(Maybe [Text])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ListOperationsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lorOperations'
+--
+-- * 'lorMissingZones'
+listOperationsResponse
+    :: ListOperationsResponse
+listOperationsResponse =
+  ListOperationsResponse' {_lorOperations = Nothing, _lorMissingZones = Nothing}
+
+
+-- | A list of operations in the project in the specified zone.
+lorOperations :: Lens' ListOperationsResponse [Operation]
+lorOperations
+  = lens _lorOperations
+      (\ s a -> s{_lorOperations = a})
+      . _Default
+      . _Coerce
+
+-- | If any zones are listed here, the list of operations returned may be
+-- missing the operations from those zones.
+lorMissingZones :: Lens' ListOperationsResponse [Text]
+lorMissingZones
+  = lens _lorMissingZones
+      (\ s a -> s{_lorMissingZones = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON ListOperationsResponse where
+        parseJSON
+          = withObject "ListOperationsResponse"
+              (\ o ->
+                 ListOperationsResponse' <$>
+                   (o .:? "operations" .!= mempty) <*>
+                     (o .:? "missingZones" .!= mempty))
+
+instance ToJSON ListOperationsResponse where
+        toJSON ListOperationsResponse'{..}
+          = object
+              (catMaybes
+                 [("operations" .=) <$> _lorOperations,
+                  ("missingZones" .=) <$> _lorMissingZones])
+
+-- | CreateClusterRequest creates a cluster.
+--
+-- /See:/ 'createClusterRequest' smart constructor.
+data CreateClusterRequest =
+  CreateClusterRequest'
+    { _ccrParent    :: !(Maybe Text)
+    , _ccrCluster   :: !(Maybe Cluster)
+    , _ccrZone      :: !(Maybe Text)
+    , _ccrProjectId :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'CreateClusterRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ccrParent'
+--
+-- * 'ccrCluster'
+--
+-- * 'ccrZone'
+--
+-- * 'ccrProjectId'
+createClusterRequest
+    :: CreateClusterRequest
+createClusterRequest =
+  CreateClusterRequest'
+    { _ccrParent = Nothing
+    , _ccrCluster = Nothing
+    , _ccrZone = Nothing
+    , _ccrProjectId = Nothing
+    }
+
+
+-- | The parent (project and location) where the cluster will be created.
+-- Specified in the format \'projects\/*\/locations\/*\'.
+ccrParent :: Lens' CreateClusterRequest (Maybe Text)
+ccrParent
+  = lens _ccrParent (\ s a -> s{_ccrParent = a})
+
+-- | A [cluster
+-- resource](\/container-engine\/reference\/rest\/v1\/projects.zones.clusters)
+ccrCluster :: Lens' CreateClusterRequest (Maybe Cluster)
+ccrCluster
+  = lens _ccrCluster (\ s a -> s{_ccrCluster = a})
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the parent field.
+ccrZone :: Lens' CreateClusterRequest (Maybe Text)
+ccrZone = lens _ccrZone (\ s a -> s{_ccrZone = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
+-- field has been deprecated and replaced by the parent field.
+ccrProjectId :: Lens' CreateClusterRequest (Maybe Text)
+ccrProjectId
+  = lens _ccrProjectId (\ s a -> s{_ccrProjectId = a})
+
+instance FromJSON CreateClusterRequest where
+        parseJSON
+          = withObject "CreateClusterRequest"
+              (\ o ->
+                 CreateClusterRequest' <$>
+                   (o .:? "parent") <*> (o .:? "cluster") <*>
+                     (o .:? "zone")
+                     <*> (o .:? "projectId"))
+
+instance ToJSON CreateClusterRequest where
+        toJSON CreateClusterRequest'{..}
+          = object
+              (catMaybes
+                 [("parent" .=) <$> _ccrParent,
+                  ("cluster" .=) <$> _ccrCluster,
+                  ("zone" .=) <$> _ccrZone,
+                  ("projectId" .=) <$> _ccrProjectId])
+
+-- | A Google Kubernetes Engine cluster.
+--
+-- /See:/ 'cluster' smart constructor.
+data Cluster =
+  Cluster'
+    { _cStatus                         :: !(Maybe ClusterStatus)
+    , _cNodePools                      :: !(Maybe [NodePool])
+    , _cEnableKubernetesAlpha          :: !(Maybe Bool)
+    , _cResourceLabels                 :: !(Maybe ClusterResourceLabels)
+    , _cTpuIPv4CIdRBlock               :: !(Maybe Text)
+    , _cNodeConfig                     :: !(Maybe NodeConfig)
+    , _cNodeIPv4CIdRSize               :: !(Maybe (Textual Int32))
+    , _cClusterIPv4CIdR                :: !(Maybe Text)
+    , _cLocation                       :: !(Maybe Text)
+    , _cInitialNodeCount               :: !(Maybe (Textual Int32))
+    , _cCurrentNodeVersion             :: !(Maybe Text)
+    , _cNetwork                        :: !(Maybe Text)
+    , _cInitialClusterVersion          :: !(Maybe Text)
+    , _cZone                           :: !(Maybe Text)
+    , _cAddonsConfig                   :: !(Maybe AddonsConfig)
+    , _cServicesIPv4CIdR               :: !(Maybe Text)
+    , _cIPAllocationPolicy             :: !(Maybe IPAllocationPolicy)
+    , _cMasterAuthorizedNetworksConfig :: !(Maybe MasterAuthorizedNetworksConfig)
+    , _cLegacyAbac                     :: !(Maybe LegacyAbac)
+    , _cNetworkConfig                  :: !(Maybe NetworkConfig)
+    , _cMasterAuth                     :: !(Maybe MasterAuth)
+    , _cSelfLink                       :: !(Maybe Text)
+    , _cName                           :: !(Maybe Text)
+    , _cCurrentMasterVersion           :: !(Maybe Text)
+    , _cStatusMessage                  :: !(Maybe Text)
+    , _cDefaultMaxPodsConstraint       :: !(Maybe MaxPodsConstraint)
+    , _cSubnetwork                     :: !(Maybe Text)
+    , _cCurrentNodeCount               :: !(Maybe (Textual Int32))
+    , _cPrivateClusterConfig           :: !(Maybe PrivateClusterConfig)
+    , _cMaintenancePolicy              :: !(Maybe MaintenancePolicy)
+    , _cConditions                     :: !(Maybe [StatusCondition])
+    , _cEnableTpu                      :: !(Maybe Bool)
+    , _cEndpoint                       :: !(Maybe Text)
+    , _cExpireTime                     :: !(Maybe Text)
+    , _cNetworkPolicy                  :: !(Maybe NetworkPolicy)
+    , _cLocations                      :: !(Maybe [Text])
+    , _cLoggingService                 :: !(Maybe Text)
+    , _cLabelFingerprint               :: !(Maybe Text)
+    , _cDescription                    :: !(Maybe Text)
+    , _cInstanceGroupURLs              :: !(Maybe [Text])
+    , _cMonitoringService              :: !(Maybe Text)
+    , _cCreateTime                     :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Cluster' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cStatus'
+--
+-- * 'cNodePools'
+--
+-- * 'cEnableKubernetesAlpha'
+--
+-- * 'cResourceLabels'
+--
+-- * 'cTpuIPv4CIdRBlock'
+--
+-- * 'cNodeConfig'
+--
+-- * 'cNodeIPv4CIdRSize'
+--
+-- * 'cClusterIPv4CIdR'
+--
+-- * 'cLocation'
+--
+-- * 'cInitialNodeCount'
+--
+-- * 'cCurrentNodeVersion'
+--
+-- * 'cNetwork'
+--
+-- * 'cInitialClusterVersion'
+--
+-- * 'cZone'
+--
+-- * 'cAddonsConfig'
+--
+-- * 'cServicesIPv4CIdR'
+--
+-- * 'cIPAllocationPolicy'
+--
+-- * 'cMasterAuthorizedNetworksConfig'
+--
+-- * 'cLegacyAbac'
+--
+-- * 'cNetworkConfig'
+--
+-- * 'cMasterAuth'
+--
+-- * 'cSelfLink'
+--
+-- * 'cName'
+--
+-- * 'cCurrentMasterVersion'
+--
+-- * 'cStatusMessage'
+--
+-- * 'cDefaultMaxPodsConstraint'
+--
+-- * 'cSubnetwork'
+--
+-- * 'cCurrentNodeCount'
+--
+-- * 'cPrivateClusterConfig'
+--
+-- * 'cMaintenancePolicy'
+--
+-- * 'cConditions'
+--
+-- * 'cEnableTpu'
+--
+-- * 'cEndpoint'
+--
+-- * 'cExpireTime'
+--
+-- * 'cNetworkPolicy'
+--
+-- * 'cLocations'
+--
+-- * 'cLoggingService'
+--
+-- * 'cLabelFingerprint'
+--
+-- * 'cDescription'
+--
+-- * 'cInstanceGroupURLs'
+--
+-- * 'cMonitoringService'
+--
+-- * 'cCreateTime'
+cluster
+    :: Cluster
+cluster =
+  Cluster'
+    { _cStatus = Nothing
+    , _cNodePools = Nothing
+    , _cEnableKubernetesAlpha = Nothing
+    , _cResourceLabels = Nothing
+    , _cTpuIPv4CIdRBlock = Nothing
+    , _cNodeConfig = Nothing
+    , _cNodeIPv4CIdRSize = Nothing
+    , _cClusterIPv4CIdR = Nothing
+    , _cLocation = Nothing
+    , _cInitialNodeCount = Nothing
+    , _cCurrentNodeVersion = Nothing
+    , _cNetwork = Nothing
+    , _cInitialClusterVersion = Nothing
+    , _cZone = Nothing
+    , _cAddonsConfig = Nothing
+    , _cServicesIPv4CIdR = Nothing
+    , _cIPAllocationPolicy = Nothing
+    , _cMasterAuthorizedNetworksConfig = Nothing
+    , _cLegacyAbac = Nothing
+    , _cNetworkConfig = Nothing
+    , _cMasterAuth = Nothing
+    , _cSelfLink = Nothing
+    , _cName = Nothing
+    , _cCurrentMasterVersion = Nothing
+    , _cStatusMessage = Nothing
+    , _cDefaultMaxPodsConstraint = Nothing
+    , _cSubnetwork = Nothing
+    , _cCurrentNodeCount = Nothing
+    , _cPrivateClusterConfig = Nothing
+    , _cMaintenancePolicy = Nothing
+    , _cConditions = Nothing
+    , _cEnableTpu = Nothing
+    , _cEndpoint = Nothing
+    , _cExpireTime = Nothing
+    , _cNetworkPolicy = Nothing
+    , _cLocations = Nothing
+    , _cLoggingService = Nothing
+    , _cLabelFingerprint = Nothing
+    , _cDescription = Nothing
+    , _cInstanceGroupURLs = Nothing
+    , _cMonitoringService = Nothing
+    , _cCreateTime = Nothing
+    }
+
+
+-- | [Output only] The current status of this cluster.
+cStatus :: Lens' Cluster (Maybe ClusterStatus)
+cStatus = lens _cStatus (\ s a -> s{_cStatus = a})
+
+-- | 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})
+
+-- | The resource labels for the cluster to use to annotate any related
+-- Google Compute Engine resources.
+cResourceLabels :: Lens' Cluster (Maybe ClusterResourceLabels)
+cResourceLabels
+  = lens _cResourceLabels
+      (\ s a -> s{_cResourceLabels = a})
+
+-- | [Output only] The IP address range of the Cloud TPUs in this cluster, in
+-- [CIDR](http:\/\/en.wikipedia.org\/wiki\/Classless_Inter-Domain_Routing)
+-- notation (e.g. \`1.2.3.4\/29\`).
+cTpuIPv4CIdRBlock :: Lens' Cluster (Maybe Text)
+cTpuIPv4CIdRBlock
+  = lens _cTpuIPv4CIdRBlock
+      (\ s a -> s{_cTpuIPv4CIdRBlock = 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
+-- (along with the \"initial_node_count\") will be used to create a
+-- \"NodePool\" object with an auto-generated name. Do not use this and a
+-- node_pool at the same time. For responses, this field will be populated
+-- with the node configuration of the first node pool. If unspecified, the
+-- defaults are used.
+cNodeConfig :: Lens' Cluster (Maybe NodeConfig)
+cNodeConfig
+  = lens _cNodeConfig (\ s a -> s{_cNodeConfig = a})
+
+-- | [Output only] The size of the address space on each node for hosting
+-- containers. This is provisioned from within the \`container_ipv4_cidr\`
+-- range.
+cNodeIPv4CIdRSize :: Lens' Cluster (Maybe Int32)
+cNodeIPv4CIdRSize
+  = lens _cNodeIPv4CIdRSize
+      (\ s a -> s{_cNodeIPv4CIdRSize = a})
+      . mapping _Coerce
+
+-- | The IP address range of the container pods in this cluster, in
+-- [CIDR](http:\/\/en.wikipedia.org\/wiki\/Classless_Inter-Domain_Routing)
+-- notation (e.g. \`10.96.0.0\/14\`). Leave blank to have one automatically
+-- chosen or specify a \`\/14\` block in \`10.0.0.0\/8\`.
+cClusterIPv4CIdR :: Lens' Cluster (Maybe Text)
+cClusterIPv4CIdR
+  = lens _cClusterIPv4CIdR
+      (\ s a -> s{_cClusterIPv4CIdR = a})
+
+-- | [Output only] The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/regions-zones\/regions-zones#available) or
+-- [region](\/compute\/docs\/regions-zones\/regions-zones#available) in
+-- which the cluster resides.
+cLocation :: Lens' Cluster (Maybe Text)
+cLocation
+  = lens _cLocation (\ s a -> s{_cLocation = a})
+
+-- | The number of nodes to create in this cluster. You must ensure that your
+-- Compute Engine </compute/docs/resource-quotas resource quota> is
+-- sufficient for this number of instances. You must also have available
+-- firewall and routes quota. For requests, this field should only be used
+-- in lieu of a \"node_pool\" object, since this configuration (along with
+-- the \"node_config\") will be used to create a \"NodePool\" object with
+-- an auto-generated name. Do not use this and a node_pool at the same
+-- time.
+cInitialNodeCount :: Lens' Cluster (Maybe Int32)
+cInitialNodeCount
+  = lens _cInitialNodeCount
+      (\ s a -> s{_cInitialNodeCount = a})
+      . mapping _Coerce
+
+-- | [Output only] Deprecated, use
+-- [NodePools.version](\/kubernetes-engine\/docs\/reference\/rest\/v1\/projects.zones.clusters.nodePools)
+-- instead. The current version of the node software components. If they
+-- are currently at multiple versions because they\'re in the process of
+-- being upgraded, this reflects the minimum version of all nodes.
+cCurrentNodeVersion :: Lens' Cluster (Maybe Text)
+cCurrentNodeVersion
+  = lens _cCurrentNodeVersion
+      (\ s a -> s{_cCurrentNodeVersion = a})
+
+-- | The name of the Google Compute Engine
+-- [network](\/compute\/docs\/networks-and-firewalls#networks) to which the
+-- cluster is connected. If left unspecified, the \`default\` network will
+-- be used.
+cNetwork :: Lens' Cluster (Maybe Text)
+cNetwork = lens _cNetwork (\ s a -> s{_cNetwork = a})
+
+-- | The initial Kubernetes version for this cluster. Valid versions are
+-- those found in validMasterVersions returned by getServerConfig. The
+-- version can be upgraded over time; such upgrades are reflected in
+-- currentMasterVersion and currentNodeVersion. Users may specify either
+-- explicit versions offered by Kubernetes Engine or version aliases, which
+-- have the following behavior: - \"latest\": picks the highest valid
+-- Kubernetes version - \"1.X\": picks the highest valid patch+gke.N patch
+-- in the 1.X version - \"1.X.Y\": picks the highest valid gke.N patch in
+-- the 1.X.Y version - \"1.X.Y-gke.N\": picks an explicit Kubernetes
+-- version - \"\",\"-\": picks the default Kubernetes version
+cInitialClusterVersion :: Lens' Cluster (Maybe Text)
+cInitialClusterVersion
+  = lens _cInitialClusterVersion
+      (\ s a -> s{_cInitialClusterVersion = a})
+
+-- | [Output only] The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field is deprecated, use location instead.
+cZone :: Lens' Cluster (Maybe Text)
+cZone = lens _cZone (\ s a -> s{_cZone = a})
+
+-- | Configurations for the various addons available to run in the cluster.
+cAddonsConfig :: Lens' Cluster (Maybe AddonsConfig)
+cAddonsConfig
+  = lens _cAddonsConfig
+      (\ s a -> s{_cAddonsConfig = a})
+
+-- | [Output only] The IP address range of the Kubernetes services in this
+-- cluster, in
+-- [CIDR](http:\/\/en.wikipedia.org\/wiki\/Classless_Inter-Domain_Routing)
+-- notation (e.g. \`1.2.3.4\/29\`). Service addresses are typically put in
+-- the last \`\/16\` from the container CIDR.
+cServicesIPv4CIdR :: Lens' Cluster (Maybe Text)
+cServicesIPv4CIdR
+  = lens _cServicesIPv4CIdR
+      (\ s a -> s{_cServicesIPv4CIdR = a})
+
+-- | Configuration for cluster IP allocation.
+cIPAllocationPolicy :: Lens' Cluster (Maybe IPAllocationPolicy)
+cIPAllocationPolicy
+  = lens _cIPAllocationPolicy
+      (\ s a -> s{_cIPAllocationPolicy = a})
+
+-- | The configuration options for master authorized networks feature.
+cMasterAuthorizedNetworksConfig :: Lens' Cluster (Maybe MasterAuthorizedNetworksConfig)
+cMasterAuthorizedNetworksConfig
+  = lens _cMasterAuthorizedNetworksConfig
+      (\ s a -> s{_cMasterAuthorizedNetworksConfig = a})
+
+-- | Configuration for the legacy ABAC authorization mode.
+cLegacyAbac :: Lens' Cluster (Maybe LegacyAbac)
+cLegacyAbac
+  = lens _cLegacyAbac (\ s a -> s{_cLegacyAbac = a})
+
+-- | Configuration for cluster networking.
+cNetworkConfig :: Lens' Cluster (Maybe NetworkConfig)
+cNetworkConfig
+  = lens _cNetworkConfig
+      (\ s a -> s{_cNetworkConfig = a})
+
+-- | The authentication information for accessing the master endpoint. If
+-- unspecified, the defaults are used: For clusters before v1.12, if
+-- master_auth is unspecified, \`username\` will be set to \"admin\", a
+-- random password will be generated, and a client certificate will be
+-- issued.
+cMasterAuth :: Lens' Cluster (Maybe MasterAuth)
+cMasterAuth
+  = lens _cMasterAuth (\ s a -> s{_cMasterAuth = a})
+
+-- | [Output only] Server-defined URL for the resource.
+cSelfLink :: Lens' Cluster (Maybe Text)
+cSelfLink
+  = lens _cSelfLink (\ s a -> s{_cSelfLink = a})
+
+-- | The name of this cluster. The name must be unique within this project
+-- and zone, and can be up to 40 characters with the following
+-- restrictions: * Lowercase letters, numbers, and hyphens only. * Must
+-- start with a letter. * Must end with a number or a letter.
+cName :: Lens' Cluster (Maybe Text)
+cName = lens _cName (\ s a -> s{_cName = a})
+
+-- | [Output only] The current software version of the master endpoint.
+cCurrentMasterVersion :: Lens' Cluster (Maybe Text)
+cCurrentMasterVersion
+  = lens _cCurrentMasterVersion
+      (\ s a -> s{_cCurrentMasterVersion = a})
+
+-- | [Output only] Additional information about the current status of this
+-- cluster, if available.
+cStatusMessage :: Lens' Cluster (Maybe Text)
+cStatusMessage
+  = lens _cStatusMessage
+      (\ s a -> s{_cStatusMessage = a})
+
+-- | The default constraint on the maximum number of pods that can be run
+-- simultaneously on a node in the node pool of this cluster. Only honored
+-- if cluster created with IP Alias support.
+cDefaultMaxPodsConstraint :: Lens' Cluster (Maybe MaxPodsConstraint)
+cDefaultMaxPodsConstraint
+  = lens _cDefaultMaxPodsConstraint
+      (\ s a -> s{_cDefaultMaxPodsConstraint = a})
+
+-- | The name of the Google Compute Engine
+-- [subnetwork](\/compute\/docs\/subnetworks) to which the cluster is
+-- connected.
+cSubnetwork :: Lens' Cluster (Maybe Text)
+cSubnetwork
+  = lens _cSubnetwork (\ s a -> s{_cSubnetwork = a})
+
+-- | [Output only] The number of nodes currently in the cluster. Deprecated.
+-- Call Kubernetes API directly to retrieve node information.
+cCurrentNodeCount :: Lens' Cluster (Maybe Int32)
+cCurrentNodeCount
+  = lens _cCurrentNodeCount
+      (\ s a -> s{_cCurrentNodeCount = a})
+      . mapping _Coerce
+
+-- | Configuration for private cluster.
+cPrivateClusterConfig :: Lens' Cluster (Maybe PrivateClusterConfig)
+cPrivateClusterConfig
+  = lens _cPrivateClusterConfig
+      (\ s a -> s{_cPrivateClusterConfig = a})
+
+-- | Configure the maintenance policy for this cluster.
+cMaintenancePolicy :: Lens' Cluster (Maybe MaintenancePolicy)
+cMaintenancePolicy
+  = lens _cMaintenancePolicy
+      (\ s a -> s{_cMaintenancePolicy = a})
+
+-- | Which conditions caused the current cluster state.
+cConditions :: Lens' Cluster [StatusCondition]
+cConditions
+  = lens _cConditions (\ s a -> s{_cConditions = a}) .
+      _Default
+      . _Coerce
+
+-- | Enable the ability to use Cloud TPUs in this cluster.
+cEnableTpu :: Lens' Cluster (Maybe Bool)
+cEnableTpu
+  = lens _cEnableTpu (\ s a -> s{_cEnableTpu = a})
+
+-- | [Output only] The IP address of this cluster\'s master endpoint. The
+-- endpoint can be accessed from the internet at
+-- \`https:\/\/username:password\'endpoint\/\`. See the \`masterAuth\`
+-- property of this resource for username and password information.
+cEndpoint :: Lens' Cluster (Maybe Text)
+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})
+
+-- | Configuration options for the NetworkPolicy feature.
+cNetworkPolicy :: Lens' Cluster (Maybe NetworkPolicy)
+cNetworkPolicy
+  = lens _cNetworkPolicy
+      (\ s a -> s{_cNetworkPolicy = a})
+
+-- | The list of Google Compute Engine
+-- [zones](\/compute\/docs\/zones#available) in which the cluster\'s nodes
+-- should be located.
+cLocations :: Lens' Cluster [Text]
+cLocations
+  = lens _cLocations (\ s a -> s{_cLocations = a}) .
+      _Default
+      . _Coerce
+
+-- | The logging service the cluster should use to write logs. Currently
+-- available options: * \`logging.googleapis.com\` - the Google Cloud
+-- Logging service. * \`none\` - no logs will be exported from the cluster.
+-- * if left as an empty string,\`logging.googleapis.com\` will be used.
+cLoggingService :: Lens' Cluster (Maybe Text)
+cLoggingService
+  = lens _cLoggingService
+      (\ s a -> s{_cLoggingService = a})
+
+-- | The fingerprint of the set of labels for this cluster.
+cLabelFingerprint :: Lens' Cluster (Maybe Text)
+cLabelFingerprint
+  = lens _cLabelFingerprint
+      (\ s a -> s{_cLabelFingerprint = a})
+
+-- | An optional description of this cluster.
+cDescription :: Lens' Cluster (Maybe Text)
+cDescription
+  = lens _cDescription (\ s a -> s{_cDescription = a})
+
+-- | Deprecated. Use node_pools.instance_group_urls.
+cInstanceGroupURLs :: Lens' Cluster [Text]
+cInstanceGroupURLs
+  = lens _cInstanceGroupURLs
+      (\ s a -> s{_cInstanceGroupURLs = 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 from the cluster. * if left as an empty string,
+-- \`monitoring.googleapis.com\` will be used.
+cMonitoringService :: Lens' Cluster (Maybe Text)
+cMonitoringService
+  = lens _cMonitoringService
+      (\ s a -> s{_cMonitoringService = a})
+
+-- | [Output only] The time the cluster was created, in
+-- [RFC3339](https:\/\/www.ietf.org\/rfc\/rfc3339.txt) text format.
+cCreateTime :: Lens' Cluster (Maybe Text)
+cCreateTime
+  = lens _cCreateTime (\ s a -> s{_cCreateTime = a})
+
+instance FromJSON Cluster where
+        parseJSON
+          = withObject "Cluster"
+              (\ o ->
+                 Cluster' <$>
+                   (o .:? "status") <*> (o .:? "nodePools" .!= mempty)
+                     <*> (o .:? "enableKubernetesAlpha")
+                     <*> (o .:? "resourceLabels")
+                     <*> (o .:? "tpuIpv4CidrBlock")
+                     <*> (o .:? "nodeConfig")
+                     <*> (o .:? "nodeIpv4CidrSize")
+                     <*> (o .:? "clusterIpv4Cidr")
+                     <*> (o .:? "location")
+                     <*> (o .:? "initialNodeCount")
+                     <*> (o .:? "currentNodeVersion")
+                     <*> (o .:? "network")
+                     <*> (o .:? "initialClusterVersion")
+                     <*> (o .:? "zone")
+                     <*> (o .:? "addonsConfig")
+                     <*> (o .:? "servicesIpv4Cidr")
+                     <*> (o .:? "ipAllocationPolicy")
+                     <*> (o .:? "masterAuthorizedNetworksConfig")
+                     <*> (o .:? "legacyAbac")
+                     <*> (o .:? "networkConfig")
+                     <*> (o .:? "masterAuth")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "currentMasterVersion")
+                     <*> (o .:? "statusMessage")
+                     <*> (o .:? "defaultMaxPodsConstraint")
+                     <*> (o .:? "subnetwork")
+                     <*> (o .:? "currentNodeCount")
+                     <*> (o .:? "privateClusterConfig")
+                     <*> (o .:? "maintenancePolicy")
+                     <*> (o .:? "conditions" .!= mempty)
+                     <*> (o .:? "enableTpu")
+                     <*> (o .:? "endpoint")
+                     <*> (o .:? "expireTime")
+                     <*> (o .:? "networkPolicy")
+                     <*> (o .:? "locations" .!= mempty)
+                     <*> (o .:? "loggingService")
+                     <*> (o .:? "labelFingerprint")
+                     <*> (o .:? "description")
+                     <*> (o .:? "instanceGroupUrls" .!= mempty)
+                     <*> (o .:? "monitoringService")
+                     <*> (o .:? "createTime"))
+
+instance ToJSON Cluster where
+        toJSON Cluster'{..}
+          = object
+              (catMaybes
+                 [("status" .=) <$> _cStatus,
+                  ("nodePools" .=) <$> _cNodePools,
+                  ("enableKubernetesAlpha" .=) <$>
+                    _cEnableKubernetesAlpha,
+                  ("resourceLabels" .=) <$> _cResourceLabels,
+                  ("tpuIpv4CidrBlock" .=) <$> _cTpuIPv4CIdRBlock,
+                  ("nodeConfig" .=) <$> _cNodeConfig,
+                  ("nodeIpv4CidrSize" .=) <$> _cNodeIPv4CIdRSize,
+                  ("clusterIpv4Cidr" .=) <$> _cClusterIPv4CIdR,
+                  ("location" .=) <$> _cLocation,
+                  ("initialNodeCount" .=) <$> _cInitialNodeCount,
+                  ("currentNodeVersion" .=) <$> _cCurrentNodeVersion,
+                  ("network" .=) <$> _cNetwork,
+                  ("initialClusterVersion" .=) <$>
+                    _cInitialClusterVersion,
+                  ("zone" .=) <$> _cZone,
+                  ("addonsConfig" .=) <$> _cAddonsConfig,
+                  ("servicesIpv4Cidr" .=) <$> _cServicesIPv4CIdR,
+                  ("ipAllocationPolicy" .=) <$> _cIPAllocationPolicy,
+                  ("masterAuthorizedNetworksConfig" .=) <$>
+                    _cMasterAuthorizedNetworksConfig,
+                  ("legacyAbac" .=) <$> _cLegacyAbac,
+                  ("networkConfig" .=) <$> _cNetworkConfig,
+                  ("masterAuth" .=) <$> _cMasterAuth,
+                  ("selfLink" .=) <$> _cSelfLink,
+                  ("name" .=) <$> _cName,
+                  ("currentMasterVersion" .=) <$>
+                    _cCurrentMasterVersion,
+                  ("statusMessage" .=) <$> _cStatusMessage,
+                  ("defaultMaxPodsConstraint" .=) <$>
+                    _cDefaultMaxPodsConstraint,
+                  ("subnetwork" .=) <$> _cSubnetwork,
+                  ("currentNodeCount" .=) <$> _cCurrentNodeCount,
+                  ("privateClusterConfig" .=) <$>
+                    _cPrivateClusterConfig,
+                  ("maintenancePolicy" .=) <$> _cMaintenancePolicy,
+                  ("conditions" .=) <$> _cConditions,
+                  ("enableTpu" .=) <$> _cEnableTpu,
+                  ("endpoint" .=) <$> _cEndpoint,
+                  ("expireTime" .=) <$> _cExpireTime,
+                  ("networkPolicy" .=) <$> _cNetworkPolicy,
+                  ("locations" .=) <$> _cLocations,
+                  ("loggingService" .=) <$> _cLoggingService,
+                  ("labelFingerprint" .=) <$> _cLabelFingerprint,
+                  ("description" .=) <$> _cDescription,
+                  ("instanceGroupUrls" .=) <$> _cInstanceGroupURLs,
+                  ("monitoringService" .=) <$> _cMonitoringService,
+                  ("createTime" .=) <$> _cCreateTime])
+
+-- | CancelOperationRequest cancels a single operation.
+--
+-- /See:/ 'cancelOperationRequest' smart constructor.
+data CancelOperationRequest =
+  CancelOperationRequest'
+    { _corZone        :: !(Maybe Text)
+    , _corName        :: !(Maybe Text)
+    , _corProjectId   :: !(Maybe Text)
+    , _corOperationId :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'CancelOperationRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'corZone'
+--
+-- * 'corName'
+--
+-- * 'corProjectId'
+--
+-- * 'corOperationId'
+cancelOperationRequest
+    :: CancelOperationRequest
+cancelOperationRequest =
+  CancelOperationRequest'
+    { _corZone = Nothing
+    , _corName = Nothing
+    , _corProjectId = Nothing
+    , _corOperationId = Nothing
+    }
+
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the operation resides.
+-- This field has been deprecated and replaced by the name field.
+corZone :: Lens' CancelOperationRequest (Maybe Text)
+corZone = lens _corZone (\ s a -> s{_corZone = a})
+
+-- | The name (project, location, operation id) of the operation to cancel.
+-- Specified in the format \'projects\/*\/locations\/*\/operations\/*\'.
+corName :: Lens' CancelOperationRequest (Maybe Text)
+corName = lens _corName (\ s a -> s{_corName = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
+-- field has been deprecated and replaced by the name field.
+corProjectId :: Lens' CancelOperationRequest (Maybe Text)
+corProjectId
+  = lens _corProjectId (\ s a -> s{_corProjectId = a})
+
+-- | Deprecated. The server-assigned \`name\` of the operation. This field
+-- has been deprecated and replaced by the name field.
+corOperationId :: Lens' CancelOperationRequest (Maybe Text)
+corOperationId
+  = lens _corOperationId
+      (\ s a -> s{_corOperationId = a})
+
+instance FromJSON CancelOperationRequest where
+        parseJSON
+          = withObject "CancelOperationRequest"
+              (\ o ->
+                 CancelOperationRequest' <$>
+                   (o .:? "zone") <*> (o .:? "name") <*>
+                     (o .:? "projectId")
+                     <*> (o .:? "operationId"))
+
+instance ToJSON CancelOperationRequest where
+        toJSON CancelOperationRequest'{..}
+          = object
+              (catMaybes
+                 [("zone" .=) <$> _corZone, ("name" .=) <$> _corName,
+                  ("projectId" .=) <$> _corProjectId,
+                  ("operationId" .=) <$> _corOperationId])
+
+-- | UpdateClusterRequest updates the settings of a cluster.
+--
+-- /See:/ 'updateClusterRequest' smart constructor.
+data UpdateClusterRequest =
+  UpdateClusterRequest'
+    { _ucrZone      :: !(Maybe Text)
+    , _ucrName      :: !(Maybe Text)
+    , _ucrClusterId :: !(Maybe Text)
+    , _ucrProjectId :: !(Maybe Text)
+    , _ucrUpdate    :: !(Maybe ClusterUpdate)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'UpdateClusterRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ucrZone'
+--
+-- * 'ucrName'
+--
+-- * 'ucrClusterId'
+--
+-- * 'ucrProjectId'
+--
+-- * 'ucrUpdate'
+updateClusterRequest
+    :: UpdateClusterRequest
+updateClusterRequest =
+  UpdateClusterRequest'
+    { _ucrZone = Nothing
+    , _ucrName = Nothing
+    , _ucrClusterId = Nothing
+    , _ucrProjectId = Nothing
+    , _ucrUpdate = Nothing
+    }
+
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
+ucrZone :: Lens' UpdateClusterRequest (Maybe Text)
+ucrZone = lens _ucrZone (\ s a -> s{_ucrZone = a})
+
+-- | The name (project, location, cluster) of the cluster to update.
+-- Specified in the format \'projects\/*\/locations\/*\/clusters\/*\'.
+ucrName :: Lens' UpdateClusterRequest (Maybe Text)
+ucrName = lens _ucrName (\ s a -> s{_ucrName = a})
+
+-- | Deprecated. The name of the cluster to upgrade. This field has been
+-- deprecated and replaced by the name field.
+ucrClusterId :: Lens' UpdateClusterRequest (Maybe Text)
+ucrClusterId
+  = lens _ucrClusterId (\ s a -> s{_ucrClusterId = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
+-- field has been deprecated and replaced by the name field.
+ucrProjectId :: Lens' UpdateClusterRequest (Maybe Text)
+ucrProjectId
+  = lens _ucrProjectId (\ s a -> s{_ucrProjectId = a})
+
+-- | A description of the update.
+ucrUpdate :: Lens' UpdateClusterRequest (Maybe ClusterUpdate)
+ucrUpdate
+  = lens _ucrUpdate (\ s a -> s{_ucrUpdate = a})
+
+instance FromJSON UpdateClusterRequest where
+        parseJSON
+          = withObject "UpdateClusterRequest"
+              (\ o ->
+                 UpdateClusterRequest' <$>
+                   (o .:? "zone") <*> (o .:? "name") <*>
+                     (o .:? "clusterId")
+                     <*> (o .:? "projectId")
+                     <*> (o .:? "update"))
+
+instance ToJSON UpdateClusterRequest where
+        toJSON UpdateClusterRequest'{..}
+          = object
+              (catMaybes
+                 [("zone" .=) <$> _ucrZone, ("name" .=) <$> _ucrName,
+                  ("clusterId" .=) <$> _ucrClusterId,
+                  ("projectId" .=) <$> _ucrProjectId,
+                  ("update" .=) <$> _ucrUpdate])
+
+-- | SetAddonsConfigRequest sets the addons associated with the cluster.
+--
+-- /See:/ 'setAddonsConfigRequest' smart constructor.
+data SetAddonsConfigRequest =
+  SetAddonsConfigRequest'
+    { _sacrZone         :: !(Maybe Text)
+    , _sacrAddonsConfig :: !(Maybe AddonsConfig)
+    , _sacrName         :: !(Maybe Text)
+    , _sacrClusterId    :: !(Maybe Text)
+    , _sacrProjectId    :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'SetAddonsConfigRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sacrZone'
+--
+-- * 'sacrAddonsConfig'
+--
+-- * 'sacrName'
+--
+-- * 'sacrClusterId'
+--
+-- * 'sacrProjectId'
+setAddonsConfigRequest
+    :: SetAddonsConfigRequest
+setAddonsConfigRequest =
+  SetAddonsConfigRequest'
+    { _sacrZone = Nothing
+    , _sacrAddonsConfig = Nothing
+    , _sacrName = Nothing
+    , _sacrClusterId = Nothing
+    , _sacrProjectId = Nothing
+    }
+
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
+sacrZone :: Lens' SetAddonsConfigRequest (Maybe Text)
+sacrZone = lens _sacrZone (\ s a -> s{_sacrZone = a})
+
+-- | The desired configurations for the various addons available to run in
+-- the cluster.
+sacrAddonsConfig :: Lens' SetAddonsConfigRequest (Maybe AddonsConfig)
+sacrAddonsConfig
+  = lens _sacrAddonsConfig
+      (\ s a -> s{_sacrAddonsConfig = a})
+
+-- | The name (project, location, cluster) of the cluster to set addons.
+-- Specified in the format \'projects\/*\/locations\/*\/clusters\/*\'.
+sacrName :: Lens' SetAddonsConfigRequest (Maybe Text)
+sacrName = lens _sacrName (\ s a -> s{_sacrName = a})
+
+-- | Deprecated. The name of the cluster to upgrade. This field has been
+-- deprecated and replaced by the name field.
+sacrClusterId :: Lens' SetAddonsConfigRequest (Maybe Text)
+sacrClusterId
+  = lens _sacrClusterId
+      (\ s a -> s{_sacrClusterId = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
+-- field has been deprecated and replaced by the name field.
+sacrProjectId :: Lens' SetAddonsConfigRequest (Maybe Text)
+sacrProjectId
+  = lens _sacrProjectId
+      (\ s a -> s{_sacrProjectId = a})
+
+instance FromJSON SetAddonsConfigRequest where
+        parseJSON
+          = withObject "SetAddonsConfigRequest"
+              (\ o ->
+                 SetAddonsConfigRequest' <$>
+                   (o .:? "zone") <*> (o .:? "addonsConfig") <*>
+                     (o .:? "name")
+                     <*> (o .:? "clusterId")
+                     <*> (o .:? "projectId"))
+
+instance ToJSON SetAddonsConfigRequest where
+        toJSON SetAddonsConfigRequest'{..}
+          = object
+              (catMaybes
+                 [("zone" .=) <$> _sacrZone,
+                  ("addonsConfig" .=) <$> _sacrAddonsConfig,
+                  ("name" .=) <$> _sacrName,
+                  ("clusterId" .=) <$> _sacrClusterId,
+                  ("projectId" .=) <$> _sacrProjectId])
+
+-- | Parameters that describe the nodes in a cluster.
+--
+-- /See:/ 'nodeConfig' smart constructor.
+data NodeConfig =
+  NodeConfig'
+    { _ncLocalSsdCount  :: !(Maybe (Textual Int32))
+    , _ncDiskSizeGb     :: !(Maybe (Textual Int32))
+    , _ncTaints         :: !(Maybe [NodeTaint])
+    , _ncOAuthScopes    :: !(Maybe [Text])
+    , _ncServiceAccount :: !(Maybe Text)
+    , _ncAccelerators   :: !(Maybe [AcceleratorConfig])
+    , _ncImageType      :: !(Maybe Text)
+    , _ncMachineType    :: !(Maybe Text)
+    , _ncMetadata       :: !(Maybe NodeConfigMetadata)
+    , _ncDiskType       :: !(Maybe Text)
+    , _ncLabels         :: !(Maybe NodeConfigLabels)
+    , _ncMinCPUPlatform :: !(Maybe Text)
+    , _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'
+--
+-- * 'ncTaints'
+--
+-- * 'ncOAuthScopes'
+--
+-- * 'ncServiceAccount'
+--
+-- * 'ncAccelerators'
+--
+-- * 'ncImageType'
+--
+-- * 'ncMachineType'
+--
+-- * 'ncMetadata'
+--
+-- * 'ncDiskType'
+--
+-- * 'ncLabels'
+--
+-- * 'ncMinCPUPlatform'
+--
+-- * 'ncTags'
+--
+-- * 'ncPreemptible'
+nodeConfig
+    :: NodeConfig
+nodeConfig =
+  NodeConfig'
+    { _ncLocalSsdCount = Nothing
+    , _ncDiskSizeGb = Nothing
+    , _ncTaints = Nothing
+    , _ncOAuthScopes = Nothing
+    , _ncServiceAccount = Nothing
+    , _ncAccelerators = Nothing
+    , _ncImageType = Nothing
+    , _ncMachineType = Nothing
+    , _ncMetadata = Nothing
+    , _ncDiskType = Nothing
+    , _ncLabels = Nothing
+    , _ncMinCPUPlatform = 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.
+ncDiskSizeGb :: Lens' NodeConfig (Maybe Int32)
+ncDiskSizeGb
+  = lens _ncDiskSizeGb (\ s a -> s{_ncDiskSizeGb = a})
+      . mapping _Coerce
+
+-- | List of kubernetes taints to be applied to each node. For more
+-- information, including usage and the valid values, see:
+-- https:\/\/kubernetes.io\/docs\/concepts\/configuration\/taint-and-toleration\/
+ncTaints :: Lens' NodeConfig [NodeTaint]
+ncTaints
+  = lens _ncTaints (\ s a -> s{_ncTaints = a}) .
+      _Default
+      . _Coerce
+
+-- | The set of Google API scopes to be made available on all of the node VMs
+-- under the \"default\" service account. The following scopes are
+-- recommended, but not required, and by default are not included: *
+-- \`https:\/\/www.googleapis.com\/auth\/compute\` is required for mounting
+-- persistent storage on your nodes. *
+-- \`https:\/\/www.googleapis.com\/auth\/devstorage.read_only\` is required
+-- for communicating with **gcr.io** (the [Google Container
+-- Registry](\/container-registry\/)). If unspecified, no scopes are added,
+-- unless Cloud Logging or Cloud Monitoring are enabled, in which case
+-- their required scopes will be added.
+ncOAuthScopes :: Lens' NodeConfig [Text]
+ncOAuthScopes
+  = lens _ncOAuthScopes
+      (\ s a -> s{_ncOAuthScopes = a})
+      . _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})
+
+-- | A list of hardware accelerators to be attached to each node. See
+-- https:\/\/cloud.google.com\/compute\/docs\/gpus for more information
+-- about support for GPUs.
+ncAccelerators :: Lens' NodeConfig [AcceleratorConfig]
+ncAccelerators
+  = lens _ncAccelerators
+      (\ s a -> s{_ncAccelerators = a})
+      . _Default
+      . _Coerce
+
+-- | 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\`.
+ncMachineType :: Lens' NodeConfig (Maybe Text)
+ncMachineType
+  = lens _ncMachineType
+      (\ s a -> s{_ncMachineType = a})
+
+-- | The metadata key\/value pairs assigned to instances in the cluster. Keys
+-- must conform to the regexp [a-zA-Z0-9-_]+ and be less than 128 bytes in
+-- length. These are reflected as part of a URL in the metadata server.
+-- Additionally, to avoid ambiguity, keys must not conflict with any other
+-- metadata keys for the project or be one of the reserved keys:
+-- \"cluster-location\" \"cluster-name\" \"cluster-uid\" \"configure-sh\"
+-- \"containerd-configure-sh\" \"enable-os-login\" \"gci-update-strategy\"
+-- \"gci-ensure-gke-docker\" \"instance-template\" \"kube-env\"
+-- \"startup-script\" \"user-data\" Values are free-form strings, and only
+-- have meaning as interpreted by the image running in the instance. The
+-- only restriction placed on them is that each value\'s size must be less
+-- than or equal to 32 KB. The total size of all keys and values must be
+-- less than 512 KB.
+ncMetadata :: Lens' NodeConfig (Maybe NodeConfigMetadata)
+ncMetadata
+  = lens _ncMetadata (\ s a -> s{_ncMetadata = a})
+
+-- | Type of the disk attached to each node (e.g. \'pd-standard\' or
+-- \'pd-ssd\') If unspecified, the default disk type is \'pd-standard\'
+ncDiskType :: Lens' NodeConfig (Maybe Text)
+ncDiskType
+  = lens _ncDiskType (\ s a -> s{_ncDiskType = 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:
+-- https:\/\/kubernetes.io\/docs\/concepts\/overview\/working-with-objects\/labels\/
+ncLabels :: Lens' NodeConfig (Maybe NodeConfigLabels)
+ncLabels = lens _ncLabels (\ s a -> s{_ncLabels = a})
+
+-- | Minimum CPU platform to be used by this instance. The instance may be
+-- scheduled on the specified or newer CPU platform. Applicable values are
+-- the friendly names of CPU platforms, such as
+-- 'minCpuPlatform: \"Intel Haswell\"' or
+-- 'minCpuPlatform: \"Intel Sandy Bridge\"'. For more information, read
+-- [how to specify min CPU
+-- platform](https:\/\/cloud.google.com\/compute\/docs\/instances\/specify-min-cpu-platform)
+ncMinCPUPlatform :: Lens' NodeConfig (Maybe Text)
+ncMinCPUPlatform
+  = lens _ncMinCPUPlatform
+      (\ s a -> s{_ncMinCPUPlatform = 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 information 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 .:? "localSsdCount") <*> (o .:? "diskSizeGb") <*>
+                     (o .:? "taints" .!= mempty)
+                     <*> (o .:? "oauthScopes" .!= mempty)
+                     <*> (o .:? "serviceAccount")
+                     <*> (o .:? "accelerators" .!= mempty)
+                     <*> (o .:? "imageType")
+                     <*> (o .:? "machineType")
+                     <*> (o .:? "metadata")
+                     <*> (o .:? "diskType")
+                     <*> (o .:? "labels")
+                     <*> (o .:? "minCpuPlatform")
+                     <*> (o .:? "tags" .!= mempty)
+                     <*> (o .:? "preemptible"))
+
+instance ToJSON NodeConfig where
+        toJSON NodeConfig'{..}
+          = object
+              (catMaybes
+                 [("localSsdCount" .=) <$> _ncLocalSsdCount,
+                  ("diskSizeGb" .=) <$> _ncDiskSizeGb,
+                  ("taints" .=) <$> _ncTaints,
+                  ("oauthScopes" .=) <$> _ncOAuthScopes,
+                  ("serviceAccount" .=) <$> _ncServiceAccount,
+                  ("accelerators" .=) <$> _ncAccelerators,
+                  ("imageType" .=) <$> _ncImageType,
+                  ("machineType" .=) <$> _ncMachineType,
+                  ("metadata" .=) <$> _ncMetadata,
+                  ("diskType" .=) <$> _ncDiskType,
+                  ("labels" .=) <$> _ncLabels,
+                  ("minCpuPlatform" .=) <$> _ncMinCPUPlatform,
+                  ("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
+-- cluster.
+--
+-- /See:/ 'hTTPLoadBalancing' smart constructor.
+newtype HTTPLoadBalancing =
+  HTTPLoadBalancing'
+    { _httplbDisabled :: Maybe Bool
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'HTTPLoadBalancing' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'httplbDisabled'
+hTTPLoadBalancing
+    :: HTTPLoadBalancing
+hTTPLoadBalancing = HTTPLoadBalancing' {_httplbDisabled = Nothing}
+
+
+-- | Whether the HTTP Load Balancing controller is enabled in the cluster.
+-- When enabled, it runs a small pod in the cluster that manages the load
+-- balancers.
+httplbDisabled :: Lens' HTTPLoadBalancing (Maybe Bool)
+httplbDisabled
+  = lens _httplbDisabled
+      (\ s a -> s{_httplbDisabled = a})
+
+instance FromJSON HTTPLoadBalancing where
+        parseJSON
+          = withObject "HTTPLoadBalancing"
+              (\ o -> HTTPLoadBalancing' <$> (o .:? "disabled"))
+
+instance ToJSON HTTPLoadBalancing where
+        toJSON HTTPLoadBalancing'{..}
+          = object
+              (catMaybes [("disabled" .=) <$> _httplbDisabled])
+
+-- | This operation resource represents operations that may have happened or
+-- are happening on the cluster. All fields are output only.
+--
+-- /See:/ 'operation' smart constructor.
+data Operation =
+  Operation'
+    { _oNodepoolConditions :: !(Maybe [StatusCondition])
+    , _oStatus             :: !(Maybe OperationStatus)
+    , _oLocation           :: !(Maybe Text)
+    , _oStartTime          :: !(Maybe Text)
+    , _oZone               :: !(Maybe Text)
+    , _oSelfLink           :: !(Maybe Text)
+    , _oName               :: !(Maybe Text)
+    , _oStatusMessage      :: !(Maybe Text)
+    , _oEndTime            :: !(Maybe Text)
+    , _oClusterConditions  :: !(Maybe [StatusCondition])
+    , _oOperationType      :: !(Maybe OperationOperationType)
+    , _oTargetLink         :: !(Maybe Text)
+    , _oDetail             :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Operation' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'oNodepoolConditions'
+--
+-- * 'oStatus'
+--
+-- * 'oLocation'
+--
+-- * 'oStartTime'
+--
+-- * 'oZone'
+--
+-- * 'oSelfLink'
+--
+-- * 'oName'
+--
+-- * 'oStatusMessage'
+--
+-- * 'oEndTime'
+--
+-- * 'oClusterConditions'
+--
+-- * 'oOperationType'
+--
+-- * 'oTargetLink'
+--
+-- * 'oDetail'
+operation
+    :: Operation
+operation =
+  Operation'
+    { _oNodepoolConditions = Nothing
+    , _oStatus = Nothing
+    , _oLocation = Nothing
+    , _oStartTime = Nothing
+    , _oZone = Nothing
+    , _oSelfLink = Nothing
+    , _oName = Nothing
+    , _oStatusMessage = Nothing
+    , _oEndTime = Nothing
+    , _oClusterConditions = Nothing
+    , _oOperationType = Nothing
+    , _oTargetLink = Nothing
+    , _oDetail = Nothing
+    }
+
+
+-- | Which conditions caused the current node pool state.
+oNodepoolConditions :: Lens' Operation [StatusCondition]
+oNodepoolConditions
+  = lens _oNodepoolConditions
+      (\ s a -> s{_oNodepoolConditions = a})
+      . _Default
+      . _Coerce
+
+-- | The current status of the operation.
+oStatus :: Lens' Operation (Maybe OperationStatus)
+oStatus = lens _oStatus (\ s a -> s{_oStatus = a})
+
+-- | [Output only] The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/regions-zones\/regions-zones#available) or
+-- [region](\/compute\/docs\/regions-zones\/regions-zones#available) in
+-- which the cluster resides.
+oLocation :: Lens' Operation (Maybe Text)
+oLocation
+  = lens _oLocation (\ s a -> s{_oLocation = a})
+
+-- | [Output only] The time the operation started, in
+-- [RFC3339](https:\/\/www.ietf.org\/rfc\/rfc3339.txt) text format.
+oStartTime :: Lens' Operation (Maybe Text)
+oStartTime
+  = lens _oStartTime (\ s a -> s{_oStartTime = a})
+
+-- | The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the operation is
+-- taking place. This field is deprecated, use location instead.
+oZone :: Lens' Operation (Maybe Text)
+oZone = lens _oZone (\ s a -> s{_oZone = a})
+
+-- | Server-defined URL for the resource.
+oSelfLink :: Lens' Operation (Maybe Text)
+oSelfLink
+  = lens _oSelfLink (\ s a -> s{_oSelfLink = a})
+
+-- | The server-assigned ID for the operation.
+oName :: Lens' Operation (Maybe Text)
+oName = lens _oName (\ s a -> s{_oName = a})
+
+-- | If an error has occurred, a textual description of the error.
+oStatusMessage :: Lens' Operation (Maybe Text)
+oStatusMessage
+  = lens _oStatusMessage
+      (\ s a -> s{_oStatusMessage = a})
+
+-- | [Output only] The time the operation completed, in
+-- [RFC3339](https:\/\/www.ietf.org\/rfc\/rfc3339.txt) text format.
+oEndTime :: Lens' Operation (Maybe Text)
+oEndTime = lens _oEndTime (\ s a -> s{_oEndTime = a})
+
+-- | Which conditions caused the current cluster state.
+oClusterConditions :: Lens' Operation [StatusCondition]
+oClusterConditions
+  = lens _oClusterConditions
+      (\ s a -> s{_oClusterConditions = a})
+      . _Default
+      . _Coerce
+
+-- | The operation type.
+oOperationType :: Lens' Operation (Maybe OperationOperationType)
+oOperationType
+  = lens _oOperationType
+      (\ s a -> s{_oOperationType = a})
+
+-- | Server-defined URL for the target of the operation.
+oTargetLink :: Lens' Operation (Maybe Text)
+oTargetLink
+  = lens _oTargetLink (\ s a -> s{_oTargetLink = a})
+
+-- | Detailed operation progress, if available.
+oDetail :: Lens' Operation (Maybe Text)
+oDetail = lens _oDetail (\ s a -> s{_oDetail = a})
+
+instance FromJSON Operation where
+        parseJSON
+          = withObject "Operation"
+              (\ o ->
+                 Operation' <$>
+                   (o .:? "nodepoolConditions" .!= mempty) <*>
+                     (o .:? "status")
+                     <*> (o .:? "location")
+                     <*> (o .:? "startTime")
+                     <*> (o .:? "zone")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "statusMessage")
+                     <*> (o .:? "endTime")
+                     <*> (o .:? "clusterConditions" .!= mempty)
+                     <*> (o .:? "operationType")
+                     <*> (o .:? "targetLink")
+                     <*> (o .:? "detail"))
+
+instance ToJSON Operation where
+        toJSON Operation'{..}
+          = object
+              (catMaybes
+                 [("nodepoolConditions" .=) <$> _oNodepoolConditions,
+                  ("status" .=) <$> _oStatus,
+                  ("location" .=) <$> _oLocation,
+                  ("startTime" .=) <$> _oStartTime,
+                  ("zone" .=) <$> _oZone,
+                  ("selfLink" .=) <$> _oSelfLink,
+                  ("name" .=) <$> _oName,
+                  ("statusMessage" .=) <$> _oStatusMessage,
+                  ("endTime" .=) <$> _oEndTime,
+                  ("clusterConditions" .=) <$> _oClusterConditions,
+                  ("operationType" .=) <$> _oOperationType,
+                  ("targetLink" .=) <$> _oTargetLink,
+                  ("detail" .=) <$> _oDetail])
+
+-- | The resource labels for the cluster to use to annotate any related
+-- Google Compute Engine resources.
+--
+-- /See:/ 'clusterResourceLabels' smart constructor.
+newtype ClusterResourceLabels =
+  ClusterResourceLabels'
+    { _crlAddtional :: HashMap Text Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ClusterResourceLabels' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'crlAddtional'
+clusterResourceLabels
+    :: HashMap Text Text -- ^ 'crlAddtional'
+    -> ClusterResourceLabels
+clusterResourceLabels pCrlAddtional_ =
+  ClusterResourceLabels' {_crlAddtional = _Coerce # pCrlAddtional_}
+
+
+crlAddtional :: Lens' ClusterResourceLabels (HashMap Text Text)
+crlAddtional
+  = lens _crlAddtional (\ s a -> s{_crlAddtional = a})
+      . _Coerce
+
+instance FromJSON ClusterResourceLabels where
+        parseJSON
+          = withObject "ClusterResourceLabels"
+              (\ o ->
+                 ClusterResourceLabels' <$> (parseJSONObject o))
+
+instance ToJSON ClusterResourceLabels where
+        toJSON = toJSON . _crlAddtional
+
+-- | 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
+
+-- | SetNodePoolAutoscalingRequest sets the autoscaler settings of a node
+-- pool.
+--
+-- /See:/ 'setNodePoolAutoscalingRequest' smart constructor.
+data SetNodePoolAutoscalingRequest =
+  SetNodePoolAutoscalingRequest'
+    { _snparAutoscaling :: !(Maybe NodePoolAutoscaling)
+    , _snparZone        :: !(Maybe Text)
+    , _snparNodePoolId  :: !(Maybe Text)
+    , _snparName        :: !(Maybe Text)
+    , _snparClusterId   :: !(Maybe Text)
+    , _snparProjectId   :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'SetNodePoolAutoscalingRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'snparAutoscaling'
+--
+-- * 'snparZone'
+--
+-- * 'snparNodePoolId'
+--
+-- * 'snparName'
+--
+-- * 'snparClusterId'
+--
+-- * 'snparProjectId'
+setNodePoolAutoscalingRequest
+    :: SetNodePoolAutoscalingRequest
+setNodePoolAutoscalingRequest =
+  SetNodePoolAutoscalingRequest'
+    { _snparAutoscaling = Nothing
+    , _snparZone = Nothing
+    , _snparNodePoolId = Nothing
+    , _snparName = Nothing
+    , _snparClusterId = Nothing
+    , _snparProjectId = Nothing
+    }
+
+
+-- | Autoscaling configuration for the node pool.
+snparAutoscaling :: Lens' SetNodePoolAutoscalingRequest (Maybe NodePoolAutoscaling)
+snparAutoscaling
+  = lens _snparAutoscaling
+      (\ s a -> s{_snparAutoscaling = a})
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
+snparZone :: Lens' SetNodePoolAutoscalingRequest (Maybe Text)
+snparZone
+  = lens _snparZone (\ s a -> s{_snparZone = a})
+
+-- | Deprecated. The name of the node pool to upgrade. This field has been
+-- deprecated and replaced by the name field.
+snparNodePoolId :: Lens' SetNodePoolAutoscalingRequest (Maybe Text)
+snparNodePoolId
+  = lens _snparNodePoolId
+      (\ s a -> s{_snparNodePoolId = a})
+
+-- | The name (project, location, cluster, node pool) of the node pool to set
+-- autoscaler settings. Specified in the format
+-- \'projects\/*\/locations\/*\/clusters\/*\/nodePools\/*\'.
+snparName :: Lens' SetNodePoolAutoscalingRequest (Maybe Text)
+snparName
+  = lens _snparName (\ s a -> s{_snparName = a})
+
+-- | Deprecated. The name of the cluster to upgrade. This field has been
+-- deprecated and replaced by the name field.
+snparClusterId :: Lens' SetNodePoolAutoscalingRequest (Maybe Text)
+snparClusterId
+  = lens _snparClusterId
+      (\ s a -> s{_snparClusterId = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
+-- field has been deprecated and replaced by the name field.
+snparProjectId :: Lens' SetNodePoolAutoscalingRequest (Maybe Text)
+snparProjectId
+  = lens _snparProjectId
+      (\ s a -> s{_snparProjectId = a})
+
+instance FromJSON SetNodePoolAutoscalingRequest where
+        parseJSON
+          = withObject "SetNodePoolAutoscalingRequest"
+              (\ o ->
+                 SetNodePoolAutoscalingRequest' <$>
+                   (o .:? "autoscaling") <*> (o .:? "zone") <*>
+                     (o .:? "nodePoolId")
+                     <*> (o .:? "name")
+                     <*> (o .:? "clusterId")
+                     <*> (o .:? "projectId"))
+
+instance ToJSON SetNodePoolAutoscalingRequest where
+        toJSON SetNodePoolAutoscalingRequest'{..}
+          = object
+              (catMaybes
+                 [("autoscaling" .=) <$> _snparAutoscaling,
+                  ("zone" .=) <$> _snparZone,
+                  ("nodePoolId" .=) <$> _snparNodePoolId,
+                  ("name" .=) <$> _snparName,
+                  ("clusterId" .=) <$> _snparClusterId,
+                  ("projectId" .=) <$> _snparProjectId])
+
+-- | CompleteIPRotationRequest moves the cluster master back into single-IP
+-- mode.
+--
+-- /See:/ 'completeIPRotationRequest' smart constructor.
+data CompleteIPRotationRequest =
+  CompleteIPRotationRequest'
+    { _cirrZone      :: !(Maybe Text)
+    , _cirrName      :: !(Maybe Text)
+    , _cirrClusterId :: !(Maybe Text)
+    , _cirrProjectId :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'CompleteIPRotationRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cirrZone'
+--
+-- * 'cirrName'
+--
+-- * 'cirrClusterId'
+--
+-- * 'cirrProjectId'
+completeIPRotationRequest
+    :: CompleteIPRotationRequest
+completeIPRotationRequest =
+  CompleteIPRotationRequest'
+    { _cirrZone = Nothing
+    , _cirrName = Nothing
+    , _cirrClusterId = Nothing
+    , _cirrProjectId = Nothing
+    }
+
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
+cirrZone :: Lens' CompleteIPRotationRequest (Maybe Text)
+cirrZone = lens _cirrZone (\ s a -> s{_cirrZone = a})
+
+-- | The name (project, location, cluster id) of the cluster to complete IP
+-- rotation. Specified in the format
+-- \'projects\/*\/locations\/*\/clusters\/*\'.
+cirrName :: Lens' CompleteIPRotationRequest (Maybe Text)
+cirrName = lens _cirrName (\ s a -> s{_cirrName = a})
+
+-- | Deprecated. The name of the cluster. This field has been deprecated and
+-- replaced by the name field.
+cirrClusterId :: Lens' CompleteIPRotationRequest (Maybe Text)
+cirrClusterId
+  = lens _cirrClusterId
+      (\ s a -> s{_cirrClusterId = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/developers.google.com\/console\/help\/new\/#projectnumber).
+-- This field has been deprecated and replaced by the name field.
+cirrProjectId :: Lens' CompleteIPRotationRequest (Maybe Text)
+cirrProjectId
+  = lens _cirrProjectId
+      (\ s a -> s{_cirrProjectId = a})
+
+instance FromJSON CompleteIPRotationRequest where
+        parseJSON
+          = withObject "CompleteIPRotationRequest"
+              (\ o ->
+                 CompleteIPRotationRequest' <$>
+                   (o .:? "zone") <*> (o .:? "name") <*>
+                     (o .:? "clusterId")
+                     <*> (o .:? "projectId"))
+
+instance ToJSON CompleteIPRotationRequest where
+        toJSON CompleteIPRotationRequest'{..}
+          = object
+              (catMaybes
+                 [("zone" .=) <$> _cirrZone,
+                  ("name" .=) <$> _cirrName,
+                  ("clusterId" .=) <$> _cirrClusterId,
+                  ("projectId" .=) <$> _cirrProjectId])
+
+-- | Secondary IP range of a usable subnetwork.
+--
+-- /See:/ 'usableSubnetworkSecondaryRange' smart constructor.
+data UsableSubnetworkSecondaryRange =
+  UsableSubnetworkSecondaryRange'
+    { _ussrStatus      :: !(Maybe UsableSubnetworkSecondaryRangeStatus)
+    , _ussrRangeName   :: !(Maybe Text)
+    , _ussrIPCIdRRange :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'UsableSubnetworkSecondaryRange' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ussrStatus'
+--
+-- * 'ussrRangeName'
+--
+-- * 'ussrIPCIdRRange'
+usableSubnetworkSecondaryRange
+    :: UsableSubnetworkSecondaryRange
+usableSubnetworkSecondaryRange =
+  UsableSubnetworkSecondaryRange'
+    { _ussrStatus = Nothing
+    , _ussrRangeName = Nothing
+    , _ussrIPCIdRRange = Nothing
+    }
+
+
+-- | This field is to determine the status of the secondary range
+-- programmably.
+ussrStatus :: Lens' UsableSubnetworkSecondaryRange (Maybe UsableSubnetworkSecondaryRangeStatus)
+ussrStatus
+  = lens _ussrStatus (\ s a -> s{_ussrStatus = a})
+
+-- | The name associated with this subnetwork secondary range, used when
+-- adding an alias IP range to a VM instance.
+ussrRangeName :: Lens' UsableSubnetworkSecondaryRange (Maybe Text)
+ussrRangeName
+  = lens _ussrRangeName
+      (\ s a -> s{_ussrRangeName = a})
+
+-- | The range of IP addresses belonging to this subnetwork secondary range.
+ussrIPCIdRRange :: Lens' UsableSubnetworkSecondaryRange (Maybe Text)
+ussrIPCIdRRange
+  = lens _ussrIPCIdRRange
+      (\ s a -> s{_ussrIPCIdRRange = a})
+
+instance FromJSON UsableSubnetworkSecondaryRange
+         where
+        parseJSON
+          = withObject "UsableSubnetworkSecondaryRange"
+              (\ o ->
+                 UsableSubnetworkSecondaryRange' <$>
+                   (o .:? "status") <*> (o .:? "rangeName") <*>
+                     (o .:? "ipCidrRange"))
+
+instance ToJSON UsableSubnetworkSecondaryRange where
+        toJSON UsableSubnetworkSecondaryRange'{..}
+          = object
+              (catMaybes
+                 [("status" .=) <$> _ussrStatus,
+                  ("rangeName" .=) <$> _ussrRangeName,
+                  ("ipCidrRange" .=) <$> _ussrIPCIdRRange])
+
+-- | NodeManagement defines the set of node management services turned on for
+-- the node pool.
+--
+-- /See:/ 'nodeManagement' smart constructor.
+data NodeManagement =
+  NodeManagement'
+    { _nmAutoUpgrade    :: !(Maybe Bool)
+    , _nmAutoRepair     :: !(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'
+--
+-- * 'nmAutoRepair'
+--
+-- * 'nmUpgradeOptions'
+nodeManagement
+    :: NodeManagement
+nodeManagement =
+  NodeManagement'
+    { _nmAutoUpgrade = Nothing
+    , _nmAutoRepair = Nothing
+    , _nmUpgradeOptions = Nothing
+    }
+
+
+-- | A flag that specifies whether node auto-upgrade is enabled for the node
+-- pool. If enabled, node auto-upgrade helps keep the nodes in your node
+-- pool up to date with the latest release version of Kubernetes.
+nmAutoUpgrade :: Lens' NodeManagement (Maybe Bool)
+nmAutoUpgrade
+  = lens _nmAutoUpgrade
+      (\ s a -> s{_nmAutoUpgrade = a})
+
+-- | A flag that specifies whether the node auto-repair is enabled for the
+-- node pool. If enabled, the nodes in this node pool will be monitored
+-- and, if they fail health checks too many times, an automatic repair
+-- action will be triggered.
+nmAutoRepair :: Lens' NodeManagement (Maybe Bool)
+nmAutoRepair
+  = lens _nmAutoRepair (\ s a -> s{_nmAutoRepair = 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 .:? "autoRepair") <*>
+                     (o .:? "upgradeOptions"))
+
+instance ToJSON NodeManagement where
+        toJSON NodeManagement'{..}
+          = object
+              (catMaybes
+                 [("autoUpgrade" .=) <$> _nmAutoUpgrade,
+                  ("autoRepair" .=) <$> _nmAutoRepair,
+                  ("upgradeOptions" .=) <$> _nmUpgradeOptions])
+
+-- | Kubernetes taint is comprised of three fields: key, value, and effect.
+-- Effect can only be one of three types: NoSchedule, PreferNoSchedule or
+-- NoExecute. For more information, including usage and the valid values,
+-- see:
+-- https:\/\/kubernetes.io\/docs\/concepts\/configuration\/taint-and-toleration\/
+--
+-- /See:/ 'nodeTaint' smart constructor.
+data NodeTaint =
+  NodeTaint'
+    { _ntEffect :: !(Maybe NodeTaintEffect)
+    , _ntValue  :: !(Maybe Text)
+    , _ntKey    :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'NodeTaint' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ntEffect'
+--
+-- * 'ntValue'
+--
+-- * 'ntKey'
+nodeTaint
+    :: NodeTaint
+nodeTaint =
+  NodeTaint' {_ntEffect = Nothing, _ntValue = Nothing, _ntKey = Nothing}
+
+
+-- | Effect for taint.
+ntEffect :: Lens' NodeTaint (Maybe NodeTaintEffect)
+ntEffect = lens _ntEffect (\ s a -> s{_ntEffect = a})
+
+-- | Value for taint.
+ntValue :: Lens' NodeTaint (Maybe Text)
+ntValue = lens _ntValue (\ s a -> s{_ntValue = a})
+
+-- | Key for taint.
+ntKey :: Lens' NodeTaint (Maybe Text)
+ntKey = lens _ntKey (\ s a -> s{_ntKey = a})
+
+instance FromJSON NodeTaint where
+        parseJSON
+          = withObject "NodeTaint"
+              (\ o ->
+                 NodeTaint' <$>
+                   (o .:? "effect") <*> (o .:? "value") <*>
+                     (o .:? "key"))
+
+instance ToJSON NodeTaint where
+        toJSON NodeTaint'{..}
+          = object
+              (catMaybes
+                 [("effect" .=) <$> _ntEffect,
+                  ("value" .=) <$> _ntValue, ("key" .=) <$> _ntKey])
+
+-- | 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])
+
+-- | SetMaintenancePolicyRequest sets the maintenance policy for a cluster.
+--
+-- /See:/ 'setMaintenancePolicyRequest' smart constructor.
+data SetMaintenancePolicyRequest =
+  SetMaintenancePolicyRequest'
+    { _smprZone              :: !(Maybe Text)
+    , _smprName              :: !(Maybe Text)
+    , _smprClusterId         :: !(Maybe Text)
+    , _smprMaintenancePolicy :: !(Maybe MaintenancePolicy)
+    , _smprProjectId         :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'SetMaintenancePolicyRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'smprZone'
+--
+-- * 'smprName'
+--
+-- * 'smprClusterId'
+--
+-- * 'smprMaintenancePolicy'
+--
+-- * 'smprProjectId'
+setMaintenancePolicyRequest
+    :: SetMaintenancePolicyRequest
+setMaintenancePolicyRequest =
+  SetMaintenancePolicyRequest'
+    { _smprZone = Nothing
+    , _smprName = Nothing
+    , _smprClusterId = Nothing
+    , _smprMaintenancePolicy = Nothing
+    , _smprProjectId = Nothing
+    }
+
+
+-- | The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+smprZone :: Lens' SetMaintenancePolicyRequest (Maybe Text)
+smprZone = lens _smprZone (\ s a -> s{_smprZone = a})
+
+-- | The name (project, location, cluster id) of the cluster to set
+-- maintenance policy. Specified in the format
+-- \'projects\/*\/locations\/*\/clusters\/*\'.
+smprName :: Lens' SetMaintenancePolicyRequest (Maybe Text)
+smprName = lens _smprName (\ s a -> s{_smprName = a})
+
+-- | The name of the cluster to update.
+smprClusterId :: Lens' SetMaintenancePolicyRequest (Maybe Text)
+smprClusterId
+  = lens _smprClusterId
+      (\ s a -> s{_smprClusterId = a})
+
+-- | The maintenance policy to be set for the cluster. An empty field clears
+-- the existing maintenance policy.
+smprMaintenancePolicy :: Lens' SetMaintenancePolicyRequest (Maybe MaintenancePolicy)
+smprMaintenancePolicy
+  = lens _smprMaintenancePolicy
+      (\ s a -> s{_smprMaintenancePolicy = a})
+
+-- | The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840).
+smprProjectId :: Lens' SetMaintenancePolicyRequest (Maybe Text)
+smprProjectId
+  = lens _smprProjectId
+      (\ s a -> s{_smprProjectId = a})
+
+instance FromJSON SetMaintenancePolicyRequest where
+        parseJSON
+          = withObject "SetMaintenancePolicyRequest"
+              (\ o ->
+                 SetMaintenancePolicyRequest' <$>
+                   (o .:? "zone") <*> (o .:? "name") <*>
+                     (o .:? "clusterId")
+                     <*> (o .:? "maintenancePolicy")
+                     <*> (o .:? "projectId"))
+
+instance ToJSON SetMaintenancePolicyRequest where
+        toJSON SetMaintenancePolicyRequest'{..}
+          = object
+              (catMaybes
+                 [("zone" .=) <$> _smprZone,
+                  ("name" .=) <$> _smprName,
+                  ("clusterId" .=) <$> _smprClusterId,
+                  ("maintenancePolicy" .=) <$> _smprMaintenancePolicy,
+                  ("projectId" .=) <$> _smprProjectId])
+
+-- | UsableSubnetwork resource returns the subnetwork name, its associated
+-- network and the primary CIDR range.
+--
+-- /See:/ 'usableSubnetwork' smart constructor.
+data UsableSubnetwork =
+  UsableSubnetwork'
+    { _usNetwork           :: !(Maybe Text)
+    , _usStatusMessage     :: !(Maybe Text)
+    , _usSecondaryIPRanges :: !(Maybe [UsableSubnetworkSecondaryRange])
+    , _usIPCIdRRange       :: !(Maybe Text)
+    , _usSubnetwork        :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'UsableSubnetwork' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'usNetwork'
+--
+-- * 'usStatusMessage'
+--
+-- * 'usSecondaryIPRanges'
+--
+-- * 'usIPCIdRRange'
+--
+-- * 'usSubnetwork'
+usableSubnetwork
+    :: UsableSubnetwork
+usableSubnetwork =
+  UsableSubnetwork'
+    { _usNetwork = Nothing
+    , _usStatusMessage = Nothing
+    , _usSecondaryIPRanges = Nothing
+    , _usIPCIdRRange = Nothing
+    , _usSubnetwork = Nothing
+    }
+
+
+-- | Network Name. Example:
+-- projects\/my-project\/global\/networks\/my-network
+usNetwork :: Lens' UsableSubnetwork (Maybe Text)
+usNetwork
+  = lens _usNetwork (\ s a -> s{_usNetwork = a})
+
+-- | A human readable status message representing the reasons for cases where
+-- the caller cannot use the secondary ranges under the subnet. For example
+-- if the secondary_ip_ranges is empty due to a permission issue, an
+-- insufficient permission message will be given by status_message.
+usStatusMessage :: Lens' UsableSubnetwork (Maybe Text)
+usStatusMessage
+  = lens _usStatusMessage
+      (\ s a -> s{_usStatusMessage = a})
+
+-- | Secondary IP ranges.
+usSecondaryIPRanges :: Lens' UsableSubnetwork [UsableSubnetworkSecondaryRange]
+usSecondaryIPRanges
+  = lens _usSecondaryIPRanges
+      (\ s a -> s{_usSecondaryIPRanges = a})
+      . _Default
+      . _Coerce
+
+-- | The range of internal addresses that are owned by this subnetwork.
+usIPCIdRRange :: Lens' UsableSubnetwork (Maybe Text)
+usIPCIdRRange
+  = lens _usIPCIdRRange
+      (\ s a -> s{_usIPCIdRRange = a})
+
+-- | Subnetwork Name. Example:
+-- projects\/my-project\/regions\/us-central1\/subnetworks\/my-subnet
+usSubnetwork :: Lens' UsableSubnetwork (Maybe Text)
+usSubnetwork
+  = lens _usSubnetwork (\ s a -> s{_usSubnetwork = a})
+
+instance FromJSON UsableSubnetwork where
+        parseJSON
+          = withObject "UsableSubnetwork"
+              (\ o ->
+                 UsableSubnetwork' <$>
+                   (o .:? "network") <*> (o .:? "statusMessage") <*>
+                     (o .:? "secondaryIpRanges" .!= mempty)
+                     <*> (o .:? "ipCidrRange")
+                     <*> (o .:? "subnetwork"))
+
+instance ToJSON UsableSubnetwork where
+        toJSON UsableSubnetwork'{..}
+          = object
+              (catMaybes
+                 [("network" .=) <$> _usNetwork,
+                  ("statusMessage" .=) <$> _usStatusMessage,
+                  ("secondaryIpRanges" .=) <$> _usSecondaryIPRanges,
+                  ("ipCidrRange" .=) <$> _usIPCIdRRange,
+                  ("subnetwork" .=) <$> _usSubnetwork])
+
+-- | Configuration for the Kubernetes Dashboard.
+--
+-- /See:/ 'kubernetesDashboard' smart constructor.
+newtype KubernetesDashboard =
+  KubernetesDashboard'
+    { _kdDisabled :: Maybe Bool
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'KubernetesDashboard' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'kdDisabled'
+kubernetesDashboard
+    :: KubernetesDashboard
+kubernetesDashboard = KubernetesDashboard' {_kdDisabled = Nothing}
+
+
+-- | Whether the Kubernetes Dashboard is enabled for this cluster.
+kdDisabled :: Lens' KubernetesDashboard (Maybe Bool)
+kdDisabled
+  = lens _kdDisabled (\ s a -> s{_kdDisabled = a})
+
+instance FromJSON KubernetesDashboard where
+        parseJSON
+          = withObject "KubernetesDashboard"
+              (\ o -> KubernetesDashboard' <$> (o .:? "disabled"))
+
+instance ToJSON KubernetesDashboard where
+        toJSON KubernetesDashboard'{..}
+          = object
+              (catMaybes [("disabled" .=) <$> _kdDisabled])
+
+-- | Configuration for client certificates on the cluster.
+--
+-- /See:/ 'clientCertificateConfig' smart constructor.
+newtype ClientCertificateConfig =
+  ClientCertificateConfig'
+    { _cccIssueClientCertificate :: Maybe Bool
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ClientCertificateConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cccIssueClientCertificate'
+clientCertificateConfig
+    :: ClientCertificateConfig
+clientCertificateConfig =
+  ClientCertificateConfig' {_cccIssueClientCertificate = Nothing}
+
+
+-- | Issue a client certificate.
+cccIssueClientCertificate :: Lens' ClientCertificateConfig (Maybe Bool)
+cccIssueClientCertificate
+  = lens _cccIssueClientCertificate
+      (\ s a -> s{_cccIssueClientCertificate = a})
+
+instance FromJSON ClientCertificateConfig where
+        parseJSON
+          = withObject "ClientCertificateConfig"
+              (\ o ->
+                 ClientCertificateConfig' <$>
+                   (o .:? "issueClientCertificate"))
+
+instance ToJSON ClientCertificateConfig where
+        toJSON ClientCertificateConfig'{..}
+          = object
+              (catMaybes
+                 [("issueClientCertificate" .=) <$>
+                    _cccIssueClientCertificate])
+
+-- | SetLabelsRequest sets the Google Cloud Platform labels on a Google
+-- Container Engine cluster, which will in turn set them for Google Compute
+-- Engine resources used by that cluster
+--
+-- /See:/ 'setLabelsRequest' smart constructor.
+data SetLabelsRequest =
+  SetLabelsRequest'
+    { _slrResourceLabels   :: !(Maybe SetLabelsRequestResourceLabels)
+    , _slrZone             :: !(Maybe Text)
+    , _slrName             :: !(Maybe Text)
+    , _slrClusterId        :: !(Maybe Text)
+    , _slrProjectId        :: !(Maybe Text)
+    , _slrLabelFingerprint :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'SetLabelsRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'slrResourceLabels'
+--
+-- * 'slrZone'
+--
+-- * 'slrName'
+--
+-- * 'slrClusterId'
+--
+-- * 'slrProjectId'
+--
+-- * 'slrLabelFingerprint'
+setLabelsRequest
+    :: SetLabelsRequest
+setLabelsRequest =
+  SetLabelsRequest'
+    { _slrResourceLabels = Nothing
+    , _slrZone = Nothing
+    , _slrName = Nothing
+    , _slrClusterId = Nothing
+    , _slrProjectId = Nothing
+    , _slrLabelFingerprint = Nothing
+    }
+
+
+-- | The labels to set for that cluster.
+slrResourceLabels :: Lens' SetLabelsRequest (Maybe SetLabelsRequestResourceLabels)
+slrResourceLabels
+  = lens _slrResourceLabels
+      (\ s a -> s{_slrResourceLabels = a})
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
+slrZone :: Lens' SetLabelsRequest (Maybe Text)
+slrZone = lens _slrZone (\ s a -> s{_slrZone = a})
+
+-- | The name (project, location, cluster id) of the cluster to set labels.
+-- Specified in the format \'projects\/*\/locations\/*\/clusters\/*\'.
+slrName :: Lens' SetLabelsRequest (Maybe Text)
+slrName = lens _slrName (\ s a -> s{_slrName = a})
+
+-- | Deprecated. The name of the cluster. This field has been deprecated and
+-- replaced by the name field.
+slrClusterId :: Lens' SetLabelsRequest (Maybe Text)
+slrClusterId
+  = lens _slrClusterId (\ s a -> s{_slrClusterId = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/developers.google.com\/console\/help\/new\/#projectnumber).
+-- This field has been deprecated and replaced by the name field.
+slrProjectId :: Lens' SetLabelsRequest (Maybe Text)
+slrProjectId
+  = lens _slrProjectId (\ s a -> s{_slrProjectId = a})
+
+-- | The fingerprint of the previous set of labels for this resource, used to
+-- detect conflicts. The fingerprint is initially generated by Kubernetes
+-- Engine and changes after every request to modify or update labels. You
+-- must always provide an up-to-date fingerprint hash when updating or
+-- changing labels. Make a 'get()' request to the resource to get the
+-- latest fingerprint.
+slrLabelFingerprint :: Lens' SetLabelsRequest (Maybe Text)
+slrLabelFingerprint
+  = lens _slrLabelFingerprint
+      (\ s a -> s{_slrLabelFingerprint = a})
+
+instance FromJSON SetLabelsRequest where
+        parseJSON
+          = withObject "SetLabelsRequest"
+              (\ o ->
+                 SetLabelsRequest' <$>
+                   (o .:? "resourceLabels") <*> (o .:? "zone") <*>
+                     (o .:? "name")
+                     <*> (o .:? "clusterId")
+                     <*> (o .:? "projectId")
+                     <*> (o .:? "labelFingerprint"))
+
+instance ToJSON SetLabelsRequest where
+        toJSON SetLabelsRequest'{..}
+          = object
+              (catMaybes
+                 [("resourceLabels" .=) <$> _slrResourceLabels,
+                  ("zone" .=) <$> _slrZone, ("name" .=) <$> _slrName,
+                  ("clusterId" .=) <$> _slrClusterId,
+                  ("projectId" .=) <$> _slrProjectId,
+                  ("labelFingerprint" .=) <$> _slrLabelFingerprint])
+
+-- | GetOpenIDConfigResponse is an OIDC discovery document for the cluster.
+-- See the OpenID Connect Discovery 1.0 specification for details.
+--
+-- /See:/ 'getOpenIdConfigResponse' smart constructor.
+data GetOpenIdConfigResponse =
+  GetOpenIdConfigResponse'
+    { _goicrIdTokenSigningAlgValuesSupported :: !(Maybe [Text])
+    , _goicrResponseTypesSupported           :: !(Maybe [Text])
+    , _goicrJWKsURI                          :: !(Maybe Text)
+    , _goicrGrantTypes                       :: !(Maybe [Text])
+    , _goicrClaimsSupported                  :: !(Maybe [Text])
+    , _goicrIssuer                           :: !(Maybe Text)
+    , _goicrSubjectTypesSupported            :: !(Maybe [Text])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'GetOpenIdConfigResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'goicrIdTokenSigningAlgValuesSupported'
+--
+-- * 'goicrResponseTypesSupported'
+--
+-- * 'goicrJWKsURI'
+--
+-- * 'goicrGrantTypes'
+--
+-- * 'goicrClaimsSupported'
+--
+-- * 'goicrIssuer'
+--
+-- * 'goicrSubjectTypesSupported'
+getOpenIdConfigResponse
+    :: GetOpenIdConfigResponse
+getOpenIdConfigResponse =
+  GetOpenIdConfigResponse'
+    { _goicrIdTokenSigningAlgValuesSupported = Nothing
+    , _goicrResponseTypesSupported = Nothing
+    , _goicrJWKsURI = Nothing
+    , _goicrGrantTypes = Nothing
+    , _goicrClaimsSupported = Nothing
+    , _goicrIssuer = Nothing
+    , _goicrSubjectTypesSupported = Nothing
+    }
+
+
+-- | NOLINT
+goicrIdTokenSigningAlgValuesSupported :: Lens' GetOpenIdConfigResponse [Text]
+goicrIdTokenSigningAlgValuesSupported
+  = lens _goicrIdTokenSigningAlgValuesSupported
+      (\ s a ->
+         s{_goicrIdTokenSigningAlgValuesSupported = a})
+      . _Default
+      . _Coerce
+
+-- | NOLINT
+goicrResponseTypesSupported :: Lens' GetOpenIdConfigResponse [Text]
+goicrResponseTypesSupported
+  = lens _goicrResponseTypesSupported
+      (\ s a -> s{_goicrResponseTypesSupported = a})
+      . _Default
+      . _Coerce
+
+-- | NOLINT
+goicrJWKsURI :: Lens' GetOpenIdConfigResponse (Maybe Text)
+goicrJWKsURI
+  = lens _goicrJWKsURI (\ s a -> s{_goicrJWKsURI = a})
+
+-- | NOLINT
+goicrGrantTypes :: Lens' GetOpenIdConfigResponse [Text]
+goicrGrantTypes
+  = lens _goicrGrantTypes
+      (\ s a -> s{_goicrGrantTypes = a})
+      . _Default
+      . _Coerce
+
+-- | NOLINT
+goicrClaimsSupported :: Lens' GetOpenIdConfigResponse [Text]
+goicrClaimsSupported
+  = lens _goicrClaimsSupported
+      (\ s a -> s{_goicrClaimsSupported = a})
+      . _Default
+      . _Coerce
+
+-- | NOLINT
+goicrIssuer :: Lens' GetOpenIdConfigResponse (Maybe Text)
+goicrIssuer
+  = lens _goicrIssuer (\ s a -> s{_goicrIssuer = a})
+
+-- | NOLINT
+goicrSubjectTypesSupported :: Lens' GetOpenIdConfigResponse [Text]
+goicrSubjectTypesSupported
+  = lens _goicrSubjectTypesSupported
+      (\ s a -> s{_goicrSubjectTypesSupported = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON GetOpenIdConfigResponse where
+        parseJSON
+          = withObject "GetOpenIdConfigResponse"
+              (\ o ->
+                 GetOpenIdConfigResponse' <$>
+                   (o .:? "id_token_signing_alg_values_supported" .!=
+                      mempty)
+                     <*> (o .:? "response_types_supported" .!= mempty)
+                     <*> (o .:? "jwks_uri")
+                     <*> (o .:? "grant_types" .!= mempty)
+                     <*> (o .:? "claims_supported" .!= mempty)
+                     <*> (o .:? "issuer")
+                     <*> (o .:? "subject_types_supported" .!= mempty))
+
+instance ToJSON GetOpenIdConfigResponse where
+        toJSON GetOpenIdConfigResponse'{..}
+          = object
+              (catMaybes
+                 [("id_token_signing_alg_values_supported" .=) <$>
+                    _goicrIdTokenSigningAlgValuesSupported,
+                  ("response_types_supported" .=) <$>
+                    _goicrResponseTypesSupported,
+                  ("jwks_uri" .=) <$> _goicrJWKsURI,
+                  ("grant_types" .=) <$> _goicrGrantTypes,
+                  ("claims_supported" .=) <$> _goicrClaimsSupported,
+                  ("issuer" .=) <$> _goicrIssuer,
+                  ("subject_types_supported" .=) <$>
+                    _goicrSubjectTypesSupported])
+
+-- | Jwk is a JSON Web Key as specified in RFC 7517
+--
+-- /See:/ 'jwk' smart constructor.
+data JWK =
+  JWK'
+    { _jCrv :: !(Maybe Text)
+    , _jAlg :: !(Maybe Text)
+    , _jUse :: !(Maybe Text)
+    , _jKid :: !(Maybe Text)
+    , _jN   :: !(Maybe Text)
+    , _jE   :: !(Maybe Text)
+    , _jX   :: !(Maybe Text)
+    , _jKty :: !(Maybe Text)
+    , _jY   :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'JWK' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'jCrv'
+--
+-- * 'jAlg'
+--
+-- * 'jUse'
+--
+-- * 'jKid'
+--
+-- * 'jN'
+--
+-- * 'jE'
+--
+-- * 'jX'
+--
+-- * 'jKty'
+--
+-- * 'jY'
+jwk
+    :: JWK
+jwk =
+  JWK'
+    { _jCrv = Nothing
+    , _jAlg = Nothing
+    , _jUse = Nothing
+    , _jKid = Nothing
+    , _jN = Nothing
+    , _jE = Nothing
+    , _jX = Nothing
+    , _jKty = Nothing
+    , _jY = Nothing
+    }
+
+
+-- | NOLINT
+jCrv :: Lens' JWK (Maybe Text)
+jCrv = lens _jCrv (\ s a -> s{_jCrv = a})
+
+-- | NOLINT
+jAlg :: Lens' JWK (Maybe Text)
+jAlg = lens _jAlg (\ s a -> s{_jAlg = a})
+
+-- | NOLINT
+jUse :: Lens' JWK (Maybe Text)
+jUse = lens _jUse (\ s a -> s{_jUse = a})
+
+-- | NOLINT
+jKid :: Lens' JWK (Maybe Text)
+jKid = lens _jKid (\ s a -> s{_jKid = a})
+
+-- | Fields for RSA keys. NOLINT
+jN :: Lens' JWK (Maybe Text)
+jN = lens _jN (\ s a -> s{_jN = a})
+
+-- | NOLINT
+jE :: Lens' JWK (Maybe Text)
+jE = lens _jE (\ s a -> s{_jE = a})
+
+-- | Fields for ECDSA keys. NOLINT
+jX :: Lens' JWK (Maybe Text)
+jX = lens _jX (\ s a -> s{_jX = a})
+
+-- | NOLINT
+jKty :: Lens' JWK (Maybe Text)
+jKty = lens _jKty (\ s a -> s{_jKty = a})
+
+-- | NOLINT
+jY :: Lens' JWK (Maybe Text)
+jY = lens _jY (\ s a -> s{_jY = a})
+
+instance FromJSON JWK where
+        parseJSON
+          = withObject "JWK"
+              (\ o ->
+                 JWK' <$>
+                   (o .:? "crv") <*> (o .:? "alg") <*> (o .:? "use") <*>
+                     (o .:? "kid")
+                     <*> (o .:? "n")
+                     <*> (o .:? "e")
+                     <*> (o .:? "x")
+                     <*> (o .:? "kty")
+                     <*> (o .:? "y"))
+
+instance ToJSON JWK where
+        toJSON JWK'{..}
+          = object
+              (catMaybes
+                 [("crv" .=) <$> _jCrv, ("alg" .=) <$> _jAlg,
+                  ("use" .=) <$> _jUse, ("kid" .=) <$> _jKid,
+                  ("n" .=) <$> _jN, ("e" .=) <$> _jE, ("x" .=) <$> _jX,
+                  ("kty" .=) <$> _jKty, ("y" .=) <$> _jY])
+
+-- | MaintenanceWindow defines the maintenance window to be used for the
+-- cluster.
+--
+-- /See:/ 'maintenanceWindow' smart constructor.
+newtype MaintenanceWindow =
+  MaintenanceWindow'
+    { _mwDailyMaintenanceWindow :: Maybe DailyMaintenanceWindow
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'MaintenanceWindow' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mwDailyMaintenanceWindow'
+maintenanceWindow
+    :: MaintenanceWindow
+maintenanceWindow = MaintenanceWindow' {_mwDailyMaintenanceWindow = Nothing}
+
+
+-- | DailyMaintenanceWindow specifies a daily maintenance operation window.
+mwDailyMaintenanceWindow :: Lens' MaintenanceWindow (Maybe DailyMaintenanceWindow)
+mwDailyMaintenanceWindow
+  = lens _mwDailyMaintenanceWindow
+      (\ s a -> s{_mwDailyMaintenanceWindow = a})
+
+instance FromJSON MaintenanceWindow where
+        parseJSON
+          = withObject "MaintenanceWindow"
+              (\ o ->
+                 MaintenanceWindow' <$>
+                   (o .:? "dailyMaintenanceWindow"))
+
+instance ToJSON MaintenanceWindow where
+        toJSON MaintenanceWindow'{..}
+          = object
+              (catMaybes
+                 [("dailyMaintenanceWindow" .=) <$>
+                    _mwDailyMaintenanceWindow])
+
+-- | Constraints applied to pods.
+--
+-- /See:/ 'maxPodsConstraint' smart constructor.
+newtype MaxPodsConstraint =
+  MaxPodsConstraint'
+    { _mpcMaxPodsPerNode :: Maybe (Textual Int64)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'MaxPodsConstraint' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mpcMaxPodsPerNode'
+maxPodsConstraint
+    :: MaxPodsConstraint
+maxPodsConstraint = MaxPodsConstraint' {_mpcMaxPodsPerNode = Nothing}
+
+
+-- | Constraint enforced on the max num of pods per node.
+mpcMaxPodsPerNode :: Lens' MaxPodsConstraint (Maybe Int64)
+mpcMaxPodsPerNode
+  = lens _mpcMaxPodsPerNode
+      (\ s a -> s{_mpcMaxPodsPerNode = a})
+      . mapping _Coerce
+
+instance FromJSON MaxPodsConstraint where
+        parseJSON
+          = withObject "MaxPodsConstraint"
+              (\ o ->
+                 MaxPodsConstraint' <$> (o .:? "maxPodsPerNode"))
+
+instance ToJSON MaxPodsConstraint where
+        toJSON MaxPodsConstraint'{..}
+          = object
+              (catMaybes
+                 [("maxPodsPerNode" .=) <$> _mpcMaxPodsPerNode])
+
+-- | Configuration for controlling how IPs are allocated in the cluster.
+--
+-- /See:/ 'ipAllocationPolicy' smart constructor.
+data IPAllocationPolicy =
+  IPAllocationPolicy'
+    { _iapServicesSecondaryRangeName :: !(Maybe Text)
+    , _iapTpuIPv4CIdRBlock           :: !(Maybe Text)
+    , _iapNodeIPv4CIdR               :: !(Maybe Text)
+    , _iapUseIPAliases               :: !(Maybe Bool)
+    , _iapClusterIPv4CIdR            :: !(Maybe Text)
+    , _iapSubnetworkName             :: !(Maybe Text)
+    , _iapClusterSecondaryRangeName  :: !(Maybe Text)
+    , _iapNodeIPv4CIdRBlock          :: !(Maybe Text)
+    , _iapServicesIPv4CIdR           :: !(Maybe Text)
+    , _iapClusterIPv4CIdRBlock       :: !(Maybe Text)
+    , _iapServicesIPv4CIdRBlock      :: !(Maybe Text)
+    , _iapCreateSubnetwork           :: !(Maybe Bool)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'IPAllocationPolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iapServicesSecondaryRangeName'
+--
+-- * 'iapTpuIPv4CIdRBlock'
+--
+-- * 'iapNodeIPv4CIdR'
+--
+-- * 'iapUseIPAliases'
+--
+-- * 'iapClusterIPv4CIdR'
+--
+-- * 'iapSubnetworkName'
+--
+-- * 'iapClusterSecondaryRangeName'
+--
+-- * 'iapNodeIPv4CIdRBlock'
+--
+-- * 'iapServicesIPv4CIdR'
+--
+-- * 'iapClusterIPv4CIdRBlock'
+--
+-- * 'iapServicesIPv4CIdRBlock'
+--
+-- * 'iapCreateSubnetwork'
+ipAllocationPolicy
+    :: IPAllocationPolicy
+ipAllocationPolicy =
+  IPAllocationPolicy'
+    { _iapServicesSecondaryRangeName = Nothing
+    , _iapTpuIPv4CIdRBlock = Nothing
+    , _iapNodeIPv4CIdR = Nothing
+    , _iapUseIPAliases = Nothing
+    , _iapClusterIPv4CIdR = Nothing
+    , _iapSubnetworkName = Nothing
+    , _iapClusterSecondaryRangeName = Nothing
+    , _iapNodeIPv4CIdRBlock = Nothing
+    , _iapServicesIPv4CIdR = Nothing
+    , _iapClusterIPv4CIdRBlock = Nothing
+    , _iapServicesIPv4CIdRBlock = Nothing
+    , _iapCreateSubnetwork = Nothing
+    }
+
+
+-- | The name of the secondary range to be used as for the services CIDR
+-- block. The secondary range will be used for service ClusterIPs. This
+-- must be an existing secondary range associated with the cluster
+-- subnetwork. This field is only applicable with use_ip_aliases is true
+-- and create_subnetwork is false.
+iapServicesSecondaryRangeName :: Lens' IPAllocationPolicy (Maybe Text)
+iapServicesSecondaryRangeName
+  = lens _iapServicesSecondaryRangeName
+      (\ s a -> s{_iapServicesSecondaryRangeName = a})
+
+-- | The IP address range of the Cloud TPUs in this cluster. If unspecified,
+-- a range will be automatically chosen with the default size. This field
+-- is only applicable when \`use_ip_aliases\` is true. If unspecified, the
+-- range will use the default size. Set to \/netmask (e.g. \`\/14\`) to
+-- have a range chosen with a specific netmask. Set to a
+-- [CIDR](http:\/\/en.wikipedia.org\/wiki\/Classless_Inter-Domain_Routing)
+-- notation (e.g. \`10.96.0.0\/14\`) from the RFC-1918 private networks
+-- (e.g. \`10.0.0.0\/8\`, \`172.16.0.0\/12\`, \`192.168.0.0\/16\`) to pick
+-- a specific range to use.
+iapTpuIPv4CIdRBlock :: Lens' IPAllocationPolicy (Maybe Text)
+iapTpuIPv4CIdRBlock
+  = lens _iapTpuIPv4CIdRBlock
+      (\ s a -> s{_iapTpuIPv4CIdRBlock = a})
+
+-- | This field is deprecated, use node_ipv4_cidr_block.
+iapNodeIPv4CIdR :: Lens' IPAllocationPolicy (Maybe Text)
+iapNodeIPv4CIdR
+  = lens _iapNodeIPv4CIdR
+      (\ s a -> s{_iapNodeIPv4CIdR = a})
+
+-- | Whether alias IPs will be used for pod IPs in the cluster.
+iapUseIPAliases :: Lens' IPAllocationPolicy (Maybe Bool)
+iapUseIPAliases
+  = lens _iapUseIPAliases
+      (\ s a -> s{_iapUseIPAliases = a})
+
+-- | This field is deprecated, use cluster_ipv4_cidr_block.
+iapClusterIPv4CIdR :: Lens' IPAllocationPolicy (Maybe Text)
+iapClusterIPv4CIdR
+  = lens _iapClusterIPv4CIdR
+      (\ s a -> s{_iapClusterIPv4CIdR = a})
+
+-- | A custom subnetwork name to be used if \`create_subnetwork\` is true. If
+-- this field is empty, then an automatic name will be chosen for the new
+-- subnetwork.
+iapSubnetworkName :: Lens' IPAllocationPolicy (Maybe Text)
+iapSubnetworkName
+  = lens _iapSubnetworkName
+      (\ s a -> s{_iapSubnetworkName = a})
+
+-- | The name of the secondary range to be used for the cluster CIDR block.
+-- The secondary range will be used for pod IP addresses. This must be an
+-- existing secondary range associated with the cluster subnetwork. This
+-- field is only applicable with use_ip_aliases is true and
+-- create_subnetwork is false.
+iapClusterSecondaryRangeName :: Lens' IPAllocationPolicy (Maybe Text)
+iapClusterSecondaryRangeName
+  = lens _iapClusterSecondaryRangeName
+      (\ s a -> s{_iapClusterSecondaryRangeName = a})
+
+-- | The IP address range of the instance IPs in this cluster. This is
+-- applicable only if \`create_subnetwork\` is true. Set to blank to have a
+-- range chosen with the default size. Set to \/netmask (e.g. \`\/14\`) to
+-- have a range chosen with a specific netmask. Set to a
+-- [CIDR](http:\/\/en.wikipedia.org\/wiki\/Classless_Inter-Domain_Routing)
+-- notation (e.g. \`10.96.0.0\/14\`) from the RFC-1918 private networks
+-- (e.g. \`10.0.0.0\/8\`, \`172.16.0.0\/12\`, \`192.168.0.0\/16\`) to pick
+-- a specific range to use.
+iapNodeIPv4CIdRBlock :: Lens' IPAllocationPolicy (Maybe Text)
+iapNodeIPv4CIdRBlock
+  = lens _iapNodeIPv4CIdRBlock
+      (\ s a -> s{_iapNodeIPv4CIdRBlock = a})
+
+-- | This field is deprecated, use services_ipv4_cidr_block.
+iapServicesIPv4CIdR :: Lens' IPAllocationPolicy (Maybe Text)
+iapServicesIPv4CIdR
+  = lens _iapServicesIPv4CIdR
+      (\ s a -> s{_iapServicesIPv4CIdR = a})
+
+-- | The IP address range for the cluster pod IPs. If this field is set, then
+-- \`cluster.cluster_ipv4_cidr\` must be left blank. This field is only
+-- applicable when \`use_ip_aliases\` is true. Set to blank to have a range
+-- chosen with the default size. Set to \/netmask (e.g. \`\/14\`) to have a
+-- range chosen with a specific netmask. Set to a
+-- [CIDR](http:\/\/en.wikipedia.org\/wiki\/Classless_Inter-Domain_Routing)
+-- notation (e.g. \`10.96.0.0\/14\`) from the RFC-1918 private networks
+-- (e.g. \`10.0.0.0\/8\`, \`172.16.0.0\/12\`, \`192.168.0.0\/16\`) to pick
+-- a specific range to use.
+iapClusterIPv4CIdRBlock :: Lens' IPAllocationPolicy (Maybe Text)
+iapClusterIPv4CIdRBlock
+  = lens _iapClusterIPv4CIdRBlock
+      (\ s a -> s{_iapClusterIPv4CIdRBlock = a})
+
+-- | The IP address range of the services IPs in this cluster. If blank, a
+-- range will be automatically chosen with the default size. This field is
+-- only applicable when \`use_ip_aliases\` is true. Set to blank to have a
+-- range chosen with the default size. Set to \/netmask (e.g. \`\/14\`) to
+-- have a range chosen with a specific netmask. Set to a
+-- [CIDR](http:\/\/en.wikipedia.org\/wiki\/Classless_Inter-Domain_Routing)
+-- notation (e.g. \`10.96.0.0\/14\`) from the RFC-1918 private networks
+-- (e.g. \`10.0.0.0\/8\`, \`172.16.0.0\/12\`, \`192.168.0.0\/16\`) to pick
+-- a specific range to use.
+iapServicesIPv4CIdRBlock :: Lens' IPAllocationPolicy (Maybe Text)
+iapServicesIPv4CIdRBlock
+  = lens _iapServicesIPv4CIdRBlock
+      (\ s a -> s{_iapServicesIPv4CIdRBlock = a})
+
+-- | Whether a new subnetwork will be created automatically for the cluster.
+-- This field is only applicable when \`use_ip_aliases\` is true.
+iapCreateSubnetwork :: Lens' IPAllocationPolicy (Maybe Bool)
+iapCreateSubnetwork
+  = lens _iapCreateSubnetwork
+      (\ s a -> s{_iapCreateSubnetwork = a})
+
+instance FromJSON IPAllocationPolicy where
+        parseJSON
+          = withObject "IPAllocationPolicy"
+              (\ o ->
+                 IPAllocationPolicy' <$>
+                   (o .:? "servicesSecondaryRangeName") <*>
+                     (o .:? "tpuIpv4CidrBlock")
+                     <*> (o .:? "nodeIpv4Cidr")
+                     <*> (o .:? "useIpAliases")
+                     <*> (o .:? "clusterIpv4Cidr")
+                     <*> (o .:? "subnetworkName")
+                     <*> (o .:? "clusterSecondaryRangeName")
+                     <*> (o .:? "nodeIpv4CidrBlock")
+                     <*> (o .:? "servicesIpv4Cidr")
+                     <*> (o .:? "clusterIpv4CidrBlock")
+                     <*> (o .:? "servicesIpv4CidrBlock")
+                     <*> (o .:? "createSubnetwork"))
+
+instance ToJSON IPAllocationPolicy where
+        toJSON IPAllocationPolicy'{..}
+          = object
+              (catMaybes
+                 [("servicesSecondaryRangeName" .=) <$>
+                    _iapServicesSecondaryRangeName,
+                  ("tpuIpv4CidrBlock" .=) <$> _iapTpuIPv4CIdRBlock,
+                  ("nodeIpv4Cidr" .=) <$> _iapNodeIPv4CIdR,
+                  ("useIpAliases" .=) <$> _iapUseIPAliases,
+                  ("clusterIpv4Cidr" .=) <$> _iapClusterIPv4CIdR,
+                  ("subnetworkName" .=) <$> _iapSubnetworkName,
+                  ("clusterSecondaryRangeName" .=) <$>
+                    _iapClusterSecondaryRangeName,
+                  ("nodeIpv4CidrBlock" .=) <$> _iapNodeIPv4CIdRBlock,
+                  ("servicesIpv4Cidr" .=) <$> _iapServicesIPv4CIdR,
+                  ("clusterIpv4CidrBlock" .=) <$>
+                    _iapClusterIPv4CIdRBlock,
+                  ("servicesIpv4CidrBlock" .=) <$>
+                    _iapServicesIPv4CIdRBlock,
+                  ("createSubnetwork" .=) <$> _iapCreateSubnetwork])
+
+-- | Configuration for the addons that can be automatically spun up in the
+-- cluster, enabling additional functionality.
+--
+-- /See:/ 'addonsConfig' smart constructor.
+data AddonsConfig =
+  AddonsConfig'
+    { _acNetworkPolicyConfig      :: !(Maybe NetworkPolicyConfig)
+    , _acHorizontalPodAutoscaling :: !(Maybe HorizontalPodAutoscaling)
+    , _acHTTPLoadBalancing        :: !(Maybe HTTPLoadBalancing)
+    , _acKubernetesDashboard      :: !(Maybe KubernetesDashboard)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'AddonsConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'acNetworkPolicyConfig'
+--
+-- * 'acHorizontalPodAutoscaling'
+--
+-- * 'acHTTPLoadBalancing'
+--
+-- * 'acKubernetesDashboard'
+addonsConfig
+    :: AddonsConfig
+addonsConfig =
+  AddonsConfig'
+    { _acNetworkPolicyConfig = Nothing
+    , _acHorizontalPodAutoscaling = Nothing
+    , _acHTTPLoadBalancing = Nothing
+    , _acKubernetesDashboard = Nothing
+    }
+
+
+-- | Configuration for NetworkPolicy. This only tracks whether the addon is
+-- enabled or not on the Master, it does not track whether network policy
+-- is enabled for the nodes.
+acNetworkPolicyConfig :: Lens' AddonsConfig (Maybe NetworkPolicyConfig)
+acNetworkPolicyConfig
+  = lens _acNetworkPolicyConfig
+      (\ s a -> s{_acNetworkPolicyConfig = a})
+
+-- | Configuration for the horizontal pod autoscaling feature, which
+-- increases or decreases the number of replica pods a replication
+-- controller has based on the resource usage of the existing pods.
+acHorizontalPodAutoscaling :: Lens' AddonsConfig (Maybe HorizontalPodAutoscaling)
+acHorizontalPodAutoscaling
+  = lens _acHorizontalPodAutoscaling
+      (\ s a -> s{_acHorizontalPodAutoscaling = a})
+
+-- | Configuration for the HTTP (L7) load balancing controller addon, which
+-- makes it easy to set up HTTP load balancers for services in a cluster.
+acHTTPLoadBalancing :: Lens' AddonsConfig (Maybe HTTPLoadBalancing)
+acHTTPLoadBalancing
+  = lens _acHTTPLoadBalancing
+      (\ s a -> s{_acHTTPLoadBalancing = a})
+
+-- | Configuration for the Kubernetes Dashboard.
+acKubernetesDashboard :: Lens' AddonsConfig (Maybe KubernetesDashboard)
+acKubernetesDashboard
+  = lens _acKubernetesDashboard
+      (\ s a -> s{_acKubernetesDashboard = a})
+
+instance FromJSON AddonsConfig where
+        parseJSON
+          = withObject "AddonsConfig"
+              (\ o ->
+                 AddonsConfig' <$>
+                   (o .:? "networkPolicyConfig") <*>
+                     (o .:? "horizontalPodAutoscaling")
+                     <*> (o .:? "httpLoadBalancing")
+                     <*> (o .:? "kubernetesDashboard"))
+
+instance ToJSON AddonsConfig where
+        toJSON AddonsConfig'{..}
+          = object
+              (catMaybes
+                 [("networkPolicyConfig" .=) <$>
+                    _acNetworkPolicyConfig,
+                  ("horizontalPodAutoscaling" .=) <$>
+                    _acHorizontalPodAutoscaling,
+                  ("httpLoadBalancing" .=) <$> _acHTTPLoadBalancing,
+                  ("kubernetesDashboard" .=) <$>
+                    _acKubernetesDashboard])
+
+-- | NetworkConfig reports the relative names of network & subnetwork.
+--
+-- /See:/ 'networkConfig' smart constructor.
+data NetworkConfig =
+  NetworkConfig'
+    { _ncNetwork    :: !(Maybe Text)
+    , _ncSubnetwork :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'NetworkConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ncNetwork'
+--
+-- * 'ncSubnetwork'
+networkConfig
+    :: NetworkConfig
+networkConfig = NetworkConfig' {_ncNetwork = Nothing, _ncSubnetwork = Nothing}
+
+
+-- | Output only. The relative name of the Google Compute Engine
+-- network(\/compute\/docs\/networks-and-firewalls#networks) to which the
+-- cluster is connected. Example:
+-- projects\/my-project\/global\/networks\/my-network
+ncNetwork :: Lens' NetworkConfig (Maybe Text)
+ncNetwork
+  = lens _ncNetwork (\ s a -> s{_ncNetwork = a})
+
+-- | Output only. The relative name of the Google Compute Engine
+-- [subnetwork](\/compute\/docs\/vpc) to which the cluster is connected.
+-- Example:
+-- projects\/my-project\/regions\/us-central1\/subnetworks\/my-subnet
+ncSubnetwork :: Lens' NetworkConfig (Maybe Text)
+ncSubnetwork
+  = lens _ncSubnetwork (\ s a -> s{_ncSubnetwork = a})
+
+instance FromJSON NetworkConfig where
+        parseJSON
+          = withObject "NetworkConfig"
+              (\ o ->
+                 NetworkConfig' <$>
+                   (o .:? "network") <*> (o .:? "subnetwork"))
+
+instance ToJSON NetworkConfig where
+        toJSON NetworkConfig'{..}
+          = object
+              (catMaybes
+                 [("network" .=) <$> _ncNetwork,
+                  ("subnetwork" .=) <$> _ncSubnetwork])
+
+-- | NodePool contains the name and configuration for a cluster\'s node pool.
+-- Node pools are a set of nodes (i.e. VM\'s), with a common configuration
+-- and specification, under the control of the cluster master. They may
+-- have a set of Kubernetes labels applied to them, which may be used to
+-- reference them during pod scheduling. They may also be resized up or
+-- down, to accommodate the workload.
+--
+-- /See:/ 'nodePool' smart constructor.
+data NodePool =
+  NodePool'
+    { _npStatus            :: !(Maybe NodePoolStatus)
+    , _npAutoscaling       :: !(Maybe NodePoolAutoscaling)
+    , _npConfig            :: !(Maybe NodeConfig)
+    , _npInitialNodeCount  :: !(Maybe (Textual Int32))
+    , _npManagement        :: !(Maybe NodeManagement)
+    , _npMaxPodsConstraint :: !(Maybe MaxPodsConstraint)
+    , _npSelfLink          :: !(Maybe Text)
+    , _npName              :: !(Maybe Text)
+    , _npStatusMessage     :: !(Maybe Text)
+    , _npVersion           :: !(Maybe Text)
+    , _npConditions        :: !(Maybe [StatusCondition])
+    , _npInstanceGroupURLs :: !(Maybe [Text])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'NodePool' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'npStatus'
+--
+-- * 'npAutoscaling'
+--
+-- * 'npConfig'
+--
+-- * 'npInitialNodeCount'
+--
+-- * 'npManagement'
+--
+-- * 'npMaxPodsConstraint'
+--
+-- * 'npSelfLink'
+--
+-- * 'npName'
+--
+-- * 'npStatusMessage'
+--
+-- * 'npVersion'
+--
+-- * 'npConditions'
+--
+-- * 'npInstanceGroupURLs'
+nodePool
+    :: NodePool
+nodePool =
+  NodePool'
+    { _npStatus = Nothing
+    , _npAutoscaling = Nothing
+    , _npConfig = Nothing
+    , _npInitialNodeCount = Nothing
+    , _npManagement = Nothing
+    , _npMaxPodsConstraint = Nothing
+    , _npSelfLink = Nothing
+    , _npName = Nothing
+    , _npStatusMessage = Nothing
+    , _npVersion = Nothing
+    , _npConditions = Nothing
+    , _npInstanceGroupURLs = Nothing
+    }
+
+
+-- | [Output only] The status of the nodes in this pool instance.
+npStatus :: Lens' NodePool (Maybe NodePoolStatus)
+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})
+
+-- | The initial node count for the pool. You must ensure that your Compute
+-- Engine </compute/docs/resource-quotas resource quota> is sufficient for
+-- this number of instances. You must also have available firewall and
+-- routes quota.
+npInitialNodeCount :: Lens' NodePool (Maybe Int32)
+npInitialNodeCount
+  = lens _npInitialNodeCount
+      (\ s a -> s{_npInitialNodeCount = a})
+      . mapping _Coerce
+
+-- | NodeManagement configuration for this NodePool.
+npManagement :: Lens' NodePool (Maybe NodeManagement)
+npManagement
+  = lens _npManagement (\ s a -> s{_npManagement = a})
+
+-- | The constraint on the maximum number of pods that can be run
+-- simultaneously on a node in the node pool.
+npMaxPodsConstraint :: Lens' NodePool (Maybe MaxPodsConstraint)
+npMaxPodsConstraint
+  = lens _npMaxPodsConstraint
+      (\ s a -> s{_npMaxPodsConstraint = a})
+
+-- | [Output only] Server-defined URL for the resource.
+npSelfLink :: Lens' NodePool (Maybe Text)
+npSelfLink
+  = lens _npSelfLink (\ s a -> s{_npSelfLink = a})
+
+-- | The name of the node pool.
+npName :: Lens' NodePool (Maybe Text)
+npName = lens _npName (\ s a -> s{_npName = a})
+
+-- | [Output only] Additional information about the current status of this
+-- node pool instance, if available.
+npStatusMessage :: Lens' NodePool (Maybe Text)
+npStatusMessage
+  = lens _npStatusMessage
+      (\ s a -> s{_npStatusMessage = a})
+
+-- | The version of the Kubernetes of this node.
+npVersion :: Lens' NodePool (Maybe Text)
+npVersion
+  = lens _npVersion (\ s a -> s{_npVersion = a})
+
+-- | Which conditions caused the current node pool state.
+npConditions :: Lens' NodePool [StatusCondition]
+npConditions
+  = lens _npConditions (\ s a -> s{_npConditions = a})
+      . _Default
+      . _Coerce
+
+-- | [Output only] The resource URLs of the [managed instance
+-- groups](\/compute\/docs\/instance-groups\/creating-groups-of-managed-instances)
+-- associated with this node pool.
+npInstanceGroupURLs :: Lens' NodePool [Text]
+npInstanceGroupURLs
+  = lens _npInstanceGroupURLs
+      (\ s a -> s{_npInstanceGroupURLs = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON NodePool where
+        parseJSON
+          = withObject "NodePool"
+              (\ o ->
+                 NodePool' <$>
+                   (o .:? "status") <*> (o .:? "autoscaling") <*>
+                     (o .:? "config")
+                     <*> (o .:? "initialNodeCount")
+                     <*> (o .:? "management")
+                     <*> (o .:? "maxPodsConstraint")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "statusMessage")
+                     <*> (o .:? "version")
+                     <*> (o .:? "conditions" .!= mempty)
+                     <*> (o .:? "instanceGroupUrls" .!= mempty))
+
+instance ToJSON NodePool where
+        toJSON NodePool'{..}
+          = object
+              (catMaybes
+                 [("status" .=) <$> _npStatus,
+                  ("autoscaling" .=) <$> _npAutoscaling,
+                  ("config" .=) <$> _npConfig,
+                  ("initialNodeCount" .=) <$> _npInitialNodeCount,
+                  ("management" .=) <$> _npManagement,
+                  ("maxPodsConstraint" .=) <$> _npMaxPodsConstraint,
+                  ("selfLink" .=) <$> _npSelfLink,
+                  ("name" .=) <$> _npName,
+                  ("statusMessage" .=) <$> _npStatusMessage,
+                  ("version" .=) <$> _npVersion,
+                  ("conditions" .=) <$> _npConditions,
+                  ("instanceGroupUrls" .=) <$> _npInstanceGroupURLs])
+
+-- | SetNodePoolManagementRequest sets the node management properties of a
+-- node pool.
+--
+-- /See:/ 'setNodePoolManagementRequest' smart constructor.
+data SetNodePoolManagementRequest =
+  SetNodePoolManagementRequest'
+    { _snpmrManagement :: !(Maybe NodeManagement)
+    , _snpmrZone       :: !(Maybe Text)
+    , _snpmrNodePoolId :: !(Maybe Text)
+    , _snpmrName       :: !(Maybe Text)
+    , _snpmrClusterId  :: !(Maybe Text)
+    , _snpmrProjectId  :: !(Maybe Text)
+    }
+  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'
+--
+-- * 'snpmrZone'
+--
+-- * 'snpmrNodePoolId'
+--
+-- * 'snpmrName'
+--
+-- * 'snpmrClusterId'
+--
+-- * 'snpmrProjectId'
+setNodePoolManagementRequest
+    :: SetNodePoolManagementRequest
+setNodePoolManagementRequest =
+  SetNodePoolManagementRequest'
+    { _snpmrManagement = Nothing
+    , _snpmrZone = Nothing
+    , _snpmrNodePoolId = Nothing
+    , _snpmrName = Nothing
+    , _snpmrClusterId = Nothing
+    , _snpmrProjectId = Nothing
+    }
+
+
+-- | NodeManagement configuration for the node pool.
+snpmrManagement :: Lens' SetNodePoolManagementRequest (Maybe NodeManagement)
+snpmrManagement
+  = lens _snpmrManagement
+      (\ s a -> s{_snpmrManagement = a})
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
+snpmrZone :: Lens' SetNodePoolManagementRequest (Maybe Text)
+snpmrZone
+  = lens _snpmrZone (\ s a -> s{_snpmrZone = a})
+
+-- | Deprecated. The name of the node pool to update. This field has been
+-- deprecated and replaced by the name field.
+snpmrNodePoolId :: Lens' SetNodePoolManagementRequest (Maybe Text)
+snpmrNodePoolId
+  = lens _snpmrNodePoolId
+      (\ s a -> s{_snpmrNodePoolId = a})
+
+-- | The name (project, location, cluster, node pool id) of the node pool to
+-- set management properties. Specified in the format
+-- \'projects\/*\/locations\/*\/clusters\/*\/nodePools\/*\'.
+snpmrName :: Lens' SetNodePoolManagementRequest (Maybe Text)
+snpmrName
+  = lens _snpmrName (\ s a -> s{_snpmrName = a})
+
+-- | Deprecated. The name of the cluster to update. This field has been
+-- deprecated and replaced by the name field.
+snpmrClusterId :: Lens' SetNodePoolManagementRequest (Maybe Text)
+snpmrClusterId
+  = lens _snpmrClusterId
+      (\ s a -> s{_snpmrClusterId = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
+-- field has been deprecated and replaced by the name field.
+snpmrProjectId :: Lens' SetNodePoolManagementRequest (Maybe Text)
+snpmrProjectId
+  = lens _snpmrProjectId
+      (\ s a -> s{_snpmrProjectId = a})
+
+instance FromJSON SetNodePoolManagementRequest where
+        parseJSON
+          = withObject "SetNodePoolManagementRequest"
+              (\ o ->
+                 SetNodePoolManagementRequest' <$>
+                   (o .:? "management") <*> (o .:? "zone") <*>
+                     (o .:? "nodePoolId")
+                     <*> (o .:? "name")
+                     <*> (o .:? "clusterId")
+                     <*> (o .:? "projectId"))
+
+instance ToJSON SetNodePoolManagementRequest where
+        toJSON SetNodePoolManagementRequest'{..}
+          = object
+              (catMaybes
+                 [("management" .=) <$> _snpmrManagement,
+                  ("zone" .=) <$> _snpmrZone,
+                  ("nodePoolId" .=) <$> _snpmrNodePoolId,
+                  ("name" .=) <$> _snpmrName,
+                  ("clusterId" .=) <$> _snpmrClusterId,
+                  ("projectId" .=) <$> _snpmrProjectId])
+
+-- | Configuration options for the master authorized networks feature.
+-- Enabled master authorized networks will disallow all external traffic to
+-- access Kubernetes master through HTTPS except traffic from the given
+-- CIDR blocks, Google Compute Engine Public IPs and Google Prod IPs.
+--
+-- /See:/ 'masterAuthorizedNetworksConfig' smart constructor.
+data MasterAuthorizedNetworksConfig =
+  MasterAuthorizedNetworksConfig'
+    { _mancEnabled    :: !(Maybe Bool)
+    , _mancCIdRBlocks :: !(Maybe [CIdRBlock])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'MasterAuthorizedNetworksConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mancEnabled'
+--
+-- * 'mancCIdRBlocks'
+masterAuthorizedNetworksConfig
+    :: MasterAuthorizedNetworksConfig
+masterAuthorizedNetworksConfig =
+  MasterAuthorizedNetworksConfig'
+    {_mancEnabled = Nothing, _mancCIdRBlocks = Nothing}
+
+
+-- | Whether or not master authorized networks is enabled.
+mancEnabled :: Lens' MasterAuthorizedNetworksConfig (Maybe Bool)
+mancEnabled
+  = lens _mancEnabled (\ s a -> s{_mancEnabled = a})
+
+-- | cidr_blocks define up to 10 external networks that could access
+-- Kubernetes master through HTTPS.
+mancCIdRBlocks :: Lens' MasterAuthorizedNetworksConfig [CIdRBlock]
+mancCIdRBlocks
+  = lens _mancCIdRBlocks
+      (\ s a -> s{_mancCIdRBlocks = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON MasterAuthorizedNetworksConfig
+         where
+        parseJSON
+          = withObject "MasterAuthorizedNetworksConfig"
+              (\ o ->
+                 MasterAuthorizedNetworksConfig' <$>
+                   (o .:? "enabled") <*>
+                     (o .:? "cidrBlocks" .!= mempty))
+
+instance ToJSON MasterAuthorizedNetworksConfig where
+        toJSON MasterAuthorizedNetworksConfig'{..}
+          = object
+              (catMaybes
+                 [("enabled" .=) <$> _mancEnabled,
+                  ("cidrBlocks" .=) <$> _mancCIdRBlocks])
+
+-- | Configuration for the legacy Attribute Based Access Control
+-- authorization mode.
+--
+-- /See:/ 'legacyAbac' smart constructor.
+newtype LegacyAbac =
+  LegacyAbac'
+    { _laEnabled :: Maybe Bool
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'LegacyAbac' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'laEnabled'
+legacyAbac
+    :: LegacyAbac
+legacyAbac = LegacyAbac' {_laEnabled = Nothing}
+
+
+-- | Whether the ABAC authorizer is enabled for this cluster. When enabled,
+-- identities in the system, including service accounts, nodes, and
+-- controllers, will have statically granted permissions beyond those
+-- provided by the RBAC configuration or IAM.
+laEnabled :: Lens' LegacyAbac (Maybe Bool)
+laEnabled
+  = lens _laEnabled (\ s a -> s{_laEnabled = a})
+
+instance FromJSON LegacyAbac where
+        parseJSON
+          = withObject "LegacyAbac"
+              (\ o -> LegacyAbac' <$> (o .:? "enabled"))
+
+instance ToJSON LegacyAbac where
+        toJSON LegacyAbac'{..}
+          = object (catMaybes [("enabled" .=) <$> _laEnabled])
+
+-- | The authentication information for accessing the master endpoint.
+-- Authentication can be done using HTTP basic auth or using client
+-- certificates.
+--
+-- /See:/ 'masterAuth' smart constructor.
+data MasterAuth =
+  MasterAuth'
+    { _maClientKey               :: !(Maybe Text)
+    , _maUsername                :: !(Maybe Text)
+    , _maClientCertificateConfig :: !(Maybe ClientCertificateConfig)
+    , _maClientCertificate       :: !(Maybe Text)
+    , _maPassword                :: !(Maybe Text)
+    , _maClusterCaCertificate    :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'MasterAuth' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'maClientKey'
+--
+-- * 'maUsername'
+--
+-- * 'maClientCertificateConfig'
+--
+-- * 'maClientCertificate'
+--
+-- * 'maPassword'
+--
+-- * 'maClusterCaCertificate'
+masterAuth
+    :: MasterAuth
+masterAuth =
+  MasterAuth'
+    { _maClientKey = Nothing
+    , _maUsername = Nothing
+    , _maClientCertificateConfig = Nothing
+    , _maClientCertificate = Nothing
+    , _maPassword = Nothing
+    , _maClusterCaCertificate = Nothing
+    }
+
+
+-- | [Output only] Base64-encoded private key used by clients to authenticate
+-- to the cluster endpoint.
+maClientKey :: Lens' MasterAuth (Maybe Text)
+maClientKey
+  = lens _maClientKey (\ s a -> s{_maClientKey = a})
+
+-- | The username to use for HTTP basic authentication to the master
+-- endpoint. For clusters v1.6.0 and later, basic authentication can be
+-- disabled by leaving username unspecified (or setting it to the empty
+-- string).
+maUsername :: Lens' MasterAuth (Maybe Text)
+maUsername
+  = lens _maUsername (\ s a -> s{_maUsername = a})
+
+-- | Configuration for client certificate authentication on the cluster. For
+-- clusters before v1.12, if no configuration is specified, a client
+-- certificate is issued.
+maClientCertificateConfig :: Lens' MasterAuth (Maybe ClientCertificateConfig)
+maClientCertificateConfig
+  = lens _maClientCertificateConfig
+      (\ s a -> s{_maClientCertificateConfig = a})
+
+-- | [Output only] Base64-encoded public certificate used by clients to
+-- authenticate to the cluster endpoint.
+maClientCertificate :: Lens' MasterAuth (Maybe Text)
+maClientCertificate
+  = lens _maClientCertificate
+      (\ s a -> s{_maClientCertificate = a})
+
+-- | The password to use for HTTP basic authentication to the master
+-- endpoint. Because the master endpoint is open to the Internet, you
+-- should create a strong password. If a password is provided for cluster
+-- creation, username must be non-empty.
+maPassword :: Lens' MasterAuth (Maybe Text)
+maPassword
+  = lens _maPassword (\ s a -> s{_maPassword = a})
+
+-- | [Output only] Base64-encoded public certificate that is the root of
+-- trust for the cluster.
+maClusterCaCertificate :: Lens' MasterAuth (Maybe Text)
+maClusterCaCertificate
+  = lens _maClusterCaCertificate
+      (\ s a -> s{_maClusterCaCertificate = a})
+
+instance FromJSON MasterAuth where
+        parseJSON
+          = withObject "MasterAuth"
+              (\ o ->
+                 MasterAuth' <$>
+                   (o .:? "clientKey") <*> (o .:? "username") <*>
+                     (o .:? "clientCertificateConfig")
+                     <*> (o .:? "clientCertificate")
+                     <*> (o .:? "password")
+                     <*> (o .:? "clusterCaCertificate"))
+
+instance ToJSON MasterAuth where
+        toJSON MasterAuth'{..}
+          = object
+              (catMaybes
+                 [("clientKey" .=) <$> _maClientKey,
+                  ("username" .=) <$> _maUsername,
+                  ("clientCertificateConfig" .=) <$>
+                    _maClientCertificateConfig,
+                  ("clientCertificate" .=) <$> _maClientCertificate,
+                  ("password" .=) <$> _maPassword,
+                  ("clusterCaCertificate" .=) <$>
+                    _maClusterCaCertificate])
+
+-- | StatusCondition describes why a cluster or a node pool has a certain
+-- status (e.g., ERROR or DEGRADED).
+--
+-- /See:/ 'statusCondition' smart constructor.
+data StatusCondition =
+  StatusCondition'
+    { _scCode    :: !(Maybe StatusConditionCode)
+    , _scMessage :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'StatusCondition' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'scCode'
+--
+-- * 'scMessage'
+statusCondition
+    :: StatusCondition
+statusCondition = StatusCondition' {_scCode = Nothing, _scMessage = Nothing}
+
+
+-- | Machine-friendly representation of the condition
+scCode :: Lens' StatusCondition (Maybe StatusConditionCode)
+scCode = lens _scCode (\ s a -> s{_scCode = a})
+
+-- | Human-friendly representation of the condition
+scMessage :: Lens' StatusCondition (Maybe Text)
+scMessage
+  = lens _scMessage (\ s a -> s{_scMessage = a})
+
+instance FromJSON StatusCondition where
+        parseJSON
+          = withObject "StatusCondition"
+              (\ o ->
+                 StatusCondition' <$>
+                   (o .:? "code") <*> (o .:? "message"))
+
+instance ToJSON StatusCondition where
+        toJSON StatusCondition'{..}
+          = object
+              (catMaybes
+                 [("code" .=) <$> _scCode,
+                  ("message" .=) <$> _scMessage])
+
+-- | The metadata key\/value pairs assigned to instances in the cluster. Keys
+-- must conform to the regexp [a-zA-Z0-9-_]+ and be less than 128 bytes in
+-- length. These are reflected as part of a URL in the metadata server.
+-- Additionally, to avoid ambiguity, keys must not conflict with any other
+-- metadata keys for the project or be one of the reserved keys:
+-- \"cluster-location\" \"cluster-name\" \"cluster-uid\" \"configure-sh\"
+-- \"containerd-configure-sh\" \"enable-os-login\" \"gci-update-strategy\"
+-- \"gci-ensure-gke-docker\" \"instance-template\" \"kube-env\"
+-- \"startup-script\" \"user-data\" Values are free-form strings, and only
+-- have meaning as interpreted by the image running in the instance. The
+-- only restriction placed on them is that each value\'s size must be less
+-- than or equal to 32 KB. The total size of all keys and values must be
+-- less than 512 KB.
+--
+-- /See:/ 'nodeConfigMetadata' smart constructor.
+newtype NodeConfigMetadata =
+  NodeConfigMetadata'
+    { _ncmAddtional :: HashMap Text Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'NodeConfigMetadata' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ncmAddtional'
+nodeConfigMetadata
+    :: HashMap Text Text -- ^ 'ncmAddtional'
+    -> NodeConfigMetadata
+nodeConfigMetadata pNcmAddtional_ =
+  NodeConfigMetadata' {_ncmAddtional = _Coerce # pNcmAddtional_}
+
+
+ncmAddtional :: Lens' NodeConfigMetadata (HashMap Text Text)
+ncmAddtional
+  = lens _ncmAddtional (\ s a -> s{_ncmAddtional = a})
+      . _Coerce
+
+instance FromJSON NodeConfigMetadata where
+        parseJSON
+          = withObject "NodeConfigMetadata"
+              (\ o -> NodeConfigMetadata' <$> (parseJSONObject o))
+
+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:
+-- https:\/\/kubernetes.io\/docs\/concepts\/overview\/working-with-objects\/labels\/
+--
+-- /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
+
+-- | Kubernetes Engine service configuration.
+--
+-- /See:/ 'serverConfig' smart constructor.
+data ServerConfig =
+  ServerConfig'
+    { _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:
+--
+-- * 'scDefaultImageType'
+--
+-- * 'scValidNodeVersions'
+--
+-- * 'scValidImageTypes'
+--
+-- * 'scDefaultClusterVersion'
+--
+-- * 'scValidMasterVersions'
+serverConfig
+    :: ServerConfig
+serverConfig =
+  ServerConfig'
+    { _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
+  = lens _scValidNodeVersions
+      (\ s a -> s{_scValidNodeVersions = a})
+      . _Default
+      . _Coerce
+
+-- | List of valid image types.
+scValidImageTypes :: Lens' ServerConfig [Text]
+scValidImageTypes
+  = lens _scValidImageTypes
+      (\ s a -> s{_scValidImageTypes = a})
+      . _Default
+      . _Coerce
+
+-- | Version of Kubernetes the service deploys by default.
+scDefaultClusterVersion :: Lens' ServerConfig (Maybe Text)
+scDefaultClusterVersion
+  = 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 .:? "defaultImageType") <*>
+                     (o .:? "validNodeVersions" .!= mempty)
+                     <*> (o .:? "validImageTypes" .!= mempty)
+                     <*> (o .:? "defaultClusterVersion")
+                     <*> (o .:? "validMasterVersions" .!= mempty))
+
+instance ToJSON ServerConfig where
+        toJSON ServerConfig'{..}
+          = object
+              (catMaybes
+                 [("defaultImageType" .=) <$> _scDefaultImageType,
+                  ("validNodeVersions" .=) <$> _scValidNodeVersions,
+                  ("validImageTypes" .=) <$> _scValidImageTypes,
+                  ("defaultClusterVersion" .=) <$>
+                    _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])
+
+-- | SetNodePoolSizeRequest sets the size a node pool.
+--
+-- /See:/ 'setNodePoolSizeRequest' smart constructor.
+data SetNodePoolSizeRequest =
+  SetNodePoolSizeRequest'
+    { _snpsrNodeCount  :: !(Maybe (Textual Int32))
+    , _snpsrZone       :: !(Maybe Text)
+    , _snpsrNodePoolId :: !(Maybe Text)
+    , _snpsrName       :: !(Maybe Text)
+    , _snpsrClusterId  :: !(Maybe Text)
+    , _snpsrProjectId  :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'SetNodePoolSizeRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'snpsrNodeCount'
+--
+-- * 'snpsrZone'
+--
+-- * 'snpsrNodePoolId'
+--
+-- * 'snpsrName'
+--
+-- * 'snpsrClusterId'
+--
+-- * 'snpsrProjectId'
+setNodePoolSizeRequest
+    :: SetNodePoolSizeRequest
+setNodePoolSizeRequest =
+  SetNodePoolSizeRequest'
+    { _snpsrNodeCount = Nothing
+    , _snpsrZone = Nothing
+    , _snpsrNodePoolId = Nothing
+    , _snpsrName = Nothing
+    , _snpsrClusterId = Nothing
+    , _snpsrProjectId = Nothing
+    }
+
+
+-- | The desired node count for the pool.
+snpsrNodeCount :: Lens' SetNodePoolSizeRequest (Maybe Int32)
+snpsrNodeCount
+  = lens _snpsrNodeCount
+      (\ s a -> s{_snpsrNodeCount = a})
+      . mapping _Coerce
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
+snpsrZone :: Lens' SetNodePoolSizeRequest (Maybe Text)
+snpsrZone
+  = lens _snpsrZone (\ s a -> s{_snpsrZone = a})
+
+-- | Deprecated. The name of the node pool to update. This field has been
+-- deprecated and replaced by the name field.
+snpsrNodePoolId :: Lens' SetNodePoolSizeRequest (Maybe Text)
+snpsrNodePoolId
+  = lens _snpsrNodePoolId
+      (\ s a -> s{_snpsrNodePoolId = a})
+
+-- | The name (project, location, cluster, node pool id) of the node pool to
+-- set size. Specified in the format
+-- \'projects\/*\/locations\/*\/clusters\/*\/nodePools\/*\'.
+snpsrName :: Lens' SetNodePoolSizeRequest (Maybe Text)
+snpsrName
+  = lens _snpsrName (\ s a -> s{_snpsrName = a})
+
+-- | Deprecated. The name of the cluster to update. This field has been
+-- deprecated and replaced by the name field.
+snpsrClusterId :: Lens' SetNodePoolSizeRequest (Maybe Text)
+snpsrClusterId
+  = lens _snpsrClusterId
+      (\ s a -> s{_snpsrClusterId = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
+-- field has been deprecated and replaced by the name field.
+snpsrProjectId :: Lens' SetNodePoolSizeRequest (Maybe Text)
+snpsrProjectId
+  = lens _snpsrProjectId
+      (\ s a -> s{_snpsrProjectId = a})
+
+instance FromJSON SetNodePoolSizeRequest where
+        parseJSON
+          = withObject "SetNodePoolSizeRequest"
+              (\ o ->
+                 SetNodePoolSizeRequest' <$>
+                   (o .:? "nodeCount") <*> (o .:? "zone") <*>
+                     (o .:? "nodePoolId")
+                     <*> (o .:? "name")
+                     <*> (o .:? "clusterId")
+                     <*> (o .:? "projectId"))
+
+instance ToJSON SetNodePoolSizeRequest where
+        toJSON SetNodePoolSizeRequest'{..}
+          = object
+              (catMaybes
+                 [("nodeCount" .=) <$> _snpsrNodeCount,
+                  ("zone" .=) <$> _snpsrZone,
+                  ("nodePoolId" .=) <$> _snpsrNodePoolId,
+                  ("name" .=) <$> _snpsrName,
+                  ("clusterId" .=) <$> _snpsrClusterId,
+                  ("projectId" .=) <$> _snpsrProjectId])
+
+-- | SetMonitoringServiceRequest sets the monitoring service of a cluster.
+--
+-- /See:/ 'setMonitoringServiceRequest' smart constructor.
+data SetMonitoringServiceRequest =
+  SetMonitoringServiceRequest'
+    { _smsrZone              :: !(Maybe Text)
+    , _smsrName              :: !(Maybe Text)
+    , _smsrClusterId         :: !(Maybe Text)
+    , _smsrProjectId         :: !(Maybe Text)
+    , _smsrMonitoringService :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'SetMonitoringServiceRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'smsrZone'
+--
+-- * 'smsrName'
+--
+-- * 'smsrClusterId'
+--
+-- * 'smsrProjectId'
+--
+-- * 'smsrMonitoringService'
+setMonitoringServiceRequest
+    :: SetMonitoringServiceRequest
+setMonitoringServiceRequest =
+  SetMonitoringServiceRequest'
+    { _smsrZone = Nothing
+    , _smsrName = Nothing
+    , _smsrClusterId = Nothing
+    , _smsrProjectId = Nothing
+    , _smsrMonitoringService = Nothing
+    }
+
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
+smsrZone :: Lens' SetMonitoringServiceRequest (Maybe Text)
+smsrZone = lens _smsrZone (\ s a -> s{_smsrZone = a})
+
+-- | The name (project, location, cluster) of the cluster to set monitoring.
+-- Specified in the format \'projects\/*\/locations\/*\/clusters\/*\'.
+smsrName :: Lens' SetMonitoringServiceRequest (Maybe Text)
+smsrName = lens _smsrName (\ s a -> s{_smsrName = a})
+
+-- | Deprecated. The name of the cluster to upgrade. This field has been
+-- deprecated and replaced by the name field.
+smsrClusterId :: Lens' SetMonitoringServiceRequest (Maybe Text)
+smsrClusterId
+  = lens _smsrClusterId
+      (\ s a -> s{_smsrClusterId = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
+-- field has been deprecated and replaced by the name field.
+smsrProjectId :: Lens' SetMonitoringServiceRequest (Maybe Text)
+smsrProjectId
+  = lens _smsrProjectId
+      (\ s a -> s{_smsrProjectId = a})
+
+-- | 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
+-- from the cluster
+smsrMonitoringService :: Lens' SetMonitoringServiceRequest (Maybe Text)
+smsrMonitoringService
+  = lens _smsrMonitoringService
+      (\ s a -> s{_smsrMonitoringService = a})
+
+instance FromJSON SetMonitoringServiceRequest where
+        parseJSON
+          = withObject "SetMonitoringServiceRequest"
+              (\ o ->
+                 SetMonitoringServiceRequest' <$>
+                   (o .:? "zone") <*> (o .:? "name") <*>
+                     (o .:? "clusterId")
+                     <*> (o .:? "projectId")
+                     <*> (o .:? "monitoringService"))
+
+instance ToJSON SetMonitoringServiceRequest where
+        toJSON SetMonitoringServiceRequest'{..}
+          = object
+              (catMaybes
+                 [("zone" .=) <$> _smsrZone,
+                  ("name" .=) <$> _smsrName,
+                  ("clusterId" .=) <$> _smsrClusterId,
+                  ("projectId" .=) <$> _smsrProjectId,
+                  ("monitoringService" .=) <$> _smsrMonitoringService])
+
+-- | SetLoggingServiceRequest sets the logging service of a cluster.
+--
+-- /See:/ 'setLoggingServiceRequest' smart constructor.
+data SetLoggingServiceRequest =
+  SetLoggingServiceRequest'
+    { _slsrZone           :: !(Maybe Text)
+    , _slsrName           :: !(Maybe Text)
+    , _slsrClusterId      :: !(Maybe Text)
+    , _slsrProjectId      :: !(Maybe Text)
+    , _slsrLoggingService :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'SetLoggingServiceRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'slsrZone'
+--
+-- * 'slsrName'
+--
+-- * 'slsrClusterId'
+--
+-- * 'slsrProjectId'
+--
+-- * 'slsrLoggingService'
+setLoggingServiceRequest
+    :: SetLoggingServiceRequest
+setLoggingServiceRequest =
+  SetLoggingServiceRequest'
+    { _slsrZone = Nothing
+    , _slsrName = Nothing
+    , _slsrClusterId = Nothing
+    , _slsrProjectId = Nothing
+    , _slsrLoggingService = Nothing
+    }
+
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
+slsrZone :: Lens' SetLoggingServiceRequest (Maybe Text)
+slsrZone = lens _slsrZone (\ s a -> s{_slsrZone = a})
+
+-- | The name (project, location, cluster) of the cluster to set logging.
+-- Specified in the format \'projects\/*\/locations\/*\/clusters\/*\'.
+slsrName :: Lens' SetLoggingServiceRequest (Maybe Text)
+slsrName = lens _slsrName (\ s a -> s{_slsrName = a})
+
+-- | Deprecated. The name of the cluster to upgrade. This field has been
+-- deprecated and replaced by the name field.
+slsrClusterId :: Lens' SetLoggingServiceRequest (Maybe Text)
+slsrClusterId
+  = lens _slsrClusterId
+      (\ s a -> s{_slsrClusterId = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
+-- field has been deprecated and replaced by the name field.
+slsrProjectId :: Lens' SetLoggingServiceRequest (Maybe Text)
+slsrProjectId
+  = lens _slsrProjectId
+      (\ s a -> s{_slsrProjectId = a})
+
+-- | The logging service the cluster should use to write metrics. Currently
+-- available options: * \"logging.googleapis.com\" - the Google Cloud
+-- Logging service * \"none\" - no metrics will be exported from the
+-- cluster
+slsrLoggingService :: Lens' SetLoggingServiceRequest (Maybe Text)
+slsrLoggingService
+  = lens _slsrLoggingService
+      (\ s a -> s{_slsrLoggingService = a})
+
+instance FromJSON SetLoggingServiceRequest where
+        parseJSON
+          = withObject "SetLoggingServiceRequest"
+              (\ o ->
+                 SetLoggingServiceRequest' <$>
+                   (o .:? "zone") <*> (o .:? "name") <*>
+                     (o .:? "clusterId")
+                     <*> (o .:? "projectId")
+                     <*> (o .:? "loggingService"))
+
+instance ToJSON SetLoggingServiceRequest where
+        toJSON SetLoggingServiceRequest'{..}
+          = object
+              (catMaybes
+                 [("zone" .=) <$> _slsrZone,
+                  ("name" .=) <$> _slsrName,
+                  ("clusterId" .=) <$> _slsrClusterId,
+                  ("projectId" .=) <$> _slsrProjectId,
+                  ("loggingService" .=) <$> _slsrLoggingService])
+
+-- | MaintenancePolicy defines the maintenance policy to be used for the
+-- cluster.
+--
+-- /See:/ 'maintenancePolicy' smart constructor.
+newtype MaintenancePolicy =
+  MaintenancePolicy'
+    { _mpWindow :: Maybe MaintenanceWindow
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'MaintenancePolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mpWindow'
+maintenancePolicy
+    :: MaintenancePolicy
+maintenancePolicy = MaintenancePolicy' {_mpWindow = Nothing}
+
+
+-- | Specifies the maintenance window in which maintenance may be performed.
+mpWindow :: Lens' MaintenancePolicy (Maybe MaintenanceWindow)
+mpWindow = lens _mpWindow (\ s a -> s{_mpWindow = a})
+
+instance FromJSON MaintenancePolicy where
+        parseJSON
+          = withObject "MaintenancePolicy"
+              (\ o -> MaintenancePolicy' <$> (o .:? "window"))
+
+instance ToJSON MaintenancePolicy where
+        toJSON MaintenancePolicy'{..}
+          = object (catMaybes [("window" .=) <$> _mpWindow])
+
+-- | CidrBlock contains an optional name and one CIDR block.
+--
+-- /See:/ 'cIdRBlock' smart constructor.
+data CIdRBlock =
+  CIdRBlock'
+    { _cirbCIdRBlock   :: !(Maybe Text)
+    , _cirbDisplayName :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'CIdRBlock' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cirbCIdRBlock'
+--
+-- * 'cirbDisplayName'
+cIdRBlock
+    :: CIdRBlock
+cIdRBlock = CIdRBlock' {_cirbCIdRBlock = Nothing, _cirbDisplayName = Nothing}
+
+
+-- | cidr_block must be specified in CIDR notation.
+cirbCIdRBlock :: Lens' CIdRBlock (Maybe Text)
+cirbCIdRBlock
+  = lens _cirbCIdRBlock
+      (\ s a -> s{_cirbCIdRBlock = a})
+
+-- | display_name is an optional field for users to identify CIDR blocks.
+cirbDisplayName :: Lens' CIdRBlock (Maybe Text)
+cirbDisplayName
+  = lens _cirbDisplayName
+      (\ s a -> s{_cirbDisplayName = a})
+
+instance FromJSON CIdRBlock where
+        parseJSON
+          = withObject "CIdRBlock"
+              (\ o ->
+                 CIdRBlock' <$>
+                   (o .:? "cidrBlock") <*> (o .:? "displayName"))
+
+instance ToJSON CIdRBlock where
+        toJSON CIdRBlock'{..}
+          = object
+              (catMaybes
+                 [("cidrBlock" .=) <$> _cirbCIdRBlock,
+                  ("displayName" .=) <$> _cirbDisplayName])
+
+-- | AcceleratorConfig represents a Hardware Accelerator request.
+--
+-- /See:/ 'acceleratorConfig' smart constructor.
+data AcceleratorConfig =
+  AcceleratorConfig'
+    { _acAcceleratorCount :: !(Maybe (Textual Int64))
+    , _acAcceleratorType  :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'AcceleratorConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'acAcceleratorCount'
+--
+-- * 'acAcceleratorType'
+acceleratorConfig
+    :: AcceleratorConfig
+acceleratorConfig =
+  AcceleratorConfig'
+    {_acAcceleratorCount = Nothing, _acAcceleratorType = Nothing}
+
+
+-- | The number of the accelerator cards exposed to an instance.
+acAcceleratorCount :: Lens' AcceleratorConfig (Maybe Int64)
+acAcceleratorCount
+  = lens _acAcceleratorCount
+      (\ s a -> s{_acAcceleratorCount = a})
+      . mapping _Coerce
+
+-- | The accelerator type resource name. List of supported accelerators
+-- [here](\/compute\/docs\/gpus\/#Introduction)
+acAcceleratorType :: Lens' AcceleratorConfig (Maybe Text)
+acAcceleratorType
+  = lens _acAcceleratorType
+      (\ s a -> s{_acAcceleratorType = a})
+
+instance FromJSON AcceleratorConfig where
+        parseJSON
+          = withObject "AcceleratorConfig"
+              (\ o ->
+                 AcceleratorConfig' <$>
+                   (o .:? "acceleratorCount") <*>
+                     (o .:? "acceleratorType"))
+
+instance ToJSON AcceleratorConfig where
+        toJSON AcceleratorConfig'{..}
+          = object
+              (catMaybes
+                 [("acceleratorCount" .=) <$> _acAcceleratorCount,
+                  ("acceleratorType" .=) <$> _acAcceleratorType])
+
+-- | SetLocationsRequest sets the locations of the cluster.
+--
+-- /See:/ 'setLocationsRequest' smart constructor.
+data SetLocationsRequest =
+  SetLocationsRequest'
+    { _sZone      :: !(Maybe Text)
+    , _sName      :: !(Maybe Text)
+    , _sClusterId :: !(Maybe Text)
+    , _sProjectId :: !(Maybe Text)
+    , _sLocations :: !(Maybe [Text])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'SetLocationsRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sZone'
+--
+-- * 'sName'
+--
+-- * 'sClusterId'
+--
+-- * 'sProjectId'
+--
+-- * 'sLocations'
+setLocationsRequest
+    :: SetLocationsRequest
+setLocationsRequest =
+  SetLocationsRequest'
+    { _sZone = Nothing
+    , _sName = Nothing
+    , _sClusterId = Nothing
+    , _sProjectId = Nothing
+    , _sLocations = Nothing
+    }
+
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
+sZone :: Lens' SetLocationsRequest (Maybe Text)
+sZone = lens _sZone (\ s a -> s{_sZone = a})
+
+-- | The name (project, location, cluster) of the cluster to set locations.
+-- Specified in the format \'projects\/*\/locations\/*\/clusters\/*\'.
+sName :: Lens' SetLocationsRequest (Maybe Text)
+sName = lens _sName (\ s a -> s{_sName = a})
+
+-- | Deprecated. The name of the cluster to upgrade. This field has been
+-- deprecated and replaced by the name field.
+sClusterId :: Lens' SetLocationsRequest (Maybe Text)
+sClusterId
+  = lens _sClusterId (\ s a -> s{_sClusterId = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
+-- field has been deprecated and replaced by the name field.
+sProjectId :: Lens' SetLocationsRequest (Maybe Text)
+sProjectId
+  = lens _sProjectId (\ s a -> s{_sProjectId = a})
+
+-- | The desired list of Google Compute Engine
+-- [zones](\/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.
+sLocations :: Lens' SetLocationsRequest [Text]
+sLocations
+  = lens _sLocations (\ s a -> s{_sLocations = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON SetLocationsRequest where
+        parseJSON
+          = withObject "SetLocationsRequest"
+              (\ o ->
+                 SetLocationsRequest' <$>
+                   (o .:? "zone") <*> (o .:? "name") <*>
+                     (o .:? "clusterId")
+                     <*> (o .:? "projectId")
+                     <*> (o .:? "locations" .!= mempty))
+
+instance ToJSON SetLocationsRequest where
+        toJSON SetLocationsRequest'{..}
+          = object
+              (catMaybes
+                 [("zone" .=) <$> _sZone, ("name" .=) <$> _sName,
+                  ("clusterId" .=) <$> _sClusterId,
+                  ("projectId" .=) <$> _sProjectId,
+                  ("locations" .=) <$> _sLocations])
+
+-- | SetNetworkPolicyRequest enables\/disables network policy for a cluster.
+--
+-- /See:/ 'setNetworkPolicyRequest' smart constructor.
+data SetNetworkPolicyRequest =
+  SetNetworkPolicyRequest'
+    { _snprZone          :: !(Maybe Text)
+    , _snprName          :: !(Maybe Text)
+    , _snprClusterId     :: !(Maybe Text)
+    , _snprProjectId     :: !(Maybe Text)
+    , _snprNetworkPolicy :: !(Maybe NetworkPolicy)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'SetNetworkPolicyRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'snprZone'
+--
+-- * 'snprName'
+--
+-- * 'snprClusterId'
+--
+-- * 'snprProjectId'
+--
+-- * 'snprNetworkPolicy'
+setNetworkPolicyRequest
+    :: SetNetworkPolicyRequest
+setNetworkPolicyRequest =
+  SetNetworkPolicyRequest'
+    { _snprZone = Nothing
+    , _snprName = Nothing
+    , _snprClusterId = Nothing
+    , _snprProjectId = Nothing
+    , _snprNetworkPolicy = Nothing
+    }
+
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
+snprZone :: Lens' SetNetworkPolicyRequest (Maybe Text)
+snprZone = lens _snprZone (\ s a -> s{_snprZone = a})
+
+-- | The name (project, location, cluster id) of the cluster to set
+-- networking policy. Specified in the format
+-- \'projects\/*\/locations\/*\/clusters\/*\'.
+snprName :: Lens' SetNetworkPolicyRequest (Maybe Text)
+snprName = lens _snprName (\ s a -> s{_snprName = a})
+
+-- | Deprecated. The name of the cluster. This field has been deprecated and
+-- replaced by the name field.
+snprClusterId :: Lens' SetNetworkPolicyRequest (Maybe Text)
+snprClusterId
+  = lens _snprClusterId
+      (\ s a -> s{_snprClusterId = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/developers.google.com\/console\/help\/new\/#projectnumber).
+-- This field has been deprecated and replaced by the name field.
+snprProjectId :: Lens' SetNetworkPolicyRequest (Maybe Text)
+snprProjectId
+  = lens _snprProjectId
+      (\ s a -> s{_snprProjectId = a})
+
+-- | Configuration options for the NetworkPolicy feature.
+snprNetworkPolicy :: Lens' SetNetworkPolicyRequest (Maybe NetworkPolicy)
+snprNetworkPolicy
+  = lens _snprNetworkPolicy
+      (\ s a -> s{_snprNetworkPolicy = a})
+
+instance FromJSON SetNetworkPolicyRequest where
+        parseJSON
+          = withObject "SetNetworkPolicyRequest"
+              (\ o ->
+                 SetNetworkPolicyRequest' <$>
+                   (o .:? "zone") <*> (o .:? "name") <*>
+                     (o .:? "clusterId")
+                     <*> (o .:? "projectId")
+                     <*> (o .:? "networkPolicy"))
+
+instance ToJSON SetNetworkPolicyRequest where
+        toJSON SetNetworkPolicyRequest'{..}
+          = object
+              (catMaybes
+                 [("zone" .=) <$> _snprZone,
+                  ("name" .=) <$> _snprName,
+                  ("clusterId" .=) <$> _snprClusterId,
+                  ("projectId" .=) <$> _snprProjectId,
+                  ("networkPolicy" .=) <$> _snprNetworkPolicy])
+
+-- | Configuration options for private clusters.
+--
+-- /See:/ 'privateClusterConfig' smart constructor.
+data PrivateClusterConfig =
+  PrivateClusterConfig'
+    { _pccEnablePrivateNodes    :: !(Maybe Bool)
+    , _pccEnablePrivateEndpoint :: !(Maybe Bool)
+    , _pccPublicEndpoint        :: !(Maybe Text)
+    , _pccMasterIPv4CIdRBlock   :: !(Maybe Text)
+    , _pccPrivateEndpoint       :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'PrivateClusterConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pccEnablePrivateNodes'
+--
+-- * 'pccEnablePrivateEndpoint'
+--
+-- * 'pccPublicEndpoint'
+--
+-- * 'pccMasterIPv4CIdRBlock'
+--
+-- * 'pccPrivateEndpoint'
+privateClusterConfig
+    :: PrivateClusterConfig
+privateClusterConfig =
+  PrivateClusterConfig'
+    { _pccEnablePrivateNodes = Nothing
+    , _pccEnablePrivateEndpoint = Nothing
+    , _pccPublicEndpoint = Nothing
+    , _pccMasterIPv4CIdRBlock = Nothing
+    , _pccPrivateEndpoint = Nothing
+    }
+
+
+-- | Whether nodes have internal IP addresses only. If enabled, all nodes are
+-- given only RFC 1918 private addresses and communicate with the master
+-- via private networking.
+pccEnablePrivateNodes :: Lens' PrivateClusterConfig (Maybe Bool)
+pccEnablePrivateNodes
+  = lens _pccEnablePrivateNodes
+      (\ s a -> s{_pccEnablePrivateNodes = a})
+
+-- | Whether the master\'s internal IP address is used as the cluster
+-- endpoint.
+pccEnablePrivateEndpoint :: Lens' PrivateClusterConfig (Maybe Bool)
+pccEnablePrivateEndpoint
+  = lens _pccEnablePrivateEndpoint
+      (\ s a -> s{_pccEnablePrivateEndpoint = a})
+
+-- | Output only. The external IP address of this cluster\'s master endpoint.
+pccPublicEndpoint :: Lens' PrivateClusterConfig (Maybe Text)
+pccPublicEndpoint
+  = lens _pccPublicEndpoint
+      (\ s a -> s{_pccPublicEndpoint = a})
+
+-- | The IP range in CIDR notation to use for the hosted master network. This
+-- range will be used for assigning internal IP addresses to the master or
+-- set of masters, as well as the ILB VIP. This range must not overlap with
+-- any other ranges in use within the cluster\'s network.
+pccMasterIPv4CIdRBlock :: Lens' PrivateClusterConfig (Maybe Text)
+pccMasterIPv4CIdRBlock
+  = lens _pccMasterIPv4CIdRBlock
+      (\ s a -> s{_pccMasterIPv4CIdRBlock = a})
+
+-- | Output only. The internal IP address of this cluster\'s master endpoint.
+pccPrivateEndpoint :: Lens' PrivateClusterConfig (Maybe Text)
+pccPrivateEndpoint
+  = lens _pccPrivateEndpoint
+      (\ s a -> s{_pccPrivateEndpoint = a})
+
+instance FromJSON PrivateClusterConfig where
+        parseJSON
+          = withObject "PrivateClusterConfig"
+              (\ o ->
+                 PrivateClusterConfig' <$>
+                   (o .:? "enablePrivateNodes") <*>
+                     (o .:? "enablePrivateEndpoint")
+                     <*> (o .:? "publicEndpoint")
+                     <*> (o .:? "masterIpv4CidrBlock")
+                     <*> (o .:? "privateEndpoint"))
+
+instance ToJSON PrivateClusterConfig where
+        toJSON PrivateClusterConfig'{..}
+          = object
+              (catMaybes
+                 [("enablePrivateNodes" .=) <$>
+                    _pccEnablePrivateNodes,
+                  ("enablePrivateEndpoint" .=) <$>
+                    _pccEnablePrivateEndpoint,
+                  ("publicEndpoint" .=) <$> _pccPublicEndpoint,
+                  ("masterIpv4CidrBlock" .=) <$>
+                    _pccMasterIPv4CIdRBlock,
+                  ("privateEndpoint" .=) <$> _pccPrivateEndpoint])
+
+-- | Time window specified for daily maintenance operations.
+--
+-- /See:/ 'dailyMaintenanceWindow' smart constructor.
+data DailyMaintenanceWindow =
+  DailyMaintenanceWindow'
+    { _dmwStartTime :: !(Maybe Text)
+    , _dmwDuration  :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DailyMaintenanceWindow' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dmwStartTime'
+--
+-- * 'dmwDuration'
+dailyMaintenanceWindow
+    :: DailyMaintenanceWindow
+dailyMaintenanceWindow =
+  DailyMaintenanceWindow' {_dmwStartTime = Nothing, _dmwDuration = Nothing}
+
+
+-- | Time within the maintenance window to start the maintenance operations.
+-- Time format should be in
+-- [RFC3339](https:\/\/www.ietf.org\/rfc\/rfc3339.txt) format \"HH:MM”,
+-- where HH : [00-23] and MM : [00-59] GMT.
+dmwStartTime :: Lens' DailyMaintenanceWindow (Maybe Text)
+dmwStartTime
+  = lens _dmwStartTime (\ s a -> s{_dmwStartTime = a})
+
+-- | [Output only] Duration of the time window, automatically chosen to be
+-- smallest possible in the given scenario. Duration will be in
+-- [RFC3339](https:\/\/www.ietf.org\/rfc\/rfc3339.txt) format \"PTnHnMnS\".
+dmwDuration :: Lens' DailyMaintenanceWindow (Maybe Text)
+dmwDuration
+  = lens _dmwDuration (\ s a -> s{_dmwDuration = a})
+
+instance FromJSON DailyMaintenanceWindow where
+        parseJSON
+          = withObject "DailyMaintenanceWindow"
+              (\ o ->
+                 DailyMaintenanceWindow' <$>
+                   (o .:? "startTime") <*> (o .:? "duration"))
+
+instance ToJSON DailyMaintenanceWindow where
+        toJSON DailyMaintenanceWindow'{..}
+          = object
+              (catMaybes
+                 [("startTime" .=) <$> _dmwStartTime,
+                  ("duration" .=) <$> _dmwDuration])
+
+-- | ListClustersResponse is the result of ListClustersRequest.
+--
+-- /See:/ 'listClustersResponse' smart constructor.
+data ListClustersResponse =
+  ListClustersResponse'
+    { _lcrClusters     :: !(Maybe [Cluster])
+    , _lcrMissingZones :: !(Maybe [Text])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ListClustersResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lcrClusters'
+--
+-- * 'lcrMissingZones'
+listClustersResponse
+    :: ListClustersResponse
+listClustersResponse =
+  ListClustersResponse' {_lcrClusters = Nothing, _lcrMissingZones = Nothing}
+
+
+-- | A list of clusters in the project in the specified zone, or across all
+-- ones.
+lcrClusters :: Lens' ListClustersResponse [Cluster]
+lcrClusters
+  = lens _lcrClusters (\ s a -> s{_lcrClusters = a}) .
+      _Default
+      . _Coerce
+
+-- | If any zones are listed here, the list of clusters returned may be
+-- missing those zones.
+lcrMissingZones :: Lens' ListClustersResponse [Text]
+lcrMissingZones
+  = lens _lcrMissingZones
+      (\ s a -> s{_lcrMissingZones = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON ListClustersResponse where
+        parseJSON
+          = withObject "ListClustersResponse"
+              (\ o ->
+                 ListClustersResponse' <$>
+                   (o .:? "clusters" .!= mempty) <*>
+                     (o .:? "missingZones" .!= mempty))
+
+instance ToJSON ListClustersResponse where
+        toJSON ListClustersResponse'{..}
+          = object
+              (catMaybes
+                 [("clusters" .=) <$> _lcrClusters,
+                  ("missingZones" .=) <$> _lcrMissingZones])
+
+-- | ClusterUpdate describes an update to the cluster. Exactly one update can
+-- be applied to a cluster with each request, so at most one field can be
+-- provided.
+--
+-- /See:/ 'clusterUpdate' smart constructor.
+data ClusterUpdate =
+  ClusterUpdate'
+    { _cuDesiredNodePoolAutoscaling            :: !(Maybe NodePoolAutoscaling)
+    , _cuDesiredAddonsConfig                   :: !(Maybe AddonsConfig)
+    , _cuDesiredNodePoolId                     :: !(Maybe Text)
+    , _cuDesiredMasterAuthorizedNetworksConfig :: !(Maybe MasterAuthorizedNetworksConfig)
+    , _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'
+--
+-- * 'cuDesiredMasterAuthorizedNetworksConfig'
+--
+-- * 'cuDesiredImageType'
+--
+-- * 'cuDesiredNodeVersion'
+--
+-- * 'cuDesiredMasterVersion'
+--
+-- * 'cuDesiredLocations'
+--
+-- * 'cuDesiredMonitoringService'
+clusterUpdate
+    :: ClusterUpdate
+clusterUpdate =
+  ClusterUpdate'
+    { _cuDesiredNodePoolAutoscaling = Nothing
+    , _cuDesiredAddonsConfig = Nothing
+    , _cuDesiredNodePoolId = Nothing
+    , _cuDesiredMasterAuthorizedNetworksConfig = 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
+-- \"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 configuration options for master authorized networks
+-- feature.
+cuDesiredMasterAuthorizedNetworksConfig :: Lens' ClusterUpdate (Maybe MasterAuthorizedNetworksConfig)
+cuDesiredMasterAuthorizedNetworksConfig
+  = lens _cuDesiredMasterAuthorizedNetworksConfig
+      (\ s a ->
+         s{_cuDesiredMasterAuthorizedNetworksConfig = 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).
+-- Users may specify either explicit versions offered by Kubernetes Engine
+-- or version aliases, which have the following behavior: - \"latest\":
+-- picks the highest valid Kubernetes version - \"1.X\": picks the highest
+-- valid patch+gke.N patch in the 1.X version - \"1.X.Y\": picks the
+-- highest valid gke.N patch in the 1.X.Y version - \"1.X.Y-gke.N\": picks
+-- an explicit Kubernetes version - \"-\": picks the Kubernetes master
+-- version
+cuDesiredNodeVersion :: Lens' ClusterUpdate (Maybe Text)
+cuDesiredNodeVersion
+  = lens _cuDesiredNodeVersion
+      (\ s a -> s{_cuDesiredNodeVersion = a})
+
+-- | The Kubernetes version to change the master to. Users may specify either
+-- explicit versions offered by Kubernetes Engine or version aliases, which
+-- have the following behavior: - \"latest\": picks the highest valid
+-- Kubernetes version - \"1.X\": picks the highest valid patch+gke.N patch
+-- in the 1.X version - \"1.X.Y\": picks the highest valid gke.N patch in
+-- the 1.X.Y version - \"1.X.Y-gke.N\": picks an explicit Kubernetes
+-- version - \"-\": picks the default Kubernetes version
+cuDesiredMasterVersion :: Lens' ClusterUpdate (Maybe Text)
+cuDesiredMasterVersion
+  = lens _cuDesiredMasterVersion
+      (\ s a -> s{_cuDesiredMasterVersion = a})
+
+-- | The desired list of Google Compute Engine
+-- [zones](\/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
+-- from the cluster
+cuDesiredMonitoringService :: Lens' ClusterUpdate (Maybe Text)
+cuDesiredMonitoringService
+  = lens _cuDesiredMonitoringService
+      (\ s a -> s{_cuDesiredMonitoringService = a})
+
+instance FromJSON ClusterUpdate where
+        parseJSON
+          = withObject "ClusterUpdate"
+              (\ o ->
+                 ClusterUpdate' <$>
+                   (o .:? "desiredNodePoolAutoscaling") <*>
+                     (o .:? "desiredAddonsConfig")
+                     <*> (o .:? "desiredNodePoolId")
+                     <*> (o .:? "desiredMasterAuthorizedNetworksConfig")
+                     <*> (o .:? "desiredImageType")
+                     <*> (o .:? "desiredNodeVersion")
+                     <*> (o .:? "desiredMasterVersion")
+                     <*> (o .:? "desiredLocations" .!= mempty)
+                     <*> (o .:? "desiredMonitoringService"))
+
+instance ToJSON ClusterUpdate where
+        toJSON ClusterUpdate'{..}
+          = object
+              (catMaybes
+                 [("desiredNodePoolAutoscaling" .=) <$>
+                    _cuDesiredNodePoolAutoscaling,
+                  ("desiredAddonsConfig" .=) <$>
+                    _cuDesiredAddonsConfig,
+                  ("desiredNodePoolId" .=) <$> _cuDesiredNodePoolId,
+                  ("desiredMasterAuthorizedNetworksConfig" .=) <$>
+                    _cuDesiredMasterAuthorizedNetworksConfig,
+                  ("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'
+    { _rnpurZone       :: !(Maybe Text)
+    , _rnpurNodePoolId :: !(Maybe Text)
+    , _rnpurName       :: !(Maybe Text)
+    , _rnpurClusterId  :: !(Maybe Text)
+    , _rnpurProjectId  :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'RollbackNodePoolUpgradeRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rnpurZone'
+--
+-- * 'rnpurNodePoolId'
+--
+-- * 'rnpurName'
+--
+-- * 'rnpurClusterId'
+--
+-- * 'rnpurProjectId'
+rollbackNodePoolUpgradeRequest
+    :: RollbackNodePoolUpgradeRequest
+rollbackNodePoolUpgradeRequest =
+  RollbackNodePoolUpgradeRequest'
+    { _rnpurZone = Nothing
+    , _rnpurNodePoolId = Nothing
+    , _rnpurName = Nothing
+    , _rnpurClusterId = Nothing
+    , _rnpurProjectId = Nothing
+    }
+
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
+rnpurZone :: Lens' RollbackNodePoolUpgradeRequest (Maybe Text)
+rnpurZone
+  = lens _rnpurZone (\ s a -> s{_rnpurZone = a})
+
+-- | Deprecated. The name of the node pool to rollback. This field has been
+-- deprecated and replaced by the name field.
+rnpurNodePoolId :: Lens' RollbackNodePoolUpgradeRequest (Maybe Text)
+rnpurNodePoolId
+  = lens _rnpurNodePoolId
+      (\ s a -> s{_rnpurNodePoolId = a})
+
+-- | The name (project, location, cluster, node pool id) of the node poll to
+-- rollback upgrade. Specified in the format
+-- \'projects\/*\/locations\/*\/clusters\/*\/nodePools\/*\'.
+rnpurName :: Lens' RollbackNodePoolUpgradeRequest (Maybe Text)
+rnpurName
+  = lens _rnpurName (\ s a -> s{_rnpurName = a})
+
+-- | Deprecated. The name of the cluster to rollback. This field has been
+-- deprecated and replaced by the name field.
+rnpurClusterId :: Lens' RollbackNodePoolUpgradeRequest (Maybe Text)
+rnpurClusterId
+  = lens _rnpurClusterId
+      (\ s a -> s{_rnpurClusterId = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
+-- field has been deprecated and replaced by the name field.
+rnpurProjectId :: Lens' RollbackNodePoolUpgradeRequest (Maybe Text)
+rnpurProjectId
+  = lens _rnpurProjectId
+      (\ s a -> s{_rnpurProjectId = a})
+
+instance FromJSON RollbackNodePoolUpgradeRequest
+         where
+        parseJSON
+          = withObject "RollbackNodePoolUpgradeRequest"
+              (\ o ->
+                 RollbackNodePoolUpgradeRequest' <$>
+                   (o .:? "zone") <*> (o .:? "nodePoolId") <*>
+                     (o .:? "name")
+                     <*> (o .:? "clusterId")
+                     <*> (o .:? "projectId"))
+
+instance ToJSON RollbackNodePoolUpgradeRequest where
+        toJSON RollbackNodePoolUpgradeRequest'{..}
+          = object
+              (catMaybes
+                 [("zone" .=) <$> _rnpurZone,
+                  ("nodePoolId" .=) <$> _rnpurNodePoolId,
+                  ("name" .=) <$> _rnpurName,
+                  ("clusterId" .=) <$> _rnpurClusterId,
+                  ("projectId" .=) <$> _rnpurProjectId])
+
+-- | Configuration options for the NetworkPolicy feature.
+-- https:\/\/kubernetes.io\/docs\/concepts\/services-networking\/networkpolicies\/
+--
+-- /See:/ 'networkPolicy' smart constructor.
+data NetworkPolicy =
+  NetworkPolicy'
+    { _npEnabled  :: !(Maybe Bool)
+    , _npProvider :: !(Maybe NetworkPolicyProvider)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'NetworkPolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'npEnabled'
+--
+-- * 'npProvider'
+networkPolicy
+    :: NetworkPolicy
+networkPolicy = NetworkPolicy' {_npEnabled = Nothing, _npProvider = Nothing}
+
+
+-- | Whether network policy is enabled on the cluster.
+npEnabled :: Lens' NetworkPolicy (Maybe Bool)
+npEnabled
+  = lens _npEnabled (\ s a -> s{_npEnabled = a})
+
+-- | The selected network policy provider.
+npProvider :: Lens' NetworkPolicy (Maybe NetworkPolicyProvider)
+npProvider
+  = lens _npProvider (\ s a -> s{_npProvider = a})
+
+instance FromJSON NetworkPolicy where
+        parseJSON
+          = withObject "NetworkPolicy"
+              (\ o ->
+                 NetworkPolicy' <$>
+                   (o .:? "enabled") <*> (o .:? "provider"))
+
+instance ToJSON NetworkPolicy where
+        toJSON NetworkPolicy'{..}
+          = object
+              (catMaybes
+                 [("enabled" .=) <$> _npEnabled,
+                  ("provider" .=) <$> _npProvider])
+
+-- | ListNodePoolsResponse is the result of ListNodePoolsRequest.
+--
+-- /See:/ 'listNodePoolsResponse' smart constructor.
+newtype ListNodePoolsResponse =
+  ListNodePoolsResponse'
+    { _lnprNodePools :: Maybe [NodePool]
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ListNodePoolsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lnprNodePools'
+listNodePoolsResponse
+    :: ListNodePoolsResponse
+listNodePoolsResponse = ListNodePoolsResponse' {_lnprNodePools = Nothing}
+
+
+-- | A list of node pools for a cluster.
+lnprNodePools :: Lens' ListNodePoolsResponse [NodePool]
+lnprNodePools
+  = lens _lnprNodePools
+      (\ s a -> s{_lnprNodePools = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON ListNodePoolsResponse where
+        parseJSON
+          = withObject "ListNodePoolsResponse"
+              (\ o ->
+                 ListNodePoolsResponse' <$>
+                   (o .:? "nodePools" .!= mempty))
+
+instance ToJSON ListNodePoolsResponse where
+        toJSON ListNodePoolsResponse'{..}
+          = object
+              (catMaybes [("nodePools" .=) <$> _lnprNodePools])
+
+-- | GetJSONWebKeysResponse is a valid JSON Web Key Set as specififed in rfc
+-- 7517
+--
+-- /See:/ 'getJSONWebKeysResponse' smart constructor.
+newtype GetJSONWebKeysResponse =
+  GetJSONWebKeysResponse'
+    { _gjwkrKeys :: Maybe [JWK]
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'GetJSONWebKeysResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gjwkrKeys'
+getJSONWebKeysResponse
+    :: GetJSONWebKeysResponse
+getJSONWebKeysResponse = GetJSONWebKeysResponse' {_gjwkrKeys = Nothing}
+
+
+-- | The public component of the keys used by the cluster to sign token
+-- requests.
+gjwkrKeys :: Lens' GetJSONWebKeysResponse [JWK]
+gjwkrKeys
+  = lens _gjwkrKeys (\ s a -> s{_gjwkrKeys = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON GetJSONWebKeysResponse where
+        parseJSON
+          = withObject "GetJSONWebKeysResponse"
+              (\ o ->
+                 GetJSONWebKeysResponse' <$>
+                   (o .:? "keys" .!= mempty))
+
+instance ToJSON GetJSONWebKeysResponse where
+        toJSON GetJSONWebKeysResponse'{..}
+          = object (catMaybes [("keys" .=) <$> _gjwkrKeys])
+
+-- | CreateNodePoolRequest creates a node pool for a cluster.
+--
+-- /See:/ 'createNodePoolRequest' smart constructor.
+data CreateNodePoolRequest =
+  CreateNodePoolRequest'
+    { _cnprParent    :: !(Maybe Text)
+    , _cnprZone      :: !(Maybe Text)
+    , _cnprNodePool  :: !(Maybe NodePool)
+    , _cnprClusterId :: !(Maybe Text)
+    , _cnprProjectId :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'CreateNodePoolRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cnprParent'
+--
+-- * 'cnprZone'
+--
+-- * 'cnprNodePool'
+--
+-- * 'cnprClusterId'
+--
+-- * 'cnprProjectId'
+createNodePoolRequest
+    :: CreateNodePoolRequest
+createNodePoolRequest =
+  CreateNodePoolRequest'
+    { _cnprParent = Nothing
+    , _cnprZone = Nothing
+    , _cnprNodePool = Nothing
+    , _cnprClusterId = Nothing
+    , _cnprProjectId = Nothing
+    }
+
+
+-- | The parent (project, location, cluster id) where the node pool will be
+-- created. Specified in the format
+-- \'projects\/*\/locations\/*\/clusters\/*\'.
+cnprParent :: Lens' CreateNodePoolRequest (Maybe Text)
+cnprParent
+  = lens _cnprParent (\ s a -> s{_cnprParent = a})
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the parent field.
+cnprZone :: Lens' CreateNodePoolRequest (Maybe Text)
+cnprZone = lens _cnprZone (\ s a -> s{_cnprZone = a})
+
+-- | The node pool to create.
+cnprNodePool :: Lens' CreateNodePoolRequest (Maybe NodePool)
+cnprNodePool
+  = lens _cnprNodePool (\ s a -> s{_cnprNodePool = a})
+
+-- | Deprecated. The name of the cluster. This field has been deprecated and
+-- replaced by the parent field.
+cnprClusterId :: Lens' CreateNodePoolRequest (Maybe Text)
+cnprClusterId
+  = lens _cnprClusterId
+      (\ s a -> s{_cnprClusterId = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/developers.google.com\/console\/help\/new\/#projectnumber).
+-- This field has been deprecated and replaced by the parent field.
+cnprProjectId :: Lens' CreateNodePoolRequest (Maybe Text)
+cnprProjectId
+  = lens _cnprProjectId
+      (\ s a -> s{_cnprProjectId = a})
+
+instance FromJSON CreateNodePoolRequest where
+        parseJSON
+          = withObject "CreateNodePoolRequest"
+              (\ o ->
+                 CreateNodePoolRequest' <$>
+                   (o .:? "parent") <*> (o .:? "zone") <*>
+                     (o .:? "nodePool")
+                     <*> (o .:? "clusterId")
+                     <*> (o .:? "projectId"))
+
+instance ToJSON CreateNodePoolRequest where
+        toJSON CreateNodePoolRequest'{..}
+          = object
+              (catMaybes
+                 [("parent" .=) <$> _cnprParent,
+                  ("zone" .=) <$> _cnprZone,
+                  ("nodePool" .=) <$> _cnprNodePool,
+                  ("clusterId" .=) <$> _cnprClusterId,
+                  ("projectId" .=) <$> _cnprProjectId])
+
+-- | The labels to set for that cluster.
+--
+-- /See:/ 'setLabelsRequestResourceLabels' smart constructor.
+newtype SetLabelsRequestResourceLabels =
+  SetLabelsRequestResourceLabels'
+    { _slrrlAddtional :: HashMap Text Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'SetLabelsRequestResourceLabels' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'slrrlAddtional'
+setLabelsRequestResourceLabels
+    :: HashMap Text Text -- ^ 'slrrlAddtional'
+    -> SetLabelsRequestResourceLabels
+setLabelsRequestResourceLabels pSlrrlAddtional_ =
+  SetLabelsRequestResourceLabels' {_slrrlAddtional = _Coerce # pSlrrlAddtional_}
+
 
 slrrlAddtional :: Lens' SetLabelsRequestResourceLabels (HashMap Text Text)
 slrrlAddtional
diff --git a/gen/Network/Google/Container/Types/Sum.hs b/gen/Network/Google/Container/Types/Sum.hs
--- a/gen/Network/Google/Container/Types/Sum.hs
+++ b/gen/Network/Google/Container/Types/Sum.hs
@@ -18,22 +18,71 @@
 
 import           Network.Google.Prelude hiding (Bytes)
 
+-- | This field is to determine the status of the secondary range
+-- programmably.
+data UsableSubnetworkSecondaryRangeStatus
+    = Unknown
+      -- ^ @UNKNOWN@
+      -- UNKNOWN is the zero value of the Status enum. It\'s not a valid status.
+    | Unused
+      -- ^ @UNUSED@
+      -- UNUSED denotes that this range is unclaimed by any cluster.
+    | InUseService
+      -- ^ @IN_USE_SERVICE@
+      -- IN_USE_SERVICE denotes that this range is claimed by a cluster for
+      -- services. It cannot be used for other clusters.
+    | InUseShareablePod
+      -- ^ @IN_USE_SHAREABLE_POD@
+      -- IN_USE_SHAREABLE_POD denotes this range was created by the network admin
+      -- and is currently claimed by a cluster for pods. It can only be used by
+      -- other clusters as a pod range.
+    | InUseManagedPod
+      -- ^ @IN_USE_MANAGED_POD@
+      -- IN_USE_MANAGED_POD denotes this range was created by GKE and is claimed
+      -- for pods. It cannot be used for other clusters.
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable UsableSubnetworkSecondaryRangeStatus
+
+instance FromHttpApiData UsableSubnetworkSecondaryRangeStatus where
+    parseQueryParam = \case
+        "UNKNOWN" -> Right Unknown
+        "UNUSED" -> Right Unused
+        "IN_USE_SERVICE" -> Right InUseService
+        "IN_USE_SHAREABLE_POD" -> Right InUseShareablePod
+        "IN_USE_MANAGED_POD" -> Right InUseManagedPod
+        x -> Left ("Unable to parse UsableSubnetworkSecondaryRangeStatus from: " <> x)
+
+instance ToHttpApiData UsableSubnetworkSecondaryRangeStatus where
+    toQueryParam = \case
+        Unknown -> "UNKNOWN"
+        Unused -> "UNUSED"
+        InUseService -> "IN_USE_SERVICE"
+        InUseShareablePod -> "IN_USE_SHAREABLE_POD"
+        InUseManagedPod -> "IN_USE_MANAGED_POD"
+
+instance FromJSON UsableSubnetworkSecondaryRangeStatus where
+    parseJSON = parseJSONText "UsableSubnetworkSecondaryRangeStatus"
+
+instance ToJSON UsableSubnetworkSecondaryRangeStatus where
+    toJSON = toJSONText
+
 -- | Machine-friendly representation of the condition
 data StatusConditionCode
-    = Unknown
+    = SCCUnknown
       -- ^ @UNKNOWN@
       -- UNKNOWN indicates a generic condition.
-    | GceStockout
+    | SCCGceStockout
       -- ^ @GCE_STOCKOUT@
       -- GCE_STOCKOUT indicates a Google Compute Engine stockout.
-    | GkeServiceAccountDeleted
+    | SCCGkeServiceAccountDeleted
       -- ^ @GKE_SERVICE_ACCOUNT_DELETED@
       -- GKE_SERVICE_ACCOUNT_DELETED indicates that the user deleted their robot
       -- service account.
-    | GceQuotaExceeded
+    | SCCGceQuotaExceeded
       -- ^ @GCE_QUOTA_EXCEEDED@
       -- Google Compute Engine quota was exceeded.
-    | SetByOperator
+    | SCCSetByOperator
       -- ^ @SET_BY_OPERATOR@
       -- Cluster state was manually changed by an SRE due to a system logic
       -- error. More codes TBA
@@ -43,20 +92,20 @@
 
 instance FromHttpApiData StatusConditionCode where
     parseQueryParam = \case
-        "UNKNOWN" -> Right Unknown
-        "GCE_STOCKOUT" -> Right GceStockout
-        "GKE_SERVICE_ACCOUNT_DELETED" -> Right GkeServiceAccountDeleted
-        "GCE_QUOTA_EXCEEDED" -> Right GceQuotaExceeded
-        "SET_BY_OPERATOR" -> Right SetByOperator
+        "UNKNOWN" -> Right SCCUnknown
+        "GCE_STOCKOUT" -> Right SCCGceStockout
+        "GKE_SERVICE_ACCOUNT_DELETED" -> Right SCCGkeServiceAccountDeleted
+        "GCE_QUOTA_EXCEEDED" -> Right SCCGceQuotaExceeded
+        "SET_BY_OPERATOR" -> Right SCCSetByOperator
         x -> Left ("Unable to parse StatusConditionCode from: " <> x)
 
 instance ToHttpApiData StatusConditionCode where
     toQueryParam = \case
-        Unknown -> "UNKNOWN"
-        GceStockout -> "GCE_STOCKOUT"
-        GkeServiceAccountDeleted -> "GKE_SERVICE_ACCOUNT_DELETED"
-        GceQuotaExceeded -> "GCE_QUOTA_EXCEEDED"
-        SetByOperator -> "SET_BY_OPERATOR"
+        SCCUnknown -> "UNKNOWN"
+        SCCGceStockout -> "GCE_STOCKOUT"
+        SCCGkeServiceAccountDeleted -> "GKE_SERVICE_ACCOUNT_DELETED"
+        SCCGceQuotaExceeded -> "GCE_QUOTA_EXCEEDED"
+        SCCSetByOperator -> "SET_BY_OPERATOR"
 
 instance FromJSON StatusConditionCode where
     parseJSON = parseJSONText "StatusConditionCode"
diff --git a/gen/Network/Google/Resource/Container/Projects/Aggregated/UsableSubnetworks/List.hs b/gen/Network/Google/Resource/Container/Projects/Aggregated/UsableSubnetworks/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Aggregated/UsableSubnetworks/List.hs
@@ -0,0 +1,209 @@
+{-# 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.Aggregated.UsableSubnetworks.List
+-- 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)
+--
+-- Lists subnetworks that are usable for creating clusters in a project.
+--
+-- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.aggregated.usableSubnetworks.list@.
+module Network.Google.Resource.Container.Projects.Aggregated.UsableSubnetworks.List
+    (
+    -- * REST Resource
+      ProjectsAggregatedUsableSubnetworksListResource
+
+    -- * Creating a Request
+    , projectsAggregatedUsableSubnetworksList
+    , ProjectsAggregatedUsableSubnetworksList
+
+    -- * Request Lenses
+    , pauslParent
+    , pauslXgafv
+    , pauslUploadProtocol
+    , pauslAccessToken
+    , pauslUploadType
+    , pauslFilter
+    , pauslPageToken
+    , pauslPageSize
+    , pauslCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.aggregated.usableSubnetworks.list@ method which the
+-- 'ProjectsAggregatedUsableSubnetworksList' request conforms to.
+type ProjectsAggregatedUsableSubnetworksListResource
+     =
+     "v1" :>
+       Capture "parent" Text :>
+         "aggregated" :>
+           "usableSubnetworks" :>
+             QueryParam "$.xgafv" Xgafv :>
+               QueryParam "upload_protocol" Text :>
+                 QueryParam "access_token" Text :>
+                   QueryParam "uploadType" Text :>
+                     QueryParam "filter" Text :>
+                       QueryParam "pageToken" Text :>
+                         QueryParam "pageSize" (Textual Int32) :>
+                           QueryParam "callback" Text :>
+                             QueryParam "alt" AltJSON :>
+                               Get '[JSON] ListUsableSubnetworksResponse
+
+-- | Lists subnetworks that are usable for creating clusters in a project.
+--
+-- /See:/ 'projectsAggregatedUsableSubnetworksList' smart constructor.
+data ProjectsAggregatedUsableSubnetworksList =
+  ProjectsAggregatedUsableSubnetworksList'
+    { _pauslParent         :: !Text
+    , _pauslXgafv          :: !(Maybe Xgafv)
+    , _pauslUploadProtocol :: !(Maybe Text)
+    , _pauslAccessToken    :: !(Maybe Text)
+    , _pauslUploadType     :: !(Maybe Text)
+    , _pauslFilter         :: !(Maybe Text)
+    , _pauslPageToken      :: !(Maybe Text)
+    , _pauslPageSize       :: !(Maybe (Textual Int32))
+    , _pauslCallback       :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ProjectsAggregatedUsableSubnetworksList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pauslParent'
+--
+-- * 'pauslXgafv'
+--
+-- * 'pauslUploadProtocol'
+--
+-- * 'pauslAccessToken'
+--
+-- * 'pauslUploadType'
+--
+-- * 'pauslFilter'
+--
+-- * 'pauslPageToken'
+--
+-- * 'pauslPageSize'
+--
+-- * 'pauslCallback'
+projectsAggregatedUsableSubnetworksList
+    :: Text -- ^ 'pauslParent'
+    -> ProjectsAggregatedUsableSubnetworksList
+projectsAggregatedUsableSubnetworksList pPauslParent_ =
+  ProjectsAggregatedUsableSubnetworksList'
+    { _pauslParent = pPauslParent_
+    , _pauslXgafv = Nothing
+    , _pauslUploadProtocol = Nothing
+    , _pauslAccessToken = Nothing
+    , _pauslUploadType = Nothing
+    , _pauslFilter = Nothing
+    , _pauslPageToken = Nothing
+    , _pauslPageSize = Nothing
+    , _pauslCallback = Nothing
+    }
+
+
+-- | The parent project where subnetworks are usable. Specified in the format
+-- \'projects\/*\'.
+pauslParent :: Lens' ProjectsAggregatedUsableSubnetworksList Text
+pauslParent
+  = lens _pauslParent (\ s a -> s{_pauslParent = a})
+
+-- | V1 error format.
+pauslXgafv :: Lens' ProjectsAggregatedUsableSubnetworksList (Maybe Xgafv)
+pauslXgafv
+  = lens _pauslXgafv (\ s a -> s{_pauslXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pauslUploadProtocol :: Lens' ProjectsAggregatedUsableSubnetworksList (Maybe Text)
+pauslUploadProtocol
+  = lens _pauslUploadProtocol
+      (\ s a -> s{_pauslUploadProtocol = a})
+
+-- | OAuth access token.
+pauslAccessToken :: Lens' ProjectsAggregatedUsableSubnetworksList (Maybe Text)
+pauslAccessToken
+  = lens _pauslAccessToken
+      (\ s a -> s{_pauslAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pauslUploadType :: Lens' ProjectsAggregatedUsableSubnetworksList (Maybe Text)
+pauslUploadType
+  = lens _pauslUploadType
+      (\ s a -> s{_pauslUploadType = a})
+
+-- | Filtering currently only supports equality on the networkProjectId and
+-- must be in the form: \"networkProjectId=[PROJECTID]\", where
+-- \`networkProjectId\` is the project which owns the listed subnetworks.
+-- This defaults to the parent project ID.
+pauslFilter :: Lens' ProjectsAggregatedUsableSubnetworksList (Maybe Text)
+pauslFilter
+  = lens _pauslFilter (\ s a -> s{_pauslFilter = a})
+
+-- | Specifies a page token to use. Set this to the nextPageToken returned by
+-- previous list requests to get the next page of results.
+pauslPageToken :: Lens' ProjectsAggregatedUsableSubnetworksList (Maybe Text)
+pauslPageToken
+  = lens _pauslPageToken
+      (\ s a -> s{_pauslPageToken = a})
+
+-- | The max number of results per page that should be returned. If the
+-- number of available results is larger than \`page_size\`, a
+-- \`next_page_token\` is returned which can be used to get the next page
+-- of results in subsequent requests. Acceptable values are 0 to 500,
+-- inclusive. (Default: 500)
+pauslPageSize :: Lens' ProjectsAggregatedUsableSubnetworksList (Maybe Int32)
+pauslPageSize
+  = lens _pauslPageSize
+      (\ s a -> s{_pauslPageSize = a})
+      . mapping _Coerce
+
+-- | JSONP
+pauslCallback :: Lens' ProjectsAggregatedUsableSubnetworksList (Maybe Text)
+pauslCallback
+  = lens _pauslCallback
+      (\ s a -> s{_pauslCallback = a})
+
+instance GoogleRequest
+           ProjectsAggregatedUsableSubnetworksList
+         where
+        type Rs ProjectsAggregatedUsableSubnetworksList =
+             ListUsableSubnetworksResponse
+        type Scopes ProjectsAggregatedUsableSubnetworksList =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsAggregatedUsableSubnetworksList'{..}
+          = go _pauslParent _pauslXgafv _pauslUploadProtocol
+              _pauslAccessToken
+              _pauslUploadType
+              _pauslFilter
+              _pauslPageToken
+              _pauslPageSize
+              _pauslCallback
+              (Just AltJSON)
+              containerService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy
+                           ProjectsAggregatedUsableSubnetworksListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/CompleteIPRotation.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/CompleteIPRotation.hs
--- a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/CompleteIPRotation.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/CompleteIPRotation.hs
@@ -63,7 +63,8 @@
 -- | Completes master IP rotation.
 --
 -- /See:/ 'projectsLocationsClustersCompleteIPRotation' smart constructor.
-data ProjectsLocationsClustersCompleteIPRotation = ProjectsLocationsClustersCompleteIPRotation'
+data ProjectsLocationsClustersCompleteIPRotation =
+  ProjectsLocationsClustersCompleteIPRotation'
     { _plccirXgafv          :: !(Maybe Xgafv)
     , _plccirUploadProtocol :: !(Maybe Text)
     , _plccirAccessToken    :: !(Maybe Text)
@@ -71,8 +72,10 @@
     , _plccirPayload        :: !CompleteIPRotationRequest
     , _plccirName           :: !Text
     , _plccirCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsLocationsClustersCompleteIPRotation' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -95,7 +98,7 @@
     -> Text -- ^ 'plccirName'
     -> ProjectsLocationsClustersCompleteIPRotation
 projectsLocationsClustersCompleteIPRotation pPlccirPayload_ pPlccirName_ =
-    ProjectsLocationsClustersCompleteIPRotation'
+  ProjectsLocationsClustersCompleteIPRotation'
     { _plccirXgafv = Nothing
     , _plccirUploadProtocol = Nothing
     , _plccirAccessToken = Nothing
@@ -105,6 +108,7 @@
     , _plccirCallback = Nothing
     }
 
+
 -- | V1 error format.
 plccirXgafv :: Lens' ProjectsLocationsClustersCompleteIPRotation (Maybe Xgafv)
 plccirXgafv
@@ -148,7 +152,8 @@
       (\ s a -> s{_plccirCallback = a})
 
 instance GoogleRequest
-         ProjectsLocationsClustersCompleteIPRotation where
+           ProjectsLocationsClustersCompleteIPRotation
+         where
         type Rs ProjectsLocationsClustersCompleteIPRotation =
              Operation
         type Scopes
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/Create.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/Create.hs
--- a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/Create.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/Create.hs
@@ -24,11 +24,11 @@
 -- Compute Engine instances. By default, the cluster is created in the
 -- project\'s [default
 -- network](\/compute\/docs\/networks-and-firewalls#networks). One firewall
--- is added for the cluster. After cluster creation, the cluster creates
+-- is added for the cluster. After cluster creation, the Kubelet creates
 -- routes for each node to allow the containers on that node to communicate
 -- with all other instances in the cluster. Finally, an entry is added to
--- the project\'s global metadata indicating which CIDR range is being used
--- by the cluster.
+-- the project\'s global metadata indicating which CIDR range the cluster
+-- is using.
 --
 -- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.locations.clusters.create@.
 module Network.Google.Resource.Container.Projects.Locations.Clusters.Create
@@ -72,14 +72,15 @@
 -- Compute Engine instances. By default, the cluster is created in the
 -- project\'s [default
 -- network](\/compute\/docs\/networks-and-firewalls#networks). One firewall
--- is added for the cluster. After cluster creation, the cluster creates
+-- is added for the cluster. After cluster creation, the Kubelet creates
 -- routes for each node to allow the containers on that node to communicate
 -- with all other instances in the cluster. Finally, an entry is added to
--- the project\'s global metadata indicating which CIDR range is being used
--- by the cluster.
+-- the project\'s global metadata indicating which CIDR range the cluster
+-- is using.
 --
 -- /See:/ 'projectsLocationsClustersCreate' smart constructor.
-data ProjectsLocationsClustersCreate = ProjectsLocationsClustersCreate'
+data ProjectsLocationsClustersCreate =
+  ProjectsLocationsClustersCreate'
     { _plccParent         :: !Text
     , _plccXgafv          :: !(Maybe Xgafv)
     , _plccUploadProtocol :: !(Maybe Text)
@@ -87,8 +88,10 @@
     , _plccUploadType     :: !(Maybe Text)
     , _plccPayload        :: !CreateClusterRequest
     , _plccCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsLocationsClustersCreate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -111,7 +114,7 @@
     -> CreateClusterRequest -- ^ 'plccPayload'
     -> ProjectsLocationsClustersCreate
 projectsLocationsClustersCreate pPlccParent_ pPlccPayload_ =
-    ProjectsLocationsClustersCreate'
+  ProjectsLocationsClustersCreate'
     { _plccParent = pPlccParent_
     , _plccXgafv = Nothing
     , _plccUploadProtocol = Nothing
@@ -121,6 +124,7 @@
     , _plccCallback = Nothing
     }
 
+
 -- | The parent (project and location) where the cluster will be created.
 -- Specified in the format \'projects\/*\/locations\/*\'.
 plccParent :: Lens' ProjectsLocationsClustersCreate Text
@@ -161,7 +165,8 @@
   = lens _plccCallback (\ s a -> s{_plccCallback = a})
 
 instance GoogleRequest
-         ProjectsLocationsClustersCreate where
+           ProjectsLocationsClustersCreate
+         where
         type Rs ProjectsLocationsClustersCreate = Operation
         type Scopes ProjectsLocationsClustersCreate =
              '["https://www.googleapis.com/auth/cloud-platform"]
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/Delete.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/Delete.hs
--- a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/Delete.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/Delete.hs
@@ -23,8 +23,8 @@
 -- Deletes the cluster, including the Kubernetes endpoint and all worker
 -- nodes. Firewalls and routes that were configured during cluster creation
 -- are also deleted. Other Google Compute Engine resources that might be in
--- use by the cluster (e.g. load balancer resources) will not be deleted if
--- they weren\'t present at the initial create time.
+-- use by the cluster, such as load balancer resources, are not deleted if
+-- they weren\'t present when the cluster was initially created.
 --
 -- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.locations.clusters.delete@.
 module Network.Google.Resource.Container.Projects.Locations.Clusters.Delete
@@ -69,11 +69,12 @@
 -- | Deletes the cluster, including the Kubernetes endpoint and all worker
 -- nodes. Firewalls and routes that were configured during cluster creation
 -- are also deleted. Other Google Compute Engine resources that might be in
--- use by the cluster (e.g. load balancer resources) will not be deleted if
--- they weren\'t present at the initial create time.
+-- use by the cluster, such as load balancer resources, are not deleted if
+-- they weren\'t present when the cluster was initially created.
 --
 -- /See:/ 'projectsLocationsClustersDelete' smart constructor.
-data ProjectsLocationsClustersDelete = ProjectsLocationsClustersDelete'
+data ProjectsLocationsClustersDelete =
+  ProjectsLocationsClustersDelete'
     { _plcdXgafv          :: !(Maybe Xgafv)
     , _plcdUploadProtocol :: !(Maybe Text)
     , _plcdAccessToken    :: !(Maybe Text)
@@ -83,8 +84,10 @@
     , _plcdClusterId      :: !(Maybe Text)
     , _plcdProjectId      :: !(Maybe Text)
     , _plcdCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsLocationsClustersDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -110,7 +113,7 @@
     :: Text -- ^ 'plcdName'
     -> ProjectsLocationsClustersDelete
 projectsLocationsClustersDelete pPlcdName_ =
-    ProjectsLocationsClustersDelete'
+  ProjectsLocationsClustersDelete'
     { _plcdXgafv = Nothing
     , _plcdUploadProtocol = Nothing
     , _plcdAccessToken = Nothing
@@ -122,6 +125,7 @@
     , _plcdCallback = Nothing
     }
 
+
 -- | V1 error format.
 plcdXgafv :: Lens' ProjectsLocationsClustersDelete (Maybe Xgafv)
 plcdXgafv
@@ -177,7 +181,8 @@
   = lens _plcdCallback (\ s a -> s{_plcdCallback = a})
 
 instance GoogleRequest
-         ProjectsLocationsClustersDelete where
+           ProjectsLocationsClustersDelete
+         where
         type Rs ProjectsLocationsClustersDelete = Operation
         type Scopes ProjectsLocationsClustersDelete =
              '["https://www.googleapis.com/auth/cloud-platform"]
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/Get.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/Get.hs
--- a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/Get.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/Get.hs
@@ -65,7 +65,8 @@
 -- | Gets the details of a specific cluster.
 --
 -- /See:/ 'projectsLocationsClustersGet' smart constructor.
-data ProjectsLocationsClustersGet = ProjectsLocationsClustersGet'
+data ProjectsLocationsClustersGet =
+  ProjectsLocationsClustersGet'
     { _plcgXgafv          :: !(Maybe Xgafv)
     , _plcgUploadProtocol :: !(Maybe Text)
     , _plcgAccessToken    :: !(Maybe Text)
@@ -75,8 +76,10 @@
     , _plcgClusterId      :: !(Maybe Text)
     , _plcgProjectId      :: !(Maybe Text)
     , _plcgCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsLocationsClustersGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -102,7 +105,7 @@
     :: Text -- ^ 'plcgName'
     -> ProjectsLocationsClustersGet
 projectsLocationsClustersGet pPlcgName_ =
-    ProjectsLocationsClustersGet'
+  ProjectsLocationsClustersGet'
     { _plcgXgafv = Nothing
     , _plcgUploadProtocol = Nothing
     , _plcgAccessToken = Nothing
@@ -113,6 +116,7 @@
     , _plcgProjectId = Nothing
     , _plcgCallback = Nothing
     }
+
 
 -- | V1 error format.
 plcgXgafv :: Lens' ProjectsLocationsClustersGet (Maybe Xgafv)
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/GetJWKs.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/GetJWKs.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/GetJWKs.hs
@@ -0,0 +1,162 @@
+{-# 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.Locations.Clusters.GetJWKs
+-- 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)
+--
+-- Gets the public component of the cluster signing keys in JSON Web Key
+-- format. This API is not yet intended for general use, and is not
+-- available for all clusters.
+--
+-- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.locations.clusters.getJwks@.
+module Network.Google.Resource.Container.Projects.Locations.Clusters.GetJWKs
+    (
+    -- * REST Resource
+      ProjectsLocationsClustersGetJWKsResource
+
+    -- * Creating a Request
+    , projectsLocationsClustersGetJWKs
+    , ProjectsLocationsClustersGetJWKs
+
+    -- * Request Lenses
+    , plcgjParent
+    , plcgjXgafv
+    , plcgjUploadProtocol
+    , plcgjAccessToken
+    , plcgjUploadType
+    , plcgjCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.locations.clusters.getJwks@ method which the
+-- 'ProjectsLocationsClustersGetJWKs' request conforms to.
+type ProjectsLocationsClustersGetJWKsResource =
+     "v1" :>
+       Capture "parent" Text :>
+         "jwks" :>
+           QueryParam "$.xgafv" Xgafv :>
+             QueryParam "upload_protocol" Text :>
+               QueryParam "access_token" Text :>
+                 QueryParam "uploadType" Text :>
+                   QueryParam "callback" Text :>
+                     QueryParam "alt" AltJSON :>
+                       Get '[JSON] GetJSONWebKeysResponse
+
+-- | Gets the public component of the cluster signing keys in JSON Web Key
+-- format. This API is not yet intended for general use, and is not
+-- available for all clusters.
+--
+-- /See:/ 'projectsLocationsClustersGetJWKs' smart constructor.
+data ProjectsLocationsClustersGetJWKs =
+  ProjectsLocationsClustersGetJWKs'
+    { _plcgjParent         :: !Text
+    , _plcgjXgafv          :: !(Maybe Xgafv)
+    , _plcgjUploadProtocol :: !(Maybe Text)
+    , _plcgjAccessToken    :: !(Maybe Text)
+    , _plcgjUploadType     :: !(Maybe Text)
+    , _plcgjCallback       :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ProjectsLocationsClustersGetJWKs' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plcgjParent'
+--
+-- * 'plcgjXgafv'
+--
+-- * 'plcgjUploadProtocol'
+--
+-- * 'plcgjAccessToken'
+--
+-- * 'plcgjUploadType'
+--
+-- * 'plcgjCallback'
+projectsLocationsClustersGetJWKs
+    :: Text -- ^ 'plcgjParent'
+    -> ProjectsLocationsClustersGetJWKs
+projectsLocationsClustersGetJWKs pPlcgjParent_ =
+  ProjectsLocationsClustersGetJWKs'
+    { _plcgjParent = pPlcgjParent_
+    , _plcgjXgafv = Nothing
+    , _plcgjUploadProtocol = Nothing
+    , _plcgjAccessToken = Nothing
+    , _plcgjUploadType = Nothing
+    , _plcgjCallback = Nothing
+    }
+
+
+-- | The cluster (project, location, cluster id) to get keys for. Specified
+-- in the format \'projects\/*\/locations\/*\/clusters\/*\'.
+plcgjParent :: Lens' ProjectsLocationsClustersGetJWKs Text
+plcgjParent
+  = lens _plcgjParent (\ s a -> s{_plcgjParent = a})
+
+-- | V1 error format.
+plcgjXgafv :: Lens' ProjectsLocationsClustersGetJWKs (Maybe Xgafv)
+plcgjXgafv
+  = lens _plcgjXgafv (\ s a -> s{_plcgjXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plcgjUploadProtocol :: Lens' ProjectsLocationsClustersGetJWKs (Maybe Text)
+plcgjUploadProtocol
+  = lens _plcgjUploadProtocol
+      (\ s a -> s{_plcgjUploadProtocol = a})
+
+-- | OAuth access token.
+plcgjAccessToken :: Lens' ProjectsLocationsClustersGetJWKs (Maybe Text)
+plcgjAccessToken
+  = lens _plcgjAccessToken
+      (\ s a -> s{_plcgjAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plcgjUploadType :: Lens' ProjectsLocationsClustersGetJWKs (Maybe Text)
+plcgjUploadType
+  = lens _plcgjUploadType
+      (\ s a -> s{_plcgjUploadType = a})
+
+-- | JSONP
+plcgjCallback :: Lens' ProjectsLocationsClustersGetJWKs (Maybe Text)
+plcgjCallback
+  = lens _plcgjCallback
+      (\ s a -> s{_plcgjCallback = a})
+
+instance GoogleRequest
+           ProjectsLocationsClustersGetJWKs
+         where
+        type Rs ProjectsLocationsClustersGetJWKs =
+             GetJSONWebKeysResponse
+        type Scopes ProjectsLocationsClustersGetJWKs =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsLocationsClustersGetJWKs'{..}
+          = go _plcgjParent _plcgjXgafv _plcgjUploadProtocol
+              _plcgjAccessToken
+              _plcgjUploadType
+              _plcgjCallback
+              (Just AltJSON)
+              containerService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsLocationsClustersGetJWKsResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/List.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/List.hs
--- a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/List.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/List.hs
@@ -67,7 +67,8 @@
 -- all zones.
 --
 -- /See:/ 'projectsLocationsClustersList' smart constructor.
-data ProjectsLocationsClustersList = ProjectsLocationsClustersList'
+data ProjectsLocationsClustersList =
+  ProjectsLocationsClustersList'
     { _plclParent         :: !Text
     , _plclXgafv          :: !(Maybe Xgafv)
     , _plclUploadProtocol :: !(Maybe Text)
@@ -76,8 +77,10 @@
     , _plclZone           :: !(Maybe Text)
     , _plclProjectId      :: !(Maybe Text)
     , _plclCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsLocationsClustersList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -101,7 +104,7 @@
     :: Text -- ^ 'plclParent'
     -> ProjectsLocationsClustersList
 projectsLocationsClustersList pPlclParent_ =
-    ProjectsLocationsClustersList'
+  ProjectsLocationsClustersList'
     { _plclParent = pPlclParent_
     , _plclXgafv = Nothing
     , _plclUploadProtocol = Nothing
@@ -111,6 +114,7 @@
     , _plclProjectId = Nothing
     , _plclCallback = Nothing
     }
+
 
 -- | The parent (project and location) where the clusters will be listed.
 -- Specified in the format \'projects\/*\/locations\/*\'. Location \"-\"
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/Create.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/Create.hs
--- a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/Create.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/Create.hs
@@ -64,7 +64,8 @@
 -- | Creates a node pool for a cluster.
 --
 -- /See:/ 'projectsLocationsClustersNodePoolsCreate' smart constructor.
-data ProjectsLocationsClustersNodePoolsCreate = ProjectsLocationsClustersNodePoolsCreate'
+data ProjectsLocationsClustersNodePoolsCreate =
+  ProjectsLocationsClustersNodePoolsCreate'
     { _plcnpcParent         :: !Text
     , _plcnpcXgafv          :: !(Maybe Xgafv)
     , _plcnpcUploadProtocol :: !(Maybe Text)
@@ -72,8 +73,10 @@
     , _plcnpcUploadType     :: !(Maybe Text)
     , _plcnpcPayload        :: !CreateNodePoolRequest
     , _plcnpcCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsLocationsClustersNodePoolsCreate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -96,7 +99,7 @@
     -> CreateNodePoolRequest -- ^ 'plcnpcPayload'
     -> ProjectsLocationsClustersNodePoolsCreate
 projectsLocationsClustersNodePoolsCreate pPlcnpcParent_ pPlcnpcPayload_ =
-    ProjectsLocationsClustersNodePoolsCreate'
+  ProjectsLocationsClustersNodePoolsCreate'
     { _plcnpcParent = pPlcnpcParent_
     , _plcnpcXgafv = Nothing
     , _plcnpcUploadProtocol = Nothing
@@ -106,6 +109,7 @@
     , _plcnpcCallback = Nothing
     }
 
+
 -- | The parent (project, location, cluster id) where the node pool will be
 -- created. Specified in the format
 -- \'projects\/*\/locations\/*\/clusters\/*\'.
@@ -149,7 +153,8 @@
       (\ s a -> s{_plcnpcCallback = a})
 
 instance GoogleRequest
-         ProjectsLocationsClustersNodePoolsCreate where
+           ProjectsLocationsClustersNodePoolsCreate
+         where
         type Rs ProjectsLocationsClustersNodePoolsCreate =
              Operation
         type Scopes ProjectsLocationsClustersNodePoolsCreate
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/Delete.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/Delete.hs
--- a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/Delete.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/Delete.hs
@@ -68,7 +68,8 @@
 -- | Deletes a node pool from a cluster.
 --
 -- /See:/ 'projectsLocationsClustersNodePoolsDelete' smart constructor.
-data ProjectsLocationsClustersNodePoolsDelete = ProjectsLocationsClustersNodePoolsDelete'
+data ProjectsLocationsClustersNodePoolsDelete =
+  ProjectsLocationsClustersNodePoolsDelete'
     { _plcnpdXgafv          :: !(Maybe Xgafv)
     , _plcnpdUploadProtocol :: !(Maybe Text)
     , _plcnpdAccessToken    :: !(Maybe Text)
@@ -79,8 +80,10 @@
     , _plcnpdClusterId      :: !(Maybe Text)
     , _plcnpdProjectId      :: !(Maybe Text)
     , _plcnpdCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsLocationsClustersNodePoolsDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -108,7 +111,7 @@
     :: Text -- ^ 'plcnpdName'
     -> ProjectsLocationsClustersNodePoolsDelete
 projectsLocationsClustersNodePoolsDelete pPlcnpdName_ =
-    ProjectsLocationsClustersNodePoolsDelete'
+  ProjectsLocationsClustersNodePoolsDelete'
     { _plcnpdXgafv = Nothing
     , _plcnpdUploadProtocol = Nothing
     , _plcnpdAccessToken = Nothing
@@ -121,6 +124,7 @@
     , _plcnpdCallback = Nothing
     }
 
+
 -- | V1 error format.
 plcnpdXgafv :: Lens' ProjectsLocationsClustersNodePoolsDelete (Maybe Xgafv)
 plcnpdXgafv
@@ -187,7 +191,8 @@
       (\ s a -> s{_plcnpdCallback = a})
 
 instance GoogleRequest
-         ProjectsLocationsClustersNodePoolsDelete where
+           ProjectsLocationsClustersNodePoolsDelete
+         where
         type Rs ProjectsLocationsClustersNodePoolsDelete =
              Operation
         type Scopes ProjectsLocationsClustersNodePoolsDelete
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/Get.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/Get.hs
--- a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/Get.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/Get.hs
@@ -20,7 +20,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Retrieves the node pool requested.
+-- Retrieves the requested node pool.
 --
 -- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.locations.clusters.nodePools.get@.
 module Network.Google.Resource.Container.Projects.Locations.Clusters.NodePools.Get
@@ -64,10 +64,11 @@
                          QueryParam "callback" Text :>
                            QueryParam "alt" AltJSON :> Get '[JSON] NodePool
 
--- | Retrieves the node pool requested.
+-- | Retrieves the requested node pool.
 --
 -- /See:/ 'projectsLocationsClustersNodePoolsGet' smart constructor.
-data ProjectsLocationsClustersNodePoolsGet = ProjectsLocationsClustersNodePoolsGet'
+data ProjectsLocationsClustersNodePoolsGet =
+  ProjectsLocationsClustersNodePoolsGet'
     { _plcnpgXgafv          :: !(Maybe Xgafv)
     , _plcnpgUploadProtocol :: !(Maybe Text)
     , _plcnpgAccessToken    :: !(Maybe Text)
@@ -78,8 +79,10 @@
     , _plcnpgClusterId      :: !(Maybe Text)
     , _plcnpgProjectId      :: !(Maybe Text)
     , _plcnpgCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsLocationsClustersNodePoolsGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -107,7 +110,7 @@
     :: Text -- ^ 'plcnpgName'
     -> ProjectsLocationsClustersNodePoolsGet
 projectsLocationsClustersNodePoolsGet pPlcnpgName_ =
-    ProjectsLocationsClustersNodePoolsGet'
+  ProjectsLocationsClustersNodePoolsGet'
     { _plcnpgXgafv = Nothing
     , _plcnpgUploadProtocol = Nothing
     , _plcnpgAccessToken = Nothing
@@ -120,6 +123,7 @@
     , _plcnpgCallback = Nothing
     }
 
+
 -- | V1 error format.
 plcnpgXgafv :: Lens' ProjectsLocationsClustersNodePoolsGet (Maybe Xgafv)
 plcnpgXgafv
@@ -186,7 +190,8 @@
       (\ s a -> s{_plcnpgCallback = a})
 
 instance GoogleRequest
-         ProjectsLocationsClustersNodePoolsGet where
+           ProjectsLocationsClustersNodePoolsGet
+         where
         type Rs ProjectsLocationsClustersNodePoolsGet =
              NodePool
         type Scopes ProjectsLocationsClustersNodePoolsGet =
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/List.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/List.hs
--- a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/List.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/List.hs
@@ -67,7 +67,8 @@
 -- | Lists the node pools for a cluster.
 --
 -- /See:/ 'projectsLocationsClustersNodePoolsList' smart constructor.
-data ProjectsLocationsClustersNodePoolsList = ProjectsLocationsClustersNodePoolsList'
+data ProjectsLocationsClustersNodePoolsList =
+  ProjectsLocationsClustersNodePoolsList'
     { _plcnplParent         :: !Text
     , _plcnplXgafv          :: !(Maybe Xgafv)
     , _plcnplUploadProtocol :: !(Maybe Text)
@@ -77,8 +78,10 @@
     , _plcnplClusterId      :: !(Maybe Text)
     , _plcnplProjectId      :: !(Maybe Text)
     , _plcnplCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsLocationsClustersNodePoolsList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -104,7 +107,7 @@
     :: Text -- ^ 'plcnplParent'
     -> ProjectsLocationsClustersNodePoolsList
 projectsLocationsClustersNodePoolsList pPlcnplParent_ =
-    ProjectsLocationsClustersNodePoolsList'
+  ProjectsLocationsClustersNodePoolsList'
     { _plcnplParent = pPlcnplParent_
     , _plcnplXgafv = Nothing
     , _plcnplUploadProtocol = Nothing
@@ -116,6 +119,7 @@
     , _plcnplCallback = Nothing
     }
 
+
 -- | The parent (project, location, cluster id) where the node pools will be
 -- listed. Specified in the format
 -- \'projects\/*\/locations\/*\/clusters\/*\'.
@@ -175,7 +179,8 @@
       (\ s a -> s{_plcnplCallback = a})
 
 instance GoogleRequest
-         ProjectsLocationsClustersNodePoolsList where
+           ProjectsLocationsClustersNodePoolsList
+         where
         type Rs ProjectsLocationsClustersNodePoolsList =
              ListNodePoolsResponse
         type Scopes ProjectsLocationsClustersNodePoolsList =
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/Rollback.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/Rollback.hs
--- a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/Rollback.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/Rollback.hs
@@ -20,8 +20,8 @@
 -- 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.
+-- Rolls back a previously Aborted or Failed NodePool upgrade. This makes
+-- no changes if the last upgrade successfully completed.
 --
 -- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.locations.clusters.nodePools.rollback@.
 module Network.Google.Resource.Container.Projects.Locations.Clusters.NodePools.Rollback
@@ -61,11 +61,12 @@
                      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.
+-- | Rolls back a previously Aborted or Failed NodePool upgrade. This makes
+-- no changes if the last upgrade successfully completed.
 --
 -- /See:/ 'projectsLocationsClustersNodePoolsRollback' smart constructor.
-data ProjectsLocationsClustersNodePoolsRollback = ProjectsLocationsClustersNodePoolsRollback'
+data ProjectsLocationsClustersNodePoolsRollback =
+  ProjectsLocationsClustersNodePoolsRollback'
     { _plcnprXgafv          :: !(Maybe Xgafv)
     , _plcnprUploadProtocol :: !(Maybe Text)
     , _plcnprAccessToken    :: !(Maybe Text)
@@ -73,8 +74,10 @@
     , _plcnprPayload        :: !RollbackNodePoolUpgradeRequest
     , _plcnprName           :: !Text
     , _plcnprCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsLocationsClustersNodePoolsRollback' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -97,7 +100,7 @@
     -> Text -- ^ 'plcnprName'
     -> ProjectsLocationsClustersNodePoolsRollback
 projectsLocationsClustersNodePoolsRollback pPlcnprPayload_ pPlcnprName_ =
-    ProjectsLocationsClustersNodePoolsRollback'
+  ProjectsLocationsClustersNodePoolsRollback'
     { _plcnprXgafv = Nothing
     , _plcnprUploadProtocol = Nothing
     , _plcnprAccessToken = Nothing
@@ -107,6 +110,7 @@
     , _plcnprCallback = Nothing
     }
 
+
 -- | V1 error format.
 plcnprXgafv :: Lens' ProjectsLocationsClustersNodePoolsRollback (Maybe Xgafv)
 plcnprXgafv
@@ -150,7 +154,8 @@
       (\ s a -> s{_plcnprCallback = a})
 
 instance GoogleRequest
-         ProjectsLocationsClustersNodePoolsRollback where
+           ProjectsLocationsClustersNodePoolsRollback
+         where
         type Rs ProjectsLocationsClustersNodePoolsRollback =
              Operation
         type Scopes
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/SetAutoscaling.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/SetAutoscaling.hs
--- a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/SetAutoscaling.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/SetAutoscaling.hs
@@ -20,7 +20,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Sets the autoscaling settings for a specific node pool.
+-- Sets the autoscaling settings for the specified node pool.
 --
 -- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.locations.clusters.nodePools.setAutoscaling@.
 module Network.Google.Resource.Container.Projects.Locations.Clusters.NodePools.SetAutoscaling
@@ -60,10 +60,11 @@
                      ReqBody '[JSON] SetNodePoolAutoscalingRequest :>
                        Post '[JSON] Operation
 
--- | Sets the autoscaling settings for a specific node pool.
+-- | Sets the autoscaling settings for the specified node pool.
 --
 -- /See:/ 'projectsLocationsClustersNodePoolsSetAutoscaling' smart constructor.
-data ProjectsLocationsClustersNodePoolsSetAutoscaling = ProjectsLocationsClustersNodePoolsSetAutoscaling'
+data ProjectsLocationsClustersNodePoolsSetAutoscaling =
+  ProjectsLocationsClustersNodePoolsSetAutoscaling'
     { _plcnpsaXgafv          :: !(Maybe Xgafv)
     , _plcnpsaUploadProtocol :: !(Maybe Text)
     , _plcnpsaAccessToken    :: !(Maybe Text)
@@ -71,8 +72,10 @@
     , _plcnpsaPayload        :: !SetNodePoolAutoscalingRequest
     , _plcnpsaName           :: !Text
     , _plcnpsaCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsLocationsClustersNodePoolsSetAutoscaling' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -95,7 +98,7 @@
     -> Text -- ^ 'plcnpsaName'
     -> ProjectsLocationsClustersNodePoolsSetAutoscaling
 projectsLocationsClustersNodePoolsSetAutoscaling pPlcnpsaPayload_ pPlcnpsaName_ =
-    ProjectsLocationsClustersNodePoolsSetAutoscaling'
+  ProjectsLocationsClustersNodePoolsSetAutoscaling'
     { _plcnpsaXgafv = Nothing
     , _plcnpsaUploadProtocol = Nothing
     , _plcnpsaAccessToken = Nothing
@@ -105,6 +108,7 @@
     , _plcnpsaCallback = Nothing
     }
 
+
 -- | V1 error format.
 plcnpsaXgafv :: Lens' ProjectsLocationsClustersNodePoolsSetAutoscaling (Maybe Xgafv)
 plcnpsaXgafv
@@ -148,7 +152,7 @@
       (\ s a -> s{_plcnpsaCallback = a})
 
 instance GoogleRequest
-         ProjectsLocationsClustersNodePoolsSetAutoscaling
+           ProjectsLocationsClustersNodePoolsSetAutoscaling
          where
         type Rs
                ProjectsLocationsClustersNodePoolsSetAutoscaling
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/SetManagement.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/SetManagement.hs
--- a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/SetManagement.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/SetManagement.hs
@@ -63,7 +63,8 @@
 -- | Sets the NodeManagement options for a node pool.
 --
 -- /See:/ 'projectsLocationsClustersNodePoolsSetManagement' smart constructor.
-data ProjectsLocationsClustersNodePoolsSetManagement = ProjectsLocationsClustersNodePoolsSetManagement'
+data ProjectsLocationsClustersNodePoolsSetManagement =
+  ProjectsLocationsClustersNodePoolsSetManagement'
     { _plcnpsmXgafv          :: !(Maybe Xgafv)
     , _plcnpsmUploadProtocol :: !(Maybe Text)
     , _plcnpsmAccessToken    :: !(Maybe Text)
@@ -71,8 +72,10 @@
     , _plcnpsmPayload        :: !SetNodePoolManagementRequest
     , _plcnpsmName           :: !Text
     , _plcnpsmCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsLocationsClustersNodePoolsSetManagement' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -95,7 +98,7 @@
     -> Text -- ^ 'plcnpsmName'
     -> ProjectsLocationsClustersNodePoolsSetManagement
 projectsLocationsClustersNodePoolsSetManagement pPlcnpsmPayload_ pPlcnpsmName_ =
-    ProjectsLocationsClustersNodePoolsSetManagement'
+  ProjectsLocationsClustersNodePoolsSetManagement'
     { _plcnpsmXgafv = Nothing
     , _plcnpsmUploadProtocol = Nothing
     , _plcnpsmAccessToken = Nothing
@@ -105,6 +108,7 @@
     , _plcnpsmCallback = Nothing
     }
 
+
 -- | V1 error format.
 plcnpsmXgafv :: Lens' ProjectsLocationsClustersNodePoolsSetManagement (Maybe Xgafv)
 plcnpsmXgafv
@@ -148,7 +152,8 @@
       (\ s a -> s{_plcnpsmCallback = a})
 
 instance GoogleRequest
-         ProjectsLocationsClustersNodePoolsSetManagement where
+           ProjectsLocationsClustersNodePoolsSetManagement
+         where
         type Rs
                ProjectsLocationsClustersNodePoolsSetManagement
              = Operation
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/SetSize.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/SetSize.hs
--- a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/SetSize.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/SetSize.hs
@@ -63,7 +63,8 @@
 -- | Sets the size for a specific node pool.
 --
 -- /See:/ 'projectsLocationsClustersNodePoolsSetSize' smart constructor.
-data ProjectsLocationsClustersNodePoolsSetSize = ProjectsLocationsClustersNodePoolsSetSize'
+data ProjectsLocationsClustersNodePoolsSetSize =
+  ProjectsLocationsClustersNodePoolsSetSize'
     { _plcnpssXgafv          :: !(Maybe Xgafv)
     , _plcnpssUploadProtocol :: !(Maybe Text)
     , _plcnpssAccessToken    :: !(Maybe Text)
@@ -71,8 +72,10 @@
     , _plcnpssPayload        :: !SetNodePoolSizeRequest
     , _plcnpssName           :: !Text
     , _plcnpssCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsLocationsClustersNodePoolsSetSize' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -95,7 +98,7 @@
     -> Text -- ^ 'plcnpssName'
     -> ProjectsLocationsClustersNodePoolsSetSize
 projectsLocationsClustersNodePoolsSetSize pPlcnpssPayload_ pPlcnpssName_ =
-    ProjectsLocationsClustersNodePoolsSetSize'
+  ProjectsLocationsClustersNodePoolsSetSize'
     { _plcnpssXgafv = Nothing
     , _plcnpssUploadProtocol = Nothing
     , _plcnpssAccessToken = Nothing
@@ -105,6 +108,7 @@
     , _plcnpssCallback = Nothing
     }
 
+
 -- | V1 error format.
 plcnpssXgafv :: Lens' ProjectsLocationsClustersNodePoolsSetSize (Maybe Xgafv)
 plcnpssXgafv
@@ -148,7 +152,8 @@
       (\ s a -> s{_plcnpssCallback = a})
 
 instance GoogleRequest
-         ProjectsLocationsClustersNodePoolsSetSize where
+           ProjectsLocationsClustersNodePoolsSetSize
+         where
         type Rs ProjectsLocationsClustersNodePoolsSetSize =
              Operation
         type Scopes ProjectsLocationsClustersNodePoolsSetSize
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/Update.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/Update.hs
--- a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/Update.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/Update.hs
@@ -20,7 +20,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Updates the version and\/or image type for a specific node pool.
+-- Updates the version and\/or image type for the specified node pool.
 --
 -- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.locations.clusters.nodePools.update@.
 module Network.Google.Resource.Container.Projects.Locations.Clusters.NodePools.Update
@@ -60,10 +60,11 @@
                      ReqBody '[JSON] UpdateNodePoolRequest :>
                        Put '[JSON] Operation
 
--- | Updates the version and\/or image type for a specific node pool.
+-- | Updates the version and\/or image type for the specified node pool.
 --
 -- /See:/ 'projectsLocationsClustersNodePoolsUpdate' smart constructor.
-data ProjectsLocationsClustersNodePoolsUpdate = ProjectsLocationsClustersNodePoolsUpdate'
+data ProjectsLocationsClustersNodePoolsUpdate =
+  ProjectsLocationsClustersNodePoolsUpdate'
     { _plcnpuXgafv          :: !(Maybe Xgafv)
     , _plcnpuUploadProtocol :: !(Maybe Text)
     , _plcnpuAccessToken    :: !(Maybe Text)
@@ -71,8 +72,10 @@
     , _plcnpuPayload        :: !UpdateNodePoolRequest
     , _plcnpuName           :: !Text
     , _plcnpuCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsLocationsClustersNodePoolsUpdate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -95,7 +98,7 @@
     -> Text -- ^ 'plcnpuName'
     -> ProjectsLocationsClustersNodePoolsUpdate
 projectsLocationsClustersNodePoolsUpdate pPlcnpuPayload_ pPlcnpuName_ =
-    ProjectsLocationsClustersNodePoolsUpdate'
+  ProjectsLocationsClustersNodePoolsUpdate'
     { _plcnpuXgafv = Nothing
     , _plcnpuUploadProtocol = Nothing
     , _plcnpuAccessToken = Nothing
@@ -105,6 +108,7 @@
     , _plcnpuCallback = Nothing
     }
 
+
 -- | V1 error format.
 plcnpuXgafv :: Lens' ProjectsLocationsClustersNodePoolsUpdate (Maybe Xgafv)
 plcnpuXgafv
@@ -148,7 +152,8 @@
       (\ s a -> s{_plcnpuCallback = a})
 
 instance GoogleRequest
-         ProjectsLocationsClustersNodePoolsUpdate where
+           ProjectsLocationsClustersNodePoolsUpdate
+         where
         type Rs ProjectsLocationsClustersNodePoolsUpdate =
              Operation
         type Scopes ProjectsLocationsClustersNodePoolsUpdate
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetAddons.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetAddons.hs
--- a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetAddons.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetAddons.hs
@@ -62,7 +62,8 @@
 -- | Sets the addons for a specific cluster.
 --
 -- /See:/ 'projectsLocationsClustersSetAddons' smart constructor.
-data ProjectsLocationsClustersSetAddons = ProjectsLocationsClustersSetAddons'
+data ProjectsLocationsClustersSetAddons =
+  ProjectsLocationsClustersSetAddons'
     { _plcsaXgafv          :: !(Maybe Xgafv)
     , _plcsaUploadProtocol :: !(Maybe Text)
     , _plcsaAccessToken    :: !(Maybe Text)
@@ -70,8 +71,10 @@
     , _plcsaPayload        :: !SetAddonsConfigRequest
     , _plcsaName           :: !Text
     , _plcsaCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsLocationsClustersSetAddons' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -94,7 +97,7 @@
     -> Text -- ^ 'plcsaName'
     -> ProjectsLocationsClustersSetAddons
 projectsLocationsClustersSetAddons pPlcsaPayload_ pPlcsaName_ =
-    ProjectsLocationsClustersSetAddons'
+  ProjectsLocationsClustersSetAddons'
     { _plcsaXgafv = Nothing
     , _plcsaUploadProtocol = Nothing
     , _plcsaAccessToken = Nothing
@@ -104,6 +107,7 @@
     , _plcsaCallback = Nothing
     }
 
+
 -- | V1 error format.
 plcsaXgafv :: Lens' ProjectsLocationsClustersSetAddons (Maybe Xgafv)
 plcsaXgafv
@@ -145,7 +149,8 @@
       (\ s a -> s{_plcsaCallback = a})
 
 instance GoogleRequest
-         ProjectsLocationsClustersSetAddons where
+           ProjectsLocationsClustersSetAddons
+         where
         type Rs ProjectsLocationsClustersSetAddons =
              Operation
         type Scopes ProjectsLocationsClustersSetAddons =
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetLegacyAbac.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetLegacyAbac.hs
--- a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetLegacyAbac.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetLegacyAbac.hs
@@ -62,7 +62,8 @@
 -- | Enables or disables the ABAC authorization mechanism on a cluster.
 --
 -- /See:/ 'projectsLocationsClustersSetLegacyAbac' smart constructor.
-data ProjectsLocationsClustersSetLegacyAbac = ProjectsLocationsClustersSetLegacyAbac'
+data ProjectsLocationsClustersSetLegacyAbac =
+  ProjectsLocationsClustersSetLegacyAbac'
     { _plcslaXgafv          :: !(Maybe Xgafv)
     , _plcslaUploadProtocol :: !(Maybe Text)
     , _plcslaAccessToken    :: !(Maybe Text)
@@ -70,8 +71,10 @@
     , _plcslaPayload        :: !SetLegacyAbacRequest
     , _plcslaName           :: !Text
     , _plcslaCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsLocationsClustersSetLegacyAbac' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -94,7 +97,7 @@
     -> Text -- ^ 'plcslaName'
     -> ProjectsLocationsClustersSetLegacyAbac
 projectsLocationsClustersSetLegacyAbac pPlcslaPayload_ pPlcslaName_ =
-    ProjectsLocationsClustersSetLegacyAbac'
+  ProjectsLocationsClustersSetLegacyAbac'
     { _plcslaXgafv = Nothing
     , _plcslaUploadProtocol = Nothing
     , _plcslaAccessToken = Nothing
@@ -104,6 +107,7 @@
     , _plcslaCallback = Nothing
     }
 
+
 -- | V1 error format.
 plcslaXgafv :: Lens' ProjectsLocationsClustersSetLegacyAbac (Maybe Xgafv)
 plcslaXgafv
@@ -147,7 +151,8 @@
       (\ s a -> s{_plcslaCallback = a})
 
 instance GoogleRequest
-         ProjectsLocationsClustersSetLegacyAbac where
+           ProjectsLocationsClustersSetLegacyAbac
+         where
         type Rs ProjectsLocationsClustersSetLegacyAbac =
              Operation
         type Scopes ProjectsLocationsClustersSetLegacyAbac =
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetLocations.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetLocations.hs
--- a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetLocations.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetLocations.hs
@@ -62,7 +62,8 @@
 -- | Sets the locations for a specific cluster.
 --
 -- /See:/ 'projectsLocationsClustersSetLocations' smart constructor.
-data ProjectsLocationsClustersSetLocations = ProjectsLocationsClustersSetLocations'
+data ProjectsLocationsClustersSetLocations =
+  ProjectsLocationsClustersSetLocations'
     { _plcslsXgafv          :: !(Maybe Xgafv)
     , _plcslsUploadProtocol :: !(Maybe Text)
     , _plcslsAccessToken    :: !(Maybe Text)
@@ -70,8 +71,10 @@
     , _plcslsPayload        :: !SetLocationsRequest
     , _plcslsName           :: !Text
     , _plcslsCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsLocationsClustersSetLocations' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -94,7 +97,7 @@
     -> Text -- ^ 'plcslsName'
     -> ProjectsLocationsClustersSetLocations
 projectsLocationsClustersSetLocations pPlcslsPayload_ pPlcslsName_ =
-    ProjectsLocationsClustersSetLocations'
+  ProjectsLocationsClustersSetLocations'
     { _plcslsXgafv = Nothing
     , _plcslsUploadProtocol = Nothing
     , _plcslsAccessToken = Nothing
@@ -104,6 +107,7 @@
     , _plcslsCallback = Nothing
     }
 
+
 -- | V1 error format.
 plcslsXgafv :: Lens' ProjectsLocationsClustersSetLocations (Maybe Xgafv)
 plcslsXgafv
@@ -146,7 +150,8 @@
       (\ s a -> s{_plcslsCallback = a})
 
 instance GoogleRequest
-         ProjectsLocationsClustersSetLocations where
+           ProjectsLocationsClustersSetLocations
+         where
         type Rs ProjectsLocationsClustersSetLocations =
              Operation
         type Scopes ProjectsLocationsClustersSetLocations =
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetLogging.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetLogging.hs
--- a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetLogging.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetLogging.hs
@@ -62,7 +62,8 @@
 -- | Sets the logging service for a specific cluster.
 --
 -- /See:/ 'projectsLocationsClustersSetLogging' smart constructor.
-data ProjectsLocationsClustersSetLogging = ProjectsLocationsClustersSetLogging'
+data ProjectsLocationsClustersSetLogging =
+  ProjectsLocationsClustersSetLogging'
     { _plcslXgafv          :: !(Maybe Xgafv)
     , _plcslUploadProtocol :: !(Maybe Text)
     , _plcslAccessToken    :: !(Maybe Text)
@@ -70,8 +71,10 @@
     , _plcslPayload        :: !SetLoggingServiceRequest
     , _plcslName           :: !Text
     , _plcslCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsLocationsClustersSetLogging' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -94,7 +97,7 @@
     -> Text -- ^ 'plcslName'
     -> ProjectsLocationsClustersSetLogging
 projectsLocationsClustersSetLogging pPlcslPayload_ pPlcslName_ =
-    ProjectsLocationsClustersSetLogging'
+  ProjectsLocationsClustersSetLogging'
     { _plcslXgafv = Nothing
     , _plcslUploadProtocol = Nothing
     , _plcslAccessToken = Nothing
@@ -104,6 +107,7 @@
     , _plcslCallback = Nothing
     }
 
+
 -- | V1 error format.
 plcslXgafv :: Lens' ProjectsLocationsClustersSetLogging (Maybe Xgafv)
 plcslXgafv
@@ -145,7 +149,8 @@
       (\ s a -> s{_plcslCallback = a})
 
 instance GoogleRequest
-         ProjectsLocationsClustersSetLogging where
+           ProjectsLocationsClustersSetLogging
+         where
         type Rs ProjectsLocationsClustersSetLogging =
              Operation
         type Scopes ProjectsLocationsClustersSetLogging =
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetMaintenancePolicy.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetMaintenancePolicy.hs
--- a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetMaintenancePolicy.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetMaintenancePolicy.hs
@@ -63,7 +63,8 @@
 -- | Sets the maintenance policy for a cluster.
 --
 -- /See:/ 'projectsLocationsClustersSetMaintenancePolicy' smart constructor.
-data ProjectsLocationsClustersSetMaintenancePolicy = ProjectsLocationsClustersSetMaintenancePolicy'
+data ProjectsLocationsClustersSetMaintenancePolicy =
+  ProjectsLocationsClustersSetMaintenancePolicy'
     { _plcsmpXgafv          :: !(Maybe Xgafv)
     , _plcsmpUploadProtocol :: !(Maybe Text)
     , _plcsmpAccessToken    :: !(Maybe Text)
@@ -71,8 +72,10 @@
     , _plcsmpPayload        :: !SetMaintenancePolicyRequest
     , _plcsmpName           :: !Text
     , _plcsmpCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsLocationsClustersSetMaintenancePolicy' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -95,7 +98,7 @@
     -> Text -- ^ 'plcsmpName'
     -> ProjectsLocationsClustersSetMaintenancePolicy
 projectsLocationsClustersSetMaintenancePolicy pPlcsmpPayload_ pPlcsmpName_ =
-    ProjectsLocationsClustersSetMaintenancePolicy'
+  ProjectsLocationsClustersSetMaintenancePolicy'
     { _plcsmpXgafv = Nothing
     , _plcsmpUploadProtocol = Nothing
     , _plcsmpAccessToken = Nothing
@@ -105,6 +108,7 @@
     , _plcsmpCallback = Nothing
     }
 
+
 -- | V1 error format.
 plcsmpXgafv :: Lens' ProjectsLocationsClustersSetMaintenancePolicy (Maybe Xgafv)
 plcsmpXgafv
@@ -148,7 +152,8 @@
       (\ s a -> s{_plcsmpCallback = a})
 
 instance GoogleRequest
-         ProjectsLocationsClustersSetMaintenancePolicy where
+           ProjectsLocationsClustersSetMaintenancePolicy
+         where
         type Rs ProjectsLocationsClustersSetMaintenancePolicy
              = Operation
         type Scopes
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetMasterAuth.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetMasterAuth.hs
--- a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetMasterAuth.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetMasterAuth.hs
@@ -20,9 +20,9 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Used to set master auth materials. Currently supports :- Changing the
--- admin password for a specific cluster. This can be either via password
--- generation or explicitly set the password.
+-- Sets master auth materials. Currently supports changing the admin
+-- password or a specific cluster, either via password generation or
+-- explicitly setting the password.
 --
 -- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.locations.clusters.setMasterAuth@.
 module Network.Google.Resource.Container.Projects.Locations.Clusters.SetMasterAuth
@@ -61,12 +61,13 @@
                      ReqBody '[JSON] SetMasterAuthRequest :>
                        Post '[JSON] Operation
 
--- | Used to set master auth materials. Currently supports :- Changing the
--- admin password for a specific cluster. This can be either via password
--- generation or explicitly set the password.
+-- | Sets master auth materials. Currently supports changing the admin
+-- password or a specific cluster, either via password generation or
+-- explicitly setting the password.
 --
 -- /See:/ 'projectsLocationsClustersSetMasterAuth' smart constructor.
-data ProjectsLocationsClustersSetMasterAuth = ProjectsLocationsClustersSetMasterAuth'
+data ProjectsLocationsClustersSetMasterAuth =
+  ProjectsLocationsClustersSetMasterAuth'
     { _plcsmaXgafv          :: !(Maybe Xgafv)
     , _plcsmaUploadProtocol :: !(Maybe Text)
     , _plcsmaAccessToken    :: !(Maybe Text)
@@ -74,8 +75,10 @@
     , _plcsmaPayload        :: !SetMasterAuthRequest
     , _plcsmaName           :: !Text
     , _plcsmaCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsLocationsClustersSetMasterAuth' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -98,7 +101,7 @@
     -> Text -- ^ 'plcsmaName'
     -> ProjectsLocationsClustersSetMasterAuth
 projectsLocationsClustersSetMasterAuth pPlcsmaPayload_ pPlcsmaName_ =
-    ProjectsLocationsClustersSetMasterAuth'
+  ProjectsLocationsClustersSetMasterAuth'
     { _plcsmaXgafv = Nothing
     , _plcsmaUploadProtocol = Nothing
     , _plcsmaAccessToken = Nothing
@@ -108,6 +111,7 @@
     , _plcsmaCallback = Nothing
     }
 
+
 -- | V1 error format.
 plcsmaXgafv :: Lens' ProjectsLocationsClustersSetMasterAuth (Maybe Xgafv)
 plcsmaXgafv
@@ -150,7 +154,8 @@
       (\ s a -> s{_plcsmaCallback = a})
 
 instance GoogleRequest
-         ProjectsLocationsClustersSetMasterAuth where
+           ProjectsLocationsClustersSetMasterAuth
+         where
         type Rs ProjectsLocationsClustersSetMasterAuth =
              Operation
         type Scopes ProjectsLocationsClustersSetMasterAuth =
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetMonitoring.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetMonitoring.hs
--- a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetMonitoring.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetMonitoring.hs
@@ -62,7 +62,8 @@
 -- | Sets the monitoring service for a specific cluster.
 --
 -- /See:/ 'projectsLocationsClustersSetMonitoring' smart constructor.
-data ProjectsLocationsClustersSetMonitoring = ProjectsLocationsClustersSetMonitoring'
+data ProjectsLocationsClustersSetMonitoring =
+  ProjectsLocationsClustersSetMonitoring'
     { _plcsmXgafv          :: !(Maybe Xgafv)
     , _plcsmUploadProtocol :: !(Maybe Text)
     , _plcsmAccessToken    :: !(Maybe Text)
@@ -70,8 +71,10 @@
     , _plcsmPayload        :: !SetMonitoringServiceRequest
     , _plcsmName           :: !Text
     , _plcsmCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsLocationsClustersSetMonitoring' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -94,7 +97,7 @@
     -> Text -- ^ 'plcsmName'
     -> ProjectsLocationsClustersSetMonitoring
 projectsLocationsClustersSetMonitoring pPlcsmPayload_ pPlcsmName_ =
-    ProjectsLocationsClustersSetMonitoring'
+  ProjectsLocationsClustersSetMonitoring'
     { _plcsmXgafv = Nothing
     , _plcsmUploadProtocol = Nothing
     , _plcsmAccessToken = Nothing
@@ -104,6 +107,7 @@
     , _plcsmCallback = Nothing
     }
 
+
 -- | V1 error format.
 plcsmXgafv :: Lens' ProjectsLocationsClustersSetMonitoring (Maybe Xgafv)
 plcsmXgafv
@@ -145,7 +149,8 @@
       (\ s a -> s{_plcsmCallback = a})
 
 instance GoogleRequest
-         ProjectsLocationsClustersSetMonitoring where
+           ProjectsLocationsClustersSetMonitoring
+         where
         type Rs ProjectsLocationsClustersSetMonitoring =
              Operation
         type Scopes ProjectsLocationsClustersSetMonitoring =
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetNetworkPolicy.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetNetworkPolicy.hs
--- a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetNetworkPolicy.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetNetworkPolicy.hs
@@ -20,7 +20,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Enables\/Disables Network Policy for a cluster.
+-- Enables or disables Network Policy for a cluster.
 --
 -- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.locations.clusters.setNetworkPolicy@.
 module Network.Google.Resource.Container.Projects.Locations.Clusters.SetNetworkPolicy
@@ -60,10 +60,11 @@
                      ReqBody '[JSON] SetNetworkPolicyRequest :>
                        Post '[JSON] Operation
 
--- | Enables\/Disables Network Policy for a cluster.
+-- | Enables or disables Network Policy for a cluster.
 --
 -- /See:/ 'projectsLocationsClustersSetNetworkPolicy' smart constructor.
-data ProjectsLocationsClustersSetNetworkPolicy = ProjectsLocationsClustersSetNetworkPolicy'
+data ProjectsLocationsClustersSetNetworkPolicy =
+  ProjectsLocationsClustersSetNetworkPolicy'
     { _plcsnpXgafv          :: !(Maybe Xgafv)
     , _plcsnpUploadProtocol :: !(Maybe Text)
     , _plcsnpAccessToken    :: !(Maybe Text)
@@ -71,8 +72,10 @@
     , _plcsnpPayload        :: !SetNetworkPolicyRequest
     , _plcsnpName           :: !Text
     , _plcsnpCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsLocationsClustersSetNetworkPolicy' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -95,7 +98,7 @@
     -> Text -- ^ 'plcsnpName'
     -> ProjectsLocationsClustersSetNetworkPolicy
 projectsLocationsClustersSetNetworkPolicy pPlcsnpPayload_ pPlcsnpName_ =
-    ProjectsLocationsClustersSetNetworkPolicy'
+  ProjectsLocationsClustersSetNetworkPolicy'
     { _plcsnpXgafv = Nothing
     , _plcsnpUploadProtocol = Nothing
     , _plcsnpAccessToken = Nothing
@@ -105,6 +108,7 @@
     , _plcsnpCallback = Nothing
     }
 
+
 -- | V1 error format.
 plcsnpXgafv :: Lens' ProjectsLocationsClustersSetNetworkPolicy (Maybe Xgafv)
 plcsnpXgafv
@@ -148,7 +152,8 @@
       (\ s a -> s{_plcsnpCallback = a})
 
 instance GoogleRequest
-         ProjectsLocationsClustersSetNetworkPolicy where
+           ProjectsLocationsClustersSetNetworkPolicy
+         where
         type Rs ProjectsLocationsClustersSetNetworkPolicy =
              Operation
         type Scopes ProjectsLocationsClustersSetNetworkPolicy
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetResourceLabels.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetResourceLabels.hs
--- a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetResourceLabels.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetResourceLabels.hs
@@ -63,7 +63,8 @@
 -- | Sets labels on a cluster.
 --
 -- /See:/ 'projectsLocationsClustersSetResourceLabels' smart constructor.
-data ProjectsLocationsClustersSetResourceLabels = ProjectsLocationsClustersSetResourceLabels'
+data ProjectsLocationsClustersSetResourceLabels =
+  ProjectsLocationsClustersSetResourceLabels'
     { _plcsrlXgafv          :: !(Maybe Xgafv)
     , _plcsrlUploadProtocol :: !(Maybe Text)
     , _plcsrlAccessToken    :: !(Maybe Text)
@@ -71,8 +72,10 @@
     , _plcsrlPayload        :: !SetLabelsRequest
     , _plcsrlName           :: !Text
     , _plcsrlCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsLocationsClustersSetResourceLabels' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -95,7 +98,7 @@
     -> Text -- ^ 'plcsrlName'
     -> ProjectsLocationsClustersSetResourceLabels
 projectsLocationsClustersSetResourceLabels pPlcsrlPayload_ pPlcsrlName_ =
-    ProjectsLocationsClustersSetResourceLabels'
+  ProjectsLocationsClustersSetResourceLabels'
     { _plcsrlXgafv = Nothing
     , _plcsrlUploadProtocol = Nothing
     , _plcsrlAccessToken = Nothing
@@ -105,6 +108,7 @@
     , _plcsrlCallback = Nothing
     }
 
+
 -- | V1 error format.
 plcsrlXgafv :: Lens' ProjectsLocationsClustersSetResourceLabels (Maybe Xgafv)
 plcsrlXgafv
@@ -147,7 +151,8 @@
       (\ s a -> s{_plcsrlCallback = a})
 
 instance GoogleRequest
-         ProjectsLocationsClustersSetResourceLabels where
+           ProjectsLocationsClustersSetResourceLabels
+         where
         type Rs ProjectsLocationsClustersSetResourceLabels =
              Operation
         type Scopes
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/StartIPRotation.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/StartIPRotation.hs
--- a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/StartIPRotation.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/StartIPRotation.hs
@@ -20,7 +20,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Start master IP rotation.
+-- Starts master IP rotation.
 --
 -- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.locations.clusters.startIpRotation@.
 module Network.Google.Resource.Container.Projects.Locations.Clusters.StartIPRotation
@@ -60,10 +60,11 @@
                      ReqBody '[JSON] StartIPRotationRequest :>
                        Post '[JSON] Operation
 
--- | Start master IP rotation.
+-- | Starts master IP rotation.
 --
 -- /See:/ 'projectsLocationsClustersStartIPRotation' smart constructor.
-data ProjectsLocationsClustersStartIPRotation = ProjectsLocationsClustersStartIPRotation'
+data ProjectsLocationsClustersStartIPRotation =
+  ProjectsLocationsClustersStartIPRotation'
     { _plcsirXgafv          :: !(Maybe Xgafv)
     , _plcsirUploadProtocol :: !(Maybe Text)
     , _plcsirAccessToken    :: !(Maybe Text)
@@ -71,8 +72,10 @@
     , _plcsirPayload        :: !StartIPRotationRequest
     , _plcsirName           :: !Text
     , _plcsirCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsLocationsClustersStartIPRotation' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -95,7 +98,7 @@
     -> Text -- ^ 'plcsirName'
     -> ProjectsLocationsClustersStartIPRotation
 projectsLocationsClustersStartIPRotation pPlcsirPayload_ pPlcsirName_ =
-    ProjectsLocationsClustersStartIPRotation'
+  ProjectsLocationsClustersStartIPRotation'
     { _plcsirXgafv = Nothing
     , _plcsirUploadProtocol = Nothing
     , _plcsirAccessToken = Nothing
@@ -105,6 +108,7 @@
     , _plcsirCallback = Nothing
     }
 
+
 -- | V1 error format.
 plcsirXgafv :: Lens' ProjectsLocationsClustersStartIPRotation (Maybe Xgafv)
 plcsirXgafv
@@ -148,7 +152,8 @@
       (\ s a -> s{_plcsirCallback = a})
 
 instance GoogleRequest
-         ProjectsLocationsClustersStartIPRotation where
+           ProjectsLocationsClustersStartIPRotation
+         where
         type Rs ProjectsLocationsClustersStartIPRotation =
              Operation
         type Scopes ProjectsLocationsClustersStartIPRotation
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/Update.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/Update.hs
--- a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/Update.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/Update.hs
@@ -62,7 +62,8 @@
 -- | Updates the settings of a specific cluster.
 --
 -- /See:/ 'projectsLocationsClustersUpdate' smart constructor.
-data ProjectsLocationsClustersUpdate = ProjectsLocationsClustersUpdate'
+data ProjectsLocationsClustersUpdate =
+  ProjectsLocationsClustersUpdate'
     { _plcuXgafv          :: !(Maybe Xgafv)
     , _plcuUploadProtocol :: !(Maybe Text)
     , _plcuAccessToken    :: !(Maybe Text)
@@ -70,8 +71,10 @@
     , _plcuPayload        :: !UpdateClusterRequest
     , _plcuName           :: !Text
     , _plcuCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsLocationsClustersUpdate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -94,7 +97,7 @@
     -> Text -- ^ 'plcuName'
     -> ProjectsLocationsClustersUpdate
 projectsLocationsClustersUpdate pPlcuPayload_ pPlcuName_ =
-    ProjectsLocationsClustersUpdate'
+  ProjectsLocationsClustersUpdate'
     { _plcuXgafv = Nothing
     , _plcuUploadProtocol = Nothing
     , _plcuAccessToken = Nothing
@@ -104,6 +107,7 @@
     , _plcuCallback = Nothing
     }
 
+
 -- | V1 error format.
 plcuXgafv :: Lens' ProjectsLocationsClustersUpdate (Maybe Xgafv)
 plcuXgafv
@@ -143,7 +147,8 @@
   = lens _plcuCallback (\ s a -> s{_plcuCallback = a})
 
 instance GoogleRequest
-         ProjectsLocationsClustersUpdate where
+           ProjectsLocationsClustersUpdate
+         where
         type Rs ProjectsLocationsClustersUpdate = Operation
         type Scopes ProjectsLocationsClustersUpdate =
              '["https://www.googleapis.com/auth/cloud-platform"]
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/UpdateMaster.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/UpdateMaster.hs
--- a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/UpdateMaster.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/UpdateMaster.hs
@@ -62,7 +62,8 @@
 -- | Updates the master for a specific cluster.
 --
 -- /See:/ 'projectsLocationsClustersUpdateMaster' smart constructor.
-data ProjectsLocationsClustersUpdateMaster = ProjectsLocationsClustersUpdateMaster'
+data ProjectsLocationsClustersUpdateMaster =
+  ProjectsLocationsClustersUpdateMaster'
     { _plcumXgafv          :: !(Maybe Xgafv)
     , _plcumUploadProtocol :: !(Maybe Text)
     , _plcumAccessToken    :: !(Maybe Text)
@@ -70,8 +71,10 @@
     , _plcumPayload        :: !UpdateMasterRequest
     , _plcumName           :: !Text
     , _plcumCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsLocationsClustersUpdateMaster' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -94,7 +97,7 @@
     -> Text -- ^ 'plcumName'
     -> ProjectsLocationsClustersUpdateMaster
 projectsLocationsClustersUpdateMaster pPlcumPayload_ pPlcumName_ =
-    ProjectsLocationsClustersUpdateMaster'
+  ProjectsLocationsClustersUpdateMaster'
     { _plcumXgafv = Nothing
     , _plcumUploadProtocol = Nothing
     , _plcumAccessToken = Nothing
@@ -104,6 +107,7 @@
     , _plcumCallback = Nothing
     }
 
+
 -- | V1 error format.
 plcumXgafv :: Lens' ProjectsLocationsClustersUpdateMaster (Maybe Xgafv)
 plcumXgafv
@@ -145,7 +149,8 @@
       (\ s a -> s{_plcumCallback = a})
 
 instance GoogleRequest
-         ProjectsLocationsClustersUpdateMaster where
+           ProjectsLocationsClustersUpdateMaster
+         where
         type Rs ProjectsLocationsClustersUpdateMaster =
              Operation
         type Scopes ProjectsLocationsClustersUpdateMaster =
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/WellKnown/GetOpenidConfiguration.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/WellKnown/GetOpenidConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/WellKnown/GetOpenidConfiguration.hs
@@ -0,0 +1,176 @@
+{-# 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.Locations.Clusters.WellKnown.GetOpenidConfiguration
+-- 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)
+--
+-- Gets the OIDC discovery document for the cluster. See the [OpenID
+-- Connect Discovery 1.0
+-- specification](https:\/\/openid.net\/specs\/openid-connect-discovery-1_0.html)
+-- for details. This API is not yet intended for general use, and is not
+-- available for all clusters.
+--
+-- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.locations.clusters.well-known.getOpenid-configuration@.
+module Network.Google.Resource.Container.Projects.Locations.Clusters.WellKnown.GetOpenidConfiguration
+    (
+    -- * REST Resource
+      ProjectsLocationsClustersWellKnownGetOpenidConfigurationResource
+
+    -- * Creating a Request
+    , projectsLocationsClustersWellKnownGetOpenidConfiguration
+    , ProjectsLocationsClustersWellKnownGetOpenidConfiguration
+
+    -- * Request Lenses
+    , plcwkgocParent
+    , plcwkgocXgafv
+    , plcwkgocUploadProtocol
+    , plcwkgocAccessToken
+    , plcwkgocUploadType
+    , plcwkgocCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.locations.clusters.well-known.getOpenid-configuration@ method which the
+-- 'ProjectsLocationsClustersWellKnownGetOpenidConfiguration' request conforms to.
+type ProjectsLocationsClustersWellKnownGetOpenidConfigurationResource
+     =
+     "v1" :>
+       Capture "parent" Text :>
+         ".well-known" :>
+           "openid-configuration" :>
+             QueryParam "$.xgafv" Xgafv :>
+               QueryParam "upload_protocol" Text :>
+                 QueryParam "access_token" Text :>
+                   QueryParam "uploadType" Text :>
+                     QueryParam "callback" Text :>
+                       QueryParam "alt" AltJSON :>
+                         Get '[JSON] GetOpenIdConfigResponse
+
+-- | Gets the OIDC discovery document for the cluster. See the [OpenID
+-- Connect Discovery 1.0
+-- specification](https:\/\/openid.net\/specs\/openid-connect-discovery-1_0.html)
+-- for details. This API is not yet intended for general use, and is not
+-- available for all clusters.
+--
+-- /See:/ 'projectsLocationsClustersWellKnownGetOpenidConfiguration' smart constructor.
+data ProjectsLocationsClustersWellKnownGetOpenidConfiguration =
+  ProjectsLocationsClustersWellKnownGetOpenidConfiguration'
+    { _plcwkgocParent         :: !Text
+    , _plcwkgocXgafv          :: !(Maybe Xgafv)
+    , _plcwkgocUploadProtocol :: !(Maybe Text)
+    , _plcwkgocAccessToken    :: !(Maybe Text)
+    , _plcwkgocUploadType     :: !(Maybe Text)
+    , _plcwkgocCallback       :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ProjectsLocationsClustersWellKnownGetOpenidConfiguration' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plcwkgocParent'
+--
+-- * 'plcwkgocXgafv'
+--
+-- * 'plcwkgocUploadProtocol'
+--
+-- * 'plcwkgocAccessToken'
+--
+-- * 'plcwkgocUploadType'
+--
+-- * 'plcwkgocCallback'
+projectsLocationsClustersWellKnownGetOpenidConfiguration
+    :: Text -- ^ 'plcwkgocParent'
+    -> ProjectsLocationsClustersWellKnownGetOpenidConfiguration
+projectsLocationsClustersWellKnownGetOpenidConfiguration pPlcwkgocParent_ =
+  ProjectsLocationsClustersWellKnownGetOpenidConfiguration'
+    { _plcwkgocParent = pPlcwkgocParent_
+    , _plcwkgocXgafv = Nothing
+    , _plcwkgocUploadProtocol = Nothing
+    , _plcwkgocAccessToken = Nothing
+    , _plcwkgocUploadType = Nothing
+    , _plcwkgocCallback = Nothing
+    }
+
+
+-- | The cluster (project, location, cluster id) to get the discovery
+-- document for. Specified in the format
+-- \'projects\/*\/locations\/*\/clusters\/*\'.
+plcwkgocParent :: Lens' ProjectsLocationsClustersWellKnownGetOpenidConfiguration Text
+plcwkgocParent
+  = lens _plcwkgocParent
+      (\ s a -> s{_plcwkgocParent = a})
+
+-- | V1 error format.
+plcwkgocXgafv :: Lens' ProjectsLocationsClustersWellKnownGetOpenidConfiguration (Maybe Xgafv)
+plcwkgocXgafv
+  = lens _plcwkgocXgafv
+      (\ s a -> s{_plcwkgocXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plcwkgocUploadProtocol :: Lens' ProjectsLocationsClustersWellKnownGetOpenidConfiguration (Maybe Text)
+plcwkgocUploadProtocol
+  = lens _plcwkgocUploadProtocol
+      (\ s a -> s{_plcwkgocUploadProtocol = a})
+
+-- | OAuth access token.
+plcwkgocAccessToken :: Lens' ProjectsLocationsClustersWellKnownGetOpenidConfiguration (Maybe Text)
+plcwkgocAccessToken
+  = lens _plcwkgocAccessToken
+      (\ s a -> s{_plcwkgocAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plcwkgocUploadType :: Lens' ProjectsLocationsClustersWellKnownGetOpenidConfiguration (Maybe Text)
+plcwkgocUploadType
+  = lens _plcwkgocUploadType
+      (\ s a -> s{_plcwkgocUploadType = a})
+
+-- | JSONP
+plcwkgocCallback :: Lens' ProjectsLocationsClustersWellKnownGetOpenidConfiguration (Maybe Text)
+plcwkgocCallback
+  = lens _plcwkgocCallback
+      (\ s a -> s{_plcwkgocCallback = a})
+
+instance GoogleRequest
+           ProjectsLocationsClustersWellKnownGetOpenidConfiguration
+         where
+        type Rs
+               ProjectsLocationsClustersWellKnownGetOpenidConfiguration
+             = GetOpenIdConfigResponse
+        type Scopes
+               ProjectsLocationsClustersWellKnownGetOpenidConfiguration
+             = '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsLocationsClustersWellKnownGetOpenidConfiguration'{..}
+          = go _plcwkgocParent _plcwkgocXgafv
+              _plcwkgocUploadProtocol
+              _plcwkgocAccessToken
+              _plcwkgocUploadType
+              _plcwkgocCallback
+              (Just AltJSON)
+              containerService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy
+                           ProjectsLocationsClustersWellKnownGetOpenidConfigurationResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/GetServerConfig.hs b/gen/Network/Google/Resource/Container/Projects/Locations/GetServerConfig.hs
--- a/gen/Network/Google/Resource/Container/Projects/Locations/GetServerConfig.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/GetServerConfig.hs
@@ -20,7 +20,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Returns configuration info about the Kubernetes Engine service.
+-- Returns configuration info about the Google Kubernetes Engine service.
 --
 -- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.locations.getServerConfig@.
 module Network.Google.Resource.Container.Projects.Locations.GetServerConfig
@@ -61,10 +61,11 @@
                        QueryParam "callback" Text :>
                          QueryParam "alt" AltJSON :> Get '[JSON] ServerConfig
 
--- | Returns configuration info about the Kubernetes Engine service.
+-- | Returns configuration info about the Google Kubernetes Engine service.
 --
 -- /See:/ 'projectsLocationsGetServerConfig' smart constructor.
-data ProjectsLocationsGetServerConfig = ProjectsLocationsGetServerConfig'
+data ProjectsLocationsGetServerConfig =
+  ProjectsLocationsGetServerConfig'
     { _plgscXgafv          :: !(Maybe Xgafv)
     , _plgscUploadProtocol :: !(Maybe Text)
     , _plgscAccessToken    :: !(Maybe Text)
@@ -73,8 +74,10 @@
     , _plgscName           :: !Text
     , _plgscProjectId      :: !(Maybe Text)
     , _plgscCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsLocationsGetServerConfig' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -98,7 +101,7 @@
     :: Text -- ^ 'plgscName'
     -> ProjectsLocationsGetServerConfig
 projectsLocationsGetServerConfig pPlgscName_ =
-    ProjectsLocationsGetServerConfig'
+  ProjectsLocationsGetServerConfig'
     { _plgscXgafv = Nothing
     , _plgscUploadProtocol = Nothing
     , _plgscAccessToken = Nothing
@@ -109,6 +112,7 @@
     , _plgscCallback = Nothing
     }
 
+
 -- | V1 error format.
 plgscXgafv :: Lens' ProjectsLocationsGetServerConfig (Maybe Xgafv)
 plgscXgafv
@@ -139,8 +143,8 @@
 plgscZone
   = lens _plgscZone (\ s a -> s{_plgscZone = a})
 
--- | The name (project and location) of the server config to get Specified in
--- the format \'projects\/*\/locations\/*\'.
+-- | The name (project and location) of the server config to get, specified
+-- in the format \'projects\/*\/locations\/*\'.
 plgscName :: Lens' ProjectsLocationsGetServerConfig Text
 plgscName
   = lens _plgscName (\ s a -> s{_plgscName = a})
@@ -160,7 +164,8 @@
       (\ s a -> s{_plgscCallback = a})
 
 instance GoogleRequest
-         ProjectsLocationsGetServerConfig where
+           ProjectsLocationsGetServerConfig
+         where
         type Rs ProjectsLocationsGetServerConfig =
              ServerConfig
         type Scopes ProjectsLocationsGetServerConfig =
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Operations/Cancel.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Operations/Cancel.hs
--- a/gen/Network/Google/Resource/Container/Projects/Locations/Operations/Cancel.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Operations/Cancel.hs
@@ -62,7 +62,8 @@
 -- | Cancels the specified operation.
 --
 -- /See:/ 'projectsLocationsOperationsCancel' smart constructor.
-data ProjectsLocationsOperationsCancel = ProjectsLocationsOperationsCancel'
+data ProjectsLocationsOperationsCancel =
+  ProjectsLocationsOperationsCancel'
     { _plocXgafv          :: !(Maybe Xgafv)
     , _plocUploadProtocol :: !(Maybe Text)
     , _plocAccessToken    :: !(Maybe Text)
@@ -70,8 +71,10 @@
     , _plocPayload        :: !CancelOperationRequest
     , _plocName           :: !Text
     , _plocCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsLocationsOperationsCancel' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -94,7 +97,7 @@
     -> Text -- ^ 'plocName'
     -> ProjectsLocationsOperationsCancel
 projectsLocationsOperationsCancel pPlocPayload_ pPlocName_ =
-    ProjectsLocationsOperationsCancel'
+  ProjectsLocationsOperationsCancel'
     { _plocXgafv = Nothing
     , _plocUploadProtocol = Nothing
     , _plocAccessToken = Nothing
@@ -104,6 +107,7 @@
     , _plocCallback = Nothing
     }
 
+
 -- | V1 error format.
 plocXgafv :: Lens' ProjectsLocationsOperationsCancel (Maybe Xgafv)
 plocXgafv
@@ -143,7 +147,8 @@
   = lens _plocCallback (\ s a -> s{_plocCallback = a})
 
 instance GoogleRequest
-         ProjectsLocationsOperationsCancel where
+           ProjectsLocationsOperationsCancel
+         where
         type Rs ProjectsLocationsOperationsCancel = Empty
         type Scopes ProjectsLocationsOperationsCancel =
              '["https://www.googleapis.com/auth/cloud-platform"]
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Operations/Get.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Operations/Get.hs
--- a/gen/Network/Google/Resource/Container/Projects/Locations/Operations/Get.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Operations/Get.hs
@@ -65,7 +65,8 @@
 -- | Gets the specified operation.
 --
 -- /See:/ 'projectsLocationsOperationsGet' smart constructor.
-data ProjectsLocationsOperationsGet = ProjectsLocationsOperationsGet'
+data ProjectsLocationsOperationsGet =
+  ProjectsLocationsOperationsGet'
     { _plogXgafv          :: !(Maybe Xgafv)
     , _plogUploadProtocol :: !(Maybe Text)
     , _plogAccessToken    :: !(Maybe Text)
@@ -75,8 +76,10 @@
     , _plogProjectId      :: !(Maybe Text)
     , _plogOperationId    :: !(Maybe Text)
     , _plogCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsLocationsOperationsGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -102,7 +105,7 @@
     :: Text -- ^ 'plogName'
     -> ProjectsLocationsOperationsGet
 projectsLocationsOperationsGet pPlogName_ =
-    ProjectsLocationsOperationsGet'
+  ProjectsLocationsOperationsGet'
     { _plogXgafv = Nothing
     , _plogUploadProtocol = Nothing
     , _plogAccessToken = Nothing
@@ -113,6 +116,7 @@
     , _plogOperationId = Nothing
     , _plogCallback = Nothing
     }
+
 
 -- | V1 error format.
 plogXgafv :: Lens' ProjectsLocationsOperationsGet (Maybe Xgafv)
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Operations/List.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Operations/List.hs
--- a/gen/Network/Google/Resource/Container/Projects/Locations/Operations/List.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Operations/List.hs
@@ -65,7 +65,8 @@
 -- | Lists all operations in a project in a specific zone or all zones.
 --
 -- /See:/ 'projectsLocationsOperationsList' smart constructor.
-data ProjectsLocationsOperationsList = ProjectsLocationsOperationsList'
+data ProjectsLocationsOperationsList =
+  ProjectsLocationsOperationsList'
     { _plolParent         :: !Text
     , _plolXgafv          :: !(Maybe Xgafv)
     , _plolUploadProtocol :: !(Maybe Text)
@@ -74,8 +75,10 @@
     , _plolZone           :: !(Maybe Text)
     , _plolProjectId      :: !(Maybe Text)
     , _plolCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsLocationsOperationsList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -99,7 +102,7 @@
     :: Text -- ^ 'plolParent'
     -> ProjectsLocationsOperationsList
 projectsLocationsOperationsList pPlolParent_ =
-    ProjectsLocationsOperationsList'
+  ProjectsLocationsOperationsList'
     { _plolParent = pPlolParent_
     , _plolXgafv = Nothing
     , _plolUploadProtocol = Nothing
@@ -110,6 +113,7 @@
     , _plolCallback = Nothing
     }
 
+
 -- | The parent (project and location) where the operations will be listed.
 -- Specified in the format \'projects\/*\/locations\/*\'. Location \"-\"
 -- matches all zones and all regions.
@@ -161,7 +165,8 @@
   = lens _plolCallback (\ s a -> s{_plolCallback = a})
 
 instance GoogleRequest
-         ProjectsLocationsOperationsList where
+           ProjectsLocationsOperationsList
+         where
         type Rs ProjectsLocationsOperationsList =
              ListOperationsResponse
         type Scopes ProjectsLocationsOperationsList =
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Addons.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Addons.hs
--- a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Addons.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Addons.hs
@@ -70,7 +70,8 @@
 -- | Sets the addons for a specific cluster.
 --
 -- /See:/ 'projectsZonesClustersAddons' smart constructor.
-data ProjectsZonesClustersAddons = ProjectsZonesClustersAddons'
+data ProjectsZonesClustersAddons =
+  ProjectsZonesClustersAddons'
     { _pzcaXgafv          :: !(Maybe Xgafv)
     , _pzcaUploadProtocol :: !(Maybe Text)
     , _pzcaAccessToken    :: !(Maybe Text)
@@ -80,8 +81,10 @@
     , _pzcaClusterId      :: !Text
     , _pzcaProjectId      :: !Text
     , _pzcaCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsZonesClustersAddons' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -110,7 +113,7 @@
     -> Text -- ^ 'pzcaProjectId'
     -> ProjectsZonesClustersAddons
 projectsZonesClustersAddons pPzcaZone_ pPzcaPayload_ pPzcaClusterId_ pPzcaProjectId_ =
-    ProjectsZonesClustersAddons'
+  ProjectsZonesClustersAddons'
     { _pzcaXgafv = Nothing
     , _pzcaUploadProtocol = Nothing
     , _pzcaAccessToken = Nothing
@@ -121,6 +124,7 @@
     , _pzcaProjectId = pPzcaProjectId_
     , _pzcaCallback = Nothing
     }
+
 
 -- | V1 error format.
 pzcaXgafv :: Lens' ProjectsZonesClustersAddons (Maybe Xgafv)
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/CompleteIPRotation.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/CompleteIPRotation.hs
--- a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/CompleteIPRotation.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/CompleteIPRotation.hs
@@ -70,7 +70,8 @@
 -- | Completes master IP rotation.
 --
 -- /See:/ 'projectsZonesClustersCompleteIPRotation' smart constructor.
-data ProjectsZonesClustersCompleteIPRotation = ProjectsZonesClustersCompleteIPRotation'
+data ProjectsZonesClustersCompleteIPRotation =
+  ProjectsZonesClustersCompleteIPRotation'
     { _pzccirXgafv          :: !(Maybe Xgafv)
     , _pzccirUploadProtocol :: !(Maybe Text)
     , _pzccirAccessToken    :: !(Maybe Text)
@@ -80,8 +81,10 @@
     , _pzccirClusterId      :: !Text
     , _pzccirProjectId      :: !Text
     , _pzccirCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsZonesClustersCompleteIPRotation' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -110,7 +113,7 @@
     -> Text -- ^ 'pzccirProjectId'
     -> ProjectsZonesClustersCompleteIPRotation
 projectsZonesClustersCompleteIPRotation pPzccirZone_ pPzccirPayload_ pPzccirClusterId_ pPzccirProjectId_ =
-    ProjectsZonesClustersCompleteIPRotation'
+  ProjectsZonesClustersCompleteIPRotation'
     { _pzccirXgafv = Nothing
     , _pzccirUploadProtocol = Nothing
     , _pzccirAccessToken = Nothing
@@ -122,6 +125,7 @@
     , _pzccirCallback = Nothing
     }
 
+
 -- | V1 error format.
 pzccirXgafv :: Lens' ProjectsZonesClustersCompleteIPRotation (Maybe Xgafv)
 pzccirXgafv
@@ -180,7 +184,8 @@
       (\ s a -> s{_pzccirCallback = a})
 
 instance GoogleRequest
-         ProjectsZonesClustersCompleteIPRotation where
+           ProjectsZonesClustersCompleteIPRotation
+         where
         type Rs ProjectsZonesClustersCompleteIPRotation =
              Operation
         type Scopes ProjectsZonesClustersCompleteIPRotation =
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Create.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Create.hs
--- a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Create.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Create.hs
@@ -24,11 +24,11 @@
 -- Compute Engine instances. By default, the cluster is created in the
 -- project\'s [default
 -- network](\/compute\/docs\/networks-and-firewalls#networks). One firewall
--- is added for the cluster. After cluster creation, the cluster creates
+-- is added for the cluster. After cluster creation, the Kubelet creates
 -- routes for each node to allow the containers on that node to communicate
 -- with all other instances in the cluster. Finally, an entry is added to
--- the project\'s global metadata indicating which CIDR range is being used
--- by the cluster.
+-- the project\'s global metadata indicating which CIDR range the cluster
+-- is using.
 --
 -- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.zones.clusters.create@.
 module Network.Google.Resource.Container.Projects.Zones.Clusters.Create
@@ -76,14 +76,15 @@
 -- Compute Engine instances. By default, the cluster is created in the
 -- project\'s [default
 -- network](\/compute\/docs\/networks-and-firewalls#networks). One firewall
--- is added for the cluster. After cluster creation, the cluster creates
+-- is added for the cluster. After cluster creation, the Kubelet creates
 -- routes for each node to allow the containers on that node to communicate
 -- with all other instances in the cluster. Finally, an entry is added to
--- the project\'s global metadata indicating which CIDR range is being used
--- by the cluster.
+-- the project\'s global metadata indicating which CIDR range the cluster
+-- is using.
 --
 -- /See:/ 'projectsZonesClustersCreate' smart constructor.
-data ProjectsZonesClustersCreate = ProjectsZonesClustersCreate'
+data ProjectsZonesClustersCreate =
+  ProjectsZonesClustersCreate'
     { _pzccXgafv          :: !(Maybe Xgafv)
     , _pzccUploadProtocol :: !(Maybe Text)
     , _pzccAccessToken    :: !(Maybe Text)
@@ -92,8 +93,10 @@
     , _pzccPayload        :: !CreateClusterRequest
     , _pzccProjectId      :: !Text
     , _pzccCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsZonesClustersCreate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -119,7 +122,7 @@
     -> Text -- ^ 'pzccProjectId'
     -> ProjectsZonesClustersCreate
 projectsZonesClustersCreate pPzccZone_ pPzccPayload_ pPzccProjectId_ =
-    ProjectsZonesClustersCreate'
+  ProjectsZonesClustersCreate'
     { _pzccXgafv = Nothing
     , _pzccUploadProtocol = Nothing
     , _pzccAccessToken = Nothing
@@ -129,6 +132,7 @@
     , _pzccProjectId = pPzccProjectId_
     , _pzccCallback = Nothing
     }
+
 
 -- | V1 error format.
 pzccXgafv :: Lens' ProjectsZonesClustersCreate (Maybe Xgafv)
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Delete.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Delete.hs
--- a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Delete.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Delete.hs
@@ -23,8 +23,8 @@
 -- Deletes the cluster, including the Kubernetes endpoint and all worker
 -- nodes. Firewalls and routes that were configured during cluster creation
 -- are also deleted. Other Google Compute Engine resources that might be in
--- use by the cluster (e.g. load balancer resources) will not be deleted if
--- they weren\'t present at the initial create time.
+-- use by the cluster, such as load balancer resources, are not deleted if
+-- they weren\'t present when the cluster was initially created.
 --
 -- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.zones.clusters.delete@.
 module Network.Google.Resource.Container.Projects.Zones.Clusters.Delete
@@ -73,11 +73,12 @@
 -- | Deletes the cluster, including the Kubernetes endpoint and all worker
 -- nodes. Firewalls and routes that were configured during cluster creation
 -- are also deleted. Other Google Compute Engine resources that might be in
--- use by the cluster (e.g. load balancer resources) will not be deleted if
--- they weren\'t present at the initial create time.
+-- use by the cluster, such as load balancer resources, are not deleted if
+-- they weren\'t present when the cluster was initially created.
 --
 -- /See:/ 'projectsZonesClustersDelete' smart constructor.
-data ProjectsZonesClustersDelete = ProjectsZonesClustersDelete'
+data ProjectsZonesClustersDelete =
+  ProjectsZonesClustersDelete'
     { _pzcdXgafv          :: !(Maybe Xgafv)
     , _pzcdUploadProtocol :: !(Maybe Text)
     , _pzcdAccessToken    :: !(Maybe Text)
@@ -87,8 +88,10 @@
     , _pzcdClusterId      :: !Text
     , _pzcdProjectId      :: !Text
     , _pzcdCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsZonesClustersDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -116,7 +119,7 @@
     -> Text -- ^ 'pzcdProjectId'
     -> ProjectsZonesClustersDelete
 projectsZonesClustersDelete pPzcdZone_ pPzcdClusterId_ pPzcdProjectId_ =
-    ProjectsZonesClustersDelete'
+  ProjectsZonesClustersDelete'
     { _pzcdXgafv = Nothing
     , _pzcdUploadProtocol = Nothing
     , _pzcdAccessToken = Nothing
@@ -127,6 +130,7 @@
     , _pzcdProjectId = pPzcdProjectId_
     , _pzcdCallback = Nothing
     }
+
 
 -- | V1 error format.
 pzcdXgafv :: Lens' ProjectsZonesClustersDelete (Maybe Xgafv)
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Get.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Get.hs
--- a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Get.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Get.hs
@@ -68,7 +68,8 @@
 -- | Gets the details of a specific cluster.
 --
 -- /See:/ 'projectsZonesClustersGet' smart constructor.
-data ProjectsZonesClustersGet = ProjectsZonesClustersGet'
+data ProjectsZonesClustersGet =
+  ProjectsZonesClustersGet'
     { _pzcgXgafv          :: !(Maybe Xgafv)
     , _pzcgUploadProtocol :: !(Maybe Text)
     , _pzcgAccessToken    :: !(Maybe Text)
@@ -78,8 +79,10 @@
     , _pzcgClusterId      :: !Text
     , _pzcgProjectId      :: !Text
     , _pzcgCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsZonesClustersGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -107,7 +110,7 @@
     -> Text -- ^ 'pzcgProjectId'
     -> ProjectsZonesClustersGet
 projectsZonesClustersGet pPzcgZone_ pPzcgClusterId_ pPzcgProjectId_ =
-    ProjectsZonesClustersGet'
+  ProjectsZonesClustersGet'
     { _pzcgXgafv = Nothing
     , _pzcgUploadProtocol = Nothing
     , _pzcgAccessToken = Nothing
@@ -118,6 +121,7 @@
     , _pzcgProjectId = pPzcgProjectId_
     , _pzcgCallback = Nothing
     }
+
 
 -- | V1 error format.
 pzcgXgafv :: Lens' ProjectsZonesClustersGet (Maybe Xgafv)
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/LegacyAbac.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/LegacyAbac.hs
--- a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/LegacyAbac.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/LegacyAbac.hs
@@ -70,7 +70,8 @@
 -- | Enables or disables the ABAC authorization mechanism on a cluster.
 --
 -- /See:/ 'projectsZonesClustersLegacyAbac' smart constructor.
-data ProjectsZonesClustersLegacyAbac = ProjectsZonesClustersLegacyAbac'
+data ProjectsZonesClustersLegacyAbac =
+  ProjectsZonesClustersLegacyAbac'
     { _pzclaXgafv          :: !(Maybe Xgafv)
     , _pzclaUploadProtocol :: !(Maybe Text)
     , _pzclaAccessToken    :: !(Maybe Text)
@@ -80,8 +81,10 @@
     , _pzclaClusterId      :: !Text
     , _pzclaProjectId      :: !Text
     , _pzclaCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsZonesClustersLegacyAbac' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -110,7 +113,7 @@
     -> Text -- ^ 'pzclaProjectId'
     -> ProjectsZonesClustersLegacyAbac
 projectsZonesClustersLegacyAbac pPzclaZone_ pPzclaPayload_ pPzclaClusterId_ pPzclaProjectId_ =
-    ProjectsZonesClustersLegacyAbac'
+  ProjectsZonesClustersLegacyAbac'
     { _pzclaXgafv = Nothing
     , _pzclaUploadProtocol = Nothing
     , _pzclaAccessToken = Nothing
@@ -122,6 +125,7 @@
     , _pzclaCallback = Nothing
     }
 
+
 -- | V1 error format.
 pzclaXgafv :: Lens' ProjectsZonesClustersLegacyAbac (Maybe Xgafv)
 pzclaXgafv
@@ -179,7 +183,8 @@
       (\ s a -> s{_pzclaCallback = a})
 
 instance GoogleRequest
-         ProjectsZonesClustersLegacyAbac where
+           ProjectsZonesClustersLegacyAbac
+         where
         type Rs ProjectsZonesClustersLegacyAbac = Operation
         type Scopes ProjectsZonesClustersLegacyAbac =
              '["https://www.googleapis.com/auth/cloud-platform"]
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/List.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/List.hs
--- a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/List.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/List.hs
@@ -69,7 +69,8 @@
 -- all zones.
 --
 -- /See:/ 'projectsZonesClustersList' smart constructor.
-data ProjectsZonesClustersList = ProjectsZonesClustersList'
+data ProjectsZonesClustersList =
+  ProjectsZonesClustersList'
     { _proParent         :: !(Maybe Text)
     , _proXgafv          :: !(Maybe Xgafv)
     , _proUploadProtocol :: !(Maybe Text)
@@ -78,8 +79,10 @@
     , _proZone           :: !Text
     , _proProjectId      :: !Text
     , _proCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsZonesClustersList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -104,7 +107,7 @@
     -> Text -- ^ 'proProjectId'
     -> ProjectsZonesClustersList
 projectsZonesClustersList pProZone_ pProProjectId_ =
-    ProjectsZonesClustersList'
+  ProjectsZonesClustersList'
     { _proParent = Nothing
     , _proXgafv = Nothing
     , _proUploadProtocol = Nothing
@@ -114,6 +117,7 @@
     , _proProjectId = pProProjectId_
     , _proCallback = Nothing
     }
+
 
 -- | The parent (project and location) where the clusters will be listed.
 -- Specified in the format \'projects\/*\/locations\/*\'. Location \"-\"
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Locations.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Locations.hs
--- a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Locations.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Locations.hs
@@ -70,7 +70,8 @@
 -- | Sets the locations for a specific cluster.
 --
 -- /See:/ 'projectsZonesClustersLocations' smart constructor.
-data ProjectsZonesClustersLocations = ProjectsZonesClustersLocations'
+data ProjectsZonesClustersLocations =
+  ProjectsZonesClustersLocations'
     { _pXgafv          :: !(Maybe Xgafv)
     , _pUploadProtocol :: !(Maybe Text)
     , _pAccessToken    :: !(Maybe Text)
@@ -80,8 +81,10 @@
     , _pClusterId      :: !Text
     , _pProjectId      :: !Text
     , _pCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsZonesClustersLocations' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -110,7 +113,7 @@
     -> Text -- ^ 'pProjectId'
     -> ProjectsZonesClustersLocations
 projectsZonesClustersLocations pPZone_ pPPayload_ pPClusterId_ pPProjectId_ =
-    ProjectsZonesClustersLocations'
+  ProjectsZonesClustersLocations'
     { _pXgafv = Nothing
     , _pUploadProtocol = Nothing
     , _pAccessToken = Nothing
@@ -121,6 +124,7 @@
     , _pProjectId = pPProjectId_
     , _pCallback = Nothing
     }
+
 
 -- | V1 error format.
 pXgafv :: Lens' ProjectsZonesClustersLocations (Maybe Xgafv)
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Logging.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Logging.hs
--- a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Logging.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Logging.hs
@@ -70,7 +70,8 @@
 -- | Sets the logging service for a specific cluster.
 --
 -- /See:/ 'projectsZonesClustersLogging' smart constructor.
-data ProjectsZonesClustersLogging = ProjectsZonesClustersLogging'
+data ProjectsZonesClustersLogging =
+  ProjectsZonesClustersLogging'
     { _pzclXgafv          :: !(Maybe Xgafv)
     , _pzclUploadProtocol :: !(Maybe Text)
     , _pzclAccessToken    :: !(Maybe Text)
@@ -80,8 +81,10 @@
     , _pzclClusterId      :: !Text
     , _pzclProjectId      :: !Text
     , _pzclCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsZonesClustersLogging' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -110,7 +113,7 @@
     -> Text -- ^ 'pzclProjectId'
     -> ProjectsZonesClustersLogging
 projectsZonesClustersLogging pPzclZone_ pPzclPayload_ pPzclClusterId_ pPzclProjectId_ =
-    ProjectsZonesClustersLogging'
+  ProjectsZonesClustersLogging'
     { _pzclXgafv = Nothing
     , _pzclUploadProtocol = Nothing
     , _pzclAccessToken = Nothing
@@ -121,6 +124,7 @@
     , _pzclProjectId = pPzclProjectId_
     , _pzclCallback = Nothing
     }
+
 
 -- | V1 error format.
 pzclXgafv :: Lens' ProjectsZonesClustersLogging (Maybe Xgafv)
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Master.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Master.hs
--- a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Master.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Master.hs
@@ -70,7 +70,8 @@
 -- | Updates the master for a specific cluster.
 --
 -- /See:/ 'projectsZonesClustersMaster' smart constructor.
-data ProjectsZonesClustersMaster = ProjectsZonesClustersMaster'
+data ProjectsZonesClustersMaster =
+  ProjectsZonesClustersMaster'
     { _pzcmXgafv          :: !(Maybe Xgafv)
     , _pzcmUploadProtocol :: !(Maybe Text)
     , _pzcmAccessToken    :: !(Maybe Text)
@@ -80,8 +81,10 @@
     , _pzcmClusterId      :: !Text
     , _pzcmProjectId      :: !Text
     , _pzcmCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsZonesClustersMaster' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -110,7 +113,7 @@
     -> Text -- ^ 'pzcmProjectId'
     -> ProjectsZonesClustersMaster
 projectsZonesClustersMaster pPzcmZone_ pPzcmPayload_ pPzcmClusterId_ pPzcmProjectId_ =
-    ProjectsZonesClustersMaster'
+  ProjectsZonesClustersMaster'
     { _pzcmXgafv = Nothing
     , _pzcmUploadProtocol = Nothing
     , _pzcmAccessToken = Nothing
@@ -121,6 +124,7 @@
     , _pzcmProjectId = pPzcmProjectId_
     , _pzcmCallback = Nothing
     }
+
 
 -- | V1 error format.
 pzcmXgafv :: Lens' ProjectsZonesClustersMaster (Maybe Xgafv)
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Monitoring.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Monitoring.hs
--- a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Monitoring.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Monitoring.hs
@@ -70,7 +70,8 @@
 -- | Sets the monitoring service for a specific cluster.
 --
 -- /See:/ 'projectsZonesClustersMonitoring' smart constructor.
-data ProjectsZonesClustersMonitoring = ProjectsZonesClustersMonitoring'
+data ProjectsZonesClustersMonitoring =
+  ProjectsZonesClustersMonitoring'
     { _pzcmzXgafv          :: !(Maybe Xgafv)
     , _pzcmzUploadProtocol :: !(Maybe Text)
     , _pzcmzAccessToken    :: !(Maybe Text)
@@ -80,8 +81,10 @@
     , _pzcmzClusterId      :: !Text
     , _pzcmzProjectId      :: !Text
     , _pzcmzCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsZonesClustersMonitoring' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -110,7 +113,7 @@
     -> Text -- ^ 'pzcmzProjectId'
     -> ProjectsZonesClustersMonitoring
 projectsZonesClustersMonitoring pPzcmzZone_ pPzcmzPayload_ pPzcmzClusterId_ pPzcmzProjectId_ =
-    ProjectsZonesClustersMonitoring'
+  ProjectsZonesClustersMonitoring'
     { _pzcmzXgafv = Nothing
     , _pzcmzUploadProtocol = Nothing
     , _pzcmzAccessToken = Nothing
@@ -122,6 +125,7 @@
     , _pzcmzCallback = Nothing
     }
 
+
 -- | V1 error format.
 pzcmzXgafv :: Lens' ProjectsZonesClustersMonitoring (Maybe Xgafv)
 pzcmzXgafv
@@ -179,7 +183,8 @@
       (\ s a -> s{_pzcmzCallback = a})
 
 instance GoogleRequest
-         ProjectsZonesClustersMonitoring where
+           ProjectsZonesClustersMonitoring
+         where
         type Rs ProjectsZonesClustersMonitoring = Operation
         type Scopes ProjectsZonesClustersMonitoring =
              '["https://www.googleapis.com/auth/cloud-platform"]
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/Autoscaling.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/Autoscaling.hs
--- a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/Autoscaling.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/Autoscaling.hs
@@ -20,7 +20,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Sets the autoscaling settings for a specific node pool.
+-- Sets the autoscaling settings for the specified node pool.
 --
 -- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.zones.clusters.nodePools.autoscaling@.
 module Network.Google.Resource.Container.Projects.Zones.Clusters.NodePools.Autoscaling
@@ -72,10 +72,11 @@
                                        SetNodePoolAutoscalingRequest
                                        :> Post '[JSON] Operation
 
--- | Sets the autoscaling settings for a specific node pool.
+-- | Sets the autoscaling settings for the specified node pool.
 --
 -- /See:/ 'projectsZonesClustersNodePoolsAutoscaling' smart constructor.
-data ProjectsZonesClustersNodePoolsAutoscaling = ProjectsZonesClustersNodePoolsAutoscaling'
+data ProjectsZonesClustersNodePoolsAutoscaling =
+  ProjectsZonesClustersNodePoolsAutoscaling'
     { _pzcnpaXgafv          :: !(Maybe Xgafv)
     , _pzcnpaUploadProtocol :: !(Maybe Text)
     , _pzcnpaAccessToken    :: !(Maybe Text)
@@ -86,8 +87,10 @@
     , _pzcnpaClusterId      :: !Text
     , _pzcnpaProjectId      :: !Text
     , _pzcnpaCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsZonesClustersNodePoolsAutoscaling' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -119,7 +122,7 @@
     -> Text -- ^ 'pzcnpaProjectId'
     -> ProjectsZonesClustersNodePoolsAutoscaling
 projectsZonesClustersNodePoolsAutoscaling pPzcnpaZone_ pPzcnpaPayload_ pPzcnpaNodePoolId_ pPzcnpaClusterId_ pPzcnpaProjectId_ =
-    ProjectsZonesClustersNodePoolsAutoscaling'
+  ProjectsZonesClustersNodePoolsAutoscaling'
     { _pzcnpaXgafv = Nothing
     , _pzcnpaUploadProtocol = Nothing
     , _pzcnpaAccessToken = Nothing
@@ -132,6 +135,7 @@
     , _pzcnpaCallback = Nothing
     }
 
+
 -- | V1 error format.
 pzcnpaXgafv :: Lens' ProjectsZonesClustersNodePoolsAutoscaling (Maybe Xgafv)
 pzcnpaXgafv
@@ -197,7 +201,8 @@
       (\ s a -> s{_pzcnpaCallback = a})
 
 instance GoogleRequest
-         ProjectsZonesClustersNodePoolsAutoscaling where
+           ProjectsZonesClustersNodePoolsAutoscaling
+         where
         type Rs ProjectsZonesClustersNodePoolsAutoscaling =
              Operation
         type Scopes ProjectsZonesClustersNodePoolsAutoscaling
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/Create.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/Create.hs
--- a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/Create.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/Create.hs
@@ -70,7 +70,8 @@
 -- | Creates a node pool for a cluster.
 --
 -- /See:/ 'projectsZonesClustersNodePoolsCreate' smart constructor.
-data ProjectsZonesClustersNodePoolsCreate = ProjectsZonesClustersNodePoolsCreate'
+data ProjectsZonesClustersNodePoolsCreate =
+  ProjectsZonesClustersNodePoolsCreate'
     { _pzcnpcXgafv          :: !(Maybe Xgafv)
     , _pzcnpcUploadProtocol :: !(Maybe Text)
     , _pzcnpcAccessToken    :: !(Maybe Text)
@@ -80,8 +81,10 @@
     , _pzcnpcClusterId      :: !Text
     , _pzcnpcProjectId      :: !Text
     , _pzcnpcCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsZonesClustersNodePoolsCreate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -110,7 +113,7 @@
     -> Text -- ^ 'pzcnpcProjectId'
     -> ProjectsZonesClustersNodePoolsCreate
 projectsZonesClustersNodePoolsCreate pPzcnpcZone_ pPzcnpcPayload_ pPzcnpcClusterId_ pPzcnpcProjectId_ =
-    ProjectsZonesClustersNodePoolsCreate'
+  ProjectsZonesClustersNodePoolsCreate'
     { _pzcnpcXgafv = Nothing
     , _pzcnpcUploadProtocol = Nothing
     , _pzcnpcAccessToken = Nothing
@@ -122,6 +125,7 @@
     , _pzcnpcCallback = Nothing
     }
 
+
 -- | V1 error format.
 pzcnpcXgafv :: Lens' ProjectsZonesClustersNodePoolsCreate (Maybe Xgafv)
 pzcnpcXgafv
@@ -180,7 +184,8 @@
       (\ s a -> s{_pzcnpcCallback = a})
 
 instance GoogleRequest
-         ProjectsZonesClustersNodePoolsCreate where
+           ProjectsZonesClustersNodePoolsCreate
+         where
         type Rs ProjectsZonesClustersNodePoolsCreate =
              Operation
         type Scopes ProjectsZonesClustersNodePoolsCreate =
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/Delete.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/Delete.hs
--- a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/Delete.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/Delete.hs
@@ -72,7 +72,8 @@
 -- | Deletes a node pool from a cluster.
 --
 -- /See:/ 'projectsZonesClustersNodePoolsDelete' smart constructor.
-data ProjectsZonesClustersNodePoolsDelete = ProjectsZonesClustersNodePoolsDelete'
+data ProjectsZonesClustersNodePoolsDelete =
+  ProjectsZonesClustersNodePoolsDelete'
     { _pzcnpdXgafv          :: !(Maybe Xgafv)
     , _pzcnpdUploadProtocol :: !(Maybe Text)
     , _pzcnpdAccessToken    :: !(Maybe Text)
@@ -83,8 +84,10 @@
     , _pzcnpdClusterId      :: !Text
     , _pzcnpdProjectId      :: !Text
     , _pzcnpdCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsZonesClustersNodePoolsDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -115,7 +118,7 @@
     -> Text -- ^ 'pzcnpdProjectId'
     -> ProjectsZonesClustersNodePoolsDelete
 projectsZonesClustersNodePoolsDelete pPzcnpdZone_ pPzcnpdNodePoolId_ pPzcnpdClusterId_ pPzcnpdProjectId_ =
-    ProjectsZonesClustersNodePoolsDelete'
+  ProjectsZonesClustersNodePoolsDelete'
     { _pzcnpdXgafv = Nothing
     , _pzcnpdUploadProtocol = Nothing
     , _pzcnpdAccessToken = Nothing
@@ -128,6 +131,7 @@
     , _pzcnpdCallback = Nothing
     }
 
+
 -- | V1 error format.
 pzcnpdXgafv :: Lens' ProjectsZonesClustersNodePoolsDelete (Maybe Xgafv)
 pzcnpdXgafv
@@ -194,7 +198,8 @@
       (\ s a -> s{_pzcnpdCallback = a})
 
 instance GoogleRequest
-         ProjectsZonesClustersNodePoolsDelete where
+           ProjectsZonesClustersNodePoolsDelete
+         where
         type Rs ProjectsZonesClustersNodePoolsDelete =
              Operation
         type Scopes ProjectsZonesClustersNodePoolsDelete =
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/Get.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/Get.hs
--- a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/Get.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/Get.hs
@@ -20,7 +20,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Retrieves the node pool requested.
+-- Retrieves the requested node pool.
 --
 -- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.zones.clusters.nodePools.get@.
 module Network.Google.Resource.Container.Projects.Zones.Clusters.NodePools.Get
@@ -69,10 +69,11 @@
                                    QueryParam "alt" AltJSON :>
                                      Get '[JSON] NodePool
 
--- | Retrieves the node pool requested.
+-- | Retrieves the requested node pool.
 --
 -- /See:/ 'projectsZonesClustersNodePoolsGet' smart constructor.
-data ProjectsZonesClustersNodePoolsGet = ProjectsZonesClustersNodePoolsGet'
+data ProjectsZonesClustersNodePoolsGet =
+  ProjectsZonesClustersNodePoolsGet'
     { _pzcnpgXgafv          :: !(Maybe Xgafv)
     , _pzcnpgUploadProtocol :: !(Maybe Text)
     , _pzcnpgAccessToken    :: !(Maybe Text)
@@ -83,8 +84,10 @@
     , _pzcnpgClusterId      :: !Text
     , _pzcnpgProjectId      :: !Text
     , _pzcnpgCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsZonesClustersNodePoolsGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -115,7 +118,7 @@
     -> Text -- ^ 'pzcnpgProjectId'
     -> ProjectsZonesClustersNodePoolsGet
 projectsZonesClustersNodePoolsGet pPzcnpgZone_ pPzcnpgNodePoolId_ pPzcnpgClusterId_ pPzcnpgProjectId_ =
-    ProjectsZonesClustersNodePoolsGet'
+  ProjectsZonesClustersNodePoolsGet'
     { _pzcnpgXgafv = Nothing
     , _pzcnpgUploadProtocol = Nothing
     , _pzcnpgAccessToken = Nothing
@@ -128,6 +131,7 @@
     , _pzcnpgCallback = Nothing
     }
 
+
 -- | V1 error format.
 pzcnpgXgafv :: Lens' ProjectsZonesClustersNodePoolsGet (Maybe Xgafv)
 pzcnpgXgafv
@@ -194,7 +198,8 @@
       (\ s a -> s{_pzcnpgCallback = a})
 
 instance GoogleRequest
-         ProjectsZonesClustersNodePoolsGet where
+           ProjectsZonesClustersNodePoolsGet
+         where
         type Rs ProjectsZonesClustersNodePoolsGet = NodePool
         type Scopes ProjectsZonesClustersNodePoolsGet =
              '["https://www.googleapis.com/auth/cloud-platform"]
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/List.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/List.hs
--- a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/List.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/List.hs
@@ -70,7 +70,8 @@
 -- | Lists the node pools for a cluster.
 --
 -- /See:/ 'projectsZonesClustersNodePoolsList' smart constructor.
-data ProjectsZonesClustersNodePoolsList = ProjectsZonesClustersNodePoolsList'
+data ProjectsZonesClustersNodePoolsList =
+  ProjectsZonesClustersNodePoolsList'
     { _pzcnplParent         :: !(Maybe Text)
     , _pzcnplXgafv          :: !(Maybe Xgafv)
     , _pzcnplUploadProtocol :: !(Maybe Text)
@@ -80,8 +81,10 @@
     , _pzcnplClusterId      :: !Text
     , _pzcnplProjectId      :: !Text
     , _pzcnplCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsZonesClustersNodePoolsList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -109,7 +112,7 @@
     -> Text -- ^ 'pzcnplProjectId'
     -> ProjectsZonesClustersNodePoolsList
 projectsZonesClustersNodePoolsList pPzcnplZone_ pPzcnplClusterId_ pPzcnplProjectId_ =
-    ProjectsZonesClustersNodePoolsList'
+  ProjectsZonesClustersNodePoolsList'
     { _pzcnplParent = Nothing
     , _pzcnplXgafv = Nothing
     , _pzcnplUploadProtocol = Nothing
@@ -121,6 +124,7 @@
     , _pzcnplCallback = Nothing
     }
 
+
 -- | The parent (project, location, cluster id) where the node pools will be
 -- listed. Specified in the format
 -- \'projects\/*\/locations\/*\/clusters\/*\'.
@@ -180,7 +184,8 @@
       (\ s a -> s{_pzcnplCallback = a})
 
 instance GoogleRequest
-         ProjectsZonesClustersNodePoolsList where
+           ProjectsZonesClustersNodePoolsList
+         where
         type Rs ProjectsZonesClustersNodePoolsList =
              ListNodePoolsResponse
         type Scopes ProjectsZonesClustersNodePoolsList =
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
--- a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/Rollback.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/Rollback.hs
@@ -20,8 +20,8 @@
 -- 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.
+-- Rolls back a previously Aborted or Failed NodePool upgrade. This makes
+-- no changes if the last upgrade successfully completed.
 --
 -- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.zones.clusters.nodePools.rollback@.
 module Network.Google.Resource.Container.Projects.Zones.Clusters.NodePools.Rollback
@@ -71,11 +71,12 @@
                                      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.
+-- | Rolls back a previously Aborted or Failed NodePool upgrade. This makes
+-- no changes if the last upgrade successfully completed.
 --
 -- /See:/ 'projectsZonesClustersNodePoolsRollback' smart constructor.
-data ProjectsZonesClustersNodePoolsRollback = ProjectsZonesClustersNodePoolsRollback'
+data ProjectsZonesClustersNodePoolsRollback =
+  ProjectsZonesClustersNodePoolsRollback'
     { _pzcnprXgafv          :: !(Maybe Xgafv)
     , _pzcnprUploadProtocol :: !(Maybe Text)
     , _pzcnprAccessToken    :: !(Maybe Text)
@@ -86,8 +87,10 @@
     , _pzcnprClusterId      :: !Text
     , _pzcnprProjectId      :: !Text
     , _pzcnprCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -119,7 +122,7 @@
     -> Text -- ^ 'pzcnprProjectId'
     -> ProjectsZonesClustersNodePoolsRollback
 projectsZonesClustersNodePoolsRollback pPzcnprZone_ pPzcnprPayload_ pPzcnprNodePoolId_ pPzcnprClusterId_ pPzcnprProjectId_ =
-    ProjectsZonesClustersNodePoolsRollback'
+  ProjectsZonesClustersNodePoolsRollback'
     { _pzcnprXgafv = Nothing
     , _pzcnprUploadProtocol = Nothing
     , _pzcnprAccessToken = Nothing
@@ -132,6 +135,7 @@
     , _pzcnprCallback = Nothing
     }
 
+
 -- | V1 error format.
 pzcnprXgafv :: Lens' ProjectsZonesClustersNodePoolsRollback (Maybe Xgafv)
 pzcnprXgafv
@@ -197,7 +201,8 @@
       (\ s a -> s{_pzcnprCallback = a})
 
 instance GoogleRequest
-         ProjectsZonesClustersNodePoolsRollback where
+           ProjectsZonesClustersNodePoolsRollback
+         where
         type Rs ProjectsZonesClustersNodePoolsRollback =
              Operation
         type Scopes ProjectsZonesClustersNodePoolsRollback =
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
--- a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/SetManagement.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/SetManagement.hs
@@ -75,7 +75,8 @@
 -- | Sets the NodeManagement options for a node pool.
 --
 -- /See:/ 'projectsZonesClustersNodePoolsSetManagement' smart constructor.
-data ProjectsZonesClustersNodePoolsSetManagement = ProjectsZonesClustersNodePoolsSetManagement'
+data ProjectsZonesClustersNodePoolsSetManagement =
+  ProjectsZonesClustersNodePoolsSetManagement'
     { _pzcnpsmXgafv          :: !(Maybe Xgafv)
     , _pzcnpsmUploadProtocol :: !(Maybe Text)
     , _pzcnpsmAccessToken    :: !(Maybe Text)
@@ -86,8 +87,10 @@
     , _pzcnpsmClusterId      :: !Text
     , _pzcnpsmProjectId      :: !Text
     , _pzcnpsmCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -119,7 +122,7 @@
     -> Text -- ^ 'pzcnpsmProjectId'
     -> ProjectsZonesClustersNodePoolsSetManagement
 projectsZonesClustersNodePoolsSetManagement pPzcnpsmZone_ pPzcnpsmPayload_ pPzcnpsmNodePoolId_ pPzcnpsmClusterId_ pPzcnpsmProjectId_ =
-    ProjectsZonesClustersNodePoolsSetManagement'
+  ProjectsZonesClustersNodePoolsSetManagement'
     { _pzcnpsmXgafv = Nothing
     , _pzcnpsmUploadProtocol = Nothing
     , _pzcnpsmAccessToken = Nothing
@@ -132,6 +135,7 @@
     , _pzcnpsmCallback = Nothing
     }
 
+
 -- | V1 error format.
 pzcnpsmXgafv :: Lens' ProjectsZonesClustersNodePoolsSetManagement (Maybe Xgafv)
 pzcnpsmXgafv
@@ -197,7 +201,8 @@
       (\ s a -> s{_pzcnpsmCallback = a})
 
 instance GoogleRequest
-         ProjectsZonesClustersNodePoolsSetManagement where
+           ProjectsZonesClustersNodePoolsSetManagement
+         where
         type Rs ProjectsZonesClustersNodePoolsSetManagement =
              Operation
         type Scopes
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/SetSize.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/SetSize.hs
--- a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/SetSize.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/SetSize.hs
@@ -73,7 +73,8 @@
 -- | Sets the size for a specific node pool.
 --
 -- /See:/ 'projectsZonesClustersNodePoolsSetSize' smart constructor.
-data ProjectsZonesClustersNodePoolsSetSize = ProjectsZonesClustersNodePoolsSetSize'
+data ProjectsZonesClustersNodePoolsSetSize =
+  ProjectsZonesClustersNodePoolsSetSize'
     { _pzcnpssXgafv          :: !(Maybe Xgafv)
     , _pzcnpssUploadProtocol :: !(Maybe Text)
     , _pzcnpssAccessToken    :: !(Maybe Text)
@@ -84,8 +85,10 @@
     , _pzcnpssClusterId      :: !Text
     , _pzcnpssProjectId      :: !Text
     , _pzcnpssCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsZonesClustersNodePoolsSetSize' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -117,7 +120,7 @@
     -> Text -- ^ 'pzcnpssProjectId'
     -> ProjectsZonesClustersNodePoolsSetSize
 projectsZonesClustersNodePoolsSetSize pPzcnpssZone_ pPzcnpssPayload_ pPzcnpssNodePoolId_ pPzcnpssClusterId_ pPzcnpssProjectId_ =
-    ProjectsZonesClustersNodePoolsSetSize'
+  ProjectsZonesClustersNodePoolsSetSize'
     { _pzcnpssXgafv = Nothing
     , _pzcnpssUploadProtocol = Nothing
     , _pzcnpssAccessToken = Nothing
@@ -130,6 +133,7 @@
     , _pzcnpssCallback = Nothing
     }
 
+
 -- | V1 error format.
 pzcnpssXgafv :: Lens' ProjectsZonesClustersNodePoolsSetSize (Maybe Xgafv)
 pzcnpssXgafv
@@ -195,7 +199,8 @@
       (\ s a -> s{_pzcnpssCallback = a})
 
 instance GoogleRequest
-         ProjectsZonesClustersNodePoolsSetSize where
+           ProjectsZonesClustersNodePoolsSetSize
+         where
         type Rs ProjectsZonesClustersNodePoolsSetSize =
              Operation
         type Scopes ProjectsZonesClustersNodePoolsSetSize =
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/Update.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/Update.hs
--- a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/Update.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/Update.hs
@@ -20,7 +20,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Updates the version and\/or image type for a specific node pool.
+-- Updates the version and\/or image type for the specified node pool.
 --
 -- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.zones.clusters.nodePools.update@.
 module Network.Google.Resource.Container.Projects.Zones.Clusters.NodePools.Update
@@ -70,10 +70,11 @@
                                      ReqBody '[JSON] UpdateNodePoolRequest :>
                                        Post '[JSON] Operation
 
--- | Updates the version and\/or image type for a specific node pool.
+-- | Updates the version and\/or image type for the specified node pool.
 --
 -- /See:/ 'projectsZonesClustersNodePoolsUpdate' smart constructor.
-data ProjectsZonesClustersNodePoolsUpdate = ProjectsZonesClustersNodePoolsUpdate'
+data ProjectsZonesClustersNodePoolsUpdate =
+  ProjectsZonesClustersNodePoolsUpdate'
     { _pzcnpuXgafv          :: !(Maybe Xgafv)
     , _pzcnpuUploadProtocol :: !(Maybe Text)
     , _pzcnpuAccessToken    :: !(Maybe Text)
@@ -84,8 +85,10 @@
     , _pzcnpuClusterId      :: !Text
     , _pzcnpuProjectId      :: !Text
     , _pzcnpuCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsZonesClustersNodePoolsUpdate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -117,7 +120,7 @@
     -> Text -- ^ 'pzcnpuProjectId'
     -> ProjectsZonesClustersNodePoolsUpdate
 projectsZonesClustersNodePoolsUpdate pPzcnpuZone_ pPzcnpuPayload_ pPzcnpuNodePoolId_ pPzcnpuClusterId_ pPzcnpuProjectId_ =
-    ProjectsZonesClustersNodePoolsUpdate'
+  ProjectsZonesClustersNodePoolsUpdate'
     { _pzcnpuXgafv = Nothing
     , _pzcnpuUploadProtocol = Nothing
     , _pzcnpuAccessToken = Nothing
@@ -130,6 +133,7 @@
     , _pzcnpuCallback = Nothing
     }
 
+
 -- | V1 error format.
 pzcnpuXgafv :: Lens' ProjectsZonesClustersNodePoolsUpdate (Maybe Xgafv)
 pzcnpuXgafv
@@ -195,7 +199,8 @@
       (\ s a -> s{_pzcnpuCallback = a})
 
 instance GoogleRequest
-         ProjectsZonesClustersNodePoolsUpdate where
+           ProjectsZonesClustersNodePoolsUpdate
+         where
         type Rs ProjectsZonesClustersNodePoolsUpdate =
              Operation
         type Scopes ProjectsZonesClustersNodePoolsUpdate =
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/ResourceLabels.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/ResourceLabels.hs
--- a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/ResourceLabels.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/ResourceLabels.hs
@@ -70,7 +70,8 @@
 -- | Sets labels on a cluster.
 --
 -- /See:/ 'projectsZonesClustersResourceLabels' smart constructor.
-data ProjectsZonesClustersResourceLabels = ProjectsZonesClustersResourceLabels'
+data ProjectsZonesClustersResourceLabels =
+  ProjectsZonesClustersResourceLabels'
     { _pzcrlXgafv          :: !(Maybe Xgafv)
     , _pzcrlUploadProtocol :: !(Maybe Text)
     , _pzcrlAccessToken    :: !(Maybe Text)
@@ -80,8 +81,10 @@
     , _pzcrlClusterId      :: !Text
     , _pzcrlProjectId      :: !Text
     , _pzcrlCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsZonesClustersResourceLabels' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -110,7 +113,7 @@
     -> Text -- ^ 'pzcrlProjectId'
     -> ProjectsZonesClustersResourceLabels
 projectsZonesClustersResourceLabels pPzcrlZone_ pPzcrlPayload_ pPzcrlClusterId_ pPzcrlProjectId_ =
-    ProjectsZonesClustersResourceLabels'
+  ProjectsZonesClustersResourceLabels'
     { _pzcrlXgafv = Nothing
     , _pzcrlUploadProtocol = Nothing
     , _pzcrlAccessToken = Nothing
@@ -122,6 +125,7 @@
     , _pzcrlCallback = Nothing
     }
 
+
 -- | V1 error format.
 pzcrlXgafv :: Lens' ProjectsZonesClustersResourceLabels (Maybe Xgafv)
 pzcrlXgafv
@@ -179,7 +183,8 @@
       (\ s a -> s{_pzcrlCallback = a})
 
 instance GoogleRequest
-         ProjectsZonesClustersResourceLabels where
+           ProjectsZonesClustersResourceLabels
+         where
         type Rs ProjectsZonesClustersResourceLabels =
              Operation
         type Scopes ProjectsZonesClustersResourceLabels =
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/SetMaintenancePolicy.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/SetMaintenancePolicy.hs
--- a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/SetMaintenancePolicy.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/SetMaintenancePolicy.hs
@@ -71,7 +71,8 @@
 -- | Sets the maintenance policy for a cluster.
 --
 -- /See:/ 'projectsZonesClustersSetMaintenancePolicy' smart constructor.
-data ProjectsZonesClustersSetMaintenancePolicy = ProjectsZonesClustersSetMaintenancePolicy'
+data ProjectsZonesClustersSetMaintenancePolicy =
+  ProjectsZonesClustersSetMaintenancePolicy'
     { _pzcsmpXgafv          :: !(Maybe Xgafv)
     , _pzcsmpUploadProtocol :: !(Maybe Text)
     , _pzcsmpAccessToken    :: !(Maybe Text)
@@ -81,8 +82,10 @@
     , _pzcsmpClusterId      :: !Text
     , _pzcsmpProjectId      :: !Text
     , _pzcsmpCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsZonesClustersSetMaintenancePolicy' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -111,7 +114,7 @@
     -> Text -- ^ 'pzcsmpProjectId'
     -> ProjectsZonesClustersSetMaintenancePolicy
 projectsZonesClustersSetMaintenancePolicy pPzcsmpZone_ pPzcsmpPayload_ pPzcsmpClusterId_ pPzcsmpProjectId_ =
-    ProjectsZonesClustersSetMaintenancePolicy'
+  ProjectsZonesClustersSetMaintenancePolicy'
     { _pzcsmpXgafv = Nothing
     , _pzcsmpUploadProtocol = Nothing
     , _pzcsmpAccessToken = Nothing
@@ -123,6 +126,7 @@
     , _pzcsmpCallback = Nothing
     }
 
+
 -- | V1 error format.
 pzcsmpXgafv :: Lens' ProjectsZonesClustersSetMaintenancePolicy (Maybe Xgafv)
 pzcsmpXgafv
@@ -178,7 +182,8 @@
       (\ s a -> s{_pzcsmpCallback = a})
 
 instance GoogleRequest
-         ProjectsZonesClustersSetMaintenancePolicy where
+           ProjectsZonesClustersSetMaintenancePolicy
+         where
         type Rs ProjectsZonesClustersSetMaintenancePolicy =
              Operation
         type Scopes ProjectsZonesClustersSetMaintenancePolicy
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/SetMasterAuth.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/SetMasterAuth.hs
--- a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/SetMasterAuth.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/SetMasterAuth.hs
@@ -20,9 +20,9 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Used to set master auth materials. Currently supports :- Changing the
--- admin password for a specific cluster. This can be either via password
--- generation or explicitly set the password.
+-- Sets master auth materials. Currently supports changing the admin
+-- password or a specific cluster, either via password generation or
+-- explicitly setting the password.
 --
 -- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.zones.clusters.setMasterAuth@.
 module Network.Google.Resource.Container.Projects.Zones.Clusters.SetMasterAuth
@@ -68,12 +68,13 @@
                                ReqBody '[JSON] SetMasterAuthRequest :>
                                  Post '[JSON] Operation
 
--- | Used to set master auth materials. Currently supports :- Changing the
--- admin password for a specific cluster. This can be either via password
--- generation or explicitly set the password.
+-- | Sets master auth materials. Currently supports changing the admin
+-- password or a specific cluster, either via password generation or
+-- explicitly setting the password.
 --
 -- /See:/ 'projectsZonesClustersSetMasterAuth' smart constructor.
-data ProjectsZonesClustersSetMasterAuth = ProjectsZonesClustersSetMasterAuth'
+data ProjectsZonesClustersSetMasterAuth =
+  ProjectsZonesClustersSetMasterAuth'
     { _pzcsmaXgafv          :: !(Maybe Xgafv)
     , _pzcsmaUploadProtocol :: !(Maybe Text)
     , _pzcsmaAccessToken    :: !(Maybe Text)
@@ -83,8 +84,10 @@
     , _pzcsmaClusterId      :: !Text
     , _pzcsmaProjectId      :: !Text
     , _pzcsmaCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsZonesClustersSetMasterAuth' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -113,7 +116,7 @@
     -> Text -- ^ 'pzcsmaProjectId'
     -> ProjectsZonesClustersSetMasterAuth
 projectsZonesClustersSetMasterAuth pPzcsmaZone_ pPzcsmaPayload_ pPzcsmaClusterId_ pPzcsmaProjectId_ =
-    ProjectsZonesClustersSetMasterAuth'
+  ProjectsZonesClustersSetMasterAuth'
     { _pzcsmaXgafv = Nothing
     , _pzcsmaUploadProtocol = Nothing
     , _pzcsmaAccessToken = Nothing
@@ -125,6 +128,7 @@
     , _pzcsmaCallback = Nothing
     }
 
+
 -- | V1 error format.
 pzcsmaXgafv :: Lens' ProjectsZonesClustersSetMasterAuth (Maybe Xgafv)
 pzcsmaXgafv
@@ -183,7 +187,8 @@
       (\ s a -> s{_pzcsmaCallback = a})
 
 instance GoogleRequest
-         ProjectsZonesClustersSetMasterAuth where
+           ProjectsZonesClustersSetMasterAuth
+         where
         type Rs ProjectsZonesClustersSetMasterAuth =
              Operation
         type Scopes ProjectsZonesClustersSetMasterAuth =
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/SetNetworkPolicy.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/SetNetworkPolicy.hs
--- a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/SetNetworkPolicy.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/SetNetworkPolicy.hs
@@ -20,7 +20,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Enables\/Disables Network Policy for a cluster.
+-- Enables or disables Network Policy for a cluster.
 --
 -- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.zones.clusters.setNetworkPolicy@.
 module Network.Google.Resource.Container.Projects.Zones.Clusters.SetNetworkPolicy
@@ -66,10 +66,11 @@
                                ReqBody '[JSON] SetNetworkPolicyRequest :>
                                  Post '[JSON] Operation
 
--- | Enables\/Disables Network Policy for a cluster.
+-- | Enables or disables Network Policy for a cluster.
 --
 -- /See:/ 'projectsZonesClustersSetNetworkPolicy' smart constructor.
-data ProjectsZonesClustersSetNetworkPolicy = ProjectsZonesClustersSetNetworkPolicy'
+data ProjectsZonesClustersSetNetworkPolicy =
+  ProjectsZonesClustersSetNetworkPolicy'
     { _pzcsnpXgafv          :: !(Maybe Xgafv)
     , _pzcsnpUploadProtocol :: !(Maybe Text)
     , _pzcsnpAccessToken    :: !(Maybe Text)
@@ -79,8 +80,10 @@
     , _pzcsnpClusterId      :: !Text
     , _pzcsnpProjectId      :: !Text
     , _pzcsnpCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsZonesClustersSetNetworkPolicy' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -109,7 +112,7 @@
     -> Text -- ^ 'pzcsnpProjectId'
     -> ProjectsZonesClustersSetNetworkPolicy
 projectsZonesClustersSetNetworkPolicy pPzcsnpZone_ pPzcsnpPayload_ pPzcsnpClusterId_ pPzcsnpProjectId_ =
-    ProjectsZonesClustersSetNetworkPolicy'
+  ProjectsZonesClustersSetNetworkPolicy'
     { _pzcsnpXgafv = Nothing
     , _pzcsnpUploadProtocol = Nothing
     , _pzcsnpAccessToken = Nothing
@@ -121,6 +124,7 @@
     , _pzcsnpCallback = Nothing
     }
 
+
 -- | V1 error format.
 pzcsnpXgafv :: Lens' ProjectsZonesClustersSetNetworkPolicy (Maybe Xgafv)
 pzcsnpXgafv
@@ -179,7 +183,8 @@
       (\ s a -> s{_pzcsnpCallback = a})
 
 instance GoogleRequest
-         ProjectsZonesClustersSetNetworkPolicy where
+           ProjectsZonesClustersSetNetworkPolicy
+         where
         type Rs ProjectsZonesClustersSetNetworkPolicy =
              Operation
         type Scopes ProjectsZonesClustersSetNetworkPolicy =
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/StartIPRotation.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/StartIPRotation.hs
--- a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/StartIPRotation.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/StartIPRotation.hs
@@ -20,7 +20,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Start master IP rotation.
+-- Starts master IP rotation.
 --
 -- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.zones.clusters.startIpRotation@.
 module Network.Google.Resource.Container.Projects.Zones.Clusters.StartIPRotation
@@ -66,10 +66,11 @@
                                ReqBody '[JSON] StartIPRotationRequest :>
                                  Post '[JSON] Operation
 
--- | Start master IP rotation.
+-- | Starts master IP rotation.
 --
 -- /See:/ 'projectsZonesClustersStartIPRotation' smart constructor.
-data ProjectsZonesClustersStartIPRotation = ProjectsZonesClustersStartIPRotation'
+data ProjectsZonesClustersStartIPRotation =
+  ProjectsZonesClustersStartIPRotation'
     { _pzcsirXgafv          :: !(Maybe Xgafv)
     , _pzcsirUploadProtocol :: !(Maybe Text)
     , _pzcsirAccessToken    :: !(Maybe Text)
@@ -79,8 +80,10 @@
     , _pzcsirClusterId      :: !Text
     , _pzcsirProjectId      :: !Text
     , _pzcsirCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsZonesClustersStartIPRotation' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -109,7 +112,7 @@
     -> Text -- ^ 'pzcsirProjectId'
     -> ProjectsZonesClustersStartIPRotation
 projectsZonesClustersStartIPRotation pPzcsirZone_ pPzcsirPayload_ pPzcsirClusterId_ pPzcsirProjectId_ =
-    ProjectsZonesClustersStartIPRotation'
+  ProjectsZonesClustersStartIPRotation'
     { _pzcsirXgafv = Nothing
     , _pzcsirUploadProtocol = Nothing
     , _pzcsirAccessToken = Nothing
@@ -121,6 +124,7 @@
     , _pzcsirCallback = Nothing
     }
 
+
 -- | V1 error format.
 pzcsirXgafv :: Lens' ProjectsZonesClustersStartIPRotation (Maybe Xgafv)
 pzcsirXgafv
@@ -179,7 +183,8 @@
       (\ s a -> s{_pzcsirCallback = a})
 
 instance GoogleRequest
-         ProjectsZonesClustersStartIPRotation where
+           ProjectsZonesClustersStartIPRotation
+         where
         type Rs ProjectsZonesClustersStartIPRotation =
              Operation
         type Scopes ProjectsZonesClustersStartIPRotation =
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Update.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Update.hs
--- a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Update.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Update.hs
@@ -69,7 +69,8 @@
 -- | Updates the settings of a specific cluster.
 --
 -- /See:/ 'projectsZonesClustersUpdate' smart constructor.
-data ProjectsZonesClustersUpdate = ProjectsZonesClustersUpdate'
+data ProjectsZonesClustersUpdate =
+  ProjectsZonesClustersUpdate'
     { _pzcuXgafv          :: !(Maybe Xgafv)
     , _pzcuUploadProtocol :: !(Maybe Text)
     , _pzcuAccessToken    :: !(Maybe Text)
@@ -79,8 +80,10 @@
     , _pzcuClusterId      :: !Text
     , _pzcuProjectId      :: !Text
     , _pzcuCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsZonesClustersUpdate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -109,7 +112,7 @@
     -> Text -- ^ 'pzcuProjectId'
     -> ProjectsZonesClustersUpdate
 projectsZonesClustersUpdate pPzcuZone_ pPzcuPayload_ pPzcuClusterId_ pPzcuProjectId_ =
-    ProjectsZonesClustersUpdate'
+  ProjectsZonesClustersUpdate'
     { _pzcuXgafv = Nothing
     , _pzcuUploadProtocol = Nothing
     , _pzcuAccessToken = Nothing
@@ -120,6 +123,7 @@
     , _pzcuProjectId = pPzcuProjectId_
     , _pzcuCallback = Nothing
     }
+
 
 -- | V1 error format.
 pzcuXgafv :: Lens' ProjectsZonesClustersUpdate (Maybe Xgafv)
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/GetServerConfig.hs b/gen/Network/Google/Resource/Container/Projects/Zones/GetServerConfig.hs
--- a/gen/Network/Google/Resource/Container/Projects/Zones/GetServerConfig.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/GetServerConfig.hs
@@ -20,7 +20,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Returns configuration info about the Kubernetes Engine service.
+-- Returns configuration info about the Google Kubernetes Engine service.
 --
 -- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.zones.getServerconfig@.
 module Network.Google.Resource.Container.Projects.Zones.GetServerConfig
@@ -64,10 +64,11 @@
                              QueryParam "alt" AltJSON :>
                                Get '[JSON] ServerConfig
 
--- | Returns configuration info about the Kubernetes Engine service.
+-- | Returns configuration info about the Google Kubernetes Engine service.
 --
 -- /See:/ 'projectsZonesGetServerConfig' smart constructor.
-data ProjectsZonesGetServerConfig = ProjectsZonesGetServerConfig'
+data ProjectsZonesGetServerConfig =
+  ProjectsZonesGetServerConfig'
     { _pzgscXgafv          :: !(Maybe Xgafv)
     , _pzgscUploadProtocol :: !(Maybe Text)
     , _pzgscAccessToken    :: !(Maybe Text)
@@ -76,8 +77,10 @@
     , _pzgscName           :: !(Maybe Text)
     , _pzgscProjectId      :: !Text
     , _pzgscCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsZonesGetServerConfig' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -102,7 +105,7 @@
     -> Text -- ^ 'pzgscProjectId'
     -> ProjectsZonesGetServerConfig
 projectsZonesGetServerConfig pPzgscZone_ pPzgscProjectId_ =
-    ProjectsZonesGetServerConfig'
+  ProjectsZonesGetServerConfig'
     { _pzgscXgafv = Nothing
     , _pzgscUploadProtocol = Nothing
     , _pzgscAccessToken = Nothing
@@ -113,6 +116,7 @@
     , _pzgscCallback = Nothing
     }
 
+
 -- | V1 error format.
 pzgscXgafv :: Lens' ProjectsZonesGetServerConfig (Maybe Xgafv)
 pzgscXgafv
@@ -143,8 +147,8 @@
 pzgscZone
   = lens _pzgscZone (\ s a -> s{_pzgscZone = a})
 
--- | The name (project and location) of the server config to get Specified in
--- the format \'projects\/*\/locations\/*\'.
+-- | The name (project and location) of the server config to get, specified
+-- in the format \'projects\/*\/locations\/*\'.
 pzgscName :: Lens' ProjectsZonesGetServerConfig (Maybe Text)
 pzgscName
   = lens _pzgscName (\ s a -> s{_pzgscName = a})
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Operations/Cancel.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Operations/Cancel.hs
--- a/gen/Network/Google/Resource/Container/Projects/Zones/Operations/Cancel.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Operations/Cancel.hs
@@ -69,7 +69,8 @@
 -- | Cancels the specified operation.
 --
 -- /See:/ 'projectsZonesOperationsCancel' smart constructor.
-data ProjectsZonesOperationsCancel = ProjectsZonesOperationsCancel'
+data ProjectsZonesOperationsCancel =
+  ProjectsZonesOperationsCancel'
     { _pzocXgafv          :: !(Maybe Xgafv)
     , _pzocUploadProtocol :: !(Maybe Text)
     , _pzocAccessToken    :: !(Maybe Text)
@@ -79,8 +80,10 @@
     , _pzocProjectId      :: !Text
     , _pzocOperationId    :: !Text
     , _pzocCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -109,7 +112,7 @@
     -> Text -- ^ 'pzocOperationId'
     -> ProjectsZonesOperationsCancel
 projectsZonesOperationsCancel pPzocZone_ pPzocPayload_ pPzocProjectId_ pPzocOperationId_ =
-    ProjectsZonesOperationsCancel'
+  ProjectsZonesOperationsCancel'
     { _pzocXgafv = Nothing
     , _pzocUploadProtocol = Nothing
     , _pzocAccessToken = Nothing
@@ -120,6 +123,7 @@
     , _pzocOperationId = pPzocOperationId_
     , _pzocCallback = Nothing
     }
+
 
 -- | V1 error format.
 pzocXgafv :: Lens' ProjectsZonesOperationsCancel (Maybe Xgafv)
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Operations/Get.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Operations/Get.hs
--- a/gen/Network/Google/Resource/Container/Projects/Zones/Operations/Get.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Operations/Get.hs
@@ -68,7 +68,8 @@
 -- | Gets the specified operation.
 --
 -- /See:/ 'projectsZonesOperationsGet' smart constructor.
-data ProjectsZonesOperationsGet = ProjectsZonesOperationsGet'
+data ProjectsZonesOperationsGet =
+  ProjectsZonesOperationsGet'
     { _pzogXgafv          :: !(Maybe Xgafv)
     , _pzogUploadProtocol :: !(Maybe Text)
     , _pzogAccessToken    :: !(Maybe Text)
@@ -78,8 +79,10 @@
     , _pzogProjectId      :: !Text
     , _pzogOperationId    :: !Text
     , _pzogCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsZonesOperationsGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -107,7 +110,7 @@
     -> Text -- ^ 'pzogOperationId'
     -> ProjectsZonesOperationsGet
 projectsZonesOperationsGet pPzogZone_ pPzogProjectId_ pPzogOperationId_ =
-    ProjectsZonesOperationsGet'
+  ProjectsZonesOperationsGet'
     { _pzogXgafv = Nothing
     , _pzogUploadProtocol = Nothing
     , _pzogAccessToken = Nothing
@@ -118,6 +121,7 @@
     , _pzogOperationId = pPzogOperationId_
     , _pzogCallback = Nothing
     }
+
 
 -- | V1 error format.
 pzogXgafv :: Lens' ProjectsZonesOperationsGet (Maybe Xgafv)
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Operations/List.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Operations/List.hs
--- a/gen/Network/Google/Resource/Container/Projects/Zones/Operations/List.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Operations/List.hs
@@ -67,7 +67,8 @@
 -- | Lists all operations in a project in a specific zone or all zones.
 --
 -- /See:/ 'projectsZonesOperationsList' smart constructor.
-data ProjectsZonesOperationsList = ProjectsZonesOperationsList'
+data ProjectsZonesOperationsList =
+  ProjectsZonesOperationsList'
     { _pzolParent         :: !(Maybe Text)
     , _pzolXgafv          :: !(Maybe Xgafv)
     , _pzolUploadProtocol :: !(Maybe Text)
@@ -76,8 +77,10 @@
     , _pzolZone           :: !Text
     , _pzolProjectId      :: !Text
     , _pzolCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsZonesOperationsList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -102,7 +105,7 @@
     -> Text -- ^ 'pzolProjectId'
     -> ProjectsZonesOperationsList
 projectsZonesOperationsList pPzolZone_ pPzolProjectId_ =
-    ProjectsZonesOperationsList'
+  ProjectsZonesOperationsList'
     { _pzolParent = Nothing
     , _pzolXgafv = Nothing
     , _pzolUploadProtocol = Nothing
@@ -112,6 +115,7 @@
     , _pzolProjectId = pPzolProjectId_
     , _pzolCallback = Nothing
     }
+
 
 -- | The parent (project and location) where the operations will be listed.
 -- Specified in the format \'projects\/*\/locations\/*\'. Location \"-\"
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.4.0
+version:               0.5.0
 synopsis:              Google Kubernetes Engine SDK.
 homepage:              https://github.com/brendanhay/gogol
 bug-reports:           https://github.com/brendanhay/gogol/issues
@@ -36,10 +36,12 @@
     exposed-modules:
           Network.Google.Container
         , Network.Google.Container.Types
+        , Network.Google.Resource.Container.Projects.Aggregated.UsableSubnetworks.List
         , Network.Google.Resource.Container.Projects.Locations.Clusters.CompleteIPRotation
         , Network.Google.Resource.Container.Projects.Locations.Clusters.Create
         , Network.Google.Resource.Container.Projects.Locations.Clusters.Delete
         , Network.Google.Resource.Container.Projects.Locations.Clusters.Get
+        , Network.Google.Resource.Container.Projects.Locations.Clusters.GetJWKs
         , Network.Google.Resource.Container.Projects.Locations.Clusters.List
         , Network.Google.Resource.Container.Projects.Locations.Clusters.NodePools.Create
         , Network.Google.Resource.Container.Projects.Locations.Clusters.NodePools.Delete
@@ -62,6 +64,7 @@
         , Network.Google.Resource.Container.Projects.Locations.Clusters.StartIPRotation
         , Network.Google.Resource.Container.Projects.Locations.Clusters.Update
         , Network.Google.Resource.Container.Projects.Locations.Clusters.UpdateMaster
+        , Network.Google.Resource.Container.Projects.Locations.Clusters.WellKnown.GetOpenidConfiguration
         , Network.Google.Resource.Container.Projects.Locations.GetServerConfig
         , Network.Google.Resource.Container.Projects.Locations.Operations.Cancel
         , Network.Google.Resource.Container.Projects.Locations.Operations.Get
@@ -102,5 +105,5 @@
         , Network.Google.Container.Types.Sum
 
     build-depends:
-          gogol-core == 0.4.0.*
+          gogol-core == 0.5.0.*
         , base       >= 4.7 && < 5
