code: def clusterFactory(provisioner, clusterName=None, zone=None, nodeStorage=50, sseKey=None):
      
      if provisioner == 'aws':
          try:
              from toil.provisioners.aws.awsProvisioner import AWSProvisioner
          except ImportError:
              logger.error('The aws extra must be installed to use this provisioner')
              raise
          return AWSProvisioner(clusterName, zone, nodeStorage, sseKey)
      elif provisioner == 'gce':
          try:
              from toil.provisioners.gceProvisioner import GCEProvisioner
          except ImportError:
              logger.error('The google extra must be installed to use this provisioner')
              raise
          return GCEProvisioner(clusterName, zone, nodeStorage, sseKey)
      elif provisioner == 'azure':
          try:
              from toil.provisioners.azure.azureProvisioner import AzureProvisioner
          except ImportError:
              logger.error('The azure extra must be installed to use this provisioner')
              raise
          return AzureProvisioner(clusterName, zone, nodeStorage)
      else:
          raise RuntimeError("Invalid provisioner '%s'" % provisioner)
docs: :param clusterName: The name of the cluster.
      :param provisioner: The cloud type of the cluster.
      :param zone: The cloud zone
      :return: A cluster object for the the cloud type.