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

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

CCI_VERSION = "1.0"
BUILD_VERSION = "20190930"


[ドキュメント] class VcpSpecResourceSakuraDisk(VcpSpecResourceDisk): """ サンプルコード .. code-block:: python 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 """ 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__("sakura_cci_", None) # credentail情報は、vcp_config から設定 self.sakura_cci_ = {"cci_version": CCI_VERSION} self.sakura_cci_["secret"] = self.vcp_config_["sakura"]["secret"] self.sakura_cci_["token"] = self.vcp_config_["sakura"]["token"] # flavorから初期化 self.sakura_cci_["sakuracloud_disk_plan"] = self.flavor_[ "sakuracloud_disk_plan" ] self.sakura_cci_["sakuracloud_disk_size"] = self.flavor_[ "sakuracloud_disk_size" ] self.sakura_cci_["cloud_image"] = "default" def __str__(self): text = """ ======================== {provider_name} ------------------------ {unit_info}""".format( provider_name=self.unit_cci_["cloud_provider"], unit_info=super().__str__() ) text += """ sakuracloud_disk_plan: {sakuracloud_disk_plan} sakuracloud_disk_size: {sakuracloud_disk_size} cloud_image: {cloud_image}""".format_map( self.sakura_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.sakura_cci_, "sakura_disk") # cloud_params my_cci += """ cloud_provider: sakura cloud_params: cci_version: "{cci_version}" sakuracloud_disk_plan: {sakuracloud_disk_plan} sakuracloud_disk_size: {sakuracloud_disk_size} cloud_image: {cloud_image} secret: {secret} token: {token}""".format_map( self.sakura_cci_ ) # cloud tagのcci文字列生成 my_cci += self.cci_tags() return my_cci
# property: sakuracloud_disk_size @property def sakuracloud_disk_size(self): """ Sakuraに依存するdisk size .. note:: * VCP SDK flavorで設定可能 """ return self.sakura_cci_["sakuracloud_disk_size"] @sakuracloud_disk_size.setter def sakuracloud_disk_size(self, v): """ 指定可能なデスクサイズ - 20GB,40GB,100GB,250GB,500GB,1TB """ availables = [20, 40, 100, 250, 500, 1000] if v in availables: self.sakura_cci_["sakuracloud_disk_size"] = v else: raise AttributeError( "bad disk size [{}], availables {}".format(v, availables) ) # property: sakuracloud_disk_plan @property def sakuracloud_disk_plan(self): """ Sakuraに依存するdisk type .. note:: * VCP SDK flavorで設定可能 """ return self.sakura_cci_["sakuracloud_disk_plan"] @sakuracloud_disk_plan.setter def sakuracloud_disk_plan(self, v): self.sakura_cci_["sakuracloud_disk_plan"] = v # property: cloud_image @property def cloud_image(self): """ Sakuraに依存するアーカイブのイメージ名 """ return self.sakura_cci_["cloud_image"] @cloud_image.setter def cloud_image(self, v): self.sakura_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)