キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 
cancel
3406
閲覧回数
10
いいね!
0
コメント
mnagao
Cisco Employee
Cisco Employee

DNA Center でよく使う CLI コマンド magctl, maglev はどちらも Python スクリプトとして実装されています。この内、maglev コマンドは主に DNA Center の CLI ベース API クライアントとして機能します。

[Sun Apr 26 05:53:23 UTC] maglev@192.0.2.1 (maglev-master-1) commands
$ which maglev
/usr/local/bin/maglev

[Sun Apr 26 05:53:29 UTC] maglev@192.0.2.1 (maglev-master-1) commands
$ cat /usr/local/bin/maglev
#!/opt/maglev/bin/python

# -*- coding: utf-8 -*-
import re
import sys

from maglev_cli.main import cli   # モジュール読み込み

if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
    sys.exit(cli())

 

モジュールの定義を参照すれば実行する処理をご確認いただけますので、使用している API の確認や GUI 操作の理解に役立ちます。例えば maglev backup delete コマンドであれば以下より maglev/backup/ API を呼び出すことが分かり、API Gateway である Kong での定義より、当該 API リクエストの処理を担当するのは maglevserver Pod であることを確認できます。

[Sun Apr 26 06:07:45 UTC] maglev@10.70.70.231 (maglev-master-1) commands
$ pwd
/opt/maglev/lib/python2.7/site-packages/maglev_cli/commands

[Sun Apr 26 06:07:47 UTC] maglev@10.70.70.231 (maglev-master-1) commands
$ ls | grep -e backup.py$ -e sub_command
backup.py
sub_commands # コマンドによってはこちらも参照


[Sun Apr 26 06:08:08 UTC] maglev@10.70.70.231 (maglev-master-1) commands
$ cat backup.py

@click.command()
@click.argument("backup_id")
def delete(backup_id):
    """Delete a backup"""

    backup_restore_proxy = cli_context.proxies["BackupRestore"]
    try:
        backup_restore_proxy.delete_backup(backup_id)
        log_success(0, "Deleted backup '%s'", backup_id)
    except ProxyError as e:
        exit_with_exception(0, str(e))

cli.add_command(delete)


[Sun Apr 26 06:12:48 UTC] maglev@10.70.70.231 (maglev-master-1) proxies
$ pwd
/opt/maglev/lib/python2.7/site-packages/maglev_api/proxies

[Sun Apr 26 06:12:49 UTC] maglev@10.70.70.231 (maglev-master-1) proxies
$ cat backup_restore.py

from maglev_api.proxies.AbstractProxy import AbstractProxy  # モジュール読み込み

class BackupRestoreProxy(AbstractProxy):

    def delete_backup(self, backup_id):
        url = "maglev/backup/%s" % backup_id   # 使用 API
        r = self._do_delete(url)               # HTTP DELETE
        return r.json["response"]


[Sun Apr 26 06:12:57 UTC] maglev@10.70.70.231 (maglev-master-1) proxies
$ magctl api routes   # Kong に登録されている API upstream を確認
    {
      "http_if_terminated": false, 
      "retries": 0, 
      "name": "maglev-api", 
      "https_only": false, 
      "upstream_url": "http://maglevserver.maglev-system.svc.cluster.local:8011",  # APIリクエストを受け付けるのは maglevserver Pod
      "strip_uri": false, 
      "created_at": 1555585210410, 
      "uris": [
        "/api/system/v1/maglev"  # API
      ], 
      
    }, 

 

これにより、CLI と GUI の動作が等価であることを確認できます。

CLI の引数は BACKUP_ID

[Sun Apr 26 06:29:08 UTC] maglev@10.70.70.231 (maglev-master-1) proxies
$ maglev backup display | grep -e ID -e test
START_TIMESTAMP       BACKUP_ID                              DESCRIPTION          COMPATIBLE VERSIONS                              
2020-04-26 06:23:27   1cecbfca-68bd-43d2-b399-6958cb87deaa   test                 TRUE     system:1.3.0.115 platform-ui:1.4.1.50 

[Sun Apr 26 06:29:32 UTC] maglev@10.70.70.231 (maglev-master-1) proxies
$ maglev backup delete --help
Usage: maglev backup delete [OPTIONS] BACKUP_ID

  Delete a backup

Options:
  --help  Show this message and exit.

 

GUI で backup の削除を実行 (backup_id は Backup Name: test 右のツールチップで確認できます)

dnac_backup_delete_gui.png

 

maglev スクリプトと同様に maglev/backup/[BACKUP_ID] に HTTP DELTE でアクセスしていることを確認

dnac_backup_delete_dev_tool.png

 

 

Getting Started

検索バーにキーワード、フレーズ、または質問を入力し、お探しのものを見つけましょう

シスコ コミュニティをいち早く使いこなしていただけるよう役立つリンクをまとめました。みなさんのジャーニーがより良いものとなるようお手伝いします