From c1454e14d70d501e1b786d076be820a087cae71c Mon Sep 17 00:00:00 2001 From: zhuyj17 Date: Sun, 31 Jul 2016 15:39:04 +0800 Subject: [PATCH] Add beans to User table --- src/httprest.py | 2 +- src/model.py | 7 ++++--- src/monitor.py | 11 ++++++++++- tools/alterUserTable.py | 17 +++++++++++++++++ tools/test.py | 12 ++++++++++++ 5 files changed, 44 insertions(+), 5 deletions(-) create mode 100644 tools/alterUserTable.py create mode 100644 tools/test.py diff --git a/src/httprest.py b/src/httprest.py index 4047081..2d030ff 100755 --- a/src/httprest.py +++ b/src/httprest.py @@ -880,7 +880,7 @@ if __name__ == '__main__': if etcdclient.isdir("_lock")[0]: etcdclient.deldir("_lock") - G_usermgr = userManager.userManager('root','unias1616') + G_usermgr = userManager.userManager('root') if mode == "new": G_usermgr.initUsage() G_notificationmgr = notificationmgr.NotificationMgr() diff --git a/src/model.py b/src/model.py index edf7d4f..89a72df 100755 --- a/src/model.py +++ b/src/model.py @@ -72,7 +72,7 @@ class User(db.Model): register_date = db.Column(db.String(10)) user_group = db.Column(db.String(50)) auth_method = db.Column(db.String(10)) - + beans = db.Column(db.Integer) def __init__(self, username, password, avatar="default.png", nickname = "", description = "", status = "init", e_mail = "" , student_number = "", department = "", truename = "", tel="", date = None, usergroup = "primary" @@ -92,6 +92,7 @@ class User(db.Model): self.department = department self.truename = truename self.tel = tel + self.beans = 1000 if (date != None): self.register_date = date else: @@ -100,7 +101,8 @@ class User(db.Model): self.auth_method = auth_method def __repr__(self): - return '' % self.username + #return '' % (self.username) + return '' % (self.username,self.beans) #token will expire after 3600s def generate_auth_token(self, expiration = 3600): @@ -120,7 +122,6 @@ class User(db.Model): user = User.query.get(data['id']) return user - class UserGroup(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(50)) diff --git a/src/monitor.py b/src/monitor.py index c6c99ef..3891084 100755 --- a/src/monitor.py +++ b/src/monitor.py @@ -3,7 +3,7 @@ import subprocess,re,os,etcdlib,psutil,math,sys import time,threading,json,traceback,platform -from model import db,VNode,History +from model import db,VNode,History,User from log import logger monitor_hosts = {} @@ -111,6 +111,15 @@ class Container_Collector(threading.Thread): db.session.commit() logger.warning(err) workercinfo[vnode_name]['basic_info']['billing'] = nowbillingval + owner_name = get_owner(vnode_name) + owner = User.query.filter_by(username=owner_name).first() + if owner is None: + logger.warning("Error!!! Billing User %s doesn't exist!" % (owner_name)) + else: + logger.info("Billing User:"+str(owner)) + owner.beans -= math.ceil(billingval) + db.session.commit() + logger.info("Billing User:"+str(owner)) def collect_containerinfo(self,container_name): global workerinfo diff --git a/tools/alterUserTable.py b/tools/alterUserTable.py new file mode 100644 index 0000000..de2ffc6 --- /dev/null +++ b/tools/alterUserTable.py @@ -0,0 +1,17 @@ +import sys +sys.path.append("../src/") +from model import db,User + +users = User.query.all() +db.drop_all(bind='__all__') +print(users) +setattr(User,'beans',db.Column(db.Integer)) +db.create_all(bind='__all__') +for user in users: + newuser = User(user.username,user.password,user.avatar,user.nickname,user.description,user.status, + user.e_mail,user.student_number,user.department,user.truename,user.tel,user.register_date, + user.user_group,user.auth_method) + newuser.beans = 1000 + db.session.add(newuser) + db.session.commit() + diff --git a/tools/test.py b/tools/test.py new file mode 100644 index 0000000..e4783c6 --- /dev/null +++ b/tools/test.py @@ -0,0 +1,12 @@ +from sqlalchemy import create_engine +from sqlalchemy.orm import sessionmaker + +DB_CONNECT_STRING = "sqlite:////opt/docklet/global/sys/UserTable.db" +engine = create_engine(DB_CONNECT_STRING,echo=True) +DB_Session = sessionmaker(bind=engine) +session = DB_Session() +print(session.execute('Select * from User').fetchall()) +#print(session.execute('Alter table User add beans integer')) +#print(session.execute('update User set beans=1000')) +print(session.execute('Select * from User').fetchall()) +