Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
8d131dc
NO-ISSUE: rename docker image for postgres 12 as latest tag disappear…
openshift-cherrypick-robot Mar 29, 2024
8f96359
MGMT-17369: Add multi-arch release images to as well when setting onl…
openshift-cherrypick-robot Mar 29, 2024
3f9266c
MGMT-17361: Changing the addition of configuration release images to …
openshift-cherrypick-robot Mar 29, 2024
208dcb5
NO-ISSUE: replace minio quay.io image repository (#6152)
openshift-cherrypick-robot Apr 5, 2024
a3cc65b
MGMT-17438: bugfix, make sure ODF and LVM requirements do not change …
openshift-cherrypick-robot Apr 9, 2024
c867384
MGMT-17412: Change fallbck behavior when error occuring in OpenShift …
openshift-cherrypick-robot Apr 9, 2024
10edcb9
MGMT-17468: Use x86_64 over amd64 and arm64 over aarch64 for CPU arch…
openshift-cherrypick-robot Apr 18, 2024
4053a74
MGMT-17513: Change the latest release image retrieved in GetReleaseIm…
openshift-cherrypick-robot Apr 18, 2024
b72e91a
MGMT-17503: Fix the cpu architectures retrieved in ../openshift-versi…
openshift-cherrypick-robot Apr 18, 2024
85333c2
MGMT-17412: Change fallbck behavior when error occuring in OpenShift …
openshift-cherrypick-robot Apr 18, 2024
3d50ab0
MGMT-17558: Allow installation on iSCSI volume (#6222)
openshift-cherrypick-robot Apr 19, 2024
be095a1
NO-ISSUE: Change only-latest api response to compare versions accordi…
openshift-cherrypick-robot Apr 19, 2024
f022a08
MGMT-17620: Change the way release images are handled in RestAPI flow…
openshift-cherrypick-robot Apr 21, 2024
34e9389
MGMT-17764: Update the latest image search functionality in the RestA…
openshift-cherrypick-robot May 8, 2024
86298d3
MGMT-17775: Ensure that patch manifest filenames are consistent and c…
openshift-cherrypick-robot May 9, 2024
19b946c
MGMT-18059: Mark OCI as supported integration (#6406)
adriengentil Jun 5, 2024
0f3ad25
OCPBUGS-31733: Remove CPMS manifest for vsphere platform (#6404)
openshift-cherrypick-robot Jun 5, 2024
2971625
NO-ISSUE: Red Hat Konflux update assisted-service-saas-hotfix (#6455)
red-hat-konflux[bot] Jun 25, 2024
ab03251
NO-ISSUE: Increase Konflux git clone depth (#6496)
pastequo Jun 27, 2024
3ba88a4
Update Konflux references (#6517)
red-hat-konflux[bot] Jul 12, 2024
64cb2ec
NO-ISSUE: Add renovate config to limit number of PR (#6538)
pastequo Jul 12, 2024
c8f8b96
NO-ISSUE: Update Konflux references (#6567)
red-hat-konflux[bot] Jul 15, 2024
48f8215
NO-ISSUE: Update Konflux references
red-hat-konflux[bot] Jul 20, 2024
d7202f0
NO-ISSUE: Konflux migration (#6622)
pastequo Jul 25, 2024
b5190b4
NO-ISSUE: Deprecated image check migration (#6623)
pastequo Jul 25, 2024
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

Large diffs are not rendered by default.

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ DEBUG_SERVICE_PORT := $(or ${DEBUG_SERVICE_PORT},40000)
SERVICE := $(or ${SERVICE},${ASSISTED_ORG}/assisted-service:${ASSISTED_TAG})
IMAGE_SERVICE := $(or ${IMAGE_SERVICE},${ASSISTED_ORG}/assisted-image-service:${ASSISTED_TAG})
ASSISTED_UI := $(or ${ASSISTED_UI},${ASSISTED_ORG}/assisted-installer-ui:${ASSISTED_TAG})
PSQL_IMAGE := $(or ${PSQL_IMAGE},quay.io/centos7/postgresql-12-centos7:latest)
PSQL_IMAGE := $(or ${PSQL_IMAGE},quay.io/sclorg/postgresql-12-c8s:latest)
BUNDLE_IMAGE := $(or ${BUNDLE_IMAGE},${ASSISTED_ORG}/assisted-service-operator-bundle:${ASSISTED_TAG})
INDEX_IMAGE := $(or ${INDEX_IMAGE},${ASSISTED_ORG}/assisted-service-index:${ASSISTED_TAG})

Expand Down

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

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

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

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

130 changes: 16 additions & 114 deletions cmd/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,6 @@ import (
"github.com/pkg/errors"
"github.com/prometheus/client_golang/prometheus"
"github.com/sirupsen/logrus"
"github.com/thoas/go-funk"
"gorm.io/driver/postgres"
"gorm.io/gorm"
"gorm.io/gorm/logger"
Expand Down Expand Up @@ -261,7 +260,7 @@ func main() {
failOnError(err, "Failed to initialize OSImages")

var releaseImagesArray = models.ReleaseImages{}
parseReleaseImages(&releaseImagesArray, failOnError)
versions.ParseReleaseImages(&releaseImagesArray, Options.ReleaseImages, failOnError)

var releaseSourcesArray = models.ReleaseSources{}
if Options.ReleaseSourcesConfig.ReleaseSources != "" {
Expand All @@ -270,7 +269,7 @@ func main() {
}

var ignoredOpenshiftVersions = []string{}
parseIgnoredOpenshiftVersions(&ignoredOpenshiftVersions, failOnError)
versions.ParseIgnoredOpenshiftVersions(&ignoredOpenshiftVersions, Options.IgnoredOpenshiftVersions, failOnError)

log.Println(fmt.Sprintf("Started service with OS Images %v, Release Images %v, Release Sources %v, Ignored OpenShift Versions %v",
Options.OsImages, Options.ReleaseImages, Options.ReleaseSourcesConfig.ReleaseSources, Options.IgnoredOpenshiftVersions))
Expand Down Expand Up @@ -319,7 +318,7 @@ func main() {
maxDuration(Options.InstructionConfig.DiskCheckTimeout, Options.InstructionConfig.ImageAvailabilityTimeout)+1*time.Minute)
var lead leader.ElectorInterface
var k8sClient *kubernetes.Clientset
var autoMigrationLeader leader.ElectorInterface
var startupLeader leader.ElectorInterface

mirrorRegistriesBuilder := mirrorregistries.New()
releaseHandler := oc.NewRelease(&executer.CommonExecuter{},
Expand Down Expand Up @@ -382,7 +381,7 @@ func main() {
failOnError(cerr, "Failed to create kubernetes cluster config")
k8sClient = kubernetes.NewForConfigOrDie(cfg)

autoMigrationLeader = leader.NewElector(k8sClient, leader.Config{LeaseDuration: 5 * time.Second,
startupLeader = leader.NewElector(k8sClient, leader.Config{LeaseDuration: 5 * time.Second,
RetryInterval: 2 * time.Second, Namespace: Options.LeaderConfig.Namespace, RenewDeadline: 4 * time.Second},
"assisted-service-migration-helper",
log.WithField("pkg", "migrationLeader"))
Expand All @@ -398,7 +397,7 @@ func main() {
case deployment_type_onprem, deployment_type_ocp:

lead = &leader.DummyElector{}
autoMigrationLeader = lead
startupLeader = lead

if Options.DeployTarget == deployment_type_ocp {
ocpClient, err = k8sclient.NewK8SClient("", log)
Expand All @@ -409,7 +408,7 @@ func main() {
log.Fatalf("not supported deploy target %s", Options.DeployTarget)
}

failOnError(autoMigrationWithLeader(autoMigrationLeader, db, log), "Failed auto migration process")
failOnError(autoMigrationWithLeader(startupLeader, db, log), "Failed auto migration process")

Options.UploaderConfig.AssistedServiceVersion = versions.GetRevision()
Options.UploaderConfig.Versions = Options.Versions
Expand Down Expand Up @@ -443,9 +442,16 @@ func main() {
hostStateMonitor.Start()
defer hostStateMonitor.Stop()

addReleaseImagesToDBIfNeeded(db, releaseImagesArray, lead, log, failOnError)
openshiftReleaseSyncer := runOpenshiftReleaseSyncerIfNeeded(releaseSourcesArray, releaseImagesArray, db, log, releaseHandler, lead, failOnError)
defer stopOpenshiftReleaseSyncerIfNeeded(openshiftReleaseSyncer)
failOnError(
versions.AddReleaseImagesToDBIfNeeded(db, releaseImagesArray, startupLeader, log, Options.EnableKubeAPI, Options.ReleaseSourcesConfig.ReleaseSources),
"error occured while adding configuration release images to the DB if needed",
)
openshiftReleaseSyncer, err := releasesources.RunOpenshiftReleaseSyncerIfNeeded(
releaseSourcesArray, releaseImagesArray, db, log, releaseHandler, lead, startupLeader, Options.EnableKubeAPI, Options.ReleaseSourcesConfig,
)

failOnError(err, "error occured while running OpenShift Release Syncer if needed")
defer releasesources.StopOpenshiftReleaseSyncerIfNeeded(openshiftReleaseSyncer)

newUrl, err := s3wrapper.FixEndpointURL(Options.BMConfig.S3EndpointURL)
failOnError(err, "failed to create valid bm config S3 endpoint URL from %s", Options.BMConfig.S3EndpointURL)
Expand Down Expand Up @@ -945,107 +951,3 @@ func startPPROF(log *logrus.Logger) {
}
}
}

func runOpenshiftReleaseSyncerIfNeeded(
releaseSources models.ReleaseSources,
releaseImages models.ReleaseImages,
db *gorm.DB,
log logrus.FieldLogger,
releaseHandler oc.Release,
lead leader.ElectorInterface,
failOnError func(err error, msg string, args ...interface{}),
) *thread.Thread {
if !Options.EnableKubeAPI && Options.ReleaseSourcesConfig.ReleaseSources != "" {
releaseSourcesHandler, err := releasesources.NewReleaseSourcesHandler(
releaseSources, releaseImages, log, db, Options.ReleaseSourcesConfig, lead,
)
if err != nil {
failOnError(err, "error occurred while creating release sources handler")
}
log.WithField("pkg", "releasesources").Info("Running Openshift Releases Syncer at startup")
err = releaseSourcesHandler.SyncReleaseImages()
if err != nil {
failOnError(err, "error occurred while syncing release images at startup")
}

openShiftReleaseSyncer := thread.New(
log.WithField("pkg", "releasesources"), "Openshift Releases Syncer", Options.ReleaseSourcesConfig.OpenShiftReleaseSyncerInterval, releaseSourcesHandler.SyncReleaseImagesThreadFunc)
openShiftReleaseSyncer.Start()
return openShiftReleaseSyncer
}

return nil
}

func stopOpenshiftReleaseSyncerIfNeeded(openShiftReleaseSyncer *thread.Thread) {
if openShiftReleaseSyncer != nil {
openShiftReleaseSyncer.Stop()
}
}

func addReleaseImagesToDBIfNeeded(
db *gorm.DB,
releaseImages models.ReleaseImages,
lead leader.ElectorInterface,
log logrus.FieldLogger,
failOnError func(err error, msg string, args ...interface{})) {
// If it is kubeAPI mode or release sources was specified (therefore OpenShift Release Syncer will run),
// we should not add the release images to the DB.
if Options.EnableKubeAPI || Options.ReleaseSourcesConfig.ReleaseSources != "" {
return
}

if !lead.IsLeader() {
log.Debug("Not a leader, skip adding configuration release images to the DB")
return
}

tx := db.Begin()

var count int64
err := tx.Model(&models.ReleaseImage{}).Count(&count).Error
failOnError(err, "error occurred while trying to count the initial amount of release images in the DB")

log.Debugf("Truncating all release_images table. '%d' records", count)
if err := tx.Exec("TRUNCATE TABLE release_images").Error; err != nil {
tx.Rollback()
failOnError(err, "error occurred while trying to delete the release images in the DB")
}

if len(releaseImages) > 0 {
log.Debugf("Inserting configuration release images to the DB. '%d' records", len(releaseImages))
if err := tx.Create(releaseImages).Error; err != nil {
tx.Rollback()
failOnError(err, "error occurred while trying to insert the release images to the DB")
}
}

if err := tx.Commit().Error; err != nil {
tx.Rollback()
failOnError(err, "error occurred while commiting changes to the DB")
}
}

func parseIgnoredOpenshiftVersions(ignoredOpenshiftVersions *[]string, failOnError func(err error, msg string, args ...interface{})) {
if Options.IgnoredOpenshiftVersions != "" {
failOnError(json.Unmarshal([]byte(Options.IgnoredOpenshiftVersions), ignoredOpenshiftVersions),
"Failed to parse IGNORED_OPENSHIFT_VERSIONS json %s", Options.IgnoredOpenshiftVersions)
}
}

func parseReleaseImages(releaseImages *models.ReleaseImages, failOnError func(err error, msg string, args ...interface{})) {
if Options.ReleaseImages == "" {
// ReleaseImages is optional (not used by the operator)
return
} else {
failOnError(json.Unmarshal([]byte(Options.ReleaseImages), releaseImages),
"Failed to parse RELEASE_IMAGES json %s", Options.ReleaseImages)
}

// For backward compatibility with release images that lack the CPUArchitectures field.
funk.ForEach(*releaseImages, func(releaseImage *models.ReleaseImage) {
if releaseImage.CPUArchitectures == nil {
releaseImage.CPUArchitectures = []string{*releaseImage.CPUArchitecture}
}
})
}
2 changes: 1 addition & 1 deletion config/manager/manager.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ spec:
- name: IMAGE_SERVICE_IMAGE
value: quay.io/edge-infrastructure/assisted-image-service:latest
- name: DATABASE_IMAGE
value: quay.io/centos7/postgresql-12-centos7:latest
value: quay.io/sclorg/postgresql-12-c8s:latest
- name: AGENT_IMAGE
value: quay.io/edge-infrastructure/assisted-installer-agent:latest
- name: CONTROLLER_IMAGE
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ spec:
name: controller
- image: quay.io/edge-infrastructure/assisted-image-service:latest
name: image-service
- image: quay.io/centos7/postgresql-12-centos7:latest
- image: quay.io/sclorg/postgresql-12-c8s:latest
name: postgresql
- image: quay.io/edge-infrastructure/assisted-installer:latest
name: installer
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -981,7 +981,7 @@ spec:
- name: IMAGE_SERVICE_IMAGE
value: quay.io/edge-infrastructure/assisted-image-service:latest
- name: DATABASE_IMAGE
value: quay.io/centos7/postgresql-12-centos7:latest
value: quay.io/sclorg/postgresql-12-c8s:latest
- name: AGENT_IMAGE
value: quay.io/edge-infrastructure/assisted-installer-agent:latest
- name: CONTROLLER_IMAGE
Expand Down Expand Up @@ -1119,7 +1119,7 @@ spec:
name: controller
- image: quay.io/edge-infrastructure/assisted-image-service:latest
name: image-service
- image: quay.io/centos7/postgresql-12-centos7:latest
- image: quay.io/sclorg/postgresql-12-c8s:latest
name: postgresql
- image: quay.io/edge-infrastructure/assisted-installer:latest
name: installer
Expand Down
2 changes: 1 addition & 1 deletion deploy/podman/pod-persistent-disconnected.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ spec:
containers:
- args:
- run-postgresql
image: quay.io/centos7/postgresql-12-centos7:latest
image: quay.io/sclorg/postgresql-12-c8s:latest
name: db
envFrom:
- configMapRef:
Expand Down
2 changes: 1 addition & 1 deletion deploy/podman/pod-persistent.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ spec:
containers:
- args:
- run-postgresql
image: quay.io/centos7/postgresql-12-centos7:latest
image: quay.io/sclorg/postgresql-12-c8s:latest
name: db
envFrom:
- configMapRef:
Expand Down
2 changes: 1 addition & 1 deletion deploy/podman/pod.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ spec:
containers:
- args:
- run-postgresql
image: quay.io/centos7/postgresql-12-centos7:latest
image: quay.io/sclorg/postgresql-12-c8s:latest
name: db
envFrom:
- configMapRef:
Expand Down
2 changes: 1 addition & 1 deletion deploy/podman/pod_tls.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ spec:
containers:
- args:
- run-postgresql
image: quay.io/centos7/postgresql-12-centos7:latest
image: quay.io/sclorg/postgresql-12-c8s:latest
name: db
envFrom:
- configMapRef:
Expand Down
2 changes: 1 addition & 1 deletion deploy/postgres/postgres-deployment-ephemeral.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ spec:
spec:
containers:
- name: postgres
image: quay.io/centos7/postgresql-12-centos7
image: quay.io/sclorg/postgresql-12-c8s
imagePullPolicy: "IfNotPresent"
ports:
- containerPort: 5432
Expand Down
2 changes: 1 addition & 1 deletion deploy/postgres/postgres-deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ spec:
spec:
containers:
- name: postgres
image: quay.io/centos7/postgresql-12-centos7
image: quay.io/sclorg/postgresql-12-c8s
imagePullPolicy: "IfNotPresent"
ports:
- containerPort: 5432
Expand Down
Loading