foreman with puppet 3 Could not find value for $confdir - puppet

i cannot start foreman under puppet version 3
foreman/usr/lib/ruby/vendor_ruby/puppet/settings.rb:252:in `convert': Error converting value for param 'hostcert': Error converting value for param 'certdir': Error converting value for param 'ssldir': Could not find value for $confdir (Puppet::Settings::InterpolationError)
from /usr/lib/ruby/vendor_ruby/puppet/settings.rb:243:in `gsub'
from /usr/lib/ruby/vendor_ruby/puppet/settings.rb:243:in `convert'
from /usr/lib/ruby/vendor_ruby/puppet/settings.rb:971:in `value'
from /usr/lib/ruby/vendor_ruby/puppet/settings.rb:249:in `convert'
from /usr/lib/ruby/vendor_ruby/puppet/settings.rb:243:in `gsub'
from /usr/lib/ruby/vendor_ruby/puppet/settings.rb:243:in `convert'
from /usr/lib/ruby/vendor_ruby/puppet/settings.rb:971:in `value'
from /usr/lib/ruby/vendor_ruby/puppet/settings.rb:249:in `convert'
from /usr/lib/ruby/vendor_ruby/puppet/settings.rb:243:in `gsub'
from /usr/lib/ruby/vendor_ruby/puppet/settings.rb:243:in `convert'
from /usr/lib/ruby/vendor_ruby/puppet/settings.rb:971:in `value'
from /usr/lib/ruby/vendor_ruby/puppet/settings.rb:66:in `[]'
from /usr/share/foreman/lib/foreman/default_settings/loader.rb:43:in `load'
from /usr/share/foreman/vendor/ruby/1.8/gems/activerecord-3.0.17/lib/active_record/connection_adapters/abstract/database_statements.rb:139:in `transaction'
from /usr/share/foreman/vendor/ruby/1.8/gems/activerecord-3.0.17/lib/active_record/transactions.rb:207:in `transaction'
from /usr/share/foreman/lib/foreman/default_settings/loader.rb:28:in `load'
from /usr/share/foreman/config/initializers/foreman.rb:4
from /usr/share/foreman/vendor/ruby/1.8/gems/activesupport-3.0.17/lib/active_support/dependencies.rb:236:in `load'
from /usr/share/foreman/vendor/ruby/1.8/gems/activesupport-3.0.17/lib/active_support/dependencies.rb:236:in `load'
from /usr/share/foreman/vendor/ruby/1.8/gems/activesupport-3.0.17/lib/active_support/dependencies.rb:227:in `load_dependency'
from /usr/share/foreman/vendor/ruby/1.8/gems/activesupport-3.0.17/lib/active_support/dependencies.rb:236:in `load'
from /usr/share/foreman/vendor/ruby/1.8/gems/railties-3.0.17/lib/rails/engine.rb:201
from /usr/share/foreman/vendor/ruby/1.8/gems/railties-3.0.17/lib/rails/engine.rb:200:in `each'
from /usr/share/foreman/vendor/ruby/1.8/gems/railties-3.0.17/lib/rails/engine.rb:200
from /usr/share/foreman/vendor/ruby/1.8/gems/railties-3.0.17/lib/rails/initializable.rb:25:in `instance_exec'
from /usr/share/foreman/vendor/ruby/1.8/gems/railties-3.0.17/lib/rails/initializable.rb:25:in `run'
from /usr/share/foreman/vendor/ruby/1.8/gems/railties-3.0.17/lib/rails/initializable.rb:50:in `run_initializers'
from /usr/share/foreman/vendor/ruby/1.8/gems/railties-3.0.17/lib/rails/initializable.rb:49:in `each'
from /usr/share/foreman/vendor/ruby/1.8/gems/railties-3.0.17/lib/rails/initializable.rb:49:in `run_initializers'
from /usr/share/foreman/vendor/ruby/1.8/gems/railties-3.0.17/lib/rails/application.rb:134:in `initialize!'
from /usr/share/foreman/vendor/ruby/1.8/gems/railties-3.0.17/lib/rails/application.rb:77:in `send'
from /usr/share/foreman/vendor/ruby/1.8/gems/railties-3.0.17/lib/rails/application.rb:77:in `method_missing'
from /usr/share/foreman/config/environment.rb:5
from /usr/share/foreman/vendor/ruby/1.8/gems/activesupport-3.0.17/lib/active_support/dependencies.rb:242:in `require'
from /usr/share/foreman/vendor/ruby/1.8/gems/activesupport-3.0.17/lib/active_support/dependencies.rb:242:in `require'
from /usr/share/foreman/vendor/ruby/1.8/gems/activesupport-3.0.17/lib/active_support/dependencies.rb:225:in `load_dependency'
from /usr/share/foreman/vendor/ruby/1.8/gems/activesupport-3.0.17/lib/active_support/dependencies.rb:597:in `new_constants_in'
from /usr/share/foreman/vendor/ruby/1.8/gems/activesupport-3.0.17/lib/active_support/dependencies.rb:225:in `load_dependency'
from /usr/share/foreman/vendor/ruby/1.8/gems/activesupport-3.0.17/lib/active_support/dependencies.rb:242:in `require'
from /usr/share/foreman/config.ru:3
from /usr/share/foreman/vendor/ruby/1.8/gems/rack-1.2.5/lib/rack/builder.rb:46:in `instance_eval'
from /usr/share/foreman/vendor/ruby/1.8/gems/rack-1.2.5/lib/rack/builder.rb:46:in `initialize'
from /usr/share/foreman/config.ru:1:in `new'
from /usr/share/foreman/config.ru:1
failed!
i have applied all the workarounds from the below urls and still could not resolve it
http://theforeman.org/attachments/410/3_0-hack.patch
http://theforeman.org/projects/foreman/wiki/PuppetThreeWorkarounds
https://groups.google.com/forum/?fromgroups=#!topic/foreman-users/QHyu-U7nE6Q
http://theforeman.org/projects/foreman/wiki/Troubleshooting
below is my puppet.conf
[main]
logdir=/var/log/puppet
vardir=/var/lib/puppet
ssldir=/var/lib/puppet/ssl
rundir=/var/run/puppet
factpath=/var/lib/puppet/lib/facter
templatedir=/etc/puppet/templates
hostcert = /var/lib/puppet/ssl/certs/puppet.pem
certdir = /var/lib/puppet/ssl/certs
[master]
ssl_client_header = SSL_CLIENT_S_DN
ssl_client_verify_header = SSL_CLIENT_VERIFY
#reports
reports = http,store
reporturl = http://puppet:3000/reports
i tried manually adding confdir=/etc/puppet to the puppet.conf and still dint help
i have restarted all the foreman-proxy and puppet services and still no luck. appreciate any help to start foreman on this box.
puppet version 3.0.1,foreman version 1.0 on debian 2.6.32-5
Thanks

I've been making a few changes to squash this recently and have been updating the PuppetThreeWorkarounds page that you mentioned.
With nightly packages from 6th December, or the 1.1 RC1, this issue should be resolved.

Related

NoMethodError (undefined method `aasm_state') when saving a record

