pulumi-ns1 3.2.0a1710245297__py3-none-any.whl → 3.6.0a1736849591__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- pulumi_ns1/__init__.py +21 -3
- pulumi_ns1/_inputs.py +334 -17
- pulumi_ns1/_utilities.py +41 -5
- pulumi_ns1/account_whitelist.py +17 -12
- pulumi_ns1/alert.py +549 -0
- pulumi_ns1/api_key.py +157 -235
- pulumi_ns1/application.py +10 -49
- pulumi_ns1/config/__init__.pyi +5 -5
- pulumi_ns1/config/vars.py +5 -7
- pulumi_ns1/data_feed.py +45 -30
- pulumi_ns1/data_source.py +25 -20
- pulumi_ns1/dataset.py +15 -10
- pulumi_ns1/dnsview.py +5 -0
- pulumi_ns1/get_dns_sec.py +23 -17
- pulumi_ns1/get_monitoring_regions.py +19 -13
- pulumi_ns1/get_networks.py +14 -9
- pulumi_ns1/get_record.py +49 -18
- pulumi_ns1/get_zone.py +35 -10
- pulumi_ns1/monitoring_job.py +60 -57
- pulumi_ns1/notify_list.py +38 -33
- pulumi_ns1/outputs.py +25 -20
- pulumi_ns1/provider.py +5 -20
- pulumi_ns1/pulsar_job.py +14 -9
- pulumi_ns1/pulumi-plugin.json +2 -1
- pulumi_ns1/record.py +308 -34
- pulumi_ns1/redirect.py +715 -0
- pulumi_ns1/redirect_certificate.py +236 -0
- pulumi_ns1/team.py +187 -263
- pulumi_ns1/tsigkey.py +7 -4
- pulumi_ns1/user.py +166 -222
- pulumi_ns1/zone.py +23 -5
- {pulumi_ns1-3.2.0a1710245297.dist-info → pulumi_ns1-3.6.0a1736849591.dist-info}/METADATA +7 -6
- pulumi_ns1-3.6.0a1736849591.dist-info/RECORD +37 -0
- {pulumi_ns1-3.2.0a1710245297.dist-info → pulumi_ns1-3.6.0a1736849591.dist-info}/WHEEL +1 -1
- pulumi_ns1/subnet.py +0 -504
- pulumi_ns1-3.2.0a1710245297.dist-info/RECORD +0 -35
- {pulumi_ns1-3.2.0a1710245297.dist-info → pulumi_ns1-3.6.0a1736849591.dist-info}/top_level.txt +0 -0
pulumi_ns1/record.py
CHANGED
@@ -4,9 +4,14 @@
|
|
4
4
|
|
5
5
|
import copy
|
6
6
|
import warnings
|
7
|
+
import sys
|
7
8
|
import pulumi
|
8
9
|
import pulumi.runtime
|
9
10
|
from typing import Any, Mapping, Optional, Sequence, Union, overload
|
11
|
+
if sys.version_info >= (3, 11):
|
12
|
+
from typing import NotRequired, TypedDict, TypeAlias
|
13
|
+
else:
|
14
|
+
from typing_extensions import NotRequired, TypedDict, TypeAlias
|
10
15
|
from . import _utilities
|
11
16
|
from . import outputs
|
12
17
|
from ._inputs import *
|
@@ -23,7 +28,8 @@ class RecordArgs:
|
|
23
28
|
blocked_tags: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
|
24
29
|
filters: Optional[pulumi.Input[Sequence[pulumi.Input['RecordFilterArgs']]]] = None,
|
25
30
|
link: Optional[pulumi.Input[str]] = None,
|
26
|
-
meta: Optional[pulumi.Input[Mapping[str,
|
31
|
+
meta: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
|
32
|
+
override_address_records: Optional[pulumi.Input[bool]] = None,
|
27
33
|
override_ttl: Optional[pulumi.Input[bool]] = None,
|
28
34
|
regions: Optional[pulumi.Input[Sequence[pulumi.Input['RecordRegionArgs']]]] = None,
|
29
35
|
short_answers: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
|
@@ -47,6 +53,7 @@ class RecordArgs:
|
|
47
53
|
just groupings based on metadata, and are called "Answer Groups" in the NS1 UI,
|
48
54
|
but remain `regions` here for legacy reasons. Regions are
|
49
55
|
documented below. Please note the ordering requirement!
|
56
|
+
:param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: map of tags in the form of `"key" = "value"` where both key and value are strings
|
50
57
|
:param pulumi.Input[int] ttl: The records' time to live (in seconds).
|
51
58
|
:param pulumi.Input[bool] use_client_subnet: Whether to use EDNS client subnet data when
|
52
59
|
available(in filter chain).
|
@@ -66,6 +73,8 @@ class RecordArgs:
|
|
66
73
|
pulumi.set(__self__, "link", link)
|
67
74
|
if meta is not None:
|
68
75
|
pulumi.set(__self__, "meta", meta)
|
76
|
+
if override_address_records is not None:
|
77
|
+
pulumi.set(__self__, "override_address_records", override_address_records)
|
69
78
|
if override_ttl is not None:
|
70
79
|
pulumi.set(__self__, "override_ttl", override_ttl)
|
71
80
|
if regions is not None:
|
@@ -170,13 +179,22 @@ class RecordArgs:
|
|
170
179
|
|
171
180
|
@property
|
172
181
|
@pulumi.getter
|
173
|
-
def meta(self) -> Optional[pulumi.Input[Mapping[str,
|
182
|
+
def meta(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
|
174
183
|
return pulumi.get(self, "meta")
|
175
184
|
|
176
185
|
@meta.setter
|
177
|
-
def meta(self, value: Optional[pulumi.Input[Mapping[str,
|
186
|
+
def meta(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]):
|
178
187
|
pulumi.set(self, "meta", value)
|
179
188
|
|
189
|
+
@property
|
190
|
+
@pulumi.getter(name="overrideAddressRecords")
|
191
|
+
def override_address_records(self) -> Optional[pulumi.Input[bool]]:
|
192
|
+
return pulumi.get(self, "override_address_records")
|
193
|
+
|
194
|
+
@override_address_records.setter
|
195
|
+
def override_address_records(self, value: Optional[pulumi.Input[bool]]):
|
196
|
+
pulumi.set(self, "override_address_records", value)
|
197
|
+
|
180
198
|
@property
|
181
199
|
@pulumi.getter(name="overrideTtl")
|
182
200
|
def override_ttl(self) -> Optional[pulumi.Input[bool]]:
|
@@ -203,10 +221,8 @@ class RecordArgs:
|
|
203
221
|
|
204
222
|
@property
|
205
223
|
@pulumi.getter(name="shortAnswers")
|
224
|
+
@_utilities.deprecated("""short_answers will be deprecated in a future release. It is suggested to migrate to a regular \"answers\" block.""")
|
206
225
|
def short_answers(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
|
207
|
-
warnings.warn("""short_answers will be deprecated in a future release. It is suggested to migrate to a regular \"answers\" block.""", DeprecationWarning)
|
208
|
-
pulumi.log.warn("""short_answers is deprecated: short_answers will be deprecated in a future release. It is suggested to migrate to a regular \"answers\" block.""")
|
209
|
-
|
210
226
|
return pulumi.get(self, "short_answers")
|
211
227
|
|
212
228
|
@short_answers.setter
|
@@ -216,6 +232,9 @@ class RecordArgs:
|
|
216
232
|
@property
|
217
233
|
@pulumi.getter
|
218
234
|
def tags(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
|
235
|
+
"""
|
236
|
+
map of tags in the form of `"key" = "value"` where both key and value are strings
|
237
|
+
"""
|
219
238
|
return pulumi.get(self, "tags")
|
220
239
|
|
221
240
|
@tags.setter
|
@@ -258,7 +277,8 @@ class _RecordState:
|
|
258
277
|
domain: Optional[pulumi.Input[str]] = None,
|
259
278
|
filters: Optional[pulumi.Input[Sequence[pulumi.Input['RecordFilterArgs']]]] = None,
|
260
279
|
link: Optional[pulumi.Input[str]] = None,
|
261
|
-
meta: Optional[pulumi.Input[Mapping[str,
|
280
|
+
meta: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
|
281
|
+
override_address_records: Optional[pulumi.Input[bool]] = None,
|
262
282
|
override_ttl: Optional[pulumi.Input[bool]] = None,
|
263
283
|
regions: Optional[pulumi.Input[Sequence[pulumi.Input['RecordRegionArgs']]]] = None,
|
264
284
|
short_answers: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
|
@@ -281,6 +301,7 @@ class _RecordState:
|
|
281
301
|
just groupings based on metadata, and are called "Answer Groups" in the NS1 UI,
|
282
302
|
but remain `regions` here for legacy reasons. Regions are
|
283
303
|
documented below. Please note the ordering requirement!
|
304
|
+
:param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: map of tags in the form of `"key" = "value"` where both key and value are strings
|
284
305
|
:param pulumi.Input[int] ttl: The records' time to live (in seconds).
|
285
306
|
:param pulumi.Input[str] type: The records' RR type.
|
286
307
|
:param pulumi.Input[bool] use_client_subnet: Whether to use EDNS client subnet data when
|
@@ -302,6 +323,8 @@ class _RecordState:
|
|
302
323
|
pulumi.set(__self__, "link", link)
|
303
324
|
if meta is not None:
|
304
325
|
pulumi.set(__self__, "meta", meta)
|
326
|
+
if override_address_records is not None:
|
327
|
+
pulumi.set(__self__, "override_address_records", override_address_records)
|
305
328
|
if override_ttl is not None:
|
306
329
|
pulumi.set(__self__, "override_ttl", override_ttl)
|
307
330
|
if regions is not None:
|
@@ -385,13 +408,22 @@ class _RecordState:
|
|
385
408
|
|
386
409
|
@property
|
387
410
|
@pulumi.getter
|
388
|
-
def meta(self) -> Optional[pulumi.Input[Mapping[str,
|
411
|
+
def meta(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
|
389
412
|
return pulumi.get(self, "meta")
|
390
413
|
|
391
414
|
@meta.setter
|
392
|
-
def meta(self, value: Optional[pulumi.Input[Mapping[str,
|
415
|
+
def meta(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]):
|
393
416
|
pulumi.set(self, "meta", value)
|
394
417
|
|
418
|
+
@property
|
419
|
+
@pulumi.getter(name="overrideAddressRecords")
|
420
|
+
def override_address_records(self) -> Optional[pulumi.Input[bool]]:
|
421
|
+
return pulumi.get(self, "override_address_records")
|
422
|
+
|
423
|
+
@override_address_records.setter
|
424
|
+
def override_address_records(self, value: Optional[pulumi.Input[bool]]):
|
425
|
+
pulumi.set(self, "override_address_records", value)
|
426
|
+
|
395
427
|
@property
|
396
428
|
@pulumi.getter(name="overrideTtl")
|
397
429
|
def override_ttl(self) -> Optional[pulumi.Input[bool]]:
|
@@ -418,10 +450,8 @@ class _RecordState:
|
|
418
450
|
|
419
451
|
@property
|
420
452
|
@pulumi.getter(name="shortAnswers")
|
453
|
+
@_utilities.deprecated("""short_answers will be deprecated in a future release. It is suggested to migrate to a regular \"answers\" block.""")
|
421
454
|
def short_answers(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
|
422
|
-
warnings.warn("""short_answers will be deprecated in a future release. It is suggested to migrate to a regular \"answers\" block.""", DeprecationWarning)
|
423
|
-
pulumi.log.warn("""short_answers is deprecated: short_answers will be deprecated in a future release. It is suggested to migrate to a regular \"answers\" block.""")
|
424
|
-
|
425
455
|
return pulumi.get(self, "short_answers")
|
426
456
|
|
427
457
|
@short_answers.setter
|
@@ -431,6 +461,9 @@ class _RecordState:
|
|
431
461
|
@property
|
432
462
|
@pulumi.getter
|
433
463
|
def tags(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
|
464
|
+
"""
|
465
|
+
map of tags in the form of `"key" = "value"` where both key and value are strings
|
466
|
+
"""
|
434
467
|
return pulumi.get(self, "tags")
|
435
468
|
|
436
469
|
@tags.setter
|
@@ -495,14 +528,15 @@ class Record(pulumi.CustomResource):
|
|
495
528
|
def __init__(__self__,
|
496
529
|
resource_name: str,
|
497
530
|
opts: Optional[pulumi.ResourceOptions] = None,
|
498
|
-
answers: Optional[pulumi.Input[Sequence[pulumi.Input[
|
531
|
+
answers: Optional[pulumi.Input[Sequence[pulumi.Input[Union['RecordAnswerArgs', 'RecordAnswerArgsDict']]]]] = None,
|
499
532
|
blocked_tags: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
|
500
533
|
domain: Optional[pulumi.Input[str]] = None,
|
501
|
-
filters: Optional[pulumi.Input[Sequence[pulumi.Input[
|
534
|
+
filters: Optional[pulumi.Input[Sequence[pulumi.Input[Union['RecordFilterArgs', 'RecordFilterArgsDict']]]]] = None,
|
502
535
|
link: Optional[pulumi.Input[str]] = None,
|
503
|
-
meta: Optional[pulumi.Input[Mapping[str,
|
536
|
+
meta: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
|
537
|
+
override_address_records: Optional[pulumi.Input[bool]] = None,
|
504
538
|
override_ttl: Optional[pulumi.Input[bool]] = None,
|
505
|
-
regions: Optional[pulumi.Input[Sequence[pulumi.Input[
|
539
|
+
regions: Optional[pulumi.Input[Sequence[pulumi.Input[Union['RecordRegionArgs', 'RecordRegionArgsDict']]]]] = None,
|
506
540
|
short_answers: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
|
507
541
|
tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
|
508
542
|
ttl: Optional[pulumi.Input[int]] = None,
|
@@ -513,6 +547,120 @@ class Record(pulumi.CustomResource):
|
|
513
547
|
"""
|
514
548
|
Provides a NS1 Record resource. This can be used to create, modify, and delete records.
|
515
549
|
|
550
|
+
## Example Usage
|
551
|
+
|
552
|
+
```python
|
553
|
+
import pulumi
|
554
|
+
import json
|
555
|
+
import pulumi_external as external
|
556
|
+
import pulumi_ns1 as ns1
|
557
|
+
import pulumi_std as std
|
558
|
+
|
559
|
+
example = ns1.Zone("example", zone="terraform.example.io")
|
560
|
+
ns1 = ns1.DataSource("ns1",
|
561
|
+
name="ns1_source",
|
562
|
+
sourcetype="nsone_v1")
|
563
|
+
foo = ns1.DataFeed("foo",
|
564
|
+
name="foo_feed",
|
565
|
+
source_id=ns1.id,
|
566
|
+
config={
|
567
|
+
"label": "foo",
|
568
|
+
})
|
569
|
+
bar = ns1.DataFeed("bar",
|
570
|
+
name="bar_feed",
|
571
|
+
source_id=ns1.id,
|
572
|
+
config={
|
573
|
+
"label": "bar",
|
574
|
+
})
|
575
|
+
www = ns1.Record("www",
|
576
|
+
zone=tld["zone"],
|
577
|
+
domain=f"www.{tld['zone']}",
|
578
|
+
type="CNAME",
|
579
|
+
ttl=60,
|
580
|
+
meta={
|
581
|
+
"up": "true",
|
582
|
+
},
|
583
|
+
regions=[
|
584
|
+
{
|
585
|
+
"name": "east",
|
586
|
+
"meta": {
|
587
|
+
"georegion": "US-EAST",
|
588
|
+
},
|
589
|
+
},
|
590
|
+
{
|
591
|
+
"name": "usa",
|
592
|
+
"meta": {
|
593
|
+
"country": "US",
|
594
|
+
},
|
595
|
+
},
|
596
|
+
],
|
597
|
+
answers=[
|
598
|
+
{
|
599
|
+
"answer": f"sub1.{tld['zone']}",
|
600
|
+
"region": "east",
|
601
|
+
"meta": {
|
602
|
+
"up": foo.id.apply(lambda id: f"{{\\"feed\\":\\"{id}\\"}}"),
|
603
|
+
},
|
604
|
+
},
|
605
|
+
{
|
606
|
+
"answer": f"sub2.{tld['zone']}",
|
607
|
+
"meta": {
|
608
|
+
"up": bar.id.apply(lambda id: f"{{\\"feed\\":\\"{id}\\"}}"),
|
609
|
+
"connections": "3",
|
610
|
+
},
|
611
|
+
},
|
612
|
+
{
|
613
|
+
"answer": f"sub3.{tld['zone']}",
|
614
|
+
"meta": {
|
615
|
+
"pulsar": json.dumps([{
|
616
|
+
"job_id": "abcdef",
|
617
|
+
"bias": "*0.55",
|
618
|
+
"a5m_cutoff": 0.9,
|
619
|
+
}]),
|
620
|
+
"subdivisions": json.dumps({
|
621
|
+
"BR": [
|
622
|
+
"SP",
|
623
|
+
"SC",
|
624
|
+
],
|
625
|
+
"DZ": [
|
626
|
+
"01",
|
627
|
+
"02",
|
628
|
+
"03",
|
629
|
+
],
|
630
|
+
}),
|
631
|
+
},
|
632
|
+
},
|
633
|
+
],
|
634
|
+
filters=[{
|
635
|
+
"filter": "select_first_n",
|
636
|
+
"config": {
|
637
|
+
"N": "1",
|
638
|
+
},
|
639
|
+
}])
|
640
|
+
# Some other non-NS1 provider that returns a zone with a trailing dot and a domain with a leading dot.
|
641
|
+
baz = external.index.Source("baz",
|
642
|
+
zone=terraform.example.io.,
|
643
|
+
domain=.www.terraform.example.io)
|
644
|
+
# Basic record showing how to clean a zone or domain field that comes from
|
645
|
+
# another non-NS1 resource. DNS names often end in '.' characters to signify
|
646
|
+
# the root of the DNS tree, but the NS1 provider does not support this.
|
647
|
+
#
|
648
|
+
# In other cases, a domain or zone may be passed in with a preceding dot ('.')
|
649
|
+
# character which would likewise lead the system to fail.
|
650
|
+
external = ns1.Record("external",
|
651
|
+
zone=std.replace(text=zone,
|
652
|
+
search="/(^\\\\.)|(\\\\.$)/",
|
653
|
+
replace="").result,
|
654
|
+
domain=std.replace(text=domain,
|
655
|
+
search="/(^\\\\.)|(\\\\.$)/",
|
656
|
+
replace="").result,
|
657
|
+
type="CNAME")
|
658
|
+
```
|
659
|
+
|
660
|
+
## NS1 Documentation
|
661
|
+
|
662
|
+
[Record Api Doc](https://ns1.com/api#records)
|
663
|
+
|
516
664
|
## Import
|
517
665
|
|
518
666
|
```sh
|
@@ -527,18 +675,19 @@ class Record(pulumi.CustomResource):
|
|
527
675
|
|
528
676
|
:param str resource_name: The name of the resource.
|
529
677
|
:param pulumi.ResourceOptions opts: Options for the resource.
|
530
|
-
:param pulumi.Input[Sequence[pulumi.Input[
|
678
|
+
:param pulumi.Input[Sequence[pulumi.Input[Union['RecordAnswerArgs', 'RecordAnswerArgsDict']]]] answers: One or more NS1 answers for the records' specified type.
|
531
679
|
Answers are documented below.
|
532
680
|
:param pulumi.Input[str] domain: The records' domain. Cannot have leading or trailing
|
533
681
|
dots - see the example above and `FQDN formatting` below.
|
534
|
-
:param pulumi.Input[Sequence[pulumi.Input[
|
682
|
+
:param pulumi.Input[Sequence[pulumi.Input[Union['RecordFilterArgs', 'RecordFilterArgsDict']]]] filters: One or more NS1 filters for the record(order matters).
|
535
683
|
Filters are documented below.
|
536
684
|
:param pulumi.Input[str] link: The target record to link to. This means this record is a
|
537
685
|
'linked' record, and it inherits all properties from its target.
|
538
|
-
:param pulumi.Input[Sequence[pulumi.Input[
|
686
|
+
:param pulumi.Input[Sequence[pulumi.Input[Union['RecordRegionArgs', 'RecordRegionArgsDict']]]] regions: One or more "regions" for the record. These are really
|
539
687
|
just groupings based on metadata, and are called "Answer Groups" in the NS1 UI,
|
540
688
|
but remain `regions` here for legacy reasons. Regions are
|
541
689
|
documented below. Please note the ordering requirement!
|
690
|
+
:param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: map of tags in the form of `"key" = "value"` where both key and value are strings
|
542
691
|
:param pulumi.Input[int] ttl: The records' time to live (in seconds).
|
543
692
|
:param pulumi.Input[str] type: The records' RR type.
|
544
693
|
:param pulumi.Input[bool] use_client_subnet: Whether to use EDNS client subnet data when
|
@@ -557,6 +706,120 @@ class Record(pulumi.CustomResource):
|
|
557
706
|
"""
|
558
707
|
Provides a NS1 Record resource. This can be used to create, modify, and delete records.
|
559
708
|
|
709
|
+
## Example Usage
|
710
|
+
|
711
|
+
```python
|
712
|
+
import pulumi
|
713
|
+
import json
|
714
|
+
import pulumi_external as external
|
715
|
+
import pulumi_ns1 as ns1
|
716
|
+
import pulumi_std as std
|
717
|
+
|
718
|
+
example = ns1.Zone("example", zone="terraform.example.io")
|
719
|
+
ns1 = ns1.DataSource("ns1",
|
720
|
+
name="ns1_source",
|
721
|
+
sourcetype="nsone_v1")
|
722
|
+
foo = ns1.DataFeed("foo",
|
723
|
+
name="foo_feed",
|
724
|
+
source_id=ns1.id,
|
725
|
+
config={
|
726
|
+
"label": "foo",
|
727
|
+
})
|
728
|
+
bar = ns1.DataFeed("bar",
|
729
|
+
name="bar_feed",
|
730
|
+
source_id=ns1.id,
|
731
|
+
config={
|
732
|
+
"label": "bar",
|
733
|
+
})
|
734
|
+
www = ns1.Record("www",
|
735
|
+
zone=tld["zone"],
|
736
|
+
domain=f"www.{tld['zone']}",
|
737
|
+
type="CNAME",
|
738
|
+
ttl=60,
|
739
|
+
meta={
|
740
|
+
"up": "true",
|
741
|
+
},
|
742
|
+
regions=[
|
743
|
+
{
|
744
|
+
"name": "east",
|
745
|
+
"meta": {
|
746
|
+
"georegion": "US-EAST",
|
747
|
+
},
|
748
|
+
},
|
749
|
+
{
|
750
|
+
"name": "usa",
|
751
|
+
"meta": {
|
752
|
+
"country": "US",
|
753
|
+
},
|
754
|
+
},
|
755
|
+
],
|
756
|
+
answers=[
|
757
|
+
{
|
758
|
+
"answer": f"sub1.{tld['zone']}",
|
759
|
+
"region": "east",
|
760
|
+
"meta": {
|
761
|
+
"up": foo.id.apply(lambda id: f"{{\\"feed\\":\\"{id}\\"}}"),
|
762
|
+
},
|
763
|
+
},
|
764
|
+
{
|
765
|
+
"answer": f"sub2.{tld['zone']}",
|
766
|
+
"meta": {
|
767
|
+
"up": bar.id.apply(lambda id: f"{{\\"feed\\":\\"{id}\\"}}"),
|
768
|
+
"connections": "3",
|
769
|
+
},
|
770
|
+
},
|
771
|
+
{
|
772
|
+
"answer": f"sub3.{tld['zone']}",
|
773
|
+
"meta": {
|
774
|
+
"pulsar": json.dumps([{
|
775
|
+
"job_id": "abcdef",
|
776
|
+
"bias": "*0.55",
|
777
|
+
"a5m_cutoff": 0.9,
|
778
|
+
}]),
|
779
|
+
"subdivisions": json.dumps({
|
780
|
+
"BR": [
|
781
|
+
"SP",
|
782
|
+
"SC",
|
783
|
+
],
|
784
|
+
"DZ": [
|
785
|
+
"01",
|
786
|
+
"02",
|
787
|
+
"03",
|
788
|
+
],
|
789
|
+
}),
|
790
|
+
},
|
791
|
+
},
|
792
|
+
],
|
793
|
+
filters=[{
|
794
|
+
"filter": "select_first_n",
|
795
|
+
"config": {
|
796
|
+
"N": "1",
|
797
|
+
},
|
798
|
+
}])
|
799
|
+
# Some other non-NS1 provider that returns a zone with a trailing dot and a domain with a leading dot.
|
800
|
+
baz = external.index.Source("baz",
|
801
|
+
zone=terraform.example.io.,
|
802
|
+
domain=.www.terraform.example.io)
|
803
|
+
# Basic record showing how to clean a zone or domain field that comes from
|
804
|
+
# another non-NS1 resource. DNS names often end in '.' characters to signify
|
805
|
+
# the root of the DNS tree, but the NS1 provider does not support this.
|
806
|
+
#
|
807
|
+
# In other cases, a domain or zone may be passed in with a preceding dot ('.')
|
808
|
+
# character which would likewise lead the system to fail.
|
809
|
+
external = ns1.Record("external",
|
810
|
+
zone=std.replace(text=zone,
|
811
|
+
search="/(^\\\\.)|(\\\\.$)/",
|
812
|
+
replace="").result,
|
813
|
+
domain=std.replace(text=domain,
|
814
|
+
search="/(^\\\\.)|(\\\\.$)/",
|
815
|
+
replace="").result,
|
816
|
+
type="CNAME")
|
817
|
+
```
|
818
|
+
|
819
|
+
## NS1 Documentation
|
820
|
+
|
821
|
+
[Record Api Doc](https://ns1.com/api#records)
|
822
|
+
|
560
823
|
## Import
|
561
824
|
|
562
825
|
```sh
|
@@ -584,14 +847,15 @@ class Record(pulumi.CustomResource):
|
|
584
847
|
def _internal_init(__self__,
|
585
848
|
resource_name: str,
|
586
849
|
opts: Optional[pulumi.ResourceOptions] = None,
|
587
|
-
answers: Optional[pulumi.Input[Sequence[pulumi.Input[
|
850
|
+
answers: Optional[pulumi.Input[Sequence[pulumi.Input[Union['RecordAnswerArgs', 'RecordAnswerArgsDict']]]]] = None,
|
588
851
|
blocked_tags: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
|
589
852
|
domain: Optional[pulumi.Input[str]] = None,
|
590
|
-
filters: Optional[pulumi.Input[Sequence[pulumi.Input[
|
853
|
+
filters: Optional[pulumi.Input[Sequence[pulumi.Input[Union['RecordFilterArgs', 'RecordFilterArgsDict']]]]] = None,
|
591
854
|
link: Optional[pulumi.Input[str]] = None,
|
592
|
-
meta: Optional[pulumi.Input[Mapping[str,
|
855
|
+
meta: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
|
856
|
+
override_address_records: Optional[pulumi.Input[bool]] = None,
|
593
857
|
override_ttl: Optional[pulumi.Input[bool]] = None,
|
594
|
-
regions: Optional[pulumi.Input[Sequence[pulumi.Input[
|
858
|
+
regions: Optional[pulumi.Input[Sequence[pulumi.Input[Union['RecordRegionArgs', 'RecordRegionArgsDict']]]]] = None,
|
595
859
|
short_answers: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
|
596
860
|
tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
|
597
861
|
ttl: Optional[pulumi.Input[int]] = None,
|
@@ -615,6 +879,7 @@ class Record(pulumi.CustomResource):
|
|
615
879
|
__props__.__dict__["filters"] = filters
|
616
880
|
__props__.__dict__["link"] = link
|
617
881
|
__props__.__dict__["meta"] = meta
|
882
|
+
__props__.__dict__["override_address_records"] = override_address_records
|
618
883
|
__props__.__dict__["override_ttl"] = override_ttl
|
619
884
|
__props__.__dict__["regions"] = regions
|
620
885
|
__props__.__dict__["short_answers"] = short_answers
|
@@ -637,14 +902,15 @@ class Record(pulumi.CustomResource):
|
|
637
902
|
def get(resource_name: str,
|
638
903
|
id: pulumi.Input[str],
|
639
904
|
opts: Optional[pulumi.ResourceOptions] = None,
|
640
|
-
answers: Optional[pulumi.Input[Sequence[pulumi.Input[
|
905
|
+
answers: Optional[pulumi.Input[Sequence[pulumi.Input[Union['RecordAnswerArgs', 'RecordAnswerArgsDict']]]]] = None,
|
641
906
|
blocked_tags: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
|
642
907
|
domain: Optional[pulumi.Input[str]] = None,
|
643
|
-
filters: Optional[pulumi.Input[Sequence[pulumi.Input[
|
908
|
+
filters: Optional[pulumi.Input[Sequence[pulumi.Input[Union['RecordFilterArgs', 'RecordFilterArgsDict']]]]] = None,
|
644
909
|
link: Optional[pulumi.Input[str]] = None,
|
645
|
-
meta: Optional[pulumi.Input[Mapping[str,
|
910
|
+
meta: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
|
911
|
+
override_address_records: Optional[pulumi.Input[bool]] = None,
|
646
912
|
override_ttl: Optional[pulumi.Input[bool]] = None,
|
647
|
-
regions: Optional[pulumi.Input[Sequence[pulumi.Input[
|
913
|
+
regions: Optional[pulumi.Input[Sequence[pulumi.Input[Union['RecordRegionArgs', 'RecordRegionArgsDict']]]]] = None,
|
648
914
|
short_answers: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
|
649
915
|
tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
|
650
916
|
ttl: Optional[pulumi.Input[int]] = None,
|
@@ -658,18 +924,19 @@ class Record(pulumi.CustomResource):
|
|
658
924
|
:param str resource_name: The unique name of the resulting resource.
|
659
925
|
:param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
|
660
926
|
:param pulumi.ResourceOptions opts: Options for the resource.
|
661
|
-
:param pulumi.Input[Sequence[pulumi.Input[
|
927
|
+
:param pulumi.Input[Sequence[pulumi.Input[Union['RecordAnswerArgs', 'RecordAnswerArgsDict']]]] answers: One or more NS1 answers for the records' specified type.
|
662
928
|
Answers are documented below.
|
663
929
|
:param pulumi.Input[str] domain: The records' domain. Cannot have leading or trailing
|
664
930
|
dots - see the example above and `FQDN formatting` below.
|
665
|
-
:param pulumi.Input[Sequence[pulumi.Input[
|
931
|
+
:param pulumi.Input[Sequence[pulumi.Input[Union['RecordFilterArgs', 'RecordFilterArgsDict']]]] filters: One or more NS1 filters for the record(order matters).
|
666
932
|
Filters are documented below.
|
667
933
|
:param pulumi.Input[str] link: The target record to link to. This means this record is a
|
668
934
|
'linked' record, and it inherits all properties from its target.
|
669
|
-
:param pulumi.Input[Sequence[pulumi.Input[
|
935
|
+
:param pulumi.Input[Sequence[pulumi.Input[Union['RecordRegionArgs', 'RecordRegionArgsDict']]]] regions: One or more "regions" for the record. These are really
|
670
936
|
just groupings based on metadata, and are called "Answer Groups" in the NS1 UI,
|
671
937
|
but remain `regions` here for legacy reasons. Regions are
|
672
938
|
documented below. Please note the ordering requirement!
|
939
|
+
:param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: map of tags in the form of `"key" = "value"` where both key and value are strings
|
673
940
|
:param pulumi.Input[int] ttl: The records' time to live (in seconds).
|
674
941
|
:param pulumi.Input[str] type: The records' RR type.
|
675
942
|
:param pulumi.Input[bool] use_client_subnet: Whether to use EDNS client subnet data when
|
@@ -689,6 +956,7 @@ class Record(pulumi.CustomResource):
|
|
689
956
|
__props__.__dict__["filters"] = filters
|
690
957
|
__props__.__dict__["link"] = link
|
691
958
|
__props__.__dict__["meta"] = meta
|
959
|
+
__props__.__dict__["override_address_records"] = override_address_records
|
692
960
|
__props__.__dict__["override_ttl"] = override_ttl
|
693
961
|
__props__.__dict__["regions"] = regions
|
694
962
|
__props__.__dict__["short_answers"] = short_answers
|
@@ -742,9 +1010,14 @@ class Record(pulumi.CustomResource):
|
|
742
1010
|
|
743
1011
|
@property
|
744
1012
|
@pulumi.getter
|
745
|
-
def meta(self) -> pulumi.Output[Optional[Mapping[str,
|
1013
|
+
def meta(self) -> pulumi.Output[Optional[Mapping[str, str]]]:
|
746
1014
|
return pulumi.get(self, "meta")
|
747
1015
|
|
1016
|
+
@property
|
1017
|
+
@pulumi.getter(name="overrideAddressRecords")
|
1018
|
+
def override_address_records(self) -> pulumi.Output[Optional[bool]]:
|
1019
|
+
return pulumi.get(self, "override_address_records")
|
1020
|
+
|
748
1021
|
@property
|
749
1022
|
@pulumi.getter(name="overrideTtl")
|
750
1023
|
def override_ttl(self) -> pulumi.Output[Optional[bool]]:
|
@@ -763,15 +1036,16 @@ class Record(pulumi.CustomResource):
|
|
763
1036
|
|
764
1037
|
@property
|
765
1038
|
@pulumi.getter(name="shortAnswers")
|
1039
|
+
@_utilities.deprecated("""short_answers will be deprecated in a future release. It is suggested to migrate to a regular \"answers\" block.""")
|
766
1040
|
def short_answers(self) -> pulumi.Output[Optional[Sequence[str]]]:
|
767
|
-
warnings.warn("""short_answers will be deprecated in a future release. It is suggested to migrate to a regular \"answers\" block.""", DeprecationWarning)
|
768
|
-
pulumi.log.warn("""short_answers is deprecated: short_answers will be deprecated in a future release. It is suggested to migrate to a regular \"answers\" block.""")
|
769
|
-
|
770
1041
|
return pulumi.get(self, "short_answers")
|
771
1042
|
|
772
1043
|
@property
|
773
1044
|
@pulumi.getter
|
774
1045
|
def tags(self) -> pulumi.Output[Optional[Mapping[str, str]]]:
|
1046
|
+
"""
|
1047
|
+
map of tags in the form of `"key" = "value"` where both key and value are strings
|
1048
|
+
"""
|
775
1049
|
return pulumi.get(self, "tags")
|
776
1050
|
|
777
1051
|
@property
|