Description of problem: When there is a problem with the broker Gemfile or Gemfile.lock, invocation of Bundler via command line tools based on the broker will fail with a message recommending running "bundle install" which in most cases, is not what we want the user to do - we would like people to use the gems supplied by RPMs we have packaged and tested. "bundle install" installs gems from rubygem.org with unpredictable / unsupportable results. How reproducible: This happens frequently during installs when broker plugin conf gets messed up in one way or another (typo, missed RPM install, etc.) and also due to yum update when gem RPMs are updated but the broker not restarted. Steps to Reproduce: 1. touch /etc/openshift/plugins.d/openshift-origin-foo.conf 2. Run "oo-admin-clear-pending-ops" or similar 3. rm /etc/openshift/plugins.d/openshift-origin-foo.conf 4. Edit /var/www/openshift/broker/Gemfile.lock and change specific version of a gem, e.g. set bigdecimal (1.2.1) 5. Run "oo-admin-ctl-district" or similar Actual results: (2) # oo-admin-clear-pending-ops Could not find gem 'openshift-origin-foo (>= 0) ruby' in the gems available on this machine. Run `bundle install` to install missing gems. (5) # oo-admin-ctl-district Could not find bigdecimal-1.2.1 in any of the sources Run `bundle install` to install missing gems. Expected results: Something telling you that you need to change plugin config, install RPMs, or rm Gemfile.lock (running any of these generates it if it's missing). Additional info: Commands that really should give helpful output under these conditions, being frequently used around install/upgrade scenarios: oo-accept-broker oo-diagnostics oo-admin-broker-cache --clear oo-register-dns oo-admin-ctl-district
https://github.com/openshift/origin-server/pull/3294 should wrap Bundler errors in most situations. However, it actually doesn't for most of the above scripts; but at least they do not recommend "bundle install" which is the most important thing. I am hesitant to make changes to these that would improve the messaging... most would likely break things in under certain scenarios.
Commit pushed to master at https://github.com/openshift/origin-server https://github.com/openshift/origin-server/commit/0771a6d1c2e57a41bbd9e49dc16f99d4657a34ac <broker> improve Gemfile loading + bug 993250 https://bugzilla.redhat.com/show_bug.cgi?id=993250 Bundler load failures are wrapped and re-interpreted for OpenShift instead of telling the user to "bundle install" OPENSHIFT_CONF_DIR overrides /etc/openshift base for broker config files Gemfile loads plugins even if just the -dev.conf file is present Plugins are loaded in sorted order, in case it matters
Verified with latest origin build The user won't be informed to run 'bundle install', instead, they will be adviced to install the rpm packages. [root@broker ~]# oo-admin-clear-pending-ops Error while loading gems for the broker: Could not find gem 'openshift-origin-auth-mongo (>= 0) ruby' in the gems available on this machine. You may need to install the rubygem-openshift-origin-auth-mongo RPM. Or, you may need to remove/rename the openshift-origin-auth-mongo conf file(s) in /etc/openshift/plugins.d