When saving payment request, there is an error popping up:
NoMethodError (undefined method `aasm_state' for #<PaymentRequestx::PaymentRequest:0x007f574d229df8>):
activemodel (4.2.0) lib/active_model/attribute_methods.rb:433:in `method_missing'
aasm (4.11.0) lib/aasm/persistence/base.rb:36:in `aasm_read_state'
aasm (4.11.0) lib/aasm/instance_base.rb:12:in `current_state'
aasm (4.11.0) lib/aasm/persistence/active_record_persistence.rb:233:in `aasm_invalid_state?'
aasm (4.11.0) lib/aasm/persistence/active_record_persistence.rb:225:in `block in aasm_validate_states'
aasm (4.11.0) lib/aasm/persistence/active_record_persistence.rb:223:in `each'
aasm (4.11.0) lib/aasm/persistence/active_record_persistence.rb:223:in `aasm_validate_states'
activesupport (4.2.0) lib/active_support/callbacks.rb:427:in `block in make_lambda'
activesupport (4.2.0) lib/active_support/callbacks.rb:189:in `call'
activesupport (4.2.0) lib/active_support/callbacks.rb:189:in `block in simple'
activesupport (4.2.0) lib/active_support/callbacks.rb:92:in `call'
activesupport (4.2.0) lib/active_support/callbacks.rb:92:in `_run_callbacks'
activesupport (4.2.0) lib/active_support/callbacks.rb:734:in `_run_validate_callbacks'
activemodel (4.2.0) lib/active_model/validations.rb:395:in `run_validations!'
activemodel (4.2.0) lib/active_model/validations/callbacks.rb:113:in `block in run_validations!'
activesupport (4.2.0) lib/active_support/callbacks.rb:88:in `call'
activesupport (4.2.0) lib/active_support/callbacks.rb:88:in `_run_callbacks'
activesupport (4.2.0) lib/active_support/callbacks.rb:734:in `_run_validation_callbacks'
activemodel (4.2.0) lib/active_model/validations/callbacks.rb:113:in `run_validations!'
activemodel (4.2.0) lib/active_model/validations.rb:334:in `valid?'
activerecord (4.2.0) lib/active_record/validations.rb:58:in `valid?'
activerecord (4.2.0) lib/active_record/validations.rb:83:in `perform_validations'
activerecord (4.2.0) lib/active_record/validations.rb:37:in `save'
activerecord (4.2.0) lib/active_record/attribute_methods/dirty.rb:21:in `save'
activerecord (4.2.0) lib/active_record/transactions.rb:286:in `block (2 levels) in save'
activerecord (4.2.0) lib/active_record/transactions.rb:347:in `block in with_transaction_returning_status'
activerecord (4.2.0) lib/active_record/connection_adapters/abstract/database_statements.rb:213:in `block in transaction'
activerecord (4.2.0) lib/active_record/connection_adapters/abstract/transaction.rb:188:in `within_new_transaction'
activerecord (4.2.0) lib/active_record/connection_adapters/abstract/database_statements.rb:213:in `transaction'
activerecord (4.2.0) lib/active_record/transactions.rb:220:in `transaction'
activerecord (4.2.0) lib/active_record/transactions.rb:344:in `with_transaction_returning_status'
activerecord (4.2.0) lib/active_record/transactions.rb:286:in `block in save'
activerecord (4.2.0) lib/active_record/transactions.rb:301:in `rollback_active_record_state!'
activerecord (4.2.0) lib/active_record/transactions.rb:285:in `save'
/home/ubuntu/.rvm/gems/ruby-2.2.4/bundler/gems/payment_requestx-7836ca37b30f/app/controllers/payment_requestx/payment_requests_controller.rb:45:in `create'
The error occurs when saving in payment_requests_controller.rb:
if #payment_request.save
Before that, there is a saving of payment request successfully. What's the problem with gem AASM?
Make sure you've added the column required by AASM with a migration.
When using AASM, you need to include AASM to targeted model.
class Job < ActiveRecord::Base
include AASM
aasm do
state :sleeping, initial: true
state :running
event :run, after_commit: :notify_about_running_job do
transitions from: :sleeping, to: :running
end
end
def notify_about_running_job
...
end
end
after that you need to generate a migration, so the targeted model database table has this aasm_state field.
def self.up
add_column :jobs, :aasm_state, :string
end
def self.down
remove_column :jobs, :aasm_state
end
end
after migration, AASM should work.
If you doesn't want to add column aasm_state on your table.
Just add on your model.rb
aasm_column :your_column

file_field().set crashing watir

When using file_field().set, my watir script crahes with a huge stack trace. I'm running on Windows 7 64, using Watir through cucumber. I am using IE10 as my browser.
Here is the beginning of it:
C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/adapter/win_32/functions.rb:294:
ruby 1.9.3p545 (2014-02-24) [i386-mingw32]
And here is the end:
c:/Code/trunk/source/cucumber/webapp/lib/cucumber/lcpic/features/step_definition/newbusiness.rb:465:in `block in <top (required)>'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-classic-4.0.1/lib/watir-classic/element_extensions.rb:19:in `method_missing'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-classic-4.0.1/lib/watir-classic/dialogs/file_field.rb:34:in `set'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-classic-4.0.1/lib/watir-classic/dialogs/file_field.rb:48:in `set_file_name'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/window.rb:214:in `text_field'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/window.rb:224:in `wait_until_present'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/wait_helper.rb:15:in `wait_until'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/window.rb:224:in `block in wait_until_present'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/window.rb:155:in `present?'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/window.rb:138:in `exists?'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/adapter/win_32/window.rb:90:in `exists?'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/adapter/win_32/window.rb:48:in `hwnd'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/adapter/win_3127.0.0.1 - - [18/Jul/2014 10:11:33] "GET /status?_=1405692621800 HTTP/1.1" 200 15 0.0020
2/functions.rb:140:in `window_hwnd'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/adapter/win_32/functions.rb:294:in `find_hwnd'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/adapter/win_32/functions.rb:294:in `enum_windows'

Poltergeist current_url command is returning page_info hash instead of a URL

Problem
I have an rspec feature test that is using capybara/poltergeist with :js => true and is doing something really simple:
visit borrow_path
click_on "Get Started"
page.should have_content "Create Your Account"
Clicking Get Started takes the user to our sign up page and then poltergeist raises a Timeout Error on the page.should have_content assertion, despite the screenshot of the page confirming that the content is, in fact, on the page.
The error is:
Failure/Error: page.should have_content "Create Your Account"
Capybara::Poltergeist::TimeoutError:
Timed out waiting for response to {"name":"find","args":["xpath","/html"]}. It's possible that this happened because something took a very long time (for example a page load was slow). If so, setting the Poltergeist :timeout option to a higher value will help (see the docs for details). If increasing the timeout does not help, this is probably a bug in Poltergeist - please report it to the issue tracker.
# ./spec/features/borrower/signup_spec
We've tried upping the timeout to 5 minutes, still the same error.
This doesn't happen consistently, every few runs the test will pass.
Details
With that in mind, I turned :debug on in our setup as follows:
Capybara.register_driver :poltergeist do |app|
# use 'page.driver.debug' as a js debugger
# see https://github.com/jonleighton/poltergeist/tree/v1.5.0#remote-debugging-experimental
Capybara::Poltergeist::Driver.new(app, :timeout => 300, :inspector => true, :debug => false, :window_size => [1280, 1400], :js_errors => true)
end
and re-ran the tests. The failed spec's output looks as follows:
{"name"=>"current_url", "args"=>[]}
{"response"=>{"page_id"=>126, "ids"=>[0]}}
An error occurred in an after hook
URI::InvalidURIError: bad URI(is not URI?): {"page_id"=>126, "ids"=>[0]}
occurred at /home/rof/.rvm/rubies/ruby-1.9.3-p545/lib/ruby/1.9.1/uri/common.rb:176:in `split'
{"name"=>"current_url", "args"=>[]}
{"response"=>"http://127.0.0.1:49891/users/sign_up?m=borrower"}
{"name"=>"current_url", "args"=>[]}
{"response"=>"http://127.0.0.1:49891/users/sign_up?m=borrower"}
{"name"=>"body", "args"=>[]}
{"response"=>"http://127.0.0.1:49891/users/sign_up?m=borrower"}
I can't find any hints as to why a call to current_url is returning the page_id hash instead of a URL, but this actually breaks all subsequent feature tests and causes find to always return true:
{"name"=>"find", "args"=>["xpath","/html"]}
{"response"=>"true"}
Which causes this exception on all subsequent tests (whether they're tagged :js => true or not):
Failure/Error: Unable to find matching line from backtrace
NoMethodError:
undefined method `[]' for true:TrueClass
# /home/rof/cache/bundler/ruby/1.9.1/gems/poltergeist-1.5.0/lib/capybara/poltergeist/browser.rb:54:in `find'
# /home/rof/cache/bundler/ruby/1.9.1/gems/poltergeist-1.5.0/lib/capybara/poltergeist/driver.rb:114:in `find'
# /home/rof/cache/bundler/ruby/1.9.1/gems/poltergeist-1.5.0/lib/capybara/poltergeist/driver.rb:118:in `find_xpath'
# /home/rof/cache/bundler/ruby/1.9.1/gems/capybara-2.2.1/lib/capybara/node/finders.rb:154:in `block in resolve_query'
# /home/rof/cache/bundler/ruby/1.9.1/gems/capybara-2.2.1/lib/capybara/node/base.rb:77:in `synchronize'
# /home/rof/cache/bundler/ruby/1.9.1/gems/capybara-2.2.1/lib/capybara/node/finders.rb:150:in `resolve_query'
# /home/rof/cache/bundler/ruby/1.9.1/gems/capybara-2.2.1/lib/capybara/node/finders.rb:129:in `all'
# /home/rof/cache/bundler/ruby/1.9.1/gems/capybara-2.2.1/lib/capybara/node/matchers.rb:107:in `block in assert_no_selector'
# /home/rof/cache/bundler/ruby/1.9.1/gems/capybara-2.2.1/lib/capybara/node/base.rb:81:in `synchronize'
# /home/rof/cache/bundler/ruby/1.9.1/gems/capybara-2.2.1/lib/capybara/node/matchers.rb:106:in `assert_no_selector'
# /home/rof/cache/bundler/ruby/1.9.1/gems/capybara-2.2.1/lib/capybara/session.rb:396:in `block (2 levels) in <class:Session>'
# /home/rof/cache/bundler/ruby/1.9.1/gems/capybara-2.2.1/lib/capybara/session.rb:81:in `reset!'
# /home/rof/cache/bundler/ruby/1.9.1/gems/capybara-2.2.1/lib/capybara.rb:253:in `block in reset_sessions!'
# /home/rof/cache/bundler/ruby/1.9.1/gems/capybara-2.2.1/lib/capybara.rb:253:in `each'
# /home/rof/cache/bundler/ruby/1.9.1/gems/capybara-2.2.1/lib/capybara.rb:253:in `reset_sessions!'
# /home/rof/cache/bundler/ruby/1.9.1/gems/capybara-2.2.1/lib/capybara/rspec.rb:20:in `block (2 levels) in <top (required)>'
# /home/rof/cache/bundler/ruby/1.9.1/gems/rspec-core-2.14.7/lib/rspec/core/example_group.rb:471:in `instance_eval'
# /home/rof/cache/bundler/ruby/1.9.1/gems/rspec-core-2.14.7/lib/rspec/core/example_group.rb:471:in `instance_eval_with_rescue'
# /home/rof/cache/bundler/ruby/1.9.1/gems/rspec-core-2.14.7/lib/rspec/core/example.rb:242:in `instance_eval_with_rescue'
# /home/rof/cache/bundler/ruby/1.9.1/gems/rspec-core-2.14.7/lib/rspec/core/hooks.rb:31:in `run'
# /home/rof/cache/bundler/ruby/1.9.1/gems/rspec-core-2.14.7/lib/rspec/core/hooks.rb:85:in `block in run'
# /home/rof/cache/bundler/ruby/1.9.1/gems/rspec-core-2.14.7/lib/rspec/core/hooks.rb:85:in `each'
# /home/rof/cache/bundler/ruby/1.9.1/gems/rspec-core-2.14.7/lib/rspec/core/hooks.rb:85:in `run'
# /home/rof/cache/bundler/ruby/1.9.1/gems/rspec-core-2.14.7/lib/rspec/core/hooks.rb:446:in `run_hook'
# /home/rof/cache/bundler/ruby/1.9.1/gems/rspec-core-2.14.7/lib/rspec/core/example_group.rb:350:in `run_after_each_hooks'
# /home/rof/cache/bundler/ruby/1.9.1/gems/rspec-core-2.14.7/lib/rspec/core/example.rb:298:in `run_after_each'
# /home/rof/cache/bundler/ruby/1.9.1/gems/rspec-core-2.14.7/lib/rspec/core/example.rb:120:in `block in run'
# /home/rof/cache/bundler/ruby/1.9.1/gems/rspec-rails-2.14.0/lib/rspec/rails/example/controller_example_group.rb:158:in `call'
# /home/rof/cache/bundler/ruby/1.9.1/gems/rspec-rails-2.14.0/lib/rspec/rails/example/controller_example_group.rb:158:in `block (2 levels) in <module:ControllerExampleGroup>'
# /home/rof/cache/bundler/ruby/1.9.1/gems/rspec-core-2.14.7/lib/rspec/core/extensions/instance_eval_with_args.rb:16:in `instance_exec'
# /home/rof/cache/bundler/ruby/1.9.1/gems/rspec-core-2.14.7/lib/rspec/core/extensions/instance_eval_with_args.rb:16:in `instance_eval_with_args'
# /home/rof/cache/bundler/ruby/1.9.1/gems/rspec-core-2.14.7/lib/rspec/core/example.rb:247:in `instance_eval_with_args'
# /home/rof/cache/bundler/ruby/1.9.1/gems/rspec-core-2.14.7/lib/rspec/core/hooks.rb:106:in `block (2 levels) in run'
# /home/rof/cache/bundler/ruby/1.9.1/gems/rspec-core-2.14.7/lib/rspec/core/hooks.rb:104:in `call'
# /home/rof/cache/bundler/ruby/1.9.1/gems/rspec-core-2.14.7/lib/rspec/core/hooks.rb:104:in `run'
# /home/rof/cache/bundler/ruby/1.9.1/gems/rspec-core-2.14.7/lib/rspec/core/hooks.rb:446:in `run_hook'
# /home/rof/cache/bundler/ruby/1.9.1/gems/rspec-core-2.14.7/lib/rspec/core/example_group.rb:340:in `run_around_each_hooks'
# /home/rof/cache/bundler/ruby/1.9.1/gems/rspec-core-2.14.7/lib/rspec/core/example.rb:256:in `with_around_each_hooks'
# /home/rof/cache/bundler/ruby/1.9.1/gems/rspec-core-2.14.7/lib/rspec/core/example.rb:111:in `run'
# /home/rof/cache/bundler/ruby/1.9.1/gems/rspec-core-2.14.7/lib/rspec/core/example_group.rb:390:in `block in run_examples'
# /home/rof/cache/bundler/ruby/1.9.1/gems/rspec-core-2.14.7/lib/rspec/core/example_group.rb:386:in `map'
# /home/rof/cache/bundler/ruby/1.9.1/gems/rspec-core-2.14.7/lib/rspec/core/example_group.rb:386:in `run_examples'
# /home/rof/cache/bundler/ruby/1.9.1/gems/rspec-core-2.14.7/lib/rspec/core/example_group.rb:371:in `run'
# /home/rof/cache/bundler/ruby/1.9.1/gems/rspec-core-2.14.7/lib/rspec/core/command_line.rb:28:in `block (2 levels) in run'
# /home/rof/cache/bundler/ruby/1.9.1/gems/rspec-core-2.14.7/lib/rspec/core/command_line.rb:28:in `map'
# /home/rof/cache/bundler/ruby/1.9.1/gems/rspec-core-2.14.7/lib/rspec/core/command_line.rb:28:in `block in run'
# /home/rof/cache/bundler/ruby/1.9.1/gems/rspec-core-2.14.7/lib/rspec/core/reporter.rb:58:in `report'
# /home/rof/cache/bundler/ruby/1.9.1/gems/rspec-core-2.14.7/lib/rspec/core/command_line.rb:25:in `run'
# /home/rof/cache/bundler/ruby/1.9.1/gems/rspec-core-2.14.7/lib/rspec/core/runner.rb:80:in `run'
# /home/rof/cache/bundler/ruby/1.9.1/gems/rspec-core-2.14.7/lib/rspec/core/runner.rb:17:in `block in autorun'
Any idea what's going on?

Custom puppet type provider - exists? returning true causes 'undefined method' exception

I'm trying to develop a custom type provider for RabbitMQ, based on existing providers present in the puppetlabs rabbitmq module.
If exists? method returns false - everything works fine.
However, if exists? returns true, puppet fails with undefined method 'pattern' exception (stacktrace bellow).
Note that pattern is one of my type's parameters.
I'm using Puppet 3.1.1 on CentOS.
The stacktrace:
Error: /Stage[main]//Node[rabbitmq]/Rabbitmq_policy[ha-all#DMITRY_CBMS]: Could not evaluate: undefined method `pattern' for #<Puppet::Type::Rabbitmq_policy::ProviderRabbitmqctl:0x7f5e647471f0>
/usr/lib/ruby/site_ruby/1.8/puppet/property.rb:462:in `send'
/usr/lib/ruby/site_ruby/1.8/puppet/property.rb:462:in `retrieve'
/usr/lib/ruby/site_ruby/1.8/puppet/type.rb:1027:in `retrieve'
/usr/lib/ruby/site_ruby/1.8/puppet/type.rb:1022:in `each'
/usr/lib/ruby/site_ruby/1.8/puppet/type.rb:1022:in `retrieve'
/usr/lib/ruby/site_ruby/1.8/puppet/type.rb:1041:in `retrieve_resource'
/usr/lib/ruby/site_ruby/1.8/puppet/transaction/resource_harness.rb:32:in `perform_changes'
/usr/lib/ruby/site_ruby/1.8/puppet/transaction/resource_harness.rb:133:in `evaluate'
/usr/lib/ruby/site_ruby/1.8/puppet/transaction.rb:48:in `apply'
/usr/lib/ruby/site_ruby/1.8/puppet/transaction.rb:83:in `eval_resource'
/usr/lib/ruby/site_ruby/1.8/puppet/transaction.rb:103:in `evaluate'
/usr/lib/ruby/site_ruby/1.8/puppet/util.rb:351:in `thinmark'
/usr/lib/ruby/1.8/benchmark.rb:308:in `realtime'
/usr/lib/ruby/site_ruby/1.8/puppet/util.rb:350:in `thinmark'
/usr/lib/ruby/site_ruby/1.8/puppet/transaction.rb:103:in `evaluate'
/usr/lib/ruby/site_ruby/1.8/puppet/transaction.rb:382:in `traverse'
/usr/lib/ruby/site_ruby/1.8/puppet/transaction.rb:98:in `evaluate'
/usr/lib/ruby/site_ruby/1.8/puppet/resource/catalog.rb:144:in `apply'
/usr/lib/ruby/site_ruby/1.8/puppet/configurer.rb:122:in `apply_catalog'
/usr/lib/ruby/site_ruby/1.8/puppet/util.rb:179:in `benchmark'
/usr/lib/ruby/1.8/benchmark.rb:308:in `realtime'
/usr/lib/ruby/site_ruby/1.8/puppet/util.rb:178:in `benchmark'
/usr/lib/ruby/site_ruby/1.8/puppet/configurer.rb:121:in `apply_catalog'
/usr/lib/ruby/site_ruby/1.8/puppet/configurer.rb:179:in `run'
/usr/lib/ruby/site_ruby/1.8/puppet/agent.rb:45:in `run'
/usr/lib/ruby/site_ruby/1.8/puppet/agent/locker.rb:20:in `lock'
/usr/lib/ruby/site_ruby/1.8/puppet/agent.rb:45:in `run'
/usr/lib/ruby/1.8/sync.rb:230:in `synchronize'
/usr/lib/ruby/site_ruby/1.8/puppet/agent.rb:45:in `run'
/usr/lib/ruby/site_ruby/1.8/puppet/agent.rb:119:in `with_client'
/usr/lib/ruby/site_ruby/1.8/puppet/agent.rb:42:in `run'
/usr/lib/ruby/site_ruby/1.8/puppet/agent.rb:89:in `run_in_fork'
/usr/lib/ruby/site_ruby/1.8/puppet/agent.rb:86:in `fork'
/usr/lib/ruby/site_ruby/1.8/puppet/agent.rb:86:in `run_in_fork'
/usr/lib/ruby/site_ruby/1.8/puppet/agent.rb:41:in `run'
/usr/lib/ruby/site_ruby/1.8/puppet/application.rb:179:in `call'
/usr/lib/ruby/site_ruby/1.8/puppet/application.rb:179:in `controlled_run'
/usr/lib/ruby/site_ruby/1.8/puppet/agent.rb:39:in `run'
/usr/lib/ruby/site_ruby/1.8/puppet/daemon.rb:205:in `run_event_loop'
/usr/lib/ruby/site_ruby/1.8/puppet/daemon.rb:167:in `loop'
/usr/lib/ruby/site_ruby/1.8/puppet/daemon.rb:167:in `run_event_loop'
/usr/lib/ruby/site_ruby/1.8/puppet/daemon.rb:145:in `start'
/usr/lib/ruby/site_ruby/1.8/puppet/application/agent.rb:357:in `main'
/usr/lib/ruby/site_ruby/1.8/puppet/application/agent.rb:313:in `run_command'
/usr/lib/ruby/site_ruby/1.8/puppet/application.rb:364:in `run'
/usr/lib/ruby/site_ruby/1.8/puppet/application.rb:456:in `plugin_hook'
/usr/lib/ruby/site_ruby/1.8/puppet/application.rb:364:in `run'
/usr/lib/ruby/site_ruby/1.8/puppet/util.rb:504:in `exit_on_fail'
/usr/lib/ruby/site_ruby/1.8/puppet/application.rb:364:in `run'
/usr/lib/ruby/site_ruby/1.8/puppet/util/command_line.rb:132:in `run'
/usr/lib/ruby/site_ruby/1.8/puppet/util/command_line.rb:86:in `execute'
Type definition:
Puppet::Type.newtype(:rabbitmq_policy) do
desc 'Type for defining rabbitmq policies'
ensurable do
defaultto(:present)
newvalue(:present) do
provider.create
end
newvalue(:absent) do
provider.destroy
end
end
newparam(:name, :namevar => true) do
desc 'combination of policy-name#vhost to setup the policy'
newvalues(/^\S+#\S+$/)
end
newproperty(:pattern) do
desc 'regexp representing configuration permissions'
validate do |value|
resource.validate_permissions(value)
end
end
newproperty(:definition) do
desc 'definition of this policit, e.g: {"ha-mode":"all"}'
end
autorequire(:rabbitmq_vhost) do
[self[:name].split('#')[1]]
end
autorequire(:rabbitmq_policy) do
[self[:name].split('#')[0]]
end
# I may want to dissalow whitespace
def validate_permissions(value)
begin
Regexp.new(value)
rescue RegexpError
raise ArgumentError, "Invalid regexp #{value}"
end
end
end
Provider definition:
Puppet::Type.type(:rabbitmq_policy).provide(:rabbitmqctl) do
commands :rabbitmqctl => 'rabbitmqctl'
defaultfor :feature => :posix
def policy_name
if #cached_policy_name
#cached_policy_name
else
#cached_policy_name = resource[:name].split('#')[0]
end
end
def vhost
if #cached_vhost
#cached_vhost
else
#cached_vhost = resource[:name].split('#')[1]
end
end
def create
Puppet.debug "rabbitmq_policy.create"
rabbitmqctl('set_policy','-p', vhost, policy_name, resource[:pattern], resource[:definition])
end
def destroy
Puppet.debug "rabbitmq_policy.destroy"
rabbitmqctl('clear_policy', '-p', vhost, policy_name)
end
def exists?
out = rabbitmqctl('list_policies', '-p', vhost).split(/\n/)[1..-2].collect do |line|
parts = line.split(/\s+/)
Puppet.debug "rabbitmq_policy::list_policies line: #{line}| #{parts[1]} == #{policy_name} => #{parts[1] == policy_name} "
if parts[1] == policy_name
true
else
false
end
end
out = out.detect do |obj| obj end
Puppet.debug "rabbitmq_policy.exists: #{out.to_s}"
out
end
#def exists?
# false
#end
end
Any help is greatly appreciated.
Thanks
Found an answer (thanks to Daniel at ask.puppetlabs.com).
Every property defined using newproperty in type definition must have a corresponding getter and setter in the provider. And properties only make sense for types whose attributes can be updated individually.
For simple case newparam should be used.

Can't run Cuke4Nuke

I have installed, confirmed installation and followed the steps mentioned in the links below:
http://gojko.net/2010/01/01/bdd-in-net-with-cucumber-cuke4nuke-and-teamcity/
http://cuke4ninja.com/sec_hello_world_net.html
Once I try to run Cuke4Nuke bin\debug\Cuke4NukeExample.dll
I get an error message.
I tried to run Cuke4Nuke alone with no parameters and I see the same error message as with the bin\debug\Cuke4NukeExample.dll
Here is the error message:
E:\Visual Projects>cuke4nuke
C:/Ruby193/lib/ruby/gems/1.9.1/gems/ffi-1.1.5-x86-mingw32/lib/ffi/library.rb:249
:in attach_function': Function '_get_errno' not found in [msvcrt.dll]
(FFI::Not FoundError)
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/win32-process-0.7.0/lib/win32/p
rocess/functions.rb:12:inattach_pfunc'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/win32-process-0.7.0/lib/win32/p
rocess/functions.rb:64:in <module:Functions>'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/win32-process-0.7.0/lib/win32/p
rocess/functions.rb:8:in'
from C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:i n
require'
from C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:i n
require'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/win32-process-0.7.0/lib/win32/p
rocess.rb:1:in <top (required)>'
from C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:i n
require'
from C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:i n
require'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/cuke4nuke-0.4.0/lib/cuke4nuke/m
ain.rb:4:in'
from C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:i n
require'
from C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:i n
require'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/cuke4nuke-0.4.0/bin/cuke4nuke:4
:in <top (required)>'
from C:/Ruby193/bin/cuke4nuke:23:inload'
from C:/Ruby193/bin/cuke4nuke:23:in `'
Thanks

Resources