genvid.toolbox.SDK

class genvid.toolbox.SDK(cluster_id='', **kwargs)

ベースクラス: genvid.toolbox.aws.AWSTool, genvid.toolbox.consul_template.ConsulTemplateTool

SDK を設定するための一般的なコマンドです。

この class は、現在のクラスタに新しい Genvid SDK を構成するために、 ClusterAPIBastionAPI をラップする。

バージョン 1.29.0 で変更: load_config_template() をベースクラス ConsulTemplateTool 移動。

バージョン 1.29.0 で変更: merge_dict() をベースクラス BaseTool に移動。

バージョン 1.30.0 で変更: 原型である ConsulTemplateTool の代わりに ProjectTool から派生。

バージョン 1.30.0 で変更: すでに ConsulTemplateTool の一部であるため、その系統から VaultTool および ConsulTool を削除。

バージョン 1.30.0 で変更: load_nomad_job_template() をベース class である ProjectTool に移動。

バージョン 1.31.0 で変更: update_config() をベースクラス ProjectTool に移動。

バージョン 1.33.0 で変更: ローカルクラスタのバイナリパスをハードコードではなく ROOTDIR/local-services/init フォルダからロードするようにしました。 また、静的フォルダの初期化を setup_jobs() から setup() へ移動しました。

バージョン 1.33.0 で変更: ProjectToolConfigurationLoader に置き換えて、代わりに ConsulTemplateTool を継承するようにしました。

NAME = 'sdk'
SDK_CONFIG_VERSION = '1.7.0'
cluster_id = None

クラスタ ID。

bastionAPI = None

Bastion-API インスタンスへのインターフェイス。

clusterAPI = None

Cluster-API クラスタインスタンスへのインターフェイス。

cluster_vault_secret = None

クラスタ vault key が保存される bastion の Vault。

azure
get_remote_cluster_conn()

クラスタ IP とプライベートキーを返す。

get_remote_cluster_secrets()

クラスタ vault 初期化シークレットを戻す。

setup(bucket: str = None, path: str = '/', *, region=None)

ベース SDK サービスを開始する。

パラメータ:
  • bucket – バケット名。デフォルトは get_s3_bucket_id() の戻り値。
  • path – イメージ用バケットのプレフィックスキー。
setup_remote(cluster_id: str, server_ip: str, ssh_private_key_pem_file: str, ssh_user: str)
clean()

SDK の基本サービスを停止し、ジョブを削除して設定を消去する。

get_sdk_config() → dict

デフォルトの SDK 設定を取得する。

設定は、 ROOTDIR/local-services/config (cluster_idlocal の場合)、または ROOTDIR/cloud-services/config のいずれかにあります。config の読み込み後、 consul-template で処理した後、ジョブテンプレートは templates という名前の兄弟フォルダに作成されます。

バージョン 1.31.0 で変更: フォルダから config を読み込みます。

get_config() → dict

現在のクラスタ構成を取得する。

set_config(config: dict = None)

指定の設定を、現在のものとマージする。:param config: マージする設定。

clean_config()

設定を消去する。

remove_config(config: dict)

設定から値を削除する。:param config: 値を削除する設定。

static update_dict_no_create(source, dest)
is_jobs_running()

ジョブが設定されており、実行中の場合、True を返す。

start_jobs(jobs: typing.Union[typing.List[str], NoneType] = None)

すべてのジョブ、または指定したジョブを開始する。:param jobs: 開始するジョブのリスト。

stop_jobs(jobs: typing.Union[typing.List[str], NoneType] = None)

すべてのジョブ、または指定したジョブを停止する。

パラメータ:jobs – 停止するジョブのリスト。
default_images_sdk_path

SDK イメージのデフォルト S3 キーのプレフィックスを取得。

バージョン 1.20.0 で追加.

upload_images_sdk(bucket=None, path=None, update_config: bool = False, cloud_provider: typing.Union[str, NoneType] = None, *, region=None)

SDK のイメージをアップロードする。

パラメータ:
  • bucket (str) – バケット ID (デフォルト: get_s3_bucket_id())。
  • path – バケットで使用するキープレフィックス。
  • update_config (bool) – クラスタのイメージ設定を更新する。
  • region (str) – S3 バケットを含む領域。

警告

update_config はローカルでないクラスタで設定可能。

バージョン 1.14.0 で変更: デフォルトパスを 『/』 から 『/images/sdk-{version}/』 に変更。

