| # Copyright (c) HashiCorp, Inc. |
| # SPDX-License-Identifier: MPL-2.0 |
| |
| rules: |
| - id: replication-state-should-use-IsPerfSecondary |
| patterns: |
| - pattern: | |
| $CORE.ReplicationState().HasState(consts.ReplicationPerformanceSecondary) |
| # Not the defining function |
| - pattern-not-inside: | |
| func ($CORE *Core) IsPerfSecondary() bool { |
| ... |
| } |
| # Not a call to System() |
| - pattern-not: | |
| $BACKEND.System().ReplicationState().HasState(consts.ReplicationPerformanceSecondary) |
| - pattern-not: | |
| $IDENTITYSTORE.localNode.ReplicationState().HasState(consts.ReplicationPerformanceSecondary) |
| message: "Consider replacing ReplicationState().HasState(...) with IsPerfSecondary()" |
| languages: [go] |
| severity: WARNING |
| fix: $CORE.IsPerfSecondary() |
| |
| - id: replication-state-should-use-IsDrSecondar |
| patterns: |
| - pattern: | |
| $CORE.ReplicationState().HasState(consts.ReplicationDRSecondary) |
| # Not the defining function |
| - pattern-not-inside: | |
| func ($CORE *Core) IsDRSecondary() bool { |
| ... |
| } |
| # Not a call to System() |
| - pattern-not: | |
| $BACKEND.System().ReplicationState().HasState(consts.ReplicationDRSecondary) |
| - pattern-not: | |
| $IDENTITYSTORE.localNode.ReplicationState().HasState(consts.ReplicationDRSecondary) |
| message: "Consider replacing ReplicationState().HasState(...) with IsDRSecondary()" |
| languages: [go] |
| severity: WARNING |
| fix: $CORE.IsDRSecondary() |
| |
| - id: replication-state-in-handler-op |
| patterns: |
| - pattern: | |
| $B.System().ReplicationState().HasState($STATE) |
| - pattern-inside: | |
| func ($T $TYPE) $FUNC($CTX context.Context, $REQ *logical.Request, $D *framework.FieldData) (*logical.Response, error) { |
| ... |
| } |
| message: "Consider using frameworks ForwardPerformance* setting" |
| languages: [go] |
| severity: WARNING |
| |
| - id: replication-state-bad-logic |
| patterns: |
| - pattern: | |
| b.System().LocalMount() || !b.System().ReplicationState().HasState(<... consts.ReplicationPerformanceStandby ...>) |
| message: "Invalid replication state handling of local mounts" |
| languages: [go] |
| severity: ERROR |