使用开源 Python API 封装器与你的集群对话


使用开源 Python API 封装器与你的集群对话

文章插图
结合开放的 API 和 Python/ target=_blank class=infotextkey>Python 编程语言的力量 。
围绕 API 创建封装器的开源项目正变得越来越流行 。这些项目使开发人员更容易与 API 交互并在他们的应用中使用它们 。openshift-python-wrApper 项目是 openshift-restclient-python 的封装器 。最初是一个帮助我们的团队使用 OpenShift API 的内部包,后来变成了一个开源项目(Apache 许可证 2.0) 。
本文讨论了什么是 API 封装器,为什么它很有用,以及封装器的一些例子 。
为什么要使用 API 封装器?API 封装器是位于应用和 API 之间的一层代码 。它通过将一些涉及发出请求和解析响应的复杂性抽象出来,以简化 API 访问过程 。封装器还可以提供 API 本身提供的功能之外的附加功能,例如缓存或错误处理 。
使用 API 封装器使代码更加模块化并且更易于维护 。无需为每个 API 编写自定义代码,你可以使用封装器来提供与 API 交互的一致接口 。它可以节省时间,避免代码重复,并减少出错的机会 。
使用 API 封装器的另一个好处是它可以保护你的代码免受 API 变化的影响 。如果 API 更改了它的接口,你可以更新封装器代码而无需修改你的应用程序代码 。随着时间的推移,这可以减少维护应用程序所需的工作 。
安装该应用位于 PyPi 上,因此使用 pip 命令 安装 openshift-python-wrapper
$ python3 -m pip install openshift-python-wrapperPython 封装器OpenShift REST API 提供对 OpenShift 平台的许多功能的编程访问 。封装器提供了一个简单直观的界面,用于使用 openshift-restclient-python 库与 API 进行交互 。它标准化了如何使用集群资源,并提供了统一的资源 CRUD(创建、读取、更新和删除)流程 。它还提供额外的功能,例如需要由用户实现的特定于资源的功能 。随着时间的推移,封装器使代码更易于阅读和维护 。
简化用法的一个示例是与容器交互 。在容器内运行命令需要使用 Kube.NETes 流、处理错误等 。封装器处理这一切并提供 简单直观的功能 。
>>> from ocp_resources.pod import Pod>>> from ocp_utilities.infra import get_client>>> client = get_client()ocp_utilities.infra INFO Trying to getclient via new_client_from_config>>> pod = Pod(client=client, name="Nginx-deployment-7fb96c846b-b48mv", namespace="default")>>> pod.execute("ls")ocp_resources Pod INFO Execute ls onnginx-deployment-7fb96c846b-b48mv (ip-10-0-155-108.ec2.internal)'binnbootndevnetcnhomenlibnlib64nmedianmntnoptnprocnrootnrunnsbinnsrvnsysntmpnusrnvarn'【使用开源 Python API 封装器与你的集群对话】开发人员或测试人员可以使用这个封装器,我们的团队在编写代码的同时牢记测试 。使用 Python 的上下文管理器可以提供开箱即用的资源创建和删除,并且可以使用继承来扩展特定场景的功能 。Pytest fixtures 可以使用代码进行设置和拆卸,不留任何遗留物 。甚至可以保存资源用于调试 。可以轻松收集资源清单和日志 。
这是上下文管理器的示例:
@pytest.fixture(scope="module")def namespace():admin_client = get_client()with Namespace(client=admin_client, name="test-ns",) as ns:ns.wait_for_status(status=Namespace.Status.ACTIVE, timeout=240)yield nsdef test_ns(namespace):print(namespace.name)生成器遍历资源,如下所示:
>>> from ocp_resources.node import Node>>> from ocp_utilities.infra import get_client>>> admin_client = get_client()# This returns a generator>>> for node in Node.get(dyn_client=admin_client):print(node.name)ip-10-0-128-213.ec2.internal开源社区的开源代码套用一句流行的说法,“如果你热爱你的代码,就应该让它自由 。” openshift-python-wrapper 项目最初是作为 OpenShift 虚拟化 的实用模块 。随着越来越多的项目从代码中受益,我们决定将这些程序提取到一个单独的仓库中并将其开源 。套用另一句俗语,“如果代码不回到你这里,那就意味着它从未属于你 。” 一旦这种情况发生,它就真正成为了开源 。




    推荐阅读