Bug 1658100

Summary: --group option in new-app can't take ‘db image’ + ‘language image’ combination
Product: OpenShift Container Platform Reporter: XiuJuan Wang <xiuwang>
Component: BuildAssignee: Adam Kaplan <adam.kaplan>
Status: CLOSED WONTFIX QA Contact: wewang <wewang>
Severity: low Docs Contact:
Priority: medium    
Version: 4.1.0CC: aos-bugs, wzheng
Target Milestone: ---Keywords: Regression
Target Release: 4.3.0   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2020-04-17 13:01:18 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 XiuJuan Wang 2018-12-11 09:16:54 UTC
Description of problem:
--group option in new-app can't take ‘db image’ + ‘language image’ combination.
DB image will be treat as a builder image, then build fails due to lack source code.
like this example:
oc new-app  -i python:3.6  -i mysql:5.7 --group=python:3.6+mysql:5.7 --env=MYSQL_USER\=test --env=MYSQL_PASSWORD\=test --env=MYSQL_DATABASE\=ccytest --code=git://github.com/sclorg/s2i-python-container --context-dir=3.6/test/standalone-test-app

--group works when combine two db images single. like this example:
oc new-app -i mongodb:3.4 -i mysql:5.7 --group=mysql:5.7+mongodb:3.4 --env=MYSQL_USER\=test --env=MYSQL_PASSWORD\=test --env=MYSQL_DATABASE\=ccytest  --env=MONGODB_ADMIN_PASSWORD=pass


Version-Release number of selected component (if applicable):
oc v4.0.0-0.94.0
kubernetes v1.11.0+3db990d20d
features: Basic-Auth GSSAPI Kerberos SPNEGO

Server https://***.devcluster.openshift.com:6443
kubernetes v1.11.0+c02e7fd

oc get clusterversion  version 
NAME      VERSION                           AVAILABLE   PROGRESSING   SINCE     
version   4.0.0-0.alpha-2018-12-11-040917   False       True          29m 

How reproducible:
always

Steps to Reproduce:
1.Combine db image and language image into one pod
oc new-app  -i python:3.6  -i mysql:5.7 --group=python:3.6+mysql:5.7 --env=MYSQL_USER\=test --env=MYSQL_PASSWORD\=test --env=MYSQL_DATABASE\=ccytest --code=git://github.com/sclorg/s2i-python-container --context-dir=3.6/test/standalone-test-app
2.
3.

Actual results:

$ oc new-app  -i python:3.6  -i mysql:5.7 --group=python:3.6+mysql:5.7 --env=MYSQL_USER\=test --env=MYSQL_PASSWORD\=test --env=MYSQL_DATABASE\=ccytest --code=git://github.com/sclorg/s2i-python-container --context-dir=3.6/test/standalone-test-app 
--> Found image f00aae8 (3 days old) in image stream "openshift/python" under tag "3.6" for "python:3.6"

    Python 3.6 
    ---------- 
    Python 3.6 available as container is a base platform for building and running various Python 3.6 applications and frameworks. Python is an easy to learn, powerful programming language. It has efficient high-level data structures and a simple but effective approach to object-oriented programming. Python's elegant syntax and dynamic typing, together with its interpreted nature, make it an ideal language for scripting and rapid application development in many areas on most platforms.

    Tags: builder, python, python36, rh-python36

    * The source repository appears to match: python
    * A source build using source code from git://github.com/sclorg/s2i-python-container will be created
      * The resulting image will be pushed to image stream tag "s2i-python-container:latest"
      * Use 'start-build' to trigger a new build
    * This image will be deployed in deployment config "s2i-python-container"
    * Port 8080/tcp will be load balanced by service "s2i-python-container"
      * Other containers can access this service through the hostname "s2i-python-container"

--> Found image f171d28 (5 days old) in image stream "openshift/mysql" under tag "5.7" for "mysql:5.7"

    MySQL 5.7 
    --------- 
    MySQL is a multi-user, multi-threaded SQL database server. The container image provides a containerized packaging of the MySQL mysqld daemon and client application. The mysqld server daemon accepts connections from clients and provides access to content from MySQL databases on behalf of the clients.

    Tags: database, mysql, mysql57, rh-mysql57

    * The source repository appears to match: python
    * A source build using source code from git://github.com/sclorg/s2i-python-container will be created
      * The resulting image will be pushed to image stream tag "s2i-python-container-1:latest"
      * Use 'start-build' to trigger a new build
    * This image will be deployed as part of deployment config "s2i-python-container"
    * Port 3306/tcp will be load balanced by service "s2i-python-container"
      * Other containers can access this service through the hostname "s2i-python-container"

--> Creating resources ...
    imagestream.image.openshift.io "s2i-python-container" created
    buildconfig.build.openshift.io "s2i-python-container" created
    deploymentconfig.apps.openshift.io "s2i-python-container" created
    imagestream.image.openshift.io "s2i-python-container-1" created
    buildconfig.build.openshift.io "s2i-python-container-1" created
    service "s2i-python-container" created
--> Success
    Build scheduled, use 'oc logs -f bc/s2i-python-container' to track its progress.
    Build scheduled, use 'oc logs -f bc/s2i-python-container-1' to track its progress.
    Application is not exposed. You can expose services to the outside world by executing one or more of the commands below:
     'oc expose svc/s2i-python-container' 
    Run 'oc status' to view your app.


$ oc describe  bc  s2i-python-container-1
 Name:		s2i-python-container-1
Namespace:	xiu2
Created:	38 minutes ago
Labels:		app=s2i-python-container
Annotations:	openshift.io/generated-by=OpenShiftNewApp
Latest Version:	1

Strategy:	Source
URL:		git://github.com/sclorg/s2i-python-container
ContextDir:	3.6/test/standalone-test-app
From Image:	ImageStreamTag openshift/mysql:5.7
Output to:	ImageStreamTag s2i-python-container-1:latest

Build Run Policy:	Serial
Triggered by:		Config, ImageChange
Webhook Generic:
	URL:		https://xiuwang-api.devcluster.openshift.com:6443/apis/build.openshift.io/v1/namespaces/xiu2/buildconfigs/s2i-python-container-1/webhooks/<secret>/generic
	AllowEnv:	false
Webhook GitHub:
	URL:	https://xiuwang-api.devcluster.openshift.com:6443/apis/build.openshift.io/v1/namespaces/xiu2/buildconfigs/s2i-python-container-1/webhooks/<secret>/github
Builds History Limit:
	Successful:	5
	Failed:		5

Build				Status	Duration	Creation Time
s2i-python-container-1-1 	failed 	33s 		2018-12-11 15:48:36 +0800 CST

Expected results:
Should don't treat db image as a builder image.

Additional info:

Comment 1 Ben Parees 2018-12-11 19:50:47 UTC
i'd be inclined to deprecate this function before digging through the new-app logic to try to fix it to work correctly.  Reducing severity.

Comment 3 Adam Kaplan 2019-05-15 18:24:59 UTC
@bparees per our current direction I'm inclined to deprecate the --group option.

In the long run `oc new-app` is going to be deprecated in favor of `odo`.

Comment 5 Adam Kaplan 2020-04-17 13:01:18 UTC
Closing this bug due to current engineering priorities, severity, availability of suitable workarounds and lack of customer cases. If this should be addressed, please reopen and provide additional details.