ipaserver.plugins.dns.dnsrecord

class ipaserver.plugins.dns.dnsrecord(api)[source]

Bases: ipaserver.plugins.baseldap.LDAPObject

DNS record.

Public Methods:

run_precallback_validators(dn, entry_attrs, ...)

is_pkey_zone_record(*keys)

check_zone(zone, **options)

Check if zone exists and if is master zone

get_dn(*keys, **options)

Construct an LDAP DN.

attr_to_cli(attr)

get_dns_masters()

get_record_entry_attrs(entry_attrs)

postprocess_record(record, **options)

updated_rrattrs(old_entry, entry_attrs)

Returns updated RR attributes

check_record_type_collisions(keys, rrattrs)

check_record_type_dependencies(keys, rrattrs)

wait_for_modified_attr(ldap_rrset, rdtype, ...)

Wait until DNS resolver returns up-to-date answer for given RRset

wait_for_modified_attrs(entry_attrs, ...)

Wait until DNS resolver returns up-to-date answer for given entry

wait_for_modified_entries(entries)

Call wait_for_modified_attrs for all entries in given dict.

warning_if_ns_change_cause_fwzone_ineffective(...)

Detect if NS record change can make forward zones ineffective due missing delegation.

warning_suspicious_relative_name(result, ...)

Detect if zone name is suffix of relative record name and warn.

Inherited from LDAPObject

get_dn(*keys, **options)

Construct an LDAP DN.

get_dn_if_exists(*keys, **kwargs)

get_primary_key_from_dn(dn)

get_ancestor_primary_keys()

has_objectclass(classes, objectclass)

convert_attribute_members(entry_attrs, ...)

get_indirect_members(entry_attrs, attrs_list)

get_memberindirect(group_entry)

Get indirect members

get_memberofindirect(entry)

get_password_attributes(ldap, dn, entry_attrs)

Search on the entry to determine if it has a password or keytab set.

handle_not_found(*keys)

Handle NotFound exception

handle_duplicate_entry(*keys)

__json__()

Inherited from Object

backend

methods

params

primary_key

params_minus_pk

params_minus(*names)

Yield all Param whose name is not in names.

get_dn(*keys, **options)

Construct an LDAP DN.

get_params()

This method gets called by HasParam._create_param_namespace().

__json__()

Inherited from Plugin

__init__(api)

finalize()

Finalize plugin initialization.

ensure_finalized()

Finalize plugin initialization if it has not yet been finalized.

__repr__()

Return 'module_name.class_name()' representation.

Inherited from ReadOnly

__lock__()

Put this instance into a read-only state.

__islocked__()

Return True if instance is locked, otherwise False.

__setattr__(name, value)

If unlocked, set attribute named name to value.

__delattr__(name)

If unlocked, delete attribute named name.

Private Data Attributes:

Inherited from ReadOnly

_ReadOnly__locked

Private Methods:

_dsrecord_pre_callback(ldap, dn, ...)

_nsrecord_pre_callback(ldap, dn, ...)

_idnsname_pre_callback(ldap, dn, ...)

_ptrrecord_pre_callback(ldap, dn, ...)

_entry2rrsets(entry_attrs, dns_name, dns_domain)

Convert entry_attrs to a dictionary {rdtype: rrset}.

Inherited from Object

_on_finalize()

Do custom finalization.

_Object__get_attrs(name)

Inherited from HasParam

_get_param_iterable(name[, verb])

Return an iterable of params defined by the attribute named name.

_filter_param_by_context(name[, env])

Filter params on attribute named name by environment env.

_create_param_namespace(name[, env])

Inherited from Plugin

_Plugin__name_getter()

_Plugin__full_name_getter()

_Plugin__bases_getter()

_Plugin__doc_getter()

_Plugin__summary_getter()

_on_finalize()

Do custom finalization.


property Backend
property Command
NO_CLI = False
__annotations__ = {}
__delattr__(name)

If unlocked, delete attribute named name.

If this instance is locked, an AttributeError will be raised.

Parameters

name – Name of attribute to delete.

