オープン API のパワーと Python プログラミング言語を組み合わせています。
APIのラッパーを作成するオープンソースプロジェクトの人気が高まっています。これらのプロジェクトにより、開発者はAPIを操作し、アプリケーションでAPIを容易に利用できるようになります。openshift openshift-python-wrapperプロジェクトは、openshift-restclient-pythonのラッパーです。当初は、私たちのチームがOpenShift APIを利用できるようにするための社内パッケージとして開発されましたが、後にオープンソースプロジェクト(Apache License 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) 'bin\nboot\ndev\netc\nhome\nlib\nlib64\nmedia\nmnt\nopt\nproc\nroot\nrun\nsbin\nsrv\nsys\ntmp\nusr\nvar\n' 開発者とテスターはこのラッパーを使用することで、コードを記述する際にテストを念頭に置くことができます。Pythonのコンテキストマネージャーは、すぐに使えるリソースの作成と削除を提供し、継承を利用してシナリオ固有の機能を拡張できます。Pytestのフィクスチャはコードを使用して設定および分解できるため、コードには一切影響がありません。リソースはデバッグ用に保存することもできます。リソースのインベントリとログも簡単に収集できます。 以下はコンテキスト マネージャーの例です。 @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 openshift-python-wrapperプロジェクトは、もともと OpenShift 仮想化のユーティリティモジュールとして構想されました。このコードを活用するプロジェクトが増えるにつれ、これらのプログラムを別のリポジトリに展開し、オープンソース化することにしました。別の格言を言い換えると、「コードが戻ってこなければ、それはあなたのものではなかった」ということです。これが実現したことで、真のオープンソース化が実現したのです。 |