[CalendarServer-changes] [14086] CalendarServer/trunk
source_changes at macosforge.org
source_changes at macosforge.org
Fri Oct 17 11:24:45 PDT 2014
Revision: 14086
http://trac.calendarserver.org//changeset/14086
Author: cdaboo at apple.com
Date: 2014-10-17 11:24:45 -0700 (Fri, 17 Oct 2014)
Log Message:
-----------
More cross-pod delegate support: fixing testpods script, re-factoring store/directory setup.
Modified Paths:
--------------
CalendarServer/trunk/bin/testpods
CalendarServer/trunk/calendarserver/tap/caldav.py
CalendarServer/trunk/calendarserver/tap/util.py
CalendarServer/trunk/conf/caldavd-test-podA.plist
CalendarServer/trunk/conf/caldavd-test-podB.plist
CalendarServer/trunk/txdav/dps/server.py
CalendarServer/trunk/txdav/who/delegates.py
CalendarServer/trunk/txdav/who/test/test_util.py
CalendarServer/trunk/txdav/who/util.py
Modified: CalendarServer/trunk/bin/testpods
===================================================================
--- CalendarServer/trunk/bin/testpods 2014-10-17 17:22:48 UTC (rev 14085)
+++ CalendarServer/trunk/bin/testpods 2014-10-17 18:24:45 UTC (rev 14086)
@@ -117,8 +117,8 @@
# Modify the plists
python -c "import plistlib; f=plistlib.readPlist('${configdir}/caldavd-cdt.plist'); f['ConfigRoot'] = '${configdir}'; f['RunRoot'] = 'Run'; f['Authentication']['Kerberos']['Enabled'] = False; plistlib.writePlist(f, '${configdir}/caldavd-cdt.plist');"
-python -c "import plistlib; f=plistlib.readPlist('${configdir}/caldavd-cdt-podA.plist'); f['ImportConfig'] = '${configdir}/caldavd-cdt.plist'; f['ServerRoot'] = '${serverrootA}'; f['ProxyLoadFromFile'] = '${configdir}/auth/proxies-cdt.xml'; f['ResourceService']['params']['xmlFile'] = '${configdir}/auth/resources-cdt.xml'; f['DirectoryService']['params']['xmlFile'] = '${configdir}/auth/accounts-cdt.xml'; f['AugmentService']['params']['xmlFiles'] = ['${configdir}/auth/augments-cdt.xml']; plistlib.writePlist(f, '${configdir}/caldavd-cdt-podA.plist');"
-python -c "import plistlib; f=plistlib.readPlist('${configdir}/caldavd-cdt-podB.plist'); f['ImportConfig'] = '${configdir}/caldavd-cdt.plist'; f['ServerRoot'] = '${serverrootB}'; f['ProxyLoadFromFile'] = '${configdir}/auth/proxies-cdt.xml'; f['ResourceService']['params']['xmlFile'] = '${configdir}/auth/resources-cdt.xml'; f['DirectoryService']['params']['xmlFile'] = '${configdir}/auth/accounts-cdt.xml'; f['AugmentService']['params']['xmlFiles'] = ['${configdir}/auth/augments-cdt.xml']; plistlib.writePlist(f, '${configdir}/caldavd-cdt-podB.plist');"
+python -c "import plistlib; f=plistlib.readPlist('${configdir}/caldavd-cdt-podA.plist'); f['ImportConfig'] = '${configdir}/caldavd-cdt.plist'; f['ServerRoot'] = '${serverrootA}'; f['ConfigRoot'] = '${configdir}'; f['ProxyLoadFromFile'] = '${configdir}/auth/proxies-cdt.xml'; f['ResourceService']['params']['xmlFile'] = '${configdir}/auth/resources-cdt.xml'; f['DirectoryService']['params']['xmlFile'] = '${configdir}/auth/accounts-cdt.xml'; f['AugmentService']['params']['xmlFiles'] = ['${configdir}/auth/augments-cdt.xml']; plistlib.writePlist(f, '${configdir}/caldavd-cdt-podA.plist');"
+python -c "import plistlib; f=plistlib.readPlist('${configdir}/caldavd-cdt-podB.plist'); f['ImportConfig'] = '${configdir}/caldavd-cdt.plist'; f['ServerRoot'] = '${serverrootB}'; f['ConfigRoot'] = '${configdir}'; f['ProxyLoadFromFile'] = '${configdir}/auth/proxies-cdt.xml'; f['ResourceService']['params']['xmlFile'] = '${configdir}/auth/resources-cdt.xml'; f['DirectoryService']['params']['xmlFile'] = '${configdir}/auth/accounts-cdt.xml'; f['AugmentService']['params']['xmlFiles'] = ['${configdir}/auth/augments-cdt.xml']; plistlib.writePlist(f, '${configdir}/caldavd-cdt-podB.plist');"
runpod() {
local podsuffix="$1"; shift;
@@ -153,6 +153,7 @@
# Run CDT
+echo ""
echo "Starting CDT run"
cd "${cdt}" && "${python}" testcaldav.py ${random} ${seed} ${ssl} ${cdtdebug} --print-details-onfail ${printres} -s "${serverinfo}" -x scripts/tests-pod ${subdir} "$@";
Modified: CalendarServer/trunk/calendarserver/tap/caldav.py
===================================================================
--- CalendarServer/trunk/calendarserver/tap/caldav.py 2014-10-17 17:22:48 UTC (rev 14085)
+++ CalendarServer/trunk/calendarserver/tap/caldav.py 2014-10-17 18:24:45 UTC (rev 14086)
@@ -82,9 +82,6 @@
from txdav.caldav.datastore.scheduling.imip.inbound import MailRetriever
from txdav.caldav.datastore.scheduling.imip.inbound import scheduleNextMailPoll
-from txdav.caldav.datastore.scheduling.ischedule.localservers import (
- buildServersDB
-)
from txdav.common.datastore.upgrade.migrate import UpgradeToDatabaseStep
from txdav.common.datastore.upgrade.sql.upgrade import (
UpgradeDatabaseCalendarDataStep, UpgradeDatabaseOtherStep,
@@ -94,10 +91,7 @@
)
from txdav.common.datastore.work.inbox_cleanup import InboxCleanupWork
from txdav.common.datastore.work.revision_cleanup import FindMinValidRevisionWork
-from txdav.dps.client import DirectoryService as DirectoryProxyClientService
-from txdav.who.cache import CachingDirectoryService
from txdav.who.groups import GroupCacher
-from txdav.who.util import directoryFromConfig
from twistedcaldav import memcachepool
from twistedcaldav.config import ConfigurationError
@@ -127,7 +121,8 @@
checkDirectories, getRootResource,
oracleConnectorFromConfig, pgConnectorFromConfig,
pgServiceFromConfig, getDBPool, MemoryLimitService,
- storeFromConfig, getSSLPassphrase, preFlightChecks
+ storeFromConfig, getSSLPassphrase, preFlightChecks,
+ storeFromConfigWithDPSClient, storeFromConfigWithoutDPS,
)
try:
from calendarserver.version import version
@@ -846,15 +841,8 @@
CalDAV and CardDAV requests.
"""
pool, txnFactory = getDBPool(config)
- directory = DirectoryProxyClientService(config.DirectoryRealmName)
- if config.Servers.Enabled:
- directory.setServersDB(buildServersDB(config.Servers.MaxClients))
- if config.DirectoryProxy.InProcessCachingSeconds:
- directory = CachingDirectoryService(
- directory,
- expireSeconds=config.DirectoryProxy.InProcessCachingSeconds
- )
- store = storeFromConfig(config, txnFactory, directory)
+ store = storeFromConfigWithDPSClient(config, txnFactory)
+ directory = store.directoryService()
logObserver = AMPCommonAccessLoggingObserver()
result = self.requestProcessingService(options, store, logObserver)
@@ -1380,7 +1368,7 @@
Popen(memcachedArgv)
return self.storageService(
- slaveSvcCreator, logObserver, uid=uid, gid=gid, directory=None
+ slaveSvcCreator, logObserver, uid=uid, gid=gid
)
@@ -1397,7 +1385,7 @@
uid, gid = getSystemIDs(config.UserName, config.GroupName)
return self.storageService(
- toolServiceCreator, None, uid=uid, gid=gid, directory=None
+ toolServiceCreator, None, uid=uid, gid=gid
)
@@ -1448,7 +1436,7 @@
def storageService(
- self, createMainService, logObserver, uid=None, gid=None, directory=None
+ self, createMainService, logObserver, uid=None, gid=None
):
"""
If necessary, create a service to be started used for storage; for
@@ -1492,23 +1480,7 @@
maxConnections=config.MaxDBConnectionsPerPool
)
cp.setServiceParent(ms)
- store = storeFromConfig(config, cp.connection, directory)
- if directory is None:
- # Create a Directory Proxy "Server" service and hand it to
- # the store.
- if config.Servers.Enabled:
- serversDB = buildServersDB(config.Servers.MaxClients)
- else:
- serversDB = None
- directorySvc = directoryFromConfig(
- config, store=store, serversDB=serversDB
- )
- if config.DirectoryProxy.InProcessCachingSeconds:
- directorySvc = CachingDirectoryService(
- directorySvc,
- expireSeconds=config.DirectoryProxy.InProcessCachingSeconds
- )
- store.setDirectoryService(directorySvc)
+ store = storeFromConfigWithoutDPS(config, cp.connection)
pps = PreProcessingService(
createMainService, cp, store, logObserver, storageService
@@ -1625,7 +1597,7 @@
"Unknown database type {}".format(config.DBType)
)
else:
- store = storeFromConfig(config, None, directory)
+ store = storeFromConfig(config, None, None)
return createMainService(None, store, logObserver, None)
@@ -1920,15 +1892,8 @@
return multi
- # The master will use its own directory. We could switch this
- # service out for a DirectoryProxyClientService once the DPS
- # sidecar is running, but not sure that's necessary as the master
- # is likely not doing much directory-related activity once it
- # spawns the caldavd workers.
- directory = None
-
ssvc = self.storageService(
- spawnerSvcCreator, None, uid, gid, directory=directory
+ spawnerSvcCreator, None, uid, gid
)
ssvc.setServiceParent(s)
return s
Modified: CalendarServer/trunk/calendarserver/tap/util.py
===================================================================
--- CalendarServer/trunk/calendarserver/tap/util.py 2014-10-17 17:22:48 UTC (rev 14085)
+++ CalendarServer/trunk/calendarserver/tap/util.py 2014-10-17 18:24:45 UTC (rev 14086)
@@ -28,39 +28,40 @@
"preFlightChecks",
]
-import errno
-import OpenSSL
-import os
-import psutil
+from calendarserver.accesslog import DirectoryLogWrapperResource
+from calendarserver.provision.root import RootResource
+from calendarserver.push.applepush import APNSubscriptionResource
+from calendarserver.push.notifier import NotifierFactory
+from calendarserver.tools.util import checkDirectory
+from calendarserver.webadmin.landing import WebAdminLandingResource
+from calendarserver.webcal.resource import WebCalendarResource
+
from socket import fromfd, AF_UNIX, SOCK_STREAM, socketpair
from subprocess import Popen, PIPE
-import sys
-
+from twext.enterprise.adbapi2 import ConnectionPool, ConnectionPoolConnection
+from twext.enterprise.adbapi2 import ConnectionPoolClient
+from twext.enterprise.ienterprise import ORACLE_DIALECT
+from twext.enterprise.ienterprise import POSTGRES_DIALECT
from twext.internet.ssl import ChainingOpenSSLContextFactory
+from twext.python.filepath import CachingFilePath
from twext.python.filepath import CachingFilePath as FilePath
from twext.python.log import Logger
-from txweb2.auth.basic import BasicCredentialFactory
-from txweb2.dav import auth
-from txweb2.dav.util import joinURL
-from txweb2.http_headers import Headers
-from txweb2.resource import Resource
-from txweb2.static import File as FileResource
+from twext.who.checker import HTTPDigestCredentialChecker
+from twext.who.checker import UsernamePasswordCredentialChecker
from twisted.application.service import Service
+from twisted.cred.error import UnauthorizedLogin
from twisted.cred.portal import Portal
+from twisted.internet import reactor as _reactor
from twisted.internet.defer import inlineCallbacks, returnValue, Deferred, succeed
-from twisted.internet import reactor as _reactor
from twisted.internet.reactor import addSystemEventTrigger
from twisted.internet.tcp import Connection
+from twisted.python.usage import UsageError
-from calendarserver.push.applepush import APNSubscriptionResource
-from calendarserver.push.notifier import NotifierFactory
-from twext.enterprise.adbapi2 import ConnectionPool, ConnectionPoolConnection
-from twext.enterprise.ienterprise import ORACLE_DIALECT
-from twext.enterprise.ienterprise import POSTGRES_DIALECT
from twistedcaldav.bind import doBind
from twistedcaldav.cache import CacheStoreNotifierFactory
+from twistedcaldav.config import ConfigurationError
from twistedcaldav.controlapi import ControlAPIResource
from twistedcaldav.directory.addressbook import DirectoryAddressBookHomeProvisioningResource
from twistedcaldav.directory.calendar import DirectoryCalendarHomeProvisioningResource
@@ -69,48 +70,48 @@
from twistedcaldav.directorybackedaddressbook import DirectoryBackedAddressBookResource
from twistedcaldav.resource import AuthenticationWrapper
from twistedcaldav.simpleresource import SimpleResource, SimpleRedirectResource
+from twistedcaldav.stdconfig import config
from twistedcaldav.timezones import TimezoneCache
from twistedcaldav.timezoneservice import TimezoneServiceResource
from twistedcaldav.timezonestdservice import TimezoneStdServiceResource
-from txdav.caldav.datastore.scheduling.ischedule.dkim import DKIMUtils, DomainKeyResource
-from txdav.caldav.datastore.scheduling.ischedule.resource import IScheduleInboxResource
-
-try:
- from twistedcaldav.authkerb import NegotiateCredentialFactory
- NegotiateCredentialFactory # pacify pyflakes
-except ImportError:
- NegotiateCredentialFactory = None
-
-from twext.enterprise.adbapi2 import ConnectionPoolClient
from txdav.base.datastore.dbapiclient import DBAPIConnector, OracleConnector
from txdav.base.datastore.dbapiclient import postgresPreflight
from txdav.base.datastore.subpostgres import PostgresService
-
-from calendarserver.accesslog import DirectoryLogWrapperResource
-from calendarserver.provision.root import RootResource
-from calendarserver.tools.util import checkDirectory
-from calendarserver.webadmin.landing import WebAdminLandingResource
-from calendarserver.webcal.resource import WebCalendarResource
-
+from txdav.caldav.datastore.scheduling.ischedule.dkim import DKIMUtils, DomainKeyResource
+from txdav.caldav.datastore.scheduling.ischedule.localservers import buildServersDB
+from txdav.caldav.datastore.scheduling.ischedule.resource import IScheduleInboxResource
+from txdav.common.datastore.file import CommonDataStore as CommonFileDataStore
from txdav.common.datastore.podding.resource import ConduitResource
from txdav.common.datastore.sql import CommonDataStore as CommonSQLDataStore
-from txdav.common.datastore.file import CommonDataStore as CommonFileDataStore
from txdav.common.datastore.sql import current_sql_schema
from txdav.common.datastore.upgrade.sql.upgrade import NotAllowedToUpgrade
-from twext.python.filepath import CachingFilePath
-from urllib import quote
-from twisted.python.usage import UsageError
+from txdav.dps.client import DirectoryService as DirectoryProxyClientService
+from txdav.who.cache import CachingDirectoryService
+from txdav.who.util import directoryFromConfig
-from twext.who.checker import UsernamePasswordCredentialChecker
-from twext.who.checker import HTTPDigestCredentialChecker
-from twisted.cred.error import UnauthorizedLogin
+from txweb2.auth.basic import BasicCredentialFactory
+from txweb2.dav import auth
from txweb2.dav.auth import IPrincipalCredentials
+from txweb2.dav.util import joinURL
+from txweb2.http_headers import Headers
+from txweb2.resource import Resource
+from txweb2.static import File as FileResource
-from twistedcaldav.config import ConfigurationError
-from twistedcaldav.stdconfig import config
+from urllib import quote
+import OpenSSL
+import errno
+import os
+import psutil
+import sys
+try:
+ from twistedcaldav.authkerb import NegotiateCredentialFactory
+ NegotiateCredentialFactory # pacify pyflakes
+except ImportError:
+ NegotiateCredentialFactory = None
+
log = Logger()
@@ -229,6 +230,47 @@
+def storeFromConfigWithoutDPS(config, txnFactory):
+ store = storeFromConfig(config, txnFactory, None)
+ directory = directoryFromConfig(config, store)
+ if config.DirectoryProxy.InProcessCachingSeconds:
+ directory = CachingDirectoryService(
+ directory,
+ expireSeconds=config.DirectoryProxy.InProcessCachingSeconds
+ )
+ store.setDirectoryService(directory)
+ return store
+
+
+
+def storeFromConfigWithDPSClient(config, txnFactory):
+ store = storeFromConfig(config, txnFactory, None)
+ directory = DirectoryProxyClientService(config.DirectoryRealmName)
+ if config.Servers.Enabled:
+ directory.setServersDB(buildServersDB(config.Servers.MaxClients))
+ if config.DirectoryProxy.InProcessCachingSeconds:
+ directory = CachingDirectoryService(
+ directory,
+ expireSeconds=config.DirectoryProxy.InProcessCachingSeconds
+ )
+ store.setDirectoryService(directory)
+ return store
+
+
+
+def storeFromConfigWithDPSServer(config, txnFactory):
+ store = storeFromConfig(config, txnFactory, None)
+ directory = directoryFromConfig(config, store)
+ if config.DirectoryProxy.InSidecarCachingSeconds:
+ directory = CachingDirectoryService(
+ directory,
+ expireSeconds=config.DirectoryProxy.InSidecarCachingSeconds
+ )
+ store.setDirectoryService(directory)
+ return store
+
+
+
def storeFromConfig(config, txnFactory, directoryService):
"""
Produce an L{IDataStore} from the given configuration, transaction factory,
Modified: CalendarServer/trunk/conf/caldavd-test-podA.plist
===================================================================
--- CalendarServer/trunk/conf/caldavd-test-podA.plist 2014-10-17 17:22:48 UTC (rev 14085)
+++ CalendarServer/trunk/conf/caldavd-test-podA.plist 2014-10-17 18:24:45 UTC (rev 14086)
@@ -110,48 +110,6 @@
<string>podding</string>
</dict>
- <key>Scheduling</key>
- <dict>
- <!-- iSchedule protocol options -->
- <key>iSchedule</key>
- <dict>
- <key>Enabled</key>
- <true/>
- <key>AddressPatterns</key>
- <array>
- </array>
- <key>RemoteServers</key>
- <string>remoteservers-test.xml</string>
- <key>DNSDebug</key>
- <string>test-db.zones</string>
- <key>DKIM</key>
- <dict>
- <key>Enabled</key>
- <true/>
- <key>Domain</key>
- <string>example.com</string>
- <key>KeySelector</key>
- <string>ischedule</string>
- <key>UseDNSKey</key>
- <false/>
- <key>UseHTTPKey</key>
- <true/>
- <key>UsePrivateExchangeKey</key>
- <true/>
- <key>ExpireSeconds</key>
- <integer>3600</integer>
- <key>PrivateKeyFile</key>
- <string>dkim-test/priv.pem</string>
- <key>PublicKeyFile</key>
- <string>dkim-test/pub.pem</string>
- <key>PrivateExchanges</key>
- <string>dkim-test/other_keys</string>
- <key>ProtocolDebug</key>
- <true/>
- </dict>
- </dict>
- </dict>
-
<key>Notifications</key>
<dict>
<key>Services</key>
Modified: CalendarServer/trunk/conf/caldavd-test-podB.plist
===================================================================
--- CalendarServer/trunk/conf/caldavd-test-podB.plist 2014-10-17 17:22:48 UTC (rev 14085)
+++ CalendarServer/trunk/conf/caldavd-test-podB.plist 2014-10-17 18:24:45 UTC (rev 14086)
@@ -117,48 +117,6 @@
<string>podding</string>
</dict>
- <key>Scheduling</key>
- <dict>
- <!-- iSchedule protocol options -->
- <key>iSchedule</key>
- <dict>
- <key>Enabled</key>
- <true/>
- <key>AddressPatterns</key>
- <array>
- </array>
- <key>RemoteServers</key>
- <string>remoteservers-test.xml</string>
- <key>DNSDebug</key>
- <string>test-db.zones</string>
- <key>DKIM</key>
- <dict>
- <key>Enabled</key>
- <true/>
- <key>Domain</key>
- <string>example.com</string>
- <key>KeySelector</key>
- <string>ischedule</string>
- <key>UseDNSKey</key>
- <false/>
- <key>UseHTTPKey</key>
- <true/>
- <key>UsePrivateExchangeKey</key>
- <true/>
- <key>ExpireSeconds</key>
- <integer>3600</integer>
- <key>PrivateKeyFile</key>
- <string>dkim-test/priv.pem</string>
- <key>PublicKeyFile</key>
- <string>dkim-test/pub.pem</string>
- <key>PrivateExchanges</key>
- <string>dkim-test/other_keys</string>
- <key>ProtocolDebug</key>
- <true/>
- </dict>
- </dict>
- </dict>
-
<key>Notifications</key>
<dict>
<key>Services</key>
@@ -194,7 +152,7 @@
<key>ClientEnabled</key>
<true/>
<key>ServerEnabled</key>
- <true/>
+ <false/>
<key>BindAddress</key>
<string>localhost</string>
<key>Port</key>
Modified: CalendarServer/trunk/txdav/dps/server.py
===================================================================
--- CalendarServer/trunk/txdav/dps/server.py 2014-10-17 17:22:48 UTC (rev 14085)
+++ CalendarServer/trunk/txdav/dps/server.py 2014-10-17 18:24:45 UTC (rev 14086)
@@ -18,7 +18,7 @@
import datetime
import uuid
-from calendarserver.tap.util import getDBPool, storeFromConfig
+from calendarserver.tap.util import getDBPool, storeFromConfigWithDPSServer
from twext.python.log import Logger
from twext.who.expression import MatchType, MatchFlags, Operand
from twisted.application import service
@@ -42,8 +42,6 @@
AddMembersCommand, RemoveMembersCommand,
UpdateRecordsCommand, # RemoveRecordsCommand,
)
-from txdav.who.cache import CachingDirectoryService
-from txdav.who.util import directoryFromConfig
from txdav.who.wiki import WikiAccessLevel
from zope.interface import implementer
@@ -773,14 +771,7 @@
try:
_ignore_pool, txnFactory = getDBPool(config)
- store = storeFromConfig(config, txnFactory, None)
- directory = directoryFromConfig(config)
- if config.DirectoryProxy.InSidecarCachingSeconds:
- directory = CachingDirectoryService(
- directory,
- expireSeconds=config.DirectoryProxy.InSidecarCachingSeconds
- )
- store.setDirectoryService(directory)
+ store = storeFromConfigWithDPSServer(config, txnFactory)
except Exception as e:
log.error("Failed to create directory service", error=e)
raise
@@ -792,5 +783,5 @@
"unix:{path}:mode=660".format(
path=config.DirectoryProxy.SocketPath
),
- DirectoryProxyAMPFactory(directory)
+ DirectoryProxyAMPFactory(store.directoryService())
)
Modified: CalendarServer/trunk/txdav/who/delegates.py
===================================================================
--- CalendarServer/trunk/txdav/who/delegates.py 2014-10-17 17:22:48 UTC (rev 14085)
+++ CalendarServer/trunk/txdav/who/delegates.py 2014-10-17 18:24:45 UTC (rev 14086)
@@ -372,6 +372,7 @@
@rtype: a Deferred which fires a set of L{str}
"""
+ log.debug("_delegatesOfUIDs for: {} and read-write = {} and expanded = {}".format(delegator.uid, readWrite, expanded,))
if delegator.thisServer():
delegateUIDs = yield txn.delegates(delegator.uid, readWrite, expanded=expanded)
else:
@@ -401,6 +402,7 @@
"""
+ log.debug("_delegatedToUIDs for: {} and read-write = {}".format(delegate.uid, readWrite,))
delegatorUIDs = (yield txn.delegators(delegate.uid, readWrite))
if not onlyThisServer and config.Servers.Enabled:
delegatorUIDs.update((yield _podDelegators(txn, delegate, readWrite)))
@@ -438,6 +440,7 @@
@rtype: a Deferred which fires a set of L{str}
"""
+ log.debug("_podDelegates for: {} and read-write = {} and expanded = {}".format(delegator.uid, readWrite, expanded,))
return txn.store().conduit.send_get_delegates(txn, delegator, readWrite, expanded)
@@ -456,6 +459,7 @@
@rtype: a Deferred which fires a set of L{str}
"""
+ log.debug("_podDelegators for: {} and read-write = {}".format(delegate.uid, readWrite,))
results = yield DeferredList([
txn.store().conduit.send_get_delegators(txn, server, delegate, readWrite) for
server in txn.directoryService().serversDB.allServersExceptThis()
Modified: CalendarServer/trunk/txdav/who/test/test_util.py
===================================================================
--- CalendarServer/trunk/txdav/who/test/test_util.py 2014-10-17 17:22:48 UTC (rev 14085)
+++ CalendarServer/trunk/txdav/who/test/test_util.py 2014-10-17 18:24:45 UTC (rev 14086)
@@ -20,22 +20,23 @@
import os
-from txdav.who.util import directoryFromConfig
-from txdav.who.test.support import InMemoryDirectoryService
+from twext.who.aggregate import DirectoryService as AggregateDirectoryService
+from twext.who.directory import DirectoryRecord
+from twext.who.idirectory import RecordType, NoSuchRecordError
+from twext.who.xml import DirectoryService as XMLDirectoryService
from twisted.internet.defer import inlineCallbacks
+from twisted.python.filepath import FilePath
from twisted.trial.unittest import TestCase
from twistedcaldav.config import ConfigDict
-from twisted.python.filepath import FilePath
+import twistedcaldav.stdconfig #@UnusedImport
from txdav.who.augment import AugmentedDirectoryService
-from twext.who.aggregate import DirectoryService as AggregateDirectoryService
-from twext.who.xml import DirectoryService as XMLDirectoryService
from txdav.who.delegates import (
DirectoryService as DelegateDirectoryService,
RecordType as DelegateRecordType
)
-from twext.who.directory import DirectoryRecord
-from twext.who.idirectory import RecordType, NoSuchRecordError
from txdav.who.idirectory import RecordType as CalRecordType
+from txdav.who.test.support import InMemoryDirectoryService
+from txdav.who.util import directoryFromConfig
from txdav.who.wiki import (
DirectoryService as WikiDirectoryService,
RecordType as WikiRecordType,
@@ -103,11 +104,14 @@
"xmlFiles": ["augments.xml"],
},
},
+ "Servers": {
+ "Enabled": False,
+ },
}
)
store = StubStore()
- service = directoryFromConfig(config, store=store)
+ service = directoryFromConfig(config, store)
# Make sure XML files were created
dataRoot = FilePath(self.dataRoot)
Modified: CalendarServer/trunk/txdav/who/util.py
===================================================================
--- CalendarServer/trunk/txdav/who/util.py 2014-10-17 17:22:48 UTC (rev 14085)
+++ CalendarServer/trunk/txdav/who/util.py 2014-10-17 18:24:45 UTC (rev 14086)
@@ -15,7 +15,6 @@
##
-from calendarserver.tap.util import getDBPool, storeFromConfig
from twext.python.log import Logger
from twext.python.types import MappingProxyType
from twext.who.aggregate import DirectoryService as AggregateDirectoryService
@@ -40,12 +39,13 @@
)
from txdav.who.wiki import DirectoryService as WikiDirectoryService
from txdav.who.xml import DirectoryService as XMLDirectoryService
+from txdav.caldav.datastore.scheduling.ischedule.localservers import buildServersDB
log = Logger()
-def directoryFromConfig(config, store=None, serversDB=None):
+def directoryFromConfig(config, store):
"""
Return a directory service based on the config. If you want to go through
AMP to talk to one of these as a client, instantiate
@@ -62,10 +62,10 @@
# TODO: use proxyForInterface to ensure we're only using the DPS related
# store API. Also define an IDirectoryProxyStore Interface
- if store is None:
- _ignore_pool, txnFactory = getDBPool(config)
- store = storeFromConfig(config, txnFactory, None)
+ assert store is not None
+ serversDB = buildServersDB(config.Servers.MaxClients) if config.Servers.Enabled else None
+
return buildDirectory(
store,
config.DataRoot,
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20141017/e52895a6/attachment-0001.html>
More information about the calendarserver-changes
mailing list