code: def get_frontend_node(self):
          
          if self.ssh_to:
              if self.ssh_to in self.nodes:
                  cls = self.nodes[self.ssh_to]
                  if cls:
                      return cls[0]
                  else:
                      log.warning(
                          "preferred `ssh_to` `%s` is empty: unable to "
                          "get the choosen frontend node from that class.",
                          self.ssh_to)
              else:
                  raise NodeNotFound(
                      "Invalid ssh_to `%s`. Please check your "
                      "configuration file." % self.ssh_to)
  
          # If we reach this point, the preferred class was empty. Pick
          # one using the default logic.
          for cls in sorted(self.nodes.keys()):
              if self.nodes[cls]:
                  return self.nodes[cls][0]
          # Uh-oh, no nodes in this cluster.
          raise NodeNotFound("Unable to find a valid frontend: "
                             "cluster has no nodes!")
docs: Returns the first node of the class specified in the
          configuration file as `ssh_to`, or the first node of
          the first class in alphabetic order.
  
          :return: :py:class:`Node`
          :raise: :py:class:`elasticluster.exceptions.NodeNotFound` if no
                  valid frontend node is found