{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.Glue.Types.DevEndpoint
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.Glue.Types.DevEndpoint where

import qualified Amazonka.Core as Core
import Amazonka.Glue.Types.WorkerType
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude

-- | A development endpoint where a developer can remotely debug extract,
-- transform, and load (ETL) scripts.
--
-- /See:/ 'newDevEndpoint' smart constructor.
data DevEndpoint = DevEndpoint'
  { -- | The current status of this @DevEndpoint@.
    DevEndpoint -> Maybe Text
status :: Prelude.Maybe Prelude.Text,
    -- | The reason for a current failure in this @DevEndpoint@.
    DevEndpoint -> Maybe Text
failureReason :: Prelude.Maybe Prelude.Text,
    -- | The name of the @DevEndpoint@.
    DevEndpoint -> Maybe Text
endpointName :: Prelude.Maybe Prelude.Text,
    -- | The number of workers of a defined @workerType@ that are allocated to
    -- the development endpoint.
    --
    -- The maximum number of workers you can define are 299 for @G.1X@, and 149
    -- for @G.2X@.
    DevEndpoint -> Maybe Int
numberOfWorkers :: Prelude.Maybe Prelude.Int,
    -- | The paths to one or more Python libraries in an Amazon S3 bucket that
    -- should be loaded in your @DevEndpoint@. Multiple values must be complete
    -- paths separated by a comma.
    --
    -- You can only use pure Python libraries with a @DevEndpoint@. Libraries
    -- that rely on C extensions, such as the
    -- <http://pandas.pydata.org/ pandas> Python data analysis library, are not
    -- currently supported.
    DevEndpoint -> Maybe Text
extraPythonLibsS3Path :: Prelude.Maybe Prelude.Text,
    -- | The status of the last update.
    DevEndpoint -> Maybe Text
lastUpdateStatus :: Prelude.Maybe Prelude.Text,
    -- | A list of security group identifiers used in this @DevEndpoint@.
    DevEndpoint -> Maybe [Text]
securityGroupIds :: Prelude.Maybe [Prelude.Text],
    -- | The point in time at which this @DevEndpoint@ was last modified.
    DevEndpoint -> Maybe POSIX
lastModifiedTimestamp :: Prelude.Maybe Core.POSIX,
    -- | A list of public keys to be used by the @DevEndpoints@ for
    -- authentication. Using this attribute is preferred over a single public
    -- key because the public keys allow you to have a different private key
    -- per client.
    --
    -- If you previously created an endpoint with a public key, you must remove
    -- that key to be able to set a list of public keys. Call the
    -- @UpdateDevEndpoint@ API operation with the public key content in the
    -- @deletePublicKeys@ attribute, and the list of new keys in the
    -- @addPublicKeys@ attribute.
    DevEndpoint -> Maybe [Text]
publicKeys :: Prelude.Maybe [Prelude.Text],
    -- | The ID of the virtual private cloud (VPC) used by this @DevEndpoint@.
    DevEndpoint -> Maybe Text
vpcId :: Prelude.Maybe Prelude.Text,
    -- | A map of arguments used to configure the @DevEndpoint@.
    --
    -- Valid arguments are:
    --
    -- -   @\"--enable-glue-datacatalog\": \"\"@
    --
    -- You can specify a version of Python support for development endpoints by
    -- using the @Arguments@ parameter in the @CreateDevEndpoint@ or
    -- @UpdateDevEndpoint@ APIs. If no arguments are provided, the version
    -- defaults to Python 2.
    DevEndpoint -> Maybe (HashMap Text Text)
arguments :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
    -- | A private IP address to access the @DevEndpoint@ within a VPC if the
    -- @DevEndpoint@ is created within one. The @PrivateAddress@ field is
    -- present only when you create the @DevEndpoint@ within your VPC.
    DevEndpoint -> Maybe Text
privateAddress :: Prelude.Maybe Prelude.Text,
    -- | The type of predefined worker that is allocated to the development
    -- endpoint. Accepts a value of Standard, G.1X, or G.2X.
    --
    -- -   For the @Standard@ worker type, each worker provides 4 vCPU, 16 GB
    --     of memory and a 50GB disk, and 2 executors per worker.
    --
    -- -   For the @G.1X@ worker type, each worker maps to 1 DPU (4 vCPU, 16 GB
    --     of memory, 64 GB disk), and provides 1 executor per worker. We
    --     recommend this worker type for memory-intensive jobs.
    --
    -- -   For the @G.2X@ worker type, each worker maps to 2 DPU (8 vCPU, 32 GB
    --     of memory, 128 GB disk), and provides 1 executor per worker. We
    --     recommend this worker type for memory-intensive jobs.
    --
    -- Known issue: when a development endpoint is created with the @G.2X@
    -- @WorkerType@ configuration, the Spark drivers for the development
    -- endpoint will run on 4 vCPU, 16 GB of memory, and a 64 GB disk.
    DevEndpoint -> Maybe WorkerType
workerType :: Prelude.Maybe WorkerType,
    -- | The name of the @SecurityConfiguration@ structure to be used with this
    -- @DevEndpoint@.
    DevEndpoint -> Maybe Text
securityConfiguration :: Prelude.Maybe Prelude.Text,
    -- | The public key to be used by this @DevEndpoint@ for authentication. This
    -- attribute is provided for backward compatibility because the recommended
    -- attribute to use is public keys.
    DevEndpoint -> Maybe Text
publicKey :: Prelude.Maybe Prelude.Text,
    -- | The subnet ID for this @DevEndpoint@.
    DevEndpoint -> Maybe Text
subnetId :: Prelude.Maybe Prelude.Text,
    -- | Glue version determines the versions of Apache Spark and Python that
    -- Glue supports. The Python version indicates the version supported for
    -- running your ETL scripts on development endpoints.
    --
    -- For more information about the available Glue versions and corresponding
    -- Spark and Python versions, see
    -- <https://docs.aws.amazon.com/glue/latest/dg/add-job.html Glue version>
    -- in the developer guide.
    --
    -- Development endpoints that are created without specifying a Glue version
    -- default to Glue 0.9.
    --
    -- You can specify a version of Python support for development endpoints by
    -- using the @Arguments@ parameter in the @CreateDevEndpoint@ or
    -- @UpdateDevEndpoint@ APIs. If no arguments are provided, the version
    -- defaults to Python 2.
    DevEndpoint -> Maybe Text
glueVersion :: Prelude.Maybe Prelude.Text,
    -- | The number of Glue Data Processing Units (DPUs) allocated to this
    -- @DevEndpoint@.
    DevEndpoint -> Maybe Int
numberOfNodes :: Prelude.Maybe Prelude.Int,
    -- | The public IP address used by this @DevEndpoint@. The @PublicAddress@
    -- field is present only when you create a non-virtual private cloud (VPC)
    -- @DevEndpoint@.
    DevEndpoint -> Maybe Text
publicAddress :: Prelude.Maybe Prelude.Text,
    -- | The AWS Availability Zone where this @DevEndpoint@ is located.
    DevEndpoint -> Maybe Text
availabilityZone :: Prelude.Maybe Prelude.Text,
    -- | The Apache Zeppelin port for the remote Apache Spark interpreter.
    DevEndpoint -> Maybe Int
zeppelinRemoteSparkInterpreterPort :: Prelude.Maybe Prelude.Int,
    -- | The path to one or more Java @.jar@ files in an S3 bucket that should be
    -- loaded in your @DevEndpoint@.
    --
    -- You can only use pure Java\/Scala libraries with a @DevEndpoint@.
    DevEndpoint -> Maybe Text
extraJarsS3Path :: Prelude.Maybe Prelude.Text,
    -- | The point in time at which this DevEndpoint was created.
    DevEndpoint -> Maybe POSIX
createdTimestamp :: Prelude.Maybe Core.POSIX,
    -- | The YARN endpoint address used by this @DevEndpoint@.
    DevEndpoint -> Maybe Text
yarnEndpointAddress :: Prelude.Maybe Prelude.Text,
    -- | The Amazon Resource Name (ARN) of the IAM role used in this
    -- @DevEndpoint@.
    DevEndpoint -> Maybe Text
roleArn :: Prelude.Maybe Prelude.Text
  }
  deriving (DevEndpoint -> DevEndpoint -> Bool
(DevEndpoint -> DevEndpoint -> Bool)
-> (DevEndpoint -> DevEndpoint -> Bool) -> Eq DevEndpoint
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DevEndpoint -> DevEndpoint -> Bool
$c/= :: DevEndpoint -> DevEndpoint -> Bool
== :: DevEndpoint -> DevEndpoint -> Bool
$c== :: DevEndpoint -> DevEndpoint -> Bool
Prelude.Eq, ReadPrec [DevEndpoint]
ReadPrec DevEndpoint
Int -> ReadS DevEndpoint
ReadS [DevEndpoint]
(Int -> ReadS DevEndpoint)
-> ReadS [DevEndpoint]
-> ReadPrec DevEndpoint
-> ReadPrec [DevEndpoint]
-> Read DevEndpoint
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DevEndpoint]
$creadListPrec :: ReadPrec [DevEndpoint]
readPrec :: ReadPrec DevEndpoint
$creadPrec :: ReadPrec DevEndpoint
readList :: ReadS [DevEndpoint]
$creadList :: ReadS [DevEndpoint]
readsPrec :: Int -> ReadS DevEndpoint
$creadsPrec :: Int -> ReadS DevEndpoint
Prelude.Read, Int -> DevEndpoint -> ShowS
[DevEndpoint] -> ShowS
DevEndpoint -> String
(Int -> DevEndpoint -> ShowS)
-> (DevEndpoint -> String)
-> ([DevEndpoint] -> ShowS)
-> Show DevEndpoint
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DevEndpoint] -> ShowS
$cshowList :: [DevEndpoint] -> ShowS
show :: DevEndpoint -> String
$cshow :: DevEndpoint -> String
showsPrec :: Int -> DevEndpoint -> ShowS
$cshowsPrec :: Int -> DevEndpoint -> ShowS
Prelude.Show, (forall x. DevEndpoint -> Rep DevEndpoint x)
-> (forall x. Rep DevEndpoint x -> DevEndpoint)
-> Generic DevEndpoint
forall x. Rep DevEndpoint x -> DevEndpoint
forall x. DevEndpoint -> Rep DevEndpoint x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DevEndpoint x -> DevEndpoint
$cfrom :: forall x. DevEndpoint -> Rep DevEndpoint x
Prelude.Generic)

