Configuration Validation For Parameters with a Closed-set of Valid Values

Registered by Auston McReynolds on 2013-12-02

The list of supported value datatypes for trove/templates/<datastore>-validation-rules.json thus far is boolean, string, & integer.

However, many datastores have parameters with a closed-set of acceptable values. Examples from MySQL 5.5: binlog-format can only be ROW, STATEMENT, or MIXED; delay-key-write can only be ON, OFF, or ALL; etc.

MongoDB has replIndexPrefetch; Cassandra has partioner, endpoint_snitch, & rcp_server_type; Riak has storage_backend; etc.

Solution: Add an enumeration/enum/closed-set type that validates an inbound value against the closed-set of valid values. This will avoid one-off validation code creeping into the models, plus it provides a more consistent validation experience for the user (it's odd to validate min/max values for integers, yet not support closed-sets).

See https://review.openstack.org/#/c/53168/9/trove/templates/mysql-validation-rules.json for the origin of this blueprint.

Blueprint information

Status:
Not started
Approver:
None
Priority:
Undefined
Drafter:
Auston McReynolds
Direction:
Approved
Assignee:
Craig Vyvial
Definition:
Drafting
Series goal:
None
Implementation:
Not started
Milestone target:
None

Related branches

Sprints

Whiteboard

You should not set a milestone target unless the blueprint has been properly prioritized by the project drivers.
(This is an automated message)

(?)

Work Items

Dependency tree

* Blueprints in grey have been implemented.

This blueprint contains Public information 
Everyone can see this information.