- 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.