-- |
-- Create a value of 'DevEndpoint' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'status', 'devEndpoint_status' - The current status of this @DevEndpoint@.
--
-- 'failureReason', 'devEndpoint_failureReason' - The reason for a current failure in this @DevEndpoint@.
--
-- 'endpointName', 'devEndpoint_endpointName' - The name of the @DevEndpoint@.
--
-- 'numberOfWorkers', 'devEndpoint_numberOfWorkers' - The number of workers of a defined @workerType@ that are allocated to
-- the development endpoint.
--
-- The maximum number of workers you can define are 299 for @G.1X@, and 149
-- for @G.2X@.
--
-- 'extraPythonLibsS3Path', 'devEndpoint_extraPythonLibsS3Path' - The paths to one or more Python libraries in an Amazon S3 bucket that
-- should be loaded in your @DevEndpoint@. Multiple values must be complete
-- paths separated by a comma.
--
-- You can only use pure Python libraries with a @DevEndpoint@. Libraries
-- that rely on C extensions, such as the
-- <http://pandas.pydata.org/ pandas> Python data analysis library, are not
-- currently supported.
--
-- 'lastUpdateStatus', 'devEndpoint_lastUpdateStatus' - The status of the last update.
--
-- 'securityGroupIds', 'devEndpoint_securityGroupIds' - A list of security group identifiers used in this @DevEndpoint@.
--
-- 'lastModifiedTimestamp', 'devEndpoint_lastModifiedTimestamp' - The point in time at which this @DevEndpoint@ was last modified.
--
-- 'publicKeys', 'devEndpoint_publicKeys' - A list of public keys to be used by the @DevEndpoints@ for
-- authentication. Using this attribute is preferred over a single public
-- key because the public keys allow you to have a different private key
-- per client.
--
-- If you previously created an endpoint with a public key, you must remove
-- that key to be able to set a list of public keys. Call the
-- @UpdateDevEndpoint@ API operation with the public key content in the
-- @deletePublicKeys@ attribute, and the list of new keys in the
-- @addPublicKeys@ attribute.
--
-- 'vpcId', 'devEndpoint_vpcId' - The ID of the virtual private cloud (VPC) used by this @DevEndpoint@.
--
-- 'arguments', 'devEndpoint_arguments' - A map of arguments used to configure the @DevEndpoint@.
--
-- Valid arguments are:
--
-- -   @\"--enable-glue-datacatalog\": \"\"@
--
-- You can specify a version of Python support for development endpoints by
-- using the @Arguments@ parameter in the @CreateDevEndpoint@ or
-- @UpdateDevEndpoint@ APIs. If no arguments are provided, the version
-- defaults to Python 2.
--
-- 'privateAddress', 'devEndpoint_privateAddress' - A private IP address to access the @DevEndpoint@ within a VPC if the
-- @DevEndpoint@ is created within one. The @PrivateAddress@ field is
-- present only when you create the @DevEndpoint@ within your VPC.
--
-- 'workerType', 'devEndpoint_workerType' - The type of predefined worker that is allocated to the development
-- endpoint. Accepts a value of Standard, G.1X, or G.2X.
--
-- -   For the @Standard@ worker type, each worker provides 4 vCPU, 16 GB
--     of memory and a 50GB disk, and 2 executors per worker.
--
-- -   For the @G.1X@ worker type, each worker maps to 1 DPU (4 vCPU, 16 GB
--     of memory, 64 GB disk), and provides 1 executor per worker. We
--     recommend this worker type for memory-intensive jobs.
--
-- -   For the @G.2X@ worker type, each worker maps to 2 DPU (8 vCPU, 32 GB
--     of memory, 128 GB disk), and provides 1 executor per worker. We
--     recommend this worker type for memory-intensive jobs.
--
-- Known issue: when a development endpoint is created with the @G.2X@
-- @WorkerType@ configuration, the Spark drivers for the development
-- endpoint will run on 4 vCPU, 16 GB of memory, and a 64 GB disk.
--
-- 'securityConfiguration', 'devEndpoint_securityConfiguration' - The name of the @SecurityConfiguration@ structure to be used with this
-- @DevEndpoint@.
--
-- 'publicKey', 'devEndpoint_publicKey' - The public key to be used by this @DevEndpoint@ for authentication. This
-- attribute is provided for backward compatibility because the recommended
-- attribute to use is public keys.
--
-- 'subnetId', 'devEndpoint_subnetId' - The subnet ID for this @DevEndpoint@.
--
-- 'glueVersion', 'devEndpoint_glueVersion' - Glue version determines the versions of Apache Spark and Python that
-- Glue supports. The Python version indicates the version supported for
-- running your ETL scripts on development endpoints.
--
-- For more information about the available Glue versions and corresponding
-- Spark and Python versions, see
-- <https://docs.aws.amazon.com/glue/latest/dg/add-job.html Glue version>
-- in the developer guide.
--
-- Development endpoints that are created without specifying a Glue version
-- default to Glue 0.9.
--
-- You can specify a version of Python support for development endpoints by
-- using the @Arguments@ parameter in the @CreateDevEndpoint@ or
-- @UpdateDevEndpoint@ APIs. If no arguments are provided, the version
-- defaults to Python 2.
--
-- 'numberOfNodes', 'devEndpoint_numberOfNodes' - The number of Glue Data Processing Units (DPUs) allocated to this
-- @DevEndpoint@.
--
-- 'publicAddress', 'devEndpoint_publicAddress' - The public IP address used by this @DevEndpoint@. The @PublicAddress@
-- field is present only when you create a non-virtual private cloud (VPC)
-- @DevEndpoint@.
--
-- 'availabilityZone', 'devEndpoint_availabilityZone' - The AWS Availability Zone where this @DevEndpoint@ is located.
--
-- 'zeppelinRemoteSparkInterpreterPort', 'devEndpoint_zeppelinRemoteSparkInterpreterPort' - The Apache Zeppelin port for the remote Apache Spark interpreter.
--
-- 'extraJarsS3Path', 'devEndpoint_extraJarsS3Path' - The path to one or more Java @.jar@ files in an S3 bucket that should be
-- loaded in your @DevEndpoint@.
--
-- You can only use pure Java\/Scala libraries with a @DevEndpoint@.
--
-- 'createdTimestamp', 'devEndpoint_createdTimestamp' - The point in time at which this DevEndpoint was created.
--
-- 'yarnEndpointAddress', 'devEndpoint_yarnEndpointAddress' - The YARN endpoint address used by this @DevEndpoint@.
--
-- 'roleArn', 'devEndpoint_roleArn' - The Amazon Resource Name (ARN) of the IAM role used in this
-- @DevEndpoint@.
newDevEndpoint ::
  DevEndpoint