バージョン 1.20.0 で変更: AWSTool の規定に従った新しい region パラメータ。

    バージョン 1.26.0 で変更:
  • 画像がアップロードされる S3 バケットに別のリージョンを指定するパラメータ region を追加。

  • Bastion ID に対応する名前のバケットが存在しない場合、ターゲットの region に作成されます。

  • 他のリージョンにすでに存在する場合、基本的なコードが例外を発生させます。

  • デフォルトでは、バケットの作成に使用するリージョンは、現在の AWS プロファイルのリージョンになります。

  • また、環境変数 AWS_DEFAULT_REGION で上書きすることもできます。

  • region パラメータが None で、バケットリージョンがすでに存在していて、そのリージョンがプロファイルや AWS_DEFAULT_REGION 環境変数のものと異なる場合は、それが使用されます。

get_s3_bucket_id()

イメージ用 S3 バケット ID を取得する。

注釈

このメソッドは、AWS へのグローバル STS リクエストを行います。バケット自体の領域との混同を避けるため、領域設定はできません。

get_s3_bucket_with_bastion_id(bastion_id: str)

現在の AWS アカウントと Bastion ID を使用してイメージ用 S3 バケット ID を取得する。

注釈

このメソッドは、AWS へのグローバル STS リクエストを行います。バケット自体の領域との混同を避けるため、領域設定はできません。

update_images_config(bucket: typing.Union[str, NoneType] = None, path: str = '/images/custom', *, delete: bool = False, region: typing.Union[str, NoneType] = None)

クラスタのイメージ構成を更新する。

パラメータ:
  • bucket – バケット ID (デフォルト: get_s3_bucket_id())。
  • path – バケットで使用するキープレフィックス。
  • delete – 構成を更新せず、削除する。
  • region – S3 バケットを含む領域。

警告

このメソッドは、ローカルでないクラスタでのみ呼び出し可能。

バージョン 1.20.0 で追加.

upload_images(prefixes: typing.List[str], bucket: typing.Union[str, NoneType] = None, path: str = '/images/custom', update_config: bool = False, basedir: typing.Union[pathlib.Path, str, NoneType] = None, cloud_provider: typing.Union[str, NoneType] = None, *, region: typing.Union[str, NoneType] = None)

指定のプレフィックスをつけてイメージをアップロードする。

注釈

イメージ名は DockerTool.RE_IMAGE_IMAGEID と一致する必要があります。

パラメータ:
  • prefixes – このプレフィックスのファイルのみアップロードする。
  • bucket (str) – バケット ID (デフォルト: get_s3_bucket_id())。
  • path – バケットで使用するキープレフィックス。
  • update_config (bool) – クラスタのイメージ設定を更新する。
  • basedir – ソースディレクトリ (デフォルト: ARTIFACTS_DIR)。
  • region (str) – S3 バケットを含む領域。

警告

update_config はローカルでないクラスタで設定可能。

バージョン 1.14.0 で変更: デフォルトパスを 『/』 から 『/images/custom』 に変更する。

    バージョン 1.20.0 で変更:
  • basedir パラメータを追加。

  • エラー処理の強化。

  • AWSTool の規定に従った新しい region パラメータ。

  • メソッドの update_config 部分を独自のメソッドに分割。

    バージョン 1.26.0 で変更:
  • 画像がアップロードされる S3 バケットに別のリージョンを指定するパラメータ region を追加。

  • Bastion ID に対応する名前のバケットが存在しない場合、ターゲットの region に作成されます。

  • 他のリージョンにすでに存在する場合、基本的なコードが例外を発生させます。

  • デフォルトでは、バケットの作成に使用するリージョンは、現在の AWS プロファイルのリージョンになります。

  • また、環境変数 AWS_DEFAULT_REGION で上書きすることもできます。

  • region パラメータが None で、バケットリージョンがすでに存在していて、そのリージョンがプロファイルや AWS_DEFAULT_REGION 環境変数のものと異なる場合は、それが使用されます。

create_nats_window_package()

存在しない場合 nats-window パッケージを作成します。

バージョン 1.32.0 で変更: バイナリファイルを使用して Linux 上で動作させます。

get_images_config(bucket: typing.Union[str, NoneType] = None, path: str = '/images/custom', *, region: typing.Union[str, NoneType] = None) → dict
S3 バケットや Azure コンテナからイメージ構成を取得する
クラウド プロバイダに依存。
パラメータ:
  • bucket – バケット ID。
  • path – バケットのキープレフィックス (デフォルト: 『/images/custom』)。
  • region (str) – S3 バケット/Azure コンテナを含む領域。

重要

イメージ名は、選択される DockerTool.RE_IMAGE_IMAGEID と一致する必要があります。

