A Policy Type is an abstract specification of the rules to be checked and/or enforced when certain Action is performed on a cluster that contains nodes of certain Profile Type.
A registry of policy types is built in memory when the Senlin engine (senlin-engine) is started. In future, Senlin will allow users to provide additional policy type implementations as plug-ins to be loaded dynamically.
A policy type implementation dictates which fields are required, which fields
are optional and sometimes the constraints on field values. When a
policy is created by referencing this policy type, the fields are
assigned with concrete values. For example, a policy type
senlin.policy.deletion
conceptually specifies the properties required:
criteria: String # valid values - OLDEST_FIRST, YOUNGEST_FIRST, RANDOM
destroy_after_deletion: Boolean
grace_period: Integer
reduce_desired_capacity: Boolean
The specification of a policy object of this policy type may look like following:
type: senlin.policy.deletion
version: 1.0
properties:
criteria: OLDEST_FIRST
destroy_after_deletion: True
grace_period: 120
reduce_desired_capacity: True
Senlin server comes with some built-in policy types. You can check the list of policy types using the following command:
$ openstack cluster policy type list
+--------------------------------+---------+----------------------------+
| name | version | support_status |
+--------------------------------+---------+----------------------------+
| senlin.policy.affinity | 1.0 | SUPPORTED since 2016.10 |
| senlin.policy.batch | 1.0 | EXPERIMENTAL since 2017.02 |
| senlin.policy.deletion | 1.0 | SUPPORTED since 2016.04 |
| senlin.policy.health | 1.0 | EXPERIMENTAL since 2017.02 |
| senlin.policy.loadbalance | 1.0 | SUPPORTED since 2016.04 |
| senlin.policy.region_placement | 1.0 | EXPERIMENTAL since 2016.04 |
| | | SUPPORTED since 2016.10 |
| senlin.policy.zone_placement | 1.0 | EXPERIMENTAL since 2016.04 |
| | | SUPPORTED since 2016.10 |
+--------------------------------+---------+----------------------------+
The output is a list of policy types supported by the Senlin server.
Each Policy Type has a schema for its spec (i.e. specification) that describes the names and types of the properties that can be accepted. To show the schema of a specific policy type along with other properties, you can use the following command:
$ openstack cluster policy type show senlin.policy.deletion-1.0
support_status:
'1.0':
- since: '2016.04'
status: SUPPORTED
id: senlin.policy.deletion-1.0
location: null
name: senlin.policy.deletion
schema:
criteria:
constraints:
- constraint:
- OLDEST_FIRST
- OLDEST_PROFILE_FRIST
- YOUNGEST_FIRST
- RANDOM
type: AllowedValues
default: RANDOM
description: Criteria used in selecting candidates for deletion
required: false
type: String
updatable: false
destroy_after_deletion:
default: true
description: Whether a node should be completely destroyed after
deletion. Default to True
required: false
type: Boolean
updatable: false
grace_period:
default: 0
description: Number of seconds before real deletion happens.
required: false
type: Integer
updatable: false
reduce_desired_capacity:
default: false
description: Whether the desired capacity of the cluster should be
reduced along with the deletion. Default to False.
required: false
type: Boolean
updatable: false
Here, each property has the following attributes:
default
: the default value for a property when not explicitly specified;description
: a textual description of the use of a property;required
: whether the property must be specified. Such kind of a
property usually doesn’t have a default
value;type
: one of String
, Integer
, Boolean
, Map
or List
;updatable
: a boolean indicating whether a property is updatable.The default output from the policy-type-show command is in YAML
format. You can choose to show the spec schema in JSON format by specifying
the -f json
option as shown below:
$ openstack cluster policy type show -f json senlin.policy.deletion-1.0
For information on how to manage the relationship between a policy and a cluster, please refer to Cluster-Policy Bindings.
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.