title: Only classes can set 'stage'; normal resources like XXX cannot change run stage
body: <p>I have a manifest where a package depends on an <code>apt::source</code> resource.  I've tried to make sure the <code>apt::source</code> runs first by setting a stage:</p>
  
  <pre><code>include apt
  
  stage { 'first': 
      before =&gt; Stage['main']
  }
  
  apt::source { 'erlang_repo':
    location =&gt; 'http://packages.erlang-solutions.com/ubuntu',
    repos    =&gt; 'contrib',
    key      =&gt; 'A14F4FCA',
    stage    =&gt; first
  }
  
  package { 'erlang':
    ensure   =&gt; '1:17.3'
  }
  </code></pre>
  
  <p>However, I'm hitting the following error:</p>
  
  <pre><code>==&gt; default: Error: Puppet::Parser::AST::Resource failed with error ArgumentError: Only classes can set 'stage'; normal resources like Apt::Source[erlang_repo] cannot change run stage at /tmp/manifests/default.pp:12 on node vagrant-ubuntu-trusty-64.home
  ==&gt; default: Wrapped exception:
  ==&gt; default: Only classes can set 'stage'; normal resources like Apt::Source[erlang_repo] cannot change run stage
  ==&gt; default: Error: Puppet::Parser::AST::Resource failed with error ArgumentError: Only classes can set 'stage'; normal resources like Apt::Source[erlang_repo] cannot change run stage at /tmp/manifests/default.pp:12 on node vagrant-ubuntu-trusty-64.home
  </code></pre>
  
  <p>Any pointers will be appreciated.</p>