Skip to content

Commit

Permalink
PC-13340 Replay on SLO edit/creation - DataSource setting
Browse files Browse the repository at this point in the history
  • Loading branch information
dawidwisn committed Oct 2, 2024
1 parent 92f8deb commit 6b2dbb8
Show file tree
Hide file tree
Showing 32 changed files with 223 additions and 21 deletions.
13 changes: 8 additions & 5 deletions internal/manifest/v1alpha/examples/agent.go
Original file line number Diff line number Diff line change
Expand Up @@ -60,12 +60,15 @@ func (a agentExample) Generate() v1alphaAgent.Agent {
agent = a.generateVariant(agent)
typ, _ := agent.Spec.GetType()
if maxDuration, err := v1alpha.GetDataRetrievalMaxDuration(manifest.KindAgent, typ); err == nil {
defaultDuration := v1alpha.HistoricalRetrievalDuration{
Value: ptr(*maxDuration.Value / 2),
Unit: maxDuration.Unit,
}
agent.Spec.HistoricalDataRetrieval = &v1alpha.HistoricalDataRetrieval{
MaxDuration: maxDuration,
DefaultDuration: v1alpha.HistoricalRetrievalDuration{
Value: ptr(*maxDuration.Value / 2),
Unit: maxDuration.Unit,
},
MaxDuration: maxDuration,
DefaultDuration: defaultDuration,
TriggeredByCreation: &defaultDuration,
TriggeredByEdit: &defaultDuration,
}
}
defaultQueryDelay := v1alpha.GetQueryDelayDefaults()[typ]
Expand Down
13 changes: 8 additions & 5 deletions internal/manifest/v1alpha/examples/direct.go
Original file line number Diff line number Diff line change
Expand Up @@ -66,12 +66,15 @@ func (d directExample) Generate() v1alphaDirect.Direct {
direct = d.generateVariant(direct)
typ, _ := direct.Spec.GetType()
if maxDuration, err := v1alpha.GetDataRetrievalMaxDuration(manifest.KindDirect, typ); err == nil {
defaultDuration := v1alpha.HistoricalRetrievalDuration{
Value: ptr(*maxDuration.Value / 2),
Unit: maxDuration.Unit,
}
direct.Spec.HistoricalDataRetrieval = &v1alpha.HistoricalDataRetrieval{
MaxDuration: maxDuration,
DefaultDuration: v1alpha.HistoricalRetrievalDuration{
Value: ptr(*maxDuration.Value / 2),
Unit: maxDuration.Unit,
},
MaxDuration: maxDuration,
DefaultDuration: defaultDuration,
TriggeredByCreation: &defaultDuration,
TriggeredByEdit: &defaultDuration,
}
}
defaultQueryDelay := v1alpha.GetQueryDelayDefaults()[typ]
Expand Down
6 changes: 6 additions & 0 deletions manifest/v1alpha/agent/examples/amazon-prometheus.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,12 @@ spec:
defaultDuration:
value: 15
unit: Day
triggeredByCreation:
value: 15
unit: Day
triggeredByEdit:
value: 15
unit: Day
queryDelay:
value: 1
unit: Second
6 changes: 6 additions & 0 deletions manifest/v1alpha/agent/examples/app-dynamics.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,12 @@ spec:
defaultDuration:
value: 15
unit: Day
triggeredByCreation:
value: 15
unit: Day
triggeredByEdit:
value: 15
unit: Day
queryDelay:
value: 2
unit: Minute
6 changes: 6 additions & 0 deletions manifest/v1alpha/agent/examples/azure-monitor.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,12 @@ spec:
defaultDuration:
value: 15
unit: Day
triggeredByCreation:
value: 15
unit: Day
triggeredByEdit:
value: 15
unit: Day
queryDelay:
value: 6
unit: Minute
6 changes: 6 additions & 0 deletions manifest/v1alpha/agent/examples/azure-prometheus.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,12 @@ spec:
defaultDuration:
value: 15
unit: Day
triggeredByCreation:
value: 15
unit: Day
triggeredByEdit:
value: 15
unit: Day
queryDelay:
value: 1
unit: Second
6 changes: 6 additions & 0 deletions manifest/v1alpha/agent/examples/cloud-watch.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,12 @@ spec:
defaultDuration:
value: 7
unit: Day
triggeredByCreation:
value: 7
unit: Day
triggeredByEdit:
value: 7
unit: Day
queryDelay:
value: 2
unit: Minute
6 changes: 6 additions & 0 deletions manifest/v1alpha/agent/examples/datadog.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,12 @@ spec:
defaultDuration:
value: 15
unit: Day
triggeredByCreation:
value: 15
unit: Day
triggeredByEdit:
value: 15
unit: Day
queryDelay:
value: 2
unit: Minute
6 changes: 6 additions & 0 deletions manifest/v1alpha/agent/examples/dynatrace.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,12 @@ spec:
defaultDuration:
value: 14
unit: Day
triggeredByCreation:
value: 14
unit: Day
triggeredByEdit:
value: 14
unit: Day
queryDelay:
value: 3
unit: Minute
6 changes: 6 additions & 0 deletions manifest/v1alpha/agent/examples/google-cloud-monitoring.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,12 @@ spec:
defaultDuration:
value: 15
unit: Day
triggeredByCreation:
value: 15
unit: Day
triggeredByEdit:
value: 15
unit: Day
queryDelay:
value: 3
unit: Minute
6 changes: 6 additions & 0 deletions manifest/v1alpha/agent/examples/graphite.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,12 @@ spec:
defaultDuration:
value: 15
unit: Day
triggeredByCreation:
value: 15
unit: Day
triggeredByEdit:
value: 15
unit: Day
queryDelay:
value: 2
unit: Minute
6 changes: 6 additions & 0 deletions manifest/v1alpha/agent/examples/honeycomb.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,12 @@ spec:
defaultDuration:
value: 3
unit: Day
triggeredByCreation:
value: 3
unit: Day
triggeredByEdit:
value: 3
unit: Day
queryDelay:
value: 6
unit: Minute
6 changes: 6 additions & 0 deletions manifest/v1alpha/agent/examples/lightstep.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,12 @@ spec:
defaultDuration:
value: 15
unit: Day
triggeredByCreation:
value: 15
unit: Day
triggeredByEdit:
value: 15
unit: Day
queryDelay:
value: 3
unit: Minute
6 changes: 6 additions & 0 deletions manifest/v1alpha/agent/examples/logic-monitor.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,12 @@ spec:
defaultDuration:
value: 15
unit: Day
triggeredByCreation:
value: 15
unit: Day
triggeredByEdit:
value: 15
unit: Day
queryDelay:
value: 3
unit: Minute
6 changes: 6 additions & 0 deletions manifest/v1alpha/agent/examples/new-relic.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,12 @@ spec:
defaultDuration:
value: 15
unit: Day
triggeredByCreation:
value: 15
unit: Day
triggeredByEdit:
value: 15
unit: Day
queryDelay:
value: 2
unit: Minute
6 changes: 6 additions & 0 deletions manifest/v1alpha/agent/examples/prometheus.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,12 @@ spec:
defaultDuration:
value: 15
unit: Day
triggeredByCreation:
value: 15
unit: Day
triggeredByEdit:
value: 15
unit: Day
queryDelay:
value: 1
unit: Second
6 changes: 6 additions & 0 deletions manifest/v1alpha/agent/examples/splunk.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,12 @@ spec:
defaultDuration:
value: 15
unit: Day
triggeredByCreation:
value: 15
unit: Day
triggeredByEdit:
value: 15
unit: Day
queryDelay:
value: 6
unit: Minute
17 changes: 17 additions & 0 deletions manifest/v1alpha/agent/validation.go
Original file line number Diff line number Diff line change
Expand Up @@ -417,6 +417,23 @@ var historicalDataRetrievalValidationRule = govy.NewRule(func(spec Spec) error {
errors.Errorf("must be less than or equal to %d %s",
*maxDurationAllowed.Value, maxDurationAllowed.Unit))
}

if spec.HistoricalDataRetrieval.TriggeredByCreation != nil &&
spec.HistoricalDataRetrieval.TriggeredByCreation.BiggerThan(maxDurationAllowed) {
return govy.NewPropertyError(
"historicalDataRetrieval.triggeredByCreation",
spec.HistoricalDataRetrieval.TriggeredByCreation,
errors.Errorf("must be less than or equal to %d %s",
*maxDurationAllowed.Value, maxDurationAllowed.Unit))
}
if spec.HistoricalDataRetrieval.TriggeredByEdit != nil &&
spec.HistoricalDataRetrieval.TriggeredByEdit.BiggerThan(maxDurationAllowed) {
return govy.NewPropertyError(
"historicalDataRetrieval.triggeredByEdit",
spec.HistoricalDataRetrieval.TriggeredByEdit,
errors.Errorf("must be less than or equal to %d %s",
*maxDurationAllowed.Value, maxDurationAllowed.Unit))
}
return nil
})

Expand Down
20 changes: 16 additions & 4 deletions manifest/v1alpha/agent/validation_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -219,8 +219,10 @@ func TestValidateSpec_HistoricalDataRetrieval(t *testing.T) {
} {
agent := validAgent(v1alpha.Prometheus)
agent.Spec.HistoricalDataRetrieval = &v1alpha.HistoricalDataRetrieval{
MaxDuration: v1alpha.HistoricalRetrievalDuration{Unit: unit, Value: ptr(0)},
DefaultDuration: v1alpha.HistoricalRetrievalDuration{Unit: unit, Value: ptr(0)},
MaxDuration: v1alpha.HistoricalRetrievalDuration{Unit: unit, Value: ptr(0)},
DefaultDuration: v1alpha.HistoricalRetrievalDuration{Unit: unit, Value: ptr(0)},
TriggeredByCreation: &v1alpha.HistoricalRetrievalDuration{Unit: unit, Value: ptr(0)},
TriggeredByEdit: &v1alpha.HistoricalRetrievalDuration{Unit: unit, Value: ptr(0)},
}
err := validate(agent)
testutils.AssertNoError(t, agent, err)
Expand Down Expand Up @@ -344,8 +346,10 @@ func TestValidateSpec_HistoricalDataRetrieval(t *testing.T) {
} {
agent := validAgent(v1alpha.Prometheus)
agent.Spec.HistoricalDataRetrieval = &v1alpha.HistoricalDataRetrieval{
MaxDuration: v1alpha.HistoricalRetrievalDuration{Value: ptr(10), Unit: unit},
DefaultDuration: v1alpha.HistoricalRetrievalDuration{Value: ptr(10), Unit: unit},
MaxDuration: v1alpha.HistoricalRetrievalDuration{Value: ptr(10), Unit: unit},
DefaultDuration: v1alpha.HistoricalRetrievalDuration{Value: ptr(10), Unit: unit},
TriggeredByCreation: &v1alpha.HistoricalRetrievalDuration{Value: ptr(10), Unit: unit},
TriggeredByEdit: &v1alpha.HistoricalRetrievalDuration{Value: ptr(10), Unit: unit},
}
err := validate(agent)
testutils.AssertNoError(t, agent, err)
Expand All @@ -362,6 +366,14 @@ func TestValidateSpec_HistoricalDataRetrieval(t *testing.T) {
Value: ptr(10),
Unit: v1alpha.HRDHour,
},
TriggeredByCreation: &v1alpha.HistoricalRetrievalDuration{
Value: ptr(10),
Unit: v1alpha.HRDHour,
},
TriggeredByEdit: &v1alpha.HistoricalRetrievalDuration{
Value: ptr(10),
Unit: v1alpha.HRDHour,
},
}
err := validate(agent)
testutils.AssertContainsErrors(t, agent, err, 1, testutils.ExpectedError{
Expand Down
19 changes: 12 additions & 7 deletions manifest/v1alpha/data_sources.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,10 @@ type HistoricalDataRetrieval struct {
MinimumAgentVersion string `json:"minimumAgentVersion,omitempty"`
MaxDuration HistoricalRetrievalDuration `json:"maxDuration" validate:"required"`
DefaultDuration HistoricalRetrievalDuration `json:"defaultDuration" validate:"required"`
// TriggeredBy is not supported yet, applying it will have no effect
TriggeredBy *TriggeredBy `json:"triggeredBy,omitempty"`
// TriggeredByCreation is not supported yet, applying it will have no effect
TriggeredByCreation *HistoricalRetrievalDuration `json:"triggeredByCreation,omitempty"`
// TriggeredByEdit is not supported yet, applying it will have no effect
TriggeredByEdit *HistoricalRetrievalDuration `json:"triggeredByEdit,omitempty"`
}

func HistoricalDataRetrievalValidation() govy.Validator[HistoricalDataRetrieval] {
Expand All @@ -79,6 +81,14 @@ func HistoricalDataRetrievalValidation() govy.Validator[HistoricalDataRetrieval]
WithName("defaultDuration").
Required().
Include(historicalRetrievalDurationValidation),
govy.ForPointer(func(h HistoricalDataRetrieval) *HistoricalRetrievalDuration { return h.TriggeredByCreation }).
WithName("triggeredByCreation").
OmitEmpty().
Include(historicalRetrievalDurationValidation),
govy.ForPointer(func(h HistoricalDataRetrieval) *HistoricalRetrievalDuration { return h.TriggeredByEdit }).
WithName("triggeredByEdit").
OmitEmpty().
Include(historicalRetrievalDurationValidation),
)
}

Expand Down Expand Up @@ -110,11 +120,6 @@ var defaultDataRetrievalDurationValidation = govy.NewRule(
return nil
})

type TriggeredBy struct {
Edit bool `json:"edit"`
Creation bool `json:"creation"`
}

type Interval struct {
Duration `yaml:",inline"`
}
Expand Down
6 changes: 6 additions & 0 deletions manifest/v1alpha/direct/examples/app-dynamics.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,12 @@ spec:
defaultDuration:
value: 15
unit: Day
triggeredByCreation:
value: 15
unit: Day
triggeredByEdit:
value: 15
unit: Day
queryDelay:
value: 2
unit: Minute
6 changes: 6 additions & 0 deletions manifest/v1alpha/direct/examples/azure-monitor.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,12 @@ spec:
defaultDuration:
value: 15
unit: Day
triggeredByCreation:
value: 15
unit: Day
triggeredByEdit:
value: 15
unit: Day
queryDelay:
value: 6
unit: Minute
6 changes: 6 additions & 0 deletions manifest/v1alpha/direct/examples/azure-prometheus.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,12 @@ spec:
defaultDuration:
value: 15
unit: Day
triggeredByCreation:
value: 15
unit: Day
triggeredByEdit:
value: 15
unit: Day
queryDelay:
value: 1
unit: Second
6 changes: 6 additions & 0 deletions manifest/v1alpha/direct/examples/cloud-watch.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,12 @@ spec:
defaultDuration:
value: 7
unit: Day
triggeredByCreation:
value: 7
unit: Day
triggeredByEdit:
value: 7
unit: Day
queryDelay:
value: 2
unit: Minute
Loading

0 comments on commit 6b2dbb8

Please sign in to comment.