caudium-commits AT caudium.net
Caudium CVS Commits list

[caudium-commits] [caudium commit] r9318 - in trunk/caudium: . server/base_server server/etc/modules/Caudium.pmod server/etc/upgrade...


Chronological Thread 
  • From: codesite-noreply AT google.com
  • To: caudium-commits AT caudium.net
  • Subject: [caudium-commits] [caudium commit] r9318 - in trunk/caudium: . server/base_server server/etc/modules/Caudium.pmod server/etc/upgrade...
  • Date: Tue, 01 Jul 2008 14:08:07 -0700
  • Authentication-results: mail01.oav.net (amavisd-new); dkim=pass header.i= AT google.com
  • Authentication-results: mail01.oav.net (amavisd-new); domainkeys=pass header.from=codesite-noreply AT google.com
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=google.com; s=beta; h=mime-version:message-id:date:subject:from:to:content-type :content-transfer-encoding; b=U3lM4awibxZHwXH1x/E06kVVh2Z0e0CkJ/37LSSWurhp/ib6sAXvnwOJmNMrTmet9c r3Yvfs4zGFpIZ0znFeDg==

Author: bill.welliver
Date: Tue Jul  1 14:07:13 2008
New Revision: 9318

Added:
  trunk/caudium/server/etc/modules/Caudium.pmod/UpgradeTask.pike
  trunk/caudium/server/etc/upgrade.d/1.4.0/
  trunk/caudium/server/etc/upgrade.d/1.4.0/SQLuserdb.pike
     - copied, changed from r9301, 
/trunk/caudium/server/etc/upgrade.d/SQLuserdb.pike
  trunk/caudium/server/etc/upgrade.d/1.4.0/activedirectoryauth.pike
     - copied, changed from r9301, 
/trunk/caudium/server/etc/upgrade.d/activedirectoryauth.pike
  trunk/caudium/server/etc/upgrade.d/1.4.0/ldapuserauth.pike
     - copied, changed from r9301, 
/trunk/caudium/server/etc/upgrade.d/ldapuserauth.pike
  trunk/caudium/server/etc/upgrade.d/1.4.0/userdb.pike
     - copied, changed from r9301, 
/trunk/caudium/server/etc/upgrade.d/userdb.pike
  trunk/caudium/server/etc/upgrade.d/1.4.0/ypuserdb.pike
     - copied, changed from r9301, 
/trunk/caudium/server/etc/upgrade.d/ypuserdb.pike
Removed:
  trunk/caudium/server/etc/upgrade.d/SQLuserdb.pike
  trunk/caudium/server/etc/upgrade.d/activedirectoryauth.pike
  trunk/caudium/server/etc/upgrade.d/ldapuserauth.pike
  trunk/caudium/server/etc/upgrade.d/userdb.pike
  trunk/caudium/server/etc/upgrade.d/ypuserdb.pike
Modified:
  trunk/caudium/CHANGES
  trunk/caudium/server/base_server/caudium.pike

Log:

the upgrade system is no more. long live the upgrade system!



Modified: trunk/caudium/CHANGES
==============================================================================
--- trunk/caudium/CHANGES       (original)
+++ trunk/caudium/CHANGES       Tue Jul  1 14:07:13 2008
@@ -1,5 +1,8 @@
Changes in Caudium 1.5.1 since Caudium 1.4.1
---------------------------------------------
+- Added new upgrade support system. Allows multiple installation or
+  virtual server upgrade tasks to be performed per version.
+  (Bill Welliver)
- Fixed encoding generated by  _Caudium.*_encode_mapping() and
  _Caudium._make_container_attributes().
  (Bill Welliver)

