Author: nunofsantos
Date: 2009-06-08 14:11:25 -0400 (Mon, 08 Jun 2009)
New Revision: 3434
Modified:
mgmt/trunk/mint/python/mint/schema.py
mgmt/trunk/mint/sql/schema.sql
mgmt/trunk/mint/sql/triggers.sql
Log:
updated schema
Modified: mgmt/trunk/mint/python/mint/schema.py
===================================================================
--- mgmt/trunk/mint/python/mint/schema.py 2009-06-08 17:51:40 UTC (rev 3433)
+++ mgmt/trunk/mint/python/mint/schema.py 2009-06-08 18:11:25 UTC (rev 3434)
@@ -288,6 +288,74 @@
model.callMethod(self.qmfBrokerId, originalId, self.qmfClassKey, "Submit",
callback, args=actualArgs)
+ def GetAd(self, model, callback, Id, JobAd):
+ actualArgs = list()
+ if Id is not None:
+ actualArgs.append(Id)
+ if JobAd is not None:
+ actualArgs.append(JobAd)
+ originalId = ObjectId(None, self.qmfScopeId, self.qmfObjectId)
+ model.callMethod(self.qmfBrokerId, originalId, self.qmfClassKey, "GetAd",
+ callback, args=actualArgs)
+
+ def SetAttribute(self, model, callback, Id, Name, Value):
+ actualArgs = list()
+ if Id is not None:
+ actualArgs.append(Id)
+ if Name is not None:
+ actualArgs.append(Name)
+ if Value is not None:
+ actualArgs.append(Value)
+ originalId = ObjectId(None, self.qmfScopeId, self.qmfObjectId)
+ model.callMethod(self.qmfBrokerId, originalId, self.qmfClassKey,
"SetAttribute",
+ callback, args=actualArgs)
+
+ def Hold(self, model, callback, Id, Reason):
+ actualArgs = list()
+ if Id is not None:
+ actualArgs.append(Id)
+ if Reason is not None:
+ actualArgs.append(Reason)
+ originalId = ObjectId(None, self.qmfScopeId, self.qmfObjectId)
+ model.callMethod(self.qmfBrokerId, originalId, self.qmfClassKey, "Hold",
+ callback, args=actualArgs)
+
+ def Release(self, model, callback, Id, Reason):
+ actualArgs = list()
+ if Id is not None:
+ actualArgs.append(Id)
+ if Reason is not None:
+ actualArgs.append(Reason)
+ originalId = ObjectId(None, self.qmfScopeId, self.qmfObjectId)
+ model.callMethod(self.qmfBrokerId, originalId, self.qmfClassKey,
"Release",
+ callback, args=actualArgs)
+
+ def Remove(self, model, callback, Id, Reason):
+ actualArgs = list()
+ if Id is not None:
+ actualArgs.append(Id)
+ if Reason is not None:
+ actualArgs.append(Reason)
+ originalId = ObjectId(None, self.qmfScopeId, self.qmfObjectId)
+ model.callMethod(self.qmfBrokerId, originalId, self.qmfClassKey, "Remove",
+ callback, args=actualArgs)
+
+ def Fetch(self, model, callback, Id, File, Start, End, Data):
+ actualArgs = list()
+ if Id is not None:
+ actualArgs.append(Id)
+ if File is not None:
+ actualArgs.append(File)
+ if Start is not None:
+ actualArgs.append(Start)
+ if End is not None:
+ actualArgs.append(End)
+ if Data is not None:
+ actualArgs.append(Data)
+ originalId = ObjectId(None, self.qmfScopeId, self.qmfObjectId)
+ model.callMethod(self.qmfBrokerId, originalId, self.qmfClassKey, "Fetch",
+ callback, args=actualArgs)
+
class SchedulerStats(SQLObject):
class sqlmeta:
lazyUpdate = True
@@ -629,6 +697,44 @@
+class Submission(SQLObject):
+ class sqlmeta:
+ lazyUpdate = True
+ qmfBrokerId = StringCol(length=1000, default=None)
+ qmfScopeId = BigIntCol(default=None)
+ qmfAgentId = StringCol(length=1000, default=None)
+ qmfObjectId = BigIntCol(default=None)
+ qmfIdsUnique = DatabaseIndex(qmfBrokerId, qmfScopeId, qmfObjectId, unique=True)
+ qmfClassKey = StringCol(length=1000, default=None)
+ qmfPersistent = BoolCol(default=None)
+ qmfUpdateTime = TimestampCol(default=None)
+ qmfCreateTime = TimestampCol(default=None)
+ qmfDeleteTime = TimestampCol(default=None)
+ statsCurr = ForeignKey('SubmissionStats', cascade='null',
default=None)
+ statsCurrIndex = DatabaseIndex(statsCurr)
+ statsPrev = ForeignKey('SubmissionStats', cascade='null',
default=None)
+ statsPrevIndex = DatabaseIndex(statsPrev)
+ classInfos = dict() # brokerId => classInfo
+ scheduler = ForeignKey('Scheduler', cascade='null', default=None)
+ submitter = ForeignKey('Submitter', cascade='null', default=None)
+ Name = StringCol(length=1000, default=None)
+
+
+class SubmissionStats(SQLObject):
+ class sqlmeta:
+ lazyUpdate = True
+ qmfUpdateTime = TimestampCol(default=None)
+ submission = ForeignKey('Submission', cascade='null', default=None)
+ classInfos = dict() # brokerId => classInfo
+ Idle = BigIntCol(default=None)
+ Running = BigIntCol(default=None)
+ Removed = BigIntCol(default=None)
+ Completed = BigIntCol(default=None)
+ Held = BigIntCol(default=None)
+
+
+
+
class Acl(SQLObject):
class sqlmeta:
lazyUpdate = True
@@ -1540,6 +1646,16 @@
Grid.sqlmeta.addJoin(SQLMultipleJoin('GridStats',
joinMethodName='stats'))
+classToSchemaNameMap['Submission'] = 'Submission'
+schemaNameToClassMap['Submission'] = Submission
+
+Scheduler.sqlmeta.addJoin(SQLMultipleJoin('Submission',
joinMethodName='submissions'))
+
+Submitter.sqlmeta.addJoin(SQLMultipleJoin('Submission',
joinMethodName='submissions'))
+
+
+Submission.sqlmeta.addJoin(SQLMultipleJoin('SubmissionStats',
joinMethodName='stats'))
+
classToSchemaNameMap['Acl'] = 'Acl'
schemaNameToClassMap['Acl'] = Acl
@@ -1669,6 +1785,6 @@
Sysimage.sqlmeta.addJoin(SQLMultipleJoin('SysimageStats',
joinMethodName='stats'))
-entityClasses = ['Slot', 'Job', 'Scheduler', 'Submitter',
'Negotiator', 'Collector', 'Master', 'Grid',
'Acl', 'Cluster', 'Store', 'Journal', 'System',
'Broker', 'Agent', 'Vhost', 'Queue', 'Exchange',
'Binding', 'ClientConnection', 'Link', 'Bridge',
'Session', 'Sysimage']
+entityClasses = ['Slot', 'Job', 'Scheduler', 'Submitter',
'Negotiator', 'Collector', 'Master', 'Grid',
'Submission', 'Acl', 'Cluster', 'Store',
'Journal', 'System', 'Broker', 'Agent', 'Vhost',
'Queue', 'Exchange', 'Binding', 'ClientConnection',
'Link', 'Bridge', 'Session', 'Sysimage']
-statsClasses = ['SlotStats', 'JobStats', 'SchedulerStats',
'SubmitterStats', 'NegotiatorStats', 'CollectorStats',
'MasterStats', 'GridStats', 'AclStats', 'ClusterStats',
'StoreStats', 'JournalStats', 'SystemStats',
'BrokerStats', 'AgentStats', 'VhostStats', 'QueueStats',
'ExchangeStats', 'BindingStats', 'ClientConnectionStats',
'LinkStats', 'BridgeStats', 'SessionStats',
'SysimageStats']
+statsClasses = ['SlotStats', 'JobStats', 'SchedulerStats',
'SubmitterStats', 'NegotiatorStats', 'CollectorStats',
'MasterStats', 'GridStats', 'SubmissionStats', 'AclStats',
'ClusterStats', 'StoreStats', 'JournalStats',
'SystemStats', 'BrokerStats', 'AgentStats', 'VhostStats',
'QueueStats', 'ExchangeStats', 'BindingStats',
'ClientConnectionStats', 'LinkStats', 'BridgeStats',
'SessionStats', 'SysimageStats']
Modified: mgmt/trunk/mint/sql/schema.sql
===================================================================
--- mgmt/trunk/mint/sql/schema.sql 2009-06-08 17:51:40 UTC (rev 3433)
+++ mgmt/trunk/mint/sql/schema.sql 2009-06-08 18:11:25 UTC (rev 3434)
@@ -930,6 +930,38 @@
tpl_outstanding_ai_os_high BIGINT
);
+CREATE TABLE submission (
+ id SERIAL PRIMARY KEY,
+ qmf_broker_id VARCHAR(1000),
+ qmf_scope_id BIGINT,
+ qmf_agent_id VARCHAR(1000),
+ qmf_object_id BIGINT,
+ qmf_class_key VARCHAR(1000),
+ qmf_persistent BOOL,
+ qmf_update_time TIMESTAMP,
+ qmf_create_time TIMESTAMP,
+ qmf_delete_time TIMESTAMP,
+ stats_curr_id INT,
+ stats_prev_id INT,
+ scheduler_id INT,
+ submitter_id INT,
+ name VARCHAR(1000)
+);
+CREATE UNIQUE INDEX submission_qmfIdsUnique ON submission (qmf_broker_id, qmf_scope_id,
qmf_object_id);
+CREATE INDEX submission_statsPrevIndex ON submission (stats_prev_id);
+CREATE INDEX submission_statsCurrIndex ON submission (stats_curr_id);
+
+CREATE TABLE submission_stats (
+ id SERIAL PRIMARY KEY,
+ qmf_update_time TIMESTAMP,
+ submission_id INT,
+ idle BIGINT,
+ running BIGINT,
+ removed BIGINT,
+ completed BIGINT,
+ held BIGINT
+);
+
CREATE TABLE submitter (
id SERIAL PRIMARY KEY,
qmf_broker_id VARCHAR(1000),
@@ -1227,6 +1259,16 @@
ALTER TABLE store_stats ADD CONSTRAINT store_id_exists FOREIGN KEY (store_id) REFERENCES
store (id) ON DELETE SET NULL;
+ALTER TABLE submission ADD CONSTRAINT stats_curr_id_exists FOREIGN KEY (stats_curr_id)
REFERENCES submission_stats (id) ON DELETE SET NULL;
+
+ALTER TABLE submission ADD CONSTRAINT stats_prev_id_exists FOREIGN KEY (stats_prev_id)
REFERENCES submission_stats (id) ON DELETE SET NULL;
+
+ALTER TABLE submission ADD CONSTRAINT scheduler_id_exists FOREIGN KEY (scheduler_id)
REFERENCES scheduler (id) ON DELETE SET NULL;
+
+ALTER TABLE submission ADD CONSTRAINT submitter_id_exists FOREIGN KEY (submitter_id)
REFERENCES submitter (id) ON DELETE SET NULL;
+
+ALTER TABLE submission_stats ADD CONSTRAINT submission_id_exists FOREIGN KEY
(submission_id) REFERENCES submission (id) ON DELETE SET NULL;
+
ALTER TABLE submitter ADD CONSTRAINT stats_curr_id_exists FOREIGN KEY (stats_curr_id)
REFERENCES submitter_stats (id) ON DELETE SET NULL;
ALTER TABLE submitter ADD CONSTRAINT stats_prev_id_exists FOREIGN KEY (stats_prev_id)
REFERENCES submitter_stats (id) ON DELETE SET NULL;
Modified: mgmt/trunk/mint/sql/triggers.sql
===================================================================
--- mgmt/trunk/mint/sql/triggers.sql 2009-06-08 17:51:40 UTC (rev 3433)
+++ mgmt/trunk/mint/sql/triggers.sql 2009-06-08 18:11:25 UTC (rev 3434)
@@ -121,6 +121,19 @@
CREATE INDEX grid_stats_update_time ON grid_stats (qmf_update_time);
+CREATE OR REPLACE FUNCTION update_submission_stats() RETURNS trigger AS '
+BEGIN
+ UPDATE submission SET stats_prev_id = stats_curr_id, stats_curr_id = new.id WHERE id =
new.submission_id;
+ RETURN new;
+END
+' LANGUAGE plpgsql;
+
+CREATE TRIGGER update_submission_stats AFTER INSERT ON submission_stats
+ FOR EACH ROW EXECUTE PROCEDURE update_submission_stats();
+
+CREATE INDEX submission_stats_update_time ON submission_stats (qmf_update_time);
+
+
CREATE OR REPLACE FUNCTION update_acl_stats() RETURNS trigger AS '
BEGIN
UPDATE acl SET stats_prev_id = stats_curr_id, stats_curr_id = new.id WHERE id =
new.acl_id;