This repository has been archived by the owner on Nov 16, 2022. It is now read-only.
/
image_manager.go
70 lines (61 loc) · 2.65 KB
/
image_manager.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package model
import (
"os"
"runtime"
)
const (
KeycloakImage = "RELATED_IMAGE_KEYCLOAK"
RHSSOImageOpenJ9 = "RELATED_IMAGE_RHSSO_OPENJ9"
RHSSOImageOpenJDK = "RELATED_IMAGE_RHSSO_OPENJDK"
RHSSOImage = "RELATED_IMAGE_RHSSO"
KeycloakInitContainer = "RELATED_IMAGE_KEYCLOAK_INIT_CONTAINER"
RHSSOInitContainer = "RELATED_IMAGE_RHSSO_INIT_CONTAINER"
RHMIBackupContainer = "RELATED_IMAGE_RHMI_BACKUP_CONTAINER"
PostgresqlImage = "RELATED_IMAGE_POSTGRESQL"
DefaultKeycloakImage = "quay.io/keycloak/keycloak:legacy"
DefaultRHSSOImageOpenJ9 = "registry.redhat.io/rh-sso-7/sso75-openj9-openshift-rhel8:7.5"
DefaultRHSSOImageOpenJDK = "registry.redhat.io/rh-sso-7/sso75-openshift-rhel8:7.5"
DefaultKeycloakInitContainer = "quay.io/keycloak/keycloak-init-container:legacy"
DefaultRHSSOInitContainer = "registry.redhat.io/rh-sso-7/sso7-rhel8-init-container:7.5"
DefaultRHMIBackupContainer = "quay.io/integreatly/backup-container:1.0.16"
DefaultPostgresqlImage = "registry.access.redhat.com/rhscl/postgresql-10-rhel7:1"
)
var Images = NewImageManager()
type ImageManager struct {
Images map[string]string
}
func NewImageManager() ImageManager {
ret := ImageManager{}
ret.Images = map[string]string{
KeycloakImage: ret.getImage(KeycloakImage, DefaultKeycloakImage),
RHSSOImage: ret.getRHSSOImage(),
RHSSOImageOpenJ9: ret.getImage(RHSSOImageOpenJ9, DefaultRHSSOImageOpenJ9),
RHSSOImageOpenJDK: ret.getImage(RHSSOImageOpenJDK, DefaultRHSSOImageOpenJDK),
KeycloakInitContainer: ret.getImage(KeycloakInitContainer, DefaultKeycloakInitContainer),
RHSSOInitContainer: ret.getImage(RHSSOInitContainer, DefaultRHSSOInitContainer),
RHMIBackupContainer: ret.getImage(RHMIBackupContainer, DefaultRHMIBackupContainer),
PostgresqlImage: ret.getImage(PostgresqlImage, DefaultPostgresqlImage),
}
return ret
}
func (p *ImageManager) getImage(environmentalVariable string, defaultValue string) string {
env := os.Getenv(environmentalVariable)
if env == "" {
return defaultValue
}
return env
}
func (p *ImageManager) getRHSSOImage() string {
defaultImage := p.getDefaultRHSSOImageForCurrentArchitecture()
return p.getImage(RHSSOImage, defaultImage)
}
func (p *ImageManager) getDefaultRHSSOImageForCurrentArchitecture() string {
// Full list of archs might be found here:
// https://github.com/golang/go/blob/release-branch.go1.10/src/go/build/syslist.go#L8
switch arch := runtime.GOARCH; arch {
case "ppc64", "ppc64le", "s390x", "s390":
return p.getImage(RHSSOImageOpenJ9, DefaultRHSSOImageOpenJ9)
default:
return p.getImage(RHSSOImageOpenJDK, DefaultRHSSOImageOpenJDK)
}
}