Bug 1034356

Summary: Need to remove jenkins_shell_command from primary cartridge dir in gears if the primary cartridge no longer has a custom jenkins_shell_command
Product: OpenShift Container Platform Reporter: Andy Goldstein <agoldste>
Component: Cluster Version OperatorAssignee: Brenton Leanhardt <bleanhar>
Status: CLOSED CURRENTRELEASE QA Contact: libra bugs <libra-bugs>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 2.0.0CC: bleanhar, jdetiber, jialiu, libra-onpremise-devel
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: openshift-origin-cartridge-ruby-1.17.4-1, openshift-origin-cartridge-php-1.17.3.2-1, openshift-origin-cartridge-perl-1.16.5-1,openshift-origin-cartridge-jbossews-1.17.2-1,openshift-origin-cartridge-jbosseap-2.11.1.2-1 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2014-01-17 16:20:42 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:

Description Andy Goldstein 2013-11-25 16:47:14 UTC
If an application was created in OSE 1.2 and it had jenkins-client added, the gear most likely ended up with a copy of jenkins_shell_command in e.g. ~/php/metadata/jenkins_shell_command. This is because most web framework cartridges in OSE 1.2 have their own copy of jenkins_shell_command that is specific to that cartridge. With OSE 2.0, the custom jenkins_shell_command has been removed from web framework cartridges and only a couple of them have a custom one at this time.

When upgrading a 1.2 app to 2.0, the gear's jenkins_shell_command should be removed as long as the web framework cartridge doesn't still have a custom version of that file. This is because the jenkins-client cartridge will use the gear's primary cartridge's jenkins_shell_command when creating the job in jenkins, if it exists. This wouldn't be correct, as the custom jenkins_shell_command is a remnant from the previous version of the cartridge, and must be deleted. If not, even if the user deletes jenkins-client from the application and re-adds it, it will still create the job using the previous version of jenkins_shell_command, and it won't be able to take advantage of the latest build/deployment features appropriately.

See https://bugzilla.redhat.com/show_bug.cgi?id=1033581 for more details.

Comment 3 Johnny Liu 2014-01-09 15:59:56 UTC
Following http://etherpad.corp.redhat.com/ose-2-0-upgrade-2014-01-07, and replace puddle using 2.0.z/2014-01-08.1, verification is PASS.

Create app in ose-1.2, go to /var/lib/openshift/
# find .|grep jenkins_shell_command
./5298181af16d95099e0002dc/jbossews/metadata/jenkins_shell_command
./.cartridge_repository/redhat-python/0.0.1/versions/2.7/metadata/jenkins_shell_command.erb
./.cartridge_repository/redhat-python/0.0.1/versions/3.3/metadata/jenkins_shell_command.erb
./.cartridge_repository/redhat-python/0.0.1/versions/2.6/metadata/jenkins_shell_command.erb
./.cartridge_repository/redhat-jbossews/0.0.1/metadata/jenkins_shell_command.erb
./.cartridge_repository/redhat-perl/0.0.1/metadata/jenkins_shell_command.erb
./.cartridge_repository/redhat-ruby/0.0.2/metadata/jenkins_shell_command.erb
./.cartridge_repository/redhat-php/0.0.2/metadata/jenkins_shell_command.erb
./.cartridge_repository/redhat-jenkins-client/0.0.1/metadata/jenkins_shell_command
./.cartridge_repository/redhat-jbosseap/0.0.1/metadata/jenkins_shell_command.erb
./52982b9ef16d95099e000347/jbosseap/metadata/jenkins_shell_command
./52980c45f16d95099e000100/jbossews/metadata/jenkins_shell_command
./52980a8cf16d95099e0000c1/php/metadata/jenkins_shell_command
./52ceab78f16d956a1f000010/perl/metadata/jenkins_shell_command
./52980b24f16d95099e0000e4/ruby/metadata/jenkins_shell_command
./5298071af16d95099e00008d/ruby/metadata/jenkins_shell_command
./5298050df16d95099e000052/python/versions/2.7/metadata/jenkins_shell_command
./5298050df16d95099e000052/python/versions/3.3/metadata/jenkins_shell_command
./5298050df16d95099e000052/python/versions/2.6/metadata/jenkins_shell_command
./52981526f16d95099e00023d/php/metadata/jenkins_shell_command
./52981043f16d95099e000172/jbosseap/metadata/jenkins_shell_command
./529811a3f16d95099e0001a7/perl/metadata/jenkins_shell_command
./52980e3ff16d95099e000138/jbosseap/metadata/jenkins_shell_command
./52980d3cf16d95099e00011c/jbossews/metadata/jenkins_shell_command
./529816d1f16d95099e0002a7/ruby/metadata/jenkins_shell_command
./5298162df16d95099e000272/python/versions/2.7/metadata/jenkins_shell_command
./5298162df16d95099e000272/python/versions/3.3/metadata/jenkins_shell_command
./5298162df16d95099e000272/python/versions/2.6/metadata/jenkins_shell_command
./529812ecf16d95099e0001fb/ruby/metadata/jenkins_shell_command
./52981937f16d95099e000311/jbossews/metadata/jenkins_shell_command
./52982bf6f16d95bcfa00000f/perl/metadata/jenkins_shell_command


Then upgrade env to 2.0, check again:
# find .|grep jenkins_shell_command
./5298181af16d95099e0002dc/jenkins-client/metadata/jenkins_shell_command
./.cartridge_repository/redhat-python/0.0.8/usr/versions/2.7/metadata/jenkins_shell_command.erb
./.cartridge_repository/redhat-python/0.0.8/usr/versions/2.6/metadata/jenkins_shell_command.erb
./.cartridge_repository/redhat-jenkins-client/0.0.5/metadata/jenkins_shell_command
./52980a8cf16d95099e0000c1/jenkins-client/metadata/jenkins_shell_command
./52ceab78f16d956a1f000010/jenkins-client/metadata/jenkins_shell_command
./5298050df16d95099e000052/python/versions/2.7/metadata/jenkins_shell_command
./5298050df16d95099e000052/python/versions/3.3/metadata/jenkins_shell_command
./5298050df16d95099e000052/python/versions/2.6/metadata/jenkins_shell_command
./5298050df16d95099e000052/python/metadata/jenkins_shell_command
./52980e3ff16d95099e000138/jenkins-client/metadata/jenkins_shell_command
./529816d1f16d95099e0002a7/jenkins-client/metadata/jenkins_shell_command
./5298162df16d95099e000272/python/versions/2.7/metadata/jenkins_shell_command
./5298162df16d95099e000272/python/versions/3.3/metadata/jenkins_shell_command
./5298162df16d95099e000272/python/versions/2.6/metadata/jenkins_shell_command
./5298162df16d95099e000272/python/metadata/jenkins_shell_command


~/<cartridge>/metadata/jenkins_shell_command is already removed, and add jenkins-client to app, add hot_deploy marker to app, then trigger jenkins build, hot deploy is working well. Here I tested php, perl jbosseap, scalable jbossews and scalable ruby-1.9 cartrige.

So verification is PASS.