Currently, we have value field required for all objectives in an SLO. We currently allow to not pass that field in YAML at all but it causes it to default to 0 anyway and is returned value: 0. This is inconsistent because GET yaml is different than APPLY YAML in such case.
Composite SLOs always have exactly one objective, so as such value doesn’t matter for them at all as long as it doesn't change.
Moreover, the existence of value is documented and used in examples which is confusing to new adopters of Composite SLOs because it is required, changing it will restart budget, but it doesn’t do anything.
We want to encourage and allow not setting value field for Composite SLOs while maintaining backward compatibility with users who perhaps already explicitly set it.
Summary
value will be omitted if it is null in API.
value field is omitted in all Composite SLO examples and E2E tests.
Usage of spec.objective[0].value field for Composite SLOs becomes deprecated.
New Composite SLOs should not set value field.
New Composite SLOs will still accept value: 0 for backward compatibility with older versions of Nobl9 SDK and Nobl9 Terrafrom Provider.
If value was previously set to 0 for Composite SLO then it should be omitted going forward.
If value was previously set in Composite SLO to a number other than 0 then it can no longer be updated but still will be accepted for backward compatibility.
The usage of value for SLOs using ratio or threshold SLIs does not change.
Motivation
Currently, we have
value
field required for all objectives in an SLO. We currently allow to not pass that field in YAML at all but it causes it to default to 0 anyway and is returnedvalue: 0
. This is inconsistent because GET yaml is different than APPLY YAML in such case.Composite SLOs always have exactly one objective, so as such
value
doesn’t matter for them at all as long as it doesn't change.Moreover, the existence of value is documented and used in examples which is confusing to new adopters of Composite SLOs because it is required, changing it will restart budget, but it doesn’t do anything.
We want to encourage and allow not setting
value
field for Composite SLOs while maintaining backward compatibility with users who perhaps already explicitly set it.Summary
value
will be omitted if it isnull
in API.value
field is omitted in all Composite SLO examples and E2E tests.Related changes
https://github.com/nobl9/nobl9-go/pull/551 https://github.com/nobl9/nobl9-go/pull/549 https://github.com/nobl9/n9/pull/15406 https://github.com/nobl9/terraform-provider-nobl9/pull/312 https://github.com/nobl9/terraform-provider-nobl9/pull/295
Testing
Release Notes
Usage of
spec.objective[0].value
field for Composite SLOs becomes deprecated.value
field.value: 0
for backward compatibility with older versions of Nobl9 SDK and Nobl9 Terrafrom Provider.value
was previously set to0
for Composite SLO then it should be omitted going forward.value
was previously set in Composite SLO to a number other than0
then it can no longer be updated but still will be accepted for backward compatibility.The usage of
value
for SLOs using ratio or threshold SLIs does not change.