import * as pulumi from "@pulumi/pulumi";
import * as inputs from "./types/input";
import * as outputs from "./types/output";
/**
* Use this resource to manage Directional (DIR) pool records in UltraDNS.
*
* ## Example Usage
* ### Create DIR pool record of type A (1)
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as ultradns from "@pulumi/ultradns";
*
* const dirPool = new ultradns.DirPool("a", {
* conflictResolve: "IP",
* ignoreEcs: true,
* noResponse: {
* geoCodes: ["AG"],
* geoGroupName: "geo_response_group",
* ips: [{
* address: "2.2.2.2",
* }],
* ipGroupName: "ip_response_group",
* },
* ownerName: "a",
* rdataInfos: [
* {
* allNonConfigured: true,
* rdata: "192.168.1.5",
* ttl: 800,
* },
* {
* geoCodes: [
* "NAM",
* "EUR",
* ],
* geoGroupName: "geo_group",
* ips: [
* {
* address: "200.1.1.1",
* },
* {
* end: "200.1.1.5",
* start: "200.1.1.2",
* },
* {
* cidr: "200.20.20.0/24",
* },
* ],
* ipGroupName: "ip_group",
* rdata: "192.168.1.2",
* },
* ],
* recordType: "A",
* zoneName: "example.com.",
* });
* ```
* ### Create DIR pool record of type PTR (12)
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as ultradns from "@pulumi/ultradns";
*
* const ptr = new ultradns.DirPool("ptr", {
* noResponse: {
* allNonConfigured: true,
* },
* ownerName: "1",
* rdataInfos: [{
* geoCodes: [
* "NAM",
* "EUR",
* ],
* geoGroupName: "geo_group",
* rdata: "ns1.example.com.",
* }],
* recordType: "PTR",
* zoneName: "example.com.",
* });
* ```
* ### Create DIR pool record of type MX (15)
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as ultradns from "@pulumi/ultradns";
*
* const mx = new ultradns.DirPool("mx", {
* noResponse: {
* allNonConfigured: true,
* },
* ownerName: "mx",
* rdataInfos: [{
* geoCodes: [
* "NAM",
* "EUR",
* ],
* geoGroupName: "geo_group",
* rdata: "2 example.com.",
* }],
* recordType: "MX",
* zoneName: "example.com.",
* });
* ```
* ### Create DIR pool record of type TXT (16)
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as ultradns from "@pulumi/ultradns";
*
* const txt = new ultradns.DirPool("txt", {
* noResponse: {
* allNonConfigured: true,
* },
* ownerName: "txt.example.com.",
* rdataInfos: [{
* geoCodes: [
* "NAM",
* "EUR",
* ],
* geoGroupName: "geo_group",
* rdata: "text data",
* }],
* recordType: "TXT",
* zoneName: "example.com.",
* });
* ```
* ### Create DIR pool record of type AAAA (28)
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as ultradns from "@pulumi/ultradns";
*
* const aaaa = new ultradns.DirPool("aaaa", {
* conflictResolve: "IP",
* ignoreEcs: true,
* noResponse: {
* geoCodes: ["AI"],
* geoGroupName: "geo_response_group",
* ips: [{
* address: "aaaa:bbbb:cccc:dddd:eeee:ffff:3333:5555",
* }],
* ipGroupName: "ip_response_group",
* },
* ownerName: "aaaa",
* poolDescription: "DIR Pool Resource of type AAAA",
* rdataInfos: [{
* geoCodes: ["EUR"],
* geoGroupName: "geo_group",
* ips: [{
* end: "aaaa:bbbb:cccc:dddd:eeee:ffff:1111:6666",
* start: "aaaa:bbbb:cccc:dddd:eeee:ffff:1111:4444",
* }],
* ipGroupName: "ip_group",
* rdata: "aaaa:bbbb:cccc:dddd:eeee:ffff:1111:3333",
* }],
* recordType: "AAAA",
* zoneName: "example.com.",
* });
* ```
* ### Create DIR pool record of type SRV (33)
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as ultradns from "@pulumi/ultradns";
*
* const srv = new ultradns.DirPool("srv", {
* noResponse: {
* allNonConfigured: true,
* },
* ownerName: "srv",
* rdataInfos: [{
* geoCodes: [
* "NAM",
* "EUR",
* ],
* geoGroupName: "geo_group",
* rdata: "5 6 7 example.com.",
* }],
* recordType: "SRV",
* zoneName: "example.com.",
* });
* ```
* ## Valid GEO Codes:
*
* | Code | Meaning | Equivalent ISO codes |
* | :--- | :----: | :--- |
* |_________________________|__________________________________________________|__________________________________________________|
* | `A1` | Anonymous Proxy | None |
* |_________________________|__________________________________________________|__________________________________________________|
* | `A2` | Satellite Provider | None |
* |_________________________|__________________________________________________|__________________________________________________|
* | `A3` | Unknown / Uncategorized IPs | None |
* |_________________________|__________________________________________________|__________________________________________________|
* | `NAM` | North America (including Central America and the Caribbean) | `AG`,`AI`,`AN`,`AW`,`BB`,`BL`,`BM`,`BQ`,`BS`,`BZ`,`CA`,`CR`,`CU`,`CW`,`DM`,`DO`,`GD`,`GL`,`GP`,`GT`,`HN`,`HT`,`JM`,`KN`,`KY`,`LC`,`MF`,`MQ`,`MS`,`MX`,`NI`,`PA`,`PM`,`PR`,`SV`,`SX`,`TC`,`TT`,`U3`,`US`,`VC`,`VG`,`VI` |
* |_________________________|__________________________________________________|__________________________________________________|
* | `SAM` | South America | `AR`,`BO`,`BR`,`CL`,`CO`,`EC`,`FK`,`GF`,`GS`,`GY`,`PE`,`PY`,`SR`,`U4`,`UY`,`VE` |
* |_________________________|__________________________________________________|__________________________________________________|
* | `EUR` | Europe | `AD`,`AL`,`AM`,`AT`,`AX`,`AZ`,`BA`,`BE`,`BG`,`BY`,`CH`,`CZ`,`DE`,`DK`,`EE`,`ES`,`FI`,`FO`,`FR`,`GB`,`GE`,`GG`,`GI`,`GR`,`HR`,`HU`,`IE`,`IM`,`IS`,`IT`,`JE`,`LI`,`LT`,`LU`,`LV`,`MC`,`MD`,`ME`,`MK`,`MT`,`NL`,`NO`,`PL`,`PT`,`RO`,`RS`,`SE`,`SI`,`SJ`,`SK`,`SM`,`U5`,`UA`,`VA` |
* |_________________________|__________________________________________________|__________________________________________________|
* | `AFR` | Africa | `AO`,`BF`,`BI`,`BJ`,`BW`,`CD`,`CF`,`CG`,`CI`,`CM`,`CV`,`DJ`,`DZ`,`EG`,`EH`,`ER`,`ET`,`GA`,`GH`,`GM`,`GN`,`GQ`,`GW`,`KE`,`KM`,`LR`,`LS`,`LY`,`MA`,`MG`,`ML`,`MR`,`MU`,`MW`,`MZ`,`NA`,`NE`,`NG`,`RE`,`RW`,`SC`,`SD`,`SH`,`SL`,`SN`,`SO`,`SS`,`ST`,`SZ`,`TD`,`TG`,`TN`,`TZ`,`U7`,`UG`,`YT`,`ZA`,`ZM`,`ZW` |
* |_________________________|__________________________________________________|__________________________________________________|
* | `ASI` | Asia (including Middle East and the Russian Federation) | `AE`,`AF`,`BD`,`BH`,`BN`,`BT`,`CN`,`CY`,`HK`,`ID`,`IL`,`IN`,`IO`,`IQ`,`IR`,`JO`,`JP`,`KG`,`KH`,`KP`,`KR`,`KW`,`KZ`,`LA`,`LB`,`LK`,`MM`,`MN`,`MO`,`MV`,`MY`,`NP`,`OM`,`PH`,`PK`,`PS`,`QA`,`RU`,`SA`,`SG`,`SY`,`TH`,`TJ`,`TL`,`TM`,`TR`,`TW`,`U6`,`U8`,`UZ`,`VN`,`YE` |
* |_________________________|__________________________________________________|__________________________________________________|
* | `OCN` | Australia / Oceania | `AS`,`AU`,`CC`,`CK`,`CX`,`FJ`,`FM`,`GU`,`HM`,`KI`,`MH`,`MP`,`NC`,`NF`,`NR`,`NU`,`NZ`,`PF`,`PG`,`PN`,`PW`,`SB`,`TK`,`TO`,`TV`,`U9`,`UM`,`VU`,`WF`,`WS` |
* |_________________________|__________________________________________________|__________________________________________________|
* | `ANT` | Antarctica | `AQ`, `TF`, `BV` |
* |_________________________|__________________________________________________|__________________________________________________|
*
* ## Import
*
* Directional (DIR) pool records can be imported by combining their `owner_name`, `zone_name`, and `record_type`, separated by a colon.
Example `www.example.com.:example.com.:A (1)`. -> For import, the `owner_name` and `zone_name` must be a FQDN, and `record_type` should have the type, as well as the corresponding number, as shown in the example below. Exampleterraform
*
* ```sh
* $ pulumi import ultradns:index/dirPool:DirPool example "www.example.com.:example.com.:A (1)"
* ```
*/
export declare class DirPool extends pulumi.CustomResource {
/**
* Get an existing DirPool resource's state with the given name, ID, and optional extra
* properties used to qualify the lookup.
*
* @param name The _unique_ name of the resulting resource.
* @param id The _unique_ provider ID of the resource to lookup.
* @param state Any extra arguments used during the lookup.
* @param opts Optional settings to control the behavior of the CustomResource.
*/
static get(name: string, id: pulumi.Input, state?: DirPoolState, opts?: pulumi.CustomResourceOptions): DirPool;
/**
* Returns true if the given object is an instance of DirPool. This is designed to work even
* when multiple copies of the Pulumi SDK have been loaded into the same process.
*/
static isInstance(obj: any): obj is DirPool;
/**
* (String) When there is a conflict between a matching GeoIP group and a matching SourceIP group, this will determine which should take precedence. This only applies to a mixed pool (contains both GeoIP and SourceIP data). Valid values are `GEO` and `IP`. Default value set to `GEO`.
*/
readonly conflictResolve: pulumi.Output;
/**
* (Boolean) Whether to ignore the EDNSO (which is an extended label type allowing for greater DNS messaging size) Client Subnet data when available in the DNS request.
* `false`= EDNSO data will be used for IP directional routing.
* `true` = EDNSO data will not be used and IP directional routing decisions will always use the IP address of the recursive server.
* Default value set to false.
*/
readonly ignoreEcs: pulumi.Output;
/**
* (Block Set, Max: 1) Nested block describing certain geographical territories and IP addresses that will not get a response if they try to access the directional pool. The structure of this block is described below.
*/
readonly noResponse: pulumi.Output;
/**
* (String) The domain name of the owner of the RRSet. Can be either a fully qualified domain name (FQDN) or a relative domain name. If provided as a FQDN, it must be contained within the zone name's FQDN.
*/
readonly ownerName: pulumi.Output;
/**
* (String) Allows for an additional description of the Directional (DIR) pool.
*/
readonly poolDescription: pulumi.Output;
/**
* (Block Set, Min: 1) List of nested blocks describing the pool records. The structure of this block is described below.
*/
readonly rdataInfos: pulumi.Output;
/**
* (String) Must be formatted as a well-known resource record type (A, AAAA, TXT, etc.), or the corresponding number for the type; between 1 and 33.
* Below are the supported resource record types with the corresponding number:
* `A (1)`
* `PTR (12)`
* `MX (15)`
* `TXT (16)`
* `AAAA (28)`
* `SRV (33)`
*/
readonly recordType: pulumi.Output;
/**
* (Integer) The time to live (in seconds) for the corresponding record in rdata. Must be a value between 0 and 2147483647, inclusive.
*/
readonly ttl: pulumi.Output;
/**
* (String) Name of the zone.
*/
readonly zoneName: pulumi.Output;
/**
* Create a DirPool resource with the given unique name, arguments, and options.
*
* @param name The _unique_ name of the resource.
* @param args The arguments to use to populate this resource's properties.
* @param opts A bag of options that control this resource's behavior.
*/
constructor(name: string, args: DirPoolArgs, opts?: pulumi.CustomResourceOptions);
}
/**
* Input properties used for looking up and filtering DirPool resources.
*/
export interface DirPoolState {
/**
* (String) When there is a conflict between a matching GeoIP group and a matching SourceIP group, this will determine which should take precedence. This only applies to a mixed pool (contains both GeoIP and SourceIP data). Valid values are `GEO` and `IP`. Default value set to `GEO`.
*/
conflictResolve?: pulumi.Input;
/**
* (Boolean) Whether to ignore the EDNSO (which is an extended label type allowing for greater DNS messaging size) Client Subnet data when available in the DNS request.
* `false`= EDNSO data will be used for IP directional routing.
* `true` = EDNSO data will not be used and IP directional routing decisions will always use the IP address of the recursive server.
* Default value set to false.
*/
ignoreEcs?: pulumi.Input;
/**
* (Block Set, Max: 1) Nested block describing certain geographical territories and IP addresses that will not get a response if they try to access the directional pool. The structure of this block is described below.
*/
noResponse?: pulumi.Input;
/**
* (String) The domain name of the owner of the RRSet. Can be either a fully qualified domain name (FQDN) or a relative domain name. If provided as a FQDN, it must be contained within the zone name's FQDN.
*/
ownerName?: pulumi.Input;
/**
* (String) Allows for an additional description of the Directional (DIR) pool.
*/
poolDescription?: pulumi.Input;
/**
* (Block Set, Min: 1) List of nested blocks describing the pool records. The structure of this block is described below.
*/
rdataInfos?: pulumi.Input[]>;
/**
* (String) Must be formatted as a well-known resource record type (A, AAAA, TXT, etc.), or the corresponding number for the type; between 1 and 33.
* Below are the supported resource record types with the corresponding number:
* `A (1)`
* `PTR (12)`
* `MX (15)`
* `TXT (16)`
* `AAAA (28)`
* `SRV (33)`
*/
recordType?: pulumi.Input;
/**
* (Integer) The time to live (in seconds) for the corresponding record in rdata. Must be a value between 0 and 2147483647, inclusive.
*/
ttl?: pulumi.Input;
/**
* (String) Name of the zone.
*/
zoneName?: pulumi.Input;
}
/**
* The set of arguments for constructing a DirPool resource.
*/
export interface DirPoolArgs {
/**
* (String) When there is a conflict between a matching GeoIP group and a matching SourceIP group, this will determine which should take precedence. This only applies to a mixed pool (contains both GeoIP and SourceIP data). Valid values are `GEO` and `IP`. Default value set to `GEO`.
*/
conflictResolve?: pulumi.Input;
/**
* (Boolean) Whether to ignore the EDNSO (which is an extended label type allowing for greater DNS messaging size) Client Subnet data when available in the DNS request.
* `false`= EDNSO data will be used for IP directional routing.
* `true` = EDNSO data will not be used and IP directional routing decisions will always use the IP address of the recursive server.
* Default value set to false.
*/
ignoreEcs?: pulumi.Input;
/**
* (Block Set, Max: 1) Nested block describing certain geographical territories and IP addresses that will not get a response if they try to access the directional pool. The structure of this block is described below.
*/
noResponse?: pulumi.Input;
/**
* (String) The domain name of the owner of the RRSet. Can be either a fully qualified domain name (FQDN) or a relative domain name. If provided as a FQDN, it must be contained within the zone name's FQDN.
*/
ownerName: pulumi.Input;
/**
* (String) Allows for an additional description of the Directional (DIR) pool.
*/
poolDescription?: pulumi.Input;
/**
* (Block Set, Min: 1) List of nested blocks describing the pool records. The structure of this block is described below.
*/
rdataInfos: pulumi.Input[]>;
/**
* (String) Must be formatted as a well-known resource record type (A, AAAA, TXT, etc.), or the corresponding number for the type; between 1 and 33.
* Below are the supported resource record types with the corresponding number:
* `A (1)`
* `PTR (12)`
* `MX (15)`
* `TXT (16)`
* `AAAA (28)`
* `SRV (33)`
*/
recordType: pulumi.Input;
/**
* (String) Name of the zone.
*/
zoneName: pulumi.Input;
}