自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

使用開源 Python API 封裝器與你的集群對話

開發(fā) 開源
本文討論了什么是 API 封裝器,為什么它很有用,以及封裝器的一些例子。

結(jié)合開放的 API 和 Python 編程語言的力量。

圍繞 API 創(chuàng)建封裝器的開源項(xiàng)目正變得越來越流行。這些項(xiàng)目使開發(fā)人員更容易與 API 交互并在他們的應(yīng)用中使用它們。openshift-python-wrapper 項(xiàng)目是 openshift-restclient-python 的封裝器。最初是一個(gè)幫助我們的團(tuán)隊(duì)使用 OpenShift API 的內(nèi)部包,后來變成了一個(gè)開源項(xiàng)目(Apache 許可證 2.0)。

本文討論了什么是 API 封裝器,為什么它很有用,以及封裝器的一些例子。

為什么要使用 API 封裝器?

API 封裝器是位于應(yīng)用和 API 之間的一層代碼。它通過將一些涉及發(fā)出請求和解析響應(yīng)的復(fù)雜性抽象出來,以簡化 API 訪問過程。封裝器還可以提供 API 本身提供的功能之外的附加功能,例如緩存或錯(cuò)誤處理。

使用 API 封裝器使代碼更加模塊化并且更易于維護(hù)。無需為每個(gè) API 編寫自定義代碼,你可以使用封裝器來提供與 API 交互的一致接口。它可以節(jié)省時(shí)間,避免代碼重復(fù),并減少出錯(cuò)的機(jī)會(huì)。

使用 API 封裝器的另一個(gè)好處是它可以保護(hù)你的代碼免受 API 變化的影響。如果 API 更改了它的接口,你可以更新封裝器代碼而無需修改你的應(yīng)用程序代碼。隨著時(shí)間的推移,這可以減少維護(hù)應(yīng)用程序所需的工作。

安裝

該應(yīng)用位于 PyPi 上,因此使用 pip 命令 安裝 openshift-python-wrapper

$ python3 -m pip install openshift-python-wrapper

Python 封裝器

OpenShift REST API 提供對 OpenShift 平臺的許多功能的編程訪問。封裝器提供了一個(gè)簡單直觀的界面,用于使用 openshift-restclient-python 庫與 API 進(jìn)行交互。它標(biāo)準(zhǔn)化了如何使用集群資源,并提供了統(tǒng)一的資源 CRUD(創(chuàng)建、讀取、更新和刪除)流程。它還提供額外的功能,例如需要由用戶實(shí)現(xiàn)的特定于資源的功能。隨著時(shí)間的推移,封裝器使代碼更易于閱讀和維護(hù)。

簡化用法的一個(gè)示例是與容器交互。在容器內(nèi)運(yùn)行命令需要使用 Kubernetes 流、處理錯(cuò)誤等。封裝器處理這一切并提供 簡單直觀的功能。

>>> 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)
'bin\nboot\ndev\netc\nhome\nlib\nlib64\nmedia\nmnt\nopt\nproc\nroot\nrun\nsbin\nsrv\nsys\ntmp\nusr\nvar\n'

開發(fā)人員或測試人員可以使用這個(gè)封裝器,我們的團(tuán)隊(duì)在編寫代碼的同時(shí)牢記測試。使用 Python 的上下文管理器可以提供開箱即用的資源創(chuàng)建和刪除,并且可以使用繼承來擴(kuò)展特定場景的功能。Pytest fixtures 可以使用代碼進(jìn)行設(shè)置和拆卸,不留任何遺留物。甚至可以保存資源用于調(diào)試??梢暂p松收集資源清單和日志。

這是上下文管理器的示例:

@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

開源社區(qū)的開源代碼

套用一句流行的說法,“如果你熱愛你的代碼,就應(yīng)該讓它自由?!?nbsp;openshift-python-wrapper 項(xiàng)目最初是作為 OpenShift 虛擬化 的實(shí)用模塊。隨著越來越多的項(xiàng)目從代碼中受益,我們決定將這些程序提取到一個(gè)單獨(dú)的倉庫中并將其開源。套用另一句俗語,“如果代碼不回到你這里,那就意味著它從未屬于你。” 一旦這種情況發(fā)生,它就真正成為了開源。

責(zé)任編輯:龐桂玉 來源: Linux中國
相關(guān)推薦

2023-04-21 15:54:46

AI開源

2023-08-01 11:14:07

開源Api軟件

2023-06-26 18:13:56

開源API

2009-06-04 13:16:20

主考官面試菜鳥

2019-01-30 18:00:21

開源Python庫

2017-05-31 13:04:03

戴爾創(chuàng)行中國對話

2011-12-21 10:42:22

云計(jì)算服務(wù)器市場

2020-11-15 18:00:49

開源可視化工具Python

2024-04-23 08:16:21

2017-10-30 16:12:30

DockerServerless樹莓派

2021-07-27 08:25:41

KubernetesBotKube監(jiān)控

2021-06-11 13:02:05

開源工具LinuxLinux PC

2018-10-29 11:33:29

2023-03-02 13:32:17

應(yīng)用安全網(wǎng)絡(luò)安全Web應(yīng)用

2022-07-26 07:05:50

PythonAPI語法

2023-10-04 09:28:40

CBconvert開源工具

2022-06-07 08:59:58

hookuseRequestReact 項(xiàng)目

2019-10-08 11:48:20

PythonGitHub程序員

2020-04-29 09:42:51

Linux 服務(wù)器 工具

2022-07-15 07:58:18

SteampipeCLI 工具
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號