__dict__ = mappingproxy({'__module__': 'ipaserver.plugins.dns', '__doc__': '\n    DNS record.\n    ', 'parent_object': 'dnszone', 'container_dn': ipapython.dn.DN('cn=dns'), 'object_name': Gettext('DNS resource record', domain='ipa', localedir=None), 'object_name_plural': Gettext('DNS resource records', domain='ipa', localedir=None), 'object_class': ['top', 'idnsrecord'], 'possible_objectclasses': ['idnsTemplateObject'], 'permission_filter_objectclasses': ['idnsrecord'], 'default_attributes': ['idnsname', 'arecord', 'aaaarecord', 'a6record', 'afsdbrecord', 'aplrecord', 'certrecord', 'cnamerecord', 'dhcidrecord', 'dlvrecord', 'dnamerecord', 'dsrecord', 'hiprecord', 'hinforecord', 'ipseckeyrecord', 'keyrecord', 'kxrecord', 'locrecord', 'mdrecord', 'minforecord', 'mxrecord', 'naptrrecord', 'nsrecord', 'nsecrecord', 'nxtrecord', 'ptrrecord', 'rrsigrecord', 'rprecord', 'sigrecord', 'spfrecord', 'srvrecord', 'sshfprecord', 'tlsarecord', 'txtrecord', 'urirecord'], 'allow_rename': True, 'label': Gettext('DNS Resource Records', domain='ipa', localedir=None), 'label_singular': Gettext('DNS Resource Record', domain='ipa', localedir=None), 'takes_params': (DNSNameParam('idnsname', cli_name='name', doc=Gettext('Record name', domain='ipa', localedir=None), label=Gettext('Record name', domain='ipa', localedir=None), primary_key=True), Int('dnsttl?', cli_name='ttl', doc=Gettext('Time to live', domain='ipa', localedir=None), label=Gettext('Time to live', domain='ipa', localedir=None), maxvalue=2147483647, minvalue=0), StrEnum('dnsclass?', cli_metavar=u"['IN', 'CS', 'CH', 'HS']", cli_name='class', flags=[u'no_option'], values=[u'IN', u'CS', u'CH', u'HS']), Any('dnsrecords?', flags=[u'no_create', u'no_search', u'no_update'], label=Gettext('Records', domain='ipa', localedir=None)), Str('dnstype?', flags=[u'no_create', u'no_search', u'no_update'], label=Gettext('Record type', domain='ipa', localedir=None)), Str('dnsdata?', flags=[u'no_create', u'no_search', u'no_update'], label=Gettext('Record data', domain='ipa', localedir=None)), ARecord('arecord*', cli_name='a_rec', doc=u'Raw A records', label=u'A record', option_group=u'A Record'), Str('a_part_ip_address?', _validate_ip4addr, cli_name='a_ip_address', flags=[u'virtual_attribute'], label=u'A IP Address', option_group=u'A Record'), Flag('a_extra_create_reverse?', autofill=True, cli_name='a_create_reverse', default=False, doc=Gettext('Create reverse record for this IP Address', domain='ipa', localedir=None), flags=[u'no_update', u'virtual_attribute'], label=u'A Create reverse', option_group=u'A Record'), AAAARecord('aaaarecord*', cli_name='aaaa_rec', doc=u'Raw AAAA records', label=u'AAAA record', option_group=u'AAAA Record'), Str('aaaa_part_ip_address?', _validate_ip6addr, cli_name='aaaa_ip_address', flags=[u'virtual_attribute'], label=u'AAAA IP Address', option_group=u'AAAA Record'), Flag('aaaa_extra_create_reverse?', autofill=True, cli_name='aaaa_create_reverse', default=False, doc=Gettext('Create reverse record for this IP Address', domain='ipa', localedir=None), flags=[u'no_update', u'virtual_attribute'], label=u'AAAA Create reverse', option_group=u'AAAA Record'), A6Record('a6record*', cli_name='a6_rec', doc=u'Raw A6 records', label=u'A6 record', option_group=u'A6 Record'), Str('a6_part_data?', cli_name='a6_data', flags=[u'virtual_attribute'], label=u'A6 Record data', option_group=u'A6 Record'), AFSDBRecord('afsdbrecord*', cli_name='afsdb_rec', doc=u'Raw AFSDB records', label=u'AFSDB record', option_group=u'AFSDB Record'), Int('afsdb_part_subtype?', cli_name='afsdb_subtype', flags=[u'dnsrecord_optional', u'virtual_attribute'], label=u'AFSDB Subtype', maxvalue=65535, minvalue=0, option_group=u'AFSDB Record'), DNSNameParam('afsdb_part_hostname?', cli_name='afsdb_hostname', flags=[u'virtual_attribute'], label=u'AFSDB Hostname', option_group=u'AFSDB Record'), APLRecord('aplrecord*', cli_name='apl_rec', doc=u'Raw APL records', flags=[u'no_option'], label=u'APL record', option_group=u'APL Record'), CERTRecord('certrecord*', cli_name='cert_rec', doc=u'Raw CERT records', label=u'CERT record', option_group=u'CERT Record'), Int('cert_part_type?', cli_name='cert_type', flags=[u'virtual_attribute'], label=u'CERT Certificate Type', maxvalue=65535, minvalue=0, option_group=u'CERT Record'), Int('cert_part_key_tag?', cli_name='cert_key_tag', flags=[u'virtual_attribute'], label=u'CERT Key Tag', maxvalue=65535, minvalue=0, option_group=u'CERT Record'), Int('cert_part_algorithm?', cli_name='cert_algorithm', flags=[u'virtual_attribute'], label=u'CERT Algorithm', maxvalue=255, minvalue=0, option_group=u'CERT Record'), Str('cert_part_certificate_or_crl?', cli_name='cert_certificate_or_crl', flags=[u'virtual_attribute'], label=u'CERT Certificate/CRL', option_group=u'CERT Record'), CNAMERecord('cnamerecord*', cli_name='cname_rec', doc=u'Raw CNAME records', label=u'CNAME record', option_group=u'CNAME Record'), DNSNameParam('cname_part_hostname?', cli_name='cname_hostname', doc=Gettext('A hostname which this alias hostname points to', domain='ipa', localedir=None), flags=[u'virtual_attribute'], label=u'CNAME Hostname', option_group=u'CNAME Record'), DHCIDRecord('dhcidrecord*', cli_name='dhcid_rec', doc=u'Raw DHCID records', flags=[u'no_option'], label=u'DHCID record', option_group=u'DHCID Record'), DLVRecord('dlvrecord*', cli_name='dlv_rec', doc=u'Raw DLV records', label=u'DLV record', option_group=u'DLV Record'), Int('dlv_part_key_tag?', cli_name='dlv_key_tag', flags=[u'virtual_attribute'], label=u'DLV Key Tag', maxvalue=65535, minvalue=0, option_group=u'DLV Record'), Int('dlv_part_algorithm?', cli_name='dlv_algorithm', flags=[u'virtual_attribute'], label=u'DLV Algorithm', maxvalue=255, minvalue=0, option_group=u'DLV Record'), Int('dlv_part_digest_type?', cli_name='dlv_digest_type', flags=[u'virtual_attribute'], label=u'DLV Digest Type', maxvalue=255, minvalue=0, option_group=u'DLV Record'), Str('dlv_part_digest?', cli_name='dlv_digest', flags=[u'virtual_attribute'], label=u'DLV Digest', option_group=u'DLV Record', pattern=u'^[0-9a-fA-F]+$', pattern_errmsg=u'only hexadecimal digits are allowed'), DNAMERecord('dnamerecord*', cli_name='dname_rec', doc=u'Raw DNAME records', label=u'DNAME record', option_group=u'DNAME Record'), DNSNameParam('dname_part_target?', cli_name='dname_target', flags=[u'virtual_attribute'], label=u'DNAME Target', option_group=u'DNAME Record'), DSRecord('dsrecord*', cli_name='ds_rec', doc=u'Raw DS records', label=u'DS record', option_group=u'DS Record'), Int('ds_part_key_tag?', cli_name='ds_key_tag', flags=[u'virtual_attribute'], label=u'DS Key Tag', maxvalue=65535, minvalue=0, option_group=u'DS Record'), Int('ds_part_algorithm?', cli_name='ds_algorithm', flags=[u'virtual_attribute'], label=u'DS Algorithm', maxvalue=255, minvalue=0, option_group=u'DS Record'), Int('ds_part_digest_type?', cli_name='ds_digest_type', flags=[u'virtual_attribute'], label=u'DS Digest Type', maxvalue=255, minvalue=0, option_group=u'DS Record'), Str('ds_part_digest?', cli_name='ds_digest', flags=[u'virtual_attribute'], label=u'DS Digest', option_group=u'DS Record', pattern=u'^[0-9a-fA-F]+$', pattern_errmsg=u'only hexadecimal digits are allowed'), HIPRecord('hiprecord*', cli_name='hip_rec', doc=u'Raw HIP records', flags=[u'no_option'], label=u'HIP record', option_group=u'HIP Record'), IPSECKEYRecord('ipseckeyrecord*', cli_name='ipseckey_rec', doc=u'Raw IPSECKEY records', flags=[u'no_option'], label=u'IPSECKEY record', option_group=u'IPSECKEY Record'), KEYRecord('keyrecord*', cli_name='key_rec', doc=u'Raw KEY records', flags=[u'no_option'], label=u'KEY record', option_group=u'KEY Record'), KXRecord('kxrecord*', cli_name='kx_rec', doc=u'Raw KX records', label=u'KX record', option_group=u'KX Record'), Int('kx_part_preference?', cli_name='kx_preference', doc=Gettext('Preference given to this exchanger. Lower values are more preferred', domain='ipa', localedir=None), flags=[u'virtual_attribute'], label=u'KX Preference', maxvalue=65535, minvalue=0, option_group=u'KX Record'), DNSNameParam('kx_part_exchanger?', cli_name='kx_exchanger', doc=Gettext('A host willing to act as a key exchanger', domain='ipa', localedir=None), flags=[u'virtual_attribute'], label=u'KX Exchanger', option_group=u'KX Record'), LOCRecord('locrecord*', cli_name='loc_rec', doc=u'Raw LOC records', label=u'LOC record', option_group=u'LOC Record'), Int('loc_part_lat_deg?', cli_name='loc_lat_deg', flags=[u'virtual_attribute'], label=u'LOC Degrees Latitude', maxvalue=90, minvalue=0, option_group=u'LOC Record'), Int('loc_part_lat_min?', cli_name='loc_lat_min', flags=[u'dnsrecord_optional', u'virtual_attribute'], label=u'LOC Minutes Latitude', maxvalue=59, minvalue=0, option_group=u'LOC Record'), Decimal('loc_part_lat_sec?', cli_name='loc_lat_sec', flags=[u'dnsrecord_optional', u'virtual_attribute'], label=u'LOC Seconds Latitude', maxvalue=Decimal('59.999'), minvalue=Decimal('0.0'), option_group=u'LOC Record', precision=3), StrEnum('loc_part_lat_dir?', cli_metavar=u"['N', 'S']", cli_name='loc_lat_dir', flags=[u'virtual_attribute'], label=u'LOC Direction Latitude', option_group=u'LOC Record', values=[u'N', u'S']), Int('loc_part_lon_deg?', cli_name='loc_lon_deg', flags=[u'virtual_attribute'], label=u'LOC Degrees Longitude', maxvalue=180, minvalue=0, option_group=u'LOC Record'), Int('loc_part_lon_min?', cli_name='loc_lon_min', flags=[u'dnsrecord_optional', u'virtual_attribute'], label=u'LOC Minutes Longitude', maxvalue=59, minvalue=0, option_group=u'LOC Record'), Decimal('loc_part_lon_sec?', cli_name='loc_lon_sec', flags=[u'dnsrecord_optional', u'virtual_attribute'], label=u'LOC Seconds Longitude', maxvalue=Decimal('59.999'), minvalue=Decimal('0.0'), option_group=u'LOC Record', precision=3), StrEnum('loc_part_lon_dir?', cli_metavar=u"['E', 'W']", cli_name='loc_lon_dir', flags=[u'virtual_attribute'], label=u'LOC Direction Longitude', option_group=u'LOC Record', values=[u'E', u'W']), Decimal('loc_part_altitude?', cli_name='loc_altitude', flags=[u'virtual_attribute'], label=u'LOC Altitude', maxvalue=Decimal('42849672.95'), minvalue=Decimal('-100000.00'), option_group=u'LOC Record', precision=2), Decimal('loc_part_size?', cli_name='loc_size', flags=[u'dnsrecord_optional', u'virtual_attribute'], label=u'LOC Size', maxvalue=Decimal('90000000.00'), minvalue=Decimal('0.0'), option_group=u'LOC Record', precision=2), Decimal('loc_part_h_precision?', cli_name='loc_h_precision', flags=[u'dnsrecord_optional', u'virtual_attribute'], label=u'LOC Horizontal Precision', maxvalue=Decimal('90000000.00'), minvalue=Decimal('0.0'), option_group=u'LOC Record', precision=2), Decimal('loc_part_v_precision?', cli_name='loc_v_precision', flags=[u'dnsrecord_optional', u'virtual_attribute'], label=u'LOC Vertical Precision', maxvalue=Decimal('90000000.00'), minvalue=Decimal('0.0'), option_group=u'LOC Record', precision=2), MXRecord('mxrecord*', cli_name='mx_rec', doc=u'Raw MX records', label=u'MX record', option_group=u'MX Record'), Int('mx_part_preference?', cli_name='mx_preference', doc=Gettext('Preference given to this exchanger. Lower values are more preferred', domain='ipa', localedir=None), flags=[u'virtual_attribute'], label=u'MX Preference', maxvalue=65535, minvalue=0, option_group=u'MX Record'), DNSNameParam('mx_part_exchanger?', cli_name='mx_exchanger', doc=Gettext('A host willing to act as a mail exchanger', domain='ipa', localedir=None), flags=[u'virtual_attribute'], label=u'MX Exchanger', option_group=u'MX Record'), NAPTRRecord('naptrrecord*', cli_name='naptr_rec', doc=u'Raw NAPTR records', label=u'NAPTR record', option_group=u'NAPTR Record'), Int('naptr_part_order?', cli_name='naptr_order', flags=[u'virtual_attribute'], label=u'NAPTR Order', maxvalue=65535, minvalue=0, option_group=u'NAPTR Record'), Int('naptr_part_preference?', cli_name='naptr_preference', flags=[u'virtual_attribute'], label=u'NAPTR Preference', maxvalue=65535, minvalue=0, option_group=u'NAPTR Record'), Str('naptr_part_flags?', _validate_naptr_flags, cli_name='naptr_flags', flags=[u'virtual_attribute'], label=u'NAPTR Flags', normalizer=<lambda>, option_group=u'NAPTR Record'), Str('naptr_part_service?', cli_name='naptr_service', flags=[u'virtual_attribute'], label=u'NAPTR Service', option_group=u'NAPTR Record'), Str('naptr_part_regexp?', cli_name='naptr_regexp', flags=[u'virtual_attribute'], label=u'NAPTR Regular Expression', option_group=u'NAPTR Record'), Str('naptr_part_replacement?', cli_name='naptr_replacement', flags=[u'virtual_attribute'], label=u'NAPTR Replacement', option_group=u'NAPTR Record'), NSRecord('nsrecord*', cli_name='ns_rec', doc=u'Raw NS records', label=u'NS record', option_group=u'NS Record'), DNSNameParam('ns_part_hostname?', cli_name='ns_hostname', flags=[u'virtual_attribute'], label=u'NS Hostname', option_group=u'NS Record'), NSECRecord('nsecrecord*', cli_name='nsec_rec', doc=u'Raw NSEC records', flags=[u'no_option'], label=u'NSEC record', option_group=u'NSEC Record'), PTRRecord('ptrrecord*', cli_name='ptr_rec', doc=u'Raw PTR records', label=u'PTR record', option_group=u'PTR Record'), DNSNameParam('ptr_part_hostname?', cli_name='ptr_hostname', doc=Gettext('The hostname this reverse record points to', domain='ipa', localedir=None), flags=[u'virtual_attribute'], label=u'PTR Hostname', option_group=u'PTR Record'), RRSIGRecord('rrsigrecord*', cli_name='rrsig_rec', doc=u'Raw RRSIG records', flags=[u'no_option'], label=u'RRSIG record', option_group=u'RRSIG Record'), RPRecord('rprecord*', cli_name='rp_rec', doc=u'Raw RP records', flags=[u'no_option'], label=u'RP record', option_group=u'RP Record'), SIGRecord('sigrecord*', cli_name='sig_rec', doc=u'Raw SIG records', flags=[u'no_option'], label=u'SIG record', option_group=u'SIG Record'), SPFRecord('spfrecord*', cli_name='spf_rec', doc=u'Raw SPF records', flags=[u'no_option'], label=u'SPF record', option_group=u'SPF Record'), SRVRecord('srvrecord*', cli_name='srv_rec', doc=u'Raw SRV records', label=u'SRV record', option_group=u'SRV Record'), Int('srv_part_priority?', cli_name='srv_priority', doc=Gettext('Lower number means higher priority. Clients will attempt to contact the server with the lowest-numbered priority they can reach.', domain='ipa', localedir=None), flags=[u'virtual_attribute'], label=u'SRV Priority (order)', maxvalue=65535, minvalue=0, option_group=u'SRV Record'), Int('srv_part_weight?', cli_name='srv_weight', doc=Gettext('Relative weight for entries with the same priority.', domain='ipa', localedir=None), flags=[u'virtual_attribute'], label=u'SRV Weight', maxvalue=65535, minvalue=0, option_group=u'SRV Record'), Int('srv_part_port?', cli_name='srv_port', flags=[u'virtual_attribute'], label=u'SRV Port', maxvalue=65535, minvalue=0, option_group=u'SRV Record'), DNSNameParam('srv_part_target?', cli_name='srv_target', doc=Gettext("The domain name of the target host or '.' if the service is decidedly not available at this domain", domain='ipa', localedir=None), flags=[u'virtual_attribute'], label=u'SRV Target', option_group=u'SRV Record'), SSHFPRecord('sshfprecord*', cli_name='sshfp_rec', doc=u'Raw SSHFP records', label=u'SSHFP record', option_group=u'SSHFP Record'), Int('sshfp_part_algorithm?', cli_name='sshfp_algorithm', flags=[u'virtual_attribute'], label=u'SSHFP Algorithm', maxvalue=255, minvalue=0, option_group=u'SSHFP Record'), Int('sshfp_part_fp_type?', cli_name='sshfp_fp_type', flags=[u'virtual_attribute'], label=u'SSHFP Fingerprint Type', maxvalue=255, minvalue=0, option_group=u'SSHFP Record'), Str('sshfp_part_fingerprint?', cli_name='sshfp_fingerprint', flags=[u'virtual_attribute'], label=u'SSHFP Fingerprint', option_group=u'SSHFP Record'), TLSARecord('tlsarecord*', cli_name='tlsa_rec', doc=u'Raw TLSA records', label=u'TLSA record', option_group=u'TLSA Record'), Int('tlsa_part_cert_usage?', cli_name='tlsa_cert_usage', flags=[u'virtual_attribute'], label=u'TLSA Certificate Usage', maxvalue=255, minvalue=0, option_group=u'TLSA Record'), Int('tlsa_part_selector?', cli_name='tlsa_selector', flags=[u'virtual_attribute'], label=u'TLSA Selector', maxvalue=255, minvalue=0, option_group=u'TLSA Record'), Int('tlsa_part_matching_type?', cli_name='tlsa_matching_type', flags=[u'virtual_attribute'], label=u'TLSA Matching Type', maxvalue=255, minvalue=0, option_group=u'TLSA Record'), Str('tlsa_part_cert_association_data?', cli_name='tlsa_cert_association_data', flags=[u'virtual_attribute'], label=u'TLSA Certificate Association Data', option_group=u'TLSA Record'), TXTRecord('txtrecord*', cli_name='txt_rec', doc=u'Raw TXT records', label=u'TXT record', option_group=u'TXT Record'), Str('txt_part_data?', cli_name='txt_data', flags=[u'virtual_attribute'], label=u'TXT Text Data', option_group=u'TXT Record'), URIRecord('urirecord*', cli_name='uri_rec', doc=u'Raw URI records', label=u'URI record', option_group=u'URI Record'), Int('uri_part_priority?', cli_name='uri_priority', doc=Gettext('Lower number means higher priority. Clients will attempt to contact the URI with the lowest-numbered priority they can reach.', domain='ipa', localedir=None), flags=[u'virtual_attribute'], label=u'URI Priority (order)', maxvalue=65535, minvalue=0, option_group=u'URI Record'), Int('uri_part_weight?', cli_name='uri_weight', doc=Gettext('Relative weight for entries with the same priority.', domain='ipa', localedir=None), flags=[u'virtual_attribute'], label=u'URI Weight', maxvalue=65535, minvalue=0, option_group=u'URI Record'), Str('uri_part_target?', cli_name='uri_target', doc=Gettext('Target Uniform Resource Identifier according to RFC 3986', domain='ipa', localedir=None), flags=[u'virtual_attribute'], label=u'URI Target Uniform Resource Identifier', minlength=1, normalizer=_normalize_uri_target, option_group=u'URI Record')), 'structured_flag': Flag('structured', autofill=True, default=False, doc=Gettext('Parse all raw DNS records and return them in a structured way', domain='ipa', localedir=None), label=Gettext('Structured', domain='ipa', localedir=None)), '_dsrecord_pre_callback': <function dnsrecord._dsrecord_pre_callback>, '_nsrecord_pre_callback': <function dnsrecord._nsrecord_pre_callback>, '_idnsname_pre_callback': <function dnsrecord._idnsname_pre_callback>, '_ptrrecord_pre_callback': <function dnsrecord._ptrrecord_pre_callback>, 'run_precallback_validators': <function dnsrecord.run_precallback_validators>, 'is_pkey_zone_record': <function dnsrecord.is_pkey_zone_record>, 'check_zone': <function dnsrecord.check_zone>, 'get_dn': <function dnsrecord.get_dn>, 'attr_to_cli': <function dnsrecord.attr_to_cli>, 'get_dns_masters': <function dnsrecord.get_dns_masters>, 'get_record_entry_attrs': <function dnsrecord.get_record_entry_attrs>, 'postprocess_record': <function dnsrecord.postprocess_record>, 'updated_rrattrs': <function dnsrecord.updated_rrattrs>, 'check_record_type_collisions': <function dnsrecord.check_record_type_collisions>, 'check_record_type_dependencies': <function dnsrecord.check_record_type_dependencies>, '_entry2rrsets': <function dnsrecord._entry2rrsets>, 'wait_for_modified_attr': <function dnsrecord.wait_for_modified_attr>, 'wait_for_modified_attrs': <function dnsrecord.wait_for_modified_attrs>, 'wait_for_modified_entries': <function dnsrecord.wait_for_modified_entries>, 'warning_if_ns_change_cause_fwzone_ineffective': <function dnsrecord.warning_if_ns_change_cause_fwzone_ineffective>, 'warning_suspicious_relative_name': <function dnsrecord.warning_suspicious_relative_name>, '__annotations__': {}})
__init__(api)
__islocked__()