newDevEndpoint :: DevEndpoint
newDevEndpoint =
  DevEndpoint' :: Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Int
-> Maybe Text
-> Maybe Text
-> Maybe [Text]
-> Maybe POSIX
-> Maybe [Text]
-> Maybe Text
-> Maybe (HashMap Text Text)
-> Maybe Text
-> Maybe WorkerType
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Int
-> Maybe Text
-> Maybe Text
-> Maybe Int
-> Maybe Text
-> Maybe POSIX
-> Maybe Text
-> Maybe Text
-> DevEndpoint
DevEndpoint'
    { $sel:status:DevEndpoint' :: Maybe Text
status = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:failureReason:DevEndpoint' :: Maybe Text
failureReason = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:endpointName:DevEndpoint' :: Maybe Text
endpointName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:numberOfWorkers:DevEndpoint' :: Maybe Int
numberOfWorkers = Maybe Int
forall a. Maybe a
Prelude.Nothing,
      $sel:extraPythonLibsS3Path:DevEndpoint' :: Maybe Text
extraPythonLibsS3Path = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:lastUpdateStatus:DevEndpoint' :: Maybe Text
lastUpdateStatus = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:securityGroupIds:DevEndpoint' :: Maybe [Text]
securityGroupIds = Maybe [Text]
forall a. Maybe a
Prelude.Nothing,
      $sel:lastModifiedTimestamp:DevEndpoint' :: Maybe POSIX
lastModifiedTimestamp = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:publicKeys:DevEndpoint' :: Maybe [Text]
publicKeys = Maybe [Text]
forall a. Maybe a
Prelude.Nothing,
      $sel:vpcId:DevEndpoint' :: Maybe Text
vpcId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:arguments:DevEndpoint' :: Maybe (HashMap Text Text)
arguments = Maybe (HashMap Text Text)
forall a. Maybe a
Prelude.Nothing,
      $sel:privateAddress:DevEndpoint' :: Maybe Text
privateAddress = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:workerType:DevEndpoint' :: Maybe WorkerType
workerType = Maybe WorkerType
forall a. Maybe a
Prelude.Nothing,
      $sel:securityConfiguration:DevEndpoint' :: Maybe Text
securityConfiguration = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:publicKey:DevEndpoint' :: Maybe Text
publicKey = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:subnetId:DevEndpoint' :: Maybe Text
subnetId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:glueVersion:DevEndpoint' :: Maybe Text
glueVersion = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:numberOfNodes:DevEndpoint' :: Maybe Int
numberOfNodes = Maybe Int
forall a. Maybe a
Prelude.Nothing,
      $sel:publicAddress:DevEndpoint' :: Maybe Text
publicAddress = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:availabilityZone:DevEndpoint' :: Maybe Text
availabilityZone = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:zeppelinRemoteSparkInterpreterPort:DevEndpoint' :: Maybe Int
zeppelinRemoteSparkInterpreterPort = Maybe Int
forall a. Maybe a
Prelude.Nothing,
      $sel:extraJarsS3Path:DevEndpoint' :: Maybe Text
extraJarsS3Path = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:createdTimestamp:DevEndpoint' :: Maybe POSIX
createdTimestamp = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:yarnEndpointAddress:DevEndpoint' :: Maybe Text
yarnEndpointAddress = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:roleArn:DevEndpoint' :: Maybe Text
roleArn = Maybe Text
forall a. Maybe a
Prelude.Nothing
    }

-- | The current status of this @DevEndpoint@.
devEndpoint_status :: Lens.Lens' DevEndpoint (Prelude.Maybe Prelude.Text)
devEndpoint_status :: (Maybe Text -> f (Maybe Text)) -> DevEndpoint -> f DevEndpoint
devEndpoint_status = (DevEndpoint -> Maybe Text)
-> (DevEndpoint -> Maybe Text -> DevEndpoint)
-> Lens DevEndpoint DevEndpoint (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DevEndpoint' {Maybe Text
status :: Maybe Text
$sel:status:DevEndpoint' :: DevEndpoint -> Maybe Text
status} -> Maybe Text
status) (\s :: DevEndpoint
s@DevEndpoint' {} Maybe Text
a -> DevEndpoint
s {$sel:status:DevEndpoint' :: Maybe Text
status = Maybe Text
a} :: DevEndpoint)

-- | The reason for a current failure in this @DevEndpoint@.
devEndpoint_failureReason :: Lens.Lens' DevEndpoint (Prelude.Maybe Prelude.Text)
devEndpoint_failureReason :: (Maybe Text -> f (Maybe Text)) -> DevEndpoint -> f DevEndpoint
devEndpoint_failureReason = (DevEndpoint -> Maybe Text)
-> (DevEndpoint -> Maybe Text -> DevEndpoint)
-> Lens DevEndpoint DevEndpoint (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DevEndpoint' {Maybe Text
failureReason :: Maybe Text
$sel:failureReason:DevEndpoint' :: DevEndpoint -> Maybe Text
failureReason} -> Maybe Text
failureReason) (\s :: DevEndpoint
s@DevEndpoint' {} Maybe Text
a -> DevEndpoint
s {$sel:failureReason:DevEndpoint' :: Maybe Text
failureReason = Maybe Text
a} :: DevEndpoint)

