[CalendarServer-users] Unhandled error in XML directory service

Carlos Valiente superdupont at gmail.com
Tue Aug 28 11:12:00 PDT 2012


Hi! I set up a CalendarServer instance (version 4.1.1-dev) with an XML
directory service configured this way:

caldav.plist snippet:

    <key>DirectoryService</key>
    <dict>
      <key>type</key>
      <string>twistedcaldav.directory.xmlfile.XMLDirectoryService</string>

      <key>params</key>
      <dict>
        <key>xmlFile</key>
        <string>accounts.xml</string>
      </dict>
    </dict>

accounts.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE accounts SYSTEM "accounts.dtd">

    <accounts realm="virutass.net">
      <user>
        <uid>admin</uid>
       <password>XXXX</password>
        <name>Super User</name>
      </user>
    </accounts>

When CalendarServer starts, I get the following error:

2012-08-28 20:00:24+0200 [-]
[twistedcaldav.directory.xmlfile.XMLDirectoryService#info] Directory
service <XMLDirectoryService 'virutass.net':
FilePath('/etc/service/calendar/accounts.xml')> has no GUID;
generating service GUID from realm name.
2012-08-28 20:00:24+0200 [-] *** record:
<XMLDirectoryRecord[users at B5B1BE7C-3638-5621-BE55-1C2E9E8D8FC0(virutass.net)]
None(admin) 'Super User' @ None/#>
2012-08-28 20:00:24+0200 [-] Unhandled error in Deferred:
2012-08-28 20:00:24+0200 [-] Unhandled Error
        Traceback (most recent call last):
          File "/usr/local/lib/python2.7/dist-packages/calendarserver/tools/util.py",
line 143, in getDirectory
            directory = BaseDirectoryService(config.DirectoryService.params)
          File "/usr/local/lib/python2.7/dist-packages/twistedcaldav/directory/xmlfile.py",
line 123, in __init__
            self._accounts()
          File "/usr/local/lib/python2.7/dist-packages/twistedcaldav/directory/xmlfile.py",
line 180, in _accounts
            record.recordType)
          File "/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py",
line 1187, in unwindGenerator
            return _inlineCallbacks(None, gen, Deferred())
        --- <exception caught here> ---
          File "/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py",
line 1045, in _inlineCallbacks
            result = g.send(result)
          File "/usr/local/lib/python2.7/dist-packages/twistedcaldav/directory/augment.py",
line 139, in getAugmentRecord
            "%s-%s*" % (recordType, uid[0:2]),
        exceptions.TypeError: 'NoneType' object has no attribute '__getitem__'

The problem goes away by adding a ``guid`` element under ``<user>``.

Is this the expected behaviour -- that the ``guid`` child of ``user``
is mandatory? In case it is, is it worth opening a Trac ticket?

C


More information about the calendarserver-users mailing list