How do I switch node templates based on arbitrary critera I'm trying to switch the node template file based on a variable, in drupal 6 you could simply set  $vars['template_file'] = 'node-whatever'; from with the preprocess_node() and name the new node template file node-whatever.tpl.php. 
I drupal 7 this is gone. I looked through the docs and it appears that in Drupal 7  its   $vars['theme_hook_suggestion'][] = 'node--whatever'; but this is not working for me. Am I doing something wrong? is there a naming convention that I'm missing? The documentation is a little confusing
Indeed, in D7 the template suggestions are an array of suggestions, in the order of importance. You've got 99% of it, but your dashes need to be underscores. Try:

function THEME_preprocess_page() {
  $vars['theme_hook_suggestions'][] = 'page__whatever';
}

function THEME_preprocess_node() {
  $vars['theme_hook_suggestions'][] = 'node__whatever';
}


Why underscores instead of hyphens? From the Drupal API docs:

  // Hyphens (-) and underscores (_) play a special role in theme suggestions.
  // Theme suggestions should only contain underscores, because within
  // drupal_find_theme_templates(), underscores are converted to hyphens to
  // match template file names, and then converted back to underscores to match
  // pre-processing and other function names. So if your theme suggestion
  // contains a hyphen, it will end up as an underscore after this conversion,
  // and your function names won't be recognized.