Created attachment 1543239 [details] after multiple versions of dc have been created Description of problem: oc replace --cascade=false --force seems to behave weird compared to oc replace --cascade=false. Exception would be that --force just would speed things up or make change possible where it would fail w/o force. Here we see a somewhat different behaviour: with oc replace --cascade=false -f ....we see a new deployment added and going active as well as expetcted, however with oc replace --cascade=false --force -f ... we do not get a new deployment, however dc prior to replace stays current while latest flag moves to #1 Version-Release number of selected component (if applicable): How reproducible: create new app with dc, create a series of dcs and finally replace the latest dc with an updated one Steps to Reproduce: 1. $ oc new-app openshift/deployment-example 2. $ oc edit dc (edit terminationGracePeriodSeconds a few times and deploy so that there are roughly 10 deployments) 3. $ oc replace --cascade=false --force -f deployment-example.yaml 4a) $ oc replace --cascade=false --force -f deployment-example.yaml 5) repeat 1 - 3 6) oc replace --cascade=false -f deployment-example.yaml Actual results: A) for 1-4a): when having 10 deployments the replace seems to update deployment version 1 which is flagged latest but #10 is still active B) for 1-3,5-6): when replacing w/o --force we get an additional dc (#11) which is then latest and active Expected results: After reading man page about the force option it seems A) and B) should result in the same or we did not fully understand the man page and would be happy to get clarification on this. Currently A) looks like a bug Additional info: I'll add screenshots: 1. after multiple versions of dc have been created - dc_pre_replacement.png 2. after replacing with --force - post_force.png 3. after redoing 1. again and then doing replace w/o force - replace_none_force.png 4. in the next comment I'll add all
Created attachment 1543240 [details] after replacing with --force
Created attachment 1543241 [details] after redoing 1. again and then doing replace w/o force
Version : ~~~ [quicklab@master-0 ~]$ oc version oc v3.11.82 kubernetes v1.11.0+d4cacc0 features: Basic-Auth GSSAPI Kerberos SPNEGO Server https://openshift.internal.311test2.lab.rdu2.cee.redhat.com:443 openshift v3.11.82 kubernetes v1.11.0+d4cacc0 [quicklab@master-0 ~]$ ~~~ - Create a new app: ~~~ [quicklab@master-0 ~]$ oc new-app openshift/deployment-example --> Found Docker image 1c839d8 (3 years old) from Docker Hub for "openshift/deployment-example" * An image stream tag will be created as "deployment-example:latest" that will track this image * This image will be deployed in deployment config "deployment-example" * Port 8080/tcp will be load balanced by service "deployment-example" * Other containers can access this service through the hostname "deployment-example" * WARNING: Image "openshift/deployment-example" runs as the 'root' user which may not be permitted by your cluster administrator --> Creating resources ... imagestream.image.openshift.io "deployment-example" created deploymentconfig.apps.openshift.io "deployment-example" created service "deployment-example" created --> Success Application is not exposed. You can expose services to the outside world by executing one or more of the commands below: 'oc expose svc/deployment-example' Run 'oc status' to view your app. [quicklab@master-0 ~]$ ~~~ - once the deployment is up and running, we edit the dc and iterate `terminationGracePeriodSeconds:`, wait until the new dc is active and start over until we do have at least 10 deployments: ~~~ [quicklab@master-0 ~]$ oc edit dc deploymentconfig.apps.openshift.io/deployment-example edited [quicklab@master-0 ~]$ oc edit dc deploymentconfig.apps.openshift.io/deployment-example edited [quicklab@master-0 ~]$ oc edit dc deploymentconfig.apps.openshift.io/deployment-example edited [quicklab@master-0 ~]$ oc edit dc deploymentconfig.apps.openshift.io/deployment-example edited [quicklab@master-0 ~]$ oc edit dc deploymentconfig.apps.openshift.io/deployment-example edited [quicklab@master-0 ~]$ oc edit dc deploymentconfig.apps.openshift.io/deployment-example edited [quicklab@master-0 ~]$ oc edit dc deploymentconfig.apps.openshift.io/deployment-example edited [quicklab@master-0 ~]$ oc edit dc deploymentconfig.apps.openshift.io/deployment-example edited [quicklab@master-0 ~]$ oc edit dc deploymentconfig.apps.openshift.io/deployment-example edited [quicklab@master-0 ~]$ ~~~ - then the whole project looks like this: ~~~ [quicklab@master-0 ~]$ oc get all NAME READY STATUS RESTARTS AGE pod/deployment-example-10-7bj4n 1/1 Running 0 1m NAME DESIRED CURRENT READY AGE replicationcontroller/deployment-example-1 0 0 0 7m replicationcontroller/deployment-example-10 1 1 1 1m replicationcontroller/deployment-example-2 0 0 0 5m replicationcontroller/deployment-example-3 0 0 0 4m replicationcontroller/deployment-example-4 0 0 0 4m replicationcontroller/deployment-example-5 0 0 0 4m replicationcontroller/deployment-example-6 0 0 0 3m replicationcontroller/deployment-example-7 0 0 0 3m replicationcontroller/deployment-example-8 0 0 0 2m replicationcontroller/deployment-example-9 0 0 0 2m NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/deployment-example ClusterIP 172.30.93.20 <none> 8080/TCP 7m NAME REVISION DESIRED CURRENT TRIGGERED BY deploymentconfig.apps.openshift.io/deployment-example 10 1 1 config,image(deployment-example:latest) NAME DOCKER REPO TAGS UPDATED imagestream.image.openshift.io/deployment-example docker-registry.default.svc:5000/test/deployment-example latest 7 minutes ago [quicklab@master-0 ~]$ [quicklab@master-0 ~]$ oc rollout history dc/deployment-example deploymentconfigs "deployment-example" REVISION STATUS CAUSE 1 Complete config change 2 Complete config change 3 Complete config change 4 Complete config change 5 Complete config change 6 Complete config change 7 Complete config change 8 Complete config change 9 Complete config change 10 Complete config change [quicklab@master-0 ~]$ [quicklab@master-0 ~]$ oc describe dc Name: deployment-example Namespace: test Created: 10 minutes ago Labels: app=deployment-example Annotations: openshift.io/generated-by=OpenShiftNewApp Latest Version: 10 Selector: app=deployment-example,deploymentconfig=deployment-example Replicas: 1 Triggers: Config, Image(deployment-example@latest, auto=true) Strategy: Rolling Template: Pod Template: Labels: app=deployment-example deploymentconfig=deployment-example Annotations: openshift.io/generated-by=OpenShiftNewApp Containers: deployment-example: Image: openshift/deployment-example@sha256:ea9135488f323060cb18ab3ec06286cd49e4b3a611fce1a6a442651ecf421f99 Port: 8080/TCP Host Port: 0/TCP Environment: <none> Mounts: <none> Volumes: <none> Deployment #10 (latest): Name: deployment-example-10 Created: 5 minutes ago Status: Complete Replicas: 1 current / 1 desired Selector: app=deployment-example,deployment=deployment-example-10,deploymentconfig=deployment-example Labels: app=deployment-example,openshift.io/deployment-config.name=deployment-example Pods Status: 1 Running / 0 Waiting / 0 Succeeded / 0 Failed Deployment #9: Created: 5 minutes ago Status: Complete Replicas: 0 current / 0 desired Deployment #8: Created: 6 minutes ago Status: Complete Replicas: 0 current / 0 desired [...] ~~~ - so we have now 10 deployment configs and rc's where #10 is desired/current and ready - looking at the web console deployments, I see as well that #10 is latest, Active with 1 replica --> looks good --> attached also web console output of the deployment : dc_pre_replacement.png - We go on and export the dc, increase `terminationGracePeriodSeconds:` again and replace the current dc with `oc replace --cascade=false --force -f ....`: ~~~ [quicklab@master-0 dc-test]$ vim deployment-example.yaml [quicklab@master-0 dc-test]$ oc replace --cascade=false --force -f deployment-example.yaml deploymentconfig.apps.openshift.io "deployment-example" deleted deploymentconfig.apps.openshift.io/deployment-example replaced [quicklab@master-0 dc-test]$ [quicklab@master-0 dc-test]$ [quicklab@master-0 dc-test]$ oc get all NAME READY STATUS RESTARTS AGE pod/deployment-example-10-tvxb2 1/1 Running 0 2m NAME DESIRED CURRENT READY AGE replicationcontroller/deployment-example-1 0 0 0 8m replicationcontroller/deployment-example-10 1 1 1 2m replicationcontroller/deployment-example-2 0 0 0 7m replicationcontroller/deployment-example-3 0 0 0 7m replicationcontroller/deployment-example-4 0 0 0 6m replicationcontroller/deployment-example-5 0 0 0 5m replicationcontroller/deployment-example-6 0 0 0 5m replicationcontroller/deployment-example-7 0 0 0 4m replicationcontroller/deployment-example-8 0 0 0 3m replicationcontroller/deployment-example-9 0 0 0 2m NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/deployment-example ClusterIP 172.30.145.69 <none> 8080/TCP 8m NAME REVISION DESIRED CURRENT TRIGGERED BY deploymentconfig.apps.openshift.io/deployment-example 1 1 0 config,image(deployment-example:latest) NAME DOCKER REPO TAGS UPDATED imagestream.image.openshift.io/deployment-example docker-registry.default.svc:5000/test/deployment-example latest 8 minutes ago [quicklab@master-0 dc-test]$ [quicklab@master-0 dc-test]$ oc rollout history dc/deployment-example deploymentconfigs "deployment-example" REVISION STATUS CAUSE 1 Complete config change 2 Complete config change 3 Complete config change 4 Complete config change 5 Complete config change 6 Complete config change 7 Complete config change 8 Complete config change 9 Complete config change 10 Complete config change [quicklab@master-0 dc-test]$ [quicklab@master-0 dc-test]$ oc describe dc Name: deployment-example Namespace: test Created: 11 minutes ago Labels: app=deployment-example Annotations: openshift.io/generated-by=OpenShiftNewApp Latest Version: 1 Selector: app=deployment-example,deploymentconfig=deployment-example Replicas: 1 Triggers: Config, Image(deployment-example@latest, auto=true) Strategy: Rolling Template: Pod Template: Labels: app=deployment-example deploymentconfig=deployment-example Annotations: openshift.io/generated-by=OpenShiftNewApp Containers: deployment-example: Image: openshift/deployment-example@sha256:ea9135488f323060cb18ab3ec06286cd49e4b3a611fce1a6a442651ecf421f99 Port: 8080/TCP Host Port: 0/TCP Environment: <none> Mounts: <none> Volumes: <none> Deployment #1 (latest): Created: 19 minutes ago Status: Complete Replicas: 0 current / 0 desired Deployment #10: Name: deployment-example-10 Created: 12 minutes ago Status: Complete Replicas: 1 current / 1 desired Selector: app=deployment-example,deployment=deployment-example-10,deploymentconfig=deployment-example Labels: app=deployment-example,openshift.io/deployment-config.name=deployment-example Pods Status: 1 Running / 0 Waiting / 0 Succeeded / 0 Failed Deployment #9: Created: 13 minutes ago Status: Complete Replicas: 0 current / 0 desired Events: <none> [quicklab@master-0 dc-test]$ ~~~ - so looking at the above output: ~~~ pod/deployment-example-10-tvxb2 1/1 Running 0 2m NAME DESIRED CURRENT READY AGE replicationcontroller/deployment-example-1 0 0 0 8m replicationcontroller/deployment-example-10 1 1 1 2m however, we see [quicklab@master-0 dc-test]$ oc describe dc [..] Deployment #1 (latest): Created: 19 minutes ago Status: Complete Replicas: 0 current / 0 desired Deployment #10: Name: deployment-example-10 Created: 12 minutes ago Status: Complete Replicas: 1 current / 1 desired Selector: app=deployment-example,deployment=deployment-example-10,deploymentconfig=deployment-example Labels: app=deployment-example,openshift.io/deployment-config.name=deployment-example Pods Status: 1 Running / 0 Waiting / 0 Succeeded / 0 Failed ~~~ - and also web console shows that dc #10 is running (attached pic: post_force.png), while #1 is latest which seems strange Understanding is that with replacement the latest running is replaced and is the latest which is the behaviour when not using force) - repeating all of the above, but replacing without --force seems to be a more logical result: ~~~ [quicklab@master-0 dc-test]$ oc replace --cascade=false -f deployment-example.yaml deploymentconfig.apps.openshift.io/deployment-example replaced [quicklab@master-0 dc-test]$ [quicklab@master-0 dc-test]$ oc get all NAME READY STATUS RESTARTS AGE pod/deployment-example-10-htwfc 0/1 Terminating 0 22m pod/deployment-example-11-deploy 1/1 Running 0 6s pod/deployment-example-11-ntg9k 1/1 Running 0 0s NAME DESIRED CURRENT READY AGE replicationcontroller/deployment-example-1 0 0 0 26m replicationcontroller/deployment-example-10 0 0 0 22m replicationcontroller/deployment-example-11 1 1 1 7s replicationcontroller/deployment-example-2 0 0 0 25m replicationcontroller/deployment-example-3 0 0 0 25m replicationcontroller/deployment-example-4 0 0 0 24m replicationcontroller/deployment-example-5 0 0 0 24m replicationcontroller/deployment-example-6 0 0 0 24m replicationcontroller/deployment-example-7 0 0 0 23m replicationcontroller/deployment-example-8 0 0 0 23m replicationcontroller/deployment-example-9 0 0 0 22m NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/deployment-example ClusterIP 172.30.3.16 <none> 8080/TCP 26m NAME REVISION DESIRED CURRENT TRIGGERED BY deploymentconfig.apps.openshift.io/deployment-example 11 1 1 config,image(deployment-example:latest) NAME DOCKER REPO TAGS UPDATED imagestream.image.openshift.io/deployment-example docker-registry.default.svc:5000/test/deployment-example latest 26 minutes ago [quicklab@master-0 dc-test]$ [quicklab@master-0 dc-test]$ oc rollout history dc/deployment-example deploymentconfigs "deployment-example" REVISION STATUS CAUSE 1 Complete config change 2 Complete config change 3 Complete config change 4 Complete config change 5 Complete config change 6 Complete config change 7 Complete config change 8 Complete config change 9 Complete config change 10 Complete config change 11 Complete config change [quicklab@master-0 dc-test]$ [quicklab@master-0 dc-test]$ oc describe dc Name: deployment-example Namespace: test Created: 26 minutes ago Labels: app=deployment-example Annotations: openshift.io/generated-by=OpenShiftNewApp Latest Version: 11 Selector: app=deployment-example,deploymentconfig=deployment-example Replicas: 1 Triggers: Config, Image(deployment-example@latest, auto=true) Strategy: Rolling Template: Pod Template: Labels: app=deployment-example deploymentconfig=deployment-example Annotations: openshift.io/generated-by=OpenShiftNewApp Containers: deployment-example: Image: openshift/deployment-example@sha256:ea9135488f323060cb18ab3ec06286cd49e4b3a611fce1a6a442651ecf421f99 Port: 8080/TCP Host Port: 0/TCP Environment: <none> Mounts: <none> Volumes: <none> Deployment #11 (latest): Name: deployment-example-11 Created: 18 seconds ago Status: Complete Replicas: 1 current / 1 desired Selector: app=deployment-example,deployment=deployment-example-11,deploymentconfig=deployment-example Labels: app=deployment-example,openshift.io/deployment-config.name=deployment-example Pods Status: 1 Running / 0 Waiting / 0 Succeeded / 0 Failed Deployment #10: Created: 22 minutes ago Status: Complete Replicas: 0 current / 0 desired Deployment #9: Created: 22 minutes ago Status: Complete Replicas: 0 current / 0 desired ~~~ --> in this case the latest is now 11 which is latest and active
There's https://bugzilla.redhat.com/show_bug.cgi?id=1686838 already tracking this problem. Let's make it simple and continue this in a single BZ entry. *** This bug has been marked as a duplicate of bug 1686838 ***