Skip to content

Commit acad55e

Browse files
Warn if a docker compose service has no ports
1 parent 30f598e commit acad55e

File tree

5 files changed

+67
-13
lines changed

5 files changed

+67
-13
lines changed

pkg/cmd/cli/cmd/importer/dockercompose.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ func (o *DockerComposeOptions) Run() error {
179179
appcmd.DescribeGeneratedTemplate(o.Action.Out, "", result, o.Namespace)
180180
}
181181

182-
if errs := o.Action.WithMessage("Importing compose file", "creating").Run(&kapi.List{Items: result.Objects}, o.Namespace); len(errs) > 0 {
182+
if errs := o.Action.WithMessage("Importing compose file", "created").Run(&kapi.List{Items: result.Objects}, o.Namespace); len(errs) > 0 {
183183
return cmdutil.ErrExit
184184
}
185185
return nil

pkg/generate/dockercompose/generate.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -403,6 +403,8 @@ func Generate(paths ...string) (*templateapi.Template, error) {
403403
case *deployapi.DeploymentConfig:
404404
ports := app.UniqueContainerToServicePorts(app.AllContainerPorts(t.Spec.Template.Spec.Containers...))
405405
if len(ports) == 0 {
406+
msg := "no ports defined to send traffic to - no OpenShift service was created"
407+
warnings[msg] = append(warnings[msg], t.Name)
406408
continue
407409
}
408410
svc := app.GenerateService(t.ObjectMeta, t.Spec.Selector)

test/cmd/newapp.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -202,9 +202,10 @@ os::cmd::expect_failure_and_text "oc new-app '${jsonfile}'" "error: unable to lo
202202
# a docker compose file should be transformed into an application by the import command
203203
os::cmd::expect_success_and_text 'oc import docker-compose -f test/fixtures/app-scenarios/docker-compose/complex/docker-compose.yml --dry-run' 'warning: not all docker-compose fields were honored'
204204
os::cmd::expect_success_and_text 'oc import docker-compose -f test/fixtures/app-scenarios/docker-compose/complex/docker-compose.yml --dry-run' 'db: cpuset is not supported'
205+
os::cmd::expect_success_and_text 'oc import docker-compose -f test/fixtures/app-scenarios/docker-compose/complex/docker-compose.yml --dry-run' 'no-ports: no ports defined to send traffic to - no OpenShift service was created'
205206
os::cmd::expect_success_and_text 'oc import docker-compose -f test/fixtures/app-scenarios/docker-compose/complex/docker-compose.yml -o name --dry-run' 'service/redis'
206207
os::cmd::expect_success_and_text 'oc import docker-compose -f test/fixtures/app-scenarios/docker-compose/complex/docker-compose.yml -o name --as-template=other --dry-run' 'template/other'
207-
os::cmd::expect_failure 'diff --suppress-common-lines -y <(oc import docker-compose -f test/fixtures/app-scenarios/docker-compose/complex/docker-compose.yml -o yaml) test/fixtures/app-scenarios/docker-compose/complex/docker-compose.imported.yaml | grep -v secret'
208+
os::cmd::expect_success '[[ $(diff --suppress-common-lines -y <(oc import docker-compose -f test/fixtures/app-scenarios/docker-compose/complex/docker-compose.yml -o yaml) test/fixtures/app-scenarios/docker-compose/complex/docker-compose.imported.yaml | grep -vE "ref\:|secret|uri\:" | wc -l) -eq 0 ]]'
208209

209210
# verify a docker-compose.yml schema 2 resource can be transformed, and that it sets env vars correctly.
210211
os::cmd::expect_success_and_text 'oc import docker-compose -f test/fixtures/app-scenarios/docker-compose/wordpress/docker-compose.yml -o yaml --as-template=other --dry-run' 'value: wordpress'

test/fixtures/app-scenarios/docker-compose/complex/docker-compose.imported.yaml

Lines changed: 59 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,5 @@
11
apiVersion: v1
2-
kind: Template
3-
metadata:
4-
creationTimestamp: null
5-
name: complex
6-
objects:
2+
items:
73
- apiVersion: v1
84
kind: ImageStream
95
metadata:
@@ -36,7 +32,7 @@ objects:
3632
source:
3733
contextDir: test/fixtures/app-scenarios/docker-compose/complex/nginx
3834
git:
39-
ref: libcompose
35+
ref: master
4036
uri: [email protected]:openshift/origin.git
4137
secrets: null
4238
type: Git
@@ -48,10 +44,10 @@ objects:
4844
type: Docker
4945
triggers:
5046
- github:
51-
secret: gKR65ZJCwVsproaayUIz
47+
secret: FdDzZzJCBkHQGxYMMBw0
5248
type: GitHub
5349
- generic:
54-
secret: PnTkFixxvwHK--JxtaJ7
50+
secret: wMAV07N8TWt9dz40LDjL
5551
type: Generic
5652
- type: ConfigChange
5753
- imageChange: {}
@@ -90,7 +86,7 @@ objects:
9086
source:
9187
contextDir: test/fixtures/app-scenarios/docker-compose/complex/app
9288
git:
93-
ref: libcompose
89+
ref: master
9490
uri: [email protected]:openshift/origin.git
9591
secrets: null
9692
type: Git
@@ -102,10 +98,10 @@ objects:
10298
type: Docker
10399
triggers:
104100
- github:
105-
secret: f7q0OGOVc-usCy7xA-Ul
101+
secret: 3QSLvrej6A2E-CMYSEvQ
106102
type: GitHub
107103
- generic:
108-
secret: yK_wyTqSxqqoYZ_TVSoo
104+
secret: uBl0LIK0anHOaRJ8-4dI
109105
type: Generic
110106
- type: ConfigChange
111107
- imageChange: {}
@@ -234,6 +230,56 @@ objects:
234230
name: web:latest
235231
type: ImageChange
236232
status: {}
233+
- apiVersion: v1
234+
kind: ImageStream
235+
metadata:
236+
creationTimestamp: null
237+
name: no-ports
238+
spec:
239+
tags:
240+
- annotations:
241+
openshift.io/imported-from: redis
242+
from:
243+
kind: DockerImage
244+
name: redis
245+
generation: null
246+
importPolicy: {}
247+
name: latest
248+
status:
249+
dockerImageRepository: ""
250+
- apiVersion: v1
251+
kind: DeploymentConfig
252+
metadata:
253+
creationTimestamp: null
254+
name: no-ports
255+
spec:
256+
replicas: 1
257+
selector:
258+
deploymentconfig: no-ports
259+
strategy:
260+
resources: {}
261+
template:
262+
metadata:
263+
creationTimestamp: null
264+
labels:
265+
deploymentconfig: no-ports
266+
spec:
267+
containers:
268+
- image: redis
269+
name: no-ports
270+
resources: {}
271+
test: false
272+
triggers:
273+
- type: ConfigChange
274+
- imageChangeParams:
275+
automatic: true
276+
containerNames:
277+
- no-ports
278+
from:
279+
kind: ImageStreamTag
280+
name: no-ports:latest
281+
type: ImageChange
282+
status: {}
237283
- apiVersion: v1
238284
kind: Service
239285
metadata:
@@ -265,3 +311,5 @@ objects:
265311
deploymentconfig: nginx
266312
status:
267313
loadBalancer: {}
314+
kind: List
315+
metadata: {}

test/fixtures/app-scenarios/docker-compose/complex/docker-compose.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,3 +28,6 @@ db:
2828
cpu_quota: 10000
2929
mem_limit: 1000000000
3030
cpuset: 1
31+
32+
no-ports:
33+
image: redis

0 commit comments

Comments
 (0)