Return True if instance is locked, otherwise False.

__json__()
__lock__()

Put this instance into a read-only state.

After the instance has been locked, attempting to set or delete an attribute will raise an AttributeError.

__module__ = 'ipaserver.plugins.dns'
__repr__()

Return ‘module_name.class_name()’ representation.

This representation could be used to instantiate this Plugin instance given the appropriate environment.

__setattr__(name, value)

If unlocked, set attribute named name to value.

If this instance is locked, an AttributeError will be raised.

Parameters
  • name – Name of attribute to set.

  • value – Value to assign to attribute.

__weakref__

list of weak references to the object (if defined)

_create_param_namespace(name, env=None)
_dsrecord_pre_callback(ldap, dn, entry_attrs, *keys, **options)[source]
_entry2rrsets(entry_attrs, dns_name, dns_domain)[source]

Convert entry_attrs to a dictionary {rdtype: rrset}.

Returns

None if entry_attrs is None {rdtype: None} if RRset of given type is empty {rdtype: RRset} if RRset of given type is non-empty

_filter_param_by_context(name, env=None)

Filter params on attribute named name by environment env.

For example:

>>> from ipalib.config import Env
>>> class Example(HasParam):
...
...     takes_args = (
...         Str('foo_only', include=['foo']),
...         Str('not_bar', exclude=['bar']),
...         'both',
...     )
...
...     def get_args(self):
...         return self._get_param_iterable('args')
...
...
>>> eg = Example()
>>> foo = Env(context='foo')
>>> bar = Env(context='bar')
>>> another = Env(context='another')
>>> (foo.context, bar.context, another.context)
(u'foo', u'bar', u'another')
>>> list(eg._filter_param_by_context('args', foo))
[Str('foo_only', include=['foo']), Str('not_bar', exclude=['bar']), Str('both')]
>>> list(eg._filter_param_by_context('args', bar))
[Str('both')]
>>> list(eg._filter_param_by_context('args', another))
[Str('not_bar', exclude=['bar']), Str('both')]
_get_param_iterable(name, verb='takes')

