Files
neutron-lib/doc/source/contributor/api_attributes.rst
Dongcan Ye dc8c3f7587 docs: Add primary_key attribute key
While reading the contributor guide, it seems lack of description
of primary_key. [1]

[1] https://github.com/openstack/neutron-lib/blob/master/neutron_lib/api/definitions/base.py

TrivialFix

Change-Id: I3896644ec1cd395050834416ab74f00620acbcbe
2017-11-02 19:00:34 +08:00

3.5 KiB

API Attributes

Neutron's resource attributes are defined in dictionaries in api/definitions.

The map containing all installed resources (for core and active extensions) is in api/attributes.py.

Attribute map structure

Example attribute definitions for dns_name:

'dns_name': {
    'allow_post': True,
    'allow_put': True,
    'default': '',
    'convert_to': convert_to_lowercase,
    'validate': {'type:dns_name': FQDN_MAX_LEN},
    'is_visible': True
},

The validate item specifies rules for validating the attribute.

The convert_to item specifies rules for converting the attribute.

Example attribute definitions for gateway_ip:

'gateway_ip': {
    'allow_post': True,
    'allow_put': True,
    'default': constants.ATTR_NOT_SPECIFIED,
    'validate': {'type:ip_address_or_none': None},
    'is_visible': True
}

Note: a default of ATTR_NOT_SPECIFIED indicates that an attribute is not required, but will be generated by the plugin if it is not specified. Particularly, a value of ATTR_NOT_SPECIFIED is different from an attribute that has been specified with a value of None. For example, if gateway_ip is omitted in a request to create a subnet, the plugin will receive ATTR_NOT_SPECIFIED and the default gateway IP will be generated. However, if gateway_ip is specified as None, this means that the subnet does not have a gateway IP.

The following are the defined keys for attribute maps:

default default value of the attribute (if missing, the attribute becomes mandatory)
allow_post the attribute can be used on POST requests
allow_put the attribute can be used on PUT requests
validate specifies rules for validating data in the attribute
convert_to transformation to apply to the value before it is returned
convert_list_to if the value is a list, apply this transformation to the value before it is returned
is_visible the attribute is returned in GET responses
required_by_policy the attribute is required by the policy engine and should therefore be filled by the API layer even if not present in request body
enforce_policy the attribute is actively part of the policy enforcing mechanism, ie: there might be rules which refer to this attribute
primary_key Mark the attribute as a unique key.