# -*- coding: utf-8 -*- # @Time: 2023/5/15 13:44 import os import sys sys.path.append('D:/Code/backend_code/test_') import time import json import asyncio import datetime import requests from uuid_ import uuid from sqlor.dbpools import DBPools from urllib.parse import urlencode from appPublic.jsonConfig import getConfig from accounting.businessdate import get_business_date, new_business_date base_url = 'https://hpc.kaiyuancloud.cn/rms/api' def imitate_cookie(): url = base_url + "/sign" print(url) cipher = "WIfHaMnen2WaRw4Agwenoe6TwDD3LxBbLEgMjVKDHADPE7xDJicjSG3yAfK4iNes1vUmVcoTxV2/+gMfla8ZDg==" response = requests.post(url=url, data={"cipher": cipher}) print("rms/api", response.text) cookie = response.headers.get("Set-Cookie") print("Cookie", cookie) return cookie def get_cluster_list(): """ 集群查询 :return: """ url = base_url + "/biz/cluster/list?" data = { 'clusterCode': 'shanhe', 'clusterName': '山河' } url_form = url + urlencode(data) print(url_form) response = requests.get(url, headers=headers) print("cluster/list", response.text) def get_queue_list(): """ 查询队列列表 :return: """ url = base_url + '/biz/queue/list' print(url) data = { 'clusterCode': 'shanhe' } url_data = url + '?' + urlencode(data) response = requests.get(url=url_data, headers=headers) print(response.text) def get_queue_info(): """ 查询队列详情 :return: """ url = base_url + '/biz/queue/getInfo' data = { 'clusterCode': 'shanhe', 'queueName': 'q_ys_test2', 'queueCode': 'q_ys_test2' } url_data = url + '?' + urlencode(data) response = requests.get(url=url_data, headers=headers) print(response.text) def get_ldap_list(): """ 查询ldap列表 :return: """ url = base_url + '/biz/ldap/list' print(url) data = { 'clusterCode': 'shanhe' } url_data = url + '?' + urlencode(data) print(url_data) response = requests.get(url=url_data, headers=headers) print(response.text) def get_ldap_info(): """ 查询ldap详情 :return: """ # url = base_url + '/biz/ldap/userInfo' url = base_url + '/biz/ldap/list?clusterCode=shanhe&clusterName=山河' print(url) # data = { # "clusterCode":"shanhe", # "clusterName":"山河", # "ldapUid":"q_ys_test1", # } response = requests.get(url=url, headers=headers) print(response.text) def get_ldap_storageInfo(): """ 查询账号下存储 :return: """ url = base_url + '/biz/ldap/storageInfo' data = { 'clusterCode': 'shanhe', 'ldapUid Ldap': 'bz1' } url_data = url + '?' + urlencode(data) response = requests.get(url=url_data, headers=headers) print(response.text) async def SyncUsers(ns={}): url = base_url + '/biz/user/addCTimeInfo' data = { "loginId":"APPbNUfV5Im_KlZNnBRjd", # 用户 id(必填) "loginName":"珠穆朗玛", # 用户名称(必填) "clusterCode":"shanhe", # 集群编码(必填) "ldapUid":"yeesuan11225", # ldap 账号名称(必填) "queueCode":"q_ys_test1", # 队列编码(必填) "ctime":1, # 核时数量(必填 ctime>0) double } res = requests.post(url=url, headers=headers, data=data) print(res.status_code) print(res.content.decode()) async def GetUserBill(ns={}): """ -> 获取bill -> 同步到jncs_bill table -> 通过(loginId(即orgid)=customerid,providerrid, productname)找到resourceid -> 同步到resource_using table -> 更新customer_goods table :param ns: :return: """ orgname = '济南超算' url = base_url + '/biz/user/cTimeInfoList' data = { 'loginId': '86ee065f-2a3a-416c-b0df-5c759988ebbb', 'loginName': 'bakerwm' } url_data = url + '?' + urlencode(data) res = requests.get(url=url_data, headers=headers) if res.status_code != 200: return { 'status': False, 'msg': 'url get status code is not 200, %s' % url_data } res_dict = json.loads(res.text) db = DBPools() async with db.sqlorContext('kboss') as sor: try: current_date = await get_business_date(sor) ns_jncs_bill = { 'id': uuid(), 'bill_date': current_date, 'bill_timestamp': time.strftime('%Y-%m-%d %H:%M:%S'), 'loginid': res_dict.get('loginId') or '', 'loginname': res_dict.get('loginName') or '', 'clustercode': res_dict.get('clusterCode') or '', 'clustername': res_dict.get('clusterName') or '', 'queuecode': res_dict.get('queueCode') or '', 'queuename': res_dict.get('queueName') or '', 'totalctime': res_dict.get('totalCtime') or '', 'usedctime': res_dict.get('usedCtime') or '', 'remainctime': res_dict.get('remainCtime') or '', 'expiredctime': res_dict.get('expiredCtime') or '' } jncs_li = await sor.R('organization', {'orgname': orgname, 'del_flg': '0'}) if jncs_li: jscs_id = jncs_li[0].get('id') else: return { 'status': False, 'msg': 'can not find jncs id in organization' } ns_goods = { 'providerrid': jscs_id, 'customerid': ns_jncs_bill.get('loginid'), 'productname': ns_jncs_bill.get('queuename'), 'del_flg': '0' } goods_li = await sor.R('customer_goods', ns_goods) resourceid = goods_li[0].get('id') ns_resouce_using = { 'id': uuid(), 'resourceid': resourceid, 'use_date': current_date, 'total_quantity': ns_jncs_bill.get('totalctime') or '', 'used_quantity': ns_jncs_bill.get('usedctime') or '', 'rest_quantity': ns_jncs_bill.get('remainctime') or '', } ns_customer_goods = { 'id': resourceid, 'total_quantity': ns_jncs_bill.get('totalctime') or '', 'used_quantity': ns_jncs_bill.get('usedctime') or '', 'rest_quantity': ns_jncs_bill.get('remainctime') or '', } await sor.C('jncs_bill', ns_jncs_bill) await sor.C('resource_using', ns_resouce_using) await sor.U('customer_goods', ns_customer_goods) return { 'status': True, 'msg': 'sync jncs bill success' } except Exception as e: raise e return { 'status': False, 'msg': 'jncs get bill failed' } ret = await SyncUsers(params_kw) return ret