Return an iterable of params defined by the attribute named name.

A sequence of params can be defined one of three ways: as a tuple; as a callable that returns an iterable; or as a param spec (a Param or str instance). This method returns a uniform iterable regardless of how the param sequence was defined.

For example, when defined with a tuple:

>>> class ByTuple(HasParam):
...     takes_args = (Param('foo'), Param('bar'))
...
>>> by_tuple = ByTuple()
>>> list(by_tuple._get_param_iterable('args'))
[Param('foo'), Param('bar')]

Or you can define your param sequence with a callable when you need to reference attributes on your plugin instance (for validation rules, etc.). For example:

>>> class ByCallable(HasParam):
...     def takes_args(self):
...         yield Param('foo', self.validate_foo)
...         yield Param('bar', self.validate_bar)
...
...     def validate_foo(self, _, value, **kw):
...         if value != 'Foo':
...             return _("must be 'Foo'")
...
...     def validate_bar(self, _, value, **kw):
...         if value != 'Bar':
...             return _("must be 'Bar'")
...
>>> by_callable = ByCallable()
>>> list(by_callable._get_param_iterable('args'))
[Param('foo', validate_foo), Param('bar', validate_bar)]

Lastly, as a convenience for when a param sequence contains a single param, your defining attribute may a param spec (either a Param or an str instance). For example:

