Implement concrete actuators
----------------------------

Concrete actuators are server applications that translate an
``Actuator`` profile into commands and configurations on security
functions. The same ``Actuator`` profile may be implemented by multiple
concrete actuators, depending on the technology of the security function
(e.g., an SLPF actuator may be used to control ``iptables``,
``pfsense``, etc.).

Implementing an ``Actuator`` is really straightforward. There is only
one requirement for its interface: - an ``Actuator`` must implement a
``run(cmd)`` method that processes a command and returns the response.

::

   class Actuator:
     
     def run(self, cmd):
        ...
       return response

Internally, an ``Actuator`` is expected to have the configuration to
locate the device it is controlling and the code to control it. It is
also expected to perform command validation, to detect any action or
option that it does not support (which may be more restrictive than the
generic profile validation).

To make the ``Actuator`` automatically available to ``Consumer``s, use
the ``@actuator_implementation`` decorator, and assign it a name.
Also remember to import the actuator class in the __init__.py file
of the actuators folder.
