def _Create()

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)