>>> class BySpec(HasParam):
...     takes_args = Param('foo')
...     takes_options = 'bar?'
...
>>> by_spec = BySpec()
>>> list(by_spec._get_param_iterable('args'))
[Param('foo')]
>>> list(by_spec._get_param_iterable('options'))
['bar?']

For information on how an str param spec is interpreted, see the create_param() and parse_param_spec() functions in the ipalib.parameters module.

Also see HasParam._filter_param_by_context().

_idnsname_pre_callback(ldap, dn, entry_attrs, *keys, **options)[source]
_nsrecord_pre_callback(ldap, dn, entry_attrs, *keys, **options)[source]
_on_finalize()

Do custom finalization.

This method is called from finalize(). Subclasses can override this method in order to add custom finalization.

_ptrrecord_pre_callback(ldap, dn, entry_attrs, *keys, **options)[source]
allow_rename = True
already_exists_msg = Gettext('%(oname)s with name "%(pkey)s" already exists', domain='ipa', localedir=None)
property api

Return API instance passed to __init__().

attr_to_cli(attr)[source]
attribute_members = {}
backend = None
backend_name = 'ldap2'
bases = (<class 'ipaserver.plugins.baseldap.LDAPObject'>,)
bindable = False
check_record_type_collisions(keys, rrattrs)[source]
check_record_type_dependencies(keys, rrattrs)[source]
check_zone(zone, **options)[source]

Check if zone exists and if is master zone

container_dn = ipapython.dn.DN('cn=dns')
container_not_found_msg = Gettext('container entry (%(container)s) not found', domain='ipa', localedir=None)
property context
convert_attribute_members(entry_attrs, *keys, **options)
default_attributes = ['idnsname', 'arecord', 'aaaarecord', 'a6record', 'afsdbrecord', 'aplrecord', 'certrecord', 'cnamerecord', 'dhcidrecord', 'dlvrecord', 'dnamerecord', 'dsrecord', 'hiprecord', 'hinforecord', 'ipseckeyrecord', 'keyrecord', 'kxrecord', 'locrecord', 'mdrecord', 'minforecord', 'mxrecord', 'naptrrecord', 'nsrecord', 'nsecrecord', 'nxtrecord', 'ptrrecord', 'rrsigrecord', 'rprecord', 'sigrecord', 'spfrecord', 'srvrecord', 'sshfprecord', 'tlsarecord', 'txtrecord', 'urirecord']
disallow_object_classes = []
doc = '\n    DNS record.\n    '
ensure_finalized()

Finalize plugin initialization if it has not yet been finalized.

property env
finalize()

Finalize plugin initialization.

This method calls _on_finalize() and locks the plugin object.

Subclasses should not override this method. Custom finalization is done in _on_finalize().

class finalize_attr(name, value=None)

Bases: object

Create a stub object for plugin attribute that isn’t set until the finalization of the plugin initialization.

When the stub object is accessed, it calls ensure_finalized() to make sure the plugin initialization is finalized. The stub object is expected to be replaced with the actual attribute value during the finalization (preferably in _on_finalize()), otherwise an AttributeError is raised.

This is used to implement on-demand finalization of plugin initialization.

__annotations__ = {}
__get__(obj, cls)
__init__(name, value=None)
__module__ = 'ipalib.plugable'
__slots__ = ('name', 'value')
name
value
full_name = 'dnsrecord/1'
get_ancestor_primary_keys()
get_dn(*keys, **options)[source]

Construct an LDAP DN.

get_dn_if_exists(*keys, **kwargs)
get_dns_masters()[source]
get_indirect_members(entry_attrs, attrs_list)
get_memberindirect(group_entry)

Get indirect members

get_memberofindirect(entry)
get_params()

This method gets called by HasParam._create_param_namespace().

get_password_attributes(ldap, dn, entry_attrs)

Search on the entry to determine if it has a password or keytab set.

A tuple is used to determine which attribute is set in entry_attrs. The value is set to True/False whether a given password type is set.

get_primary_key_from_dn(dn)
get_record_entry_attrs(entry_attrs)[source]
handle_duplicate_entry(*keys)
handle_not_found(*keys)

Handle NotFound exception

Must raise errors.NotFound again.

has_objectclass(classes, objectclass)
hidden_attributes = ['objectclass', 'aci']
is_pkey_zone_record(*keys)[source]
json_friendly_attributes = ('parent_object', 'container_dn', 'object_name', 'object_name_plural', 'object_class', 'object_class_config', 'default_attributes', 'label', 'label_singular', 'hidden_attributes', 'uuid_attribute', 'attribute_members', 'name', 'takes_params', 'rdn_attribute', 'bindable', 'relationships')
label = Gettext('DNS Resource Records', domain='ipa', localedir=None)
label_singular = Gettext('DNS Resource Record', domain='ipa', localedir=None)
limit_object_classes = []
managed_permissions = {}
methods = None
name = 'dnsrecord'
object_class = ['top', 'idnsrecord']
object_class_config = None
object_name = Gettext('DNS resource record', domain='ipa', localedir=None)
object_name_plural = Gettext('DNS resource records', domain='ipa', localedir=None)
object_not_found_msg = Gettext('%(pkey)s: %(oname)s not found', domain='ipa', localedir=None)
params = None
params_minus(*names)

Yield all Param whose name is not in names.

