mirror of
https://github.com/rancher/rke.git
synced 2025-08-19 07:17:30 +00:00
Correctly compare image env and container env
This commit is contained in:
parent
bfb5d2e875
commit
5aca37c1cf
@ -309,10 +309,15 @@ func IsContainerUpgradable(ctx context.Context, dClient *client.Client, imageCfg
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return false, err
|
return false, err
|
||||||
}
|
}
|
||||||
|
// image inspect to compare the env correctly
|
||||||
|
imageInspect, _, err := dClient.ImageInspectWithRaw(ctx, imageCfg.Image)
|
||||||
|
if err != nil {
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
if containerInspect.Config.Image != imageCfg.Image ||
|
if containerInspect.Config.Image != imageCfg.Image ||
|
||||||
!sliceEqualsIgnoreOrder(containerInspect.Config.Entrypoint, imageCfg.Entrypoint) ||
|
!sliceEqualsIgnoreOrder(containerInspect.Config.Entrypoint, imageCfg.Entrypoint) ||
|
||||||
!sliceEqualsIgnoreOrder(containerInspect.Config.Cmd, imageCfg.Cmd) ||
|
!sliceEqualsIgnoreOrder(containerInspect.Config.Cmd, imageCfg.Cmd) ||
|
||||||
!isContainerRKEEnvChanged(containerInspect.Config.Env, imageCfg.Env) ||
|
!isContainerEnvChanged(containerInspect.Config.Env, imageCfg.Env, imageInspect.Config.Env) ||
|
||||||
!sliceEqualsIgnoreOrder(containerInspect.HostConfig.Binds, hostCfg.Binds) {
|
!sliceEqualsIgnoreOrder(containerInspect.HostConfig.Binds, hostCfg.Binds) {
|
||||||
logrus.Debugf("[%s] Container [%s] is eligible for upgrade on host [%s]", plane, containerName, hostname)
|
logrus.Debugf("[%s] Container [%s] is eligible for upgrade on host [%s]", plane, containerName, hostname)
|
||||||
return true, nil
|
return true, nil
|
||||||
@ -420,20 +425,8 @@ func convertToSemver(version string) (*semver.Version, error) {
|
|||||||
return semver.NewVersion(strings.Join(compVersion, "."))
|
return semver.NewVersion(strings.Join(compVersion, "."))
|
||||||
}
|
}
|
||||||
|
|
||||||
func isContainerRKEEnvChanged(containerEnv, imageConfigEnv []string) bool {
|
func isContainerEnvChanged(containerEnv, imageConfigEnv, dockerfileEnv []string) bool {
|
||||||
// remove PATH env from the container env
|
// remove PATH env from the container env
|
||||||
cleanedContainerEnv := getRKEEnvVars(containerEnv)
|
allImageEnv := append(imageConfigEnv, dockerfileEnv...)
|
||||||
cleanedImageConfigEnv := getRKEEnvVars(imageConfigEnv)
|
return sliceEqualsIgnoreOrder(allImageEnv, containerEnv)
|
||||||
|
|
||||||
return sliceEqualsIgnoreOrder(cleanedContainerEnv, cleanedImageConfigEnv)
|
|
||||||
}
|
|
||||||
|
|
||||||
func getRKEEnvVars(env []string) []string {
|
|
||||||
tmp := []string{}
|
|
||||||
for _, e := range env {
|
|
||||||
if strings.HasPrefix(e, "RKE_") {
|
|
||||||
tmp = append(tmp, e)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return tmp
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user