[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