{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DuplicateRecordFields #-} {-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE NoImplicitPrelude #-} {-# OPTIONS_GHC -fno-warn-unused-binds #-} {-# OPTIONS_GHC -fno-warn-unused-imports #-} {-# OPTIONS_GHC -fno-warn-unused-matches #-} -- Derived from AWS service descriptions, licensed under Apache 2.0. -- | -- Module : Amazonka.EC2.CreateNetworkInsightsPath -- Copyright : (c) 2013-2023 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- -- Creates a path to analyze for reachability. -- -- Reachability Analyzer enables you to analyze and debug network -- reachability between two resources in your virtual private cloud (VPC). -- For more information, see -- . module Amazonka.EC2.CreateNetworkInsightsPath ( -- * Creating a Request CreateNetworkInsightsPath (..), newCreateNetworkInsightsPath, -- * Request Lenses createNetworkInsightsPath_destinationIp, createNetworkInsightsPath_destinationPort, createNetworkInsightsPath_dryRun, createNetworkInsightsPath_sourceIp, createNetworkInsightsPath_tagSpecifications, createNetworkInsightsPath_source, createNetworkInsightsPath_destination, createNetworkInsightsPath_protocol, createNetworkInsightsPath_clientToken, -- * Destructuring the Response CreateNetworkInsightsPathResponse (..), newCreateNetworkInsightsPathResponse, -- * Response Lenses createNetworkInsightsPathResponse_networkInsightsPath, createNetworkInsightsPathResponse_httpStatus, ) where import qualified Amazonka.Core as Core import qualified Amazonka.Core.Lens.Internal as Lens import qualified Amazonka.Data as Data import Amazonka.EC2.Types import qualified Amazonka.Prelude as Prelude import qualified Amazonka.Request as Request import qualified Amazonka.Response as Response -- | /See:/ 'newCreateNetworkInsightsPath' smart constructor. data CreateNetworkInsightsPath = CreateNetworkInsightsPath' { -- | The IP address of the Amazon Web Services resource that is the -- destination of the path. destinationIp :: Prelude.Maybe Prelude.Text, -- | The destination port. destinationPort :: Prelude.Maybe Prelude.Natural, -- | Checks whether you have the required permissions for the action, without -- actually making the request, and provides an error response. If you have -- the required permissions, the error response is @DryRunOperation@. -- Otherwise, it is @UnauthorizedOperation@. dryRun :: Prelude.Maybe Prelude.Bool, -- | The IP address of the Amazon Web Services resource that is the source of -- the path. sourceIp :: Prelude.Maybe Prelude.Text, -- | The tags to add to the path. tagSpecifications :: Prelude.Maybe [TagSpecification], -- | The Amazon Web Services resource that is the source of the path. source :: Prelude.Text, -- | The Amazon Web Services resource that is the destination of the path. destination :: Prelude.Text, -- | The protocol. protocol :: Protocol, -- | Unique, case-sensitive identifier that you provide to ensure the -- idempotency of the request. For more information, see -- . clientToken :: Prelude.Text } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'CreateNetworkInsightsPath' with all optional fields omitted. -- -- Use or to modify other optional fields. -- -- The following record fields are available, with the corresponding lenses provided -- for backwards compatibility: -- -- 'destinationIp', 'createNetworkInsightsPath_destinationIp' - The IP address of the Amazon Web Services resource that is the -- destination of the path. -- -- 'destinationPort', 'createNetworkInsightsPath_destinationPort' - The destination port. -- -- 'dryRun', 'createNetworkInsightsPath_dryRun' - Checks whether you have the required permissions for the action, without -- actually making the request, and provides an error response. If you have -- the required permissions, the error response is @DryRunOperation@. -- Otherwise, it is @UnauthorizedOperation@. -- -- 'sourceIp', 'createNetworkInsightsPath_sourceIp' - The IP address of the Amazon Web Services resource that is the source of -- the path. -- -- 'tagSpecifications', 'createNetworkInsightsPath_tagSpecifications' - The tags to add to the path. -- -- 'source', 'createNetworkInsightsPath_source' - The Amazon Web Services resource that is the source of the path. -- -- 'destination', 'createNetworkInsightsPath_destination' - The Amazon Web Services resource that is the destination of the path. -- -- 'protocol', 'createNetworkInsightsPath_protocol' - The protocol. -- -- 'clientToken', 'createNetworkInsightsPath_clientToken' - Unique, case-sensitive identifier that you provide to ensure the -- idempotency of the request. For more information, see -- . newCreateNetworkInsightsPath :: -- | 'source' Prelude.Text -> -- | 'destination' Prelude.Text -> -- | 'protocol' Protocol -> -- | 'clientToken' Prelude.Text -> CreateNetworkInsightsPath newCreateNetworkInsightsPath pSource_ pDestination_ pProtocol_ pClientToken_ = CreateNetworkInsightsPath' { destinationIp = Prelude.Nothing, destinationPort = Prelude.Nothing, dryRun = Prelude.Nothing, sourceIp = Prelude.Nothing, tagSpecifications = Prelude.Nothing, source = pSource_, destination = pDestination_, protocol = pProtocol_, clientToken = pClientToken_ } -- | The IP address of the Amazon Web Services resource that is the -- destination of the path. createNetworkInsightsPath_destinationIp :: Lens.Lens' CreateNetworkInsightsPath (Prelude.Maybe Prelude.Text) createNetworkInsightsPath_destinationIp = Lens.lens (\CreateNetworkInsightsPath' {destinationIp} -> destinationIp) (\s@CreateNetworkInsightsPath' {} a -> s {destinationIp = a} :: CreateNetworkInsightsPath) -- | The destination port. createNetworkInsightsPath_destinationPort :: Lens.Lens' CreateNetworkInsightsPath (Prelude.Maybe Prelude.Natural) createNetworkInsightsPath_destinationPort = Lens.lens (\CreateNetworkInsightsPath' {destinationPort} -> destinationPort) (\s@CreateNetworkInsightsPath' {} a -> s {destinationPort = a} :: CreateNetworkInsightsPath) -- | Checks whether you have the required permissions for the action, without -- actually making the request, and provides an error response. If you have -- the required permissions, the error response is @DryRunOperation@. -- Otherwise, it is @UnauthorizedOperation@. createNetworkInsightsPath_dryRun :: Lens.Lens' CreateNetworkInsightsPath (Prelude.Maybe Prelude.Bool) createNetworkInsightsPath_dryRun = Lens.lens (\CreateNetworkInsightsPath' {dryRun} -> dryRun) (\s@CreateNetworkInsightsPath' {} a -> s {dryRun = a} :: CreateNetworkInsightsPath) -- | The IP address of the Amazon Web Services resource that is the source of -- the path. createNetworkInsightsPath_sourceIp :: Lens.Lens' CreateNetworkInsightsPath (Prelude.Maybe Prelude.Text) createNetworkInsightsPath_sourceIp = Lens.lens (\CreateNetworkInsightsPath' {sourceIp} -> sourceIp) (\s@CreateNetworkInsightsPath' {} a -> s {sourceIp = a} :: CreateNetworkInsightsPath) -- | The tags to add to the path. createNetworkInsightsPath_tagSpecifications :: Lens.Lens' CreateNetworkInsightsPath (Prelude.Maybe [TagSpecification]) createNetworkInsightsPath_tagSpecifications = Lens.lens (\CreateNetworkInsightsPath' {tagSpecifications} -> tagSpecifications) (\s@CreateNetworkInsightsPath' {} a -> s {tagSpecifications = a} :: CreateNetworkInsightsPath) Prelude.. Lens.mapping Lens.coerced -- | The Amazon Web Services resource that is the source of the path. createNetworkInsightsPath_source :: Lens.Lens' CreateNetworkInsightsPath Prelude.Text createNetworkInsightsPath_source = Lens.lens (\CreateNetworkInsightsPath' {source} -> source) (\s@CreateNetworkInsightsPath' {} a -> s {source = a} :: CreateNetworkInsightsPath) -- | The Amazon Web Services resource that is the destination of the path. createNetworkInsightsPath_destination :: Lens.Lens' CreateNetworkInsightsPath Prelude.Text createNetworkInsightsPath_destination = Lens.lens (\CreateNetworkInsightsPath' {destination} -> destination) (\s@CreateNetworkInsightsPath' {} a -> s {destination = a} :: CreateNetworkInsightsPath) -- | The protocol. createNetworkInsightsPath_protocol :: Lens.Lens' CreateNetworkInsightsPath Protocol createNetworkInsightsPath_protocol = Lens.lens (\CreateNetworkInsightsPath' {protocol} -> protocol) (\s@CreateNetworkInsightsPath' {} a -> s {protocol = a} :: CreateNetworkInsightsPath) -- | Unique, case-sensitive identifier that you provide to ensure the -- idempotency of the request. For more information, see -- . createNetworkInsightsPath_clientToken :: Lens.Lens' CreateNetworkInsightsPath Prelude.Text createNetworkInsightsPath_clientToken = Lens.lens (\CreateNetworkInsightsPath' {clientToken} -> clientToken) (\s@CreateNetworkInsightsPath' {} a -> s {clientToken = a} :: CreateNetworkInsightsPath) instance Core.AWSRequest CreateNetworkInsightsPath where type AWSResponse CreateNetworkInsightsPath = CreateNetworkInsightsPathResponse request overrides = Request.postQuery (overrides defaultService) response = Response.receiveXML ( \s h x -> CreateNetworkInsightsPathResponse' Prelude.<$> (x Data..@? "networkInsightsPath") Prelude.<*> (Prelude.pure (Prelude.fromEnum s)) ) instance Prelude.Hashable CreateNetworkInsightsPath where hashWithSalt _salt CreateNetworkInsightsPath' {..} = _salt `Prelude.hashWithSalt` destinationIp `Prelude.hashWithSalt` destinationPort `Prelude.hashWithSalt` dryRun `Prelude.hashWithSalt` sourceIp `Prelude.hashWithSalt` tagSpecifications `Prelude.hashWithSalt` source `Prelude.hashWithSalt` destination `Prelude.hashWithSalt` protocol `Prelude.hashWithSalt` clientToken instance Prelude.NFData CreateNetworkInsightsPath where rnf CreateNetworkInsightsPath' {..} = Prelude.rnf destinationIp `Prelude.seq` Prelude.rnf destinationPort `Prelude.seq` Prelude.rnf dryRun `Prelude.seq` Prelude.rnf sourceIp `Prelude.seq` Prelude.rnf tagSpecifications `Prelude.seq` Prelude.rnf source `Prelude.seq` Prelude.rnf destination `Prelude.seq` Prelude.rnf protocol `Prelude.seq` Prelude.rnf clientToken instance Data.ToHeaders CreateNetworkInsightsPath where toHeaders = Prelude.const Prelude.mempty instance Data.ToPath CreateNetworkInsightsPath where toPath = Prelude.const "/" instance Data.ToQuery CreateNetworkInsightsPath where toQuery CreateNetworkInsightsPath' {..} = Prelude.mconcat [ "Action" Data.=: ("CreateNetworkInsightsPath" :: Prelude.ByteString), "Version" Data.=: ("2016-11-15" :: Prelude.ByteString), "DestinationIp" Data.=: destinationIp, "DestinationPort" Data.=: destinationPort, "DryRun" Data.=: dryRun, "SourceIp" Data.=: sourceIp, Data.toQuery ( Data.toQueryList "TagSpecification" Prelude.<$> tagSpecifications ), "Source" Data.=: source, "Destination" Data.=: destination, "Protocol" Data.=: protocol, "ClientToken" Data.=: clientToken ] -- | /See:/ 'newCreateNetworkInsightsPathResponse' smart constructor. data CreateNetworkInsightsPathResponse = CreateNetworkInsightsPathResponse' { -- | Information about the path. networkInsightsPath :: Prelude.Maybe NetworkInsightsPath, -- | The response's http status code. httpStatus :: Prelude.Int } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'CreateNetworkInsightsPathResponse' with all optional fields omitted. -- -- Use or to modify other optional fields. -- -- The following record fields are available, with the corresponding lenses provided -- for backwards compatibility: -- -- 'networkInsightsPath', 'createNetworkInsightsPathResponse_networkInsightsPath' - Information about the path. -- -- 'httpStatus', 'createNetworkInsightsPathResponse_httpStatus' - The response's http status code. newCreateNetworkInsightsPathResponse :: -- | 'httpStatus' Prelude.Int -> CreateNetworkInsightsPathResponse newCreateNetworkInsightsPathResponse pHttpStatus_ = CreateNetworkInsightsPathResponse' { networkInsightsPath = Prelude.Nothing, httpStatus = pHttpStatus_ } -- | Information about the path. createNetworkInsightsPathResponse_networkInsightsPath :: Lens.Lens' CreateNetworkInsightsPathResponse (Prelude.Maybe NetworkInsightsPath) createNetworkInsightsPathResponse_networkInsightsPath = Lens.lens (\CreateNetworkInsightsPathResponse' {networkInsightsPath} -> networkInsightsPath) (\s@CreateNetworkInsightsPathResponse' {} a -> s {networkInsightsPath = a} :: CreateNetworkInsightsPathResponse) -- | The response's http status code. createNetworkInsightsPathResponse_httpStatus :: Lens.Lens' CreateNetworkInsightsPathResponse Prelude.Int createNetworkInsightsPathResponse_httpStatus = Lens.lens (\CreateNetworkInsightsPathResponse' {httpStatus} -> httpStatus) (\s@CreateNetworkInsightsPathResponse' {} a -> s {httpStatus = a} :: CreateNetworkInsightsPathResponse) instance Prelude.NFData CreateNetworkInsightsPathResponse where rnf CreateNetworkInsightsPathResponse' {..} = Prelude.rnf networkInsightsPath `Prelude.seq` Prelude.rnf httpStatus