docs: def create_cluster(dc_ref, cluster_name, cluster_spec):
      '''
      Creates a cluster in a datacenter.
  
      dc_ref
          The parent datacenter reference.
  
      cluster_name
          The cluster name.
  
      cluster_spec
          The cluster spec (vim.ClusterConfigSpecEx).
          Defaults to None.
      '''
      dc_name = get_managed_object_name(dc_ref)
      log.trace('Creating cluster \'%s\' in datacenter \'%s\'',
                cluster_name, dc_name)
      try:
          dc_ref.hostFolder.CreateClusterEx(cluster_name, cluster_spec)
      except vim.fault.NoPermission as exc:
          log.exception(exc)
          raise salt.exceptions.VMwareApiError(
              'Not enough permissions. Required privilege: '
              '{}'.format(exc.privilegeId))
      except vim.fault.VimFault as exc:
          log.exception(exc)
          raise salt.exceptions.VMwareApiError(exc.msg)
      except vmodl.RuntimeFault as exc:
          log.exception(exc)
          raise salt.exceptions.VMwareRuntimeError(exc.msg)