params_minus_pk = None
parent_not_found_msg = Gettext('%(parent)s: %(oname)s not found', domain='ipa', localedir=None)
parent_object = 'dnszone'
password_attributes = []
permission_filter_objectclasses = ['idnsrecord']
possible_objectclasses = ['idnsTemplateObject']
postprocess_record(record, **options)[source]
primary_key = None
rdn_attribute = ''
relationships = {'member': ('Member', '', 'no_'), 'memberindirect': ('Indirect Member', None, 'no_indirect_'), 'membermanager': ('Group membership managed by', 'membermanager_', 'not_membermanager_'), 'memberof': ('Member Of', 'in_', 'not_in_'), 'memberofindirect': ('Indirect Member Of', None, 'not_in_indirect_')}
run_precallback_validators(dn, entry_attrs, *keys, **options)[source]
search_attributes = []
search_attributes_config = None
search_display_attributes = []
structured_flag = Flag('structured', autofill=True, default=False, doc=Gettext('Parse all raw DNS records and return them in a structured way', domain='ipa', localedir=None), label=Gettext('Structured', domain='ipa', localedir=None))
summary = 'DNS record.'
takes_params = (DNSNameParam('idnsname', cli_name='name', doc=Gettext('Record name', domain='ipa', localedir=None), label=Gettext('Record name', domain='ipa', localedir=None), primary_key=True), Int('dnsttl?', cli_name='ttl', doc=Gettext('Time to live', domain='ipa', localedir=None), label=Gettext('Time to live', domain='ipa', localedir=None), maxvalue=2147483647, minvalue=0), StrEnum('dnsclass?', cli_metavar=u"['IN', 'CS', 'CH', 'HS']", cli_name='class', flags=[u'no_option'], values=[u'IN', u'CS', u'CH', u'HS']), Any('dnsrecords?', flags=[u'no_create', u'no_search', u'no_update'], label=Gettext('Records', domain='ipa', localedir=None)), Str('dnstype?', flags=[u'no_create', u'no_search', u'no_update'], label=Gettext('Record type', domain='ipa', localedir=None)), Str('dnsdata?', flags=[u'no_create', u'no_search', u'no_update'], label=Gettext('Record data', domain='ipa', localedir=None)), ARecord('arecord*', cli_name='a_rec', doc=u'Raw A records', label=u'A record', option_group=u'A Record'), Str('a_part_ip_address?', _validate_ip4addr, cli_name='a_ip_address', flags=[u'virtual_attribute'], label=u'A IP Address', option_group=u'A Record'), Flag('a_extra_create_reverse?', autofill=True, cli_name='a_create_reverse', default=False, doc=Gettext('Create reverse record for this IP Address', domain='ipa', localedir=None), flags=[u'no_update', u'virtual_attribute'], label=u'A Create reverse', option_group=u'A Record'), AAAARecord('aaaarecord*', cli_name='aaaa_rec', doc=u'Raw AAAA records', label=u'AAAA record', option_group=u'AAAA Record'), Str('aaaa_part_ip_address?', _validate_ip6addr, cli_name='aaaa_ip_address', flags=[u'virtual_attribute'], label=u'AAAA IP Address', option_group=u'AAAA Record'), Flag('aaaa_extra_create_reverse?', autofill=True, cli_name='aaaa_create_reverse', default=False, doc=Gettext('Create reverse record for this IP Address', domain='ipa', localedir=None), flags=[u'no_update', u'virtual_attribute'], label=u'AAAA Create reverse', option_group=u'AAAA Record'), A6Record('a6record*', cli_name='a6_rec', doc=u'Raw A6 records', label=u'A6 record', option_group=u'A6 Record'), Str('a6_part_data?', cli_name='a6_data', flags=[u'virtual_attribute'], label=u'A6 Record data', option_group=u'A6 Record'), AFSDBRecord('afsdbrecord*', cli_name='afsdb_rec', doc=u'Raw AFSDB records', label=u'AFSDB record', option_group=u'AFSDB Record'), Int('afsdb_part_subtype?', cli_name='afsdb_subtype', flags=[u'dnsrecord_optional', u'virtual_attribute'], label=u'AFSDB Subtype', maxvalue=65535, minvalue=0, option_group=u'AFSDB Record'), DNSNameParam('afsdb_part_hostname?', cli_name='afsdb_hostname', flags=[u'virtual_attribute'], label=u'AFSDB Hostname', option_group=u'AFSDB Record'), APLRecord('aplrecord*', cli_name='apl_rec', doc=u'Raw APL records', flags=[u'no_option'], label=u'APL record', option_group=u'APL Record'), CERTRecord('certrecord*', cli_name='cert_rec', doc=u'Raw CERT records', label=u'CERT record', option_group=u'CERT Record'), Int('cert_part_type?', cli_name='cert_type', flags=[u'virtual_attribute'], label=u'CERT Certificate Type', maxvalue=65535, minvalue=0, option_group=u'CERT Record'), Int('cert_part_key_tag?', cli_name='cert_key_tag', flags=[u'virtual_attribute'], label=u'CERT Key Tag', maxvalue=65535, minvalue=0, option_group=u'CERT Record'), Int('cert_part_algorithm?', cli_name='cert_algorithm', flags=[u'virtual_attribute'], label=u'CERT Algorithm', maxvalue=255, minvalue=0, option_group=u'CERT Record'), Str('cert_part_certificate_or_crl?', cli_name='cert_certificate_or_crl', flags=[u'virtual_attribute'], label=u'CERT Certificate/CRL', option_group=u'CERT Record'), CNAMERecord('cnamerecord*', cli_name='cname_rec', doc=u'Raw CNAME records', label=u'CNAME record', option_group=u'CNAME Record'), DNSNameParam('cname_part_hostname?', cli_name='cname_hostname', doc=Gettext('A hostname which this alias hostname points to', domain='ipa', localedir=None), flags=[u'virtual_attribute'], label=u'CNAME Hostname', option_group=u'CNAME Record'), DHCIDRecord('dhcidrecord*', cli_name='dhcid_rec', doc=u'Raw DHCID records', flags=[u'no_option'], label=u'DHCID record', option_group=u'DHCID Record'), DLVRecord('dlvrecord*', cli_name='dlv_rec', doc=u'Raw DLV records', label=u'DLV record', option_group=u'DLV Record'), Int('dlv_part_key_tag?', cli_name='dlv_key_tag', flags=[u'virtual_attribute'], label=u'DLV Key Tag', maxvalue=65535, minvalue=0, option_group=u'DLV Record'), Int('dlv_part_algorithm?', cli_name='dlv_algorithm', flags=[u'virtual_attribute'], label=u'DLV Algorithm', maxvalue=255, minvalue=0, option_group=u'DLV Record'), Int('dlv_part_digest_type?', cli_name='dlv_digest_type', flags=[u'virtual_attribute'], label=u'DLV Digest Type', maxvalue=255, minvalue=0, option_group=u'DLV Record'), Str('dlv_part_digest?', cli_name='dlv_digest', flags=[u'virtual_attribute'], label=u'DLV Digest', option_group=u'DLV Record', pattern=u'^[0-9a-fA-F]+$', pattern_errmsg=u'only hexadecimal digits are allowed'), DNAMERecord('dnamerecord*', cli_name='dname_rec', doc=u'Raw DNAME records', label=u'DNAME record', option_group=u'DNAME Record'), DNSNameParam('dname_part_target?', cli_name='dname_target', flags=[u'virtual_attribute'], label=u'DNAME Target', option_group=u'DNAME Record'), DSRecord('dsrecord*', cli_name='ds_rec', doc=u'Raw DS records', label=u'DS record', option_group=u'DS Record'), Int('ds_part_key_tag?', cli_name='ds_key_tag', flags=[u'virtual_attribute'], label=u'DS Key Tag', maxvalue=65535, minvalue=0, option_group=u'DS Record'), Int('ds_part_algorithm?', cli_name='ds_algorithm', flags=[u'virtual_attribute'], label=u'DS Algorithm', maxvalue=255, minvalue=0, option_group=u'DS Record'), Int('ds_part_digest_type?', cli_name='ds_digest_type', flags=[u'virtual_attribute'], label=u'DS Digest Type', maxvalue=255, minvalue=0, option_group=u'DS Record'), Str('ds_part_digest?', cli_name='ds_digest', flags=[u'virtual_attribute'], label=u'DS Digest', option_group=u'DS Record', pattern=u'^[0-9a-fA-F]+$', pattern_errmsg=u'only hexadecimal digits are allowed'), HIPRecord('hiprecord*', cli_name='hip_rec', doc=u'Raw HIP records', flags=[u'no_option'], label=u'HIP record', option_group=u'HIP Record'), IPSECKEYRecord('ipseckeyrecord*', cli_name='ipseckey_rec', doc=u'Raw IPSECKEY records', flags=[u'no_option'], label=u'IPSECKEY record', option_group=u'IPSECKEY Record'), KEYRecord('keyrecord*', cli_name='key_rec', doc=u'Raw KEY records', flags=[u'no_option'], label=u'KEY record', option_group=u'KEY Record'), KXRecord('kxrecord*', cli_name='kx_rec', doc=u'Raw KX records', label=u'KX record', option_group=u'KX Record'), Int('kx_part_preference?', cli_name='kx_preference', doc=Gettext('Preference given to this exchanger. Lower values are more preferred', domain='ipa', localedir=None), flags=[u'virtual_attribute'], label=u'KX Preference', maxvalue=65535, minvalue=0, option_group=u'KX Record'), DNSNameParam('kx_part_exchanger?', cli_name='kx_exchanger', doc=Gettext('A host willing to act as a key exchanger', domain='ipa', localedir=None), flags=[u'virtual_attribute'], label=u'KX Exchanger', option_group=u'KX Record'), LOCRecord('locrecord*', cli_name='loc_rec', doc=u'Raw LOC records', label=u'LOC record', option_group=u'LOC Record'), Int('loc_part_lat_deg?', cli_name='loc_lat_deg', flags=[u'virtual_attribute'], label=u'LOC Degrees Latitude', maxvalue=90, minvalue=0, option_group=u'LOC Record'), Int('loc_part_lat_min?', cli_name='loc_lat_min', flags=[u'dnsrecord_optional', u'virtual_attribute'], label=u'LOC Minutes Latitude', maxvalue=59, minvalue=0, option_group=u'LOC Record'), Decimal('loc_part_lat_sec?', cli_name='loc_lat_sec', flags=[u'dnsrecord_optional', u'virtual_attribute'], label=u'LOC Seconds Latitude', maxvalue=Decimal('59.999'), minvalue=Decimal('0.0'), option_group=u'LOC Record', precision=3), StrEnum('loc_part_lat_dir?', cli_metavar=u"['N', 'S']", cli_name='loc_lat_dir', flags=[u'virtual_attribute'], label=u'LOC Direction Latitude', option_group=u'LOC Record', values=[u'N', u'S']), Int('loc_part_lon_deg?', cli_name='loc_lon_deg', flags=[u'virtual_attribute'], label=u'LOC Degrees Longitude', maxvalue=180, minvalue=0, option_group=u'LOC Record'), Int('loc_part_lon_min?', cli_name='loc_lon_min', flags=[u'dnsrecord_optional', u'virtual_attribute'], label=u'LOC Minutes Longitude', maxvalue=59, minvalue=0, option_group=u'LOC Record'), Decimal('loc_part_lon_sec?', cli_name='loc_lon_sec', flags=[u'dnsrecord_optional', u'virtual_attribute'], label=u'LOC Seconds Longitude', maxvalue=Decimal('59.999'), minvalue=Decimal('0.0'), option_group=u'LOC Record', precision=3), StrEnum('loc_part_lon_dir?', cli_metavar=u"['E', 'W']", cli_name='loc_lon_dir', flags=[u'virtual_attribute'], label=u'LOC Direction Longitude', option_group=u'LOC Record', values=[u'E', u'W']), Decimal('loc_part_altitude?', cli_name='loc_altitude', flags=[u'virtual_attribute'], label=u'LOC Altitude', maxvalue=Decimal('42849672.95'), minvalue=Decimal('-100000.00'), option_group=u'LOC Record', precision=2), Decimal('loc_part_size?', cli_name='loc_size', flags=[u'dnsrecord_optional', u'virtual_attribute'], label=u'LOC Size', maxvalue=Decimal('90000000.00'), minvalue=Decimal('0.0'), option_group=u'LOC Record', precision=2), Decimal('loc_part_h_precision?', cli_name='loc_h_precision', flags=[u'dnsrecord_optional', u'virtual_attribute'], label=u'LOC Horizontal Precision', maxvalue=Decimal('90000000.00'), minvalue=Decimal('0.0'), option_group=u'LOC Record', precision=2), Decimal('loc_part_v_precision?', cli_name='loc_v_precision', flags=[u'dnsrecord_optional', u'virtual_attribute'], label=u'LOC Vertical Precision', maxvalue=Decimal('90000000.00'), minvalue=Decimal('0.0'), option_group=u'LOC Record', precision=2), MXRecord('mxrecord*', cli_name='mx_rec', doc=u'Raw MX records', label=u'MX record', option_group=u'MX Record'), Int('mx_part_preference?', cli_name='mx_preference', doc=Gettext('Preference given to this exchanger. Lower values are more preferred', domain='ipa', localedir=None), flags=[u'virtual_attribute'], label=u'MX Preference', maxvalue=65535, minvalue=0, option_group=u'MX Record'), DNSNameParam('mx_part_exchanger?', cli_name='mx_exchanger', doc=Gettext('A host willing to act as a mail exchanger', domain='ipa', localedir=None), flags=[u'virtual_attribute'], label=u'MX Exchanger', option_group=u'MX Record'), NAPTRRecord('naptrrecord*', cli_name='naptr_rec', doc=u'Raw NAPTR records', label=u'NAPTR record', option_group=u'NAPTR Record'), Int('naptr_part_order?', cli_name='naptr_order', flags=[u'virtual_attribute'], label=u'NAPTR Order', maxvalue=65535, minvalue=0, option_group=u'NAPTR Record'), Int('naptr_part_preference?', cli_name='naptr_preference', flags=[u'virtual_attribute'], label=u'NAPTR Preference', maxvalue=65535, minvalue=0, option_group=u'NAPTR Record'), Str('naptr_part_flags?', _validate_naptr_flags, cli_name='naptr_flags', flags=[u'virtual_attribute'], label=u'NAPTR Flags', normalizer=<lambda>, option_group=u'NAPTR Record'), Str('naptr_part_service?', cli_name='naptr_service', flags=[u'virtual_attribute'], label=u'NAPTR Service', option_group=u'NAPTR Record'), Str('naptr_part_regexp?', cli_name='naptr_regexp', flags=[u'virtual_attribute'], label=u'NAPTR Regular Expression', option_group=u'NAPTR Record'), Str('naptr_part_replacement?', cli_name='naptr_replacement', flags=[u'virtual_attribute'], label=u'NAPTR Replacement', option_group=u'NAPTR Record'), NSRecord('nsrecord*', cli_name='ns_rec', doc=u'Raw NS records', label=u'NS record', option_group=u'NS Record'), DNSNameParam('ns_part_hostname?', cli_name='ns_hostname', flags=[u'virtual_attribute'], label=u'NS Hostname', option_group=u'NS Record'), NSECRecord('nsecrecord*', cli_name='nsec_rec', doc=u'Raw NSEC records', flags=[u'no_option'], label=u'NSEC record', option_group=u'NSEC Record'), PTRRecord('ptrrecord*', cli_name='ptr_rec', doc=u'Raw PTR records', label=u'PTR record', option_group=u'PTR Record'), DNSNameParam('ptr_part_hostname?', cli_name='ptr_hostname', doc=Gettext('The hostname this reverse record points to', domain='ipa', localedir=None), flags=[u'virtual_attribute'], label=u'PTR Hostname', option_group=u'PTR Record'), RRSIGRecord('rrsigrecord*', cli_name='rrsig_rec', doc=u'Raw RRSIG records', flags=[u'no_option'], label=u'RRSIG record', option_group=u'RRSIG Record'), RPRecord('rprecord*', cli_name='rp_rec', doc=u'Raw RP records', flags=[u'no_option'], label=u'RP record', option_group=u'RP Record'), SIGRecord('sigrecord*', cli_name='sig_rec', doc=u'Raw SIG records', flags=[u'no_option'], label=u'SIG record', option_group=u'SIG Record'), SPFRecord('spfrecord*', cli_name='spf_rec', doc=u'Raw SPF records', flags=[u'no_option'], label=u'SPF record', option_group=u'SPF Record'), SRVRecord('srvrecord*', cli_name='srv_rec', doc=u'Raw SRV records', label=u'SRV record', option_group=u'SRV Record'), Int('srv_part_priority?', cli_name='srv_priority', doc=Gettext('Lower number means higher priority. Clients will attempt to contact the server with the lowest-numbered priority they can reach.', domain='ipa', localedir=None), flags=[u'virtual_attribute'], label=u'SRV Priority (order)', maxvalue=65535, minvalue=0, option_group=u'SRV Record'), Int('srv_part_weight?', cli_name='srv_weight', doc=Gettext('Relative weight for entries with the same priority.', domain='ipa', localedir=None), flags=[u'virtual_attribute'], label=u'SRV Weight', maxvalue=65535, minvalue=0, option_group=u'SRV Record'), Int('srv_part_port?', cli_name='srv_port', flags=[u'virtual_attribute'], label=u'SRV Port', maxvalue=65535, minvalue=0, option_group=u'SRV Record'), DNSNameParam('srv_part_target?', cli_name='srv_target', doc=Gettext("The domain name of the target host or '.' if the service is decidedly not available at this domain", domain='ipa', localedir=None), flags=[u'virtual_attribute'], label=u'SRV Target', option_group=u'SRV Record'), SSHFPRecord('sshfprecord*', cli_name='sshfp_rec', doc=u'Raw SSHFP records', label=u'SSHFP record', option_group=u'SSHFP Record'), Int('sshfp_part_algorithm?', cli_name='sshfp_algorithm', flags=[u'virtual_attribute'], label=u'SSHFP Algorithm', maxvalue=255, minvalue=0, option_group=u'SSHFP Record'), Int('sshfp_part_fp_type?', cli_name='sshfp_fp_type', flags=[u'virtual_attribute'], label=u'SSHFP Fingerprint Type', maxvalue=255, minvalue=0, option_group=u'SSHFP Record'), Str('sshfp_part_fingerprint?', cli_name='sshfp_fingerprint', flags=[u'virtual_attribute'], label=u'SSHFP Fingerprint', option_group=u'SSHFP Record'), TLSARecord('tlsarecord*', cli_name='tlsa_rec', doc=u'Raw TLSA records', label=u'TLSA record', option_group=u'TLSA Record'), Int('tlsa_part_cert_usage?', cli_name='tlsa_cert_usage', flags=[u'virtual_attribute'], label=u'TLSA Certificate Usage', maxvalue=255, minvalue=0, option_group=u'TLSA Record'), Int('tlsa_part_selector?', cli_name='tlsa_selector', flags=[u'virtual_attribute'], label=u'TLSA Selector', maxvalue=255, minvalue=0, option_group=u'TLSA Record'), Int('tlsa_part_matching_type?', cli_name='tlsa_matching_type', flags=[u'virtual_attribute'], label=u'TLSA Matching Type', maxvalue=255, minvalue=0, option_group=u'TLSA Record'), Str('tlsa_part_cert_association_data?', cli_name='tlsa_cert_association_data', flags=[u'virtual_attribute'], label=u'TLSA Certificate Association Data', option_group=u'TLSA Record'), TXTRecord('txtrecord*', cli_name='txt_rec', doc=u'Raw TXT records', label=u'TXT record', option_group=u'TXT Record'), Str('txt_part_data?', cli_name='txt_data', flags=[u'virtual_attribute'], label=u'TXT Text Data', option_group=u'TXT Record'), URIRecord('urirecord*', cli_name='uri_rec', doc=u'Raw URI records', label=u'URI record', option_group=u'URI Record'), Int('uri_part_priority?', cli_name='uri_priority', doc=Gettext('Lower number means higher priority. Clients will attempt to contact the URI with the lowest-numbered priority they can reach.', domain='ipa', localedir=None), flags=[u'virtual_attribute'], label=u'URI Priority (order)', maxvalue=65535, minvalue=0, option_group=u'URI Record'), Int('uri_part_weight?', cli_name='uri_weight', doc=Gettext('Relative weight for entries with the same priority.', domain='ipa', localedir=None), flags=[u'virtual_attribute'], label=u'URI Weight', maxvalue=65535, minvalue=0, option_group=u'URI Record'), Str('uri_part_target?', cli_name='uri_target', doc=Gettext('Target Uniform Resource Identifier according to RFC 3986', domain='ipa', localedir=None), flags=[u'virtual_attribute'], label=u'URI Target Uniform Resource Identifier', minlength=1, normalizer=_normalize_uri_target, option_group=u'URI Record'))
updated_rrattrs(old_entry, entry_attrs)[source]

