Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MGMT-19420: Replace HighAvailabilityMode with ControlPlaneCount #911

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
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
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -199,7 +199,7 @@ replace (
github.com/opencontainers/runc => github.com/opencontainers/runc v1.1.12
github.com/openshift/assisted-service/api => github.com/openshift/assisted-service/api v0.0.0-20250128124720-deb4b9451fb1
github.com/openshift/assisted-service/client => github.com/openshift/assisted-service/client v0.0.0-20250128124720-deb4b9451fb1
github.com/openshift/assisted-service/models => github.com/openshift/assisted-service/models v0.0.0-20250128124720-deb4b9451fb1
github.com/openshift/assisted-service/models => github.com/openshift/assisted-service/models v0.0.0-20250204165522-6abd4e7132c7
sigs.k8s.io/cluster-api-provider-aws => github.com/openshift/cluster-api-provider-aws v0.2.1-0.20201022175424-d30c7a274820
sigs.k8s.io/cluster-api-provider-azure => github.com/openshift/cluster-api-provider-azure v0.1.0-alpha.3.0.20201016155852-4090a6970205
)
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -624,8 +624,8 @@ github.com/openshift/assisted-service/api v0.0.0-20250128124720-deb4b9451fb1 h1:
github.com/openshift/assisted-service/api v0.0.0-20250128124720-deb4b9451fb1/go.mod h1:tvE25aC7I07Uz2jUt7gH2E8+a1Rw4W7qtW6/EFb8l64=
github.com/openshift/assisted-service/client v0.0.0-20250128124720-deb4b9451fb1 h1:azcSQ+Nwk4zaAYaLUdSGAT9QOWWT1U+7wEbhq0A4rUA=
github.com/openshift/assisted-service/client v0.0.0-20250128124720-deb4b9451fb1/go.mod h1:y+GNZgra/iQDYlacSjgscim8ldrSOMtV3jQaSKC3APc=
github.com/openshift/assisted-service/models v0.0.0-20250128124720-deb4b9451fb1 h1:pLax/FBqclGQeIwu3UNTNCY2ZqFLlurSpSv+za2Ydxk=
github.com/openshift/assisted-service/models v0.0.0-20250128124720-deb4b9451fb1/go.mod h1:bx9NsPeBkhn7az/qFHo3hW8wFqFj4BmT3g1R7wR9gcw=
github.com/openshift/assisted-service/models v0.0.0-20250204165522-6abd4e7132c7 h1:63VZl6P4lNnlPulL4jg9t2SBHrf/ksfJgZ9C6EBl3rw=
github.com/openshift/assisted-service/models v0.0.0-20250204165522-6abd4e7132c7/go.mod h1:bx9NsPeBkhn7az/qFHo3hW8wFqFj4BmT3g1R7wR9gcw=
github.com/openshift/baremetal-runtimecfg v0.0.0-20220211165258-fe92b9507bec h1:1nC/js8H8s+MBzgu20YDSuVw6IF9Ct5HOR1JLxv572Q=
github.com/openshift/baremetal-runtimecfg v0.0.0-20220211165258-fe92b9507bec/go.mod h1:fIhPgDwf2Vm1tIiZ0cFidPw3dS26AKGSRoiIJnlz84o=
github.com/openshift/custom-resource-status v1.1.3-0.20220503160415-f2fdb4999d87 h1:cHyxR+Y8rAMT6m1jQCaYGRwikqahI0OjjUDhFNf3ySQ=
Expand Down
15 changes: 11 additions & 4 deletions src/commands/actions/install_cmd.go
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ func (a *install) Validate() error {

if a.installParams.InstallerArgs != "" {
var installAgs []string
err := json.Unmarshal([]byte(a.installParams.InstallerArgs), &installAgs)
err = json.Unmarshal([]byte(a.installParams.InstallerArgs), &installAgs)
if err != nil {
log.WithError(err).Errorf("Failed to unmarshal installer args: json.Unmarshal, %s", a.installParams.InstallerArgs)
return err
Expand All @@ -82,7 +82,7 @@ func (a *install) Validate() error {
}

if a.installParams.OpenshiftVersion != "" {
_, err := version.NewVersion(a.installParams.OpenshiftVersion)
_, err = version.NewVersion(a.installParams.OpenshiftVersion)
if err != nil {
return errors.Wrapf(err, "Failed to parse OCP version %s", a.installParams.OpenshiftVersion)
}
Expand All @@ -105,8 +105,15 @@ func (a *install) getFullInstallerCommand() string {
"--agent-image", a.agentConfig.AgentVersion,
}

if a.installParams.HighAvailabilityMode != nil {
installerCmdArgs = append(installerCmdArgs, "--high-availability-mode", swag.StringValue(a.installParams.HighAvailabilityMode))
if a.installParams.ControlPlaneCount != 0 {
installerCmdArgs = append(installerCmdArgs, "--control-plane-count", strconv.Itoa(int(a.installParams.ControlPlaneCount)))
} else {
switch swag.StringValue(a.installParams.HighAvailabilityMode) {
case models.ClusterHighAvailabilityModeFull:
installerCmdArgs = append(installerCmdArgs, "--control-plane-count", "3")
case models.ClusterHighAvailabilityModeNone:
installerCmdArgs = append(installerCmdArgs, "--control-plane-count", "1")
}
}

if a.installParams.McoImage != "" {
Expand Down
63 changes: 37 additions & 26 deletions src/commands/actions/install_cmd_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,17 +42,17 @@ var _ = Describe("installer test", func() {
hostId := strfmt.UUID("f7ac1860-92cf-4ed8-aeec-2d9f20b35bab")
bootDevice := "/dev/disk/by-path/pci-0000:00:06.0"
return models.InstallCmdRequest{
BootDevice: swag.String(bootDevice),
CheckCvo: swag.Bool(true),
ClusterID: &clusterId,
HostID: &hostId,
InfraEnvID: &infraEnvId,
ControllerImage: swag.String("localhost:5000/edge-infrastructure/assisted-installer-controller:latest"),
DisksToFormat: []string{},
HighAvailabilityMode: swag.String(models.ClusterHighAvailabilityModeFull),
InstallerArgs: "[\"--append-karg\",\"ip=ens3:dhcp\"]",
InstallerImage: swag.String("quay.io/edge-infrastructure/assisted-installer:latest"),
McoImage: "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:3c30f115dc95c3fef94ea5185f386aa1af8a4b5f07ce8f41a17007d54004e1c4",
BootDevice: swag.String(bootDevice),
CheckCvo: swag.Bool(true),
ClusterID: &clusterId,
HostID: &hostId,
InfraEnvID: &infraEnvId,
ControllerImage: swag.String("localhost:5000/edge-infrastructure/assisted-installer-controller:latest"),
DisksToFormat: []string{},
ControlPlaneCount: int64(3),
InstallerArgs: "[\"--append-karg\",\"ip=ens3:dhcp\"]",
InstallerImage: swag.String("quay.io/edge-infrastructure/assisted-installer:latest"),
McoImage: "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:3c30f115dc95c3fef94ea5185f386aa1af8a4b5f07ce8f41a17007d54004e1c4",
MustGatherImage: "{\"cnv\":\"registry.redhat.io/container-native-virtualization/cnv-must-gather-rhel8:v2.6.5\"," +
"\"lso\":\"registry.redhat.io/openshift4/ose-local-storage-mustgather-rhel8\"," +
"\"ocp\":\"quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:3c30f115dc95c3fef94ea5185f386aa1af8a4b5f07ce8f41a17007d54004e1c4\"," +
Expand Down Expand Up @@ -111,15 +111,15 @@ var _ = Describe("installer test", func() {
"--cluster-id cd781f46-f32a-4154-9670-6442a367ab81 --host-id f7ac1860-92cf-4ed8-aeec-2d9f20b35bab --boot-device /dev/disk/by-path/pci-0000:00:06.0 " +
"--url http://10.1.178.26:6000 --controller-image localhost:5000/edge-infrastructure/assisted-installer-controller:latest " +
"--agent-image quay.io/edge-infrastructure/assisted-installer-agent:latest " +
"--high-availability-mode Full " +
"--control-plane-count 3 " +
"--mco-image quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:3c30f115dc95c3fef94ea5185f386aa1af8a4b5f07ce8f41a17007d54004e1c4 " +
"--must-gather-image '{\"cnv\":\"registry.redhat.io/container-native-virtualization/cnv-must-gather-rhel8:v2.6.5\"," +
"\"lso\":\"registry.redhat.io/openshift4/ose-local-storage-mustgather-rhel8\",\"ocp\":\"quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:3c30f115dc95c3fef94ea5185f386aa1af8a4b5f07ce8f41a17007d54004e1c4\"," +
"\"ocs\":\"registry.redhat.io/ocs4/ocs-must-gather-rhel8\"}' --openshift-version 4.9.24 --insecure --check-cluster-version --installer-args '[\"--append-karg\",\"ip=ens3:dhcp\"]'"))
})

It("ha mode is nil, parameter should be omitted", func() {
installCommandRequest.HighAvailabilityMode = nil
It("control_plane_count is 0, parameter should be omitted", func() {
installCommandRequest.ControlPlaneCount = 0
installCommandLineString = getInstallCommandLineString(installCommandRequest)

action := install{args: []string{installCommandLineString}, filesystem: filesystem, agentConfig: agentConfig}
Expand All @@ -128,11 +128,12 @@ var _ = Describe("installer test", func() {

args := action.Args()
argsAsString := strings.Join(args, " ")
Expect(argsAsString).NotTo(ContainSubstring("--high-availability-mode"))
Expect(argsAsString).NotTo(ContainSubstring("--control-plane-count"))
})

It("ha mode is Full, command line parameter should indicate this", func() {
installCommandRequest.HighAvailabilityMode = swag.String(models.ClusterHighAvailabilityModeFull)
It("if control-plane-count is set, command line parameter should indicate this", func() {
ctrlPlaneCount := int64(4)
installCommandRequest.ControlPlaneCount = ctrlPlaneCount
installCommandLineString = getInstallCommandLineString(installCommandRequest)

action := install{args: []string{installCommandLineString}, filesystem: filesystem, agentConfig: agentConfig}
Expand All @@ -141,11 +142,12 @@ var _ = Describe("installer test", func() {

args := action.Args()
argsAsString := strings.Join(args, " ")
Expect(argsAsString).To(ContainSubstring("--high-availability-mode Full"))
Expect(argsAsString).To(ContainSubstring("--control-plane-count 4"))
})

It("ha mode is None, command line parameter should indicate this", func() {
installCommandRequest.HighAvailabilityMode = swag.String(models.ClusterHighAvailabilityModeNone)
It("if control-plane-count is set to 1, command line parameter should indicate this", func() {
ctrlPlaneCount := int64(1)
installCommandRequest.ControlPlaneCount = ctrlPlaneCount
installCommandLineString = getInstallCommandLineString(installCommandRequest)

action := install{args: []string{installCommandLineString}, filesystem: filesystem, agentConfig: agentConfig}
Expand All @@ -154,7 +156,21 @@ var _ = Describe("installer test", func() {

args := action.Args()
argsAsString := strings.Join(args, " ")
Expect(argsAsString).To(ContainSubstring("--high-availability-mode None"))
Expect(argsAsString).To(ContainSubstring("--control-plane-count 1"))
})

It("high-availability-mode should not be present any more", func() {
ctrlPlaneCount := int64(4)
installCommandRequest.ControlPlaneCount = ctrlPlaneCount
installCommandLineString = getInstallCommandLineString(installCommandRequest)

action := install{args: []string{installCommandLineString}, filesystem: filesystem, agentConfig: agentConfig}
validationError := action.Validate()
Expect(validationError).NotTo(HaveOccurred())

args := action.Args()
argsAsString := strings.Join(args, " ")
Expect(argsAsString).NotTo(ContainSubstring("--high-availability-mode"))
})

It("install ca cert", func() {
Expand Down Expand Up @@ -388,11 +404,6 @@ var _ = Describe("installer test", func() {
_ = getInstall(installCommandRequest, filesystem, true)
})

It("bad HighAvailability", func() {
installCommandRequest.HighAvailabilityMode = swag.String("some string")
_ = getInstall(installCommandRequest, filesystem, true)
})

It("bad openshift version - some string", func() {
installCommandRequest.OpenshiftVersion = "some string"
_ = getInstall(installCommandRequest, filesystem, true)
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.

Loading