Bug 993250

Summary: Broker plugins and other gem problems lead to recommendation to run "bundle install"
Product: OKD Reporter: Luke Meyer <lmeyer>
Component: PodAssignee: Luke Meyer <lmeyer>
Status: CLOSED CURRENTRELEASE QA Contact: libra bugs <libra-bugs>
Severity: medium Docs Contact:
Priority: medium    
Version: 2.xCC: jhou
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
: 993252 (view as bug list) Environment:
Last Closed: 2014-01-24 03:21:29 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 993252    

Description Luke Meyer 2013-08-05 17:26:44 UTC
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

Comment 1 Luke Meyer 2013-08-05 20:08:22 UTC
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.

Comment 2 openshift-github-bot 2013-08-14 11:07:02 UTC
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

Comment 3 Jianwei Hou 2013-11-15 08:45:27 UTC
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