in perfkitbenchmarker/providers/azure/azure_disk.py [0:0]
def _Create(self):
"""Creates the disk."""
assert not self.is_image
if self.disk_type == ULTRA_STORAGE and not self.vm.availability_zone:
raise Exception(
f'Azure Ultradisk is being created in zone "{self.zone}"'
'which was not specified to have an availability zone. '
'Availability zones are specified with zone-\\d e.g. '
'eastus1-2 for availability zone 2 in zone eastus1'
)
with self._lock:
if FLAGS.azure_attach_disk_with_create:
cmd = [
azure.AZURE_PATH,
'vm',
'disk',
'attach',
'--new',
'--caching',
self.host_caching,
'--name',
self.name,
'--lun',
str(self.lun),
'--sku',
self.disk_type,
'--vm-name',
self.vm_name,
'--size-gb',
str(self.disk_size),
] + self.resource_group.args
else:
cmd = [
azure.AZURE_PATH,
'disk',
'create',
'--name',
self.name,
'--size-gb',
str(self.disk_size),
'--sku',
self.disk_type,
'--location',
self.region,
'--zone',
self.availability_zone,
] + self.resource_group.args
self.create_disk_start_time = time.time()
_, stderr, retcode = vm_util.IssueCommand(
cmd, raise_on_failure=False, timeout=600
)
self.create_disk_end_time = time.time()
if retcode:
raise errors.Resource.RetryableCreationError(
f'Error creating Azure disk:\n{stderr}'
)
_, _, retcode = vm_util.IssueCommand(
[
azure.AZURE_PATH,
'disk',
'update',
'--name',
self.name,
'--set',
util.GetTagsJson(self.resource_group.timeout_minutes),
]
+ self.resource_group.args,
raise_on_failure=False,
)
if retcode:
raise errors.Resource.RetryableCreationError(
'Error tagging Azure disk.'
)
if self.disk_type in [ULTRA_STORAGE, PREMIUM_STORAGE_V2] and (
self.provisioned_iops or self.provisioned_throughput
):
args = [
azure.AZURE_PATH,
'disk',
'update',
'--name',
self.name,
] + self.resource_group.args
if self.provisioned_iops:
args = args + [
'--disk-iops-read-write',
str(self.provisioned_iops),
]
if self.provisioned_throughput:
args = args + [
'--disk-mbps-read-write',
str(self.provisioned_throughput),
]
_, _, _ = vm_util.IssueCommand(args, raise_on_failure=True)