diff --git a/sql/database-create.sql b/sql/database-create.sql index 5d96bdf6a2ba1d48822904f70882b7c3ab41d108..82a8fc6b05f53a7b0c19e83d7688675a6ea0404a 100644 --- a/sql/database-create.sql +++ b/sql/database-create.sql @@ -2112,6 +2112,34 @@ CREATE TABLE `last_reservation` ( UNIQUE KEY `pid` (`node_id`,`pid`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; +--- +--- Table structure for table `lease_attributes` +--- + +DROP TABLE IF EXISTS `lease_attributes`; +CREATE TABLE `lease_attributes` ( + `lease_idx` int(10) unsigned NOT NULL default '0', + `attrkey` varchar(32) NOT NULL default '', + `attrval` tinytext NOT NULL, + `attrtype` enum('integer','float','boolean','string') default 'string', + PRIMARY KEY (`lease_idx`,`attrkey`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1; + +--- +--- Table structure for table `lease_attributes` +--- + +DROP TABLE IF EXISTS `lease_permissions`; +CREATE TABLE `lease_permissions` ( + `lease_idx` int(10) unsigned NOT NULL default '0', + `lease_id` varchar(32) NOT NULL default '', + `permission_type` enum('user','group') NOT NULL default 'user', + `permission_id` varchar(128) NOT NULL default '', + `permission_idx` mediumint(8) unsigned NOT NULL default '0', + `allow_modify` tinyint(1) NOT NULL default '0', + PRIMARY KEY (`lease_idx`,`permission_type`,`permission_idx`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1; + -- -- Table structure for table `linkdelays` -- @@ -3506,6 +3534,45 @@ CREATE TABLE `proj_memb` ( PRIMARY KEY (`uid`,`pid`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; +-- +-- Table structure for table `project_leases` +-- + +DROP TABLE IF EXISTS `project_leases`; +CREATE TABLE `project_leases` ( + `lease_idx` int(10) unsigned NOT NULL default '0', + `lease_id` varchar(32) NOT NULL default '', + `owner_uid` varchar(8) NOT NULL default '', + `pid` varchar(48) NOT NULL default '', + `type` enum('stdataset','ltdataset','unknown') NOT NULL default 'unknown', + `inception` timestamp NOT NULL default CURRENT_TIMESTAMP, + `lease_end` timestamp NOT NULL default '2037-01-19 03:14:07', + `last_used` timestamp NOT NULL default '0000-00-00 00:00:00', + `state` enum('valid','unapproved','grace','locked','expired') NOT NULL default 'unapproved', + `statestamp` timestamp NOT NULL default '0000-00-00 00:00:00', + `locked` datetime default NULL, + `locker_pid` int(11) default '0', + PRIMARY KEY (`lease_idx`), + UNIQUE KEY `plid` (`pid`,`lease_id`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1; + +-- +-- Table structure for table `project_quotas` +-- + +DROP TABLE IF EXISTS `project_quotas`; +CREATE TABLE `project_quotas` ( + `quota_idx` int(10) unsigned NOT NULL, + `quota_id` varchar(32) NOT NULL default '', + `pid` varchar(48) NOT NULL default '', + `type` enum('ltdataset','unknown') NOT NULL default 'unknown', + `size` int(10) unsigned NOT NULL default '0', + `last_update` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, + `notes` tinytext, + PRIMARY KEY (`quota_idx`), + UNIQUE KEY `qpid` (`pid`,`quota_id`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1; + -- -- Table structure for table `project_stats` -- diff --git a/sql/updates/4/365 b/sql/updates/4/365 new file mode 100644 index 0000000000000000000000000000000000000000..578d30dadc29e4b3c68d1813429ca4ec48d2e1f3 --- /dev/null +++ b/sql/updates/4/365 @@ -0,0 +1,83 @@ +# +# Add tables for leases and quotas. +# +use strict; +use libdb; + +sub DoUpdate($$$) +{ + my ($dbhandle, $dbname, $version) = @_; + + if(!DBTableExists("project_quotas")) { + DBQueryFatal("CREATE TABLE `project_quotas` ( ". + " `quota_idx` int(10) unsigned NOT NULL, ". + " `quota_id` varchar(32) NOT NULL default '', ". + " `pid` varchar(48) NOT NULL default '', ". + " `type` enum ('ltdataset','unknown') NOT NULL default 'unknown', ". + " `size` int(10) unsigned NOT NULL default '0', ". + " `last_update` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, ". + " `notes` tinytext,". + " PRIMARY KEY (`quota_idx`), ". + " UNIQUE KEY `qpid` (`pid`,`quota_id`) ". + ") ENGINE=MyISAM DEFAULT CHARSET=latin1"); + } + + if(!DBTableExists("project_leases")) { + DBQueryFatal("CREATE TABLE `project_leases` ( ". + " `lease_idx` int(10) unsigned NOT NULL default '0', ". + " `lease_id` varchar(32) NOT NULL default '', ". + " `owner_uid` varchar(8) NOT NULL default '', ". + " `pid` varchar(48) NOT NULL default '', ". + " `type` enum ('stdataset','ltdataset','unknown') NOT NULL default 'unknown', ". + " `inception` timestamp NOT NULL default CURRENT_TIMESTAMP, ". + " `lease_end` timestamp NOT NULL default '2037-01-19 03:14:07', ". + " `last_used` timestamp NOT NULL default '0000-00-00 00:00:00', ". + " `state` enum ('valid','unapproved','grace','locked','expired') NOT NULL default 'unapproved', ". + " `statestamp` timestamp NOT NULL default '0000-00-00 00:00:00', ". + " `locked` datetime default NULL, ". + " `locker_pid` int(11) default '0', ". + " PRIMARY KEY (`lease_idx`), ". + " UNIQUE KEY `plid` (`pid`,`lease_id`) ". + ") ENGINE=MyISAM DEFAULT CHARSET=latin1"); + } + + if(!DBTableExists("lease_attributes")) { + DBQueryFatal("CREATE TABLE `lease_attributes` ( ". + " `lease_idx` int(10) unsigned NOT NULL default '0', ". + " `attrkey` varchar(32) NOT NULL default '', ". + " `attrval` tinytext NOT NULL, ". + " `attrtype` enum ('integer','float','boolean','string') default 'string', ". + " PRIMARY KEY (`lease_idx`,`attrkey`) ". + ") ENGINE=MyISAM DEFAULT CHARSET=latin1"); + } + + if(!DBTableExists("lease_permissions")) { + DBQueryFatal("CREATE TABLE `lease_permissions` ( ". + " `lease_idx` int(10) unsigned NOT NULL default '0', ". + " `lease_id` varchar(32) NOT NULL default '', ". + " `permission_type` enum ('user','group') NOT NULL default 'user', ". + " `permission_id` varchar(128) NOT NULL default '', ". + " `permission_idx` mediumint(8) unsigned NOT NULL default '0', ". + " `allow_modify` tinyint(1) NOT NULL default '0', ". + " PRIMARY KEY (`lease_idx`,`permission_type`,`permission_idx`) ". + ") ENGINE=MyISAM DEFAULT CHARSET=latin1"); + } + + DBQueryFatal("REPLACE INTO table_regex VALUES ". + "('project_leases','lease_id','text','redirect',". + "'virt_nodes:vname',1,32,NULL)"); + + DBQueryFatal("REPLACE INTO table_regex VALUES ". + "('project_quotas','quota_id','text','regex',". + "'^[-_\\\\w\\\\.:+]+\$',1,128,NULL)"); + + DBQueryFatal("REPLACE INTO table_regex VALUES ". + "('project_quotas','notes','text','redirect',". + "'default:tinytext',0,256,NULL)"); + + return 0; +} + +# Local Variables: +# mode:perl +# End: