Revert manual license reporting changes from 1.14.x (#25085)
* Revert "backport of commit 0e227bf0d75bc680439ea3b8a080c0cccc700015 (#25064)" This reverts commit28fa6d0fd9
. * Revert "manual licese reporting persist snapshots CE (#25021) (#25050)" This reverts commitac786547c2
. * Revert "backport of commit bc9be554cb4cc991a4e8d4bc806751cb4609c984 (#24850)" This reverts commit53ed1f9919
.
This commit is contained in:
parent
234d429275
commit
31118a8449
@ -17,20 +17,6 @@ func StartOfPreviousMonth(t time.Time) time.Time {
|
||||
return time.Date(year, month, 1, 0, 0, 0, 0, t.Location()).AddDate(0, -1, 0)
|
||||
}
|
||||
|
||||
func StartOfDay(t time.Time) time.Time {
|
||||
year, month, day := t.Date()
|
||||
return time.Date(year, month, day, 0, 0, 0, 0, t.Location())
|
||||
}
|
||||
|
||||
// IsCurrentDay checks if :t: is in the current day, as defined by :compare:
|
||||
// generally, pass in time.Now().UTC() as :compare:
|
||||
func IsCurrentDay(t, compare time.Time) bool {
|
||||
thisDayStart := StartOfDay(compare)
|
||||
queryDayStart := StartOfDay(t)
|
||||
|
||||
return queryDayStart.Equal(thisDayStart)
|
||||
}
|
||||
|
||||
func StartOfMonth(t time.Time) time.Time {
|
||||
year, month, _ := t.Date()
|
||||
return time.Date(year, month, 1, 0, 0, 0, 0, t.Location())
|
||||
|
@ -223,47 +223,6 @@ func TestTimeutil_IsCurrentMonth(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
// TestTimeutil_IsCurrentDay checks if the test times equals the current day or not.
|
||||
func TestTimeutil_IsCurrentDay(t *testing.T) {
|
||||
now := time.Now()
|
||||
testCases := []struct {
|
||||
input time.Time
|
||||
expected bool
|
||||
}{
|
||||
{
|
||||
input: now,
|
||||
expected: true,
|
||||
},
|
||||
{
|
||||
input: StartOfDay(now).AddDate(0, 0, -1),
|
||||
expected: false,
|
||||
},
|
||||
{
|
||||
input: StartOfDay(now).AddDate(-1, 0, 0),
|
||||
expected: false,
|
||||
},
|
||||
{
|
||||
input: StartOfDay(now).Add(1 * time.Second),
|
||||
expected: true,
|
||||
},
|
||||
{
|
||||
input: StartOfDay(now).Add(-1 * time.Second),
|
||||
expected: false,
|
||||
},
|
||||
{
|
||||
input: StartOfDay(now).Add(86400), // a day is 86400 seconds
|
||||
expected: true,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range testCases {
|
||||
result := IsCurrentDay(tc.input, now)
|
||||
if result != tc.expected {
|
||||
t.Errorf("invalid result. expected %t for %v", tc.expected, tc.input)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestTimeUtil_ContiguousMonths(t *testing.T) {
|
||||
testCases := []struct {
|
||||
input []time.Time
|
||||
|
@ -1104,7 +1104,7 @@ func (c *Core) setupActivityLogLocked(ctx context.Context, wg *sync.WaitGroup) e
|
||||
c.AddLogger(logger)
|
||||
|
||||
if os.Getenv("VAULT_DISABLE_ACTIVITY_LOG") != "" {
|
||||
if c.ManualLicenseReportingEnabled() {
|
||||
if c.CensusLicensingEnabled() {
|
||||
logger.Warn("activity log disabled via environment variable while reporting is enabled. " +
|
||||
"Reporting will override, and the activity log will be enabled")
|
||||
} else {
|
||||
@ -1150,7 +1150,7 @@ func (c *Core) setupActivityLogLocked(ctx context.Context, wg *sync.WaitGroup) e
|
||||
close(manager.retentionDone)
|
||||
}(manager.retentionMonths)
|
||||
|
||||
manager.CensusReportDone = make(chan bool, 1)
|
||||
manager.CensusReportDone = make(chan bool)
|
||||
go c.activityLog.CensusReport(ctx, c.CensusAgent(), c.BillingStart())
|
||||
}
|
||||
|
||||
|
@ -851,89 +851,155 @@ func TestActivityLog_MultipleFragmentsAndSegments(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
// TestActivityLog_API_ConfigCRUD_Census performs various CRUD operations on internal/counters/config
|
||||
// depending on license reporting
|
||||
func TestActivityLog_API_ConfigCRUD_Census(t *testing.T) {
|
||||
// TestActivityLog_API_ConfigCRUD performs various CRUD operations on internal/counters/config.
|
||||
func TestActivityLog_API_ConfigCRUD(t *testing.T) {
|
||||
core, b, _ := testCoreSystemBackend(t)
|
||||
view := core.systemBarrierView
|
||||
|
||||
req := logical.TestRequest(t, logical.UpdateOperation, "internal/counters/config")
|
||||
req.Storage = view
|
||||
req.Data["retention_months"] = 2
|
||||
resp, err := b.HandleRequest(namespace.RootContext(nil), req)
|
||||
if core.ManualLicenseReportingEnabled() {
|
||||
if err == nil {
|
||||
t.Fatal("expected error")
|
||||
}
|
||||
if resp.Data["error"] != `retention_months must be at least 24 while Reporting is enabled` {
|
||||
t.Fatalf("bad: %v", resp)
|
||||
}
|
||||
} else {
|
||||
// Test reading the defaults
|
||||
{
|
||||
req := logical.TestRequest(t, logical.ReadOperation, "internal/counters/config")
|
||||
req.Storage = view
|
||||
resp, err := b.HandleRequest(namespace.RootContext(nil), req)
|
||||
if err != nil {
|
||||
t.Fatalf("err: %v", err)
|
||||
}
|
||||
defaults := map[string]interface{}{
|
||||
"default_report_months": 12,
|
||||
"retention_months": 24,
|
||||
"enabled": activityLogEnabledDefaultValue,
|
||||
"queries_available": false,
|
||||
"reporting_enabled": core.CensusLicensingEnabled(),
|
||||
"billing_start_timestamp": core.BillingStart(),
|
||||
"minimum_retention_months": core.activityLog.configOverrides.MinimumRetentionMonths,
|
||||
}
|
||||
|
||||
if diff := deep.Equal(resp.Data, defaults); len(diff) > 0 {
|
||||
t.Fatalf("diff: %v", diff)
|
||||
}
|
||||
}
|
||||
|
||||
req = logical.TestRequest(t, logical.UpdateOperation, "internal/counters/config")
|
||||
req.Storage = view
|
||||
req.Data["retention_months"] = 26
|
||||
resp, err = b.HandleRequest(namespace.RootContext(nil), req)
|
||||
if err != nil {
|
||||
t.Fatalf("err: %v", err)
|
||||
}
|
||||
if resp != nil {
|
||||
t.Fatalf("bad: %#v", resp)
|
||||
}
|
||||
|
||||
req = logical.TestRequest(t, logical.UpdateOperation, "internal/counters/config")
|
||||
req.Storage = view
|
||||
req.Data["enabled"] = "disable"
|
||||
resp, err = b.HandleRequest(namespace.RootContext(nil), req)
|
||||
if core.ManualLicenseReportingEnabled() {
|
||||
// Check Error Cases
|
||||
{
|
||||
req := logical.TestRequest(t, logical.UpdateOperation, "internal/counters/config")
|
||||
req.Storage = view
|
||||
req.Data["default_report_months"] = 0
|
||||
_, err := b.HandleRequest(namespace.RootContext(nil), req)
|
||||
if err == nil {
|
||||
t.Fatal("expected error")
|
||||
}
|
||||
if resp.Data["error"] != `cannot disable the activity log while Reporting is enabled` {
|
||||
t.Fatalf("bad: %v", resp)
|
||||
|
||||
req = logical.TestRequest(t, logical.UpdateOperation, "internal/counters/config")
|
||||
req.Storage = view
|
||||
req.Data["enabled"] = "bad-value"
|
||||
_, err = b.HandleRequest(namespace.RootContext(nil), req)
|
||||
if err == nil {
|
||||
t.Fatal("expected error")
|
||||
}
|
||||
} else {
|
||||
|
||||
req = logical.TestRequest(t, logical.UpdateOperation, "internal/counters/config")
|
||||
req.Storage = view
|
||||
req.Data["retention_months"] = 0
|
||||
req.Data["enabled"] = "enable"
|
||||
_, err = b.HandleRequest(namespace.RootContext(nil), req)
|
||||
if err == nil {
|
||||
t.Fatal("expected error")
|
||||
}
|
||||
}
|
||||
|
||||
// Test single key updates
|
||||
{
|
||||
req := logical.TestRequest(t, logical.UpdateOperation, "internal/counters/config")
|
||||
req.Storage = view
|
||||
req.Data["default_report_months"] = 1
|
||||
resp, err := b.HandleRequest(namespace.RootContext(nil), req)
|
||||
if err != nil {
|
||||
t.Fatalf("err: %v", err)
|
||||
}
|
||||
if resp != nil {
|
||||
t.Fatalf("bad: %#v", resp)
|
||||
}
|
||||
|
||||
req = logical.TestRequest(t, logical.UpdateOperation, "internal/counters/config")
|
||||
req.Storage = view
|
||||
req.Data["retention_months"] = 2
|
||||
resp, err = b.HandleRequest(namespace.RootContext(nil), req)
|
||||
if err != nil {
|
||||
t.Fatalf("err: %v", err)
|
||||
}
|
||||
if resp != nil {
|
||||
t.Fatalf("bad: %#v", resp)
|
||||
}
|
||||
|
||||
req = logical.TestRequest(t, logical.UpdateOperation, "internal/counters/config")
|
||||
req.Storage = view
|
||||
req.Data["enabled"] = "enable"
|
||||
resp, err = b.HandleRequest(namespace.RootContext(nil), req)
|
||||
if err != nil {
|
||||
t.Fatalf("err: %v", err)
|
||||
}
|
||||
if resp != nil {
|
||||
t.Fatalf("bad: %#v", resp)
|
||||
}
|
||||
|
||||
req = logical.TestRequest(t, logical.ReadOperation, "internal/counters/config")
|
||||
req.Storage = view
|
||||
resp, err = b.HandleRequest(namespace.RootContext(nil), req)
|
||||
if err != nil {
|
||||
t.Fatalf("err: %v", err)
|
||||
}
|
||||
expected := map[string]interface{}{
|
||||
"default_report_months": 1,
|
||||
"retention_months": 2,
|
||||
"enabled": "enable",
|
||||
"queries_available": false,
|
||||
"reporting_enabled": core.CensusLicensingEnabled(),
|
||||
"billing_start_timestamp": core.BillingStart(),
|
||||
"minimum_retention_months": core.activityLog.configOverrides.MinimumRetentionMonths,
|
||||
}
|
||||
|
||||
if diff := deep.Equal(resp.Data, expected); len(diff) > 0 {
|
||||
t.Fatalf("diff: %v", diff)
|
||||
}
|
||||
}
|
||||
|
||||
req = logical.TestRequest(t, logical.UpdateOperation, "internal/counters/config")
|
||||
req.Storage = view
|
||||
req.Data["enabled"] = "enable"
|
||||
resp, err = b.HandleRequest(namespace.RootContext(nil), req)
|
||||
if err != nil {
|
||||
t.Fatalf("err: %v", err)
|
||||
}
|
||||
if resp != nil {
|
||||
t.Fatalf("bad: %#v", resp)
|
||||
}
|
||||
// Test updating all keys
|
||||
{
|
||||
req := logical.TestRequest(t, logical.UpdateOperation, "internal/counters/config")
|
||||
req.Storage = view
|
||||
req.Data["enabled"] = "default"
|
||||
req.Data["retention_months"] = 24
|
||||
req.Data["default_report_months"] = 12
|
||||
|
||||
req = logical.TestRequest(t, logical.ReadOperation, "internal/counters/config")
|
||||
req.Storage = view
|
||||
resp, err = b.HandleRequest(namespace.RootContext(nil), req)
|
||||
if err != nil {
|
||||
t.Fatalf("err: %v", err)
|
||||
}
|
||||
expected := map[string]interface{}{
|
||||
"default_report_months": 12,
|
||||
"retention_months": 26,
|
||||
"enabled": "enable",
|
||||
"queries_available": false,
|
||||
"reporting_enabled": core.AutomatedLicenseReportingEnabled(),
|
||||
"billing_start_timestamp": core.BillingStart(),
|
||||
"minimum_retention_months": core.activityLog.configOverrides.MinimumRetentionMonths,
|
||||
}
|
||||
originalEnabled := core.activityLog.GetEnabled()
|
||||
newEnabled := activityLogEnabledDefault
|
||||
|
||||
if diff := deep.Equal(resp.Data, expected); len(diff) > 0 {
|
||||
t.Fatalf("diff: %v", diff)
|
||||
resp, err := b.HandleRequest(namespace.RootContext(nil), req)
|
||||
if err != nil {
|
||||
t.Fatalf("err: %v", err)
|
||||
}
|
||||
checkAPIWarnings(t, originalEnabled, newEnabled, resp)
|
||||
|
||||
req = logical.TestRequest(t, logical.ReadOperation, "internal/counters/config")
|
||||
req.Storage = view
|
||||
resp, err = b.HandleRequest(namespace.RootContext(nil), req)
|
||||
if err != nil {
|
||||
t.Fatalf("err: %v", err)
|
||||
}
|
||||
|
||||
defaults := map[string]interface{}{
|
||||
"default_report_months": 12,
|
||||
"retention_months": 24,
|
||||
"enabled": activityLogEnabledDefaultValue,
|
||||
"queries_available": false,
|
||||
"reporting_enabled": core.CensusLicensingEnabled(),
|
||||
"billing_start_timestamp": core.BillingStart(),
|
||||
"minimum_retention_months": core.activityLog.configOverrides.MinimumRetentionMonths,
|
||||
}
|
||||
|
||||
if diff := deep.Equal(resp.Data, defaults); len(diff) > 0 {
|
||||
t.Fatalf("diff: %v", diff)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -2111,8 +2177,7 @@ func checkAPIWarnings(t *testing.T, originalEnabled, newEnabled bool, resp *logi
|
||||
}
|
||||
|
||||
// TestActivityLog_EnableDisable writes a segment, adds an entity to the in-memory fragment, then disables the activity
|
||||
// log. The test verifies that activity log cannot be disabled if manual reporting is enabled and no segment data is lost.
|
||||
// If manual reporting is not enabled(OSS), The test verifies that the segment doesn't exist. The activity log is enabled, then verified that an empty
|
||||
// log. The test verifies that the segment doesn't exist. The activity log is enabled, then verified that an empty
|
||||
// segment is written and new clients can be added and written to segments.
|
||||
func TestActivityLog_EnableDisable(t *testing.T) {
|
||||
timeutil.SkipAtEndOfMonth(t)
|
||||
@ -2144,19 +2209,10 @@ func TestActivityLog_EnableDisable(t *testing.T) {
|
||||
req.Storage = view
|
||||
req.Data["enabled"] = "disable"
|
||||
resp, err := b.HandleRequest(ctx, req)
|
||||
if a.core.ManualLicenseReportingEnabled() {
|
||||
if err == nil {
|
||||
t.Fatal("expected error")
|
||||
}
|
||||
if resp.Data["error"] != `cannot disable the activity log while Reporting is enabled` {
|
||||
t.Fatalf("bad: %v", resp)
|
||||
}
|
||||
} else {
|
||||
if err != nil {
|
||||
t.Fatalf("err: %v", err)
|
||||
}
|
||||
checkAPIWarnings(t, originalEnabled, false, resp)
|
||||
if err != nil {
|
||||
t.Fatalf("err: %v", err)
|
||||
}
|
||||
checkAPIWarnings(t, originalEnabled, false, resp)
|
||||
}
|
||||
|
||||
// enable (if not already) and write a segment
|
||||
@ -2182,35 +2238,33 @@ func TestActivityLog_EnableDisable(t *testing.T) {
|
||||
// Add in-memory fragment
|
||||
a.AddEntityToFragment(id3, "root", time.Now().Unix())
|
||||
|
||||
// disable and verify segment exists
|
||||
// disable and verify segment no longer exists
|
||||
disableRequest()
|
||||
|
||||
if !a.core.ManualLicenseReportingEnabled() {
|
||||
timeout := time.After(20 * time.Second)
|
||||
select {
|
||||
case <-a.deleteDone:
|
||||
break
|
||||
case <-timeout:
|
||||
t.Fatalf("timed out")
|
||||
}
|
||||
|
||||
expectMissingSegment(t, core, path)
|
||||
a.ExpectCurrentSegmentRefreshed(t, 0, false)
|
||||
|
||||
// enable (if not already) which force-writes an empty segment
|
||||
enableRequest()
|
||||
|
||||
seg2 := a.GetStartTimestamp()
|
||||
if seg1 >= seg2 {
|
||||
t.Errorf("bad second segment timestamp, %v >= %v", seg1, seg2)
|
||||
}
|
||||
|
||||
// Verify empty segments are present
|
||||
path = fmt.Sprintf("%ventity/%v/0", ActivityLogPrefix, seg2)
|
||||
readSegmentFromStorage(t, core, path)
|
||||
|
||||
path = fmt.Sprintf("%vdirecttokens/%v/0", ActivityLogPrefix, seg2)
|
||||
timeout := time.After(20 * time.Second)
|
||||
select {
|
||||
case <-a.deleteDone:
|
||||
break
|
||||
case <-timeout:
|
||||
t.Fatalf("timed out")
|
||||
}
|
||||
|
||||
expectMissingSegment(t, core, path)
|
||||
a.ExpectCurrentSegmentRefreshed(t, 0, false)
|
||||
|
||||
// enable (if not already) which force-writes an empty segment
|
||||
enableRequest()
|
||||
|
||||
seg2 := a.GetStartTimestamp()
|
||||
if seg1 >= seg2 {
|
||||
t.Errorf("bad second segment timestamp, %v >= %v", seg1, seg2)
|
||||
}
|
||||
|
||||
// Verify empty segments are present
|
||||
path = fmt.Sprintf("%ventity/%v/0", ActivityLogPrefix, seg2)
|
||||
readSegmentFromStorage(t, core, path)
|
||||
|
||||
path = fmt.Sprintf("%vdirecttokens/%v/0", ActivityLogPrefix, seg2)
|
||||
readSegmentFromStorage(t, core, path)
|
||||
}
|
||||
|
||||
|
@ -10,13 +10,10 @@ import "time"
|
||||
// CensusAgent is a stub for OSS
|
||||
type CensusReporter interface{}
|
||||
|
||||
func (c *Core) setupCensusManager() error { return nil }
|
||||
func (c *Core) BillingStart() time.Time { return time.Time{} }
|
||||
func (c *Core) AutomatedLicenseReportingEnabled() bool { return false }
|
||||
func (c *Core) CensusAgent() CensusReporter { return nil }
|
||||
func (c *Core) ReloadCensus() error { return nil }
|
||||
func (c *Core) teardownCensusManager() error { return nil }
|
||||
func (c *Core) StartManualCensusSnapshots() {}
|
||||
func (c *Core) ManualLicenseReportingEnabled() bool { return false }
|
||||
func (c *Core) ManualCensusSnapshotInterval() time.Duration { return time.Duration(0) }
|
||||
func (c *Core) ManualCensusSnapshotRetentionTime() time.Duration { return time.Duration(0) }
|
||||
// setupCensusAgent is a stub for OSS.
|
||||
func (c *Core) setupCensusAgent() error { return nil }
|
||||
func (c *Core) BillingStart() time.Time { return time.Time{} }
|
||||
func (c *Core) CensusLicensingEnabled() bool { return false }
|
||||
func (c *Core) CensusAgent() CensusReporter { return nil }
|
||||
func (c *Core) ReloadCensus() error { return nil }
|
||||
func (c *Core) teardownCensusAgent() error { return nil }
|
||||
|
@ -644,6 +644,8 @@ type Core struct {
|
||||
// it is protected by activityLogLock
|
||||
activityLogConfig ActivityLogCoreConfig
|
||||
|
||||
censusConfig atomic.Value
|
||||
|
||||
// activeTime is set on active nodes indicating the time at which this node
|
||||
// became active.
|
||||
activeTime time.Time
|
||||
@ -823,6 +825,9 @@ type CoreConfig struct {
|
||||
LicensePath string
|
||||
LicensingConfig *LicensingConfig
|
||||
|
||||
// Configured Census Agent
|
||||
CensusAgent CensusReporter
|
||||
|
||||
DisablePerformanceStandby bool
|
||||
DisableIndexing bool
|
||||
DisableKeyEncodingChecks bool
|
||||
@ -2460,10 +2465,8 @@ func (s standardUnsealStrategy) unseal(ctx context.Context, logger log.Logger, c
|
||||
return err
|
||||
}
|
||||
|
||||
if !c.perfStandby {
|
||||
if err := c.setupCensusManager(); err != nil {
|
||||
logger.Error("failed to instantiate the license reporting agent", "error", err)
|
||||
}
|
||||
if err := c.setupCensusAgent(); err != nil {
|
||||
c.logger.Error("skipping reporting for nil agent", "error", err)
|
||||
}
|
||||
|
||||
// not waiting on wg to avoid changing existing behavior
|
||||
@ -2471,11 +2474,6 @@ func (s standardUnsealStrategy) unseal(ctx context.Context, logger log.Logger, c
|
||||
if err := c.setupActivityLog(ctx, &wg); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if !c.perfStandby {
|
||||
c.StartManualCensusSnapshots()
|
||||
}
|
||||
|
||||
} else {
|
||||
c.auditBroker = NewAuditBroker(c.logger)
|
||||
}
|
||||
@ -2671,8 +2669,8 @@ func (c *Core) preSeal() error {
|
||||
result = multierror.Append(result, fmt.Errorf("error stopping expiration: %w", err))
|
||||
}
|
||||
c.stopActivityLog()
|
||||
// Clean up census on seal
|
||||
if err := c.teardownCensusManager(); err != nil {
|
||||
// Clean up the censusAgent on seal
|
||||
if err := c.teardownCensusAgent(); err != nil {
|
||||
result = multierror.Append(result, fmt.Errorf("error tearing down reporting agent: %w", err))
|
||||
}
|
||||
|
||||
|
@ -328,7 +328,7 @@ func (b *SystemBackend) handleActivityConfigRead(ctx context.Context, req *logic
|
||||
"retention_months": config.RetentionMonths,
|
||||
"enabled": config.Enabled,
|
||||
"queries_available": qa,
|
||||
"reporting_enabled": b.Core.AutomatedLicenseReportingEnabled(),
|
||||
"reporting_enabled": b.Core.CensusLicensingEnabled(),
|
||||
"billing_start_timestamp": b.Core.BillingStart(),
|
||||
"minimum_retention_months": a.configOverrides.MinimumRetentionMonths,
|
||||
},
|
||||
@ -388,8 +388,8 @@ func (b *SystemBackend) handleActivityConfigUpdate(ctx context.Context, req *log
|
||||
!activityLogEnabledDefault && config.Enabled == "enable" && enabledStr == "default" ||
|
||||
activityLogEnabledDefault && config.Enabled == "default" && enabledStr == "disable" {
|
||||
|
||||
// if reporting is enabled, the activity log cannot be disabled. Manual Reporting is always enabled on ent.
|
||||
if a.core.ManualLicenseReportingEnabled() {
|
||||
// if census is enabled, the activity log cannot be disabled
|
||||
if a.core.CensusLicensingEnabled() {
|
||||
return logical.ErrorResponse("cannot disable the activity log while Reporting is enabled"), logical.ErrInvalidRequest
|
||||
}
|
||||
warnings = append(warnings, "the current monthly segment will be deleted because the activity log was disabled")
|
||||
@ -416,8 +416,7 @@ func (b *SystemBackend) handleActivityConfigUpdate(ctx context.Context, req *log
|
||||
return logical.ErrorResponse("retention_months cannot be 0 while enabled"), logical.ErrInvalidRequest
|
||||
}
|
||||
|
||||
// if manual license reporting is enabled, retention months must at least be 24 months
|
||||
if a.core.ManualLicenseReportingEnabled() && config.RetentionMonths < minimumRetentionMonths {
|
||||
if a.core.CensusLicensingEnabled() && config.RetentionMonths < minimumRetentionMonths {
|
||||
return logical.ErrorResponse("retention_months must be at least %d while Reporting is enabled", minimumRetentionMonths), logical.ErrInvalidRequest
|
||||
}
|
||||
|
||||
|
@ -232,6 +232,7 @@ func TestCoreWithSealAndUINoCleanup(t testing.T, opts *CoreConfig) *Core {
|
||||
conf.PluginDirectory = opts.PluginDirectory
|
||||
conf.DetectDeadlocks = opts.DetectDeadlocks
|
||||
conf.Experiments = []string{experiments.VaultExperimentEventsAlpha1}
|
||||
conf.CensusAgent = opts.CensusAgent
|
||||
conf.AdministrativeNamespacePath = opts.AdministrativeNamespacePath
|
||||
conf.ImpreciseLeaseRoleTracking = opts.ImpreciseLeaseRoleTracking
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user