Skip to content
Open
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
1 change: 1 addition & 0 deletions mgradm/cmd/backup/restore/systemd_utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,7 @@ func generateDefaultSystemdServices(flags *shared.Flagpole) error {
return utils.JoinErrors(
podman.GenerateUpgradeServerEnvironmentFile(false),
podman.GenerateSystemdService(systemd, serverImage, adm_utils.InstallationFlags{}, []string{}, ""),
pgsql.GenerateCustomConfig(""),
pgsql.GeneratePgsqlSystemdService(systemd, dbImage),
systemd.ReloadDaemon(false),
)
Expand Down
1 change: 0 additions & 1 deletion mgradm/cmd/install/flags.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ import (

// AddInstallFlags add flags to install command.
func AddInstallFlags(cmd *cobra.Command) {
cmd.Flags().String("tz", "", L("Time zone to set on the server. Defaults to the host timezone"))
cmd.Flags().String("email", "admin@example.com", L("Administrator e-mail"))
cmd.Flags().String("emailfrom", "notifications@example.com", L("E-Mail sending the notifications"))
cmd.Flags().String("issParent", "", L("InterServerSync v1 parent FQDN"))
Expand Down
8 changes: 5 additions & 3 deletions mgradm/cmd/install/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,9 @@ func installForPodman(
}

// Create all the database credentials secrets and setup the DB
if err := setupDatabase(flags.Installation.DB, flags.Installation.ReportDB, preparedPgsqlImage); err != nil {
if err := setupDatabase(
flags.Installation.DB, flags.Installation.ReportDB, preparedPgsqlImage, flags.Installation.TZ,
); err != nil {
return err
}

Expand Down Expand Up @@ -118,7 +120,7 @@ func installForPodman(
)
}

func setupDatabase(dbFlags types.DBFlags, reportdbFlags types.DBFlags, preparedImage string) error {
func setupDatabase(dbFlags types.DBFlags, reportdbFlags types.DBFlags, preparedImage string, tz string) error {
if err := shared_podman.CreateCredentialsSecrets(
shared_podman.DBUserSecret, dbFlags.User,
shared_podman.DBPassSecret, dbFlags.Password,
Expand Down Expand Up @@ -149,7 +151,7 @@ func setupDatabase(dbFlags types.DBFlags, reportdbFlags types.DBFlags, preparedI
return err
}
// Run the DB container setup if the user doesn't set a custom host name for it.
if err := pgsql.SetupPgsql(systemd, preparedImage); err != nil {
if err := pgsql.SetupPgsql(systemd, preparedImage, tz); err != nil {
return err
}
if dbFlags.Walbackup {
Expand Down
25 changes: 25 additions & 0 deletions mgradm/shared/pgsql/pgsql.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ package pgsql

import (
"fmt"
"path"

"github.com/uyuni-project/uyuni-tools/mgradm/shared/templates"
"github.com/uyuni-project/uyuni-tools/shared"
Expand Down Expand Up @@ -37,11 +38,31 @@ func PreparePgsqlImage(
return preparedImage, err
}

func GenerateCustomConfig(tz string) error {
customConfFilePath := path.Join(podman.GetServiceConfFolder(podman.DBService), podman.CustomConf)
if !utils.FileExists(customConfFilePath) {
if tz == "" {
tz = "Etc/UTC"
}
environment := fmt.Sprintf("Environment=TZ=%s\n", tz)

if err := podman.GenerateSystemdConfFile(podman.DBService, podman.CustomConf, environment, true); err != nil {
return utils.Error(err, L("cannot generate systemd custom configuration file"))
}
}
return nil
}

// SetupPgsql prepares the systemd service and starts it if needed.
func SetupPgsql(
systemd podman.Systemd,
pgsqlImage string,
tz string,
) error {
if err := GenerateCustomConfig(tz); err != nil {
return err
}

if err := GeneratePgsqlSystemdService(systemd, pgsqlImage); err != nil {
return utils.Error(err, L("cannot generate systemd service"))
}
Expand All @@ -64,7 +85,11 @@ func SetupPgsql(
func Upgrade(
preparedImage string,
systemd podman.Systemd,
tz string,
) error {
if err := GenerateCustomConfig(tz); err != nil {
return err
}
if err := GeneratePgsqlSystemdService(systemd, preparedImage); err != nil {
return utils.Error(err, L("cannot generate systemd service"))
}
Expand Down
6 changes: 3 additions & 3 deletions mgradm/shared/podman/podman.go
Original file line number Diff line number Diff line change
Expand Up @@ -457,7 +457,7 @@ func Upgrade(
return utils.Errorf(err, L("cannot configure db container"))
}

if err := pgsql.Upgrade(preparedPgsqlImage, systemd); err != nil {
if err := pgsql.Upgrade(preparedPgsqlImage, systemd, tz); err != nil {
return err
}

Expand Down Expand Up @@ -510,7 +510,7 @@ func Upgrade(
return utils.JoinErrors(
coco.Upgrade(systemd, authFile, cocoFlags, image, inspectedDB),
hub.Upgrade(systemd, authFile, image, hubXmlrpcFlags),
saline.Upgrade(systemd, authFile, image, salineFlags, utils.GetLocalTimezone()),
saline.Upgrade(systemd, authFile, image, salineFlags, tz),
tftp.Upgrade(systemd, authFile, image, tftpdFlags, fqdn, hasTFTP),
systemd.ReloadDaemon(false),
)
Expand Down Expand Up @@ -720,7 +720,7 @@ func configureDBContainer(
}

// Run the DB container setup if the user doesn't set a custom host name for it.
if err := pgsql.SetupPgsql(systemd, pgsqlImage); err != nil {
if err := pgsql.SetupPgsql(systemd, pgsqlImage, ""); err != nil {
return err
}
} else {
Expand Down
1 change: 1 addition & 0 deletions mgradm/shared/templates/pgsqlServiceTemplate.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ ExecStart=/bin/sh -c '/usr/bin/podman run \
--hostname {{ .NamePrefix }}-db.mgr.internal \
--network-alias db \
--network-alias reportdb \
-e TZ=${TZ} \
--secret {{ .CaSecret }},type=mount,target={{ .CaPath }} \
--secret {{ .KeySecret }},type=mount,uid=999,mode=0400,target={{ .KeyPath }} \
--secret {{ .CertSecret }},type=mount,target={{ .CertPath }} \
Expand Down
1 change: 1 addition & 0 deletions mgradm/shared/utils/cmd_utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -213,6 +213,7 @@ func AddPgsqlFlags(cmd *cobra.Command) {

// AddServerFlags add flags common to install, upgrade and migration.
func AddServerFlags(cmd *cobra.Command) {
cmd.Flags().String("tz", "", L("Time zone to set on the server. Defaults to the host timezone"))
AddImageFlag(cmd)
AddSCCFlag(cmd)
AddPgsqlFlags(cmd)
Expand Down
4 changes: 2 additions & 2 deletions shared/testutils/flagstests/mgradm_install.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import (
// InstallFlagsTestArgs is the slice of command parameters to use with AssertInstallFlags.
var InstallFlagsTestArgs = func() []string {
args := []string{
"--tz", "CEST",
"--tz", "Europe/Berlin",
"--email", "admin@foo.bar",
"--emailfrom", "sender@foo.bar",
"--issParent", "parent.iss.com",
Expand Down Expand Up @@ -49,7 +49,7 @@ var InstallFlagsTestArgs = func() []string {

// AssertInstallFlags checks that all the install flags are parsed correctly.
func AssertInstallFlags(t *testing.T, flags *utils.ServerFlags) {
testutils.AssertEquals(t, "Error parsing --tz", "CEST", flags.Installation.TZ)
testutils.AssertEquals(t, "Error parsing --tz", "Europe/Berlin", flags.Installation.TZ)
testutils.AssertEquals(t, "Error parsing --email", "admin@foo.bar", flags.Installation.Email)
testutils.AssertEquals(t, "Error parsing --emailfrom", "sender@foo.bar", flags.Installation.EmailFrom)
testutils.AssertEquals(t, "Error parsing --issParent", "parent.iss.com", flags.Installation.IssParent)
Expand Down
4 changes: 3 additions & 1 deletion shared/testutils/flagstests/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,12 @@ import (
"testing"

"github.com/uyuni-project/uyuni-tools/mgradm/shared/utils"
"github.com/uyuni-project/uyuni-tools/shared/testutils"
)

// ServerFlagsTestArgs is the slide of server-related command parameters to use with AssertServerFlags.
var ServerFlagsTestArgs = func() []string {
args := []string{}
args := []string{"--tz", "Europe/Berlin"}
args = append(args, SCCFlagTestArgs...)
args = append(args, PgsqlFlagsTestArgs...)
args = append(args, DBFlagsTestArgs...)
Expand All @@ -33,6 +34,7 @@ var ServerFlagsTestArgs = func() []string {

// AssertServerFlags checks that all the server-related common flags are parsed correctly.
func AssertServerFlags(t *testing.T, flags *utils.ServerFlags) {
testutils.AssertEquals(t, "Error parsing --tz", "Europe/Berlin", flags.Installation.TZ)
AssertImageFlag(t, &flags.Image)
AssertRegistryFlag(t, &flags.Image.Registry)
AssertDBUpgradeImageFlag(t, &flags.DBUpgradeImage)
Expand Down
1 change: 1 addition & 0 deletions uyuni-tools.changes.cbosdo.db-timezone
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
- Set the timezone on the database container too (bsc#1267871)
Loading