-- | The name of the @DevEndpoint@.
devEndpoint_endpointName :: Lens.Lens' DevEndpoint (Prelude.Maybe Prelude.Text)
devEndpoint_endpointName :: (Maybe Text -> f (Maybe Text)) -> DevEndpoint -> f DevEndpoint
devEndpoint_endpointName = (DevEndpoint -> Maybe Text)
-> (DevEndpoint -> Maybe Text -> DevEndpoint)
-> Lens DevEndpoint DevEndpoint (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DevEndpoint' {Maybe Text
endpointName :: Maybe Text
$sel:endpointName:DevEndpoint' :: DevEndpoint -> Maybe Text
endpointName} -> Maybe Text
endpointName) (\s :: DevEndpoint
s@DevEndpoint' {} Maybe Text
a -> DevEndpoint
s {$sel:endpointName:DevEndpoint' :: Maybe Text
endpointName = Maybe Text
a} :: DevEndpoint)

-- | The number of workers of a defined @workerType@ that are allocated to
-- the development endpoint.
--
-- The maximum number of workers you can define are 299 for @G.1X@, and 149
-- for @G.2X@.
devEndpoint_numberOfWorkers :: Lens.Lens' DevEndpoint (Prelude.Maybe Prelude.Int)
devEndpoint_numberOfWorkers :: (Maybe Int -> f (Maybe Int)) -> DevEndpoint -> f DevEndpoint
devEndpoint_numberOfWorkers = (DevEndpoint -> Maybe Int)
-> (DevEndpoint -> Maybe Int -> DevEndpoint)
-> Lens DevEndpoint DevEndpoint (Maybe Int) (Maybe Int)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DevEndpoint' {Maybe Int
numberOfWorkers :: Maybe Int
$sel:numberOfWorkers:DevEndpoint' :: DevEndpoint -> Maybe Int
numberOfWorkers} -> Maybe Int
numberOfWorkers) (\s :: DevEndpoint
s@DevEndpoint' {} Maybe Int
a -> DevEndpoint
s {$sel:numberOfWorkers:DevEndpoint' :: Maybe Int
numberOfWorkers = Maybe Int
a} :: DevEndpoint)

-- | The paths to one or more Python libraries in an Amazon S3 bucket that
-- should be loaded in your @DevEndpoint@. Multiple values must be complete
-- paths separated by a comma.
--
-- You can only use pure Python libraries with a @DevEndpoint@. Libraries
-- that rely on C extensions, such as the
-- <http://pandas.pydata.org/ pandas> Python data analysis library, are not
-- currently supported.
devEndpoint_extraPythonLibsS3Path :: Lens.Lens' DevEndpoint (Prelude.Maybe Prelude.Text)
devEndpoint_extraPythonLibsS3Path :: (Maybe Text -> f (Maybe Text)) -> DevEndpoint -> f DevEndpoint
devEndpoint_extraPythonLibsS3Path = (DevEndpoint -> Maybe Text)
-> (DevEndpoint -> Maybe Text -> DevEndpoint)
-> Lens DevEndpoint DevEndpoint (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DevEndpoint' {Maybe Text
extraPythonLibsS3Path :: Maybe Text
$sel:extraPythonLibsS3Path:DevEndpoint' :: DevEndpoint -> Maybe Text
extraPythonLibsS3Path} -> Maybe Text
extraPythonLibsS3Path) (\s :: DevEndpoint
s@DevEndpoint' {} Maybe Text
a -> DevEndpoint
s {$sel:extraPythonLibsS3Path:DevEndpoint' :: Maybe Text
extraPythonLibsS3Path = Maybe Text
a} :: DevEndpoint)

-- | The status of the last update.
devEndpoint_lastUpdateStatus :: Lens.Lens' DevEndpoint (Prelude.Maybe Prelude.Text)
devEndpoint_lastUpdateStatus :: (Maybe Text -> f (Maybe Text)) -> DevEndpoint -> f DevEndpoint
devEndpoint_lastUpdateStatus = (DevEndpoint -> Maybe Text)
-> (DevEndpoint -> Maybe Text -> DevEndpoint)
-> Lens DevEndpoint DevEndpoint (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DevEndpoint' {Maybe Text
lastUpdateStatus :: Maybe Text
$sel:lastUpdateStatus:DevEndpoint' :: DevEndpoint -> Maybe Text
lastUpdateStatus} -> Maybe Text
lastUpdateStatus) (\s :: DevEndpoint
s@DevEndpoint' {} Maybe Text
a -> DevEndpoint
s {$sel:lastUpdateStatus:DevEndpoint' :: Maybe Text
lastUpdateStatus = Maybe Text
a} :: DevEndpoint)

-- | A list of security group identifiers used in this @DevEndpoint@.
devEndpoint_securityGroupIds :: Lens.Lens' DevEndpoint (Prelude.Maybe [Prelude.Text])
devEndpoint_securityGroupIds :: (Maybe [Text] -> f (Maybe [Text])) -> DevEndpoint -> f DevEndpoint
devEndpoint_securityGroupIds = (DevEndpoint -> Maybe [Text])
-> (DevEndpoint -> Maybe [Text] -> DevEndpoint)
-> Lens DevEndpoint DevEndpoint (Maybe [Text]) (Maybe [Text])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DevEndpoint' {Maybe [Text]
securityGroupIds :: Maybe [Text]
$sel:securityGroupIds:DevEndpoint' :: DevEndpoint -> Maybe [Text]
securityGroupIds} -> Maybe [Text]
securityGroupIds) (\s :: DevEndpoint
s@DevEndpoint' {} Maybe [Text]
a -> DevEndpoint
s {$sel:securityGroupIds:DevEndpoint' :: Maybe [Text]
securityGroupIds = Maybe [Text]
a} :: DevEndpoint) ((Maybe [Text] -> f (Maybe [Text]))
 -> DevEndpoint -> f DevEndpoint)
-> ((Maybe [Text] -> f (Maybe [Text]))
    -> Maybe [Text] -> f (Maybe [Text]))