戻り値:dict でイメージ設定。

バージョン 1.14.0 で変更: デフォルトパスを 『/』 から 『/images/custom』 に変更。

バージョン 1.20.0 で変更: AWSTool の規定に従った新しい region パラメータ。

clean_images(bucket: typing.Union[str, NoneType] = None, path: str = '/images/custom', update_config: bool = False, *, region: typing.Union[str, NoneType] = None)

S3 バケットからすべてのイメージを削除します。

パラメータ:
  • bucket – バケット ID (デフォルト: get_s3_bucket_id())。
  • path – バケットで使用するキープレフィックス。
  • update_config (bool) – クラスタのイメージ設定を更新する。
  • region (str) – S3 バケットを含む領域。

警告

update_config はローカルでないクラスタで設定可能。

バージョン 1.14.0 で変更: デフォルトパスを 『/』 から 『/images/custom』 に変更する。

    バージョン 1.20.0 で変更:
  • AWSTool の規定に従った新しい region パラメータ。

  • update_config に代わり、 update_images_config() となります。

update_archive(archive: typing.Union[pathlib.Path, str], version: str = 'dev', destdir: typing.Union[pathlib.Path, str, NoneType] = None, clean: bool = True, keep: bool = False)

想定されるイメージフォーマットに対応するように、バイナリアーカイブを更新します。

param archive:アーカイブファイルのパス。ファイル名は必ず name.archfmt の形式である必要があります。
param version:アーカイブのバージョン。
param destdir:対象ディレクトリ。デフォルトはオリジナルアーカイブと同じです。
param clean:アーカイブの旧バージョンを消去 (同じ名前のもの) する。
param keep:オリジナルアーカイブを保持します。ほとんどの場合、別の destdir で使用する必要があります。

バージョン 1.20.0 で追加.

バージョン 1.30.0 で撤廃: メソッドは PackageArchiver に移動。

load_config(source: typing.Union[pathlib.Path, str], *, job_template_dir: typing.Union[pathlib.Path, str, NoneType], with_consul_template: bool, dryrun: bool = False) → dict

設定ファイル (ディレクトリ内のすべてのファイルまたは特定のファイル) をソースから読み込みます。

パラメータ:
  • source – 設定ファイル/フォルダのパス。
  • with_consul_template – true に設定されている場合にのみ、設定ファイル (ソースがディレクトリの場合) に対して consul-template を実行し使用する。
  • job_template_dir – nomad テンプレートが読み込まれるフォルダへのパス。指定されていない場合、ジョブは読み込まれません。
  • dryrun – True の場合、ソースの解析のみを行い、設定を返します。
戻り値:

set_config() で直接使用することができるディクショナリーとしての設定。

:raises FileNotFoundError : If the job_template_dir is not None and
有効なディレクトリではない場合。

バージョン 1.26.0 で変更: 引数の pathlib.Path のサポートを修正。負荷パラメータを追加。

バージョン 1.30.0 で変更: ProjectTool の新しいインスタンスを作成する代わりに、 load_config_folder() を使用するようリファクタリング。

バージョン 1.33.0 で変更: ローカルのconsul-templateの代わりに、新しいrender_templateコマンドを使用します。

get_output_public_ips() → list

terraform モジュールの出力からパブリック IP をすべて取得する。

戻り値:パブリック IP アドレスの一覧。
get_cloud_provider() → str

terraform モジュールの出力からクラウドプロバイダをすべて取得する。

terraform のクラスタの出力にクラウドプロバイダが見つからない場合、デフォルトで aws が返されます。

戻り値:クラウドプロバイダ。
load_config_template(template: typing.Union[pathlib.Path, str], env: typing.Union[typing.Mapping[str, str], NoneType] = None) → typing.Any

バージョン 1.33.0 で撤廃: ConsulTemplateTool は今後 SDK の祖先の一部ではなくなります。代わりに render_template() を使用します。

consul_template_once(*, use_consul: bool = False, use_vault: bool = False, env: typing.Union[typing.Mapping[str, str], NoneType] = None, **kwargs) → genvid.toolbox.consul_template.ConsulTemplateOutput

バージョン 1.33.0 で撤廃: ConsulTemplateTool は今後 SDK の祖先の一部ではなくなります。代わりに render_template() を使用します。

consul_template

バージョン 1.33.0 で撤廃: ConsulTemplateTool は今後 SDK の祖先の一部ではなくなります。代わりに render_template() を使用します。

class sdk.SDK

genvid.toolbox.SDK の実装