Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[3.7] Backport dc trigger reconciliation on image change release #18524

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
154 changes: 77 additions & 77 deletions pkg/apps/controller/deployer/deployer_controller.go

Large diffs are not rendered by default.

258 changes: 129 additions & 129 deletions pkg/apps/controller/deployer/deployer_controller_test.go

Large diffs are not rendered by default.

266 changes: 138 additions & 128 deletions pkg/apps/controller/deploymentconfig/deploymentconfig_controller.go

Large diffs are not rendered by default.

243 changes: 135 additions & 108 deletions pkg/apps/controller/deploymentconfig/deploymentconfig_controller_test.go

Large diffs are not rendered by default.

11 changes: 7 additions & 4 deletions pkg/image/trigger/deploymentconfigs/deploymentconfigs.go
Original file line number Diff line number Diff line change
Expand Up @@ -127,13 +127,19 @@ func (i deploymentConfigTriggerIndexer) Index(obj, old interface{}) (string, *tr
default:
// updated
dc = obj.(*appsapi.DeploymentConfig)
oldDC := old.(*appsapi.DeploymentConfig)
triggers = calculateDeploymentConfigTriggers(dc)
oldTriggers := calculateDeploymentConfigTriggers(old.(*appsapi.DeploymentConfig))
oldTriggers := calculateDeploymentConfigTriggers(oldDC)
switch {
case len(oldTriggers) == 0:
change = cache.Added
case !reflect.DeepEqual(oldTriggers, triggers):
change = cache.Updated
// We need to react on image changes as well. Image names could change,
// images could be set to different value or resetted to "" e.g. by oc apply
// and we need to make sure those changes get reconciled by re-resolving images
case !reflect.DeepEqual(dc.Spec.Template.Spec.Containers, oldDC.Spec.Template.Spec.Containers):
change = cache.Updated
}
}

Expand Down Expand Up @@ -190,9 +196,6 @@ func UpdateDeploymentConfigImages(dc *appsapi.DeploymentConfig, tagRetriever tri
glog.V(4).Infof("trigger %#v in deployment %s is not resolveable", p, dc.Name)
return nil, false, nil
}
if ref == p.LastTriggeredImage {
continue
}

if len(ref) == 0 {
ref = p.LastTriggeredImage
Expand Down
368 changes: 344 additions & 24 deletions test/extended/deployments/deployments.go

Large diffs are not rendered by default.

148 changes: 81 additions & 67 deletions test/extended/deployments/util.go

Large diffs are not rendered by default.

59 changes: 28 additions & 31 deletions test/extended/testdata/bindata.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

59 changes: 28 additions & 31 deletions test/extended/testdata/deployments/deployment-trigger.yaml
Original file line number Diff line number Diff line change
@@ -1,32 +1,29 @@
apiVersion: v1
kind: List
items:
- apiVersion: v1
kind: DeploymentConfig
metadata:
labels:
app: example
name: example
spec:
replicas: 1
template:
metadata:
labels:
app: example
spec:
containers:
- imagePullPolicy: Always
name: test
command:
- /bin/sleep
- "100"
test: false
triggers:
- imageChangeParams:
automatic: true
containerNames:
- test
from:
kind: ImageStreamTag
name: test:v1
type: ImageChange
kind: DeploymentConfig
metadata:
labels:
app: example
name: example
spec:
replicas: 1
template:
metadata:
labels:
app: example
spec:
containers:
- imagePullPolicy: Always
name: test
command:
- /bin/sleep
- "100"
test: false
triggers:
- imageChangeParams:
automatic: true
containerNames:
- test
from:
kind: ImageStreamTag
name: test:v1
type: ImageChange