2. VCP SDK

2.1. SDKベースクラス(vcpsdk/vcpsdk)

class VcpExtClass(config_dir, vcc_access_token)[ソース]

VCP 各Cloud毎のExt 情報管理用

find_extension(provider_name)[ソース]

プロバイダ名からextension情報を生成

パラメータ:

provider_name -- real cloud provider名

戻り値:

VcpExtResource Object

class VcpSDK(vcc_access_token='', config_dir='', verbose=0)[ソース]

VCP SDKベースクラス

サンプルコード

# 初期化(confi_dir省略時は、 `/notebooks/notebook/vcp_config` )
sdk = VcpSDK('アクセストークン',
            config_dir="vcp_config.yml, vcp_flavor.yml のdirectory")

# バージョン情報
sdk.version()

# フレーバー情報
sdk.df_flavors('プロバイダ名')

# vaultやdocker registory のurl情報
sdk.vcc_info()

# spec作成
spec = sdk.get_spec('プロバイダ名', 'flavor名')

# UnitGroup情報出力
sdk.df_ugroups()

# UnitGroup情報取得
ugroups = sdk.find_ugroups()
ugroup = sdk.get_ugroup('UnitGroup名')

# 既存サーバ用 ssh 公開鍵取得
sdk.get_publickey()

# UnitGroupの作成
ugroup = sdk.create_ugroup('UnitGroup名', 'compute|storage')
authority()[ソース]

authority 情報の取得

結果サンプル

{
    'role': 'fullaccess',
    'user_name': 'nobody',
    'user_role': 'regular'
}
戻り値:

authority情報

property config_dir

config ファイルのディレクトリ

create_ugroup(ugroup_name, ugroup_type='compute', privileged=False)[ソース]

UnitGroupの作成

パラメータ:
  • ugroup_name -- vc名

  • ugroup_type -- vcタイプ compute|storage

  • privileged -- 特権モードを指定する場合は True、指定しない場合は False (デフォルト)

戻り値:

UnitGroup情報(vcpsdk::VcpUnitGroupClass)

df_flavors(provider_name)[ソース]

flavor定義の一覧(DataFrame形式)

パラメータ:

provider_name -- 表示対象とするプロバイダ名

df_nodes(privileged=False)[ソース]

All node一覧(DataFrame形式)

パラメータ:

privileged -- 特権モードを指定する場合は True、指定しない場合は False (デフォルト)

df_ugroups(privileged=False)[ソース]

UnitGroup 一覧(DataFrame)

パラメータ:

privileged -- 特権モードを指定する場合は True、指定しない場合は False (デフォルト)

find_ugroups(ugroup_name='', vcid='', vcno='', state=None, ugroup_type='', privileged=False)[ソース]

検索条件にマッチするVC検索

パラメータ:
  • ugroup_name -- 検索条件Vc名

  • vcid -- 検索条件vcid

  • vcno -- 検索条件vcno

  • ugroup_type -- 検索条件UnitGroupタイプ

  • privileged -- 特権モードを指定する場合は True、指定しない場合は False (デフォルト)

戻り値:

UnitGroup情報(vcpsdk::VcpUnitGroupClass)

注釈

  • 検索条件指定が複数あれば、AND条件とする

get_extension(provider_name)[ソース]

extension(plugin拡張項目)情報の取得

パラメータ:

provider_name -- プロバイダ名

戻り値:

extensionのリソース情報(vcpsdk::VcpExtResource)

get_publickey()[ソース]

既存サーバ用 ssh 公開鍵取得

戻り値:

ssh 公開鍵文字列

get_spec(provider_name, flavor)[ソース]

Spec情報の取得

パラメータ:
  • provider_name -- プロバイダ名

  • flavor -- small, medium, large などのfalvor文字列

戻り値:

SPECのリソース情報(vcpsdk::VcpSpecResource)

get_ugroup(ugroup_name, privileged=False)[ソース]

unit group名を指定して、UnitGroup取得

パラメータ:
  • ugroup_name -- vc名

  • privileged -- 特権モードを指定する場合は True、指定しない場合は False (デフォルト)

戻り値:

UnitGroup情報(vcpsdk::VcpUnitGroupClass)

get_vpn_catalog(provider=None, vpn_catalog_name='default')[ソース]

VC Controller からVPNカタログ情報を取得する

パラメータ:
  • provider -- プロバイダ名

  • vpn_catalog_name -- VPNカタログ名

戻り値:

vpnカタログ情報

vcc_info()[ソース]

VC Controllerに関する情報の取得

return:

VCCに関する情報

結果サンプル

