policy/frameworks/cluster/controller/request.zeek

ClusterController::Request

This module implements a request state abstraction that both cluster controller and agent use to tie responses to received request events and be able to time-out such requests.

Namespace

ClusterController::Request

Imports

policy/frameworks/cluster/controller/config.zeek, policy/frameworks/cluster/controller/types.zeek

Summary

State Variables

ClusterController::Request::null_req: ClusterController::Request::Request

A token request that serves as a null/nonexistant request.

Events

ClusterController::Request::request_expired: event

This event fires when a request times out (as per the ClusterController::request_timeout) before it has been finished via ClusterController::Request::finish().

Functions

ClusterController::Request::create: function

This function establishes request state.

ClusterController::Request::finish: function

This function marks a request as complete and causes Zeek to release its internal state.

ClusterController::Request::is_null: function

This function is a helper predicate to indicate whether a given request is null.

ClusterController::Request::lookup: function

This function looks up the request for a given request ID and returns it.

ClusterController::Request::to_string: function

For troubleshooting, this function renders a request record to a string.

Detailed Interface

State Variables

ClusterController::Request::null_req
Type

ClusterController::Request::Request

Default
{
   id=""
   parent_id=<uninitialized>
   results=[]
   finished=T
   set_configuration_state=<uninitialized>
   supervisor_state=<uninitialized>
   test_state=<uninitialized>
}

A token request that serves as a null/nonexistant request.

Types

ClusterController::Request::Request
Type

record

id: string

Each request has a hopfully unique ID provided by the requester.

parent_id: string &optional

For requests that result based upon another request (such as when the controller sends requests to agents based on a request it received by the client), this specifies that original, “parent” request.

results: ClusterController::Types::ResultVec &default = [] &optional

finished: bool &default = F &optional

set_configuration_state: ClusterController::Request::SetConfigurationState &optional

supervisor_state: ClusterController::Request::SupervisorState &optional

test_state: ClusterController::Request::TestState &optional

Request records track each request’s state.

ClusterController::Request::SetConfigurationState
Type

record

config: ClusterController::Types::Configuration

requests: vector of ClusterController::Request::Request &default = [] &optional

ClusterController::Request::SupervisorState
Type

record

node: string

ClusterController::Request::TestState
Type

record

Events

ClusterController::Request::request_expired
Type

event (req: ClusterController::Request::Request)

This event fires when a request times out (as per the ClusterController::request_timeout) before it has been finished via ClusterController::Request::finish().

Req

the request state that is expiring.

Functions

ClusterController::Request::create
Type

function (reqid: string &default = 9Ye7pQPhuMe &optional) : ClusterController::Request::Request

This function establishes request state.

Reqid

the identifier to use for the request.

ClusterController::Request::finish
Type

function (reqid: string) : bool

This function marks a request as complete and causes Zeek to release its internal state. When the request does not exist, this does nothing.

Reqid

the ID of the request state to releaase.

ClusterController::Request::is_null
Type

function (request: ClusterController::Request::Request) : bool

This function is a helper predicate to indicate whether a given request is null.

Request

a Request record to check.

Returns

T if the given request matches the null_req instance, F otherwise.

ClusterController::Request::lookup
Type

function (reqid: string) : ClusterController::Request::Request

This function looks up the request for a given request ID and returns it. When no such request exists, returns ClusterController::Request::null_req.

Reqid

the ID of the request state to retrieve.

ClusterController::Request::to_string
Type

function (request: ClusterController::Request::Request) : string

For troubleshooting, this function renders a request record to a string.

Request

the request to render.