From 0105131b5c49e33f70e80cf94f74eafeb44afa47 Mon Sep 17 00:00:00 2001 From: Kir Kolyshkin Date: Thu, 27 Mar 2025 15:14:48 -0700 Subject: [PATCH] Fix QF1003: could use tagged switch" staticcheck warning Signed-off-by: Kir Kolyshkin --- libpod/container_internal.go | 22 ++++++++++--------- pkg/bindings/containers/attach.go | 20 ++++++++--------- pkg/domain/filters/containers.go | 5 +++-- pkg/domain/filters/pods.go | 5 +++-- .../apimachinery/pkg/api/resource/quantity.go | 5 +++-- pkg/specgen/namespaces.go | 6 ++--- pkg/systemd/generate/containers.go | 4 ++-- test/e2e/generate_kube_test.go | 7 +++--- 8 files changed, 40 insertions(+), 34 deletions(-) diff --git a/libpod/container_internal.go b/libpod/container_internal.go index 844936a04b..e270a80b79 100644 --- a/libpod/container_internal.go +++ b/libpod/container_internal.go @@ -1182,9 +1182,10 @@ func (c *Container) cleanupRuntime(ctx context.Context) error { // If we were Stopped, we are now Exited, as we've removed ourself // from the runtime. // If we were Created, we are now Configured. - if c.state.State == define.ContainerStateStopped { + switch c.state.State { + case define.ContainerStateStopped: c.state.State = define.ContainerStateExited - } else if c.state.State == define.ContainerStateCreated { + case define.ContainerStateCreated: c.state.State = define.ContainerStateConfigured } @@ -1219,10 +1220,11 @@ func (c *Container) reinit(ctx context.Context, retainRetries bool) error { // Performs all necessary steps to start a container that is not running // Does not lock or check validity, requires to run on the same thread that holds the lock for the container. func (c *Container) initAndStart(ctx context.Context) (retErr error) { - // If we are ContainerStateUnknown, throw an error - if c.state.State == define.ContainerStateUnknown { + // If we are ContainerState{Unknown,Removing}, throw an error. + switch c.state.State { + case define.ContainerStateUnknown: return fmt.Errorf("container %s is in an unknown state: %w", c.ID(), define.ErrCtrStateInvalid) - } else if c.state.State == define.ContainerStateRemoving { + case define.ContainerStateRemoving: return fmt.Errorf("cannot start container %s as it is being removed: %w", c.ID(), define.ErrCtrStateInvalid) } @@ -1688,14 +1690,14 @@ func (c *Container) restartWithTimeout(ctx context.Context, timeout uint) (retEr return err } - if c.state.State == define.ContainerStateStopped { - // Reinitialize the container if we need to + switch c.state.State { + case define.ContainerStateStopped: + // Reinitialize the container if we need to. if err := c.reinit(ctx, false); err != nil { return err } - } else if c.state.State == define.ContainerStateConfigured || - c.state.State == define.ContainerStateExited { - // Initialize the container + case define.ContainerStateConfigured, define.ContainerStateExited: + // Initialize the container. if err := c.init(ctx, false); err != nil { return err } diff --git a/pkg/bindings/containers/attach.go b/pkg/bindings/containers/attach.go index 9fd9045ebf..d7bd3e52de 100644 --- a/pkg/bindings/containers/attach.go +++ b/pkg/bindings/containers/attach.go @@ -229,26 +229,26 @@ func Attach(ctx context.Context, nameOrID string, stdin io.Reader, stdout io.Wri return err } - switch { - case fd == 0: + switch fd { + case 0: if isSet.stdout { if _, err := stdout.Write(frame[0:l]); err != nil { return err } } - case fd == 1: + case 1: if isSet.stdout { if _, err := stdout.Write(frame[0:l]); err != nil { return err } } - case fd == 2: + case 2: if isSet.stderr { if _, err := stderr.Write(frame[0:l]); err != nil { return err } } - case fd == 3: + case 3: return fmt.Errorf("from service from stream: %s", frame) default: return fmt.Errorf("unrecognized channel '%d' in header, 0-3 supported", fd) @@ -558,8 +558,8 @@ func ExecStartAndAttach(ctx context.Context, sessionID string, options *ExecStar return err } - switch { - case fd == 0: + switch fd { + case 0: if options.GetAttachInput() { // Write STDIN to STDOUT (echoing characters // typed by another attach session) @@ -567,19 +567,19 @@ func ExecStartAndAttach(ctx context.Context, sessionID string, options *ExecStar return err } } - case fd == 1: + case 1: if options.GetAttachOutput() { if _, err := options.GetOutputStream().Write(frame[0:l]); err != nil { return err } } - case fd == 2: + case 2: if options.GetAttachError() { if _, err := options.GetErrorStream().Write(frame[0:l]); err != nil { return err } } - case fd == 3: + case 3: return fmt.Errorf("from service from stream: %s", frame) default: return fmt.Errorf("unrecognized channel '%d' in header, 0-3 supported", fd) diff --git a/pkg/domain/filters/containers.go b/pkg/domain/filters/containers.go index b4a683631c..9296a40781 100644 --- a/pkg/domain/filters/containers.go +++ b/pkg/domain/filters/containers.go @@ -73,9 +73,10 @@ func GenerateContainerFilterFuncs(filter string, filterValues []string, r *libpo return false } state := status.String() - if status == define.ContainerStateConfigured { + switch status { + case define.ContainerStateConfigured: state = "created" - } else if status == define.ContainerStateStopped { + case define.ContainerStateStopped: state = "exited" } for _, filterValue := range filterValues { diff --git a/pkg/domain/filters/pods.go b/pkg/domain/filters/pods.go index c009028868..b52be1339a 100644 --- a/pkg/domain/filters/pods.go +++ b/pkg/domain/filters/pods.go @@ -75,9 +75,10 @@ func GeneratePodFilterFunc(filter string, filterValues []string, r *libpod.Runti } for _, ctrStatus := range ctrStatuses { state := ctrStatus.String() - if ctrStatus == define.ContainerStateConfigured { + switch ctrStatus { + case define.ContainerStateConfigured: state = "created" - } else if ctrStatus == define.ContainerStateStopped { + case define.ContainerStateStopped: state = "exited" } for _, filterValue := range filterValues { diff --git a/pkg/k8s.io/apimachinery/pkg/api/resource/quantity.go b/pkg/k8s.io/apimachinery/pkg/api/resource/quantity.go index 164febc53e..64b536fe39 100644 --- a/pkg/k8s.io/apimachinery/pkg/api/resource/quantity.go +++ b/pkg/k8s.io/apimachinery/pkg/api/resource/quantity.go @@ -347,9 +347,10 @@ func ParseQuantity(str string) (Quantity, error) { } // So that no one but us has to think about suffixes, remove it. - if base == 10 { + switch base { + case 10: amount.SetScale(amount.Scale() + Scale(exponent).infScale()) - } else if base == 2 { + case 2: // numericSuffix = 2 ** exponent numericSuffix := big.NewInt(1).Lsh(bigOne, uint(exponent)) ub := amount.UnscaledBig() diff --git a/pkg/specgen/namespaces.go b/pkg/specgen/namespaces.go index 1bf9f886e3..002867e761 100644 --- a/pkg/specgen/namespaces.go +++ b/pkg/specgen/namespaces.go @@ -288,11 +288,11 @@ func ParseCgroupNamespace(ns string) (Namespace, error) { // form. func ParseIPCNamespace(ns string) (Namespace, error) { toReturn := Namespace{} - switch { - case ns == "shareable", ns == "": + switch ns { + case "shareable", "": toReturn.NSMode = Shareable return toReturn, nil - case ns == "none": + case "none": toReturn.NSMode = None return toReturn, nil } diff --git a/pkg/systemd/generate/containers.go b/pkg/systemd/generate/containers.go index ade2824304..1990621514 100644 --- a/pkg/systemd/generate/containers.go +++ b/pkg/systemd/generate/containers.go @@ -238,8 +238,8 @@ func setContainerNameForTemplate(startCommand []string, info *containerInfo) ([] break } } - switch { - case nameIx == -1: + switch nameIx { + case -1: // if not found, add --name argument in the command slice before the "run" argument. // it's assumed that the command slice contains this argument. runIx := -1 diff --git a/test/e2e/generate_kube_test.go b/test/e2e/generate_kube_test.go index 67f2d82ae1..4af76aa480 100644 --- a/test/e2e/generate_kube_test.go +++ b/test/e2e/generate_kube_test.go @@ -704,11 +704,12 @@ var _ = Describe("Podman kube generate", func() { // have anything for protocol under the ports as tcp is the default // for k8s Expect(port.Protocol).To(BeEmpty()) - if port.HostPort == 4008 { + switch port.HostPort { + case 4008: foundPort400x++ - } else if port.HostPort == 5008 { + case 5008: foundPort500x++ - } else { + default: foundOtherPort++ } }