[Erp5-report] r34539 luke - /erp5/trunk/utils/erp5.timmy/src/erp5/timmy/timmy.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Wed Apr 14 11:50:45 CEST 2010
Author: luke
Date: Wed Apr 14 11:50:44 2010
New Revision: 34539
URL: http://svn.erp5.org?rev=34539&view=rev
Log:
- move Business Configuration as plugin of partition
- report more information to server side
Modified:
erp5/trunk/utils/erp5.timmy/src/erp5/timmy/timmy.py
Modified: erp5/trunk/utils/erp5.timmy/src/erp5/timmy/timmy.py
URL: http://svn.erp5.org/erp5/trunk/utils/erp5.timmy/src/erp5/timmy/timmy.py?rev=34539&r1=34538&r2=34539&view=diff
==============================================================================
--- erp5/trunk/utils/erp5.timmy/src/erp5/timmy/timmy.py [utf8] (original)
+++ erp5/trunk/utils/erp5.timmy/src/erp5/timmy/timmy.py [utf8] Wed Apr 14 11:50:44 2010
@@ -237,6 +237,108 @@
return getattr(self, 'getPartitionState_%s' % self.partition_type)()
# Specific code - candidates for plugins
+ # Business Configuration
+ def BusinessConfiguration(self):
+ pass
+
+ def install_BusinessConfiguration(self):
+ return self.getPartitionState_BusinessConfiguration()
+
+ def start_BusinessConfiguration(self):
+ return self.getPartitionState_BusinessConfiguration()
+
+ def stop_BusinessConfiguration(self):
+ return self.getPartitionState_BusinessConfiguration()
+
+ def connectBusinessConfiguration(self):
+ self.connection = xmlrpclib.ServerProxy(
+ self.connection_string,
+ allow_none=True)
+
+ def getPartitionState_BusinessConfiguration(self):
+ self.connection_string = '%(PROTOCOL)s://%(USERNAME)s:%(PASSWORD)s@%(HOS'\
+ 'TNAME)s:%(TCP_PORT)s/%(RESOURCE_ID)s/' % \
+ self.partition_dict['CONNECTION_DICT']
+ self.connectBusinessConfiguration()
+ try:
+ # if site was configured, we shall not do nothing
+ # XXX-Luke: This is against "work always" assumption
+ try:
+ self.connection.portal_preferences.default_configurator_preference \
+ .getId()
+ except xmlrpclib.Fault, e:
+ # not configured
+ if 'zExceptions.NotFound' in e.faultString:
+ pass
+ else:
+ # configured, do not touch
+ return 'reportStarted', 'Already configured'
+ if self.connection.portal_activities.countMessageWithTag(
+ 'initialERP5Setup') > 0:
+ # do not work on instance, on witch initial setup is done
+ # this is one big transaction and timmy makes it restart
+ return 'reportStarting', 'Configuration in progress'
+ # set id
+ self.connection.setERP5SiteGlobalId(self.partition_dict[
+ 'ID'])
+ # install templates
+ self.connection.portal_templates.updateRepositoryBusinessTemplateList(
+ self.partition_dict['BT5_REPOSITORY_LIST'], None)
+ result = self.connection.portal_templates\
+ .installBusinessTemplatesFromRepositories(
+ self.partition_dict['BT5_LIST'])
+ logging.info('Installed Business Templates with result: %s' % ','.join(
+ result))
+ # XXX-Luke: In case if BT is installed, it might be required to restart
+
+ # add special user
+ try:
+ self.connection.acl_users.zodb_users.manage_addUser(
+ self.partition_dict['WITCH_LOGIN'],'',
+ self.partition_dict['WITCH_PASSWORD'],
+ self.partition_dict['WITCH_PASSWORD'],
+ None)
+ except xmlrpclib.Fault, e:
+ if 'Duplicate user ID' not in e.faultString:
+ return 'reportError', 'xmlrpclib.Fault: %s' % e.faultString
+ # missing possiblity to do:
+ # self.connection.zodb_roles.doAssignRoleToPrincipal(
+ # self.partition_dict['WITCH_LOGIN'], 'Member')
+ self.connection.portal_wizard.manage_addLocalRoles(
+ self.partition_dict['WITCH_LOGIN'],
+ ('Manager',),None)
+ # preferences
+ default_site_preference = self.connection.portal_preferences\
+ .default_site_preference
+ default_site_preference.setPreferredWitchToolServerUrl(
+ self.partition_dict['WITCH_SERVER_URL'])
+ default_site_preference.setPreferredWitchToolServerRoot('')
+ default_site_preference.setPreferredExpressSubscriptionStatus('1')
+ default_site_preference.setPreferredExpressErp5Uid(
+ self.partition_dict['ID'])
+ default_site_preference.setPreferredHtmlStyleDevelopperMode(None)
+ default_site_preference.setPreferredHtmlStyleAccessTab('1')
+ if default_site_preference.getPreferenceState() == 'disabled':
+ default_site_preference.enable()
+
+ customer_preference = self.connection.portal_preferences\
+ .erp5_express_default_customer_preference
+ customer_preference.setPreferredExpressUserId(
+ self.partition_dict['WITCH_LOGIN'])
+ customer_preference.setPreferredExpressPassword(
+ self.partition_dict['WITCH_PASSWORD'])
+ if customer_preference.getPreferenceState() == 'disabled':
+ customer_preference.enable()
+ return 'reportInstalled', 'Ready for configuration'
+ except socket.error:
+ logging.warning('Cannot connect to %s, ignoring for now' %
+ self.connection_string)
+ return 'reportError', 'Cannot connect to Business Configuration, ignored for now'
+ except Exception, e:
+ logging.error('Uncaught error %s for %s' % (e, self.connection_string))
+ return 'reportError', 'Uncaught error %s' % e
+
+ # Computer
def Computer(self):
pass
@@ -376,95 +478,6 @@
if result:
server.call('updatePartitionState', partition.partition_id,
*result)
-
-class BusinessConfigurationCommunication(object):
- # XXX-Luke: move to recipe!
- def __init__(self, business_configuration_dict):
- self.business_configuration_dict = business_configuration_dict
- self.connection_string = '%(PROTOCOL)s://%(USERNAME)s:%(PASSWORD)s@%(HOS'\
- 'TNAME)s:%(TCP_PORT)s/%(RESOURCE_ID)s/' % \
- self.business_configuration_dict['CONNECTION_DICT']
- self.connect()
-
- def connect(self):
- self.connection = xmlrpclib.ServerProxy(
- self.connection_string,
- allow_none=True)
-
- def update(self):
- try:
- # if site was configured, we shall not do nothing
- # XXX-Luke: This is against "work always" assumption
- try:
- self.connection.portal_preferences.default_configurator_preference \
- .getId()
- except xmlrpclib.Fault, e:
- # not configured
- if 'zExceptions.NotFound' in e.faultString:
- pass
- else:
- # configured, do not touch
- return
- if self.connection.portal_activities.countMessageWithTag(
- 'initialERP5Setup') > 0:
- # do not work on instance, on witch initial setup is done
- # this is one big transaction and timmy makes it restart
- return
- # set id
- self.connection.setERP5SiteGlobalId(self.business_configuration_dict[
- 'ID'])
- # install templates
- self.connection.portal_templates.updateRepositoryBusinessTemplateList(
- self.business_configuration_dict['BT5_REPOSITORY_LIST'], None)
- result = self.connection.portal_templates\
- .installBusinessTemplatesFromRepositories(
- self.business_configuration_dict['BT5_LIST'])
- logging.info('Installed Business Templates with result: %s' % ','.join(
- result))
- # XXX-Luke: In case if BT is installed, it might be required to restart
-
- # add special user
- try:
- self.connection.acl_users.zodb_users.manage_addUser(
- self.business_configuration_dict['WITCH_LOGIN'],'',
- self.business_configuration_dict['WITCH_PASSWORD'],
- self.business_configuration_dict['WITCH_PASSWORD'],
- None)
- except xmlrpclib.Fault, e:
- if 'Duplicate user ID' not in e.faultString:
- raise
- # missing possiblity to do:
- # self.connection.zodb_roles.doAssignRoleToPrincipal(
- # self.business_configuration_dict['WITCH_LOGIN'], 'Member')
- self.connection.portal_wizard.manage_addLocalRoles(
- self.business_configuration_dict['WITCH_LOGIN'],
- ('Manager',),None)
- # preferences
- default_site_preference = self.connection.portal_preferences\
- .default_site_preference
- default_site_preference.setPreferredWitchToolServerUrl(
- self.business_configuration_dict['WITCH_SERVER_URL'])
- default_site_preference.setPreferredWitchToolServerRoot('')
- default_site_preference.setPreferredExpressSubscriptionStatus('1')
- default_site_preference.setPreferredExpressErp5Uid(
- self.business_configuration_dict['ID'])
- default_site_preference.setPreferredHtmlStyleDevelopperMode(None)
- default_site_preference.setPreferredHtmlStyleAccessTab('1')
- if default_site_preference.getPreferenceState() == 'disabled':
- default_site_preference.enable()
-
- customer_preference = self.connection.portal_preferences\
- .erp5_express_default_customer_preference
- customer_preference.setPreferredExpressUserId(
- self.business_configuration_dict['WITCH_LOGIN'])
- customer_preference.setPreferredExpressPassword(
- self.business_configuration_dict['WITCH_PASSWORD'])
- if customer_preference.getPreferenceState() == 'disabled':
- customer_preference.enable()
- except socket.error:
- logging.warning('Cannot connect to %s, ignoring for now' %
- self.connection_string)
- return
def keygenParseOptions():
parser = OptionParser()
@@ -543,10 +556,6 @@
action = getattr(helper, switcher_dict[partition_dict['ACTION']])
action(partition, server)
- # update Business Configuration on instances
- for partition_dict in [q for q in partition_dict_list if q['TYPE'] == \
- 'Business Configuration']:
- BusinessConfigurationCommunication(partition_dict).update()
finally:
setRunning(False, options.pid_file)
More information about the Erp5-report
mailing list