Uploaded image for project: 'Puppet'
  1. Puppet
  2. PUP-1515

When compiling a catalog, providers should be loaded from specified environment

    Details

    • Template:
    • Story Points:
      3
    • Sprint:
      Language 2015-01-21, Language 2015-02-04

      Description

      When compiling a catalog, types and providers are validated, but while Puppet will load types from the agent's environment, it only loads providers from the compiling master's default environment (production).

      This is a problem because the method that creates the provider parameter is sometimes called due to code in the provider, not the type. If a custom resource type only exists in a non-default environment, and you declare a resource that specifies a value for the provider attribute, this can cause an invalid parameter provider error.

      The expected behavior is that Puppet will autoload types and providers from the agent's environment.


      original description:
      In Puppet 3 I am getting an error on all definitions for custom types. It says "Error 400 on SERVER: Invalid parameter provider...". Provider should be a given parameter for custom types because otherwise there is no way to specify which provider should be used with it. This is potentially a very major bug. Please let me know how I can help so you're able to reproduce and fix the issue.


      Final resolution: When validating resources during catalog compilation, Puppet will load types and providers from the environment that the catalog is being compiled for. (Modulo that other bug that causes cross-environment contamination.)

        Issue Links

          Activity

          Hide
          josh_al Joshua Chaitin-Pollak added a comment - - edited

          I am experiencing a similar issue with puppet 3.4.2. I've posted here as well (https://github.com/puppetlabs/puppetlabs-vcsrepo/issues/118), I apologize in advance for crossposting, I'm not sure if this is a Puppet issue or a vcsrepo one.

          I have the following configuration:

          vcsrepo { "$directory" :
              ensure => latest,
              provider => git,
              source => "git@github.com:example/project.git",
              revision => "$revision",
              user => "$user",
              require => Class['::nginx'],
          }
          

          And when I run puppet agent on my node, I get this error:

          Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Invalid parameter provider at /var/lib/puppet/modules/project/manifests/init.pp:21 on node mynode.example.com

          This error is repeated in the puppetmaster's log as well.

          I restarted the puppet master, but that didn't solve the problem. I did verify that the git.rb file is in the puppet repository.

          Both the master and slave are running Puppet 3.4.2

          Any help would be appreciated.

          Show
          josh_al Joshua Chaitin-Pollak added a comment - - edited I am experiencing a similar issue with puppet 3.4.2. I've posted here as well ( https://github.com/puppetlabs/puppetlabs-vcsrepo/issues/118 ), I apologize in advance for crossposting, I'm not sure if this is a Puppet issue or a vcsrepo one. I have the following configuration: vcsrepo { "$directory" : ensure => latest, provider => git, source => "git@github.com:example/project.git", revision => "$revision", user => "$user", require => Class['::nginx'], } And when I run puppet agent on my node, I get this error: Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Invalid parameter provider at /var/lib/puppet/modules/project/manifests/init.pp:21 on node mynode.example.com This error is repeated in the puppetmaster's log as well. I restarted the puppet master, but that didn't solve the problem. I did verify that the git.rb file is in the puppet repository. Both the master and slave are running Puppet 3.4.2 Any help would be appreciated.
          Hide
          thejandroman Alejandro Figueroa added a comment -

          I ran into this issue as well with multiple environments.

          The master server is running in the 'production' environment and the client is running in the 'staging' environment.
          I was able to get it running after doing a puppet run on the master while forcing the staging environment as mentioned here:
          http://projects.puppetlabs.com/issues/17814

          I also restarted the puppetmaster apache process as well, though I'm not sure if this had any effect.

          All puppet versions at 3.4.2.

          Show
          thejandroman Alejandro Figueroa added a comment - I ran into this issue as well with multiple environments. The master server is running in the 'production' environment and the client is running in the 'staging' environment. I was able to get it running after doing a puppet run on the master while forcing the staging environment as mentioned here: http://projects.puppetlabs.com/issues/17814 I also restarted the puppetmaster apache process as well, though I'm not sure if this had any effect. All puppet versions at 3.4.2.
          Hide
          netkgk Net Kgk added a comment -

          This issue makes it impossible to use any native type with environments (which is officially recommended approach), so raising priority.

          Show
          netkgk Net Kgk added a comment - This issue makes it impossible to use any native type with environments (which is officially recommended approach), so raising priority.
          Hide
          eric.sorenson Eric Sorenson added a comment -

          Net Kgk Alejandro Figueroa i am having trouble reproducing this issue. is it true in your case that, as Andy Shinn said on the redmine bug "my default environment for the puppetmaster doesn’t have some new types I am testing in another environment and when testing that environment it is failing." ??

          Show
          eric.sorenson Eric Sorenson added a comment - Net Kgk Alejandro Figueroa i am having trouble reproducing this issue. is it true in your case that, as Andy Shinn said on the redmine bug "my default environment for the puppetmaster doesn’t have some new types I am testing in another environment and when testing that environment it is failing." ??
          Hide
          josh_al Joshua Chaitin-Pollak added a comment - - edited

          You didn't tag me, but I can confirm our puppetmaster has a default configuration of the puppet environment, but is configured to serve one of two different puppet libraries based on parameters of the connected client.

          In other words, I believe out puppet master executes with a different set of puppet modules than it serves to clients, which I think is what people say causes this situation.

          Show
          josh_al Joshua Chaitin-Pollak added a comment - - edited You didn't tag me, but I can confirm our puppetmaster has a default configuration of the puppet environment, but is configured to serve one of two different puppet libraries based on parameters of the connected client. In other words, I believe out puppet master executes with a different set of puppet modules than it serves to clients, which I think is what people say causes this situation.
          Hide
          netkgk Net Kgk added a comment -

          I've got this issue, with next settings:

          ...
          [master]
          ...
          environment = production
          ...
            manifest = $confdir/environments/$environment/manifests/site.pp
            modulepath = $confdir/environments/$environment/modules
          ...
          

          Then, when I've updated different environment (let's say test) with new module (puppet-labs/mysql), I've got this exception on master while running puppet agent with --environment='test' on different host, because puppet-labs/mysql was absent in production environment.

          Show
          netkgk Net Kgk added a comment - I've got this issue, with next settings: ... [master] ... environment = production ... manifest = $confdir/environments/$environment/manifests/site.pp modulepath = $confdir/environments/$environment/modules ... Then, when I've updated different environment (let's say test ) with new module ( puppet-labs/mysql ), I've got this exception on master while running puppet agent with --environment='test' on different host, because puppet-labs/mysql was absent in production environment.
          Hide
          thejandroman Alejandro Figueroa added a comment -

          I can confirm Net Kgk's diagnosis. The module was different on my servers (puppetlabs/vcsrepo) but the results were the same.

          Show
          thejandroman Alejandro Figueroa added a comment - I can confirm Net Kgk's diagnosis. The module was different on my servers (puppetlabs/vcsrepo) but the results were the same.
          Hide
          diranged Matt Wise added a comment -

          We're seeing this as well on our Puppet 3.4.1 servers. We had to copy the library into our 'master' branch of code in order for it to work anywhere. This is a huge bug because it makes doing development work on other branches difficult.

          Show
          diranged Matt Wise added a comment - We're seeing this as well on our Puppet 3.4.1 servers. We had to copy the library into our 'master' branch of code in order for it to work anywhere. This is a huge bug because it makes doing development work on other branches difficult.
          Hide
          nhinds Nicholas Hinds added a comment -

          In case people are interested, it's possible to work around this bug for a small number of agents by running a plugin sync on the puppet master before applying the configuration on the puppet agent; of course, this doesn't scale nor does it allow you to setup agents to poll the puppet master unless they're in the default production environment:

          1. Run puppet plugin download --environment ENVIRONMENT-NAME-HERE && service puppetmaster restart on the puppet master to make the plugins available in the correct place
          2. Apply the puppet configuration on the puppet agent (puppet agent -t)
          3. Run puppet plugin download && service puppetmaster restart on the puppet master to restore the original plugins
          Show
          nhinds Nicholas Hinds added a comment - In case people are interested, it's possible to work around this bug for a small number of agents by running a plugin sync on the puppet master before applying the configuration on the puppet agent; of course, this doesn't scale nor does it allow you to setup agents to poll the puppet master unless they're in the default production environment: Run puppet plugin download --environment ENVIRONMENT-NAME-HERE && service puppetmaster restart on the puppet master to make the plugins available in the correct place Apply the puppet configuration on the puppet agent ( puppet agent -t ) Run puppet plugin download && service puppetmaster restart on the puppet master to restore the original plugins
          Hide
          eric.sorenson Eric Sorenson added a comment - - edited

          Simple steps to repro on one host, running Puppet 3.5.1 agent and master as non-root (user vagrant).

          1. Set up a puppet.conf as follows, to enable directory environments:

          [main]
          environmentpath = $confdir/environments
          

          2. Create a directory structure under ~/.puppet/environments like:

          [vagrant@victim environments]$ tree -L 2 .
          .
          ├── fail
          │   ├── manifests
          │   └── modules
          └── production
              ├── manifests
              └── modules
          

          3. Install puppetlabs-vcsrepo into the 'fail' environment's modulepath:

          [vagrant@victim manifests]$ puppet module install --environment fail puppetlabs-vcsrepo
          Notice: Preparing to install into /home/vagrant/.puppet/environments/fail/modules ...
          Notice: Downloading from https://forge.puppetlabs.com ...
          Notice: Installing -- do not interrupt ...
          /home/vagrant/.puppet/environments/fail/modules
          └── puppetlabs-vcsrepo (v0.2.0)
          

          4. Create a site.pp for each environment; the 'fail' environment should have a vcsrepo resource:

          [vagrant@victim environments]$ cat production/manifests/site.pp
          node default {
                  notify {'environment': message => "current environment is ${environment}" }
          }
          [vagrant@victim environments]$ cat fail/manifests/site.pp
          node default {
            notify {'environment': message => "current environment is ${environment}" }
           
            vcsrepo { 'dotfiles':
              ensure => present,
              provider => git,
              revision => master,
              path => '/home/vagrant/dotfiles',
              source => 'https://github.com/ahpook/dotfiles.git',
            }
           
          }
          

          5. Start the master

          [vagrant@victim .puppet]$ puppet master --no-daemonize --debug
          

          6. Point the agent at the master using a separate vardir (as if it were a separate host), using the fail environment:

          [vagrant@victim manifests]$ puppet agent -tv --server victim.local --vardir /home/vagrant/.puppet/var.agent --environment fail
          Info: Retrieving pluginfacts
          Info: Retrieving plugin
          Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Invalid parameter provider at /home/vagrant/.puppet/environments/fail/manifests/site.pp:10
          on node victim.local
          Warning: Not using cache on failed catalog
          Error: Could not retrieve catalog; skipping run
          

          Master logs the following error:

          Error: Invalid parameter provider at /home/vagrant/.puppet/environments/fail/manifests/site.pp:10 on node victim.local
          Wrapped exception:
          Invalid parameter provider
          Error: Invalid parameter provider at /home/vagrant/.puppet/environments/fail/manifests/site.pp:10 on node victim.local
          Error: Invalid parameter provider at /home/vagrant/.puppet/environments/fail/manifests/site.pp:10 on node victim.local
          

          Show
          eric.sorenson Eric Sorenson added a comment - - edited Simple steps to repro on one host, running Puppet 3.5.1 agent and master as non-root (user vagrant ). 1. Set up a puppet.conf as follows, to enable directory environments: [main] environmentpath = $confdir/environments 2. Create a directory structure under ~/.puppet/environments like: [vagrant@victim environments]$ tree -L 2 . . ├── fail │   ├── manifests │   └── modules └── production ├── manifests └── modules 3. Install puppetlabs-vcsrepo into the 'fail' environment's modulepath: [vagrant@victim manifests]$ puppet module install --environment fail puppetlabs-vcsrepo Notice: Preparing to install into /home/vagrant/.puppet/environments/fail/modules ... Notice: Downloading from https://forge.puppetlabs.com ... Notice: Installing -- do not interrupt ... /home/vagrant/.puppet/environments/fail/modules └── puppetlabs-vcsrepo (v0.2.0) 4. Create a site.pp for each environment; the 'fail' environment should have a vcsrepo resource: [vagrant@victim environments]$ cat production/manifests/site.pp node default { notify {'environment': message => "current environment is ${environment}" } } [vagrant@victim environments]$ cat fail/manifests/site.pp node default { notify {'environment': message => "current environment is ${environment}" }   vcsrepo { 'dotfiles': ensure => present, provider => git, revision => master, path => '/home/vagrant/dotfiles', source => 'https://github.com/ahpook/dotfiles.git', }   } 5. Start the master [vagrant@victim .puppet]$ puppet master --no-daemonize --debug 6. Point the agent at the master using a separate vardir (as if it were a separate host), using the fail environment: [vagrant@victim manifests]$ puppet agent -tv --server victim.local --vardir /home/vagrant/.puppet/var.agent --environment fail Info: Retrieving pluginfacts Info: Retrieving plugin Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Invalid parameter provider at /home/vagrant/.puppet/environments/fail/manifests/site.pp:10 on node victim.local Warning: Not using cache on failed catalog Error: Could not retrieve catalog; skipping run Master logs the following error: Error: Invalid parameter provider at /home/vagrant/.puppet/environments/fail/manifests/site.pp:10 on node victim.local Wrapped exception: Invalid parameter provider Error: Invalid parameter provider at /home/vagrant/.puppet/environments/fail/manifests/site.pp:10 on node victim.local Error: Invalid parameter provider at /home/vagrant/.puppet/environments/fail/manifests/site.pp:10 on node victim.local
          Hide
          daff Andreas Ntaflos added a comment -

          "Me, too."

          Our Puppet master currently runs in the 'production' environment while a growing number of nodes run in a different environment (called 'production_redux', as we are overhauling the Puppet infrastructure on that site). Using the puppetlabs-mysql module in the 'production_redux' environment (but not in 'production') we get the "invalid parameter provider" exception trying to manage MySQL users and databases.

          Do I understand correctly that switching the Puppet master's own environment to (in our case) 'production_redux' would work around this problem?

          FWIW, running puppet plugin download --environment production_redux on the Puppet master results in this:

          # puppet plugin download --environment production_redux 
          Error: /File[/var/lib/puppet/lib]: Failed to generate additional resources using 'eval_generate': undefined method `intern' for nil:NilClass
          Error: /File[/var/lib/puppet/lib]: Could not evaluate: Could not retrieve file metadata for puppet://puppet01.example.com/plugins: undefined method `intern' for nil:NilClass
          Wrapped exception:
          undefined method `intern' for nil:NilClass
          Error: /File[/var/lib/puppet/facts.d]: Failed to generate additional resources using 'eval_generate': undefined method `intern' for nil:NilClass
          Error: /File[/var/lib/puppet/facts.d]: Could not evaluate: Could not retrieve file metadata for puppet://puppet01.example.com/pluginfacts: undefined method `intern' for nil:NilClass
          Wrapped exception:
          undefined method `intern' for nil:NilClass
          No plugins downloaded.
          

          I have no idea what to make of this.

          Show
          daff Andreas Ntaflos added a comment - "Me, too." Our Puppet master currently runs in the 'production' environment while a growing number of nodes run in a different environment (called 'production_redux', as we are overhauling the Puppet infrastructure on that site). Using the puppetlabs-mysql module in the 'production_redux' environment (but not in 'production') we get the "invalid parameter provider" exception trying to manage MySQL users and databases. Do I understand correctly that switching the Puppet master's own environment to (in our case) 'production_redux' would work around this problem? FWIW, running puppet plugin download --environment production_redux on the Puppet master results in this: # puppet plugin download --environment production_redux Error: /File[/var/lib/puppet/lib]: Failed to generate additional resources using 'eval_generate': undefined method `intern' for nil:NilClass Error: /File[/var/lib/puppet/lib]: Could not evaluate: Could not retrieve file metadata for puppet://puppet01.example.com/plugins: undefined method `intern' for nil:NilClass Wrapped exception: undefined method `intern' for nil:NilClass Error: /File[/var/lib/puppet/facts.d]: Failed to generate additional resources using 'eval_generate': undefined method `intern' for nil:NilClass Error: /File[/var/lib/puppet/facts.d]: Could not evaluate: Could not retrieve file metadata for puppet://puppet01.example.com/pluginfacts: undefined method `intern' for nil:NilClass Wrapped exception: undefined method `intern' for nil:NilClass No plugins downloaded. I have no idea what to make of this.
          Hide
          vinodkumar vinod kumar added a comment - - edited

          I also observed the similar behavior with custom environment path.

          Following is the alternate to work with:

          • Install puppet module without any environment i.e. puppet module install puppetlabs-vcsrepo

          This will install the vcsrepo module under <$puppet-conf-dir>/modules directory.

          • Now, add this path to modulepath in puppet.conf directory as follows under the custom environment:

          [fail]
          modulepath = /Users/vinodp/Vinod/DevOps/modules:/Users/vinodp/.puppet/modules

          • Also enable 'pluginsync = true' in puppet.conf file
          • Now, you can access puppet agent with the custom environment like

          puppet agent --test --environment fail --debug

          Hope this will work for every one as it is working for me.

          Show
          vinodkumar vinod kumar added a comment - - edited I also observed the similar behavior with custom environment path. Following is the alternate to work with: Install puppet module without any environment i.e. puppet module install puppetlabs-vcsrepo This will install the vcsrepo module under <$puppet-conf-dir>/modules directory. Now, add this path to modulepath in puppet.conf directory as follows under the custom environment: [fail] modulepath = /Users/vinodp/Vinod/DevOps/modules:/Users/vinodp/.puppet/modules Also enable 'pluginsync = true' in puppet.conf file Now, you can access puppet agent with the custom environment like puppet agent --test --environment fail --debug Hope this will work for every one as it is working for me.
          Hide
          martin.moerner Martin Mörner added a comment - - edited

          Please fix this bug as any currently advocated development method with environments and usage of r10k builds works against this. Especially when using official modules like puppetlabs/mysql:

          Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Invalid parameter provider on Mysql_database[foo] at /etc/puppet/environments/dev_mysql/modules/mysql/manifests/db.pp:27 on node...
          

          /etc/puppet/puppet.conf

          [main]
          environment  =  production
          confdir      =  /etc/puppet
          logdir       =  /var/log/puppet
          vardir       =  /var/lib/puppet
          ssldir       =  /var/lib/puppet/ssl
          rundir       =  /var/run/puppet
          factpath     =  $vardir/lib/facter
          pluginsync   =  true
           
          [master]
          environment               =  production
          environmentpath           =  $confdir/environments
          autosign                  =  false
          ssl_client_header         =  SSL_CLIENT_S_DN
          ssl_client_verify_header  =  SSL_CLIENT_VERIFY
          storeconfigs              =  true
          storeconfigs_backend      =  puppetdb
          reports                   =  puppetdb
           
          [agent]
          environment  =  production
          server       =  ***
          report       =  true
          

          Affected Version:

          dpkg -l puppet
          Desired=Unknown/Install/Remove/Purge/Hold
          | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
          |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
          ||/ Name                         Version             Architecture        Description
          +++-============================-===================-==
          ii  puppet                       3.6.2-1puppetlabs1  all                 Centralized 
          

          Show
          martin.moerner Martin Mörner added a comment - - edited Please fix this bug as any currently advocated development method with environments and usage of r10k builds works against this. Especially when using official modules like puppetlabs/mysql: Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Invalid parameter provider on Mysql_database[foo] at /etc/puppet/environments/dev_mysql/modules/mysql/manifests/db.pp:27 on node... /etc/puppet/puppet.conf [main] environment = production confdir = /etc/puppet logdir = /var/log/puppet vardir = /var/lib/puppet ssldir = /var/lib/puppet/ssl rundir = /var/run/puppet factpath = $vardir/lib/facter pluginsync = true   [master] environment = production environmentpath = $confdir/environments autosign = false ssl_client_header = SSL_CLIENT_S_DN ssl_client_verify_header = SSL_CLIENT_VERIFY storeconfigs = true storeconfigs_backend = puppetdb reports = puppetdb   [agent] environment = production server = *** report = true Affected Version: dpkg -l puppet Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) ||/ Name Version Architecture Description +++-============================-===================-== ii puppet 3.6.2-1puppetlabs1 all Centralized
          Hide
          Arioch Tom De Vylder added a comment -

          I'm running into the same behavior with:

          3.6.2-1puppetlabs1
          3.6.1-1puppetlabs1
          3.5.1-1puppetlabs1

          (from apt.puppetlabs.com)

          ... using puppet apply on Puppetlabs' current Debian 7 Vagrant box (http://puppet-vagrant-boxes.puppetlabs.com/debian-73-x64-virtualbox-puppet.box).

          Show
          Arioch Tom De Vylder added a comment - I'm running into the same behavior with: 3.6.2-1puppetlabs1 3.6.1-1puppetlabs1 3.5.1-1puppetlabs1 (from apt.puppetlabs.com) ... using puppet apply on Puppetlabs' current Debian 7 Vagrant box ( http://puppet-vagrant-boxes.puppetlabs.com/debian-73-x64-virtualbox-puppet.box ).
          Hide
          falcas cristi falcas added a comment -

          Any news about the status of this? Currently we can't use multiple environments because of this. Well, actually we use a "development" environment for our puppet masters where we keep all our modules in order to mitigate this.

          Show
          falcas cristi falcas added a comment - Any news about the status of this? Currently we can't use multiple environments because of this. Well, actually we use a "development" environment for our puppet masters where we keep all our modules in order to mitigate this.
          Hide
          andy Andrew Parker added a comment -

          Charlie Sharpsteen is going to take a look into this and see if this is definitively related to PUP-731 or not. If it is, then there isn't really anything we can do about it with the current master setups. If it isn't, then his investigation should uncover a bit clearer the source of the problem.

          Show
          andy Andrew Parker added a comment - Charlie Sharpsteen is going to take a look into this and see if this is definitively related to PUP-731 or not. If it is, then there isn't really anything we can do about it with the current master setups. If it isn't, then his investigation should uncover a bit clearer the source of the problem.
          Hide
          chuck Charlie Sharpsteen added a comment -

          Eric's re-production steps for 3.5.1 still work on 3.6.2. Here is a backtrace from the master:

          [root@poss-head-centos ~]# puppet master --no-daemonize --trace --verbose
          Notice: Starting Puppet master version 3.6.2
          Info: Inserting default '~ ^/catalog/([^/]+)$' (auth true) ACL
          Info: Inserting default '~ ^/node/([^/]+)$' (auth true) ACL
          Info: Inserting default '/file' (auth ) ACL
          Info: Inserting default '/certificate_revocation_list/ca' (auth true) ACL
          Info: Inserting default '~ ^/report/([^/]+)$' (auth true) ACL
          Info: Inserting default '/certificate/ca' (auth any) ACL
          Info: Inserting default '/certificate/' (auth any) ACL
          Info: Inserting default '/certificate_request' (auth any) ACL
          Info: Inserting default '/status' (auth true) ACL
          Info: Inserting default '/v2.0/environments' (auth true) ACL
          Info: Caching node for poss-head-centos.puppetdebug.vlan
          Info: Caching node for poss-head-centos.puppetdebug.vlan
          Error: Invalid parameter provider on Vcsrepo[dotfiles] at /etc/puppet/environments/fail/manifests/site.pp:10 on node poss-head-centos.puppetdebug.vlan
          /puppetlabs/puppet/lib/puppet/resource.rb:442:in `validate_parameter'
          /puppetlabs/puppet/lib/puppet/parser/resource.rb:264:in `block in validate'
          /puppetlabs/puppet/lib/puppet/parser/resource.rb:263:in `each'
          /puppetlabs/puppet/lib/puppet/parser/resource.rb:263:in `validate'
          /puppetlabs/puppet/lib/puppet/parser/resource.rb:107:in `finish'
          /puppetlabs/puppet/lib/puppet/parser/compiler.rb:442:in `block in finish'
          /puppetlabs/puppet/lib/puppet/parser/compiler.rb:430:in `each'
          /puppetlabs/puppet/lib/puppet/parser/compiler.rb:430:in `finish'
          /puppetlabs/puppet/lib/puppet/parser/compiler.rb:128:in `block (2 levels) in compile'
          /puppetlabs/puppet/lib/puppet/util/profiler/none.rb:6:in `profile'
          /puppetlabs/puppet/lib/puppet/util/profiler.rb:43:in `profile'
          /puppetlabs/puppet/lib/puppet/parser/compiler.rb:128:in `block in compile'
          /puppetlabs/puppet/lib/puppet/context.rb:64:in `override'
          /puppetlabs/puppet/lib/puppet.rb:234:in `override'
          /puppetlabs/puppet/lib/puppet/parser/compiler.rb:106:in `compile'
          /puppetlabs/puppet/lib/puppet/parser/compiler.rb:23:in `compile'
          /puppetlabs/puppet/lib/puppet/indirector/catalog/compiler.rb:95:in `block (2 levels) in compile'
          /puppetlabs/puppet/lib/puppet/util/profiler/none.rb:6:in `profile'
          /puppetlabs/puppet/lib/puppet/util/profiler.rb:43:in `profile'
          /puppetlabs/puppet/lib/puppet/indirector/catalog/compiler.rb:93:in `block in compile'
          /puppetlabs/puppet/lib/puppet/util.rb:161:in `block in benchmark'
          /opt/rh/ruby193/root/usr/share/ruby/benchmark.rb:295:in `realtime'
          /puppetlabs/puppet/lib/puppet/util.rb:160:in `benchmark'
          /puppetlabs/puppet/lib/puppet/indirector/catalog/compiler.rb:92:in `compile'
          /puppetlabs/puppet/lib/puppet/indirector/catalog/compiler.rb:52:in `find'
          /puppetlabs/puppet/lib/puppet/indirector/indirection.rb:201:in `find'
          /puppetlabs/puppet/lib/puppet/network/http/api/v1.rb:105:in `do_find'
          /puppetlabs/puppet/lib/puppet/network/http/api/v1.rb:50:in `block in call'
          /puppetlabs/puppet/lib/puppet/context.rb:64:in `override'
          /puppetlabs/puppet/lib/puppet.rb:234:in `override'
          /puppetlabs/puppet/lib/puppet/network/http/api/v1.rb:49:in `call'
          /puppetlabs/puppet/lib/puppet/network/http/route.rb:82:in `block in process'
          /puppetlabs/puppet/lib/puppet/network/http/route.rb:81:in `each'
          /puppetlabs/puppet/lib/puppet/network/http/route.rb:81:in `process'
          /puppetlabs/puppet/lib/puppet/network/http/handler.rb:63:in `block in process'
          /puppetlabs/puppet/lib/puppet/util/profiler/none.rb:6:in `profile'
          /puppetlabs/puppet/lib/puppet/util/profiler.rb:43:in `profile'
          /puppetlabs/puppet/lib/puppet/network/http/handler.rb:61:in `process'
          /puppetlabs/puppet/lib/puppet/network/http/webrick/rest.rb:37:in `block in service'
          <internal:prelude>:10:in `synchronize'
          /puppetlabs/puppet/lib/puppet/network/http/webrick/rest.rb:36:in `service'
          /opt/rh/ruby193/root/usr/share/ruby/webrick/httpserver.rb:138:in `service'
          /opt/rh/ruby193/root/usr/share/ruby/webrick/httpserver.rb:94:in `run'
          /puppetlabs/puppet/lib/puppet/network/http/webrick.rb:36:in `block (2 levels) in listen'
          /opt/rh/ruby193/root/usr/share/ruby/webrick/server.rb:191:in `call'
          /opt/rh/ruby193/root/usr/share/ruby/webrick/server.rb:191:in `block in start_thread'
          

          So, compilation is dying in the very last stage when the master is validating the catalog contents before shipping it to the agent. Also worth noting is that the master environment will be "production" unless set to something else:

          [30] pry(#<Puppet::Parser::Resource>)> Puppet[:environment]
          => "production"
          

          My current theory is: the master can load types from the environment requested by the agent, but it can only load providers from it's own environment. Hence, the Vcsrepo Type is acting like an old primordial Type from the time before providers existed (Yumrepo used to be one of these until it was refactored in 3.5.0). If no providers are loaded, Type.providify never gets called and this method defines the provider parameter that the validator is failing to see.

          If the master is launched with the same environment that the agent will use, the error disappears:

          puppet master --no-daemonize --trace --verbose --environment fail
          

          I'll dig some more tomorrow to see if my theory is correct. If it is, then this is a bit different than PUP-731 and I'll try to determine why the master is not loading providers from the agent environment.

          Show
          chuck Charlie Sharpsteen added a comment - Eric's re-production steps for 3.5.1 still work on 3.6.2. Here is a backtrace from the master: [root@poss-head-centos ~]# puppet master --no-daemonize --trace --verbose Notice: Starting Puppet master version 3.6.2 Info: Inserting default '~ ^/catalog/([^/]+)$' (auth true) ACL Info: Inserting default '~ ^/node/([^/]+)$' (auth true) ACL Info: Inserting default '/file' (auth ) ACL Info: Inserting default '/certificate_revocation_list/ca' (auth true) ACL Info: Inserting default '~ ^/report/([^/]+)$' (auth true) ACL Info: Inserting default '/certificate/ca' (auth any) ACL Info: Inserting default '/certificate/' (auth any) ACL Info: Inserting default '/certificate_request' (auth any) ACL Info: Inserting default '/status' (auth true) ACL Info: Inserting default '/v2.0/environments' (auth true) ACL Info: Caching node for poss-head-centos.puppetdebug.vlan Info: Caching node for poss-head-centos.puppetdebug.vlan Error: Invalid parameter provider on Vcsrepo[dotfiles] at /etc/puppet/environments/fail/manifests/site.pp:10 on node poss-head-centos.puppetdebug.vlan /puppetlabs/puppet/lib/puppet/resource.rb:442:in `validate_parameter' /puppetlabs/puppet/lib/puppet/parser/resource.rb:264:in `block in validate' /puppetlabs/puppet/lib/puppet/parser/resource.rb:263:in `each' /puppetlabs/puppet/lib/puppet/parser/resource.rb:263:in `validate' /puppetlabs/puppet/lib/puppet/parser/resource.rb:107:in `finish' /puppetlabs/puppet/lib/puppet/parser/compiler.rb:442:in `block in finish' /puppetlabs/puppet/lib/puppet/parser/compiler.rb:430:in `each' /puppetlabs/puppet/lib/puppet/parser/compiler.rb:430:in `finish' /puppetlabs/puppet/lib/puppet/parser/compiler.rb:128:in `block (2 levels) in compile' /puppetlabs/puppet/lib/puppet/util/profiler/none.rb:6:in `profile' /puppetlabs/puppet/lib/puppet/util/profiler.rb:43:in `profile' /puppetlabs/puppet/lib/puppet/parser/compiler.rb:128:in `block in compile' /puppetlabs/puppet/lib/puppet/context.rb:64:in `override' /puppetlabs/puppet/lib/puppet.rb:234:in `override' /puppetlabs/puppet/lib/puppet/parser/compiler.rb:106:in `compile' /puppetlabs/puppet/lib/puppet/parser/compiler.rb:23:in `compile' /puppetlabs/puppet/lib/puppet/indirector/catalog/compiler.rb:95:in `block (2 levels) in compile' /puppetlabs/puppet/lib/puppet/util/profiler/none.rb:6:in `profile' /puppetlabs/puppet/lib/puppet/util/profiler.rb:43:in `profile' /puppetlabs/puppet/lib/puppet/indirector/catalog/compiler.rb:93:in `block in compile' /puppetlabs/puppet/lib/puppet/util.rb:161:in `block in benchmark' /opt/rh/ruby193/root/usr/share/ruby/benchmark.rb:295:in `realtime' /puppetlabs/puppet/lib/puppet/util.rb:160:in `benchmark' /puppetlabs/puppet/lib/puppet/indirector/catalog/compiler.rb:92:in `compile' /puppetlabs/puppet/lib/puppet/indirector/catalog/compiler.rb:52:in `find' /puppetlabs/puppet/lib/puppet/indirector/indirection.rb:201:in `find' /puppetlabs/puppet/lib/puppet/network/http/api/v1.rb:105:in `do_find' /puppetlabs/puppet/lib/puppet/network/http/api/v1.rb:50:in `block in call' /puppetlabs/puppet/lib/puppet/context.rb:64:in `override' /puppetlabs/puppet/lib/puppet.rb:234:in `override' /puppetlabs/puppet/lib/puppet/network/http/api/v1.rb:49:in `call' /puppetlabs/puppet/lib/puppet/network/http/route.rb:82:in `block in process' /puppetlabs/puppet/lib/puppet/network/http/route.rb:81:in `each' /puppetlabs/puppet/lib/puppet/network/http/route.rb:81:in `process' /puppetlabs/puppet/lib/puppet/network/http/handler.rb:63:in `block in process' /puppetlabs/puppet/lib/puppet/util/profiler/none.rb:6:in `profile' /puppetlabs/puppet/lib/puppet/util/profiler.rb:43:in `profile' /puppetlabs/puppet/lib/puppet/network/http/handler.rb:61:in `process' /puppetlabs/puppet/lib/puppet/network/http/webrick/rest.rb:37:in `block in service' <internal:prelude>:10:in `synchronize' /puppetlabs/puppet/lib/puppet/network/http/webrick/rest.rb:36:in `service' /opt/rh/ruby193/root/usr/share/ruby/webrick/httpserver.rb:138:in `service' /opt/rh/ruby193/root/usr/share/ruby/webrick/httpserver.rb:94:in `run' /puppetlabs/puppet/lib/puppet/network/http/webrick.rb:36:in `block (2 levels) in listen' /opt/rh/ruby193/root/usr/share/ruby/webrick/server.rb:191:in `call' /opt/rh/ruby193/root/usr/share/ruby/webrick/server.rb:191:in `block in start_thread' So, compilation is dying in the very last stage when the master is validating the catalog contents before shipping it to the agent. Also worth noting is that the master environment will be "production" unless set to something else: [30] pry(#<Puppet::Parser::Resource>)> Puppet[:environment] => "production" My current theory is: the master can load types from the environment requested by the agent, but it can only load providers from it's own environment. Hence, the Vcsrepo Type is acting like an old primordial Type from the time before providers existed (Yumrepo used to be one of these until it was refactored in 3.5.0). If no providers are loaded, Type.providify never gets called and this method defines the provider parameter that the validator is failing to see. If the master is launched with the same environment that the agent will use, the error disappears: puppet master --no-daemonize --trace --verbose --environment fail I'll dig some more tomorrow to see if my theory is correct. If it is, then this is a bit different than PUP-731 and I'll try to determine why the master is not loading providers from the agent environment.
          Hide
          chuck Charlie Sharpsteen added a comment -

          So, what is happening here is that the Autoloader isn't switching environments correctly.

          When the Vcsrepo type is loaded, a call of this form is used:

          typeloader.load(name, Puppet.lookup(:current_environment))
          

          Where the typeloader is an Autoloader instance. In this case, we explicitly pass the current environment that the master is compiling for.

          Once the type is loaded, we then load all known providers for that type:

          klass.providerloader.loadall
          

          Where providerloader is another Autoloader instance. Note that no environment is passed to this call. Because no environment is passed, there are two places where nil gets used instead. This causes the Autoloader to search Puppet[:environment] instead of the current_environment.

          So, to summarize: when the Puppet master loads a Type, it searches the environment that the agent requested. When it loads providers for that type, it searches the default environment instead of the one the agent requested.

          Andrew Parker: This is a different issue from PUP-731 and one that we could fix. Handing back to you to decide if this should be scheduled for a release.

          Show
          chuck Charlie Sharpsteen added a comment - So, what is happening here is that the Autoloader isn't switching environments correctly. When the Vcsrepo type is loaded, a call of this form is used: typeloader.load(name, Puppet.lookup(:current_environment)) Where the typeloader is an Autoloader instance. In this case, we explicitly pass the current environment that the master is compiling for. Once the type is loaded, we then load all known providers for that type: klass.providerloader.loadall Where providerloader is another Autoloader instance. Note that no environment is passed to this call. Because no environment is passed, there are two places where nil gets used instead. This causes the Autoloader to search Puppet[:environment] instead of the current_environment. So, to summarize: when the Puppet master loads a Type, it searches the environment that the agent requested. When it loads providers for that type, it searches the default environment instead of the one the agent requested. Andrew Parker : This is a different issue from PUP-731 and one that we could fix. Handing back to you to decide if this should be scheduled for a release.
          Hide
          andy Andrew Parker added a comment -

          I've encountered this code before. Unfortunately we don't have time before 3.7 to get a fix in for this. I'm going to target it at 4.0.0 instead, since fixing it might also cause some API breaks.

          Show
          andy Andrew Parker added a comment - I've encountered this code before. Unfortunately we don't have time before 3.7 to get a fix in for this. I'm going to target it at 4.0.0 instead, since fixing it might also cause some API breaks.
          Hide
          eric.sorenson Eric Sorenson added a comment -

          Wow, that's great. Sounds like a very targeted fix that could help a lot of people. Would it be possible to get a branch or "DO NOT MERGE" PR up with a quick spike? That way people affected by it could try out the branch to see if it works in their environments.

          Show
          eric.sorenson Eric Sorenson added a comment - Wow, that's great. Sounds like a very targeted fix that could help a lot of people. Would it be possible to get a branch or "DO NOT MERGE" PR up with a quick spike? That way people affected by it could try out the branch to see if it works in their environments.
          Hide
          chuck Charlie Sharpsteen added a comment -

          Eric Sorenson: I've put the patch I developed while investigating this issue up as PR 2963.

          No tests, no guarantees. But, if someone tries it out and it works, please do let us know!

          Show
          chuck Charlie Sharpsteen added a comment - Eric Sorenson : I've put the patch I developed while investigating this issue up as PR 2963 . No tests, no guarantees. But, if someone tries it out and it works, please do let us know!
          Hide
          richard.raseley Richard Raseley added a comment -

          We are also hitting this issue when using puppet-3.7.3-1.el7 on CentOS Linux release 7.0.1406 (3.10.0-123.el7.x86_64), which is blocking us on a couple items.

          I will try to find the time tomorrow to check and see if the patch (https://github.com/puppetlabs/puppet/pull/2963) mentioned by Charlie Sharpsteen resolves the issue.

          Show
          richard.raseley Richard Raseley added a comment - We are also hitting this issue when using puppet-3.7.3-1.el7 on CentOS Linux release 7.0.1406 (3.10.0-123.el7.x86_64), which is blocking us on a couple items. I will try to find the time tomorrow to check and see if the patch ( https://github.com/puppetlabs/puppet/pull/2963 ) mentioned by Charlie Sharpsteen resolves the issue.
          Hide
          dhs@recommind.com Dirk Heinrichs added a comment -

          Any chance to get this fixed in 3.7.x instead of 4.0.0?

          Show
          dhs@recommind.com Dirk Heinrichs added a comment - Any chance to get this fixed in 3.7.x instead of 4.0.0?
          Hide
          eric.sorenson Eric Sorenson added a comment -

          Dirk Heinrichs there is probably not going to be another 3.x release until just before 4.0 comes out so it wouldn't change things much.

          As an aside, did you try the patch? Did it work for you?

          Kylo Ginsberg can you estimate how much work it would take to get the patch up to snuff? I'm not even sure how you'd test this in a before-and-after sense, but there are a ton of people interested in this bug and I'd hate to see it miss the train.

          Show
          eric.sorenson Eric Sorenson added a comment - Dirk Heinrichs there is probably not going to be another 3.x release until just before 4.0 comes out so it wouldn't change things much. As an aside, did you try the patch? Did it work for you? Kylo Ginsberg can you estimate how much work it would take to get the patch up to snuff? I'm not even sure how you'd test this in a before-and-after sense, but there are a ton of people interested in this bug and I'd hate to see it miss the train.
          Hide
          kylo Kylo Ginsberg added a comment -

          Eric Sorenson I just threw an estimate down for velocity purposes. We reviewed Charlie Sharpsteen's PR at last PR triage and all (me/Henrik/JoshC) agreed that it makes sense on paper.

          However, given that it's about environments - a central and sometimes nuanced area of the code - we did want Joshua Partlow to take a look at the PR for any reservations, etc.

          Show
          kylo Kylo Ginsberg added a comment - Eric Sorenson I just threw an estimate down for velocity purposes. We reviewed Charlie Sharpsteen 's PR at last PR triage and all (me/Henrik/JoshC) agreed that it makes sense on paper. However, given that it's about environments - a central and sometimes nuanced area of the code - we did want Joshua Partlow to take a look at the PR for any reservations, etc.
          Hide
          dhs@recommind.com Dirk Heinrichs added a comment -

          No, I didn't try the patch. The workaround referenced above solved it for me.

          Show
          dhs@recommind.com Dirk Heinrichs added a comment - No, I didn't try the patch. The workaround referenced above solved it for me.
          Hide
          joshua.partlow Joshua Partlow added a comment -

          Commented on the PR; Charlie's patch looks like the correct behavior to me. A test run of acceptance on rhel7 passed as well.

          Show
          joshua.partlow Joshua Partlow added a comment - Commented on the PR; Charlie's patch looks like the correct behavior to me. A test run of acceptance on rhel7 passed as well.
          Hide
          gpaggi Gabriele Paggi added a comment -

          "So, to summarize: when the Puppet master loads a Type, it searches the environment that the agent requested. When it loads providers for that type, it searches the default environment instead of the one the agent requested."

          Charlie Sharpsteen, what is the name of the default environment? Is it "production"?
          I'm seeing the same issue with only one environment named prd. The workaround I'm using is to define a production environment pointing to the same directories as the prd one:

          # Always create production pointing to the first defined environment
          # to circumvent PUP-1515 (pluginsync, custom provider/type)
          [production]
                  manifest = /etc/puppet/environments/prd/manifests/
                  modulepath = /etc/puppet/environments/prd/.....
          [prd]
                  manifest = /etc/puppet/environments/prd/manifests/
                  modulepath = /etc/puppet/environments/prd/......
          

          Show
          gpaggi Gabriele Paggi added a comment - "So, to summarize: when the Puppet master loads a Type, it searches the environment that the agent requested. When it loads providers for that type, it searches the default environment instead of the one the agent requested." Charlie Sharpsteen , what is the name of the default environment? Is it "production"? I'm seeing the same issue with only one environment named prd. The workaround I'm using is to define a production environment pointing to the same directories as the prd one: # Always create production pointing to the first defined environment # to circumvent PUP-1515 (pluginsync, custom provider/type) [production] manifest = /etc/puppet/environments/prd/manifests/ modulepath = /etc/puppet/environments/prd/..... [prd] manifest = /etc/puppet/environments/prd/manifests/ modulepath = /etc/puppet/environments/prd/......
          Hide
          chuck Charlie Sharpsteen added a comment -

          Gabriele Paggi The default environment for the master is usually, almost nearly always production. Specifically, the default is whatever the environment setting has been set to in the master section of puppet.conf. Since most people don't set that, production is used.

          You can check what the value of the default environment is by running the following on a Puppet master:

          puppet config print --section master environment
          

          Show
          chuck Charlie Sharpsteen added a comment - Gabriele Paggi The default environment for the master is usually, almost nearly always production . Specifically, the default is whatever the environment setting has been set to in the master section of puppet.conf . Since most people don't set that, production is used. You can check what the value of the default environment is by running the following on a Puppet master: puppet config print --section master environment
          Hide
          gpaggi Gabriele Paggi added a comment -

          Charlie Sharpsteen Thanks! I didn't have the environment set in the master section indeed.

          Show
          gpaggi Gabriele Paggi added a comment - Charlie Sharpsteen Thanks! I didn't have the environment set in the master section indeed.
          Hide
          josh Josh Cooper added a comment -

          Merged to master in fcc85689

          Show
          josh Josh Cooper added a comment - Merged to master in fcc85689
          Hide
          erict Eric Thompson added a comment -

          verified using eric's reproduction above on rhel7 at SHA: 65bf83f with:

          [root@i8epbide7fr98pz puppet]# puppet agent -tv --vardir /tmp/var/ --environment fail
          Debug: Routes Registered:
          Debug: Route /\/v3/
          Debug: Route /^\/v2\.0/
          Debug: Evaluating match for Route /\/v3/
          Debug: Evaluating match for Route /^\/environments$/
          Debug: Did not match path ("/node/i8epbide7fr98pz.delivery.puppetlabs.net")
          Debug: Evaluating match for Route /.*/
          Info: access[^/v3/catalog/([^/]+)$]: allowing 'method' find
          Info: access[^/v3/catalog/([^/]+)$]: allowing $1 access
          Info: access[^/v3/node/([^/]+)$]: allowing 'method' find
          Info: access[^/v3/node/([^/]+)$]: allowing $1 access
          Info: access[/v3/certificate_revocation_list/ca]: allowing 'method' find
          Info: access[/v3/certificate_revocation_list/ca]: allowing * access
          Info: access[^/v3/report/([^/]+)$]: allowing 'method' save
          Info: access[^/v3/report/([^/]+)$]: allowing $1 access
          Info: access[/v3/file]: allowing * access
          Info: access[/v3/certificate/ca]: adding authentication any
          Info: access[/v3/certificate/ca]: allowing 'method' find
          Info: access[/v3/certificate/ca]: allowing * access
          Info: access[/v3/certificate/]: adding authentication any
          Info: access[/v3/certificate/]: allowing 'method' find
          Info: access[/v3/certificate/]: allowing * access
          Info: access[/v3/certificate_request]: adding authentication any
          Info: access[/v3/certificate_request]: allowing 'method' find
          Info: access[/v3/certificate_request]: allowing 'method' save
          Info: access[/v3/certificate_request]: allowing * access
          Info: access[/v2.0/environments]: allowing 'method' find
          Info: access[/v2.0/environments]: allowing * access
          Info: access[/v3/environments]: allowing 'method' find
          Info: access[/v3/environments]: allowing * access
          Info: access[/]: adding authentication any
          Info: Inserting default '/v3/status' (auth true) ACL
          Debug: Caching environment 'fail' (cache ttl: Infinity)
          Info: Caching node for i8epbide7fr98pz.delivery.puppetlabs.net
          Debug: Failed to load library 'msgpack' for feature 'msgpack'
          Debug: Puppet::Network::Format[msgpack]: feature msgpack is missing
          Debug: node supports formats: pson yaml raw
          Info: Retrieving pluginfacts
          Debug: Routes Registered:
          Debug: Route /\/v3/
          Debug: Route /^\/v2\.0/
          Debug: Evaluating match for Route /\/v3/
          Debug: Evaluating match for Route /^\/environments$/
          Debug: Did not match path ("/file_metadatas/pluginfacts")
          Debug: Evaluating match for Route /.*/
          Debug: No pluginfacts found in subpath '/etc/puppet/environments/fail/modules/vcsrepo/facts.d' (file / directory does not exist)
          Debug: Failed to load library 'msgpack' for feature 'msgpack'
          Debug: Puppet::Network::Format[msgpack]: feature msgpack is missing
          Debug: file_metadata supports formats: pson yaml raw
          Info: Retrieving plugin
          Debug: Routes Registered:
          Debug: Route /\/v3/
          Debug: Route /^\/v2\.0/
          Debug: Evaluating match for Route /\/v3/
          Debug: Evaluating match for Route /^\/environments$/
          Debug: Did not match path ("/file_metadatas/plugins")
          Debug: Evaluating match for Route /.*/
          Debug: Failed to load library 'msgpack' for feature 'msgpack'
          Debug: Puppet::Network::Format[msgpack]: feature msgpack is missing
          Debug: file_metadata supports formats: pson yaml raw
          Notice: /File[/tmp/var/lib/puppet]/ensure: created
          Notice: /File[/tmp/var/lib/puppet/provider]/ensure: created
          Notice: /File[/tmp/var/lib/puppet/provider/vcsrepo]/ensure: created
          Debug: Routes Registered:
          Debug: Route /\/v3/
          Debug: Route /^\/v2\.0/
          Debug: Evaluating match for Route /\/v3/
          Debug: Evaluating match for Route /^\/environments$/
          Debug: Did not match path ("/file_content/plugins/puppet/provider/vcsrepo.rb")
          Debug: Evaluating match for Route /.*/
          Notice: /File[/tmp/var/lib/puppet/provider/vcsrepo.rb]/ensure: defined content as '{md5}dbd72590771291f1db23a41ac048ed9d'
          

          note this portion:

          Notice: /File[/tmp/var/lib/puppet]/ensure: created
          Notice: /File[/tmp/var/lib/puppet/provider]/ensure: created
          Notice: /File[/tmp/var/lib/puppet/provider/vcsrepo]/ensure: created
          

          Show
          erict Eric Thompson added a comment - verified using eric's reproduction above on rhel7 at SHA: 65bf83f with: [root@i8epbide7fr98pz puppet]# puppet agent -tv --vardir /tmp/var/ --environment fail Debug: Routes Registered: Debug: Route /\/v3/ Debug: Route /^\/v2\.0/ Debug: Evaluating match for Route /\/v3/ Debug: Evaluating match for Route /^\/environments$/ Debug: Did not match path ("/node/i8epbide7fr98pz.delivery.puppetlabs.net") Debug: Evaluating match for Route /.*/ Info: access[^/v3/catalog/([^/]+)$]: allowing 'method' find Info: access[^/v3/catalog/([^/]+)$]: allowing $1 access Info: access[^/v3/node/([^/]+)$]: allowing 'method' find Info: access[^/v3/node/([^/]+)$]: allowing $1 access Info: access[/v3/certificate_revocation_list/ca]: allowing 'method' find Info: access[/v3/certificate_revocation_list/ca]: allowing * access Info: access[^/v3/report/([^/]+)$]: allowing 'method' save Info: access[^/v3/report/([^/]+)$]: allowing $1 access Info: access[/v3/file]: allowing * access Info: access[/v3/certificate/ca]: adding authentication any Info: access[/v3/certificate/ca]: allowing 'method' find Info: access[/v3/certificate/ca]: allowing * access Info: access[/v3/certificate/]: adding authentication any Info: access[/v3/certificate/]: allowing 'method' find Info: access[/v3/certificate/]: allowing * access Info: access[/v3/certificate_request]: adding authentication any Info: access[/v3/certificate_request]: allowing 'method' find Info: access[/v3/certificate_request]: allowing 'method' save Info: access[/v3/certificate_request]: allowing * access Info: access[/v2.0/environments]: allowing 'method' find Info: access[/v2.0/environments]: allowing * access Info: access[/v3/environments]: allowing 'method' find Info: access[/v3/environments]: allowing * access Info: access[/]: adding authentication any Info: Inserting default '/v3/status' (auth true) ACL Debug: Caching environment 'fail' (cache ttl: Infinity) Info: Caching node for i8epbide7fr98pz.delivery.puppetlabs.net Debug: Failed to load library 'msgpack' for feature 'msgpack' Debug: Puppet::Network::Format[msgpack]: feature msgpack is missing Debug: node supports formats: pson yaml raw Info: Retrieving pluginfacts Debug: Routes Registered: Debug: Route /\/v3/ Debug: Route /^\/v2\.0/ Debug: Evaluating match for Route /\/v3/ Debug: Evaluating match for Route /^\/environments$/ Debug: Did not match path ("/file_metadatas/pluginfacts") Debug: Evaluating match for Route /.*/ Debug: No pluginfacts found in subpath '/etc/puppet/environments/fail/modules/vcsrepo/facts.d' (file / directory does not exist) Debug: Failed to load library 'msgpack' for feature 'msgpack' Debug: Puppet::Network::Format[msgpack]: feature msgpack is missing Debug: file_metadata supports formats: pson yaml raw Info: Retrieving plugin Debug: Routes Registered: Debug: Route /\/v3/ Debug: Route /^\/v2\.0/ Debug: Evaluating match for Route /\/v3/ Debug: Evaluating match for Route /^\/environments$/ Debug: Did not match path ("/file_metadatas/plugins") Debug: Evaluating match for Route /.*/ Debug: Failed to load library 'msgpack' for feature 'msgpack' Debug: Puppet::Network::Format[msgpack]: feature msgpack is missing Debug: file_metadata supports formats: pson yaml raw Notice: /File[/tmp/var/lib/puppet]/ensure: created Notice: /File[/tmp/var/lib/puppet/provider]/ensure: created Notice: /File[/tmp/var/lib/puppet/provider/vcsrepo]/ensure: created Debug: Routes Registered: Debug: Route /\/v3/ Debug: Route /^\/v2\.0/ Debug: Evaluating match for Route /\/v3/ Debug: Evaluating match for Route /^\/environments$/ Debug: Did not match path ("/file_content/plugins/puppet/provider/vcsrepo.rb") Debug: Evaluating match for Route /.*/ Notice: /File[/tmp/var/lib/puppet/provider/vcsrepo.rb]/ensure: defined content as '{md5}dbd72590771291f1db23a41ac048ed9d' note this portion: Notice: /File[/tmp/var/lib/puppet]/ensure: created Notice: /File[/tmp/var/lib/puppet/provider]/ensure: created Notice: /File[/tmp/var/lib/puppet/provider/vcsrepo]/ensure: created
          Hide
          henrik.lindberg Henrik Lindberg added a comment - - edited

          Reopened as a backport is wanted to 3.7.5.

          The issue has already been resolved on master.

          Show
          henrik.lindberg Henrik Lindberg added a comment - - edited Reopened as a backport is wanted to 3.7.5. The issue has already been resolved on master.
          Hide
          thomas.hallgren Thomas Hallgren added a comment - - edited

          PR-3539 is the same commit rebased to stable.

          Show
          thomas.hallgren Thomas Hallgren added a comment - - edited PR-3539 is the same commit rebased to stable.
          Hide
          henrik.lindberg Henrik Lindberg added a comment -

          Merged to stable at 966f81b

          Show
          henrik.lindberg Henrik Lindberg added a comment - Merged to stable at 966f81b
          Hide
          kurt.wall Kurt Wall added a comment -

          Verified in master at SHA=af02828c7b16aa9c3b9823ba21b9cd60425b9745. Using eric0's reproducer, here's an agent run:

          # puppet agent --test --environment production
          Info: Retrieving pluginfacts
          Info: Retrieving plugin
          Notice: /File[/var/lib/puppet/lib/puppet]/ensure: removed
          Info: Caching catalog for g9nzizk8lqji3m6.delivery.puppetlabs.net
          Info: Applying configuration version '1422565122'
          Notice: current environment is production
          Notice: /Stage[main]/Main/Node[default]/Notify[environment]/message: defined 'message' as 'current environment is production'
          Notice: Applied catalog in 0.02 seconds
           
          # puppet agent --test --environment fail
          Info: Retrieving pluginfacts
          Info: Retrieving plugin
          Notice: /File[/var/lib/puppet/lib/puppet]/ensure: created
          Notice: /File[/var/lib/puppet/lib/puppet/provider]/ensure: created
          Notice: /File[/var/lib/puppet/lib/puppet/provider/vcsrepo]/ensure: created
          Notice: /File[/var/lib/puppet/lib/puppet/provider/vcsrepo.rb]/ensure: defined content as '{md5}dbd72590771291f1db23a41ac048ed9d'
          Notice: /File[/var/lib/puppet/lib/puppet/provider/vcsrepo/bzr.rb]/ensure: defined content as '{md5}9304caa8c45685d741248fb167c47842'
          Notice: /File[/var/lib/puppet/lib/puppet/provider/vcsrepo/cvs.rb]/ensure: defined content as '{md5}0fed7f40f3de82c6490ac241cea46b3a'
          Notice: /File[/var/lib/puppet/lib/puppet/provider/vcsrepo/dummy.rb]/ensure: defined content as '{md5}4490fb75f044bd43855b2962b8f6e301'
          Notice: /File[/var/lib/puppet/lib/puppet/provider/vcsrepo/git.rb]/ensure: defined content as '{md5}8bd810767eafda46956f7477ba917459'
          Notice: /File[/var/lib/puppet/lib/puppet/provider/vcsrepo/hg.rb]/ensure: defined content as '{md5}65a45f4382ed5874eeea3f2c3e0729f1'
          Notice: /File[/var/lib/puppet/lib/puppet/provider/vcsrepo/p4.rb]/ensure: defined content as '{md5}b324e3141913337d5592ebbcb2a7544e'
          Notice: /File[/var/lib/puppet/lib/puppet/provider/vcsrepo/svn.rb]/ensure: defined content as '{md5}da00dfb4a67fd01d4756e6497d5ed7f1'
          Notice: /File[/var/lib/puppet/lib/puppet/type]/ensure: created
          Notice: /File[/var/lib/puppet/lib/puppet/type/vcsrepo.rb]/ensure: defined content as '{md5}0427f46f99137cea53a45d19f2c918f0'
          Info: Caching catalog for g9nzizk8lqji3m6.delivery.puppetlabs.net
          Info: Applying configuration version '1422565330'
          Notice: current environment is fail
          Notice: /Stage[main]/Main/Node[default]/Notify[environment]/message: defined 'message' as 'current environment is fail'
          Notice: /Stage[main]/Main/Node[default]/Vcsrepo[dotfiles]/ensure: Creating repository from present
          Error: Execution of '/usr/bin/git submodule update --init --recursive' returned 1: No submodule mapping found in .gitmodules for path '.vim/bundle/criticmarkup-vim'
          Error: /Stage[main]/Main/Node[default]/Vcsrepo[dotfiles]/ensure: change from absent to present failed: Execution of '/usr/bin/git submodule update --init --recursive' returned 1: No submodule mapping found in .gitmodules for path '.vim/bundle/criticmarkup-vim'
          Info: Node[default]: Unscheduling all events on Node[default]
          Notice: Applied catalog in 1.78 seconds
          

          Log from the master:

          puppet master --no-daemonize --trace --verbose
          Notice: Starting Puppet master version 3.7.4
          Info: access[/puppet/v2.0/environments]: allowing 'method' find
          Info: access[/puppet/v2.0/environments]: allowing * access
          Info: access[/puppet/v3/environments]: allowing 'method' find
          Info: access[/puppet/v3/environments]: allowing * access
          Info: access[^/puppet/v3/catalog/([^/]+)$]: allowing 'method' find
          Info: access[^/puppet/v3/catalog/([^/]+)$]: allowing $1 access
          Info: access[^/puppet/v3/node/([^/]+)$]: allowing 'method' find
          Info: access[^/puppet/v3/node/([^/]+)$]: allowing $1 access
          Info: access[^/puppet/v3/report/([^/]+)$]: allowing 'method' save
          Info: access[^/puppet/v3/report/([^/]+)$]: allowing $1 access
          Info: access[/puppet/v3/file]: allowing * access
          Info: access[/puppet/v3/status]: allowing 'method' find
          Info: access[/puppet/v3/status]: allowing * access
          Info: access[/puppet-ca/v1/certificate_revocation_list/ca]: allowing 'method' find
          Info: access[/puppet-ca/v1/certificate_revocation_list/ca]: allowing * access
          Info: access[/puppet-ca/v1/certificate/ca]: adding authentication any
          Info: access[/puppet-ca/v1/certificate/ca]: allowing 'method' find
          Info: access[/puppet-ca/v1/certificate/ca]: allowing * access
          Info: access[/puppet-ca/v1/certificate/]: adding authentication any
          Info: access[/puppet-ca/v1/certificate/]: allowing 'method' find
          Info: access[/puppet-ca/v1/certificate/]: allowing * access
          Info: access[/puppet-ca/v1/certificate_request]: adding authentication any
          Info: access[/puppet-ca/v1/certificate_request]: allowing 'method' find
          Info: access[/puppet-ca/v1/certificate_request]: allowing 'method' save
          Info: access[/puppet-ca/v1/certificate_request]: allowing * access
          Info: access[/]: adding authentication any
          Info: Caching node for g9nzizk8lqji3m6.delivery.puppetlabs.net
          Info: Caching node for g9nzizk8lqji3m6.delivery.puppetlabs.net
          Notice: Compiled catalog for g9nzizk8lqji3m6.delivery.puppetlabs.net in environment production in 0.37 seconds
          Info: Caching node for g9nzizk8lqji3m6.delivery.puppetlabs.net
          Info: Caching node for g9nzizk8lqji3m6.delivery.puppetlabs.net
          Notice: Compiled catalog for g9nzizk8lqji3m6.delivery.puppetlabs.net in environment fail in 0.04 seconds
          

          Show
          kurt.wall Kurt Wall added a comment - Verified in master at SHA=af02828c7b16aa9c3b9823ba21b9cd60425b9745. Using eric0's reproducer, here's an agent run: # puppet agent --test --environment production Info: Retrieving pluginfacts Info: Retrieving plugin Notice: /File[/var/lib/puppet/lib/puppet]/ensure: removed Info: Caching catalog for g9nzizk8lqji3m6.delivery.puppetlabs.net Info: Applying configuration version '1422565122' Notice: current environment is production Notice: /Stage[main]/Main/Node[default]/Notify[environment]/message: defined 'message' as 'current environment is production' Notice: Applied catalog in 0.02 seconds   # puppet agent --test --environment fail Info: Retrieving pluginfacts Info: Retrieving plugin Notice: /File[/var/lib/puppet/lib/puppet]/ensure: created Notice: /File[/var/lib/puppet/lib/puppet/provider]/ensure: created Notice: /File[/var/lib/puppet/lib/puppet/provider/vcsrepo]/ensure: created Notice: /File[/var/lib/puppet/lib/puppet/provider/vcsrepo.rb]/ensure: defined content as '{md5}dbd72590771291f1db23a41ac048ed9d' Notice: /File[/var/lib/puppet/lib/puppet/provider/vcsrepo/bzr.rb]/ensure: defined content as '{md5}9304caa8c45685d741248fb167c47842' Notice: /File[/var/lib/puppet/lib/puppet/provider/vcsrepo/cvs.rb]/ensure: defined content as '{md5}0fed7f40f3de82c6490ac241cea46b3a' Notice: /File[/var/lib/puppet/lib/puppet/provider/vcsrepo/dummy.rb]/ensure: defined content as '{md5}4490fb75f044bd43855b2962b8f6e301' Notice: /File[/var/lib/puppet/lib/puppet/provider/vcsrepo/git.rb]/ensure: defined content as '{md5}8bd810767eafda46956f7477ba917459' Notice: /File[/var/lib/puppet/lib/puppet/provider/vcsrepo/hg.rb]/ensure: defined content as '{md5}65a45f4382ed5874eeea3f2c3e0729f1' Notice: /File[/var/lib/puppet/lib/puppet/provider/vcsrepo/p4.rb]/ensure: defined content as '{md5}b324e3141913337d5592ebbcb2a7544e' Notice: /File[/var/lib/puppet/lib/puppet/provider/vcsrepo/svn.rb]/ensure: defined content as '{md5}da00dfb4a67fd01d4756e6497d5ed7f1' Notice: /File[/var/lib/puppet/lib/puppet/type]/ensure: created Notice: /File[/var/lib/puppet/lib/puppet/type/vcsrepo.rb]/ensure: defined content as '{md5}0427f46f99137cea53a45d19f2c918f0' Info: Caching catalog for g9nzizk8lqji3m6.delivery.puppetlabs.net Info: Applying configuration version '1422565330' Notice: current environment is fail Notice: /Stage[main]/Main/Node[default]/Notify[environment]/message: defined 'message' as 'current environment is fail' Notice: /Stage[main]/Main/Node[default]/Vcsrepo[dotfiles]/ensure: Creating repository from present Error: Execution of '/usr/bin/git submodule update --init --recursive' returned 1: No submodule mapping found in .gitmodules for path '.vim/bundle/criticmarkup-vim' Error: /Stage[main]/Main/Node[default]/Vcsrepo[dotfiles]/ensure: change from absent to present failed: Execution of '/usr/bin/git submodule update --init --recursive' returned 1: No submodule mapping found in .gitmodules for path '.vim/bundle/criticmarkup-vim' Info: Node[default]: Unscheduling all events on Node[default] Notice: Applied catalog in 1.78 seconds Log from the master: puppet master --no-daemonize --trace --verbose Notice: Starting Puppet master version 3.7.4 Info: access[/puppet/v2.0/environments]: allowing 'method' find Info: access[/puppet/v2.0/environments]: allowing * access Info: access[/puppet/v3/environments]: allowing 'method' find Info: access[/puppet/v3/environments]: allowing * access Info: access[^/puppet/v3/catalog/([^/]+)$]: allowing 'method' find Info: access[^/puppet/v3/catalog/([^/]+)$]: allowing $1 access Info: access[^/puppet/v3/node/([^/]+)$]: allowing 'method' find Info: access[^/puppet/v3/node/([^/]+)$]: allowing $1 access Info: access[^/puppet/v3/report/([^/]+)$]: allowing 'method' save Info: access[^/puppet/v3/report/([^/]+)$]: allowing $1 access Info: access[/puppet/v3/file]: allowing * access Info: access[/puppet/v3/status]: allowing 'method' find Info: access[/puppet/v3/status]: allowing * access Info: access[/puppet-ca/v1/certificate_revocation_list/ca]: allowing 'method' find Info: access[/puppet-ca/v1/certificate_revocation_list/ca]: allowing * access Info: access[/puppet-ca/v1/certificate/ca]: adding authentication any Info: access[/puppet-ca/v1/certificate/ca]: allowing 'method' find Info: access[/puppet-ca/v1/certificate/ca]: allowing * access Info: access[/puppet-ca/v1/certificate/]: adding authentication any Info: access[/puppet-ca/v1/certificate/]: allowing 'method' find Info: access[/puppet-ca/v1/certificate/]: allowing * access Info: access[/puppet-ca/v1/certificate_request]: adding authentication any Info: access[/puppet-ca/v1/certificate_request]: allowing 'method' find Info: access[/puppet-ca/v1/certificate_request]: allowing 'method' save Info: access[/puppet-ca/v1/certificate_request]: allowing * access Info: access[/]: adding authentication any Info: Caching node for g9nzizk8lqji3m6.delivery.puppetlabs.net Info: Caching node for g9nzizk8lqji3m6.delivery.puppetlabs.net Notice: Compiled catalog for g9nzizk8lqji3m6.delivery.puppetlabs.net in environment production in 0.37 seconds Info: Caching node for g9nzizk8lqji3m6.delivery.puppetlabs.net Info: Caching node for g9nzizk8lqji3m6.delivery.puppetlabs.net Notice: Compiled catalog for g9nzizk8lqji3m6.delivery.puppetlabs.net in environment fail in 0.04 seconds
          Hide
          kurt.wall Kurt Wall added a comment -

          I get the same result if I run against the fail environment before the production environment.

          # puppet agent --test --environment fail
          Info: Retrieving pluginfacts
          Info: Retrieving plugin
          Notice: /File[/var/lib/puppet/lib/puppet]/ensure: created
          Notice: /File[/var/lib/puppet/lib/puppet/provider]/ensure: created
          Notice: /File[/var/lib/puppet/lib/puppet/provider/vcsrepo]/ensure: created
          Notice: /File[/var/lib/puppet/lib/puppet/provider/vcsrepo.rb]/ensure: defined content as '{md5}dbd72590771291f1db23a41ac048ed9d'
          Notice: /File[/var/lib/puppet/lib/puppet/provider/vcsrepo/bzr.rb]/ensure: defined content as '{md5}9304caa8c45685d741248fb167c47842'
          Notice: /File[/var/lib/puppet/lib/puppet/provider/vcsrepo/cvs.rb]/ensure: defined content as '{md5}0fed7f40f3de82c6490ac241cea46b3a'
          Notice: /File[/var/lib/puppet/lib/puppet/provider/vcsrepo/dummy.rb]/ensure: defined content as '{md5}4490fb75f044bd43855b2962b8f6e301'
          Notice: /File[/var/lib/puppet/lib/puppet/provider/vcsrepo/git.rb]/ensure: defined content as '{md5}8bd810767eafda46956f7477ba917459'
          Notice: /File[/var/lib/puppet/lib/puppet/provider/vcsrepo/hg.rb]/ensure: defined content as '{md5}65a45f4382ed5874eeea3f2c3e0729f1'
          Notice: /File[/var/lib/puppet/lib/puppet/provider/vcsrepo/p4.rb]/ensure: defined content as '{md5}b324e3141913337d5592ebbcb2a7544e'
          Notice: /File[/var/lib/puppet/lib/puppet/provider/vcsrepo/svn.rb]/ensure: defined content as '{md5}da00dfb4a67fd01d4756e6497d5ed7f1'
          Notice: /File[/var/lib/puppet/lib/puppet/type]/ensure: created
          Notice: /File[/var/lib/puppet/lib/puppet/type/vcsrepo.rb]/ensure: defined content as '{md5}0427f46f99137cea53a45d19f2c918f0'
          Info: Caching catalog for g9nzizk8lqji3m6.delivery.puppetlabs.net
          Info: Applying configuration version '1422566428'
          Notice: current environment is fail
          Notice: /Stage[main]/Main/Node[default]/Notify[environment]/message: defined 'message' as 'current environment is fail'
          Notice: Applied catalog in 1.54 seconds
          

          Show
          kurt.wall Kurt Wall added a comment - I get the same result if I run against the fail environment before the production environment. # puppet agent --test --environment fail Info: Retrieving pluginfacts Info: Retrieving plugin Notice: /File[/var/lib/puppet/lib/puppet]/ensure: created Notice: /File[/var/lib/puppet/lib/puppet/provider]/ensure: created Notice: /File[/var/lib/puppet/lib/puppet/provider/vcsrepo]/ensure: created Notice: /File[/var/lib/puppet/lib/puppet/provider/vcsrepo.rb]/ensure: defined content as '{md5}dbd72590771291f1db23a41ac048ed9d' Notice: /File[/var/lib/puppet/lib/puppet/provider/vcsrepo/bzr.rb]/ensure: defined content as '{md5}9304caa8c45685d741248fb167c47842' Notice: /File[/var/lib/puppet/lib/puppet/provider/vcsrepo/cvs.rb]/ensure: defined content as '{md5}0fed7f40f3de82c6490ac241cea46b3a' Notice: /File[/var/lib/puppet/lib/puppet/provider/vcsrepo/dummy.rb]/ensure: defined content as '{md5}4490fb75f044bd43855b2962b8f6e301' Notice: /File[/var/lib/puppet/lib/puppet/provider/vcsrepo/git.rb]/ensure: defined content as '{md5}8bd810767eafda46956f7477ba917459' Notice: /File[/var/lib/puppet/lib/puppet/provider/vcsrepo/hg.rb]/ensure: defined content as '{md5}65a45f4382ed5874eeea3f2c3e0729f1' Notice: /File[/var/lib/puppet/lib/puppet/provider/vcsrepo/p4.rb]/ensure: defined content as '{md5}b324e3141913337d5592ebbcb2a7544e' Notice: /File[/var/lib/puppet/lib/puppet/provider/vcsrepo/svn.rb]/ensure: defined content as '{md5}da00dfb4a67fd01d4756e6497d5ed7f1' Notice: /File[/var/lib/puppet/lib/puppet/type]/ensure: created Notice: /File[/var/lib/puppet/lib/puppet/type/vcsrepo.rb]/ensure: defined content as '{md5}0427f46f99137cea53a45d19f2c918f0' Info: Caching catalog for g9nzizk8lqji3m6.delivery.puppetlabs.net Info: Applying configuration version '1422566428' Notice: current environment is fail Notice: /Stage[main]/Main/Node[default]/Notify[environment]/message: defined 'message' as 'current environment is fail' Notice: Applied catalog in 1.54 seconds
          Hide
          erict Eric Thompson added a comment -

          Nicholas Fagerlund i think the fix makes it work the way you'd expect. If you have a custom type/provider in another environment that is broken, it should not produce an error in another environment. Previously the autoloader would load types and providers from the default environment (production) during one phase of the compilation.
          The fix is to ensure we autoload types and providers from the same environment that is specified.

          Show
          erict Eric Thompson added a comment - Nicholas Fagerlund i think the fix makes it work the way you'd expect. If you have a custom type/provider in another environment that is broken, it should not produce an error in another environment. Previously the autoloader would load types and providers from the default environment (production) during one phase of the compilation. The fix is to ensure we autoload types and providers from the same environment that is specified.
          Hide
          esalberg E Salberg added a comment - - edited

          Not to hijack this ticket, but I just ran into a situation (on PE 3.7.2) where I updated a module with a custom type/provider, and while I could see the updated type/provider in my environments, the agent could not utilize them until I restarted the pe-puppetserver process. If we're talking about loading providers from specified environments, could there be a situation of needing to kick the pe-puppetserver process in between, or was my situation different / unrelated?

          Show
          esalberg E Salberg added a comment - - edited Not to hijack this ticket, but I just ran into a situation (on PE 3.7.2) where I updated a module with a custom type/provider, and while I could see the updated type/provider in my environments, the agent could not utilize them until I restarted the pe-puppetserver process. If we're talking about loading providers from specified environments, could there be a situation of needing to kick the pe-puppetserver process in between, or was my situation different / unrelated?
          Hide
          henrik.lindberg Henrik Lindberg added a comment -

          E Salberg The problem you are describing is most likely something else. This ticket is for a problem when the compiler validates a resource and picks a provider from the wrong environment. Sounds more related to similar problems with pluginsync.

          Show
          henrik.lindberg Henrik Lindberg added a comment - E Salberg The problem you are describing is most likely something else. This ticket is for a problem when the compiler validates a resource and picks a provider from the wrong environment. Sounds more related to similar problems with pluginsync.
          Hide
          robinbowes Robin Bowes added a comment -

          I appear to be running into this very issue (with the puppetboard module, that uses vcsrepo).

          Is there a fix/workaround?

          Show
          robinbowes Robin Bowes added a comment - I appear to be running into this very issue (with the puppetboard module, that uses vcsrepo). Is there a fix/workaround?
          Hide
          henrik.lindberg Henrik Lindberg added a comment -

          A fix for this issue will be included in the Puppet 3.7.5 and 4.0.0 releases.

          Show
          henrik.lindberg Henrik Lindberg added a comment - A fix for this issue will be included in the Puppet 3.7.5 and 4.0.0 releases.
          Hide
          robinbowes Robin Bowes added a comment -

          Thanks Henrik.

          Show
          robinbowes Robin Bowes added a comment - Thanks Henrik.
          Hide
          chris282 Christophe Bordier added a comment - - edited

          root@thalassa:/root # puppet agent --test
          /opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/defaults.rb:214: warning: Insecure world writable dir /usr in PATH, mode 0240777
          Info: Retrieving pluginfacts
          Info: Retrieving plugin
          Info: Loading facts
          Info: Caching catalog for thalassa
          Error: Failed to apply catalog: Parameter provider failed on File[/home/cissys]: Invalid file provider 'svn' at /etc/puppetlabs/puppet/modules/sync_scripts/manifests/init.pp:9
          Wrapped exception:
          Invalid file provider 'svn'

          Please commit a fix for this, as this is the only way to get files synchronized with a source repository.
          This issue is blokcing and is significantly bad for a framework named as in version "3" "dot" "7"

          Here is a link with the same error as the others users on this bug
          https://drive.google.com/file/d/0B-wGewYKm47hLW01R21ubTkwbkE/view?usp=sharing

          Show
          chris282 Christophe Bordier added a comment - - edited root@thalassa:/root # puppet agent --test /opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/defaults.rb:214: warning: Insecure world writable dir /usr in PATH, mode 0240777 Info: Retrieving pluginfacts Info: Retrieving plugin Info: Loading facts Info: Caching catalog for thalassa Error: Failed to apply catalog: Parameter provider failed on File [/home/cissys] : Invalid file provider 'svn' at /etc/puppetlabs/puppet/modules/sync_scripts/manifests/init.pp:9 Wrapped exception: Invalid file provider 'svn' Please commit a fix for this, as this is the only way to get files synchronized with a source repository. This issue is blokcing and is significantly bad for a framework named as in version "3" "dot" "7" Here is a link with the same error as the others users on this bug https://drive.google.com/file/d/0B-wGewYKm47hLW01R21ubTkwbkE/view?usp=sharing
          Hide
          henrik.lindberg Henrik Lindberg added a comment -

          Christophe Bordier Regarding your comment - how did you conclude it was this particular issue? It is already fixed, and as noted above will be released in Puppet 3.7.5 / Puppet 4.0.0 quite soon. It would be very helpful if you would like to try out the fix and see if it cures your problem. Or is that what you have already tried, and hence request "please commit a fix for this" - can you explain?

          Show
          henrik.lindberg Henrik Lindberg added a comment - Christophe Bordier Regarding your comment - how did you conclude it was this particular issue? It is already fixed, and as noted above will be released in Puppet 3.7.5 / Puppet 4.0.0 quite soon. It would be very helpful if you would like to try out the fix and see if it cures your problem. Or is that what you have already tried, and hence request "please commit a fix for this" - can you explain?
          Hide
          chris282 Christophe Bordier added a comment - - edited

          Here is a link with the same error as the others users on this bug
          https://drive.google.com/file/d/0B-wGewYKm47hLW01R21ubTkwbkE/view?usp=sharing
          Please note that yesterday this page was filled with "Not Fixed" with a sprint date in the past, in January
          And thanks for the admin editing my posts I love you
          Waiting for 3.7.5 to be released

          Show
          chris282 Christophe Bordier added a comment - - edited Here is a link with the same error as the others users on this bug https://drive.google.com/file/d/0B-wGewYKm47hLW01R21ubTkwbkE/view?usp=sharing Please note that yesterday this page was filled with "Not Fixed" with a sprint date in the past, in January And thanks for the admin editing my posts I love you Waiting for 3.7.5 to be released
          Hide
          henrik.lindberg Henrik Lindberg added a comment - - edited

          In general, when a fix-version is assigned the fix is planned to go into that release. The closer to actual release we get the more accurate that field is for the pending release. If code has been merged you can pretty much count on that it will be released in the next release. We do not mark something as "fixed/closed" until we actually release. The state "Resolved" is the highest state of being done that we use until it has been released.

          If I understand your comment correctly Christophe Bordier the things you pointed to does not add any new information or additional cases to the already fixed problem.

          Show
          henrik.lindberg Henrik Lindberg added a comment - - edited In general, when a fix-version is assigned the fix is planned to go into that release. The closer to actual release we get the more accurate that field is for the pending release. If code has been merged you can pretty much count on that it will be released in the next release. We do not mark something as "fixed/closed" until we actually release. The state "Resolved" is the highest state of being done that we use until it has been released. If I understand your comment correctly Christophe Bordier the things you pointed to does not add any new information or additional cases to the already fixed problem.
          Hide
          chris282 Christophe Bordier added a comment -

          You can't say it is "already fixed" it will be "already fixed" when Puppet consumers will be using 3.7.5..., not the case at the moment...
          Currently it is revised in the Puppet contributors repository.
          I'm a French guy and words are important to not confuse anyone.

          Show
          chris282 Christophe Bordier added a comment - You can't say it is "already fixed" it will be "already fixed" when Puppet consumers will be using 3.7.5..., not the case at the moment... Currently it is revised in the Puppet contributors repository. I'm a French guy and words are important to not confuse anyone.
          Hide
          henrik.lindberg Henrik Lindberg added a comment -

          We use specific terms for the states of tickets. "Resoved Fixed" (the state this ticket is in now) means that it is fixed, but not yet released.

          Show
          henrik.lindberg Henrik Lindberg added a comment - We use specific terms for the states of tickets. "Resoved Fixed" (the state this ticket is in now) means that it is fixed, but not yet released.

            People

            • Assignee:
              l.smith Lindsey Smith
              Reporter:
              redmine.exporter redmine.exporter
              QA Contact:
              Kurt Wall
            • Votes:
              26 Vote for this issue
              Watchers:
              55 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Agile