Author: justi9
Date: 2008-09-09 17:44:48 -0400 (Tue, 09 Sep 2008)
New Revision: 2436
Modified:
mgmt/trunk/cumin/bin/cumin-admin
mgmt/trunk/cumin/bin/cumin-load-demo-data
mgmt/trunk/cumin/python/cumin/__init__.py
mgmt/trunk/cumin/python/cumin/page.py
mgmt/trunk/mint/python/mint/__init__.py
mgmt/trunk/mint/python/mint/schema.py
mgmt/trunk/mint/sql/schema.sql
Log:
Add roles to the schema; rename ConsoleUser to Subject; modify MintDatabase createSchema
to load standard roles
Modified: mgmt/trunk/cumin/bin/cumin-admin
===================================================================
--- mgmt/trunk/cumin/bin/cumin-admin 2008-09-09 20:30:51 UTC (rev 2435)
+++ mgmt/trunk/cumin/bin/cumin-admin 2008-09-09 21:44:48 UTC (rev 2436)
@@ -6,7 +6,7 @@
from getpass import getpass
from random import sample
from crypt import crypt
-from mint import MintDatabase, ConsoleUser
+from mint import MintDatabase, Subject, Role
from psycopg2 import IntegrityError
from cumin import CuminConfig
@@ -97,7 +97,7 @@
name = args[1]
- if ConsoleUser.selectBy(name=name).count():
+ if Subject.selectBy(name=name).count():
print "Error: a user called '%s' already exists" % name
sys.exit(1)
@@ -116,7 +116,15 @@
crypted = crypt(password, "".join(sample(chs, 2)))
try:
- ConsoleUser(name=name, password=crypted)
+ subject = Subject(name=name, password=crypted)
+
+ for role in Role.selectBy(name="user"):
+ subject.addRole(role)
+ break
+
+ assert role
+
+ subject.syncUpdate()
except IntegrityError:
print "Error: a user called '%s' already exists" % name
sys.exit(1)
@@ -129,11 +137,11 @@
sys.exit(1)
name = args[1]
- accounts = ConsoleUser.selectBy(name=name)
+ subjects = Subject.selectBy(name=name)
- if accounts.count():
- for account in accounts:
- account.destroySelf()
+ if subjects.count():
+ for subject in subjects:
+ subject.destroySelf()
break
else:
print "Error: no such user '%s'" % args[1]
@@ -144,7 +152,7 @@
print "Error: command remove-user requires --force yes"
sys.exit(1)
elif command == "list-users":
- accounts = ConsoleUser.select(orderBy='name')
+ accounts = Subject.select(orderBy='name')
print " id name"
print "---- " + ("-" * 20)
Modified: mgmt/trunk/cumin/bin/cumin-load-demo-data
===================================================================
--- mgmt/trunk/cumin/bin/cumin-load-demo-data 2008-09-09 20:30:51 UTC (rev 2435)
+++ mgmt/trunk/cumin/bin/cumin-load-demo-data 2008-09-09 21:44:48 UTC (rev 2436)
@@ -6,7 +6,7 @@
from getpass import getpass
from random import sample
from crypt import crypt
-from mint import MintDatabase, ConsoleUser
+from mint import MintDatabase
from psycopg2 import IntegrityError
from cumin import *
Modified: mgmt/trunk/cumin/python/cumin/__init__.py
===================================================================
--- mgmt/trunk/cumin/python/cumin/__init__.py 2008-09-09 20:30:51 UTC (rev 2435)
+++ mgmt/trunk/cumin/python/cumin/__init__.py 2008-09-09 21:44:48 UTC (rev 2436)
@@ -114,7 +114,7 @@
if name:
try:
- user = ConsoleUser.selectBy(name=name)[0]
+ user = Subject.selectBy(name=name)[0]
except IndexError:
return False
Modified: mgmt/trunk/cumin/python/cumin/page.py
===================================================================
--- mgmt/trunk/cumin/python/cumin/page.py 2008-09-09 20:30:51 UTC (rev 2435)
+++ mgmt/trunk/cumin/python/cumin/page.py 2008-09-09 21:44:48 UTC (rev 2436)
@@ -181,7 +181,7 @@
name = session.credentials.get("name")
try:
- user = ConsoleUser.selectBy(name=name)[0]
+ user = Subject.selectBy(name=name)[0]
except IndexError:
user = None
Modified: mgmt/trunk/mint/python/mint/__init__.py
===================================================================
--- mgmt/trunk/mint/python/mint/__init__.py 2008-09-09 20:30:51 UTC (rev 2435)
+++ mgmt/trunk/mint/python/mint/__init__.py 2008-09-09 21:44:48 UTC (rev 2436)
@@ -116,15 +116,35 @@
name = StringCol(length=1000, default=None)
-class ConsoleUser(SQLObject):
+class Subject(SQLObject):
class sqlmeta:
lazyUpdate = True
name = StringCol(length=1000, default=None, unique=True, notNone=True)
password = StringCol(length=1000, default=None)
lastChallenged = TimestampCol(default=None)
+ lastLoggedIn = TimestampCol(default=None)
lastLoggedOut = TimestampCol(default=None)
+ roles = SQLRelatedJoin("Role",
intermediateTable="subject_role_mapping",
+ createRelatedTable=False)
+class Role(SQLObject):
+ class sqlmeta:
+ lazyUpdate = True
+
+ name = StringCol(length=1000, default=None, unique=True, notNone=True)
+ subjects = SQLRelatedJoin("Subject",
+ intermediateTable="subject_role_mapping",
+ createRelatedTable=False)
+
+class SubjectRoleMapping(SQLObject):
+ class sqlmeta:
+ lazyUpdate = True
+
+ subject = ForeignKey("Subject", notNull=True, cascade=True)
+ role = ForeignKey("Role", notNull=True, cascade=True)
+ unique = index.DatabaseIndex(subject, role, unique=True)
+
class ObjectNotFound(Exception):
pass
@@ -421,9 +441,18 @@
print "Executed %i statements from file '%s'" % (count, path)
- cursor.execute("insert into mint_info (version) values ('0.1')")
+ conn.commit()
- conn.commit()
+ info = MintInfo(version="0.1")
+ info.sync()
+
+ # Standard roles
+
+ user = Role(name="user")
+ user.sync()
+
+ admin = Role(name="admin")
+ admin.sync()
finally:
conn.close()
Modified: mgmt/trunk/mint/python/mint/schema.py
===================================================================
--- mgmt/trunk/mint/python/mint/schema.py 2008-09-09 20:30:51 UTC (rev 2435)
+++ mgmt/trunk/mint/python/mint/schema.py 2008-09-09 21:44:48 UTC (rev 2436)
@@ -552,6 +552,13 @@
location = StringCol(length=1000, default=None)
defaultInitialFileCount = SmallIntCol(default=None)
defaultDataFileSize = IntCol(default=None)
+ tplIsInitialized = BoolCol(default=None)
+ tplDirectory = StringCol(length=1000, default=None)
+ tplWritePageSize = IntCol(default=None)
+ tplWritePages = IntCol(default=None)
+ tplInitialFileCount = SmallIntCol(default=None)
+ tplDataFileSize = IntCol(default=None)
+ tplCurrentFileCount = IntCol(default=None)
class StoreStats(SQLObject):
@@ -561,6 +568,15 @@
recTime = TimestampCol(default=None)
store = ForeignKey('Store', cascade='null', default=None)
classInfos = dict() # brokerId => classInfo
+ tplTransactionDepth = IntCol(default=None)
+ tplTransactionDepthLow = IntCol(default=None)
+ tplTransactionDepthHigh = IntCol(default=None)
+ tplTxnPrepares = BigIntCol(default=None)
+ tplTxnCommits = BigIntCol(default=None)
+ tplTxnAborts = BigIntCol(default=None)
+ tplOutstandingAIOs = IntCol(default=None)
+ tplOutstandingAIOsLow = IntCol(default=None)
+ tplOutstandingAIOsHigh = IntCol(default=None)
@@ -578,14 +594,17 @@
statsCurr = ForeignKey('JournalStats', cascade='null', default=None)
statsPrev = ForeignKey('JournalStats', cascade='null', default=None)
classInfos = dict() # brokerId => classInfo
+ queue = ForeignKey('Queue', cascade='null', default=None)
name = StringCol(length=1000, default=None)
- queue = ForeignKey('Queue', cascade='null', default=None)
directory = StringCol(length=1000, default=None)
baseFileName = StringCol(length=1000, default=None)
writePageSize = IntCol(default=None)
writePages = IntCol(default=None)
readPageSize = IntCol(default=None)
readPages = IntCol(default=None)
+ initialFileCount = SmallIntCol(default=None)
+ dataFileSize = IntCol(default=None)
+ currentFileCount = IntCol(default=None)
def expand(self, model, callback, by):
@@ -605,14 +624,15 @@
recTime = TimestampCol(default=None)
journal = ForeignKey('Journal', cascade='null', default=None)
classInfos = dict() # brokerId => classInfo
- initialFileCount = SmallIntCol(default=None)
- dataFileSize = IntCol(default=None)
- currentFileCount = IntCol(default=None)
recordDepth = IntCol(default=None)
recordDepthLow = IntCol(default=None)
recordDepthHigh = IntCol(default=None)
- recordEnqueues = BigIntCol(default=None)
- recordDequeues = BigIntCol(default=None)
+ enqueues = BigIntCol(default=None)
+ dequeues = BigIntCol(default=None)
+ txnEnqueues = BigIntCol(default=None)
+ txnDequeues = BigIntCol(default=None)
+ txnCommits = BigIntCol(default=None)
+ txnAborts = BigIntCol(default=None)
outstandingAIOs = IntCol(default=None)
outstandingAIOsLow = IntCol(default=None)
outstandingAIOsHigh = IntCol(default=None)
@@ -764,7 +784,6 @@
statsCurr = ForeignKey('JobStats', cascade='null', default=None)
statsPrev = ForeignKey('JobStats', cascade='null', default=None)
classInfos = dict() # brokerId => classInfo
- scheduler = ForeignKey('Scheduler', cascade='null', default=None)
AccountingGroup = StringCol(length=1000, default=None)
Args = StringCol(length=4000, default=None)
ClusterId = IntCol(default=None)
@@ -1008,9 +1027,6 @@
classToSchemaNameMap['Job'] = 'Job'
schemaNameToClassMap['Job'] = Job
-Scheduler.sqlmeta.addJoin(SQLMultipleJoin('Job', joinMethodName='jobs'))
-
-
Job.sqlmeta.addJoin(SQLMultipleJoin('JobStats', joinMethodName='stats'))
classToSchemaNameMap['Scheduler'] = 'Scheduler'
Modified: mgmt/trunk/mint/sql/schema.sql
===================================================================
--- mgmt/trunk/mint/sql/schema.sql 2008-09-09 20:30:51 UTC (rev 2435)
+++ mgmt/trunk/mint/sql/schema.sql 2008-09-09 21:44:48 UTC (rev 2436)
@@ -38,24 +38,37 @@
type VARCHAR(1)
);
-CREATE TABLE console_user (
+CREATE TABLE mint_info (
id SERIAL PRIMARY KEY,
+ version VARCHAR(1000) NOT NULL
+);
+
+CREATE TABLE pool (
+ id SERIAL PRIMARY KEY,
+ name VARCHAR(1000)
+);
+
+CREATE TABLE role (
+ id SERIAL PRIMARY KEY,
+ name VARCHAR(1000) NOT NULL UNIQUE
+);
+
+CREATE TABLE subject (
+ id SERIAL PRIMARY KEY,
name VARCHAR(1000) NOT NULL UNIQUE,
password VARCHAR(1000),
last_challenged TIMESTAMP,
+ last_logged_in TIMESTAMP,
last_logged_out TIMESTAMP
);
-CREATE TABLE mint_info (
+CREATE TABLE subject_role_mapping (
id SERIAL PRIMARY KEY,
- version VARCHAR(1000) NOT NULL
+ subject_id INT NOT NULL,
+ role_id INT NOT NULL
);
+CREATE UNIQUE INDEX subject_role_mapping_unique ON subject_role_mapping (subject_id,
role_id);
-CREATE TABLE pool (
- id SERIAL PRIMARY KEY,
- name VARCHAR(1000)
-);
-
CREATE TABLE agent (
id SERIAL PRIMARY KEY,
rec_time TIMESTAMP,
@@ -230,7 +243,6 @@
managed_broker VARCHAR(1000),
stats_curr_id INT,
stats_prev_id INT,
- scheduler_id INT,
accounting_group VARCHAR(1000),
args VARCHAR(4000),
cluster_id INT,
@@ -270,28 +282,32 @@
managed_broker VARCHAR(1000),
stats_curr_id INT,
stats_prev_id INT,
+ queue_id INT,
name VARCHAR(1000),
- queue_id INT,
directory VARCHAR(1000),
base_file_name VARCHAR(1000),
write_page_size INT,
write_pages INT,
read_page_size INT,
- read_pages INT
+ read_pages INT,
+ initial_file_count SMALLINT,
+ data_file_size INT,
+ current_file_count INT
);
CREATE TABLE journal_stats (
id SERIAL PRIMARY KEY,
rec_time TIMESTAMP,
journal_id INT,
- initial_file_count SMALLINT,
- data_file_size INT,
- current_file_count INT,
record_depth INT,
record_depth_low INT,
record_depth_high INT,
- record_enqueues BIGINT,
- record_dequeues BIGINT,
+ enqueues BIGINT,
+ dequeues BIGINT,
+ txn_enqueues BIGINT,
+ txn_dequeues BIGINT,
+ txn_commits BIGINT,
+ txn_aborts BIGINT,
outstanding_ai_os INT,
outstanding_ai_os_low INT,
outstanding_ai_os_high INT,
@@ -580,13 +596,29 @@
broker_id INT,
location VARCHAR(1000),
default_initial_file_count SMALLINT,
- default_data_file_size INT
+ default_data_file_size INT,
+ tpl_is_initialized BOOL,
+ tpl_directory VARCHAR(1000),
+ tpl_write_page_size INT,
+ tpl_write_pages INT,
+ tpl_initial_file_count SMALLINT,
+ tpl_data_file_size INT,
+ tpl_current_file_count INT
);
CREATE TABLE store_stats (
id SERIAL PRIMARY KEY,
rec_time TIMESTAMP,
- store_id INT
+ store_id INT,
+ tpl_transaction_depth INT,
+ tpl_transaction_depth_low INT,
+ tpl_transaction_depth_high INT,
+ tpl_txn_prepares BIGINT,
+ tpl_txn_commits BIGINT,
+ tpl_txn_aborts BIGINT,
+ tpl_outstanding_ai_os INT,
+ tpl_outstanding_ai_os_low INT,
+ tpl_outstanding_ai_os_high INT
);
CREATE TABLE submitter (
@@ -669,6 +701,10 @@
ALTER TABLE broker_registration ADD CONSTRAINT profile_id_exists FOREIGN KEY (profile_id)
REFERENCES broker_profile (id) ON DELETE SET NULL;
+ALTER TABLE subject_role_mapping ADD CONSTRAINT subject_id_exists FOREIGN KEY
(subject_id) REFERENCES subject (id) ON DELETE CASCADE;
+
+ALTER TABLE subject_role_mapping ADD CONSTRAINT role_id_exists FOREIGN KEY (role_id)
REFERENCES role (id) ON DELETE CASCADE;
+
ALTER TABLE agent ADD CONSTRAINT stats_curr_id_exists FOREIGN KEY (stats_curr_id)
REFERENCES agent_stats (id) ON DELETE SET NULL;
ALTER TABLE agent ADD CONSTRAINT stats_prev_id_exists FOREIGN KEY (stats_prev_id)
REFERENCES agent_stats (id) ON DELETE SET NULL;
@@ -727,8 +763,6 @@
ALTER TABLE job ADD CONSTRAINT stats_prev_id_exists FOREIGN KEY (stats_prev_id)
REFERENCES job_stats (id) ON DELETE SET NULL;
-ALTER TABLE job ADD CONSTRAINT scheduler_id_exists FOREIGN KEY (scheduler_id) REFERENCES
scheduler (id) ON DELETE SET NULL;
-
ALTER TABLE job_stats ADD CONSTRAINT job_id_exists FOREIGN KEY (job_id) REFERENCES job
(id) ON DELETE SET NULL;
ALTER TABLE journal ADD CONSTRAINT stats_curr_id_exists FOREIGN KEY (stats_curr_id)
REFERENCES journal_stats (id) ON DELETE SET NULL;