Skip to content

Commit

Permalink
Enable more linters (nginxinc#2545)
Browse files Browse the repository at this point in the history
  • Loading branch information
lucacome authored Sep 17, 2024
1 parent f74d70a commit a432151
Show file tree
Hide file tree
Showing 20 changed files with 82 additions and 66 deletions.
7 changes: 7 additions & 0 deletions .golangci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,14 +53,19 @@ linters:
enable:
- asasalint
- asciicheck
- bidichk
- copyloopvar
- dupword
- durationcheck
- errcheck
- errchkjson
- errname
- errorlint
- fatcontext
- ginkgolinter
- gocheckcompilerdirectives
- gochecksumtype
- gocritic
- gocyclo
- godot
- gofmt
Expand All @@ -76,6 +81,7 @@ linters:
- loggercheck
- makezero
- misspell
- musttag
- nilerr
- noctx
- nolintlint
Expand All @@ -86,6 +92,7 @@ linters:
- spancheck
- staticcheck
- stylecheck
- tagalign
- tenv
- thelper
- tparallel
Expand Down
2 changes: 1 addition & 1 deletion internal/mode/provisioner/manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ func StartManager(cfg Config) error {
statusUpdater,
mgr.GetClient(),
embeddedfiles.StaticModeDeploymentYAML,
func() metav1.Time { return metav1.Now() },
metav1.Now,
)

eventLoop := events.NewEventLoop(
Expand Down
3 changes: 1 addition & 2 deletions internal/mode/static/handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -471,8 +471,7 @@ func getGatewayAddresses(
}

var addresses, hostnames []string
switch gwSvc.Spec.Type {
case v1.ServiceTypeLoadBalancer:
if gwSvc.Spec.Type == v1.ServiceTypeLoadBalancer {
for _, ingress := range gwSvc.Status.LoadBalancer.Ingress {
if ingress.IP != "" {
addresses = append(addresses, ingress.IP)
Expand Down
16 changes: 9 additions & 7 deletions internal/mode/static/manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,8 @@ func StartManager(cfg config.Config) error {
Namespace: cfg.GatewayPodConfig.Namespace,
Name: cfg.ConfigName,
}
if err := registerControllers(ctx, cfg, mgr, recorder, logLevelSetter, eventCh, controlConfigNSName); err != nil {
err = registerControllers(ctx, cfg, mgr, recorder, logLevelSetter, eventCh, controlConfigNSName)
if err != nil {
return err
}

Expand Down Expand Up @@ -149,9 +150,11 @@ func StartManager(cfg config.Config) error {
processHandler := ngxruntime.NewProcessHandlerImpl(os.ReadFile, os.Stat)

// Ensure NGINX is running before registering metrics & starting the manager.
if _, err := processHandler.FindMainProcess(ctx, ngxruntime.PidFileTimeout); err != nil {
p, err := processHandler.FindMainProcess(ctx, ngxruntime.PidFileTimeout)
if err != nil {
return fmt.Errorf("NGINX is not running: %w", err)
}
cfg.Logger.V(1).Info("NGINX is running with PID", "pid", p)

var (
ngxruntimeCollector ngxruntime.MetricsCollector = collectors.NewManagerNoopCollector()
Expand All @@ -162,11 +165,6 @@ func StartManager(cfg config.Config) error {
var usageSecret *usage.Secret

if cfg.Plus {
ngxPlusClient, err = ngxruntime.CreatePlusClient()
if err != nil {
return fmt.Errorf("error creating NGINX plus client: %w", err)
}

if cfg.UsageReportConfig != nil {
usageSecret = usage.NewUsageSecret()
reporter, err := createUsageReporterJob(mgr.GetAPIReader(), cfg, usageSecret, nginxChecker.getReadyCh())
Expand All @@ -188,6 +186,10 @@ func StartManager(cfg config.Config) error {
constLabels := map[string]string{"class": cfg.GatewayClassName}
var ngxCollector prometheus.Collector
if cfg.Plus {
ngxPlusClient, err = ngxruntime.CreatePlusClient()
if err != nil {
return fmt.Errorf("error creating NGINX plus client: %w", err)
}
ngxCollector, err = collectors.NewNginxPlusMetricsCollector(ngxPlusClient, constLabels, promLogger)
} else {
ngxCollector = collectors.NewNginxMetricsCollector(constLabels, promLogger)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ func TestValidateEscapedStringNoVarExpansion(t *testing.T) {

func TestValidateValidHeaderName(t *testing.T) {
t.Parallel()
validator := func(value string) error { return validateHeaderName(value) }
validator := validateHeaderName

testValidValuesForSimpleValidator(
t,
Expand Down
8 changes: 4 additions & 4 deletions internal/mode/static/nginx/file/folders.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,12 @@ func ClearFolders(fileMgr ClearFoldersOSFileManager, paths []string) (removedFil
}

for _, entry := range entries {
path := filepath.Join(path, entry.Name())
if err := fileMgr.Remove(path); err != nil {
return removedFiles, fmt.Errorf("failed to remove %q: %w", path, err)
entryPath := filepath.Join(path, entry.Name())
if err := fileMgr.Remove(entryPath); err != nil {
return removedFiles, fmt.Errorf("failed to remove %q: %w", entryPath, err)
}

removedFiles = append(removedFiles, path)
removedFiles = append(removedFiles, entryPath)
}
}

Expand Down
4 changes: 2 additions & 2 deletions internal/mode/static/nginx/runtime/manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -121,9 +121,9 @@ func (m *ManagerImpl) Reload(ctx context.Context, configVersion int) error {

// send HUP signal to the NGINX main process reload configuration
// See https://nginx.org/en/docs/control.html
if err := m.processHandler.Kill(pid); err != nil {
if errP := m.processHandler.Kill(pid); errP != nil {
m.metricsCollector.IncReloadErrors()
return fmt.Errorf("failed to send the HUP signal to NGINX main: %w", err)
return fmt.Errorf("failed to send the HUP signal to NGINX main: %w", errP)
}

if err = m.verifyClient.WaitForCorrectVersion(
Expand Down
4 changes: 2 additions & 2 deletions internal/mode/static/state/dataplane/configuration.go
Original file line number Diff line number Diff line change
Expand Up @@ -279,12 +279,12 @@ func buildBackendGroups(servers []VirtualServer) []BackendGroup {
for _, mr := range pr.MatchRules {
group := mr.BackendGroup

key := key{
k := key{
nsname: group.Source,
ruleIdx: group.RuleIdx,
}

uniqueGroups[key] = group
uniqueGroups[k] = group
}
}
}
Expand Down
8 changes: 3 additions & 5 deletions internal/mode/static/state/graph/backend_refs.go
Original file line number Diff line number Diff line change
Expand Up @@ -238,12 +238,10 @@ func validateBackendTLSPolicyMatchingAllBackends(backendRefs []BackendRef) *cond
if referencePolicy == nil {
// First reference, store the policy as reference
referencePolicy = backendRef.BackendTLSPolicy
} else {
} else if checkPoliciesEqual(backendRef.BackendTLSPolicy.Source, referencePolicy.Source) {
// Check if the policies match
if checkPoliciesEqual(backendRef.BackendTLSPolicy.Source, referencePolicy.Source) {
mismatch = true
break
}
mismatch = true
break
}
}
if mismatch {
Expand Down
12 changes: 8 additions & 4 deletions internal/mode/static/state/graph/backend_tls_policy.go
Original file line number Diff line number Diff line change
Expand Up @@ -86,23 +86,27 @@ func validateBackendTLSPolicy(

caCertRefs := backendTLSPolicy.Spec.Validation.CACertificateRefs
wellKnownCerts := backendTLSPolicy.Spec.Validation.WellKnownCACertificates
if len(caCertRefs) > 0 && wellKnownCerts != nil {
switch {
case len(caCertRefs) > 0 && wellKnownCerts != nil:
valid = false
msg := "CACertificateRefs and WellKnownCACertificates are mutually exclusive"
conds = append(conds, staticConds.NewPolicyInvalid(msg))
} else if len(caCertRefs) > 0 {

case len(caCertRefs) > 0:
if err := validateBackendTLSCACertRef(backendTLSPolicy, configMapResolver); err != nil {
valid = false
conds = append(conds, staticConds.NewPolicyInvalid(
fmt.Sprintf("invalid CACertificateRef: %s", err.Error())))
}
} else if wellKnownCerts != nil {

case wellKnownCerts != nil:
if err := validateBackendTLSWellKnownCACerts(backendTLSPolicy); err != nil {
valid = false
conds = append(conds, staticConds.NewPolicyInvalid(
fmt.Sprintf("invalid WellKnownCACertificates: %s", err.Error())))
}
} else {

default:
valid = false
conds = append(conds, staticConds.NewPolicyInvalid("CACertRefs and WellKnownCACerts are both nil"))
}
Expand Down
13 changes: 12 additions & 1 deletion internal/mode/static/state/graph/backend_tls_policy_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,18 @@ func TestValidateBackendTLSPolicy(t *testing.T) {
},
}

localObjectRefTooManyCerts := append(localObjectRefNormalCase, localObjectRefInvalidName...)
localObjectRefTooManyCerts := []gatewayv1.LocalObjectReference{
{
Kind: "ConfigMap",
Name: "configmap",
Group: "",
},
{
Kind: "ConfigMap",
Name: "invalid",
Group: "",
},
}

getAncestorRef := func(ctlrName, parentName string) v1alpha2.PolicyAncestorStatus {
return v1alpha2.PolicyAncestorStatus{
Expand Down
4 changes: 2 additions & 2 deletions internal/mode/static/state/graph/gateway_listener.go
Original file line number Diff line number Diff line change
Expand Up @@ -563,7 +563,7 @@ func GetAllowedRouteLabelSelector(l v1.Listener) *metav1.LabelSelector {

// matchesWildcard checks if hostname2 matches the wildcard pattern of hostname1.
func matchesWildcard(hostname1, hostname2 string) bool {
matchesWildcard := func(h1, h2 string) bool {
mw := func(h1, h2 string) bool {
if strings.HasPrefix(h1, "*.") {
// Remove the "*." from h1
h1 = h1[2:]
Expand All @@ -572,7 +572,7 @@ func matchesWildcard(hostname1, hostname2 string) bool {
}
return false
}
return matchesWildcard(hostname1, hostname2) || matchesWildcard(hostname2, hostname1)
return mw(hostname1, hostname2) || mw(hostname2, hostname1)
}

// haveOverlap checks for overlap between two hostnames.
Expand Down
9 changes: 6 additions & 3 deletions internal/mode/static/state/graph/secret.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,11 +44,14 @@ func (r *secretResolver) resolve(nsname types.NamespacedName) error {

var validationErr error

if !exist {
switch {
case !exist:
validationErr = errors.New("secret does not exist")
} else if secret.Type != apiv1.SecretTypeTLS {

case secret.Type != apiv1.SecretTypeTLS:
validationErr = fmt.Errorf("secret type must be %q not %q", apiv1.SecretTypeTLS, secret.Type)
} else {

default:
// A TLS Secret is guaranteed to have these data fields.
_, err := tls.X509KeyPair(secret.Data[apiv1.TLSCertKey], secret.Data[apiv1.TLSPrivateKeyKey])
if err != nil {
Expand Down
7 changes: 2 additions & 5 deletions internal/mode/static/state/resolver/resolver.go
Original file line number Diff line number Diff line change
Expand Up @@ -155,11 +155,8 @@ func resolveEndpoints(
// If the ServicePort has a non-zero integer TargetPort, the TargetPort integer value is returned.
// Otherwise, the ServicePort port value is returned.
func getDefaultPort(svcPort v1.ServicePort) int32 {
switch svcPort.TargetPort.Type {
case intstr.Int:
if svcPort.TargetPort.IntVal != 0 {
return svcPort.TargetPort.IntVal
}
if svcPort.TargetPort.Type == intstr.Int && svcPort.TargetPort.IntVal != 0 {
return svcPort.TargetPort.IntVal
}

return svcPort.Port
Expand Down
9 changes: 6 additions & 3 deletions internal/mode/static/status/prepare_requests.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,8 @@ func PrepareRouteRequests(
r.Source.GetGeneration(),
)

if r.RouteType == graph.RouteTypeHTTP {
switch r.RouteType {
case graph.RouteTypeHTTP:
status := v1.HTTPRouteStatus{
RouteStatus: routeStatus,
}
Expand All @@ -80,7 +81,8 @@ func PrepareRouteRequests(
}

reqs = append(reqs, req)
} else if r.RouteType == graph.RouteTypeGRPC {

case graph.RouteTypeGRPC:
status := v1.GRPCRouteStatus{
RouteStatus: routeStatus,
}
Expand All @@ -92,7 +94,8 @@ func PrepareRouteRequests(
}

reqs = append(reqs, req)
} else {

default:
panic(fmt.Sprintf("Unknown route type: %s", r.RouteType))
}
}
Expand Down
4 changes: 2 additions & 2 deletions internal/mode/static/telemetry/collector.go
Original file line number Diff line number Diff line change
Expand Up @@ -245,10 +245,10 @@ func computeRouteCount(

for _, r := range routes {
if r.RouteType == graph.RouteTypeHTTP {
httpRouteCount = httpRouteCount + 1
httpRouteCount++
}
if r.RouteType == graph.RouteTypeGRPC {
grpcRouteCount = grpcRouteCount + 1
grpcRouteCount++
}
}

Expand Down
9 changes: 3 additions & 6 deletions internal/mode/static/usage/job_worker_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,7 @@ func TestCreateUsageJobWorker(t *testing.T) {
return nil
},
getCalls: func(_ context.Context, _ types.NamespacedName, object client.Object, _ ...client.GetOption) error {
switch typedObject := object.(type) {
case *v1.Namespace:
if typedObject, ok := object.(*v1.Namespace); ok {
typedObject.Name = metav1.NamespaceSystem
typedObject.UID = "1234abcd"
return nil
Expand All @@ -83,8 +82,7 @@ func TestCreateUsageJobWorker(t *testing.T) {
{
name: "collect node count fails",
listCalls: func(_ context.Context, object client.ObjectList, _ ...client.ListOption) error {
switch object.(type) {
case *v1.NodeList:
if _, ok := object.(*v1.NodeList); ok {
return errors.New("failed to collect node list")
}
return nil
Expand Down Expand Up @@ -127,8 +125,7 @@ func TestCreateUsageJobWorker(t *testing.T) {
return nil
},
getCalls: func(_ context.Context, _ types.NamespacedName, object client.Object, _ ...client.GetOption) error {
switch object.(type) {
case *v1.Namespace:
if _, ok := object.(*v1.Namespace); ok {
return errors.New("failed to collect namespace")
}
return nil
Expand Down
4 changes: 2 additions & 2 deletions tests/framework/ngf.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ func InstallNGF(cfg InstallationConfig, extraArgs ...string) ([]byte, error) {
}

args = append(args, setImageArgs(cfg)...)
fullArgs := append(args, extraArgs...)
fullArgs := append(args, extraArgs...) //nolint:gocritic

GinkgoWriter.Printf("Installing NGF with command: helm %v\n", strings.Join(fullArgs, " "))

Expand Down Expand Up @@ -102,7 +102,7 @@ func UpgradeNGF(cfg InstallationConfig, extraArgs ...string) ([]byte, error) {
}

args = append(args, setImageArgs(cfg)...)
fullArgs := append(args, extraArgs...)
fullArgs := append(args, extraArgs...) //nolint:gocritic

GinkgoWriter.Printf("Upgrading NGF with command: helm %v\n", strings.Join(fullArgs, " "))

Expand Down
15 changes: 7 additions & 8 deletions tests/suite/system_suite_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -148,11 +148,12 @@ func setup(cfg setupConfig, extraInstallArgs ...string) {
Skip("Graceful Recovery test must be run on Kind")
}

if *versionUnderTest != "" {
switch {
case *versionUnderTest != "":
version = *versionUnderTest
} else if *imageTag != "" {
case *imageTag != "":
version = *imageTag
} else {
default:
version = "edge"
}

Expand Down Expand Up @@ -203,11 +204,9 @@ func createNGFInstallConfig(cfg setupConfig, extraInstallArgs ...string) framewo
}
installCfg.ImageTag = *imageTag
installCfg.ImagePullPolicy = *imagePullPolicy
} else {
if version == "edge" {
chartVersion = "0.0.0-edge"
installCfg.ChartVersion = chartVersion
}
} else if version == "edge" {
chartVersion = "0.0.0-edge"
installCfg.ChartVersion = chartVersion
}

output, err := framework.InstallGatewayAPI(cfg.gwAPIVersion)
Expand Down
Loading

0 comments on commit a432151

Please sign in to comment.