Returns updated RR attributes

uuid_attribute = ''
version = '1'
wait_for_modified_attr(ldap_rrset, rdtype, dns_name)[source]
Wait until DNS resolver returns up-to-date answer for given RRset

or until the maximum number of attempts is reached. Number of attempts is controlled by self.api.env[‘wait_for_dns’].

Parameters
  • ldap_rrset – None if given rdtype should not exist or dns.rrset.RRset to match against data in DNS.

  • dns_name (dns.name.Name) – FQDN to query

Returns

None if data in DNS and LDAP match

Raises
  • errors.DNSDataMismatch – if data in DNS and LDAP doesn’t match

  • dns.exception.DNSException – if DNS resolution failed

wait_for_modified_attrs(entry_attrs, dns_name, dns_domain)[source]
Wait until DNS resolver returns up-to-date answer for given entry

or until the maximum number of attempts is reached.

Parameters
  • entry_attrs – None if the entry was deleted from LDAP or LDAPEntry instance containing at least all modified attributes.

  • dns_name (dns.name.Name) – FQDN

Raises

errors.DNSDataMismatch – if data in DNS and LDAP doesn’t match

wait_for_modified_entries(entries)[source]

Call wait_for_modified_attrs for all entries in given dict.

Parameters

entries – Dict {(dns_domain, dns_name): entry_for_wait_for_modified_attrs}

warning_if_ns_change_cause_fwzone_ineffective(result, *keys, **options)[source]

Detect if NS record change can make forward zones ineffective due missing delegation. Run after parent’s execute method.

warning_suspicious_relative_name(result, *keys, **options)[source]

Detect if zone name is suffix of relative record name and warn.

Zone name: test.zone. Relative name: record.test.zone