2. VCP SDK
2.1. SDKベースクラス(vcpsdk/vcpsdk)
- 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_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_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
- 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_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")
- 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
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')
- 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')
- 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')
- 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')
- 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')
- 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')
- 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')
- 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'
- 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')
- 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
- 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
- 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')
- 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')
- 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で設定可能
- 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
- 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')
- 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()
- 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
エラーが発生した
- 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)
- property network_name
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() を参照のこと。
- 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
を指定
- 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_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
を指定
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')
- 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')
- 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')
- 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'