kboss/b/hpc/hpc_sync_user.dspy
2025-07-16 14:27:17 +08:00

78 lines
3.6 KiB
Plaintext

async def hpc_sync_user(ns={}):
if ns.get('loggers'):
loggers = ns['loggers']
else:
loggers = await loggerconfig(logname='hpc_jncs.log', logger="hpc_saleman_sync")
db = DBPools()
async with db.sqlorContext('kboss') as sor:
# 如果已经同步过, 不再执行同步操作
sync_already_li = await sor.R('jncs_syncinfo', {'id': ns.get('syncinfoid'), 'del_flg': '0'})
if sync_already_li and sync_already_li[0]['sync_date']:
if sync_already_li[0]['sync_status'] == '1':
sync_already = {
'status': False,
'id': ns.get('syncinfoid'),
'msg': '这个账单已经同步过'
}
loggers.info(str(sync_already))
return sync_already
url = 'https://hpc.kaiyuancloud.cn/rms/api/biz/user/addCTimeInfo'
data = {
"loginId": ns.get('orgid'),
"loginName": ns.get('orgname'),
"clusterCode": ns.get('clustercode'),
"ldapUid": ns.get('ldapuid'),
"queueCode": ns.get('queuecode'),
"ctime": ns.get('quantity')
}
# get cookie
cookie_url = "https://hpc.kaiyuancloud.cn/rms/api/sign"
cipher = "WIfHaMnen2WaRw4Agwenoe6TwDD3LxBbLEgMjVKDHADPE7xDJicjSG3yAfK4iNes1vUmVcoTxV2/+gMfla8ZDg=="
# response_cookie = requests.post(url=cookie_url, data={"cipher": cipher})
async with aiohttp_client.request(
method='POST',
url=cookie_url,
data={"cipher": cipher}) as res_cipher:
res_cipher_cookie = res_cipher.headers.get("Set-Cookie")
# res = requests.post(url=url, headers=headerss, data=data)
async with aiohttp_client.request(
method='POST',
url=url,
headers={"Cookie": res_cipher_cookie},
data=data) as res:
res_json = await res.json()
if res.status == 200:
if res_json.get('code') == 200:
# update orgid status
syncinfo_update = {
'id': ns.get('syncinfoid'),
'queuecode': ns.get('queuecode'),
'clustercode': ns.get('clustercode'),
'sync_date': time.strftime('%Y-%m-%d'),
'sync_status': '1'
}
usermap_udpate_sql = """UPDATE jncs_usermapping SET sync_status = '1' WHERE ldapuid = '%s' and
clustercode = '%s' and queuecode = '%s' and orgid = '%s';""" % (ns.get('ldapuid'),
ns.get('clustercode'), ns.get('queuecode'), ns.get('orgid'))
await sor.U('jncs_syncinfo', syncinfo_update)
await sor.sqlExe(usermap_udpate_sql, {})
return_res = {
'status': True,
'msg': '超算账号: %s, 核时: %s, 同步成功' % (data.get('loginName'), data.get('ctime')),
'sync_time': time.strftime('%Y-%m-%d %H:%M:%S'),
'data': res_json
}
loggers.info(str(return_res))
return return_res
else:
return_res = {
'status': False,
'msg': 'jncs account: %s, ctime: %s, 同步失败' % (data.get('loginName'), data.get('ctime')),
'data': res_json,
'sync_time': time.strftime('%Y-%m-%d %H:%M:%S')
}
loggers.info(str(return_res))
return return_res
ret = await hpc_sync_user(params_kw)
return ret