{-# 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.Route53RecoveryReadiness.Types.DNSTargetResource -- Copyright : (c) 2013-2023 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) module Amazonka.Route53RecoveryReadiness.Types.DNSTargetResource where import qualified Amazonka.Core as Core import qualified Amazonka.Core.Lens.Internal as Lens import qualified Amazonka.Data as Data import qualified Amazonka.Prelude as Prelude import Amazonka.Route53RecoveryReadiness.Types.TargetResource -- | A component for DNS\/routing control readiness checks and architecture -- checks. -- -- /See:/ 'newDNSTargetResource' smart constructor. data DNSTargetResource = DNSTargetResource' { -- | The domain name that acts as an ingress point to a portion of the -- customer application. domainName :: Prelude.Maybe Prelude.Text, -- | The hosted zone Amazon Resource Name (ARN) that contains the DNS record -- with the provided name of the target resource. hostedZoneArn :: Prelude.Maybe Prelude.Text, -- | The Route 53 record set ID that uniquely identifies a DNS record, given -- a name and a type. recordSetId :: Prelude.Maybe Prelude.Text, -- | The type of DNS record of the target resource. recordType :: Prelude.Maybe Prelude.Text, -- | The target resource of the DNS target resource. targetResource :: Prelude.Maybe TargetResource } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'DNSTargetResource' 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: -- -- 'domainName', 'dNSTargetResource_domainName' - The domain name that acts as an ingress point to a portion of the -- customer application. -- -- 'hostedZoneArn', 'dNSTargetResource_hostedZoneArn' - The hosted zone Amazon Resource Name (ARN) that contains the DNS record -- with the provided name of the target resource. -- -- 'recordSetId', 'dNSTargetResource_recordSetId' - The Route 53 record set ID that uniquely identifies a DNS record, given -- a name and a type. -- -- 'recordType', 'dNSTargetResource_recordType' - The type of DNS record of the target resource. -- -- 'targetResource', 'dNSTargetResource_targetResource' - The target resource of the DNS target resource. newDNSTargetResource :: DNSTargetResource newDNSTargetResource = DNSTargetResource' { domainName = Prelude.Nothing, hostedZoneArn = Prelude.Nothing, recordSetId = Prelude.Nothing, recordType = Prelude.Nothing, targetResource = Prelude.Nothing } -- | The domain name that acts as an ingress point to a portion of the -- customer application. dNSTargetResource_domainName :: Lens.Lens' DNSTargetResource (Prelude.Maybe Prelude.Text) dNSTargetResource_domainName = Lens.lens (\DNSTargetResource' {domainName} -> domainName) (\s@DNSTargetResource' {} a -> s {domainName = a} :: DNSTargetResource) -- | The hosted zone Amazon Resource Name (ARN) that contains the DNS record -- with the provided name of the target resource. dNSTargetResource_hostedZoneArn :: Lens.Lens' DNSTargetResource (Prelude.Maybe Prelude.Text) dNSTargetResource_hostedZoneArn = Lens.lens (\DNSTargetResource' {hostedZoneArn} -> hostedZoneArn) (\s@DNSTargetResource' {} a -> s {hostedZoneArn = a} :: DNSTargetResource) -- | The Route 53 record set ID that uniquely identifies a DNS record, given -- a name and a type. dNSTargetResource_recordSetId :: Lens.Lens' DNSTargetResource (Prelude.Maybe Prelude.Text) dNSTargetResource_recordSetId = Lens.lens (\DNSTargetResource' {recordSetId} -> recordSetId) (\s@DNSTargetResource' {} a -> s {recordSetId = a} :: DNSTargetResource) -- | The type of DNS record of the target resource. dNSTargetResource_recordType :: Lens.Lens' DNSTargetResource (Prelude.Maybe Prelude.Text) dNSTargetResource_recordType = Lens.lens (\DNSTargetResource' {recordType} -> recordType) (\s@DNSTargetResource' {} a -> s {recordType = a} :: DNSTargetResource) -- | The target resource of the DNS target resource. dNSTargetResource_targetResource :: Lens.Lens' DNSTargetResource (Prelude.Maybe TargetResource) dNSTargetResource_targetResource = Lens.lens (\DNSTargetResource' {targetResource} -> targetResource) (\s@DNSTargetResource' {} a -> s {targetResource = a} :: DNSTargetResource) instance Data.FromJSON DNSTargetResource where parseJSON = Data.withObject "DNSTargetResource" ( \x -> DNSTargetResource' Prelude.<$> (x Data..:? "domainName") Prelude.<*> (x Data..:? "hostedZoneArn") Prelude.<*> (x Data..:? "recordSetId") Prelude.<*> (x Data..:? "recordType") Prelude.<*> (x Data..:? "targetResource") ) instance Prelude.Hashable DNSTargetResource where hashWithSalt _salt DNSTargetResource' {..} = _salt `Prelude.hashWithSalt` domainName `Prelude.hashWithSalt` hostedZoneArn `Prelude.hashWithSalt` recordSetId `Prelude.hashWithSalt` recordType `Prelude.hashWithSalt` targetResource instance Prelude.NFData DNSTargetResource where rnf DNSTargetResource' {..} = Prelude.rnf domainName `Prelude.seq` Prelude.rnf hostedZoneArn `Prelude.seq` Prelude.rnf recordSetId `Prelude.seq` Prelude.rnf recordType `Prelude.seq` Prelude.rnf targetResource instance Data.ToJSON DNSTargetResource where toJSON DNSTargetResource' {..} = Data.object ( Prelude.catMaybes [ ("domainName" Data..=) Prelude.<$> domainName, ("hostedZoneArn" Data..=) Prelude.<$> hostedZoneArn, ("recordSetId" Data..=) Prelude.<$> recordSetId, ("recordType" Data..=) Prelude.<$> recordType, ("targetResource" Data..=) Prelude.<$> targetResource ] )