Bug 993252

Summary: Broker plugins and other gem problems lead to recommendation to run "bundle install"
Product: OpenShift Container Platform Reporter: Luke Meyer <lmeyer>
Component: NodeAssignee: Luke Meyer <lmeyer>
Status: CLOSED ERRATA QA Contact: libra bugs <libra-bugs>
Severity: medium Docs Contact:
Priority: medium    
Version: 1.0.0CC: baulakh, bleanhar, gpei, jialiu, libra-onpremise-devel, mmasters
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: openshift-origin-broker-1.5.7-1 Doc Type: Bug Fix
Doc Text:
Because the broker Rails application uses Bundler for validating and loading gem dependencies, Bundler typically prompted users to run “bundle install” to fix common problems during installation and updates. However, if a user acted upon this recommendation, many unsupported gems from rubygems.org were installed, resulting in broken installations. In the current release of OpenShift Enterprise, the Bundler output is wrapped and filtered when loading the broker application, and whenever possible users are prompted with more helpful directions. Users are no longer prompted with the “bundle install” message, resulting in fewer broken installations.
Story Points: ---
Clone Of: 993250 Environment:
Last Closed: 2013-09-05 13:24:01 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: 993250    
Bug Blocks:    

Description Luke Meyer 2013-08-05 17:28:10 UTC
+++ This bug was initially created as a clone of Bug #993250 +++

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 2 Luke Meyer 2013-08-14 12:20:25 UTC
Cherry-picked from origin-server:

Author:     Luke Meyer <lmeyer>
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 4 Gaoyun Pei 2013-08-16 07:07:53 UTC
Checked this issue on puddle 1.2/2013-08-15, it works well.

1.Touch /etc/openshift/plugins.d/openshift-origin-foo.conf
[root@broker ~]# oo-admin-clear-pending-ops 
Error while loading gems for the broker:
Could not find gem 'openshift-origin-foo (>= 0) ruby' in the gems available on this machine.
You may need to install the rubygem-openshift-origin-foo RPM.
Or, you may need to remove/rename the openshift-origin-foo conf file(s) in /etc/openshift/plugins.d

2. Edit /var/www/openshift/broker/Gemfile.lock and change specific version of a gem, set bigdecimal (1.2.1)
[root@broker broker]# oo-admin-ctl-district
Error while loading gems for the broker:
Could not find bigdecimal-1.2.0 in any of the sources
This usually means gem RPMs have been updated and Gemfile.lock is stale.
Please restart the openshift-broker service to update it, and try again.

Comment 7 Miciah Dashiel Butler Masters 2013-09-03 14:45:40 UTC
Fixing that "fewer broker installations" typo.

Comment 8 errata-xmlrpc 2013-09-05 13:24:01 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

http://rhn.redhat.com/errata/RHBA-2013-1211.html