Modified: trunk/caudium/server/base_server/caudium.pike
==============================================================================
--- trunk/caudium/server/base_server/caudium.pike       (original)
+++ trunk/caudium/server/base_server/caudium.pike       Tue Jul  1 14:07:13 
2008
@@ -2438,10 +2438,9 @@
{
  int p;

-  globvar("upgrade_performed", 0, "Upgrade Performed?", TYPE_FLAG|VAR_MORE,
- "If set to No, the server will attempt to perform any upgrade steps on the next startup."
- "Normally, the upgrade procedure is run on the first startup, though you might need to set this "
- "if you migrate configurations from an older server, or upgrade the server software in the future.");
+  globvar("upgrade_version", 0, "Upgraded Version", TYPE_STRING|VAR_MORE,
+        "Contains the version of Caudium last run. On startup, Caudium will "
+        "check this value to see if additional upgrade steps are 
necessary.");

  globvar("snmp_enable", 0, "SNMP Agent: Enable SNMP Agent", TYPE_FLAG,
        "If set to Yes, the server will enable access to server status "
@@ -3484,29 +3483,64 @@
// check to see if we've upgraded yet. if not, run the upgrade.
void check_perform_upgrade()
{
-  mixed e=catch(GLOBVAR(upgrade_performed));
-  if(e || !GLOBVAR(upgrade_performed))
-    do_perform_upgrade();
+  string v;
+  mixed e=catch(GLOBVAR(upgrade_version));
+  if(e || !(v = GLOBVAR(upgrade_version)))
+    do_perform_upgrade(v);
}

// run the upgrade procedure, running code from files in etc/upgrade.d
-void do_perform_upgrade()
+void do_perform_upgrade(string version)
{
-   report_notice("Performing upgrade...\n");
+   report_notice("Performing upgrade from " + version + "...\n");
   array uc=get_dir("etc/upgrade.d");
+
+   foreach(uc;;string dir)
+   {
+     Stdio.Stat fs = file_stat(combine_path("etc/upgrade.d", dir));
+     if(!fs->isdir)
+     {
+       uc -= ({ dir });
+     }
+   }
+
+   uc = Array.sort_array(uc, Array.oid_sort_func);
+
+   foreach(uc;; string ver)
+   {
+     if(Array.oid_sort_func(version, ver) || version == ver)
+       continue; // we've already performed upgrades to this release
+
+     else
+     {
+       do_perform_version(ver);
+     }
+   }
+
+   // if we get to the end, we should be at the current release.
+   set("upgrade_version", __caudium_version__ + "." + __caudium_build__);
+
+}
+
+void do_perform_upgrade_version(string version)
+{
+  report_info("Performing upgrade to version " + version + ".");
+   string ud = combine_path("etc/upgrade.d" , version);
+   array uc = get_dir(ud);
   if(uc) uc=glob("*.pike", uc);
-   if(!uc || sizeof(uc)==0) report_error("no upgrade code found in 
etc/upgrade.d!\n");
-   else foreach(caudium->configurations, object config)
+   if(!uc || sizeof(uc)==0)
+     report_error("no upgrade code found in " + ud + "!\n");
+   else
   {
- report_notice("Upgrading virtual server configuration " + config->name + "...\n");
     foreach(uc, string codefile)
     {
-       object upgrade_object=((program)("etc/upgrade.d/" + 
codefile))(config);
-       if(!upgrade_object->run())
- report_error("Upgrade " + codefile + " failed for configuration " + config->name + "\n");
+       object upgrade_object=((program)(combine_path(ud, codefile)))();
+       if(upgrade_object->run)
+         upgrade_object->run();
     }
   }
-   set("upgrade_performed", 1);
+
+   set("upgrade_version", version);
}

void|string diagnose_error(array from)

Added: trunk/caudium/server/etc/modules/Caudium.pmod/UpgradeTask.pike
==============================================================================
--- (empty file)
+++ trunk/caudium/server/etc/modules/Caudium.pmod/UpgradeTask.pike Tue Jul 1 14:07:13 2008
@@ -0,0 +1,28 @@
+int run()
+{
+
+  if(upgrade_server)
+  {
+    upgrade_server();
+  }
+
+  if(upgrade_configuration)
+  {
+    foreach(caudium->configurations, object config)
+    {
+ report_notice("Upgrading virtual server configuration " + config->name + "...\n");
+       if(!upgrade_configuration())
+ report_error("Upgrade " + codefile + " failed for configuration " + config->name + "\n");
+    }
+  }
+
+  return 1;
+}
+
+//! define this function if you wish to perform a task for each
+//! virtual server configuration present
+int upgrade_configuration(object configuration);
+
+//! define this function if you wish to perform a task for the whole
+//! server installation
+int upgrade_server();

Copied: trunk/caudium/server/etc/upgrade.d/1.4.0/SQLuserdb.pike (from r9301, /trunk/caudium/server/etc/upgrade.d/SQLuserdb.pike)
==============================================================================
--- /trunk/caudium/server/etc/upgrade.d/SQLuserdb.pike  (original)
+++ trunk/caudium/server/etc/upgrade.d/1.4.0/SQLuserdb.pike Tue Jul 1 14:07:13 2008
@@ -1,14 +1,12 @@
// upgrade configurations containing SQLuserdb to auth_master + auth_sqldb.

-object config;
+inherit Caudium.UpgradeTask;

-void create(object c)
-{
-  config=c;
-}
+object config;

-int run()
+int upgrade_configuration(object c)
{
+  config = c;
  array varstoget=({"sqlserver", "table"});
  mapping vars=([]);
  mapping reg;

Copied: trunk/caudium/server/etc/upgrade.d/1.4.0/activedirectoryauth.pike (from r9301, /trunk/caudium/server/etc/upgrade.d/activedirectoryauth.pike)
==============================================================================
--- /trunk/caudium/server/etc/upgrade.d/activedirectoryauth.pike        
(original)
+++ trunk/caudium/server/etc/upgrade.d/1.4.0/activedirectoryauth.pike   
Tue Jul  1 14:07:13 2008
@@ -1,14 +1,12 @@
// upgrade configurations containing activedirectoryauth to auth_master + auth_activedirectory.

-object config;
+inherit Caudium.UpgradeTask;

-void create(object c)
-{
-  config=c;
-}
+object config;

-int run()
+int upgrade_configuration(object c)
{
+  config = c;
  array varstoget=({"addomain", "adservers", "aduser", "adpassword"});
  mapping vars=([]);
  mapping reg;

Copied: trunk/caudium/server/etc/upgrade.d/1.4.0/ldapuserauth.pike (from r9301, /trunk/caudium/server/etc/upgrade.d/ldapuserauth.pike)
==============================================================================
--- /trunk/caudium/server/etc/upgrade.d/ldapuserauth.pike       (original)
+++ trunk/caudium/server/etc/upgrade.d/1.4.0/ldapuserauth.pike Tue Jul 1 14:07:13 2008
@@ -1,14 +1,12 @@
// upgrade configurations containing ldapuserauth to auth_master + auth_ldap.

-object config;
+inherit Caudium.UpgradeTask;

-void create(object c)
-{
-  config=c;
-}
+object config;

-int run()
+int upgrade_configuration(object c)
{
+  config = c;
  array varstoget=({"CI_dir_server", "CI_basename", "CI_level"});
  mapping vars=([]);
  mapping reg;

Copied: trunk/caudium/server/etc/upgrade.d/1.4.0/userdb.pike (from r9301, /trunk/caudium/server/etc/upgrade.d/userdb.pike)
==============================================================================
--- /trunk/caudium/server/etc/upgrade.d/userdb.pike     (original)
+++ trunk/caudium/server/etc/upgrade.d/1.4.0/userdb.pike Tue Jul 1 14:07:13 2008
@@ -1,14 +1,12 @@
// upgrade configurations containing userdb to auth_master + auth_userdb.

-object config;
+inherit Caudium.UpgradeTask;

-void create(object c)
-{
-  config=c;
-}
+object config;

-int run()
+int upgrade_configuration(object c)
{
+  config = c;
  array varstoget=({"update", "Swashii", "method", "file", "args", "shadowfile", 
"Strip"});
  mapping vars=([]);
  mapping reg;

Copied: trunk/caudium/server/etc/upgrade.d/1.4.0/ypuserdb.pike (from r9301, /trunk/caudium/server/etc/upgrade.d/ypuserdb.pike)
==============================================================================
--- /trunk/caudium/server/etc/upgrade.d/ypuserdb.pike   (original)
+++ trunk/caudium/server/etc/upgrade.d/1.4.0/ypuserdb.pike Tue Jul 1 14:07:13 2008
@@ -1,14 +1,12 @@
// upgrade configurations containing ypuserdb to auth_master + auth_ypuserdb.

-object config;
+inherit Caudium.UpgradeTask;

-void create(object c)
-{
-  config=c;
-}
+object config;

-int run()
+int upgrade_configuration(object c)
{
+  config = c;
  array varstoget=({"update"});
  mapping vars=([]);
  mapping reg;


  • [caudium-commits] [caudium commit] r9318 - in trunk/caudium: . server/base_server server/etc/modules/Caudium.pmod server/etc/upgrade..., codesite-noreply, 07/01/2008

Archive powered by MHonArc 2.6.16.

§