vcpsdk.plugins.mdx2_disk のソースコード

#
# MDX2 Disk
#
from vcpsdk.plugins.spec_disk import VcpSpecResourceDisk

CCI_VERSION = "1.0"
BUILD_VERSION = "20251001"


[ドキュメント] class VcpSpecResourceMdx2Disk(VcpSpecResourceDisk): """ サンプルコード .. code-block:: python 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') """ version = CCI_VERSION + "+" + BUILD_VERSION def __init__(self, provider_name, flavor, config_dir): # flavor から spec を設定 super().__init__(provider_name, flavor, config_dir) # spec attributes名の設定チェックの回避 super().__setattr__("mdx2_cci_", None) # credentail情報は、vcp_config から設定 self.mdx2_cci_ = {"cci_version": CCI_VERSION} # FIXME: テンプレートでは mdx2_disk 等と指定するため、provider_nameが利用できない(vcp_configで_diskの分も定義すれば良いが) self.mdx2_cci_["user_name"] = self.vcp_config_["mdx2"]["user_name"] self.mdx2_cci_["password"] = self.vcp_config_["mdx2"]["password"] # VPNネットワーク名 self.unit_cci_["private_network"] = self.vcp_config_["mdx2"][ "private_network" ] # flavorから初期化 self.mdx2_cci_["type"] = self.flavor_["type"] self.mdx2_cci_["size"] = self.flavor_["size"] self.mdx2_cci_["cloud_image"] = "default" self.mdx2_cci_["tags"] = {} def __str__(self): text = """ ======================== {provider_name} ------------------------ {unit_info}""".format( provider_name=self.unit_cci_["cloud_provider"], unit_info=super().__str__() ) text += """ size: {size} type: {type} cloud_image: {cloud_image}""".format_map( self.mdx2_cci_ ) text += """ tags: {} ========================""".format( self.tags_cci_ ) return text
[ドキュメント] def cci(self, name): """ CCI生成 :param name: unit名 :return: CCI文字列 """ # cloud parameter 情報 my_cci = super().cci(name) # yaml schema check self.cci_schema_.validate(self.mdx2_cci_, "mdx2_disk") # cloud_params my_cci += """ cloud_provider: mdx2 cloud_params: cci_version: "{cci_version}" size: {size} type: {type} user_name: "{user_name}" password: {password} cloud_image: {cloud_image}""".format_map( self.mdx2_cci_ ) my_cci += self.cci_tags() return my_cci
# property: size @property def size(self): """ MDX2に依存するdisk size (単位:GB) .. note:: * VCP SDK flavorで設定可能 """ return self.mdx2_cci_["size"] @size.setter def size(self, v): self.mdx2_cci_["size"] = v # property: type @property def type(self): """ MDX2に依存するdisk type .. note:: * VCP SDK flavorで設定可能 """ return self.mdx2_cci_["type"] @type.setter def type(self, v): self.mdx2_cci_["type"] = v # property: cloud_image @property def cloud_image(self): """ MDX2に依存するAMIのイメージ名 """ return self.mdx2_cci_["cloud_image"] @cloud_image.setter def cloud_image(self, v): self.mdx2_cci_["cloud_image"] = v def __setattr__(self, name, value): """ spec の attributes に不正な値を設定した場合に例外を発生 :param name: attributes名 :param value: 設定値 """ if not hasattr(self, name): raise AttributeError("spec resource has no attributes!! [{}]".format(name)) super().__setattr__(name, value)