Linux中國

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

結合開放的 API 和 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-wrapper

Python 封裝器

OpenShift REST API 提供對 OpenShift 平台的許多功能的編程訪問。封裝器提供了一個簡單直觀的界面,用於使用 openshift-restclient-python 庫與 API 進行交互。它標準化了如何使用集群資源,並提供了統一的資源 CRUD(創建、讀取、更新和刪除)流程。它還提供額外的功能,例如需要由用戶實現的特定於資源的功能。隨著時間的推移,封裝器使代碼更易於閱讀和維護。

簡化用法的一個示例是與容器交互。在容器內運行命令需要使用 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 的上下文管理器可以提供開箱即用的資源創建和刪除,並且可以使用繼承來擴展特定場景的功能。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 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 虛擬化 的實用模塊。隨著越來越多的項目從代碼中受益,我們決定將這些程序提取到一個單獨的倉庫中並將其開源。套用另一句俗語,「如果代碼不回到你這裡,那就意味著它從未屬於你。」 一旦這種情況發生,它就真正成為了開源。

更多的貢獻者和維護者意味著代碼屬於社區。歡迎大家貢獻。

(題圖:MJ/5ca32a4a-2194-4b36-ade9-053433e79201)

via: https://opensource.com/article/23/4/cluster-open-source-python-api-wrapper

作者:Ruth Netser 選題:lkxed 譯者:geekpi 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    這個站點使用 Akismet 來減少垃圾評論。了解你的評論數據如何被處理

    More in:Linux中國

    Linux中國

    捐贈 Let's Encrypt,共建安全的互聯網

    隨著 Mozilla、蘋果和谷歌對沃通和 StartCom 這兩家 CA 公司處罰落定,很多使用這兩家 CA 所簽發證書的網站紛紛尋求新的證書籤發商。有一個非盈利組織可以為大家提供了免費、可靠和安全的 SSL 證書服務,這就是 Let's Encrypt 項目。現在,它需要您的幫助
    Linux中國

    關於Linux防火牆iptables的面試問答

    Nishita Agarwal是Tecmint的用戶,她將分享關於她剛剛經歷的一家公司(印度的一家私人公司Pune)的面試經驗。在面試中她被問及許多不同的問題,但她是iptables方面的專家,因此她想分享這些關於iptables的問題和相應的答案給那些以後可能會進行相關面試的人。 所有的問題和相應的答案都基於Nishita Agarwal的記憶並經過了重寫。 嗨,朋友!我叫Nishita Agarwal。我已經取得了理學學士學位,我的專業集中在UNIX和它的變種(BSD,Linux)。它們一直深深的吸引著我。我在存儲方面有1年多的經驗。我正在尋求職業上的變化,並將供職於印度的P
    Linux中國

    Lets Encrypt 已被所有主流瀏覽器所信任

    旨在讓每個網站都能使用 HTTPS 加密的非贏利組織 Lets Encrypt 已經得了 IdenTrust的交叉簽名,這意味著其證書現在已經可以被所有主流的瀏覽器所信任。從這個裡程碑事件開始,訪問者訪問使用了Lets Encrypt 證書的網站不再需要特別配置就可以得到 HTTPS 安全保護了。 Lets Encrypt 的兩個中級證書 ...