{
  { "host": "10.0.0.1:443" },
  { "vault_url": "https://10.0.0.1:8443" },
  { "docker_registry": {
    "official":  "10.0.0.1:5000",
    "user":  "10.0.0.1:5001"
  }
}
property verbose

VCP Lib:verbose

version()[ソース]

VCP Libのバージョン出力

version_dict() dict[ソース]

VCP Libのバージョン出力(dict)

class VcpSpecClass(config_dir)[ソース]

VCP 各Cloud毎のResource(spec) 情報管理用

find_spec(provider_name, flavor)[ソース]

プロバイダ名と、flavorからspec情報を生成

パラメータ:
  • provider_name -- real cloud provider名

  • flavor -- フレーバー名(ex small, medium, large)

戻り値:

スペックリソースobject

class VcpUnitClass(ugroup, unit)[ソース]

VcpUnitクラス(VCP Lib::VcUnit & VCP Lib::VcNode相当)

サンプルコード

...
ugroup = sdk.create_ugroup('UnitGroup名', 'compute|storage')
unit = ugroup.create_unit('Unit名', spec)

# Unit内のnodeをpower off
unit.power_off_nodes()

# Unit内のnodeをpower on
unit.power_on_nodes()

# Node追加
unit.add_nodes(ノード数)

# Node削除
unit.delete_nodes(ノード数)

# Node情報出力
unit.df_nodes()

# Node情報取得
ips = unit.find_ip_adresses()
nodes = unit.find_nodes()
add_nodes(num_add_nodes=1, ip_addresses=[], ip_address=None, mac_addresses=[], mac_address=None, wait_for=True, verbose=0, privileged=False)[ソース]

Nodeの追加

パラメータ:
  • num_add_nodes -- 追加起動Node数

  • ip_addresses -- 追加起動するNodeのIPアドレス(配列)

  • ip_address -- 追加起動するNodeのIPアドレス

  • mac_addresses -- 追加起動するNodeのMACアドレス(配列)

  • mac_address -- 追加起動するNodeのMACアドレス

  • wait_for -- nodeの起動待ち条件(True: 待つ)

  • verbose -- verbose=0 でverboseなし

  • privileged -- 特権モードを指定する場合は True、指定しない場合は False (デフォルト)

戻り値:

node情報(vcplib::VcNode配列)

注釈

  • ip_address と ip_addresses を両方指定すると和集合として扱う

  • ip_address と ip_addresses を storageタイプのunitに指定するとエラーとする

  • ip_addresses, ip_address のいずれかを指定した場合、num_add_nodes を無視する

delete_nodes(num_delete_nodes=None, node_no=None, cloud_instance_id=None, ip_addresses=None, ip_address=None, wait_for=True, verbose=0, privileged=False)[ソース]

検索条件にマッチするNode削除

パラメータ:
  • num_delete_nodes -- 削除対象Node最大数

  • node_no -- 検索条件node_no

  • cloud_instance_id -- 検索条件cloud_instance_id

  • ip_addresses -- 検索条件cloud_instance_address(配列)

  • ip_address -- 検索条件cloud_instance_address

  • wait_for -- nodeの削除待ち条件(True: 待つ)

  • verbose -- verbose=0 でverboseなし

  • privileged -- 特権モードを指定する場合は True、指定しない場合は False (デフォルト)

戻り値:

node情報(vcplib::VcNode配列)

注釈

  • 検索条件は、最大1個のみ指定可能

  • 検索条件未指定の場合は、num_delete_nodes=1 のみ指定と同様

  • wait_for=False の場合、複数nodeの削除はできない。(node削除は1個ずつ)

df_nodes(privileged=False)[ソース]

node一覧(DataFrame形式)

パラメータ:

privileged -- 特権モードを指定する場合は True、指定しない場合は False (デフォルト)

find_nodes(node_id='', node_state='', node_no='', ip_addresses=[], ip_address=None, cloud_instance_id=None, mapper=None, privileged=False)[ソース]

検索条件にマッチするnode検索

パラメータ:
  • node_id -- 検索条件node_id

  • node_state -- 検索条件node_state

  • node_no -- 検索条件node_no

  • ip_addresses -- 検索条件cloud_instance_addresses

  • ip_address -- 検索条件cloud_instance_address

  • cloud_instance_id -- 検索条件cloud_instance_id

  • mapper -- 検索結果のnodeに適用する関数

  • privileged -- 特権モードを指定する場合は True、指定しない場合は False (デフォルト)

戻り値:

node情報(vcplib::VcNode配列)

注釈

  • ip_address と ip_addresses を両方指定すると和集合として扱う

  • 検索条件指定が複数あれば、AND条件とする

  • 複数nodeの場合、node_no の昇順にsortした結果を返す

property name

VCP Lib::VcUnit の name

power_off_nodes(num_power_off_nodes=None, node_no=None, cloud_instance_id=None, ip_addresses=None, ip_address=None, wait_for=True, privileged=False, verbose=0)[ソース]

検索条件にマッチするNodeのInstanceのpower off

パラメータ:
  • num_power_off_nodes -- power off対象Node最大数

  • node_no -- 検索条件node_no

  • cloud_instance_id -- 検索条件cloud_instance_id

  • ip_addresses -- 検索条件cloud_instance_address(配列)

  • ip_address -- 検索条件cloud_instance_address

  • wait_for -- nodeの監視開始待ち条件(True: 待つ)

  • privileged -- 特権モードを指定する場合は True、指定しない場合は False (デフォルト)

  • verbose -- verbose=0 でverboseなし

戻り値:

node情報(vcplib::VcNode配列)

注釈

  • 検索条件は、最大1個のみ指定可能

  • 検索条件未指定の場合は、num_power_off_nodes=1 のみ指定と同様

  • wait_for=False の場合、複数nodeのpower offはできない。(node power offは1個ずつ)

power_on_nodes(num_power_on_nodes=None, node_no=None, cloud_instance_id=None, ip_addresses=None, ip_address=None, wait_for=True, privileged=False, verbose=0)[ソース]

検索条件にマッチするNodeのInstanceのpower on

パラメータ:
  • num_power_on_nodes -- power on対象Node最大数

  • node_no -- 検索条件node_no

  • cloud_instance_id -- 検索条件cloud_instance_id

  • ip_addresses -- 検索条件cloud_instance_address(配列)

  • ip_address -- 検索条件cloud_instance_address

  • wait_for -- nodeの監視開始待ち条件(True: 待つ)

  • privileged -- 特権モードを指定する場合は True、指定しない場合は False (デフォルト)

  • verbose -- verbose=0 でverboseなし

戻り値:

node情報(vcplib::VcNode配列)

注釈

  • 検索条件は、最大1個のみ指定可能

  • 検索条件未指定の場合は、num_power_on_nodes=1 のみ指定と同様

  • wait_for=False の場合、複数nodeのpower onはできない。(node power onは1個ずつ)

property state

VCP Lib::VcUnit の state

unwatch()[ソース]

Unit監視停止

注釈

power_off_nodes() の利用を推奨

unwatch_nodes(num_watch_nodes=None, node_no=None, cloud_instance_id=None, ip_addresses=None, ip_address=None, privileged=False, verbose=0)[ソース]

検索条件にマッチするNodeの監視停止

パラメータ:
  • num_watch_nodes -- unwatch対象Node最大数

  • node_no -- 検索条件node_no

  • cloud_instance_id -- 検索条件cloud_instance_id

  • ip_addresses -- 検索条件cloud_instance_address(配列)

  • ip_address -- 検索条件cloud_instance_address

  • privileged -- 特権モードを指定する場合は True、指定しない場合は False (デフォルト)

  • verbose -- verbose=0 でverboseなし

戻り値:

node情報(vcplib::VcNode配列)

注釈

  • power_on_nodes の利用を推奨

watch(wait_for=True)[ソース]

Unit監視開始

パラメータ:

wait_for -- nodeの削除待ち条件(True: 待つ)

注釈

power_on_nodes() の利用を推奨

watch_nodes(num_watch_nodes=None, node_no=None, cloud_instance_id=None, ip_addresses=None, ip_address=None, wait_for=True, privileged=False, verbose=0)[ソース]

検索条件にマッチするNodeの監視開始

パラメータ:
  • num_watch_nodes -- watch対象Node最大数

  • node_no -- 検索条件node_no

  • cloud_instance_id -- 検索条件cloud_instance_id

  • ip_addresses -- 検索条件cloud_instance_address(配列)

  • ip_address -- 検索条件cloud_instance_address

  • wait_for -- nodeの監視開始待ち条件(True: 待つ)

  • privileged -- 特権モードを指定する場合は True、指定しない場合は False (デフォルト)

  • verbose -- verbose=0 でverboseなし

戻り値:

node情報(vcplib::VcNode配列)

注釈

  • power_off_nodes の利用を推奨

class VcpUnitGroupClass(vc=None, vcp_config='')[ソース]

VcpUnitGroupClassクラス(VCLIB::Vc相当) サンプルコード

# 初期化
sdk = VcpSDK('アクセストークン',
            config_dir="vcp_config.yml, vcp_flavor.yml のdirectory")
spec = sdk.get_spec('プロバイダ名', 'flavor名')
# UnitGroup作成
ugroup = sdk.create_ugroup('UnitGroup名', 'compute|storage')

# Unit作成
unit = ugroup.create_unit('Unit名', spec)

# Unit削除
ugroup.delete_units('Unit名')

# 各種情報出力
ugroup.df_units()
ugroup.df_nodes()

# 各種情報取得
ips = ugroup.find_ip_address()
units = ugroup.find_units()
unit = ugroup.get_unit('Unit名')
nodes = ugroup.find_nodes()

# UnitGroup削除
ugroup.cleanup()

# UnitGroupの所有者変更
ugroup.change_owner("new_owner")
change_owner(new_owner, privileged=False)[ソース]

VCの所有者変更

パラメータ:

new_owner -- 新しい所有者

cleanup(wait_for=True, privileged=False)[ソース]

VC初期化(Vc配下の全てのUnitとNodeを削除)

パラメータ:
  • privileged -- 特権モードを指定する場合は True、指定しない場合は False (デフォルト)

  • wait_for -- nodeの削除待ち条件(True: 待つ)

create_unit(unit_name, spec, wait_for=True, privileged=False, verbose=-1)[ソース]

Unit作成

パラメータ:
  • unit_name -- 起動Unit名

  • spec -- 起動spec情報

  • wait_for -- nodeの起動待ち条件(True: 待つ)

  • privileged -- 特権モードを指定する場合は True、指定しない場合は False (デフォルト)

  • verbose -- verbose=0 でverboseなし

戻り値:

Unit情報(vcpsdk::VcpUnit)

delete_units(unit_name, wait_for=True, force=False, privileged=False, verbose=0)[ソース]

検索条件にマッチするUnit削除

パラメータ:
  • name -- 検索条件Unit名

  • wait_for -- nodeの削除待ち条件(True: 待つ)

  • force -- force=Trueで、配下にnodeが存在してもnode毎削除する

  • privileged -- 特権モードを指定する場合は True、指定しない場合は False (デフォルト)

  • verbose -- verbose=0 でverboseなし

df_nodes(privileged=False)[ソース]

node一覧(DataFrame形式)

パラメータ:

privileged -- 特権モードを指定する場合は True、指定しない場合は False (デフォルト)

df_units(privileged=False)[ソース]

unit一覧(DataFrame形式) :param privileged: 特権モードを指定する場合は True、指定しない場合は False (デフォルト)

find_nodes(unit_name='', node_id='', node_state='', node_no='', ip_addresses=[], ip_address=None, cloud_instance_id=None, mapper=None, privileged=False)[ソース]

検索条件にマッチするnode検索

パラメータ:
  • unit_name -- 検索条件unit名

  • node_id -- 検索条件node_id

  • node_state -- 検索条件node_state

  • node_no -- 検索条件node_no

  • ip_addresses -- 検索条件cloud_instance_addresses(配列)

  • ip_address -- 検索条件cloud_instance_address

  • cloud_instance_id -- 検索条件cloud_instance_id

  • mapper -- 検索結果のnodeに適用する関数

  • privileged -- 特権モードを指定する場合は True、指定しない場合は False (デフォルト)

戻り値:

node情報(vcplib::VcNode配列)

注釈

  • ip_address と ip_addresses を両方指定すると和集合として扱う

  • 検索条件指定が複数あれば、AND条件とする

find_units(unit_name='', privileged=False)[ソース]

検索条件にマッチするunit検索

パラメータ:
  • unit_name -- 検索条件Unit名

  • privileged -- 特権モードを指定する場合は True、指定しない場合は False (デフォルト)

戻り値:

VcpUnit情報

注釈

  • 検索条件指定がない場合、UnitGroup内の全てのUnitを返す

get_unit(unit_name, privileged=False)[ソース]

unit名を指定してunit取得

パラメータ:
  • unit_name -- ユニット名

  • privileged -- 特権モードを指定する場合は True、指定しない場合は False (デフォルト)

戻り値:

Unit情報(vcpsdk::VcpUnitClass)

property name

Unit groupの名前を取得する

property owner

vcplib::Vcの owner

property state

vcplib::Vcの state

update_ugroup_name(ugroup_name, ugroup_type='compute', privileged=False)[ソース]

UnitGroup名を設定

パラメータ:
  • ugroup_name -- unitGroup名

  • ugroup_type -- compute | storage

  • privileged -- 特権モードを指定する場合は True、指定しない場合は False (デフォルト)

2.2. SDK plugins for AWS (vcpsdk/plugins/aws)

class VcpSpecResourceAws(provider_name, flavor, config_dir)[ソース]

サンプルコード

spec = sdk.get_spec("aws", "small")
#
# 変更できること
#
# spec.num_nodes = 1
# spec.params_v = ['/opt:/opt']
# spec.params_e = ['USER_NAME=test']
# spec.ip_addresses = ['起動するnodeの静的なIPアドレス']

# aws依存パラメータ
#   https://www.terraform.io/docs/providers/aws/index.html
# spec.instance_type = 'm4.large'
# spec.volume_size = 40
# spec.volume_type = "standard" # standard|io1|gp2|sc1|st1

# 追加で使用するVolume
# spec.disks = ['vol-08cbb04b35c8c9545']    # volume_id 指定
# or
# my_disks = disk_unit.find_nodes()
# spec.disks = [my_disks[0]]   # VC disk指定

# cloud上のタグ設定
# spec.set_tag('key1', 'value1')
# spec.set_tag('key2', 'value2')

# cloud上のAMIイメージ設定
# spec.cloud_image = 'niivcp-20170616'

# base containerにssh loginするためのssh公開鍵情報を設定
spec.set_ssh_pubkey('tmp/id_rsa.pub')
cci(name)[ソース]

CCI生成

パラメータ:

name -- unit名

戻り値:

CCI文字列

property cloud_image

AWSに依存するAMIのイメージ名

property disks

AWSに依存するEBS volume id

property instance_type

AWSに依存するinstance_type

注釈

  • VCP SDK flavorで設定可能

property ip_addresses

AWSのVPC上の静的ip_address_list

property num_nodes

起動するnode数

version = '1.2+20191001'
property volume_size

AWSに依存するvolume_size (単位:GB)

注釈

  • VCP SDK flavorで設定可能

property volume_type

AWSに依存するvolume_type

注釈

  • VCP SDK flavorで設定可能

2.3. SDK plugins for Azure (vcpsdk/plugins/azure)

class VcpSpecResourceAzure(provider_name, flavor, config_dir)[ソース]

サンプルコード

spec = sdk.get_spec("azure", "small")
#
# 変更できること
#
# spec.num_nodes = 1
# spec.params_v = ['/opt:/opt']
# spec.params_e = ['USER_NAME=test']
# spec.ip_addresses = ['起動するnodeの静的なIPアドレス']

# Azure 依存パラメータ
#   https://www.terraform.io/docs/providers/azurerm/index.html
# spec.vm_size = 'Standard_LRS' # Standard_LRS|Premium_LRS ...
# spec.disk_size_gb = 40
# spec.managed_disk_type = "standard" # standard|io1|gp2|sc1|st1

# 追加で使用するVolume
# spec.disks = ['azure-volume-abc']
# or
# my_disks = disk_unit.find_nodes()
# spec.disks = [my_disks[0]]   # VC disk指定

# cloud上のイメージ設定
# spec.cloud_image = 'niivcp-20170616'

# cloud上のタグ設定
spec.set_tag('key1', 'value1')
spec.set_tag('key2', 'value2')

# base containerにssh loginするためのssh公開鍵情報を設定
spec.set_ssh_pubkey('tmp/id_rsa.pub')
cci(name)[ソース]

CCI生成

パラメータ:

name -- unit名

戻り値:

CCI文字列

property cloud_image

Azureに依存する cloud_image

property disk_size_gb

Azureに依存する disk_size_gb (単位:GB)

注釈

  • VCP SDK flavorで設定可能

property disks

Azureに依存する ext_managed_disk

property ip_addresses
property managed_disk_type

Azureに依存する managed_disk_type

注釈

  • VCP SDK flavorで設定可能

property num_nodes

起動するnode数

version = '1.2+20191001'
property vm_size

Azureに依存する vm_size

注釈

  • VCP SDK flavorで設定可能

2.4. SDK plugins for Sakura (vcpsdk/plugins/sakura)

class VcpSpecResourceSakura(provider_name, flavor, config_dir)[ソース]

サンプルコード

spec = sdk.get_spec("sakura", "small")

#
# 変更できること
#
# spec.num_nodes = 1
# spec.params_v = ['/opt:/opt']
# spec.params_e = ['USER_NAME=test']
# spec.ip_addresses = ['起動するnodeの静的なIPアドレス']

# さくらのクラウド依存
#   https://sacloud.github.io/terraform-provider-sakuracloud/
# spec.num_cores = 1
# spec.memory = 100
# spec.image = "vcp/base:1.1"
# spec.sakuracloud_disk_plan = 'ssd' # or 'hdd'
# spec.sakuracloud_disk_size = 100

# cloud上のVMイメージ設定
# spec.cloud_image = 'niivcp-20170616'

# base containerにssh loginするためのssh公開鍵情報を設定
spec.set_ssh_pubkey('tmp/id_rsa.pub')
cci(name)[ソース]

CCI生成

パラメータ:

name -- unit名

戻り値:

CCI文字列

property cloud_image

Sakuraのクラウドに依存するcloud_image

property disks

Sakuraに依存するdisk id

property ip_addresses

SakuraのVPC上の静的ip_address_list

property memory

Sakuraのクラウドに依存する memory

注釈

  • VCP SDK flavorで設定可能

property num_cores

Sakuraのクラウドに依存する num_cores

注釈

  • VCP SDK flavorで設定可能

property sakuracloud_disk_plan

Sakuraのクラウドに依存する sakuracloud_disk_plan

注釈

  • VCP SDK flavorで設定可能

property sakuracloud_disk_size

Sakuraのクラウドに依存する sakuracloud_disk_size (単位:GB)

注釈

  • VCP SDK flavorで設定可能

version = '1.1+20191001'

2.5. SDK plugins for AIC(vcpsdk/plugins/aic)

class VcpSpecResourceAic(provider_name, flavor, config_dir)[ソース]

サンプルコード

spec = sdk.get_spec("aic", "default")
#
# 変更できること
#
# spec.num_nodes = 1
# spec.flavor_name = 'cn000' # AIC/ABCの環境依存
# cloud上のVMイメージ設定
# spec.cloud_image = 'niivcp-20170616'
# base containerにssh loginするためのssh公開鍵情報を設定
spec.set_ssh_pubkey('tmp/id_rsa.pub')
cci(name)[ソース]

CCI生成

パラメータ:

name -- unit名

戻り値:

CCI文字列

property cloud_image

AICに依存するcloud_image

property flavor_name

AICに依存するフレーバー名

注釈

  • VCP SDK flavorで設定可能

property ip_addresses
property num_nodes

起動するnode数

version = '1.2+20191001'

2.6. SDK plugins for ABC (vcpsdk/plugins/abc)

class VcpSpecResourceAbc(provider_name, flavor, config_dir)[ソース]

サンプルコード

spec = sdk.get_spec("abc", "default")
#
# 変更できること
#
# spec.num_nodes = 1
# spec.flavor_name = 'cn000' # AIC/ABCの環境依存
# cloud上のVMイメージ設定
# spec.cloud_image = 'niivcp-20170616'
# base containerにssh loginするためのssh公開鍵情報を設定
spec.set_ssh_pubkey('tmp/id_rsa.pub')
cci(name)[ソース]

CCI生成

パラメータ:

name -- unit名

戻り値:

CCI文字列

property cloud_image

ABCに依存するcloud_image

property flavor_name

AICに依存するフレーバー名

注釈

  • VCP SDK flavorで設定可能

property ip_addresses
property num_nodes

起動するnode数

version = '1.3+20190408'

2.7. SDK plugins for GCP (vcpsdk/plugins/gcp)

class VcpSpecResourceGcp(provider_name, flavor, config_dir)[ソース]

サンプルコード

spec = sdk.get_spec("gcp", "small")
#
# 変更できること
#
# spec.num_nodes = 1
# spec.params_v = ['/opt:/opt']
# spec.params_e = ['USER_NAME=test']
# spec.ip_addresses = ['起動するnodeの静的なIPアドレス']

# Google Cloud Platform 依存
#   https://www.terraform.io/docs/providers/google/index.html
# spec.machine_type = 'n1-standard-1'  # f1-micro|n1-standard-1|...
# spec.disk_size_gb = 40
# spec.disk_type = "pd-standard" # pd-standard|pd-sd|...

# 追加で使用するVolume
# spec.disks = ['vol-08cbb04b35c8c9545']

# cloud上のGCPイメージ設定
# spec.cloud_image = 'niivcp-20170616'

# base containerにssh loginするためのssh公開鍵情報を設定
spec.set_ssh_pubkey('tmp/id_rsa.pub')
cci(name)[ソース]

CCI生成

パラメータ:

name -- unit名

戻り値:

CCI文字列

property cloud_image

GCPに依存するcloud_image

property disk_size_gb

GCPに依存するdisk_size_gb (単位:GB)

注釈

  • VCP SDK flavorで設定可能

property disk_type

GCPに依存するdisk_type

注釈

  • VCP SDK flavorで設定可能

property disks

GCPに依存するdisk

property ip_addresses

GCPのVPC上の静的ip_address_list

property machine_type

GCPに依存するmachine_type

注釈

  • VCP SDK flavorで設定可能

property num_nodes

起動するnode数

version = '1.0+20190408'

2.8. SDK plugins for Onpremises (vcpsdk/plugins/onpremises)

class VcpSpecResourceOnpremises(provider_name, flavor, config_dir)[ソース]

サンプルコード

spec = sdk.get_spec("onpremises", "default")
#
# 変更できること
#
spec.network_if = 'eth9'
spec.user_name = 'ubuntu'   # ssh login user
spec.ip_addresses = ['起動するnodeの静的なIPアドレス']

# base containerにssh loginするためのssh公開鍵情報を設定
spec.set_ssh_pubkey('tmp/id_rsa.pub')
cci(name)[ソース]

CCI生成

パラメータ:

name -- unit名

戻り値:

CCI文字列

property ip_addresses

onpremisesに依存する ip_address_list

property network_if

onpremisesに依存する network_if

property user_name

onpremisesに依存する ssh login名

version = '1.0+20190408'

2.9. SDK plugins for AWS Disk (vcpsdk/plugins/aws_disk)

class VcpSpecResourceAwsDisk(provider_name, flavor, config_dir)[ソース]

サンプルコード

spec = sdk.get_spec("aws_disk", "small")
#
# 変更できること
#

# aws 依存パラメータ
#   https://www.terraform.io/docs/providers/aws/index.html
# spec.cloud_image = 'AMI-XXXXXX'
# spec.num_disks = 1
# spec.type = "standard" # standard|io1|gp2|sc1|st1
# spec.size = 40

# cloud上のタグ設定
# spec.set_tag('key1', 'value1')
# spec.set_tag('key2', 'value2')

# cloud上のsnapshot名
# spec.cloud_image = 'niivcp-20170616'
cci(name)[ソース]

CCI生成

パラメータ:

name -- unit名

戻り値:

CCI文字列

property cloud_image

AWSに依存するAMIのイメージ名

property size

AWSに依存するdisk size (単位:GB)

注釈

  • VCP SDK flavorで設定可能

property type

AWSに依存するdisk type

注釈

  • VCP SDK flavorで設定可能

version = '1.0+20190408'

2.10. SDK plugins for Azure Disk (vcpsdk/plugins/azure_disk)

class VcpSpecResourceAzureDisk(provider_name, flavor, config_dir)[ソース]

サンプルコード

spec = sdk.get_spec("azure_disk", "small")
#
# 変更できること
#
# spec.num_disks = 1

# Azure 依存パラメータ
#   https://www.terraform.io/docs/providers/azurerm/index.html
# spec.storage_account_type = "Standard_LRS"
# spec.disk_size_gb = 40

# cloud上のAzureイメージ名
# spec.cloud_image= 'niivcp-xxxx'

# cloud上のタグ設定
# spec.set_tag('key1', 'value1')
# spec.set_tag('key2', 'value2')
cci(name)[ソース]

CCI生成

パラメータ:

name -- unit名

戻り値:

CCI文字列

property cloud_image

Azureに依存する cloud_image

property disk_size_gb

Azureに依存するsize (単位:GB)

注釈

  • VCP SDK flavorで設定可能

property storage_account_type

Azureに依存するdisk type

注釈

  • VCP SDK flavorで設定可能

version = '1.0+20190408'

2.11. SDK plugins for Sakura Disk (vcpsdk/plugins/sakura_disk)

class VcpSpecResourceSakuraDisk(provider_name, flavor, config_dir)[ソース]

サンプルコード

spec = sdk.get_spec("sakura_disk", "small")
#
# 変更できること
#
# spec.num_disks = 1

# さくらのクラウド依存
#   https://sacloud.github.io/terraform-provider-sakuracloud/
# spec.cloud_image = 'archive-001'
# spec.sakuracloud_disk_plan = "ssd" # ssd/hdd
# spec.sakuracloud_disk_size = 40 # 20GB,40GB,100GB,250GB,500GB,1TB
cci(name)[ソース]

CCI生成

パラメータ:

name -- unit名

戻り値:

CCI文字列

property cloud_image

Sakuraに依存するアーカイブのイメージ名

property sakuracloud_disk_plan

Sakuraに依存するdisk type

注釈

  • VCP SDK flavorで設定可能

property sakuracloud_disk_size

Sakuraに依存するdisk size

注釈

  • VCP SDK flavorで設定可能

version = '1.0+20190930'

2.12. SDK plugins for AWS Spot Instance (vcpsdk/plugins/aws_spot)

class VcpSpecResourceAwsSpot(provider_name, flavor, config_dir)[ソース]

サンプルコード

spec = sdk.get_spec("aws_spot", "small")
#
# 変更できること
#
# spec.num_nodes = 1
# spec.params_v = ['/opt:/opt']
# spec.params_e = ['USER_NAME=test']
# spec.ip_addresses = ['起動するnodeの静的なIPアドレス']

# aws 依存パラメータ
#   https://www.terraform.io/docs/providers/aws/index.html
# spec.instance_type = 'm4.large'
# spec.volume_size = 40
# spec.volume_type = "standard" # standard|io1|gp2|sc1|st1

# spot instace専用
# spec.spot_type = 'one-time'   # one-time: spotがなくなったらVcNode終了
                                # persistent: spotがなくなったらVcNode一時停止
# spec.spot_price = "0.5"       # スポットインスタンスの1時間当たりの料金(USドル)
# spec.block_duration_minutes = 300 # スポットインスタンスの継続時間 60, 120, 180, 240, 300, or 360

# 追加で使用するVolume
# spec.disks = ['vol-08cbb04b35c8c9545']    # volume_id 指定
# or
# my_disks = disk_unit.find_nodes()
# spec.disks = [my_disks[0]]   # VC disk指定

# cloud上のタグ設定(spot requestに付与)
# spec.set_tag('key1', 'value1')
# spec.set_tag('key2', 'value2')

# cloud上のAMIイメージ設定
# spec.cloud_image = 'niivcp-20170616'

# base containerにssh loginするためのssh公開鍵情報を設定
spec.set_ssh_pubkey('tmp/id_rsa.pub')
property block_duration_minutes

AWSに依存するblock_duration_minutes

cci(name)[ソース]

CCI生成

パラメータ:

name -- unit名

戻り値:

CCI文字列

property spot_price

AWSに依存するspot_price - スポットインスタンスの1時間当たりの料金(USドル)

property spot_type

AWSに依存するspot_type

注釈

  • one-time | persistent

version = '1.1+20191001'

2.13. SDK plugins for VMware (vcpsdk/plugins/vmware)

class VcpSpecResourceVmware(provider_name, flavor, config_dir)[ソース]

サンプルコード

spec = sdk.get_spec("vmware", "small")
#
# 変更できること
#
# spec.num_nodes = 1
# spec.params_v = ['/opt:/opt']
# spec.params_e = ['USER_NAME=test']
# spec.ip_addresses = ['起動するnodeの静的なIPアドレス']

# VMware 依存
#   https://www.terraform.io/docs/providers/vsphere/index.html
# spec.num_cpus = 4
# spec.memory = 1024 # MB
# spec.disk_size = 40

# クラウドイメージ(テンプレートとするVMWareの仮想マシンの名前)
# spec.cloud_image = 'niivcp-20181216'

# base containerにssh loginするためのssh公開鍵情報を設定
spec.set_ssh_pubkey('tmp/id_rsa.pub')
cci(name)[ソース]

CCI生成

パラメータ:

name -- unit名

戻り値:

CCI文字列

property cloud_image

VMwareに依存するクラウドイメージ(テンプレートとするVMWareの仮想マシンの名前)

property disk_size

VMwareに依存するdisk_size (単位:GB)

注釈

  • VCP SDK flavorで設定可能

property ip_addresses

VMwareのVPC上の静的ip_address_list

property mac_addresses

VMwareのmac_address_list

property memory

VMwareに依存するmemory

注釈

  • VCP SDK flavorで設定可能

property num_cpus

VMwareに依存するnum_cpus

注釈

  • VCP SDK flavorで設定可能

property num_nodes

起動するnode数

version = '1.1+20191001'

2.14. SDK plugins for Hokudai (vcpsdk/plugins/hokudai)

class VcpSpecResourceHokudai(provider_name, flavor, config_dir)[ソース]

サンプルコード

spec = sdk.get_spec("hokudai", "default")
#
# 変更できること
#
# spec.num_nodes = 1

# 北海道大学ハイパフォーマンスインタークラウド サーバサービス依存
# spec.flavor_name = 'cn000'
# spec.volume_size =  40 # G

# cloud上のVMイメージ設定
# spec.cloud_image = 'niivcp-20170616'
# base containerにssh loginするためのssh公開鍵情報を設定
spec.set_ssh_pubkey('tmp/id_rsa.pub')
cci(name)[ソース]

CCI生成

パラメータ:

name -- unit名

戻り値:

CCI文字列

property cloud_image

北大Cloudに依存するcloud_image

property flavor_name

北大Cloudに依存するフレーバー名

注釈

  • VCP SDK flavorで設定可能

property ip_addresses
property num_nodes

起動するnode数

version = '1.1+20191001'
property volume_size

北大Cloudに依存するディスクサイズ (単位:GB)

注釈

  • VCP SDK flavorで設定可能

2.15. SDK plugins for Oracle Cloud (vcpsdk/plugins/oracle)

class VcpSpecResourceOracle(provider_name, flavor, config_dir)[ソース]

サンプルコード

spec = sdk.get_spec("oracle", "small")

#
# 変更できること
#
# spec.num_nodes = 1
# spec.params_v = ['/opt:/opt']
# spec.params_e = ['USER_NAME=test']
# spec.ip_addresses = ['起動するnodeの静的なIPアドレス']

# OracleCloud依存
#   https://docs.oracle.com/cd/E97706_01/Content/Compute/References/computeshapes.htm
# spec.shape = 'VM.Standard.E2.1.Micro'
# spec.image = "vcp/base:1.6.1"
# spec.boot_volume_size_in_gbs = 100

# 追加で使用するVolume
# spec.disks = ['ocid1.volume.oc1.ap-tokyo-1.ab...']    # volume_id 指定
# or
# my_disks = disk_unit.find_nodes()
# spec.disks = [my_disks[0]]   # VC disk指定

# cloud上のVMイメージ設定
# spec.cloud_image = 'niivcp-20170616'

# cloud上のタグ設定
# spec.set_tag('key1', 'value1')
# spec.set_tag('key2', 'value2')

# base containerにssh loginするためのssh公開鍵情報を設定
spec.set_ssh_pubkey('tmp/id_rsa.pub')
property boot_volume_size_in_gbs

OracleCloudに依存する boot_volume_size_in_gbs (単位:GB)

注釈

  • VCP SDK flavorで設定可能

cci(name)[ソース]

CCI生成

パラメータ:

name -- unit名

戻り値:

CCI文字列

property cloud_image

OracleCloudに依存するcloud_image

property disks

Oracleに依存するBlock Volume のOCID

property ip_addresses

OracleCloudのVPC上の静的ip_address_list

property shape

OracleCloudに依存する shape

注釈

  • VCP SDK flavorで設定可能

version = '1.0+20200331'

2.16. SDK plugins for Oracle Cloud Disk (vcpsdk/plugins/oracle_disk)

class VcpSpecResourceOracleDisk(provider_name, flavor, config_dir)[ソース]

サンプルコード

spec = sdk.get_spec("oracle_disk", "small")
#
# 変更できること
#
# spec.num_disks = 1

# OracleCloud のコピー元の Volume の OCID を指定
# spec.cloud_image = 'ocid1.volume.oc1.region.abxhi....'

# spec.size_in_gbs = 50 # 50 GB and 32768 GB
cci(name)[ソース]

CCI生成

パラメータ:

name -- unit名

戻り値:

CCI文字列

property cloud_image

OracleCloudに依存するコピー元の Volume の OCID

property size_in_gbs

OracleCloudに依存するdisk size (単位:GB)

注釈

  • VCP SDK flavorで設定可能

version = '1.0+20200331'

2.17. SDK plugins for Chameleon Cloud (vcpsdk/plugins/chameleon)

class VcpSpecResourceChameleon(provider_name, flavor, config_dir)[ソース]

サンプルコード

# chameleon の flavor は、 予約時に指定済みのため、
# "default" 固定
spec = sdk.get_chameleon_spec("chameleon", "default")

#
# 変更できること
#
# spec.num_nodes = 1
# cloud上のVMイメージ設定
# spec.cloud_image = 'CC-Ubuntu18.04'

# 予約ID
spec.reservation = "予約時に取得した予約識別子文字列"

# base containerにssh loginするためのssh公開鍵情報を設定
spec.set_ssh_pubkey('tmp/id_rsa.pub')
cci(name)[ソース]

CCI生成

パラメータ:

name -- unit名

戻り値:

CCI文字列

property cloud_image

chameleonに依存するAMIのイメージ名

property ip_addresses

chameleonのVPC上の静的ip_address_list

注釈

chameleon の sharedwan1 のネットワークを使用しているときは、静的IPアドレスを指定できない

property num_nodes

起動するnode数

property reservation

chameleon のインスタンス予約時の予約ID

version = '1.0+20200831'

2.18. SDK plugins for Chameleon Cloud extension (vcpsdk/plugins/chameleon_ext)

class VcpChameleonOpenrc(provider_name, config_dir, token, verbose=0)[ソース]

Chamelenon Extentsions の BASEクラス (内部クラスであるためAPI上は無視してよい)

class VcpExtResourceChameleon(provider_name, config_dir, token, verbose=0)[ソース]

Chameleon クラウドインスタンスの予約を行うクラス

サンプルコード

# vpnカタログ情報を取得
vpn_catalog_name = "default"
vpn_catalog = vcpsdk.get_vpn_catalog("chameleon", catalog_name=vpn_catalog_name)

host_ext = vcpsdk.get_extension("chameleon")

# 指定可能項目
node_type = "compute_skylake"
min_instances = 1
max_instances = 3

host_ext.setup(
    node_type,
    start_date=start_date,
    end_date=end_date,
    min_instances=min_instances,
    max_instances=max_instances,
    lease_name_prefix = "S003",
    vpn_catalog=vpn_catalog,
)

# インスタンスの予約
lease_info = host_ext.reserve_host()
lease_info.wait()

print("host_lease_id is {}".format(lease_info.host_lease_id))
print("reservation_id is {}".format(lease_info.reservation_id))
print("status is {}".format(lease_info.status))
reserve_host()[ソース]

クラウドインスタンスの予約を実行する。

戻り値:

クラウドインスタンスの予約結果 ( vcpsdk.plugins.chameleon_ext.VcpExtResourceChameleonHostLeaseInfo )

setup(node_type, start_date=None, end_date=None, min_instances=1, max_instances=1, vcpus=None, memory_mb=None, disk_gb=None, lease_name_prefix=None, vpn_catalog=None)[ソース]

chameleon のホストの予約情報を作成する (実際の予約処理は reserve_host関数で行う)

パラメータ:
  • node_type -- chameleon 上での node_type

  • start_date -- 予約の開始時刻 (タイムゾーンはUTCで YYYY-mm-dd HH:MM 形式) Noneを指定した場合は、呼び出し時の時刻が使われる。

  • end_date -- 予約の終了時刻 (タイムゾーンはUTCで YYYY-mm-dd HH:MM 形式) Noneを指定した場合は、1日後

  • min_instances -- 最小台数

  • max_instances -- 最大台数

  • vcpus -- VCPU数 future use

  • memory_mb -- メモリ容量(MBytes) future use

  • disk_gb -- Disk容量(GBytes) future use

  • lease_name_prefix -- Chameleon のlease 名に付けるprefix

  • vpn_catalog -- VPNカタログ情報

注釈

vcpus, memory_mb, disk_gb の指定は現状の実装では、無視する。

class VcpExtResourceChameleonHostLeaseInfo(provider_name, config_dir, token, verbose=0)[ソース]

Chameleon クラウドインスタンスの予約結果

サンプルコード

# lease idを使って情報取得
info_ext = vcpsdk.get_extension("chameleon_host_lease_info")
info_ext.setup(lease_info.host_lease_id, vpn_catalog)
print(info_ext)

print("host_lease_id is {}".format(info_ext.host_lease_id))
print("reservation_id is {}".format(info_ext.reservation_id))
print("status is {}".format(info_ext.status))

# 予約の延長
info_ext.extend()

# 予約の削除
info_ext.delete()

# 予約の完了まで待つ
info_ext.wait()
delete()[ソース]

ホストの予約を削除する。

extend(weeks=None, days=None, hours=None)[ソース]

予約を延長する。 weeks, days, hours のどれか一つを選んで指定する。複数の引数が指定された場合、単位が長い方の指定を優先する。

引数を指定しない場合、1日予約を延長する

chameleonの仕様により、予約の延長ができるのは予約が切れる48時間まえ。 その時間外に呼ぶと予約延長操作は失敗する。 予約に失敗した場合は例外を送出する。

パラメータ:
  • weeks -- 延長する週

  • days -- 延長する日数

  • hours -- 延長する時間

property host_lease_id

lease IDを返す。

property reservation_id

reservation IDを返す。CCIのreservationに指定する。

setup(host_lease_id, vpn_catalog)[ソース]

chameleon のホストの予約情報を設定する

パラメータ:
  • host_lease_id -- ホストの予約情報識別子

  • vpn_catalog -- VPNカタログ情報

property status

lease状態を返す

戻り値:

leaseの状態

  • STARTING 予約情報を作成中

  • PENDING 予約開始時刻が到来していない

  • ACTIVE 予約開始時刻が到来した

  • ERROR エラーが発生した

update()[ソース]

ホストの予約情報を再取得する。

wait()[ソース]

leaseの状態(status)がACTIVEになるまで待つ

class VcpExtResourceChameleonNetwork(provider_name, config_dir, token, verbose=0)[ソース]

chameleon上でvlanセグメントを予約し、ネットワークを構築する。sharedwan1 を使用する場合は不要。

サンプルコード

# vpnカタログ情報を取得
vpn_catalog_name = "default"
vpn_catalog = vcpsdk.get_vpn_catalog("chameleon", catalog_name=vpn_catalog_name)

# Chameleon Network の予約用 extension を生成
network_ext = vcpsdk.get_ext("chameleon_network")
network_ext.setup(vpn_catalog)

# 期間 %Y-%m-d %H:%M (省略可) を指定して、Chameleon Network を予約
#    start_date = start_dt.strftime("%Y-%m-%d %H:%M")
network_ext.create_network(start_date=start_date, end_date=end_date)
create_network(start_date=None, end_date=None)[ソース]

vlanセグメントを予約し、予約できた場合にネットワーク、サブネットを作成する。

network_exists()[ソース]
property network_name
setup(vpn_catalog)[ソース]

chameleon のネットワークの予約情報を作成する

パラメータ:

vpn_catalog -- VPNカタログ情報

2.19. SDK plugins for mdx extension (vcpsdk/plugins/mdx_ext)

class MdxResourceExt(init_token=None, endpoint='https://oprpl.mdx.jp')[ソース]

mdx REST API にアクセスするためのPythonクライアントライブラリ。

mdx REST API による仮想マシンの作成、状態取得、ネットワーク設定などの機能を提供する。

パラメータ:
  • init_token -- mdx ユーザポータルから取得した mdx REST API 認証トークン

  • endpoint -- mdx REST API エンドポイント URL (オプショナル)

add_allow_acl_ipv4_info(allow_acl_spec)[ソース]

指定したセグメントにAllow ACL IPv4を追加する

パラメータ:

allow_acl_spec -- 以下のような、追加するAllow ACL IPv4の仕様

{
  "segment": "ネットワークセグメントID",
  "src_address": "Src IPv4アドレス",
  "src_mask": "Srcマスク",
  "src_port": "Srcポート",
  "dst_address": "Dst IPv4アドレス",
  "dst_mask": "Dstマスクの文字列表現",
  "dst_port": "Dstポートの文字列表現",
  "protocol": "プロトコル"
}
add_allow_acl_ipv6_info(allow_acl_spec)[ソース]

指定したセグメントにAllow ACL IPv6を追加する

パラメータ:

allow_acl_spec -- 以下のような、追加するAllow ACL IPv6の仕様

{
  "segment": "ネットワークセグメントID",
  "src_address": "Src IPv6アドレス",
  "src_mask": "Srcマスク",
  "src_port": "Srcポート",
  "dst_address": "Dst IPv6アドレス",
  "dst_mask": "Dstマスクの文字列表現",
  "dst_port": "Dstポートの文字列表現",
  "protocol": "プロトコル"
}
add_dnat(dnat_spec)[ソース]

指定したセグメントにDNATを追加する

パラメータ:

dnat_spec -- 以下のような DNAT 設定情報

{
  "pool_address": "転送元グローバルIPv4アドレス。プロジェクトの未使用グローバルIPアドレスを指定する。",
  "segment": "ネットワークセグメントID",
  "dst_address": "転送先プライベートIPアドレス。セグメントIPアドレス範囲内のIPアドレスを指定する。"
}
clone_vm(original_vm_name, vm_name, vm_spec, power_on=False, wait_for=True)[ソース]

仮想マシンのクローンを実行する。

パラメータ:
  • original_vm_name -- クローン元仮想マシン名

  • vm_name -- 作成した仮想マシンに付与するマシン名

  • vm_spec -- 仮想マシンの仕様(ハードウェアのカスタマイズ項目)

{
  "vm_name": "仮想マシン名",
  "pack_type": "パックタイプ(※通常プロジェクトの場合に指定) gpu または cpu を指定",
  "pack_num": "パック数(※通常プロジェクトの場合に指定)",
  "gpu": "GPU数(数値を文字列で指定)",
  "network_adapters": [
     {
        "adapter_number": "ネットワーク番号"
        "segment": "ネットワークセグメントID"
     }
  ],
  "storage_network": "ストレージネットワーク"
}
パラメータ:
  • power_on -- クローン後起動する場合 True を指定

  • wait_for -- 仮想マシン起動後、仮想マシンにIPv4アドレスが付与されるまで待つ場合 True を指定 power_on=Falseの場合、Trueを指定しても無効。

戻り値:

仮想マシン情報。詳細は get_vm_info() を参照のこと。

delete_allow_acl_ipv4_info(acl_ipv4_id)[ソース]
パラメータ:

acl_ipv4_id -- 削除対象の Allow ACL IPv4 ID

delete_allow_acl_ipv6_info(acl_ipv6_id)[ソース]
パラメータ:

acl_ipv6_id -- 削除対象の Allow ACL IPv6 ID

delete_dnat(dnat_id)[ソース]

DNATの削除を実行する

パラメータ:

dnat_id -- DNAT ID

deploy_vm(vm_name, vm_spec, wait_for=True) list[ソース]

仮想マシンのデプロイを実行する。wait_forが True の場合、仮想マシンにIPv4アドレスが付与されるまで待つ。

パラメータ:
  • vm_name -- 仮想マシン名 vmname-[1-3] のように指定すると、vmname-1,`vmname-2`,`vmname-3`というように、指定した数分仮想マシンを作成する。

  • vm_spec -- 仮想マシンの仕様(ハードウェアのカスタマイズ項目)

{
  "catalog": "カタログID",
  "disk_size": "仮想ディスクサイズ(GB)",
  "gpu": "GPU数(数値を文字列で指定)",
  "pack_type": "パックタイプ(※通常プロジェクトの場合に指定) gpu または cpu を指定",
  "pack_num": "パック数(※通常プロジェクトの場合に指定)",
  "network_adapters": [
     {
        "adapter_number": "ネットワーク番号"
        "segment": "ネットワークセグメントID"
     }
  ],
  "shared_key": "仮想マシンへのSSH接続用公開鍵の文字列",
  "storage_network": "ストレージネットワーク",
  "template_name": "vCenter上の仮想マシンテンプレート名",
}
パラメータ:

wait_for -- 仮想マシンにIPv4アドレスが付与されるまで待つ場合 True を指定

戻り値:

仮想マシン情報。詳細は get_vm_info() を参照のこと。

destroy_vm(vm_name, wait_for=True)[ソース]

仮想マシンの削除を実行する。事前に仮想マシンを PowerOFF 状態にしておく必要がある。

パラメータ:
  • vm_name -- 仮想マシン名

  • wait_for -- 削除完了を待つ場合 True を指定

dnat_iter()[ソース]
edit_allow_acl_ipv4_info(allow_acl_id, allow_acl_spec)[ソース]

指定したAllow ACL IPv4を編集する

パラメータ:

allow_acl_spec -- 以下のような、登録するAllow ACL IPv4の仕様

{
  "src_address": "Src IPv4アドレス",
  "src_mask": "Srcマスク",
  "src_port": "Srcポート",
  "dst_address": "Dst IPv4アドレス",
  "dst_mask": "Dstマスクの文字列表現",
  "dst_port": "Dstポートの文字列表現",
  "protocol": "プロトコル"
}
edit_allow_acl_ipv6_info(allow_acl_id, allow_acl_spec)[ソース]

指定したAllow ACL IPv6を編集する

パラメータ:

allow_acl_spec -- 以下のような、登録するAllow ACL IPv6の仕様

{
  "src_address": "Src IPv6アドレス",
  "src_mask": "Srcマスク",
  "src_port": "Srcポート",
  "dst_address": "Dst IPv6アドレス",
  "dst_mask": "Dstマスクの文字列表現",
  "dst_port": "Dstポートの文字列表現",
  "protocol": "プロトコル"
}
edit_dnat(dnat_id, dnat_spec)[ソース]

指定したDNAT情報を更新する

パラメータ:
  • dnat_id -- DNAT ID

  • dnat_spec -- 以下のような DNAT 設定情報

{
  "pool_address": "転送元グローバルIPv4アドレス。プロジェクトの未使用グローバルIPアドレスを指定する。",
  "segment": "ネットワークセグメントID",
  "dst_address": "転送先プライベートIPアドレス。セグメントIPアドレス範囲内のIPアドレスを指定する。"
}
get_allow_acl_ipv4_info(segment_id)[ソース]

Allow ACL IPv4情報の取得

パラメータ:

segment_id -- ネットワークセグメントID

戻り値:

以下のような、プロジェクトに属するAllow ACL IPv4の情報のリスト

[
  {
    "uuid": "Allow ACL IPv4 ID",
    "src_address": "Srcアドレス",
    "src_mask":  "Srcマスク",
    "src_port": "Srcポート",
    "dst_address": "Dstアドレス",
    "dst_mask": "Dstマスク",
    "dst_port": "Dstポート",
    "protocol": "プロトコル"
  }
]
get_allow_acl_ipv6_info(segment_id)[ソース]

Allow ACL IPv6情報の取得

パラメータ:

segment_id -- ネットワークセグメントID

戻り値:

以下のような、プロジェクトに属するAllow ACL IPv6の情報のリスト

[
  {
    "uuid": "Allow ACL IPv6 ID",
    "src_address": "Srcアドレス",
    "src_mask":  "Srcマスク",
    "src_port": "Srcポート",
    "dst_address": "Dstアドレス",
    "dst_mask": "Dstマスク",
    "dst_port": "Dstポート",
    "protocol": "プロトコル"
  }
]
get_assignable_global_ipv4()[ソース]
get_assigned_projects()[ソース]

ユーザに紐付いたプロジェクト情報を取得する

戻り値:

以下のような、プロジェクト情報のリスト

[
  {
    "uuid": "機関ID",
    "name": "機関名",
    "projects": [
       {
          "uuid": "プロジェクトID",
          "name": "プロジェクト名",
          "type": "プロジェクトのタイプ",
          "expired": "プロジェクトの期限が切れたか否か (boolean)"
       }
    ]
  }
]
get_current_project()[ソース]

操作対象のmdxのプロジェクトの取得

戻り値:

以下のような、プロジェクト情報

{
   "uuid": "プロジェクトID",
   "name": "プロジェクト名",
   "type": "プロジェクトのタイプ",
   "expired": "プロジェクトの期限が切れたか否か"
}
get_dnat()[ソース]

プロジェクトに属するDNAT情報の取得

戻り値:

以下のような、プロジェクトに属する DNAT 情報のリスト

[
  {
    "uuid": "DNAT ID",
    "pool_address": "転送元グローバルIPv4アドレス",
    "segument": "セグメント名",
    "dst_address": "転送先プライベートIPアドレス"
  }
]
get_project_history()[ソース]

プロジェクト内における操作履歴の情報を取得する

戻り値:

以下のような、プロジェクト操作履歴情報のリスト

[
  {
    "uuid": "操作履歴ID",
    "project": "プロジェクトID",
    "user_name": "操作ユーザ名",
    "type": "操作種別",
    "object_uuid": "操作対象オブジェクトID",
    "object_name": "操作対象オブジェクト名",
    "start_datetime": "開始日付 (YYYY-mm-dd HH:MM:SS)",
    "end_datetime": "終了日付 (YYYY-mm-dd HH:MM:SS)",
    "status": "ステータス",
    "progress": "進捗率",
    "error_message": "エラーメッセージ",
    "error_detail": "エラー詳細"
  }
]
get_segment_summary(segment_id)[ソース]

ネットワークセグメントのサマリ情報を取得する

パラメータ:

segment_id -- ネットワークセグメントID

戻り値:

以下のような、ネットワークセグメントのサマリ情報

{
  "vlan_id": "VLAN ID",
  "vni": "VNI",
  "ip_range": "IPアドレス範囲"
}
get_segments()[ソース]

プロジェクトに紐付いたネットワークセグメント情報を取得する。

戻り値:

以下のような、プロジェクトに紐付いたネットワークセグメント情報のリスト

[
  {
    "uuid": "ネットワークセグメントID",
    "name": "ネットワークセグメント名",
    "default": "プロジェクト作成時に作成されるデフォルトのネットワークセグメントか否か"
  }
]
get_vm_catalogs()[ソース]

プロジェクトに紐づいた仮想マシンデプロイカタログ情報を取得する

戻り値:

以下のような、カタログのリスト

[
  {
    "uuid": "カタログID",
    "name": "カタログ名",
    "type": "カタログのタイプ",
    "template_name": "vCenter上の仮想マシンテンプレート名",
    "os_type": "OS種別",
    "os_name": "OS名",
    "os_version": "OSバージョン",
    "hw_version": "ハードウェアバージョン",
    "description": "説明",
    "login_username": "OSログインユーザ名"
  }
]
get_vm_history(vm_name)[ソース]

仮想マシンの操作履歴情報を取得する

パラメータ:

vm_name -- 仮想マシン名

戻り値:

以下のような、仮想マシン操作履歴情報

[
  {
      "uuid": "操作ID",
      "project": "プロジェクト名",
      "user_name": "ユーザ名",
      "type": "操作種別",
      "object_uuid": "対象ID",
      "object_name": "対象名",
      "start_datetime": "開始日時",
      "end_datetime": "終了日時",
      "status": "ステータス",
      "progress": "進捗",
      "error_message": "エラーメッセージ",
      "error_detail": "エラー詳細"
  }
]
get_vm_info(vm_name)[ソース]

仮想マシンの詳細情報を取得する

パラメータ:

vm_name -- 仮想マシン名

戻り値:

以下のような仮想マシン情報

{
  "name": "仮想マシン名",
  "vm_id": "仮想マシンID",
  "os_type": "OSタイプ",
  "status": "仮想マシンの状態",
  "vmware_tools": [
     {
       "status": "VMware Tools状態",
       "version": "VMware Toolsバージョン"
     }
  ],
  "cpu": "CPU数",
  "memory": "メモリ量の文字列表現",
  "gpu": "GPU数の文字列表現",
  "service_networks": [
    {
      "adapter_number": "ネットワーク番号",
      "ipv4_address": "IPv4アドレスのリスト",
      "ipv6_address": "IPv6アドレスのリスト",
      "segment": "ネットワークセグメント名"
    }
  ],
  "storage_networks": [
    {
      "adapter_number": "ネットワーク番号",
      "ipv4_address": "IPv4アドレスのリスト",
      "ipv6_address": "IPv6アドレスのリスト",
      "type": "ネットワークタイプ"
    }
  ],
  "hard_disks": [
    {
      "disk_number": "仮想ディスク番号",
      "device_key": "仮想ディスクデバイスキー",
      "capacity": "仮想ディスクサイズ",
      "datastore": "データストア名"
    }
  ],
  "dvd_media": "ゲストOSがマウントしているISOイメージ",
  "vcenter": "vCenter名",
  "esxi": "ESXi名",
  "pack_type": "パックタイプ",
  "pack_num": "パック数"
}
get_vm_list()[ソース]

プロジェクトに属する仮想マシン情報を取得する

戻り値:

以下のような、仮想マシン情報のリスト

[
  {
    "uuid": "仮想マシンID",
    "name": "仮想マシン名",
    "status": "仮想マシンのステータス",
    "vcenter": "vCenter名",
    "running_tasks": "実行中のタスクのリスト",
  }
]
power_off_vm(vm_name, wait_for=True)[ソース]

仮想マシンの強制停止 (PowerOFF) を実行する。

パラメータ:
  • vm_name -- 仮想マシン名

  • wait_for -- 強制停止の完了を待つ場合 True を指定

power_on_vm(vm_name, service_level='spot', wait_for=True)[ソース]

仮想マシンの起動 (PowerON) を実行する。

パラメータ:
  • vm_name -- 仮想マシン名

  • wait_for -- 起動の完了を待つ場合 True を指定

power_shutdown_vm(vm_name, wait_for=True)[ソース]

仮想マシンのゲストOSのシャットダウンを実行する。

パラメータ:
  • vm_name -- 仮想マシン名

  • wait_for -- シャットダウンの完了を待つ場合 True を指定

project_history_iter()[ソース]

プロジェクト操作履歴をイテレータとして返す。

reboot_vm(vm_name, wait_for=True)[ソース]

仮想マシンの再起動を実行する。

パラメータ:
  • vm_name -- 仮想マシン名

  • wait_for -- 再起動の完了を待つ場合 True を指定

refresh_token()[ソース]

mdx REST API 認証トークンを更新する

set_current_project_by_name(project_name)[ソース]

操作対象のmdxのプロジェクトをプロジェクト名で設定する

set_current_project_id(project_id)[ソース]

操作対象のmdxのプロジェクトIDを設定する

set_first_password(host, password, ssh_key='~/.ssh/id_ed25519', username='mdxuser')[ソース]
vm_info_iter()[ソース]

仮想マシン一覧をイテレータとして返す。

2.20. SDK plugins for mdx2 extension (vcpsdk/plugins/mdx2)

class VcpSpecResourceMdx2(provider_name, flavor, config_dir)[ソース]

サンプルコード

spec = sdk.get_spec("mdx2", "default")
#
# 変更できること
#
# spec.num_nodes = 1
# spec.params_v = ['/opt/test:/opt/test']
# spec.params_e = ['USER_NAME=test']
# spec.ip_addresses = ['起動するnodeの静的なIPアドレス']

# 追加で使用するVolume
# spec.disks = ['vol-08cbb04b35c8c9545']    # volume_id 指定
# or
# my_disks = disk_unit.find_nodes()
# spec.disks = [my_disks[0]]   # VC disk指定

# プロバイダ依存パラメータ
#   https://search.opentofu.org/provider/terraform-provider-openstack/openstack/latest
# spec.flavor_name = 'vc1m2g'
# spec.volume_size = 40
# spec.volume_type = "project-volume" # project-volume|tripleo

# cloud上のタグ設定
# spec.set_tag('key1', 'value1')
# spec.set_tag('key2', 'value2')

# cloud上のイメージ設定
# spec.cloud_image = '5fed0361-58f9-41d7-8281-64c9cd8efeb2'  # mdxII-Ubuntu-22.04-Server

# base containerにssh loginするためのssh公開鍵情報を設定
spec.set_ssh_pubkey('tmp/id_rsa.pub')
cci(name)[ソース]

CCI生成

パラメータ:

name -- unit名

戻り値:

CCI文字列

property cloud_image
property disks
property flavor_name

フレーバー名

注釈

  • VCP SDK flavorで設定可能

property ip_addresses
property num_nodes

起動するnode数

property user_name

ssh login名

version = '1.0+20251001'
property volume_size

ディスクサイズ (単位:GB)

注釈

  • VCP SDK flavorで設定可能

property volume_type

MDX2に依存するvolume_type

注釈

  • VCP SDK flavorで設定可能

2.21. SDK plugins for mdx2 Disk (vcpsdk/plugins/mdx2_disk)

class VcpSpecResourceMdx2Disk(provider_name, flavor, config_dir)[ソース]

サンプルコード

spec = sdk.get_spec("mdx2_disk", "small")
#
# 変更できること
#

# spec.cloud_image = '5fed0361-58f9-41d7-8281-64c9cd8efeb2' # mdxII-Ubuntu-22.04-Server
# spec.num_disks = 1
# spec.type = "tripleo"
# spec.size = 25  # ※スナップショットから作成する場合は、サイズを変更するとインスタンスへのアタッチに失敗する場合あり

# cloud上のタグ設定
# spec.set_tag('key1', 'value1')
# spec.set_tag('key2', 'value2')
cci(name)[ソース]

CCI生成

パラメータ:

name -- unit名

戻り値:

CCI文字列

property cloud_image

MDX2に依存するAMIのイメージ名

property size

MDX2に依存するdisk size (単位:GB)

注釈

  • VCP SDK flavorで設定可能

property type

MDX2に依存するdisk type

注釈

  • VCP SDK flavorで設定可能

version = '1.0+20251001'

2.22. SDK plugins for Proxmox VE (vcpsdk/plugins/proxmox)

class VcpSpecResourceProxmox(provider_name, flavor, config_dir)[ソース]

サンプルコード

spec = sdk.get_spec("proxmox", "small")
#
# 変更できること
#
# spec.num_nodes = 1
# spec.params_v = ['/opt:/opt']
# spec.params_e = ['USER_NAME=test']
# spec.ip_addresses = ['起動するnodeの静的なIPアドレス']

# Proxmox 依存
#   https://search.opentofu.org/provider/telmate/proxmox/latest/docs/resources/vm_qemu
# spec.num_cpus = 2
# spec.memory = 2048 # MB
# spec.disk_size = 40
# spec.user_name = "testuser"
# spec.mac_addresses = "BC:24:11:B2:A1:01"

# クラウドイメージ(テンプレートとするVMWareの仮想マシンの名前)
# spec.cloud_image = 'vmtemplate01'

# base containerにssh loginするためのssh公開鍵情報を設定
spec.set_ssh_pubkey('tmp/id_rsa.pub')
cci(name)[ソース]

CCI生成

パラメータ:

name -- unit名

戻り値:

CCI文字列

property cloud_image

Proxmoxに依存するクラウドイメージ(テンプレートとする仮想マシンの名前)

property disk_size: str

Proxmoxに依存するdisk_size (単位:GB)

注釈

  • VCP SDK flavorで設定可能

property ip_addresses

静的ip_address_list

property mac_addresses

mac_address_list

property memory: int

Proxmoxに依存するmemory

注釈

  • VCP SDK flavorで設定可能

property num_cpus: int

Proxmoxに依存するnum_cpus

注釈

  • VCP SDK flavorで設定可能

property num_nodes

起動するnode数

property user_name

onpremisesに依存する ssh login名

vcp_config_key = 'proxmox'
version = '1.0+20251001'