{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE TypeFamilies #-} {-# OPTIONS_GHC -fno-warn-unused-imports #-} {-# OPTIONS_GHC -fno-warn-unused-binds #-} {-# OPTIONS_GHC -fno-warn-unused-matches #-} -- Derived from AWS service descriptions, licensed under Apache 2.0. -- | -- Module : Network.AWS.DMS.CreateEndpoint -- Copyright : (c) 2013-2016 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- -- Creates an endpoint using the provided settings. -- -- module Network.AWS.DMS.CreateEndpoint ( -- * Creating a Request createEndpoint , CreateEndpoint -- * Request Lenses , ceCertificateARN , ceExtraConnectionAttributes , ceKMSKeyId , ceSSLMode , ceDatabaseName , ceTags , ceEndpointIdentifier , ceEndpointType , ceEngineName , ceUsername , cePassword , ceServerName , cePort -- * Destructuring the Response , createEndpointResponse , CreateEndpointResponse -- * Response Lenses , cersEndpoint , cersResponseStatus ) where import Network.AWS.DMS.Types import Network.AWS.DMS.Types.Product import Network.AWS.Lens import Network.AWS.Prelude import Network.AWS.Request import Network.AWS.Response -- | -- -- -- -- /See:/ 'createEndpoint' smart constructor. data CreateEndpoint = CreateEndpoint' { _ceCertificateARN :: !(Maybe Text) , _ceExtraConnectionAttributes :: !(Maybe Text) , _ceKMSKeyId :: !(Maybe Text) , _ceSSLMode :: !(Maybe DmsSSLModeValue) , _ceDatabaseName :: !(Maybe Text) , _ceTags :: !(Maybe [Tag]) , _ceEndpointIdentifier :: !Text , _ceEndpointType :: !ReplicationEndpointTypeValue , _ceEngineName :: !Text , _ceUsername :: !Text , _cePassword :: !(Sensitive Text) , _ceServerName :: !Text , _cePort :: !Int } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'CreateEndpoint' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'ceCertificateARN' - The Amazon Resource Number (ARN) for the certificate. -- -- * 'ceExtraConnectionAttributes' - Additional attributes associated with the connection. -- -- * 'ceKMSKeyId' - The KMS key identifier that will be used to encrypt the connection parameters. If you do not specify a value for the KmsKeyId parameter, then AWS DMS will use your default encryption key. AWS KMS creates the default encryption key for your AWS account. Your AWS account has a different default encryption key for each AWS region. -- -- * 'ceSSLMode' - The SSL mode to use for the SSL connection. SSL mode can be one of four values: none, require, verify-ca, verify-full. The default value is none. -- -- * 'ceDatabaseName' - The name of the endpoint database. -- -- * 'ceTags' - Tags to be added to the endpoint. -- -- * 'ceEndpointIdentifier' - The database endpoint identifier. Identifiers must begin with a letter; must contain only ASCII letters, digits, and hyphens; and must not end with a hyphen or contain two consecutive hyphens. -- -- * 'ceEndpointType' - The type of endpoint. -- -- * 'ceEngineName' - The type of engine for the endpoint. Valid values include MYSQL, ORACLE, POSTGRES, MARIADB, AURORA, REDSHIFT, and SQLSERVER. -- -- * 'ceUsername' - The user name to be used to login to the endpoint database. -- -- * 'cePassword' - The password to be used to login to the endpoint database. -- -- * 'ceServerName' - The name of the server where the endpoint database resides. -- -- * 'cePort' - The port used by the endpoint database. createEndpoint :: Text -- ^ 'ceEndpointIdentifier' -> ReplicationEndpointTypeValue -- ^ 'ceEndpointType' -> Text -- ^ 'ceEngineName' -> Text -- ^ 'ceUsername' -> Text -- ^ 'cePassword' -> Text -- ^ 'ceServerName' -> Int -- ^ 'cePort' -> CreateEndpoint createEndpoint pEndpointIdentifier_ pEndpointType_ pEngineName_ pUsername_ pPassword_ pServerName_ pPort_ = CreateEndpoint' { _ceCertificateARN = Nothing , _ceExtraConnectionAttributes = Nothing , _ceKMSKeyId = Nothing , _ceSSLMode = Nothing , _ceDatabaseName = Nothing , _ceTags = Nothing , _ceEndpointIdentifier = pEndpointIdentifier_ , _ceEndpointType = pEndpointType_ , _ceEngineName = pEngineName_ , _ceUsername = pUsername_ , _cePassword = _Sensitive # pPassword_ , _ceServerName = pServerName_ , _cePort = pPort_ } -- | The Amazon Resource Number (ARN) for the certificate. ceCertificateARN :: Lens' CreateEndpoint (Maybe Text) ceCertificateARN = lens _ceCertificateARN (\ s a -> s{_ceCertificateARN = a}); -- | Additional attributes associated with the connection. ceExtraConnectionAttributes :: Lens' CreateEndpoint (Maybe Text) ceExtraConnectionAttributes = lens _ceExtraConnectionAttributes (\ s a -> s{_ceExtraConnectionAttributes = a}); -- | The KMS key identifier that will be used to encrypt the connection parameters. If you do not specify a value for the KmsKeyId parameter, then AWS DMS will use your default encryption key. AWS KMS creates the default encryption key for your AWS account. Your AWS account has a different default encryption key for each AWS region. ceKMSKeyId :: Lens' CreateEndpoint (Maybe Text) ceKMSKeyId = lens _ceKMSKeyId (\ s a -> s{_ceKMSKeyId = a}); -- | The SSL mode to use for the SSL connection. SSL mode can be one of four values: none, require, verify-ca, verify-full. The default value is none. ceSSLMode :: Lens' CreateEndpoint (Maybe DmsSSLModeValue) ceSSLMode = lens _ceSSLMode (\ s a -> s{_ceSSLMode = a}); -- | The name of the endpoint database. ceDatabaseName :: Lens' CreateEndpoint (Maybe Text) ceDatabaseName = lens _ceDatabaseName (\ s a -> s{_ceDatabaseName = a}); -- | Tags to be added to the endpoint. ceTags :: Lens' CreateEndpoint [Tag] ceTags = lens _ceTags (\ s a -> s{_ceTags = a}) . _Default . _Coerce; -- | The database endpoint identifier. Identifiers must begin with a letter; must contain only ASCII letters, digits, and hyphens; and must not end with a hyphen or contain two consecutive hyphens. ceEndpointIdentifier :: Lens' CreateEndpoint Text ceEndpointIdentifier = lens _ceEndpointIdentifier (\ s a -> s{_ceEndpointIdentifier = a}); -- | The type of endpoint. ceEndpointType :: Lens' CreateEndpoint ReplicationEndpointTypeValue ceEndpointType = lens _ceEndpointType (\ s a -> s{_ceEndpointType = a}); -- | The type of engine for the endpoint. Valid values include MYSQL, ORACLE, POSTGRES, MARIADB, AURORA, REDSHIFT, and SQLSERVER. ceEngineName :: Lens' CreateEndpoint Text ceEngineName = lens _ceEngineName (\ s a -> s{_ceEngineName = a}); -- | The user name to be used to login to the endpoint database. ceUsername :: Lens' CreateEndpoint Text ceUsername = lens _ceUsername (\ s a -> s{_ceUsername = a}); -- | The password to be used to login to the endpoint database. cePassword :: Lens' CreateEndpoint Text cePassword = lens _cePassword (\ s a -> s{_cePassword = a}) . _Sensitive; -- | The name of the server where the endpoint database resides. ceServerName :: Lens' CreateEndpoint Text ceServerName = lens _ceServerName (\ s a -> s{_ceServerName = a}); -- | The port used by the endpoint database. cePort :: Lens' CreateEndpoint Int cePort = lens _cePort (\ s a -> s{_cePort = a}); instance AWSRequest CreateEndpoint where type Rs CreateEndpoint = CreateEndpointResponse request = postJSON dms response = receiveJSON (\ s h x -> CreateEndpointResponse' <$> (x .?> "Endpoint") <*> (pure (fromEnum s))) instance Hashable CreateEndpoint instance NFData CreateEndpoint instance ToHeaders CreateEndpoint where toHeaders = const (mconcat ["X-Amz-Target" =# ("AmazonDMSv20160101.CreateEndpoint" :: ByteString), "Content-Type" =# ("application/x-amz-json-1.1" :: ByteString)]) instance ToJSON CreateEndpoint where toJSON CreateEndpoint'{..} = object (catMaybes [("CertificateArn" .=) <$> _ceCertificateARN, ("ExtraConnectionAttributes" .=) <$> _ceExtraConnectionAttributes, ("KmsKeyId" .=) <$> _ceKMSKeyId, ("SslMode" .=) <$> _ceSSLMode, ("DatabaseName" .=) <$> _ceDatabaseName, ("Tags" .=) <$> _ceTags, Just ("EndpointIdentifier" .= _ceEndpointIdentifier), Just ("EndpointType" .= _ceEndpointType), Just ("EngineName" .= _ceEngineName), Just ("Username" .= _ceUsername), Just ("Password" .= _cePassword), Just ("ServerName" .= _ceServerName), Just ("Port" .= _cePort)]) instance ToPath CreateEndpoint where toPath = const "/" instance ToQuery CreateEndpoint where toQuery = const mempty -- | -- -- -- -- /See:/ 'createEndpointResponse' smart constructor. data CreateEndpointResponse = CreateEndpointResponse' { _cersEndpoint :: !(Maybe Endpoint) , _cersResponseStatus :: !Int } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'CreateEndpointResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'cersEndpoint' - The endpoint that was created. -- -- * 'cersResponseStatus' - -- | The response status code. createEndpointResponse :: Int -- ^ 'cersResponseStatus' -> CreateEndpointResponse createEndpointResponse pResponseStatus_ = CreateEndpointResponse' { _cersEndpoint = Nothing , _cersResponseStatus = pResponseStatus_ } -- | The endpoint that was created. cersEndpoint :: Lens' CreateEndpointResponse (Maybe Endpoint) cersEndpoint = lens _cersEndpoint (\ s a -> s{_cersEndpoint = a}); -- | -- | The response status code. cersResponseStatus :: Lens' CreateEndpointResponse Int cersResponseStatus = lens _cersResponseStatus (\ s a -> s{_cersResponseStatus = a}); instance NFData CreateEndpointResponse