Comment 0 for bug 1554800

Revision history for this message
Oleksandr Martsyniuk (omartsyniuk) wrote :

Steps to reproduce:

1 Create an environment with "Neutron with tunneling segmentation" as a network configuration
2 Enable and configure Contrail plugin
3 Add a controller and compute nodes
4 Add a node with "contrail-db", "contarail-config" and "contrail-control" roles
5 Deploy cluster

Actual result:
Deployment failed,
from astute log
2016-03-08 22:59:28 ERR [710] Unexpected error Failed to execute hook 'contrail-3.0.0' Puppet run failed. Check puppet logs for details
---
uids:
- '1'
parameters:
  puppet_modules: puppet/modules:/etc/puppet/modules
  puppet_manifest: puppet/manifests/common-repo.pp
  timeout: 720
  cwd: "/etc/fuel/plugins/contrail-3.0/"
priority: 2800
fail_on_error: true
type: puppet
diagnostic_name: contrail-3.0.0

from puppet log
2016-03-08 22:59:27 +0000 Puppet (err): Could not run: Could not retrieve facts for node-1.domain.tld: No such file or directory - /etc/astute.yaml
/etc/fuel/plugins/contrail-3.0/puppet/modules/contrail/lib/facter/sriov_devices.rb:24:in `initialize'
/etc/fuel/plugins/contrail-3.0/puppet/modules/contrail/lib/facter/sriov_devices.rb:24:in `open'
/etc/fuel/plugins/contrail-3.0/puppet/modules/contrail/lib/facter/sriov_devices.rb:24:in `<top (required)>'
/usr/lib/ruby/vendor_ruby/facter/util/loader.rb:95:in `load'
/usr/lib/ruby/vendor_ruby/facter/util/loader.rb:95:in `load_file'
/usr/lib/ruby/vendor_ruby/facter/util/loader.rb:46:in `block (2 levels) in load_all'
/usr/lib/ruby/vendor_ruby/facter/util/loader.rb:41:in `each'
/usr/lib/ruby/vendor_ruby/facter/util/loader.rb:41:in `block in load_all'
/usr/lib/ruby/vendor_ruby/facter/util/loader.rb:38:in `each'
/usr/lib/ruby/vendor_ruby/facter/util/loader.rb:38:in `load_all'
/usr/lib/ruby/vendor_ruby/facter/util/collection.rb:115:in `load_all'
/usr/lib/ruby/vendor_ruby/facter.rb:248:in `loadfacts'
/usr/lib/ruby/vendor_ruby/puppet/indirector/facts/facter.rb:13:in `reload_facter'
/usr/lib/ruby/vendor_ruby/puppet/indirector/facts/facter.rb:78:in `find'
/usr/lib/ruby/vendor_ruby/puppet/indirector/indirection.rb:201:in `find'
/usr/lib/ruby/vendor_ruby/puppet/node.rb:94:in `fact_merge'
/usr/lib/ruby/vendor_ruby/puppet/indirector/node/plain.rb:17:in `find'
/usr/lib/ruby/vendor_ruby/puppet/indirector/indirection.rb:201:in `find'
/usr/lib/ruby/vendor_ruby/puppet/application/apply.rb:182:in `main'
/usr/lib/ruby/vendor_ruby/puppet/application/apply.rb:146:in `run_command'
/usr/lib/ruby/vendor_ruby/puppet/application.rb:364:in `block (2 levels) in run'
/usr/lib/ruby/vendor_ruby/puppet/application.rb:470:in `plugin_hook'
/usr/lib/ruby/vendor_ruby/puppet/application.rb:364:in `block in run'
/usr/lib/ruby/vendor_ruby/puppet/util.rb:478:in `exit_on_fail'
/usr/lib/ruby/vendor_ruby/puppet/application.rb:364:in `run'
/usr/lib/ruby/vendor_ruby/puppet/util/command_line.rb:137:in `run'
/usr/lib/ruby/vendor_ruby/puppet/util/command_line.rb:91:in `execute'
/usr/bin/puppet:4:in `<main>'

Possible cause of problem is a custom fact sriov_devices, which requires /etc/astute.yaml file, which may be not available on pre-deploy.
Proposed solution - convert the fact into custom parser function, which will be called only from manifests that actually make use of it.