[Freeipa-devel] [PATCH 0473-0476]DNS Locations: Prologue
Martin Basti
mbasti at redhat.com
Thu May 12 09:01:06 UTC 2016
On 11.05.2016 09:41, Martin Basti wrote:
>
>
> On 10.05.2016 18:56, Petr Spacek wrote:
>> On 10.5.2016 15:38, Petr Spacek wrote:
>>> On 10.5.2016 15:26, Martin Basti wrote:
>>>>
>>>> On 10.05.2016 15:23, Petr Spacek wrote:
>>>>> On 10.5.2016 14:44, Martin Basti wrote:
>>>>>> On 10.05.2016 14:33, Petr Spacek wrote:
>>>>>>> On 6.5.2016 10:20, Martin Basti wrote:
>>>>>>>> https://fedorahosted.org/freeipa/ticket/2008
>>>>>>>>
>>>>>>>> Patches attached.
>>>>>>>>
>>>>>>>>
>>>>>>>> freeipa-mbasti-0473-DNS-Locations-Always-create-DNS-related-privileges.patch
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> From 9a936740da7cdacec150acc92a45041a98ce7cb3 Mon Sep 17
>>>>>>>> 00:00:00 2001
>>>>>>>> From: Martin Basti <mbasti at redhat.com>
>>>>>>>> Date: Wed, 4 May 2016 17:33:52 +0200
>>>>>>>> Subject: [PATCH 1/4] DNS Locations: Always create DNS related
>>>>>>>> privileges
>>>>>>>>
>>>>>>>> DNS privileges are important for handling DNS locations which
>>>>>>>> can be
>>>>>>>> created without DNS servers in IPA topology. We will also need
>>>>>>>> this
>>>>>>>> privileges presented for future feature 'External DNS support'
>>>>>>> Seems reasonable, ACK.
>>>>>>>
>>>>>>>
>>>>>>>> freeipa-mbasti-0474-DNS-Locations-add-new-attributes-and-objectclasses.patch
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> From a7766da5fd1a72884308d4206c9cde262f5c8d35 Mon Sep 17
>>>>>>>> 00:00:00 2001
>>>>>>>> From: Martin Basti <mbasti at redhat.com>
>>>>>>>> Date: Thu, 5 May 2016 11:12:00 +0200
>>>>>>>> Subject: [PATCH 2/4] DNS Locations: add new attributes and
>>>>>>>> objectclasses
>>>>>>>>
>>>>>>>> http://www.freeipa.org/page/V4/DNS_Location_Mechanism
>>>>>>>>
>>>>>>>> https://fedorahosted.org/freeipa/ticket/2008
>>>>>>>> ---
>>>>>>>> install/share/60ipadns.ldif | 4 ++++
>>>>>>>> 1 file changed, 4 insertions(+)
>>>>>>>>
>>>>>>>> diff --git a/install/share/60ipadns.ldif
>>>>>>>> b/install/share/60ipadns.ldif
>>>>>>>> index
>>>>>>>> e0ed0ab869cea0478d9640bb509c6267abed1a01..31c2f71f8566d04a05709f1359b20e6fa51921ce
>>>>>>>>
>>>>>>>>
>>>>>>>> 100644
>>>>>>>> --- a/install/share/60ipadns.ldif
>>>>>>>> +++ b/install/share/60ipadns.ldif
>>>>>>>> @@ -70,9 +70,13 @@ attributeTypes: ( 2.16.840.1.113730.3.8.5.25
>>>>>>>> NAME
>>>>>>>> 'idnsSecKeyRevoke' DESC 'DNSKE
>>>>>>>> attributeTypes: ( 2.16.840.1.113730.3.8.5.26 NAME
>>>>>>>> 'idnsSecKeySep' DESC
>>>>>>>> 'DNSKEY SEP flag (equivalent to bit 15): RFC 4035' EQUALITY
>>>>>>>> booleanMatch
>>>>>>>> SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE X-ORIGIN 'IPA
>>>>>>>> v4.1' )
>>>>>>>> attributeTypes: ( 2.16.840.1.113730.3.8.5.27 NAME
>>>>>>>> 'idnsSecAlgorithm' DESC
>>>>>>>> 'DNSKEY algorithm: string used as mnemonic' EQUALITY
>>>>>>>> caseIgnoreIA5Match
>>>>>>>> SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX
>>>>>>>> 1.3.6.1.4.1.1466.115.121.1.26
>>>>>>>> SINGLE-VALUE X-ORIGIN 'IPA v4.1' )
>>>>>>>> attributeTypes: ( 2.16.840.1.113730.3.8.5.28 NAME
>>>>>>>> 'idnsSecKeyRef' DESC
>>>>>>>> 'PKCS#11 URI of the key' EQUALITY caseExactMatch SINGLE-VALUE
>>>>>>>> SYNTAX
>>>>>>>> 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'IPA v4.1' )
>>>>>>>> +attributeTypes: ( 2.16.840.1.113730.3.8.5.32 NAME
>>>>>>>> 'ipaLocation' DESC
>>>>>>>> 'Reference to IPA location' EQUALITY distinguishedNameMatch SYNTAX
>>>>>>>> 1.3.6.1.4.1.1466.115.121.1.12 SINGLE-VALUE X-ORIGIN 'IPA v4.4' )
>>>>>>>> +attributeTypes: ( 2.16.840.1.113730.3.8.5.33 NAME
>>>>>>>> 'ipaLocationWeight' DESC
>>>>>>>> 'Weight for the server in IPA location' EQUALITY integerMatch
>>>>>>>> SYNTAX
>>>>>>>> 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'IPA v4.4' )
>>>>>>>> objectClasses: ( 2.16.840.1.113730.3.8.6.0 NAME
>>>>>>>> 'idnsRecord' DESC 'dns
>>>>>>>> Record, usually a host' SUP top STRUCTURAL MUST idnsName MAY (
>>>>>>>> cn $
>>>>>>>> idnsAllowDynUpdate $ dNSTTL $ dNSClass $ aRecord $ aAAARecord $
>>>>>>>> a6Record $
>>>>>>>> nSRecord $ cNAMERecord $ pTRRecord $ sRVRecord $ tXTRecord $
>>>>>>>> mXRecord $
>>>>>>>> mDRecord $ hInfoRecord $ mInfoRecord $ aFSDBRecord $ SigRecord
>>>>>>>> $ KeyRecord
>>>>>>>> $ LocRecord $ nXTRecord $ nAPTRRecord $ kXRecord $ certRecord $
>>>>>>>> dNameRecord
>>>>>>>> $ dSRecord $ sSHFPRecord $ rRSIGRecord $ nSECRecord $ DLVRecord $
>>>>>>>> TLSARecord $ UnknownRecord $ RPRecord $ APLRecord $
>>>>>>>> IPSECKEYRecord $
>>>>>>>> DHCIDRecord $ HIPRecord $ SPFRecord ) )
>>>>>>>> objectClasses: ( 2.16.840.1.113730.3.8.6.1 NAME 'idnsZone'
>>>>>>>> DESC 'Zone
>>>>>>>> class' SUP idnsRecord STRUCTURAL MUST ( idnsZoneActive $
>>>>>>>> idnsSOAmName $
>>>>>>>> idnsSOArName $ idnsSOAserial $ idnsSOArefresh $ idnsSOAretry $
>>>>>>>> idnsSOAexpire $ idnsSOAminimum ) MAY ( idnsUpdatePolicy $
>>>>>>>> idnsAllowQuery $
>>>>>>>> idnsAllowTransfer $ idnsAllowSyncPTR $ idnsForwardPolicy $
>>>>>>>> idnsForwarders $
>>>>>>>> idnsSecInlineSigning $ nSEC3PARAMRecord ) )
>>>>>>>> objectClasses: ( 2.16.840.1.113730.3.8.6.2 NAME
>>>>>>>> 'idnsConfigObject' DESC
>>>>>>>> 'DNS global config options' STRUCTURAL MAY ( idnsForwardPolicy $
>>>>>>>> idnsForwarders $ idnsAllowSyncPTR $ idnsZoneRefresh $
>>>>>>>> idnsPersistentSearch ) )
>>>>>>>> objectClasses: ( 2.16.840.1.113730.3.8.12.18 NAME
>>>>>>>> 'ipaDNSZone' SUP top
>>>>>>>> AUXILIARY MUST idnsName MAY managedBy X-ORIGIN 'IPA v3' )
>>>>>>>> objectClasses: ( 2.16.840.1.113730.3.8.6.3 NAME
>>>>>>>> 'idnsForwardZone' DESC
>>>>>>>> 'Forward Zone class' SUP top STRUCTURAL MUST ( idnsName $
>>>>>>>> idnsZoneActive )
>>>>>>>> MAY ( idnsForwarders $ idnsForwardPolicy ) )
>>>>>>>> objectClasses: ( 2.16.840.1.113730.3.8.6.4 NAME
>>>>>>>> 'idnsSecKey' DESC 'DNSSEC
>>>>>>>> key metadata' STRUCTURAL MUST ( idnsSecKeyRef $
>>>>>>>> idnsSecKeyCreated $
>>>>>>>> idnsSecAlgorithm ) MAY ( idnsSecKeyPublish $ idnsSecKeyActivate $
>>>>>>>> idnsSecKeyInactive $ idnsSecKeyDelete $ idnsSecKeyZone $
>>>>>>>> idnsSecKeyRevoke $
>>>>>>>> idnsSecKeySep $ cn ) X-ORIGIN 'IPA v4.1' )
>>>>>>>> +objectClasses: ( 2.16.840.1.113730.3.8.6.7 NAME
>>>>>>>> 'ipaLocationObject' DESC
>>>>>>>> 'Object for storing IPA server location' AUXILIARY MUST (
>>>>>>>> idnsName ) MAY (
>>>>>>>> description ) X-ORIGIN 'IPA v4.4' )
>>>>>>> Why is it AUXILIARY? AFAIK it should be STRUCTURAL because there
>>>>>>> will not be
>>>>>>> any other object class on the location object (at least not in the
>>>>>>> beginning).
>>>>>>>
>>>>>>>> +objectClasses: ( 2.16.840.1.113730.3.8.6.8 NAME
>>>>>>>> 'ipaLocationMember' DESC
>>>>>>>> 'Member object of IPA location' AUXILIARY MAY ( ipaLocation $
>>>>>>>> ipaLocationWeight ) X-ORIGIN 'IPA v4.4' )
>>>>>>> Conditional ACK if you fix ipaLocationObject.
>>>>>>>
>>>>>>>
>>>>>>>> freeipa-mbasti-0475-DNS-Locations-Add-location-commands.patch
>>>>>>>>
>>>>>>>>
>>>>>>>> From 407b935ecd6df0ed98c6df6d45a575229ef3cd09 Mon Sep 17
>>>>>>>> 00:00:00 2001
>>>>>>>> From: Martin Basti <mbasti at redhat.com>
>>>>>>>> Date: Thu, 5 May 2016 11:13:07 +0200
>>>>>>>> Subject: [PATCH 3/4] DNS Locations: Add location-* commands
>>>>>>>>
>>>>>>>> Added location-{add,mod,del,find,show} commands. Command are just
>>>>>>>> prototypes and does not provide any information about server
>>>>>>>> (will be
>>>>>>>> done later)
>>>>>>>>
>>>>>>>> http://www.freeipa.org/page/V4/DNS_Location_Mechanism
>>>>>>>>
>>>>>>>> https://fedorahosted.org/freeipa/ticket/2008
>>>>>>>> ---
>>>>>>>> ACI.txt | 8 ++
>>>>>>>> API.txt | 59 ++++++++++++++
>>>>>>>> VERSION | 4 +-
>>>>>>>> install/share/bootstrap-template.ldif | 6 ++
>>>>>>>> install/updates/37-locations.update | 4 +
>>>>>>>> install/updates/Makefile.am | 1 +
>>>>>>>> ipalib/constants.py | 1 +
>>>>>>>> ipalib/plugins/location.py | 142
>>>>>>>> +++++++++++++++++++++++++++++++++-
>>>>>>>> 8 files changed, 222 insertions(+), 3 deletions(-)
>>>>>>> [...]
>>>>>>>
>>>>>>>> diff --git a/VERSION b/VERSION
>>>>>>>> index
>>>>>>>> aedebd185821d42fa48608f4c5fdf9ff510ace3f..7e3def151e9986454509a580515b9d34dc220a60
>>>>>>>>
>>>>>>>>
>>>>>>>> 100644
>>>>>>>> --- a/VERSION
>>>>>>>> +++ b/VERSION
>>>>>>>> @@ -90,5 +90,5 @@ IPA_DATA_VERSION=20100614120000
>>>>>>>> # #
>>>>>>>> ########################################################
>>>>>>>> IPA_API_VERSION_MAJOR=2
>>>>>>>> -IPA_API_VERSION_MINOR=165
>>>>>>>> -# Last change: mbasti - limit ipamaxusernamelength value to 255
>>>>>>>> +IPA_API_VERSION_MINOR=166
>>>>>>>> +# Last change: mbasti - location-* commands
>>>>>>> Needs rebase.
>>>>>>>
>>>>>>>
>>>>>>>> diff --git a/install/share/bootstrap-template.ldif
>>>>>>>> b/install/share/bootstrap-template.ldif
>>>>>>>> index
>>>>>>>> 628a8e2e0f5483b9f6f565b0c7d11eb000a5912d..83be4399508a905f8eae7e2f59140a6b4051b661
>>>>>>>>
>>>>>>>>
>>>>>>>> 100644
>>>>>>>> --- a/install/share/bootstrap-template.ldif
>>>>>>>> +++ b/install/share/bootstrap-template.ldif
>>>>>>>> @@ -119,6 +119,12 @@ objectClass: nsContainer
>>>>>>>> objectClass: top
>>>>>>>> cn: etc
>>>>>>>> +dn: cn=locations,cn=etc,$SUFFIX
>>>>>>>> +changetype: add
>>>>>>>> +objectClass: nsContainer
>>>>>>>> +objectClass: top
>>>>>>>> +cn: locations
>>>>>>>> +
>>>>>>>> dn: cn=sysaccounts,cn=etc,$SUFFIX
>>>>>>>> changetype: add
>>>>>>>> objectClass: nsContainer
>>>>>>>> diff --git a/install/updates/37-locations.update
>>>>>>>> b/install/updates/37-locations.update
>>>>>>>> index
>>>>>>>> e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..cf47e6d6296af830a76aad2c9b9f5a6ea5d9f3a1
>>>>>>>>
>>>>>>>>
>>>>>>>> 100644
>>>>>>>> --- a/install/updates/37-locations.update
>>>>>>>> +++ b/install/updates/37-locations.update
>>>>>>>> @@ -0,0 +1,4 @@
>>>>>>>> +dn: cn=locations,cn=etc,$SUFFIX
>>>>>>>> +default: objectClass: nsContainer
>>>>>>>> +default: objectClass: top
>>>>>>>> +default: cn: locations
>>>>>>> Ok.
>>>>>>>
>>>>>>> [...]
>>>>>>>
>>>>>>>> diff --git a/ipalib/plugins/location.py
>>>>>>>> b/ipalib/plugins/location.py
>>>>>>>> index
>>>>>>>> 8090bb1637c4d826b9a746a82b98ece903e321cc..d52d2baeb8bfb2fddeac40b281268622d47c6aeb
>>>>>>>>
>>>>>>>>
>>>>>>>> 100644
>>>>>>>> --- a/ipalib/plugins/location.py
>>>>>>>> +++ b/ipalib/plugins/location.py
>>>>>>> [...]
>>>>>>>> +__doc__ = _("""
>>>>>>>> +IPA locations
>>>>>>>> +""") + _("""
>>>>>>>> +Manipulate with DNS locations
>>>>>>> IMHO "with" should be omited. [...]
>>>>>>>
>>>>>>>
>>>>>>>> + at register()
>>>>>>>> +class location(LDAPObject):
>>>>>>>> + """
>>>>>>>> + IPA locations
>>>>>>>> + """
>>>>>>> [...]
>>>>>>>
>>>>>>>> + permission_filter_objectclasses = ['ipaLocationObject']
>>>>>>>> + managed_permissions = {
>>>>>>>> + 'System: Read IPA Locations': {
>>>>>>>> + 'ipapermright': {'read', 'search', 'compare'},
>>>>>>>> + 'ipapermdefaultattr': {
>>>>>>>> + 'objectclass', 'idnsname', 'description',
>>>>>>>> + },
>>>>>>>> + 'default_privileges': {'DNS Administrators'},
>>>>>>>> + },
>>>>>>>> + 'System: Add IPA Locations': {
>>>>>>>> + 'ipapermright': {'add'},
>>>>>>>> + 'default_privileges': {'DNS Administrators'},
>>>>>>>> + },
>>>>>>>> + 'System: Remove IPA Locations': {
>>>>>>>> + 'ipapermright': {'delete'},
>>>>>>>> + 'default_privileges': {'DNS Administrators'},
>>>>>>>> + },
>>>>>>>> + 'System: Modify IPA Locations': {
>>>>>>>> + 'ipapermright': {'write'},
>>>>>>>> + 'ipapermdefaultattr': {
>>>>>>>> + 'description',
>>>>>>>> + },
>>>>>>>> + 'default_privileges': {'DNS Administrators'},
>>>>>>>> + },
>>>>>>>> + }
>>>>>>> Sounds reasonable. ACI does not allow renaming location but IMHO
>>>>>>> this is
>>>>>>> okay.
>>>>>>> Less renames we support the better.
>>>>>>>
>>>>>>>
>>>>>>>> +
>>>>>>>> + takes_params = (
>>>>>>>> + DNSNameParam(
>>>>>>>> + 'idnsname',
>>>>>>>> + cli_name='name',
>>>>>>>> + primary_key=True,
>>>>>>>> + label=_('Location name'),
>>>>>>>> + doc=_('IPA location name'),
>>>>>>>> + # dns name must be relative, we will put it into
>>>>>>>> middle of
>>>>>>>> + # location domain name for location records
>>>>>>>> + only_relative=True,
>>>>>>>> + ),
>>>>>>> Okay. We need to make sure that relative names with multiple
>>>>>>> labels work -
>>>>>>> but
>>>>>>> this should automagically work as long as we are handling DNS
>>>>>>> names using
>>>>>>> proper data types (not as strings).
>>>>>>>
>>>>>>>
>>>>>>>> + Str(
>>>>>>>> + 'description?',
>>>>>>>> + label=_('Description'),
>>>>>>>> + doc=_('IPA Location description'),
>>>>>>>> + ),
>>>>>>> After discussion with Honza we will keep description as
>>>>>>> single-value in the
>>>>>>> IPA framework and ignore that description attribute is
>>>>>>> multi-value in LDAP.
>>>>>>> This is done for consitency with mistakes from the past.
>>>>>>>
>>>>>>> [...]
>>>>>>>
>>>>>>>> + at register()
>>>>>>>> +class location_mod(LDAPUpdate):
>>>>>>>> + __doc__ = _('Modify information about an IPA location .')
>>>>>>> This should say 'Modify description' because nothing else can be
>>>>>>> modified.
>>>>>>> More specific text would hopefully stop some people from looking
>>>>>>> for rename
>>>>>>> options.
>>>>>> I disagree, this is general description about the modify command,
>>>>>> see
>>>>>> privilege-add it is the same as I made. I can see in future that
>>>>>> we will
>>>>>> forgot to update description of command if we add something new
>>>>>> there.
>>>>> This is really an invalid argument.
>>>>>
>>>>> "We must not touch XYZ because its documentation might become
>>>>> obsolete in
>>>>> future if we forget to update it!" :-)
>>>>>
>>>> How about inconsistency with description of older commands? I don't
>>>> think that
>>>> command description should describe attributes that are allowed to
>>>> change.
>>>> Allowed attributes are shown in --help output
>>> I do not agree but push whatever variant you like, it costed too
>>> much already.
>> NACK anyway. ipa-dns-install screams if you install a server without
>> DNS and
>> run ipa-dns-install later on:
>>
>> The log contains this:
>>
>> add objectClass:
>> top
>> groupofnames
>> nestedgroup
>> add cn:
>> DNS Administrators
>> add description:
>> DNS Administrators
>> adding new entry "cn=DNS
>> Administrators,cn=privileges,cn=pbac,dc=dom-033,dc=abc,dc=idm,dc=lab,dc=eng,dc=brq,dc=redhat,dc=com"
>>
>>
>>
>> 2016-05-10T16:53:05Z DEBUG stderr=ldap_initialize(
>> ldapi://%2Fvar%2Frun%2Fslapd-DOM-033-ABC-IDM-LAB-ENG-BRQ-REDHAT-COM.socket/??base
>>
>> )
>> SASL/EXTERNAL authentication started
>> SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
>> SASL SSF: 0
>> ldap_add: Already exists (68)
>>
>> 2016-05-10T16:53:05Z CRITICAL Failed to load dns.ldif: Command
>> '/usr/bin/ldapmodify -v -f /tmp/tmpMvWMaT -H
>> ldapi://%2fvar%2frun%2fslapd-DOM-033-ABC-IDM-LAB-ENG-BRQ-REDHAT-COM.socket
>> -Y
>> EXTERNAL' returned non-zero exit status 68
>>
> Well I cannot reproduce it, this should be resolved by patch 473
>
Updated patches attached
I found that IDNA did not work with previous version, fixed + IDNA tests
added
-------------- next part --------------
A non-text attachment was scrubbed...
Name: freeipa-mbasti-0473.2-DNS-Locations-Always-create-DNS-related-privileges.patch
Type: text/x-patch
Size: 4774 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/freeipa-devel/attachments/20160512/3b8c0d80/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: freeipa-mbasti-0474.2-DNS-Locations-add-new-attributes-and-objectclasses.patch
Type: text/x-patch
Size: 4065 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/freeipa-devel/attachments/20160512/3b8c0d80/attachment-0001.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: freeipa-mbasti-0475.2-DNS-Locations-location-commands.patch
Type: text/x-patch
Size: 14221 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/freeipa-devel/attachments/20160512/3b8c0d80/attachment-0002.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: freeipa-mbasti-0476.2-DNS-Locations-API-tests.patch
Type: text/x-patch
Size: 9331 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/freeipa-devel/attachments/20160512/3b8c0d80/attachment-0003.bin>
More information about the Freeipa-devel
mailing list