Added
- `servo.__codename__` constant now contains the release codename.
- Extensive docstring comments for all members of the `servo.types` module.
- Kubernetes Containers can be aliased to set explicit Compomnent names rather
rather than automatically deriving names from Deployment/Container.
- Kubernetes Optimization Strategy classes can now accept options from the
config file (currently supports `alias` for canaries).
- Integrated orjson to gain control over JSON/YAML serialization for classes
that inherit from built-in types (e.g., str, int, float).
- The `ProgressHandler` now handles exceptions and optionally notifies an
external exception handler.
- Servo will now interrupt operations when it detects losing sync with the
backend by encountering unexpected operation errors.
- Critical checks can be declared via the `require` decorator.
- Added the `warn` decorator for creating checks that emit warnings rather than
failing.
Removed
- Subprocess methods have been removed from `servo.connector.Connector` in favor
of directly importing the subprocess module from the utilities module.
- The `required` attribute from the `servo.checks` module in favor of
`severity`.
Changed
- The `servo.logging` module has been generalized for use outside of the
`servo.connectors.Connector` inheritance hierarchy.
- The active connector is now managed via a `ContextVar` just as the active
event is. This enables logging to correctly be attributed to the active
connector without having to pass a specific logger object around everywhere.
- The `servo.types.Setting` class has been significantly overhauled:
- Setting is now an abstract base class
- RangeSetting models range settings
- EnumSetting models enum settings
- Introduce CPU, Memory, Replicas, and InstanceType settings for special
optimizer settings
- Validate numerous behaviors (range inclusion, enum inclusion, type
agreement, etc)
- JSON and YAML serializations now favor human readable representations by
default whenever possible.
- Multicheck methods now yield more readable IDs based off the parent multicheck
method name (e.g., `check_resource_requirements_item_0`).
- Checks now have a severity described by the `servo.checks.Severity`
enumeration, replacing required.
- Required check nomenclature has been replaced with the `critical` severity
level to clarify expectations and eliminate ambiguity in check behavior.
Fixed
- Progress tracking now handles zero length durations appropriately (e.g., in
warmup, settlement, etc).
- Model objects that inherit from builtin classes can now be serialized to
custom representations.
- Kubernetes configuration values now serialize to human readable values instead
of numerics.
- Multicheck expanded methods are now filterable and taggable.
- Progress logging and reporting will no longer trigger unhandled exceptions.
- Adjust operations now return a state descriptor rather than parroting back the
requested state.
- Kubernetes Connector is now aware of out of band changes such as those made by
Horizontal Pod Autoscalers.