docs: def create_cluster(self, node_list, cluster_attrs={}, node_attrs={}):
          '''
          API:
              create_cluster(self, node_list, cluster_attrs, node_attrs)
          Description:
              Creates a cluster from the node given in the node list.
          Input:
              node_list: List of nodes in the cluster.
              cluster_attrs: Dictionary of cluster attributes, see Dot language
              grammer documentation for details.
              node_attrs: Dictionary of node attributes. It will overwrite
              previous attributes of the nodes in the cluster.
          Post:
              A cluster will be created. Attributes of the nodes in the cluster
              may change.
          '''
          if 'name' in cluster_attrs:
              if 'name' in self.cluster:
                  raise Exception('A cluster with name %s already exists!' %cluster_attrs['name'])
              else:
                  name = cluster_attrs['name']
          else:
              name = 'c%d' %self.attr['cluster_count']
              self.attr['cluster_count'] += 1
              cluster_attrs['name'] = name
          #cluster_attrs['name'] =
          self.cluster[name] = {'node_list':node_list,
                                'attrs':copy.deepcopy(cluster_attrs),
                                'node_attrs':copy.deepcopy(node_attrs)}