开源 企业版 高校版 私有云 模力方舟 AI 队友
代码拉取完成,页面将自动刷新
捐赠
捐赠前请先登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
2 Star 0 Fork 1

LiHeavy/Code

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
已有帐号? 立即登录
文件
master
分支 (2)
master
test
master
分支 (2)
master
test
克隆/下载
克隆/下载
提示
下载代码请复制以下命令到终端执行
为确保你提交的代码身份被 Gitee 正确识别,请执行以下命令完成配置
初次使用 SSH 协议进行代码克隆、推送等操作时,需按下述提示完成 SSH 配置
1 生成 RSA 密钥
2 获取 RSA 公钥内容,并配置到 SSH公钥
在 Gitee 上使用 SVN,请访问 使用指南
使用 HTTPS 协议时,命令行会出现如下账号密码验证步骤。基于安全考虑,Gitee 建议 配置并使用私人令牌 替代登录密码进行克隆、推送等操作
Username for 'https://gitee.com': userName
Password for 'https://userName@gitee.com': # 私人令牌
master
分支 (2)
master
test
code
/
python_learn
/
request
/
pkgship.py
code
/
python_learn
/
request
/
pkgship.py
pkgship.py 5.62 KB
一键复制 编辑 原始数据 按行查看 历史
LiHeavy 提交于 2022年04月27日 15:45 +08:00 . update python name
#!/usr/bin/python3
# ******************************************************************************
# Copyright (c) Huawei Technologies Co., Ltd. 2020-2020. All rights reserved.
# licensed under the Mulan PSL v2.
# You can use this software according to the terms and conditions of the Mulan PSL v2.
# You may obtain a copy of Mulan PSL v2 at:
# http://license.coscl.org.cn/MulanPSL2
# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR
# PURPOSE.
# See the Mulan PSL v2 for more details.
# ******************************************************************************/
import argparse
import json
import subprocess
import requests
BASE_URL = "http://127.0.0.1:8090/"
method_dict = {
"get": requests.get,
"post": requests.post,
"put": requests.put,
"delete": requests.delete
}
HEARD = "Content-Type:application/json"
def parse_arg(parse: argparse.ArgumentParser):
parse.add_argument('--repo', default='oe21.03', type=str, action='store', nargs='?', help="repo name")
return parse
def _run_cli(cli):
try:
result = subprocess.run([cli], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True)
return result.stdout.decode('utf-8')
except subprocess.CalledProcessError:
print(f"[ERROR] excute {cli} failed")
return
def check_repo(repo):
query_dbs_cli = "pkgship dbs"
result = _run_cli(query_dbs_cli)
if not result or repo not in result:
print(f"[ERROR] {repo} not provided")
return False
return True
def _request(url, method, **kwargs):
try:
if method not in method_dict:
raise requests.HTTPError(f"no this method {method}")
call_url = method_dict.get(method)
response = call_url(url=url, **kwargs)
return response.text
except requests.HTTPError as e:
print(f'[ERROR] call {url} failed: {str(e)}')
return
def get_all_bin_rpm(repo):
query_url = "packages/bin"
return _get_all_rpm(repo, query_url)
def get_all_src_rpm(repo):
query_url = "packages/src"
return _get_all_rpm(repo, query_url)
def _get_all_rpm(repo, query_url):
rpm_name_list = list()
query_body = {
"database_name": repo,
"page_num": 1,
"page_size": 200,
"query_pkg_name": None
}
result = _request(BASE_URL + query_url, method="get", params=query_body)
try:
if result:
result_content = json.loads(result)
total_page = result_content.get('total_page')
_parse_content(rpm_name_list, result_content)
for page_index in range(2, total_page + 1):
query_body['page_num'] = page_index
result = _request(BASE_URL + query_url, method="get", params=query_body)
result_content = json.loads(result)
_parse_content(rpm_name_list, result_content)
except TypeError:
print(f'[ERROR] get all rpm failed, url is {BASE_URL + query_url} param is {query_body}')
return []
return rpm_name_list
def _parse_content(rpm_name_list, result_content):
if result_content.get('resp'):
for rpm_info in result_content.get('resp'):
rpm_name_list.append(rpm_info.get('pkg_name'))
def _get_depend_info(rpm_name, repo, query_url, depend_type, depend_info_dict):
query_body = {
"packagename": [
rpm_name
],
"depend_type": depend_type,
"parameter": {
"db_priority": [
repo
],
"level": 1
}
}
result = _request(BASE_URL + query_url, method='post', json=query_body)
try:
if result:
print(f"result is {result}")
result_content = json.loads(result)
binary_list = result_content.get('resp')['binary_list']
depend_info_dict[rpm_name] = binary_list
except TypeError:
print(f'[ERROR] get {rpm_name} depend info failed, url is {BASE_URL + query_url} param is {query_body}')
return depend_info_dict
def get_install_depend(rpm_list, repo):
depend_info_dict = dict
query_url = "dependinfo/dependlist"
depend_type = "installdep"
for rpm_name in rpm_list:
_get_depend_info(rpm_name=rpm_name, repo=repo, query_url=query_url, depend_type=depend_type,
depend_info_dict=depend_info_dict)
print(len(depend_info_dict))
print(depend_info_dict["Judy"])
if __name__ == '__main__':
# parser = argparse.ArgumentParser()
# parser = parse_arg(parser)
# args = parser.parse_args()
# repo = args.repo
# if check_repo(repo):
# rpm_name_list = get_all_bin_rpm(repo=repo)
# get_install_depend(rpm_name_list[0:5], repo)
# query_body = {"packagename": ["Judy"],
# "depend_type": "bedep",
# "parameter": {"db_priority": ["openeuler21.03"],
# "search_type": "build",
# "with_subpack": True,
# "packtype": "binary"},
# "node_name": "Judy",
# "node_type": "binary"
# }
#
# result = _request(BASE_URL + "dependinfo/dependgraph", method='post', json=query_body)
# print(result)
query_body = {
"database_name": "fedora32",
"page_num": 5,
"page_size": 200,
"query_pkg_name": None
}
result = _request(BASE_URL + "packages/bin", method="get", params=query_body)
result_content = json.loads(result)
total_page = result_content.get('total_count')
print(total_page)
Loading...
举报
举报成功
我们将于2个工作日内通过站内信反馈结果给你!
请认真填写举报原因,尽可能描述详细。
请选择举报类型
取消
发送
误判申诉

此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。

如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。

取消
提交

简介

good good study ,day day up
暂无标签
WTFPL
使用 WTFPL 开源许可协议
取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
编辑仓库简介
简介内容
主页
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/liheavy/code.git
git@gitee.com:liheavy/code.git
liheavy
code
Code
master
点此查找更多帮助

搜索帮助

评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册

AltStyle によって変換されたページ (->オリジナル) /