-> (Maybe [Text] -> f (Maybe [Text]))
-> DevEndpoint
-> f DevEndpoint
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [Text] [Text] [Text] [Text]
-> Iso (Maybe [Text]) (Maybe [Text]) (Maybe [Text]) (Maybe [Text])
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso [Text] [Text] [Text] [Text]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The point in time at which this @DevEndpoint@ was last modified.
devEndpoint_lastModifiedTimestamp :: Lens.Lens' DevEndpoint (Prelude.Maybe Prelude.UTCTime)
devEndpoint_lastModifiedTimestamp :: (Maybe UTCTime -> f (Maybe UTCTime))
-> DevEndpoint -> f DevEndpoint
devEndpoint_lastModifiedTimestamp = (DevEndpoint -> Maybe POSIX)
-> (DevEndpoint -> Maybe POSIX -> DevEndpoint)
-> Lens DevEndpoint DevEndpoint (Maybe POSIX) (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DevEndpoint' {Maybe POSIX
lastModifiedTimestamp :: Maybe POSIX
$sel:lastModifiedTimestamp:DevEndpoint' :: DevEndpoint -> Maybe POSIX
lastModifiedTimestamp} -> Maybe POSIX
lastModifiedTimestamp) (\s :: DevEndpoint
s@DevEndpoint' {} Maybe POSIX
a -> DevEndpoint
s {$sel:lastModifiedTimestamp:DevEndpoint' :: Maybe POSIX
lastModifiedTimestamp = Maybe POSIX
a} :: DevEndpoint) ((Maybe POSIX -> f (Maybe POSIX)) -> DevEndpoint -> f DevEndpoint)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> DevEndpoint
-> f DevEndpoint
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | A list of public keys to be used by the @DevEndpoints@ for
-- authentication. Using this attribute is preferred over a single public
-- key because the public keys allow you to have a different private key
-- per client.
--
-- If you previously created an endpoint with a public key, you must remove
-- that key to be able to set a list of public keys. Call the
-- @UpdateDevEndpoint@ API operation with the public key content in the
-- @deletePublicKeys@ attribute, and the list of new keys in the
-- @addPublicKeys@ attribute.
devEndpoint_publicKeys :: Lens.Lens' DevEndpoint (Prelude.Maybe [Prelude.Text])
devEndpoint_publicKeys :: (Maybe [Text] -> f (Maybe [Text])) -> DevEndpoint -> f DevEndpoint
devEndpoint_publicKeys = (DevEndpoint -> Maybe [Text])
-> (DevEndpoint -> Maybe [Text] -> DevEndpoint)
-> Lens DevEndpoint DevEndpoint (Maybe [Text]) (Maybe [Text])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DevEndpoint' {Maybe [Text]
publicKeys :: Maybe [Text]
$sel:publicKeys:DevEndpoint' :: DevEndpoint -> Maybe [Text]
publicKeys} -> Maybe [Text]
publicKeys) (\s :: DevEndpoint
s@DevEndpoint' {} Maybe [Text]
a -> DevEndpoint
s {$sel:publicKeys:DevEndpoint' :: Maybe [Text]
publicKeys = Maybe [Text]
a} :: DevEndpoint) ((Maybe [Text] -> f (Maybe [Text]))
 -> DevEndpoint -> f DevEndpoint)
-> ((Maybe [Text] -> f (Maybe [Text]))
    -> Maybe [Text] -> f (Maybe [Text]))
-> (Maybe [Text] -> f (Maybe [Text]))
-> DevEndpoint
-> f DevEndpoint
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [Text] [Text] [Text] [Text]
-> Iso (Maybe [Text]) (Maybe [Text]) (Maybe [Text]) (Maybe [Text])
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso [Text] [Text] [Text] [Text]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The ID of the virtual private cloud (VPC) used by this @DevEndpoint@.
devEndpoint_vpcId :: Lens.Lens' DevEndpoint (Prelude.Maybe Prelude.Text)
devEndpoint_vpcId :: (Maybe Text -> f (Maybe Text)) -> DevEndpoint -> f DevEndpoint
devEndpoint_vpcId = (DevEndpoint -> Maybe Text)
-> (DevEndpoint -> Maybe Text -> DevEndpoint)
-> Lens DevEndpoint DevEndpoint (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DevEndpoint' {Maybe Text
vpcId :: Maybe Text
$sel:vpcId:DevEndpoint' :: DevEndpoint -> Maybe Text
vpcId} -> Maybe Text
vpcId) (\s :: DevEndpoint
s@DevEndpoint' {} Maybe Text
a -> DevEndpoint
s {$sel:vpcId:DevEndpoint' :: Maybe Text
vpcId = Maybe Text
a} :: DevEndpoint)

-- | A map of arguments used to configure the @DevEndpoint@.
--
-- Valid arguments are:
--
-- -   @\"--enable-glue-datacatalog\": \"\"@
--
-- You can specify a version of Python support for development endpoints by
-- using the @Arguments@ parameter in the @CreateDevEndpoint@ or
-- @UpdateDevEndpoint@ APIs. If no arguments are provided, the version
-- defaults to Python 2.
devEndpoint_arguments :: Lens.Lens' DevEndpoint (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
devEndpoint_arguments :: (Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
-> DevEndpoint -> f DevEndpoint
devEndpoint_arguments = (DevEndpoint -> Maybe (HashMap Text Text))
-> (DevEndpoint -> Maybe (HashMap Text Text) -> DevEndpoint)
-> Lens
     DevEndpoint
     DevEndpoint
     (Maybe (HashMap Text Text))
     (Maybe (HashMap Text Text))
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DevEndpoint' {Maybe (HashMap Text Text)
arguments :: Maybe (HashMap Text Text)
$sel:arguments:DevEndpoint' :: DevEndpoint -> Maybe (HashMap Text Text)
arguments} -> Maybe (HashMap Text Text)
arguments) (\s :: DevEndpoint
s@DevEndpoint' {} Maybe (HashMap Text Text)
a -> DevEndpoint
s {$sel:arguments:DevEndpoint' :: Maybe (HashMap Text Text)
arguments = Maybe (HashMap Text Text)
a} :: DevEndpoint) ((Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
 -> DevEndpoint -> f DevEndpoint)
-> ((Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
    -> Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
-> (Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
-> DevEndpoint
-> f DevEndpoint
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  (HashMap Text Text)
  (HashMap Text Text)
  (HashMap Text Text)
  (HashMap Text Text)
-> Iso
     (Maybe (HashMap Text Text))
     (Maybe (HashMap Text Text))
     (Maybe (HashMap Text Text))
     (Maybe (HashMap Text Text))
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso
  (HashMap Text Text)
  (HashMap Text Text)
  (HashMap Text Text)
  (HashMap Text Text)
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | A private IP address to access the @DevEndpoint@ within a VPC if the
-- @DevEndpoint@ is created within one. The @PrivateAddress@ field is
-- present only when you create the @DevEndpoint@ within your VPC.
devEndpoint_privateAddress :: Lens.Lens' DevEndpoint (Prelude.Maybe Prelude.Text)
devEndpoint_privateAddress :: (Maybe Text -> f (Maybe Text)) -> DevEndpoint -> f DevEndpoint
devEndpoint_privateAddress = (DevEndpoint -> Maybe Text)
-> (DevEndpoint -> Maybe Text -> DevEndpoint)
-> Lens DevEndpoint DevEndpoint (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DevEndpoint' {Maybe Text
privateAddress :: Maybe Text
$sel:privateAddress:DevEndpoint' :: DevEndpoint -> Maybe Text
privateAddress} -> Maybe Text
privateAddress) (\s :: DevEndpoint
s@DevEndpoint' {} Maybe Text
a -> DevEndpoint
s {$sel:privateAddress:DevEndpoint' :: Maybe Text
privateAddress = Maybe Text
a} :: DevEndpoint)

-- | The type of predefined worker that is allocated to the development
-- endpoint. Accepts a value of Standard, G.1X, or G.2X.
--
-- -   For the @Standard@ worker type, each worker provides 4 vCPU, 16 GB
--     of memory and a 50GB disk, and 2 executors per worker.
--
-- -   For the @G.1X@ worker type, each worker maps to 1 DPU (4 vCPU, 16 GB
--     of memory, 64 GB disk), and provides 1 executor per worker. We
--     recommend this worker type for memory-intensive jobs.
--
-- -   For the @G.2X@ worker type, each worker maps to 2 DPU (8 vCPU, 32 GB
--     of memory, 128 GB disk), and provides 1 executor per worker. We
--     recommend this worker type for memory-intensive jobs.
--
-- Known issue: when a development endpoint is created with the @G.2X@
-- @WorkerType@ configuration, the Spark drivers for the development
-- endpoint will run on 4 vCPU, 16 GB of memory, and a 64 GB disk.
devEndpoint_workerType :: Lens.Lens' DevEndpoint (Prelude.Maybe WorkerType)
devEndpoint_workerType :: (Maybe WorkerType -> f (Maybe WorkerType))
-> DevEndpoint -> f DevEndpoint
devEndpoint_workerType = (DevEndpoint -> Maybe WorkerType)
-> (DevEndpoint -> Maybe WorkerType -> DevEndpoint)
-> Lens
     DevEndpoint DevEndpoint (Maybe WorkerType) (Maybe WorkerType)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DevEndpoint' {Maybe WorkerType
workerType :: Maybe WorkerType
$sel:workerType:DevEndpoint' :: DevEndpoint -> Maybe WorkerType
workerType} -> Maybe WorkerType
workerType) (\s :: DevEndpoint
s@DevEndpoint' {} Maybe WorkerType
a -> DevEndpoint
s {$sel:workerType:DevEndpoint' :: Maybe WorkerType
workerType = Maybe WorkerType
a} :: DevEndpoint)

-- | The name of the @SecurityConfiguration@ structure to be used with this
-- @DevEndpoint@.
devEndpoint_securityConfiguration :: Lens.Lens' DevEndpoint (Prelude.Maybe Prelude.Text)
devEndpoint_securityConfiguration :: (Maybe Text -> f (Maybe Text)) -> DevEndpoint -> f DevEndpoint
devEndpoint_securityConfiguration = (DevEndpoint -> Maybe Text)
-> (DevEndpoint -> Maybe Text -> DevEndpoint)
-> Lens DevEndpoint DevEndpoint (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DevEndpoint' {Maybe Text
securityConfiguration :: Maybe Text
$sel:securityConfiguration:DevEndpoint' :: DevEndpoint -> Maybe Text
securityConfiguration} -> Maybe Text
securityConfiguration) (\s :: DevEndpoint
s@DevEndpoint' {} Maybe Text
a -> DevEndpoint
s {$sel:securityConfiguration:DevEndpoint' :: Maybe Text
securityConfiguration = Maybe Text
a} :: DevEndpoint)

