Parameters¶
The Parameters
topic is more broad than just a single class. Therefore, in this section,
only the Parameters
base class will be discussed. There are concrete classes that inherit
from this base class and they are discussed in the sections listed below.
The Parameters base class¶
Each module has a class named Parameters
. This class is a base class
for the more specialized ApiParameters
and ModuleParameters
classes. The purpose of
this base class is to provide functionality and data that is used in both of the specialized
classes.
The Parameters
classes implementation is a little boiler plate mixed with several module-specific changes.
This means that for this tutorial (and for any custom modules that you
may write in the future) it is almost certain that you will be changing parts of it.
For the tutorial’s module, please refer to this link for the correct source code for the
module’s Parameters
class. Replicate this implementation in the tutorial’s module.
The Parameters class boilerplate¶
The implementation of the Parameters
class contains some boilerplate code. Let’s look
at that boilerplate and what it means.
The top-of-class variables¶
Each Parameters
class defines several class variables.
Variable | Purpose |
---|---|
api_map | This is a dictionary (use { ... } form) that maps API Parameter
attribute names to property names used internally by the module.
This functions as a quick way for the module developer to define a
series of property variables that require no form of manipulation
when they are received from the API. There are many resource attributes
that play well with the user of the API, but they vary from API to API. |
api_attributes | This is a list of attributes for the resource being modified as they
are named in the API. This is used when generating the return value
that the api_params method returns. Nearly every module should have
this class parameter defined. The value of this list will vary with the
module. name and partition attributes are not defined here. |
updatables | This is a list of attributes that should be updatable. The list
contains internal attribute names; i.e., the property values
that the developer uses within the module. This list is also used by
the Difference class to determine which attributes should be
compared during an update. |
returnables | This is a list of properties that you want to return to the user after
the module finishes running. The names in this list are sent to the
ReportableChanges class, as well as received back from that class
(after appropriate formatting). |
The top-of-class variables should always be defined (even if they are empty) because they are used through the module.
Common properties¶
This module’s Parameters
class has several @property
definitions included in it. These
are not a requirement for all modules. Instead, putting the properties here allows those
properties (and their return values) to be used in both the ApiParameters
and
ModuleParameters
automatically.
Note
Be sure to only put properties here that are 100% common to the API and Module parameters classes. Even a slight deviation in return values among code in the different parameters classes can cause issues.
Some of the common properties that this module has (but that others may not) are:
name
description
policy
Conclusion¶
The general Parameters
should only be used for the things that are truly generic between
the ApiParameters
and ModuleParameters
classes. The most common of these are the
top-of-class variables. Links to deeper dives on the concrete classes are listed at the top
of this topic. Use them as an introduction to those classes and their purpose in the module.