1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Cloud pak for Dataのデプロイメントスペースを一旦きれいにする

Last updated at Posted at 2020-06-26

(2020.9.8更新) WML client初期化でのversion番号を自動取得するように変更

Cloud pak for Data (以下CP4D)でのモデル開発中に、デプロイメントスペースにモデルや関数やデプロイメントを大量に作ってしまった後、それらを一旦きれいに全消ししたい時に使ってください。

あまりそんなシーンは多発しないかもしれませんが、2020年6月時点のCP4D v3.0ではモデルやデプロイメントなどのバージョン管理ができない制約があるため、複数世代のモデルを作成していくとあっという間にどんどんモデルやデプロイメントが増えていきます。
CP4Dの画面上でポチポチ1つずつ削除できるのですが、めんどくさいので一気に消すpythonコードを作りました。

分析プロジェクトで適当なNotebookを立ち上げて実行します。

準備その1。WMLclientを初期化
url = "https://cloudpackfordata.url.com"
from watson_machine_learning_client import WatsonMachineLearningAPIClient
import requests, os
token = os.environ['USER_ACCESS_TOKEN']
version = requests.get(os.environ['RUNTIME_ENV_APSX_URL'] + "/diag").text[0:5]
wml_credentials = {
    "token" : token,
    "instance_id" : "openshift",
    "url": url,
    "version": version
}
client = WatsonMachineLearningAPIClient(wml_credentials)
準備その2。デプロイメントスペースIDをセット
# IDは client.repository.list_spaces() で調べられる
space_id = "xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
client.set.default_space(space_id)

全消しの順番は依存関係から、デプロイメント → モデル → 関数 の順番に行います。

全デプロイメントを削除
all_deps = client.deployments.get_details()['resources']
for dep in all_deps:
    dep_name = dep['metadata']['name']
    dep_id = dep['metadata']['guid']
    client.deployments.delete(dep_id)
    print(dep_name +"(" + dep_id + ") is deleted")
全モデルを削除
all_models = client.repository.get_model_details()['resources'] 
for model in all_models:
    model_name = model['metadata']['name']
    model_id = model['metadata']['guid']
    client.repository.delete(model_id)
    print(model_name +" (" + model_id + ") is deleted")
全関数を削除
all_funcs = client.repository.get_function_details()['resources'] 
for func in all_funcs:
    func_name = func['metadata']['name']
    func_id = func['metadata']['guid']
    client.repository.delete(func_id)
    print(func_name +" (" + func_id + ") is deleted")

削除後、CP4D画面上できれいになったデプロイメントスペースを確認して終了です。

ちなみに、デプロイメントスペース自体を削除し再作成することでも瞬時にきれいになります。その場合はデプロイメントスペースIDが変わってしまうので、各種コードの修正をお忘れなく。

あと、本番稼働開始した後はこのNotebookは削除しておいたほうが無難です。残しておくと危険です。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?