-- | The public key to be used by this @DevEndpoint@ for authentication. This
-- attribute is provided for backward compatibility because the recommended
-- attribute to use is public keys.
devEndpoint_publicKey :: Lens.Lens' DevEndpoint (Prelude.Maybe Prelude.Text)
devEndpoint_publicKey :: (Maybe Text -> f (Maybe Text)) -> DevEndpoint -> f DevEndpoint
devEndpoint_publicKey = (DevEndpoint -> Maybe Text)
-> (DevEndpoint -> Maybe Text -> DevEndpoint)
-> Lens DevEndpoint DevEndpoint (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DevEndpoint' {Maybe Text
publicKey :: Maybe Text
$sel:publicKey:DevEndpoint' :: DevEndpoint -> Maybe Text
publicKey} -> Maybe Text
publicKey) (\s :: DevEndpoint
s@DevEndpoint' {} Maybe Text
a -> DevEndpoint
s {$sel:publicKey:DevEndpoint' :: Maybe Text
publicKey = Maybe Text
a} :: DevEndpoint)

-- | The subnet ID for this @DevEndpoint@.
devEndpoint_subnetId :: Lens.Lens' DevEndpoint (Prelude.Maybe Prelude.Text)
devEndpoint_subnetId :: (Maybe Text -> f (Maybe Text)) -> DevEndpoint -> f DevEndpoint
devEndpoint_subnetId = (DevEndpoint -> Maybe Text)
-> (DevEndpoint -> Maybe Text -> DevEndpoint)
-> Lens DevEndpoint DevEndpoint (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DevEndpoint' {Maybe Text
subnetId :: Maybe Text
$sel:subnetId:DevEndpoint' :: DevEndpoint -> Maybe Text
subnetId} -> Maybe Text
subnetId) (\s :: DevEndpoint
s@DevEndpoint' {} Maybe Text
a -> DevEndpoint
s {$sel:subnetId:DevEndpoint' :: Maybe Text
subnetId = Maybe Text
a} :: DevEndpoint)

-- | Glue version determines the versions of Apache Spark and Python that
-- Glue supports. The Python version indicates the version supported for
-- running your ETL scripts on development endpoints.
--
-- For more information about the available Glue versions and corresponding
-- Spark and Python versions, see
-- <https://docs.aws.amazon.com/glue/latest/dg/add-job.html Glue version>
-- in the developer guide.
--
-- Development endpoints that are created without specifying a Glue version
-- default to Glue 0.9.
--
-- You can specify a version of Python support for development endpoints by
-- using the @Arguments@ parameter in the @CreateDevEndpoint@ or
-- @UpdateDevEndpoint@ APIs. If no arguments are provided, the version
-- defaults to Python 2.
devEndpoint_glueVersion :: Lens.Lens' DevEndpoint (Prelude.Maybe Prelude.Text)
devEndpoint_glueVersion :: (Maybe Text -> f (Maybe Text)) -> DevEndpoint -> f DevEndpoint
devEndpoint_glueVersion = (DevEndpoint -> Maybe Text)
-> (DevEndpoint -> Maybe Text -> DevEndpoint)
-> Lens DevEndpoint DevEndpoint (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DevEndpoint' {Maybe Text
glueVersion :: Maybe Text
$sel:glueVersion:DevEndpoint' :: DevEndpoint -> Maybe Text
glueVersion} -> Maybe Text
glueVersion) (\s :: DevEndpoint
s@DevEndpoint' {} Maybe Text
a -> DevEndpoint
s {$sel:glueVersion:DevEndpoint' :: Maybe Text
glueVersion = Maybe Text
a} :: DevEndpoint)

-- | The number of Glue Data Processing Units (DPUs) allocated to this
-- @DevEndpoint@.
devEndpoint_numberOfNodes :: Lens.Lens' DevEndpoint (Prelude.Maybe Prelude.Int)
devEndpoint_numberOfNodes :: (Maybe Int -> f (Maybe Int)) -> DevEndpoint -> f DevEndpoint
devEndpoint_numberOfNodes = (DevEndpoint -> Maybe Int)
-> (DevEndpoint -> Maybe Int -> DevEndpoint)
-> Lens DevEndpoint DevEndpoint (Maybe Int) (Maybe Int)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DevEndpoint' {Maybe Int
numberOfNodes :: Maybe Int
$sel:numberOfNodes:DevEndpoint' :: DevEndpoint -> Maybe Int
numberOfNodes} -> Maybe Int
numberOfNodes) (\s :: DevEndpoint
s@DevEndpoint' {} Maybe Int
a -> DevEndpoint
s {$sel:numberOfNodes:DevEndpoint' :: Maybe Int
numberOfNodes = Maybe Int
a} :: DevEndpoint)

-- | The public IP address used by this @DevEndpoint@. The @PublicAddress@
-- field is present only when you create a non-virtual private cloud (VPC)
-- @DevEndpoint@.
devEndpoint_publicAddress :: Lens.Lens' DevEndpoint (Prelude.Maybe Prelude.Text)
devEndpoint_publicAddress :: (Maybe Text -> f (Maybe Text)) -> DevEndpoint -> f DevEndpoint
devEndpoint_publicAddress = (DevEndpoint -> Maybe Text)
-> (DevEndpoint -> Maybe Text -> DevEndpoint)
-> Lens DevEndpoint DevEndpoint (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DevEndpoint' {Maybe Text
publicAddress :: Maybe Text
$sel:publicAddress:DevEndpoint' :: DevEndpoint -> Maybe Text
publicAddress} -> Maybe Text
publicAddress) (\s :: DevEndpoint
s@DevEndpoint' {} Maybe Text
a -> DevEndpoint
s {$sel:publicAddress:DevEndpoint' :: Maybe Text
publicAddress = Maybe Text
a} :: DevEndpoint)

