作者:RuthNetser译者:LCTTgeekpi
|2023-05-0723:26
结合开放的API和Python编程语言的力量。
围绕API创建封装器的开源项目正显得越来越流行。这种项目使开发人员更容易与API交互并在她们的应用中使用它们。openshift-python-wrapper项目是openshift-restclient-python的封装器。最初是一个帮助我们的团队使用OpenShiftAPI的内部包,后来弄成了一个开源项目(Apache许可证2.0)。
本文讨论了哪些是API封装器linux应用软件开发,为何它很有用,以及封装器的一些事例。
为何要使用API封装器?
API封装器是坐落应用和API之间的一层代码。它通过将一些涉及发出恳求和解析响应的复杂性具象下来,以简化API访问过程。封装器还可以提供API本身提供的功能之外的附加功能,比如缓存或错误处理。
使用API封装器使代码愈发模块化而且更便于维护。无需为每位API编撰自定义代码,你可以使用封装器来提供与API交互的一致插口。它可以节约时间,防止代码重复,并降低出错的机会。
使用API封装器的另一个用处是它可以保护你的代码免受API变化的影响。假如API修改了它的插口,你可以更新封装器代码而无需更改你的应用程序代码。随着时间的推移,这可以减低维护应用程序所需的工作。
安装
该应用坐落PyPi上,因而使用pip命令安装openshift-python-wrapper:
$ python3 -m pip install openshift-python-wrapper
Python封装器
OpenShiftRESTAPI提供对OpenShift平台的许多功能的编程访问。封装器提供了一个简单直观的界面中标linux,用于使用openshift-restclient-python库与API进行交互。它标准化了怎样使用集群资源,并提供了统一的资源CRUD(创建、读取、更新和删掉)流程。它还提供额外的功能,比如须要由用户实现的特定于资源的功能。随着时间的推移arch linux,封装器使代码更便于阅读和维护。
简化用法的一个示例是与容器交互。在容器内运行命令须要使用Kubernetes流、处理错误等。封装器处理这一切并提供。
>>> from ocp_resources.pod import Pod
>>> from ocp_utilities.infra import get_client
>>> client = get_client()
ocp_utilities.infra INFO Trying to get
client 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 on
nginx-deployment-7fb96c846b-b48mv (ip-10-0-155-108.ec2.internal)
'binnbootndevnetcnhomenlibnlib64nmedianmntnoptnprocnrootnrunnsbinnsrvnsysntmpnusrnvarn'
开发人员或测试人员可以使用这个封装器,我们的团队在编撰代码的同时谨记测试。使用Python的上下文管理器可以提供开箱即用的资源创建和删掉,而且可以使用承继来扩充特定场景的功能。Pytestfixtures可以使用代码进行设置和拆卸,不留任何遗留物。甚至可以保存资源用于调试。可以轻松搜集资源清单和日志。
这是上下文管理器的示例:
@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 ns
def 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虚拟化的实用模块。随着越来越多的项目从代码中获益,我们决定将这种程序提取到一个单独的库房中并将其开源。套用另一句谚语,“如果代码不回到你这儿linux应用软件开发,那就意味着它未曾属于你。”一旦这些情况发生,它就真正成为了开源。
更多的贡献者和维护者意味着代码属于社区。欢迎你们贡献。
(题图:MJ/5ca32a4a-2194-4b36-ade9-053433e79201)
via:
作者:RuthNetser选题:lkxed译者:geekpi校对:wxy
本文由LCTT原创编译,Linux中国荣誉推出