genvid.toolbox.BaseTool¶
-
class
genvid.toolbox.
BaseTool
(logname=None, command_option_name='command', **kwargs)¶ ベースクラス:
object
すべてのツールのベース class。
この class は、他のすべてのツールを設定し、基本的な機能を提供します。特に、
main()
とget_parser()
のメソッドの処理を行います。詳細はadd_commands()
、add_command()
、run_command()
を参照してください。インスタンス化する前は、この class のほとんどの属性は適切に初期化されていないことに注意してください。
-
NAME
= None¶ このツールのロガー名。子 class (children) で再定義する必要があります。
-
DESCRIPTION
= None¶ ヘルプパーサーで使用されるツールの説明。子 class (children) で再定義する必要があります。
-
ENVIRONMENT_VARIABLES
= {'HOME', 'ROOTDIR', 'GENVID_BASTION_URL', 'VAULT_KEYS', 'AZURE_RESOURCE_GROUP', 'BINDIR', 'CONSUL_HTTP_ADDR', 'GENVID_VAULT_TOKEN_ROLES_FOLDER', 'GENVID_DEFAULT_IP', 'VAULT_ADDR', 'GENVID_VERBOSE_EXCEPTIONS', 'VAULT_TOKEN_FILE', 'AZURE_STORAGE_ACCOUNT', 'GENVID_VAULT_POLICIES_FOLDER', 'VAULT_TOKEN', 'MSBUILD', 'CURDIR', 'GENVID_TOOLBOX_LOGLEVEL', 'VAULT_KEYS_FILE', 'PYTHON_EXECUTABLE', 'GENVID_TOOLBOX_LOGFORMAT', 'GENVID_CLUSTER_ID', 'GENVID_TOOLBOX_VERSION', 'GENVID_CHECKIP_URL'}¶ すべてのツールで使用される環境変数。
setdefault()
が呼び出されるたびにリストが更新されます。env()
、print_env()
によって使用されます。
-
MODE_0600
= 384¶ ユーザー RW ファイルの権限。
-
MODE_0644
= 420¶ ユーザー RW、グループ、読み込みファイルの権限。
-
MODE_0700
= 448¶ ユーザー RWX ファイルの権限。
-
MODE_0755
= 493¶ ユーザー RWX、グループ、RX ファイルの権限。
-
RE_VERSION_MATCH
= re.compile('(?P<version>(\\d+).(\\d+).(\\d+).(\\d+))')¶
-
static
setbasescript
(path: str)¶ CURDIR
を path に設定し、親 class が設定されていない場合、ROOTDIR
を設定する。別のパスに
ROOTDIR
を設定するには、先に setrootdir を呼び出す必要があります。
-
static
setdefault
(name: str, value: str)¶ まだ設定されていない場合、name という環境変数を value に設定し、その値を返す。
-
static
delenv
(name: str)¶
-
classmethod
merge_dict
(source: dict, destination: dict) → dict¶ 2 つの辞書をマージする。
destination
は、source
の要素を入れ替えて変更します。source
にdict
が値として含まれている場合、 merge はその値で再帰検索を行います (destination
がdict
でない場合はエラーになる可能性があります)。パラメータ: - source – ソースの辞書。
- destination – デスティネーションの辞書。
例外: ValueError – 元のキーが辞書であり、指定先にすでに辞書ではない値が含まれている場合。
戻り値: destination
バージョン 1.29.0 で追加.
-
run
(*args, check=True, **kwargs)¶ args のすべての引数を渡し、 check のデフォルト値を True に設定する
subprocess.run()
のラッパー。便宜上、すべての引数は、文字列に変換されます (
str
を使用)。バージョン 1.15.0 で変更: スタティックメソッドではなく、メソッド。
-
shrun
(cmdline: str, shell=True, check=True, **kwargs)¶ 直接 cmdline を渡し、 check 、 shell のデフォルト値を True に設定する
subprocess.run()
のラッパー。バージョン 1.15.0 で変更: スタティックメソッドではなく、メソッド。
-
pyrun
(*args, **kwargs)¶ 現在の python バージョンを使用して python スクリプトを実行する。
以下のコマンドとほぼ同じです。
run("python", *args, **kwargs)
-
static
safe_unlink
(filename: typing.Union[str, pathlib.Path])¶ 存在する場合のみ、ファイルのリンクを解除。
バージョン 1.12.0 で変更:
pathlib.Path
も引数として可能になりました。
-
static
rmtree
(directory: pathlib.Path, ignore_errors: bool = False, onerror=<staticmethod object>)¶ shutil.rmtree()
と同等だが、Windows のシムリンクを認識する。-
バージョン 1.20.1 で変更:
onerror 処理メソッドには、例外を発生させる前に 5 秒間隔で 60 秒間ファイルの削除を再試行するデフォルトのハンドラーが与えられます。
-
install_file
(src: typing.Union[str, pathlib.Path], dst: typing.Union[str, pathlib.Path], mode=420, uid=-1, gid=-1, backup=False)¶ ファイル src を dst にコピーして権限を変更する。
パラメータ: - src – コピーするファイル。
- dst – コピー先。
- mode – コピー先の権限。
- uid – コピー先のユーザー ID。 -1 の場合、プロセスのユーザー ID を使用する。
- gid – GID コピー先の GID。 -1 の場合、uid を使用する。
- backup – ファイル名の末尾に
~
を追加して、ファイルをバックアップする。
バージョン 1.16.0 で変更: 非静的メソッドにして backup の引数を追加する。
-
install_tmp_file
(dest: typing.Union[str, pathlib.Path], data: bytes, **kwargs)¶ 一時ファイルにデータを書き込み、dst にコピーする。
インストールは、
install_file()
を使用して行われます。パラメータ: - dest – コンテンツの保存先。
- data – ファイルに書き込むための書き込みデータ。
バージョン 1.16.0 で変更: 非静的メソッド
-
install_json
(dest: typing.Union[str, pathlib.Path], config, **kwargs)¶ config を JSON ファイルとしてダンプし、指定の場所にコピーする。
パラメータ: - dest – コンテンツの保存先。
- data – JSON としてファイルに書き込むための書き込みデータ。
バージョン 1.16.0 で変更: 非静的メソッド
-
static
env
()¶ 使用されている環境変数とその値のリストを返します。
返される変数のリストは、
ENVIRONMENT_VARIABLES
から入手します。
-
static
print_env
()¶ 使用されている環境変数とその値のリストを出力する。
返される変数のリストは、
ENVIRONMENT_VARIABLES
から入手します。
-
logger
= None¶ ツールのロガー。
-
PLATFORM
= None¶ 現在のプラットフォームの名前。
現在、linux または windows が使用できます。
-
HOME
= None¶ ユーザーのホームディレクトリ名を含む
HOME
のミラー。環境変数または
os.path.expanduser()
から取得。
-
PYTHON_EXECUTABLE
= None¶ デフォルトで現在の python 実行ファイルを含む
PYTHON_EXECUTABLE
のミラー。環境から、または、環境が設定されていない場合は
sys.executable
から取得。
-
GENVID_BASTION_URL
= None¶ bastion-api URL を表す
GENVID_BASTION_URL
のミラー。
-
CURDIR
= None¶ 現在のスクリプトディレクトリパス (正しく設定されている場合)、または現在の作業ディレクトリ (デフォルト) を含む
CURDIR
のミラー。警告: この変数の信頼性は高くありません。できれば使用しないでください。
-
GENVID_TOOLBOX_VERSION
= None¶ 現在インストールされているツールボックスバージョンを含む
GENVID_TOOLBOX_VERSION
のミラー。警告: この変数はオーバーライドしないでください。
-
GENVID_VERBOSE_EXCEPTIONS
= None¶ GENVID_VERBOSE_EXCEPTIONS
のミラー。値が
1
の場合、完全な例外トレースが表示されます。それ以外の場合、1 行に凝縮されます。
-
AZURE_STORAGE_ACCOUNT
= None¶ AZURE_STORAGE_ACCOUNT
のミラー。アクセスする Azure ストレージアカウント名です。正確な名前は、Azure ポータル を確認してください。
-
AZURE_RESOURCE_GROUP
= None¶ AZURE_RESOURCE_GROUP
のミラー。アクセスする Azure リソースグループ名です。
-
ARTIFACTS_DIR
= None¶ この SDK のイメージの保存場所。
バージョン 1.20.0 で変更:
DockerTool
から変数を移動します。
-
COMMAND_OPTION_NAME
= None¶ コマンドラインでコマンド引数に使用される名前。
詳細は
add_command()
を参照してください。
-
GENVID_TOOLBOX_LOGLEVEL
= None¶ ツールボックスの
logger
レベルを設定するGENVID_TOOLBOX_LOGLEVEL
のミラー。
-
GENVID_TOOLBOX_LOGFORMAT
= None¶ ツールボックスの
logger
を設定するGENVID_TOOLBOX_LOGFORMAT
のミラー。
-
GENVID_CLUSTER_ID
= None¶ ツールボックスに使用するクラスタ ID を示す
GENVID_CLUSTER_ID
のミラー。
-
commands
= None¶ 各コマンドのパーサーの辞書。
詳細は
add_command()
を参照してください。
-
subparsers
= None¶ すべてのコマンドに使用する argparse モジュールから入手したサブパーサーオブジェクト。
詳細は
add_commands()
を参照してください。
-
parser
= None¶ このツールの現在のパーサー。
詳細は
add_commands()
を参照してください。
-
which
(exe, path=None)¶ exe で実行される実行ファイルのフルパスを返す。
path に含まれている場合、チェックに使用する。含まれていない場合、
BINDIR
を先にチェックする。Raises: ファイルが存在しない場合、 ExecutableNotInPathError
。
-
run_powershell
(*cmds: str, interactive: bool = False, noprofile: bool = False, **kwargs)¶ powershell スクリプトとして cmds を実行する。
パラメータ: - cmds – 実行する powershell コマンドのリスト。
- interactive – コマンドがインタラクティブかどうか。
- noprofile – プロフィールを読み込まない。
- kwargs – この
run()
のパーサーに渡すその他のキーワード引数。
-
run_elevated_win32
(*args, **kwargs)¶ Windows の高度の権限を使用してコマンドを実行します。
-
run_elevated
(*args, **kwargs)¶ Windows の高度の権限を使用してコマンドを実行します。
-
KILL_SIGNAL
= 1¶ デフォルト キル信号。
デフォルト
signal.SIGKILL
(UNIX)、signal.CTRL_BREAK_EVENT
(Windows)。バージョン 1.15.0 で追加.
-
send_signal
(proc: typing.Union[int, psutil.Process], sig: int = None)¶ プロセスにシグナルを送信する。
パラメータ: - proc – プロセス。プロセス PID または
psutil.Process
のインスタンス。 - sig – 送信するシグナル。デフォルトは
KILL_SIGNAL
。
バージョン 1.15.0 で追加.
- proc – プロセス。プロセス PID または
-
kill_process
(proc: typing.Union[int, psutil.Process])¶ プロセスを破棄する。
SIGKILL を送信してプロセスを強制的に破棄したり、TerminateProcess を呼び出す。
パラメータ: proc – プロセス。プロセス PID または psutil.Process
のインスタンス。バージョン 1.15.0 で追加.
-
kill_process_tree
(proc: typing.Union[int, psutil.Process], timeout: float = 15.0) → typing.List[psutil.Process]¶ 最初に SIGTERM/CTRL_BREAK_EVENT を送信し、その後すべての子に SIGKILL/Terminate をプッシュしてプロセスツリーを破棄する。
パラメータ: - proc – プロセス。プロセス PID または
psutil.Process
のインスタンス。 - timeout – プロセス終了までの待機時間のタイムアウト (秒)。
戻り値: 生存しているプロセスのリスト。
バージョン 1.15.0 で追加.
-
バージョン 1.20.1 で変更:
デフォルトのタイムアウト時間を 15 秒に変更。
子の子は、再帰的に終了するようになりました。
- proc – プロセス。プロセス PID または
-
run_daemon
(*args: str, **kwargs)¶ バックグラウンドで処理を実行する。
パラメータ: - args – 実行するコマンド。
- stdout – stdout の出力ファイル。
- stderr – stderr の出力ファイル。
- cwd – 現在の作業ディレクトリ。
- env – 使用する環境。
- pidfile – プロセスの PID を保存する pidfile。
-
add_commands
()¶ ツールのコマンドを追加。
このメソッドはオーバーライドする必要があります。子 class が
add_commands()
を使用して新しいコマンドを追加することができます。既存コマンドのリストおよび、そのパーサーはcommands
で入手可能です。
-
add_command
(name: str, description: str, **kwargs)¶ ツールに新しいコマンドを追加。
コマンドが
commands
のリストに追加されます。パラメータ: - name – コマンド名。
- description – コマンドのヘルプ。
- kwargs – ツール
subparsers
のパーサーに渡すその他のキーワード引数。
戻り値: コマンドパーサー。
Raises: AssertionError
(名前がすでにコマンドとして存在する場合)。
-
add_base_commands
()¶
-
run_base_command
(command, options)¶
-
get_parser
(subparsers=None, name=None, description=None, fromfile_prefix_chars='@', **kwargs)¶ このツールのパーサーを返します。
パラメータ: - subparsers – 使用するカスタムサブパーサー。
- name – ツール名 (デフォルトは
NAME
)。 - description – ツールの説明 (デフォルトは
DESCRIPTION
)。 - fromfile_prefix_chars – ファイルにプレフィックスをつける文字セットで、追加の引数はここから読み込みます。
- kwargs – この
argparse.ArgumentParser
ファクトリのパーサーに渡すその他のキーワード引数。
戻り値: このツールのパーサー。
バージョン 1.13.0 で変更: fromfile_prefix_chars の新しいデフォルトは 『@』です。None を渡すことで、以前の動作 (None) に切り替えます。
-
run_command
(command, options)¶ options で command を実行する。
このメソッドはオーバーライドする必要があります。
パラメータ: - command – 実行するコマンド名。
- options – 引き渡すオプションを持つ
argparse.Namespace
オブジェクト。
-
main
(options=None, *, profile=None)¶ ツールを実行する。
options を指定していない場合、コマンドライン引数より取得。それ以外の場合は、名前空間オブジェクトまたは辞書。
パラメータ: profile – プロフィールが使用されている場合のプロフィールインスタンス。
-
get_files
(srcdir: pathlib.Path)¶ srcdir
配下の全ファイルを取得 (フォルダを除く)。Srcdir.rglob(「*」) と等価だが、フォルダは除外。
パラメータ: srcdir – 新しいファイルをチェックするフォルダ。 戻り値: Path
オブジェクトの反復子。
-
copy_files
(srcdir: pathlib.Path, dstdir: pathlib.Path, files: typing.List[typing.Union[str, pathlib.Path]], dryrun=False)¶ files
の全ファイルをsrcdir
からdstdir
にコピーします。パラメータ: - srcdir – オリジナル ファイルの基本フォルダ。
- dstdir – ファイルのコピー先フォルダ。
- files – コピーするファイルのリスト。
- dryrun – True ならコピーせずに結果のみログ出力。
-
safe_print
(text: str, fileobj=<colorama.ansitowin32.StreamWrapper object>, errors='backslashreplace')¶ 値を
fileobj
へ安全に出力します。fileobj
にはencoding
メンバーおよびバイトを受け取るwrite
メソッドを持つbuffer
メンバーも必要です。パラメータ: - text – 出力するテキスト。
- fileobj – 出力する fileobj。
- errors – エラー処理方法。取り得る値については
str.encode()
を参照してください。
-
-
class
basetool.
BaseTool
¶