-- | The AWS Availability Zone where this @DevEndpoint@ is located.
devEndpoint_availabilityZone :: Lens.Lens' DevEndpoint (Prelude.Maybe Prelude.Text)
devEndpoint_availabilityZone :: (Maybe Text -> f (Maybe Text)) -> DevEndpoint -> f DevEndpoint
devEndpoint_availabilityZone = (DevEndpoint -> Maybe Text)
-> (DevEndpoint -> Maybe Text -> DevEndpoint)
-> Lens DevEndpoint DevEndpoint (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DevEndpoint' {Maybe Text
availabilityZone :: Maybe Text
$sel:availabilityZone:DevEndpoint' :: DevEndpoint -> Maybe Text
availabilityZone} -> Maybe Text
availabilityZone) (\s :: DevEndpoint
s@DevEndpoint' {} Maybe Text
a -> DevEndpoint
s {$sel:availabilityZone:DevEndpoint' :: Maybe Text
availabilityZone = Maybe Text
a} :: DevEndpoint)

-- | The Apache Zeppelin port for the remote Apache Spark interpreter.
devEndpoint_zeppelinRemoteSparkInterpreterPort :: Lens.Lens' DevEndpoint (Prelude.Maybe Prelude.Int)
devEndpoint_zeppelinRemoteSparkInterpreterPort :: (Maybe Int -> f (Maybe Int)) -> DevEndpoint -> f DevEndpoint
devEndpoint_zeppelinRemoteSparkInterpreterPort = (DevEndpoint -> Maybe Int)
-> (DevEndpoint -> Maybe Int -> DevEndpoint)
-> Lens DevEndpoint DevEndpoint (Maybe Int) (Maybe Int)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DevEndpoint' {Maybe Int
zeppelinRemoteSparkInterpreterPort :: Maybe Int
$sel:zeppelinRemoteSparkInterpreterPort:DevEndpoint' :: DevEndpoint -> Maybe Int
zeppelinRemoteSparkInterpreterPort} -> Maybe Int
zeppelinRemoteSparkInterpreterPort) (\s :: DevEndpoint
s@DevEndpoint' {} Maybe Int
a -> DevEndpoint
s {$sel:zeppelinRemoteSparkInterpreterPort:DevEndpoint' :: Maybe Int
zeppelinRemoteSparkInterpreterPort = Maybe Int
a} :: DevEndpoint)

-- | The path to one or more Java @.jar@ files in an S3 bucket that should be
-- loaded in your @DevEndpoint@.
--
-- You can only use pure Java\/Scala libraries with a @DevEndpoint@.
devEndpoint_extraJarsS3Path :: Lens.Lens' DevEndpoint (Prelude.Maybe Prelude.Text)
devEndpoint_extraJarsS3Path :: (Maybe Text -> f (Maybe Text)) -> DevEndpoint -> f DevEndpoint
devEndpoint_extraJarsS3Path = (DevEndpoint -> Maybe Text)
-> (DevEndpoint -> Maybe Text -> DevEndpoint)
-> Lens DevEndpoint DevEndpoint (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DevEndpoint' {Maybe Text
extraJarsS3Path :: Maybe Text
$sel:extraJarsS3Path:DevEndpoint' :: DevEndpoint -> Maybe Text
extraJarsS3Path} -> Maybe Text
extraJarsS3Path) (\s :: DevEndpoint
s@DevEndpoint' {} Maybe Text
a -> DevEndpoint
s {$sel:extraJarsS3Path:DevEndpoint' :: Maybe Text
extraJarsS3Path = Maybe Text
a} :: DevEndpoint)

-- | The point in time at which this DevEndpoint was created.
devEndpoint_createdTimestamp :: Lens.Lens' DevEndpoint (Prelude.Maybe Prelude.UTCTime)
devEndpoint_createdTimestamp :: (Maybe UTCTime -> f (Maybe UTCTime))
-> DevEndpoint -> f DevEndpoint
devEndpoint_createdTimestamp = (DevEndpoint -> Maybe POSIX)
-> (DevEndpoint -> Maybe POSIX -> DevEndpoint)
-> Lens DevEndpoint DevEndpoint (Maybe POSIX) (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DevEndpoint' {Maybe POSIX
createdTimestamp :: Maybe POSIX
$sel:createdTimestamp:DevEndpoint' :: DevEndpoint -> Maybe POSIX
createdTimestamp} -> Maybe POSIX
createdTimestamp) (\s :: DevEndpoint
s@DevEndpoint' {} Maybe POSIX
a -> DevEndpoint
s {$sel:createdTimestamp:DevEndpoint' :: Maybe POSIX
createdTimestamp = Maybe POSIX
a} :: DevEndpoint) ((Maybe POSIX -> f (Maybe POSIX)) -> DevEndpoint -> f DevEndpoint)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> DevEndpoint
-> f DevEndpoint
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | The YARN endpoint address used by this @DevEndpoint@.
devEndpoint_yarnEndpointAddress :: Lens.Lens' DevEndpoint (Prelude.Maybe Prelude.Text)
devEndpoint_yarnEndpointAddress :: (Maybe Text -> f (Maybe Text)) -> DevEndpoint -> f DevEndpoint
devEndpoint_yarnEndpointAddress = (DevEndpoint -> Maybe Text)
-> (DevEndpoint -> Maybe Text -> DevEndpoint)
-> Lens DevEndpoint DevEndpoint (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DevEndpoint' {Maybe Text
yarnEndpointAddress :: Maybe Text
$sel:yarnEndpointAddress:DevEndpoint' :: DevEndpoint -> Maybe Text
yarnEndpointAddress} -> Maybe Text
yarnEndpointAddress) (\s :: DevEndpoint
s@DevEndpoint' {} Maybe Text
a -> DevEndpoint
s {$sel:yarnEndpointAddress:DevEndpoint' :: Maybe Text
yarnEndpointAddress = Maybe Text
a} :: DevEndpoint)

-- | The Amazon Resource Name (ARN) of the IAM role used in this
-- @DevEndpoint@.
devEndpoint_roleArn :: Lens.Lens' DevEndpoint (Prelude.Maybe Prelude.Text)
devEndpoint_roleArn :: (Maybe Text -> f (Maybe Text)) -> DevEndpoint -> f DevEndpoint
devEndpoint_roleArn = (DevEndpoint -> Maybe Text)
-> (DevEndpoint -> Maybe Text -> DevEndpoint)
-> Lens DevEndpoint DevEndpoint (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DevEndpoint' {Maybe Text
roleArn :: Maybe Text
$sel:roleArn:DevEndpoint' :: DevEndpoint -> Maybe Text
roleArn} -> Maybe Text
roleArn) (\s :: DevEndpoint
s@DevEndpoint' {} Maybe Text
a -> DevEndpoint
s {$sel:roleArn:DevEndpoint' :: Maybe Text
roleArn = Maybe Text
a} :: DevEndpoint)

instance Core.FromJSON DevEndpoint where
  parseJSON :: Value -> Parser DevEndpoint
