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 |