code: def setup(self, extra_args=tuple()):
          
          try:
              # setup the cluster using the setup provider
              ret = self._setup_provider.setup_cluster(self, extra_args)
          except Exception as err:
              log.error(
                  "The cluster hosts are up and running,"
                  " but %s failed to set the cluster up: %s",
                  self._setup_provider.HUMAN_READABLE_NAME, err)
              ret = False
  
          if not ret:
              log.warning(
                  "Cluster `%s` not yet configured. Please, re-run "
                  "`elasticluster setup %s` and/or check your configuration",
                  self.name, self.name)
  
          return ret
docs: Configure the cluster nodes.
  
          Actual action is delegated to the
          :py:class:`elasticluster.providers.AbstractSetupProvider` that
          was provided at construction time.
  
          :param list extra_args:
            List of additional command-line arguments
            that are appended to each invocation of the setup program.
  
          :return: bool - True on success, False otherwise