49 lines
3.2 KiB
Plaintext
49 lines
3.2 KiB
Plaintext
async def volcengineuser_synchronization(ns):
|
||
"""
|
||
用户同步火山云
|
||
"""
|
||
db = DBPools()
|
||
async with db.sqlorContext('kboss') as sor:
|
||
userdata = await sor.R('users',{'id': ns.get('userid')})
|
||
org = await sor.R('organization',{'id':userdata[0]['orgid']})
|
||
if len(org) < 1:
|
||
return {'status': False, 'msg': '用户信息错误'}
|
||
try:
|
||
res = await volcengine_requestapi(method="GET", action="ListProjects", body=None, version='2021-08-01')
|
||
#Project 1为已有项目 0为未开通项目
|
||
Project = 0
|
||
for i in res['Result']['Projects']:
|
||
if i['ProjectName'] == org[0]['orgname']:
|
||
Project += 1
|
||
# 判断该用户的机构是否已经创建过项目,未开通项目则调用开通项目函数
|
||
if Project == 0:
|
||
await volcengine_requestapi(method="GET", action="CreateProject", body="ProjectName="+ org[0]['contactor_phone']+ "&DisplayName="+ org[0]['orgname'], version='2021-08-01')
|
||
#根据用户名在火山云查询该用户
|
||
volcengine_user = await volcengine_requestapi(method="GET", action="ListUsers", query={"Query": userdata[0]['username']},
|
||
version='2018-01-01')
|
||
# 判断用户是否开通过火山云子账户 Total 0则为没有账号 进行开通子账号,配置控制台密码
|
||
if volcengine_user['Result']['Total'] == 0:
|
||
#开通子账号
|
||
await volcengine_requestapi(method="GET", action="CreateUser",
|
||
query={"UserName": userdata[0]['username'],'DisplayName':userdata[0]['username']},version='2018-01-01')
|
||
|
||
#解析kboss密码
|
||
password = 'Vol' + password_decode(userdata[0]['password'])
|
||
# 配置控制台密码
|
||
await volcengine_requestapi(method="GET", action="CreateLoginProfile", query={"UserName": userdata[0]['username'],'Password':password,'LoginAllowed':'True'},
|
||
version='2018-01-01')
|
||
|
||
ProjectNames = ['CENFullAccess','AutoScalingFullAccess','CLBFullAccess','NATFullAccess','TOSFullAccess','vePFSFullAccess',
|
||
'DMSFullAccess','FileNASFullAccess','ECSFullAccess','EIPFullAccess','VPCFullAccess']
|
||
#数据库 自定义策略:DescribeDBInstance (火山云还在开发,目前先不加,火山云开发完毕后,只需要在上面ProjectNames列表里加入 "DescribeDBInstance" 参数)
|
||
for i in ProjectNames:
|
||
await volcengine_requestapi(method="GET", action="AttachPolicyInProject",
|
||
body="PolicyType=System&PrincipalType=User&PolicyName=" + i + "&PrincipalName=" +userdata[0]['username'] + "&ProjectName.1=" + org[0]['contactor_phone'],
|
||
version='2021-08-01')
|
||
return {'status': True, 'msg': '用户同步成功'}
|
||
except Exception as e:
|
||
raise e
|
||
return {'status': False, 'msg': '用户同步失败'}
|
||
|
||
ret = await volcengineuser_synchronization(params_kw)
|
||
return ret |