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.