Python库与UCS@学校开尔文REST API。
kelvin-rest-api-client的Python项目详细描述
PythonUCS@学校Kelvin REST API客户端
与UCS@school Kelvin REST API交互的Python库。在
- 免费软件:GNU Affero通用公共许可证版本3
- 文档:https://kelvin-rest-api-client.readthedocs.io
特点
- 异步
- 自动处理HTTP(S)会话
- 类型批注
- 97%的测试覆盖率(单元测试+集成测试)
- Python 3.7、3.8、3.9
用法
Session上下文管理器打开和关闭HTTP会话:
>>>importasyncio>>>fromucsschool.kelvin.clientimportSession,User,UserResource>>>>>>asyncdefget_user(username:str)->User:...asyncwithSession(..."USERNAME",..."PASSWORD",..."master.ucs.local",...verify="ucs-root-ca.crt"...)assession:...returnawaitUserResource(session=session).get(name=username)...>>>obj=asyncio.run(get_user("demo_student"))>>>>>>print(obj)User('name'='test_user',dn='uid=test_user,cn=schueler,cn=users,ou=DEMOSCHOOL,dc=example,dc=com')>>>print(obj.firstname,obj.lastname)TestUser
在docsusage部分有更多示例。在
要使HTTPS工作,目标系统(UCS主服务器)的SSL CA必须是公开签名的,安装在客户机系统上,或者作为文件提供(如上面的示例所示)。 如果SSL CA证书不可用verify=False。 显然这是不安全!任何UCS服务器的CA都可以从http://FQDN.OF.UCS/ucs-root-ca.crt下载。在
安装
安装UCS@学校Kelvin REST API客户端通过来自PyPI的pip:
^{pr2}$测试
有一些独立的单元测试,但是大多数测试都是针对一个实际的^{em1}运行的$UCS@学校开尔文REST API。 已经为此准备了一个UCS Docker容器(除了Kelvin API Docker容器)。 Makefile自动下载并启动Docker容器(3.2GB)并运行测试。 也可以将现有的UCS DC主控形状与UCS@学校安装了开尔文API。在
测试预计目标系统上存在两个学校(OUs)(kelvinapi还不支持创建学校)。 学校是DEMOSCHOOL和{tt7}$。 第一个通常已经存在,但是尝试重新创建它是安全的。 要在UCS DC主机上创建运行的学校:
$ /usr/share/ucs-school-import/scripts/create_ou DEMOSCHOOL $ /usr/share/ucs-school-import/scripts/create_ou DEMOSCHOOL2
提供的UCS Docker容器已包含这两个OU。 可以使用Makefile启动它们:
$ make start-docker-containers Downloading Docker image '..-ucsschool-udm-rest-api-only:stable-4.4-4'... Downloading Docker image '../ucsschool-kelvin-rest-api:1.1.0'... Starting UCS docker container... Waiting for UCS docker container to start... Waiting for IP address of UCS container... Waiting for UDM REST API........... Creating Kelvin REST API container... Configuring Kelvin REST API container... Rebuilding the OpenAPI client library in the Kelvin API Container... Starting Kelvin REST API server... Waiting for Kelvin docker container to start... Waiting for IP address of Kelvin container... Waiting for Kelvin API... Fixing log file permissions... Setting up reverse proxy... ==> UDM REST API log file: /tmp/udm-rest-api-log/directory-manager-rest.log ==> UDM REST API: http://172.17.0.2/univention/udm/ ==> Kelvin API configs: /tmp/kelvin-api/configs/ ==> Kelvin API hooks: /tmp/kelvin-api/kelvin-hooks/ ==> Kelvin API log file: /tmp/kelvin-api/log/http.log ==> Kelvin API: http://172.17.0.3:8911/ucsschool/kelvin/v1/docs ==> Kelvin API: https://172.17.0.2/ucsschool/kelvin/v1/docs
Docker容器可以通过运行以下命令停止和移除:
$ make stop-and-remove-docker-containers
Docker镜像不会被移除,只会移除正在运行的容器。在
使用当前Python解释器运行测试:
$ make test
使用tox可以使用所有受支持的Python版本执行测试:
$ make test-all
要将现有UCS服务器用于测试,请将文件tests/test_server_example.yaml复制到tests/test_server.yaml,并在开始测试之前调整设置:
$ cp tests/test_server_example.yaml tests/test_server.yaml $$EDITOR tests/test_server.yaml # check settings with a single test: $ python -m pytest tests/test_user.py::test_get #if OK, run all tests: $ make test
日志
标准日志记录用于跟踪库活动。 要捕获此项目的日志消息,请订阅名为ucsschool.kelvin.client的记录器。 注意:密码和会话令牌将记录在日志级别DEBUG!在
UCS@学校UCS服务器上的kelvinrestapi记录到文件/var/log/univention/ucsschool-kelvin-rest-api/http.log。 UCS服务器上的udmrestapi登录到文件/var/log/univention/directory-manager-rest.log。在
回购权限
- Github:@dansan和@JuergenBS
- 吉特实验室:@JuergenBS
- 皮皮:@dansan和@SamuelYaron
- RTD:@dansan和@SamuelYaron
学分
历史
0.2.2(2020-11-09)
- 用户支持
0.2.1(2020-08-07)
- 修正JWT令牌有效性计算:时间戳使用UTC
- 文档修复
- 依赖项更新
- 测试也在python3.9-dev上运行
0.2.0(2020-04-17)
- 将毒物转移到测试要求
- 使用默认参数修复用户对象创建
- 将“as-dict”更改为方法而不是属性
- 修复片状测试
- 提高测试覆盖率
- 把更多的环境参数传给毒物
- 用rep修复AttributeErrorr(角色)
- 添加完整的使用文档
0.1.0(2020-04-16)
- 第一次发布。在
- 项目
标签: