Skip to content

Commit 082c28c

Browse files
authored
Merge branch 'main' into feat-mgrctl-logs
2 parents a976487 + 6438366 commit 082c28c

30 files changed

Lines changed: 342 additions & 123 deletions

mgradm/cmd/install/flags.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
package install
66

77
import (
8+
"github.com/rs/zerolog/log"
89
"github.com/spf13/cobra"
910
cmd_utils "github.com/uyuni-project/uyuni-tools/mgradm/shared/utils"
1011
. "github.com/uyuni-project/uyuni-tools/shared/l10n"
@@ -18,6 +19,9 @@ func AddInstallFlags(cmd *cobra.Command) {
1819
cmd.Flags().String("emailfrom", "notifications@example.com", L("E-Mail sending the notifications"))
1920
cmd.Flags().String("issParent", "", L("InterServerSync v1 parent FQDN"))
2021
cmd.Flags().Bool("tftp", true, L("Enable TFTP"))
22+
if err := cmd.Flags().MarkDeprecated("tftp", "Use --tftpd-disable instead"); err != nil {
23+
log.Error().Err(err).Msg(L("failed to mark tftp deprecated"))
24+
}
2125

2226
cmd_utils.AddServerFlags(cmd)
2327

@@ -29,6 +33,9 @@ func AddInstallFlags(cmd *cobra.Command) {
2933

3034
cmd_utils.AddSalineFlag(cmd)
3135

36+
_ = utils.AddFlagHelpGroup(cmd, &utils.Group{ID: "tftpd-container", Title: L("TFTPD Flags")})
37+
utils.AddTFTPDFlags(cmd, true, "tftpd-container")
38+
3239
cmd.Flags().String("admin-login", "admin", L("Administrator user name"))
3340
cmd.Flags().String("admin-password", "", L("Administrator password"))
3441
cmd.Flags().String("admin-firstName", "Administrator", L("First name of the administrator"))

mgradm/cmd/install/install.go

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -45,21 +45,7 @@ NOTE: installing on a remote podman is not supported yet!
4545
args = args[1:]
4646
}
4747
var flags podmanInstallFlags
48-
flagsUpdater := func(v *viper.Viper) {
49-
flags.Coco.IsChanged = v.IsSet("coco.replicas")
50-
flags.HubXmlrpc.IsChanged = v.IsSet("hubxmlrpc.replicas")
51-
flags.Saline.IsChanged = v.IsSet("saline.replicas") || v.IsSet("saline.port")
52-
53-
if flags.Installation.SSL.Ca.IsThirdParty() && !flags.Installation.SSL.DB.CA.IsThirdParty() {
54-
flags.Installation.SSL.DB.CA.Root = flags.Installation.SSL.Ca.Root
55-
flags.Installation.SSL.DB.CA.Intermediate = flags.Installation.SSL.Ca.Intermediate
56-
}
57-
if flags.Installation.SSL.Server.IsDefined() && !flags.Installation.SSL.DB.IsDefined() {
58-
flags.Installation.SSL.DB.Cert = flags.Installation.SSL.Server.Cert
59-
flags.Installation.SSL.DB.Key = flags.Installation.SSL.Server.Key
60-
}
61-
}
62-
return utils.CommandHelper(globalFlags, cmd, args, &flags, flagsUpdater, run)
48+
return utils.CommandHelper(globalFlags, cmd, args, &flags, getFlagsUpdater(&flags), run)
6349
},
6450
}
6551

@@ -70,6 +56,26 @@ NOTE: installing on a remote podman is not supported yet!
7056
return cmd
7157
}
7258

59+
func getFlagsUpdater(flags *podmanInstallFlags) utils.FlagsUpdaterFunc {
60+
return func(v *viper.Viper) {
61+
flags.Coco.IsChanged = v.IsSet("coco.replicas")
62+
flags.HubXmlrpc.IsChanged = v.IsSet("hubxmlrpc.replicas")
63+
flags.Saline.IsChanged = v.IsSet("saline.replicas") || v.IsSet("saline.port")
64+
65+
if flags.Installation.SSL.Ca.IsThirdParty() && !flags.Installation.SSL.DB.CA.IsThirdParty() {
66+
flags.Installation.SSL.DB.CA.Root = flags.Installation.SSL.Ca.Root
67+
flags.Installation.SSL.DB.CA.Intermediate = flags.Installation.SSL.Ca.Intermediate
68+
}
69+
if flags.Installation.SSL.Server.IsDefined() && !flags.Installation.SSL.DB.IsDefined() {
70+
flags.Installation.SSL.DB.Cert = flags.Installation.SSL.Server.Cert
71+
flags.Installation.SSL.DB.Key = flags.Installation.SSL.Server.Key
72+
}
73+
if !flags.Installation.Tftp {
74+
flags.TFTPD.Enable = false
75+
}
76+
}
77+
}
78+
7379
// NewCommand for installation.
7480
func NewCommand(globalFlags *types.GlobalFlags) *cobra.Command {
7581
return newCmd(globalFlags, installForPodman)

mgradm/cmd/install/utils.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import (
1717
"github.com/uyuni-project/uyuni-tools/mgradm/shared/pgsql"
1818
"github.com/uyuni-project/uyuni-tools/mgradm/shared/podman"
1919
"github.com/uyuni-project/uyuni-tools/mgradm/shared/saline"
20+
"github.com/uyuni-project/uyuni-tools/mgradm/shared/tftp"
2021
adm_utils "github.com/uyuni-project/uyuni-tools/mgradm/shared/utils"
2122
"github.com/uyuni-project/uyuni-tools/shared"
2223
. "github.com/uyuni-project/uyuni-tools/shared/l10n"
@@ -108,6 +109,7 @@ func installForPodman(
108109
coco.SetupCocoContainer(systemd, authFile, flags.Coco, flags.Image, flags.Installation.DB),
109110
hub.SetupHubXmlrpc(systemd, authFile, flags.Image, flags.HubXmlrpc),
110111
saline.SetupSalineContainer(systemd, authFile, flags.Image, flags.Saline, flags.Installation.TZ),
112+
tftp.SetupTFTPContainer(systemd, authFile, flags.Image, flags.TFTPD, fqdn),
111113
)
112114
}
113115

mgradm/cmd/status/podman.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// SPDX-FileCopyrightText: 2025 SUSE LLC
1+
// SPDX-FileCopyrightText: 2026 SUSE LLC
22
//
33
// SPDX-License-Identifier: Apache-2.0
44

@@ -51,5 +51,9 @@ func podmanStatus(
5151
)
5252
}
5353

54+
if systemd.HasService(podman.TFTPService) {
55+
_ = utils.RunCmdStdMapping(zerolog.DebugLevel, "systemctl", "status", "--no-pager", podman.TFTPService)
56+
}
57+
5458
return nil
5559
}

mgradm/cmd/support/ptf/utils.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ func ptfForPodman(
5959
flags.HubXmlrpc,
6060
flags.Saline,
6161
flags.Pgsql,
62+
flags.TFTPD,
6263
flags.Installation.TZ,
6364
)
6465
}
@@ -103,6 +104,7 @@ func (flags *podmanPTFFlags) checkParameters(authFile string) error {
103104
podman_shared.HubXmlrpcService: &flags.HubXmlrpc.Image.Name,
104105
podman_shared.SalineService + "@": &flags.Saline.Image.Name,
105106
podman_shared.DBService: &flags.Pgsql.Image.Name,
107+
podman_shared.TFTPService: &flags.TFTPD.Image.Name,
106108
}
107109

108110
for service, pointer := range images {

mgradm/cmd/support/ptf/utils_test.go

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,15 @@ import (
1717

1818
func TestCheckParameters(t *testing.T) {
1919
createServiceImages := func(
20-
image string, cocoImage string, hubImage string, salineImage string, dbImage string,
20+
image string, cocoImage string, hubImage string, salineImage string, dbImage string, tftpImage string,
2121
) map[string]string {
2222
return map[string]string{
2323
podman.ServerService: image,
2424
podman.ServerAttestationService + "@": cocoImage,
2525
podman.HubXmlrpcService: hubImage,
2626
podman.SalineService + "@": salineImage,
2727
podman.DBService: dbImage,
28+
podman.TFTPService: tftpImage,
2829
}
2930
}
3031
type testData struct {
@@ -35,19 +36,21 @@ func TestCheckParameters(t *testing.T) {
3536
expectedHubImage string
3637
expectedSalineImage string
3738
expectedDBImage string
39+
expectedTFTPImage string
3840
expectedError string
3941
}
4042

4143
data := []testData{
4244
{
43-
createServiceImages("registry.suse.com/suse/manager/5.0/x86_64/server:5.0.0", "", "", "", ""),
45+
createServiceImages("registry.suse.com/suse/manager/5.0/x86_64/server:5.0.0", "", "", "", "", ""),
4446
map[string]bool{},
4547
"registry.suse.com/a/1234/5678/suse/manager/5.0/x86_64/server:latest-ptf-5678",
4648
"",
4749
"",
4850
"",
4951
"",
5052
"",
53+
"",
5154
},
5255
{
5356
createServiceImages(
@@ -56,18 +59,21 @@ func TestCheckParameters(t *testing.T) {
5659
"registry.suse.com/suse/manager/5.0/x86_64/server-hub-xmlrpc-api:5.0.0",
5760
"registry.suse.com/suse/manager/5.0/x86_64/server-saline:5.0.0",
5861
"registry.suse.com/suse/manager/5.0/x86_64/server-postgresql:5.0.0",
62+
"registry.suse.com/suse/manager/5.0/x86_64/proxy-tftpd:5.0.0",
5963
),
6064
map[string]bool{
6165
"registry.suse.com/a/1234/5678/suse/manager/5.0/x86_64/server-attestation:latest-ptf-5678": true,
6266
"registry.suse.com/a/1234/5678/suse/manager/5.0/x86_64/server-hub-xmlrpc-api:latest-ptf-5678": true,
6367
"registry.suse.com/a/1234/5678/suse/manager/5.0/x86_64/server-saline:latest-ptf-5678": true,
6468
"registry.suse.com/a/1234/5678/suse/manager/5.0/x86_64/server-postgresql:latest-ptf-5678": true,
69+
"registry.suse.com/a/1234/5678/suse/manager/5.0/x86_64/proxy-tftpd:latest-ptf-5678": true,
6570
},
6671
"registry.suse.com/a/1234/5678/suse/manager/5.0/x86_64/server:latest-ptf-5678",
6772
"registry.suse.com/a/1234/5678/suse/manager/5.0/x86_64/server-attestation:latest-ptf-5678",
6873
"registry.suse.com/a/1234/5678/suse/manager/5.0/x86_64/server-hub-xmlrpc-api:latest-ptf-5678",
6974
"registry.suse.com/a/1234/5678/suse/manager/5.0/x86_64/server-saline:latest-ptf-5678",
7075
"registry.suse.com/a/1234/5678/suse/manager/5.0/x86_64/server-postgresql:latest-ptf-5678",
76+
"registry.suse.com/a/1234/5678/suse/manager/5.0/x86_64/proxy-tftpd:latest-ptf-5678",
7177
"",
7278
},
7379
{
@@ -77,6 +83,7 @@ func TestCheckParameters(t *testing.T) {
7783
"",
7884
"",
7985
"",
86+
"",
8087
),
8188
map[string]bool{
8289
"registry.suse.com/a/1234/5678/suse/manager/5.0/x86_64/server:latest-ptf-5678": true,
@@ -88,6 +95,7 @@ func TestCheckParameters(t *testing.T) {
8895
"",
8996
"",
9097
"",
98+
"",
9199
},
92100
{
93101
createServiceImages(
@@ -96,6 +104,7 @@ func TestCheckParameters(t *testing.T) {
96104
"registry.suse.com/suse/manager/5.0/x86_64/server-hub-xmlrpc-api:5.0.0",
97105
"",
98106
"",
107+
"",
99108
),
100109
map[string]bool{
101110
"registry.suse.com/a/1234/5678/suse/manager/5.0/x86_64/server-hub-xmlrpc-api:latest-ptf-5678": true,
@@ -105,6 +114,7 @@ func TestCheckParameters(t *testing.T) {
105114
"",
106115
"",
107116
"",
117+
"",
108118
"failed to find server image",
109119
},
110120
}

mgradm/cmd/uninstall/podman.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// SPDX-FileCopyrightText: 2025 SUSE LLC
1+
// SPDX-FileCopyrightText: 2026 SUSE LLC
22
//
33
// SPDX-License-Identifier: Apache-2.0
44

@@ -28,6 +28,7 @@ func uninstallForPodman(
2828
podman.GetServiceImage(podman.HubXmlrpcService + "@"),
2929
podman.GetServiceImage(podman.SalineService + "@"),
3030
podman.GetServiceImage(podman.DBService),
31+
podman.GetServiceImage(podman.TFTPService),
3132
}
3233

3334
// Uninstall the service
@@ -39,6 +40,7 @@ func uninstallForPodman(
3940
systemd.UninstallInstantiatedService(podman.HubXmlrpcService, !flags.Force)
4041
systemd.UninstallInstantiatedService(podman.SalineService, !flags.Force)
4142
systemd.UninstallService(podman.DBService, !flags.Force)
43+
systemd.UninstallService(podman.TFTPService, !flags.Force)
4244

4345
// Remove the volumes
4446
if flags.Purge.Volumes {

mgradm/cmd/upgrade/flags.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ package upgrade
77
import (
88
"github.com/spf13/cobra"
99
adm_utils "github.com/uyuni-project/uyuni-tools/mgradm/shared/utils"
10+
. "github.com/uyuni-project/uyuni-tools/shared/l10n"
11+
"github.com/uyuni-project/uyuni-tools/shared/utils"
1012
)
1113

1214
// AddUpgradeFlags add upgrade flags to a command.
@@ -17,6 +19,8 @@ func AddUpgradeFlags(cmd *cobra.Command) {
1719
adm_utils.AddUpgradeCocoFlag(cmd)
1820
adm_utils.AddUpgradeHubXmlrpcFlags(cmd)
1921
adm_utils.AddUpgradeSalineFlag(cmd)
22+
_ = utils.AddFlagHelpGroup(cmd, &utils.Group{ID: "tftpd-container", Title: L("TFTPD Flags")})
23+
utils.AddTFTPDFlags(cmd, true, "tftpd-container")
2024
}
2125

2226
// AddUpgradeListFlags add upgrade list flags to a command.

mgradm/cmd/upgrade/utils.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ func upgradePodman(_ *types.GlobalFlags, flags *podmanUpgradeFlags, cmd *cobra.C
4545
flags.HubXmlrpc,
4646
flags.Saline,
4747
flags.Pgsql,
48+
flags.TFTPD,
4849
flags.Installation.TZ,
4950
)
5051
}

mgradm/shared/hub/xmlrpcapi.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// SPDX-FileCopyrightText: 2025 SUSE LLC
1+
// SPDX-FileCopyrightText: 2026 SUSE LLC
22
//
33
// SPDX-License-Identifier: Apache-2.0
44

@@ -108,7 +108,6 @@ func generateHubXmlrpcSystemdService(systemd podman.Systemd, image string, serve
108108
Ports: utils.HubXmlrpcPorts,
109109
NamePrefix: "uyuni",
110110
Network: podman.UyuniNetwork,
111-
Image: image,
112111
ServerHost: serverHost,
113112
}
114113
if err := utils.WriteTemplateToFile(

0 commit comments

Comments
 (0)