parseJSON =
    String
-> (Object -> Parser DevEndpoint) -> Value -> Parser DevEndpoint
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"DevEndpoint"
      ( \Object
x ->
          Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Int
-> Maybe Text
-> Maybe Text
-> Maybe [Text]
-> Maybe POSIX
-> Maybe [Text]
-> Maybe Text
-> Maybe (HashMap Text Text)
-> Maybe Text
-> Maybe WorkerType
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Int
-> Maybe Text
-> Maybe Text
-> Maybe Int
-> Maybe Text
-> Maybe POSIX
-> Maybe Text
-> Maybe Text
-> DevEndpoint
DevEndpoint'
            (Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Int
 -> Maybe Text
 -> Maybe Text
 -> Maybe [Text]
 -> Maybe POSIX
 -> Maybe [Text]
 -> Maybe Text
 -> Maybe (HashMap Text Text)
 -> Maybe Text
 -> Maybe WorkerType
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Int
 -> Maybe Text
 -> Maybe Text
 -> Maybe Int
 -> Maybe Text
 -> Maybe POSIX
 -> Maybe Text
 -> Maybe Text
 -> DevEndpoint)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Text]
      -> Maybe POSIX
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe Text
      -> Maybe WorkerType
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> DevEndpoint)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Status")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Text]
   -> Maybe POSIX
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe Text
   -> Maybe WorkerType
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> DevEndpoint)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Text]
      -> Maybe POSIX
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe Text
      -> Maybe WorkerType
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> DevEndpoint)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"FailureReason")
            Parser
  (Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Text]
   -> Maybe POSIX
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe Text
   -> Maybe WorkerType
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> DevEndpoint)
-> Parser (Maybe Text)
-> Parser
     (Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Text]
      -> Maybe POSIX
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe Text
      -> Maybe WorkerType
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> DevEndpoint)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"EndpointName")
            Parser
  (Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Text]
   -> Maybe POSIX
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe Text
   -> Maybe WorkerType
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> DevEndpoint)
-> Parser (Maybe Int)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe [Text]
      -> Maybe POSIX
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe Text
      -> Maybe WorkerType
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> DevEndpoint)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"NumberOfWorkers")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe [Text]
   -> Maybe POSIX
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe Text
   -> Maybe WorkerType
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> DevEndpoint)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe [Text]
      -> Maybe POSIX
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe Text
      -> Maybe WorkerType
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> DevEndpoint)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ExtraPythonLibsS3Path")
            Parser
  (Maybe Text
   -> Maybe [Text]
   -> Maybe POSIX
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe Text
   -> Maybe WorkerType
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> DevEndpoint)
-> Parser (Maybe Text)
-> Parser
     (Maybe [Text]
      -> Maybe POSIX
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe Text
      -> Maybe WorkerType
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> DevEndpoint)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"LastUpdateStatus")
            Parser
  (Maybe [Text]
   -> Maybe POSIX
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe Text
   -> Maybe WorkerType
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> DevEndpoint)
-> Parser (Maybe [Text])
-> Parser
     (Maybe POSIX
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe Text
      -> Maybe WorkerType
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> DevEndpoint)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x Object -> Text -> Parser (Maybe (Maybe [Text]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"SecurityGroupIds"
                            Parser (Maybe (Maybe [Text]))
-> Maybe [Text] -> Parser (Maybe [Text])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [Text]
forall a. Monoid a => a
Prelude.mempty
                        )
            Parser
  (Maybe POSIX
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe Text
   -> Maybe WorkerType
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> DevEndpoint)
-> Parser (Maybe POSIX)
-> Parser
     (Maybe [Text]
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe Text
      -> Maybe WorkerType
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> DevEndpoint)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe POSIX)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"LastModifiedTimestamp")
            Parser
  (Maybe [Text]
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe Text
   -> Maybe WorkerType
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> DevEndpoint)
-> Parser (Maybe [Text])
-> Parser
     (Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe Text
      -> Maybe WorkerType
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> DevEndpoint)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe (Maybe [Text]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"PublicKeys" Parser (Maybe (Maybe [Text]))
-> Maybe [Text] -> Parser (Maybe [Text])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [Text]
forall a. Monoid a => a
Prelude.mempty)
            Parser
  (Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe Text
   -> Maybe WorkerType
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> DevEndpoint)
-> Parser (Maybe Text)
-> Parser
     (Maybe (HashMap Text Text)
      -> Maybe Text
      -> Maybe WorkerType
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> DevEndpoint)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"VpcId")
            Parser
  (Maybe (HashMap Text Text)
   -> Maybe Text
   -> Maybe WorkerType
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> DevEndpoint)
-> Parser (Maybe (HashMap Text Text))
-> Parser
     (Maybe Text
      -> Maybe WorkerType
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> DevEndpoint)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe (Maybe (HashMap Text Text)))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Arguments" Parser (Maybe (Maybe (HashMap Text Text)))
-> Maybe (HashMap Text Text) -> Parser (Maybe (HashMap Text Text))
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe (HashMap Text Text)
forall a. Monoid a => a
Prelude.mempty)
            Parser
  (Maybe Text
   -> Maybe WorkerType
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> DevEndpoint)
-> Parser (Maybe Text)
-> Parser
     (Maybe WorkerType
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> DevEndpoint)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"PrivateAddress")
            Parser
  (Maybe WorkerType
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> DevEndpoint)
-> Parser (Maybe WorkerType)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> DevEndpoint)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe WorkerType)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"WorkerType")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> DevEndpoint)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> DevEndpoint)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"SecurityConfiguration")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> DevEndpoint)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> DevEndpoint)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"PublicKey")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> DevEndpoint)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> DevEndpoint)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"SubnetId")
            Parser
  (Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> DevEndpoint)
-> Parser (Maybe Text)
-> Parser
     (Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> DevEndpoint)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"GlueVersion")
            Parser
  (Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> DevEndpoint)
-> Parser (Maybe Int)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> DevEndpoint)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"NumberOfNodes")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> DevEndpoint)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> DevEndpoint)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"PublicAddress")
            Parser
  (Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> DevEndpoint)
-> Parser (Maybe Text)
-> Parser
     (Maybe Int
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> DevEndpoint)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"AvailabilityZone")
            Parser
  (Maybe Int
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> DevEndpoint)
-> Parser (Maybe Int)
-> Parser
     (Maybe Text
      -> Maybe POSIX -> Maybe Text -> Maybe Text -> DevEndpoint)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ZeppelinRemoteSparkInterpreterPort")
            Parser
  (Maybe Text
   -> Maybe POSIX -> Maybe Text -> Maybe Text -> DevEndpoint)
-> Parser (Maybe Text)
-> Parser (Maybe POSIX -> Maybe Text -> Maybe Text -> DevEndpoint)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ExtraJarsS3Path")
            Parser (Maybe POSIX -> Maybe Text -> Maybe Text -> DevEndpoint)
-> Parser (Maybe POSIX)
-> Parser (Maybe Text -> Maybe Text -> DevEndpoint)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe POSIX)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"CreatedTimestamp")
            Parser (Maybe Text -> Maybe Text -> DevEndpoint)
-> Parser (Maybe Text) -> Parser (Maybe Text -> DevEndpoint)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"YarnEndpointAddress")
            Parser (Maybe Text -> DevEndpoint)
-> Parser (Maybe Text) -> Parser DevEndpoint
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"RoleArn")
      )

instance Prelude.Hashable DevEndpoint

instance Prelude.NFData DevEndpoint