# File lib/chef/expander/vnode_supervisor.rb, line 199
      def process_control_message(message)
        control_message = parse_symbolic(message)
        case control_message[:action]
        when "claim_vnode"
          spawn_vnode(control_message[:vnode_id])
        when "recover_vnode"
          recover_vnode(control_message[:vnode_id])
        when "release_vnodes"
          raise "todo"
          release_vnode()
        when "update_vnode_table"
          @vnode_table.update_table(control_message[:data])
        when "vnode_table_publish"
          publish_vnode_table
        when "status"
          publish_status_to(control_message[:rsvp])
        when "set_log_level"
          set_log_level(control_message[:level], control_message[:rsvp])
        else
          log.error { "invalid control message #{control_message.inspect}" }
        end
      rescue Exception => e
        log.error { "Error processing a control message."}
        log.error { "#{e.class.name}: #{e.message}\n#{e.backtrace.join("\n")}" }
      end