raisezoe_api.exceptions.ZoeException('The Zoe master is unavailable, execution will be submitted automatically when the master is back up ({}).'.format(message))
"""Abstraction for the user table in the database."""
def__init__(self,sql_manager):
super().__init__(sql_manager,"user")
defcreate(self):
"""Create the user table."""
self.cursor.execute('''CREATE TABLE "user" (
id SERIAL PRIMARY KEY,
username TEXT NOT NULL,
fs_uid INT NOT NULL,
email TEXT,
priority SMALLINT NOT NULL DEFAULT 0,
enabled BOOLEAN NOT NULL DEFAULT TRUE,
auth_source TEXT NOT NULL,
role_id INT REFERENCES role,
quota_id INT REFERENCES quota
)''')
self.cursor.execute('CREATE UNIQUE INDEX users_username_uindex ON "user" (username)')
defselect(self,only_one=False,**kwargs):
"""
Return a list of users.
:param only_one: only one result is expected
:type only_one: bool
:param kwargs: filter services based on their fields/columns
:return: one or more ports
"""
q_base='SELECT * FROM "user"'
iflen(kwargs)>0:
q=q_base+" WHERE "
filter_list=[]
args_list=[]
forkey,valueinkwargs.items():
filter_list.append('{} = %s'.format(key))
args_list.append(value)
q+=' AND '.join(filter_list)
query=self.cursor.mogrify(q,args_list)
else:
query=self.cursor.mogrify(q_base)
self.cursor.execute(query)
ifonly_one:
row=self.cursor.fetchone()
ifrowisNone:
returnNone
returnUser(row,self)
else:
return[User(x,self)forxinself.cursor]
defupdate(self,port_id,**kwargs):
"""Update the state of an user port."""
arg_list=[]
value_list=[]
forkey,valueinkwargs.items():
arg_list.append('{} = %s'.format(key))
value_list.append(value)
set_q=", ".join(arg_list)
value_list.append(port_id)
q_base='UPDATE "user" SET '+set_q+' WHERE id=%s'
query=self.cursor.mogrify(q_base,value_list)
self.cursor.execute(query)
self.sql_manager.commit()
definsert(self,username,fs_uid,role,auth_source):
"""Adds a new user to the state."""
query=self.cursor.mogrify('INSERT INTO "user" (id, username, fs_uid, email, priority, enabled, auth_source, role_id, quota_id) VALUES (DEFAULT, %s, %s, NULL, DEFAULT, DEFAULT, %s, (SELECT id FROM role WHERE name=%s), (SELECT id FROM quota WHERE name=\'default\')) RETURNING id',(username,fs_uid,auth_source,role))