Services Module
services.services
TcEx Framework API Service module.
- class tcex.services.api_service.ApiService(tcex: object)[source]
- Bases: - CommonService- TcEx Framework API Service module. - property command_map: dict
- Return the command map for the current Service type. 
 - format_query_string(params: dict) str[source]
- Convert name/value array to a query string. - Parameters:
- params – The query params for the request. 
- Returns:
- The query params reformatted as a string. 
- Return type:
- str 
 
 - format_request_headers(headers: dict) dict[source]
- Convert name/value array to a headers dict. - Parameters:
- headers – The dict of key/value header data. 
- Returns:
- The restructured header data. 
- Return type:
- dict 
 
 - format_response_headers(headers: dict) dict[source]
- Convert name/value array to a query string. - Parameters:
- headers – The dict header data to be converted to key/value pairs. 
- Returns:
- The restructured header data. 
- Return type:
- dict 
 
 - process_run_service_command(message: dict)[source]
- Process the RunService command. - 1{ 2 "command": "RunService", 3 "apiToken": "abc123", 4 "bodyVariable": "request.body", 5 "headers": [ { key/value pairs } ], 6 "method": "GET", 7 "queryParams": [ { key/value pairs } ], 8 "requestKey": "123abc", 9 "userConfig": [{ 10 "name": "tlpExportSetting", 11 "value": "TLP:RED" 12 }], 13} - Parameters:
- message – The message payload from the server topic. 
 
 - process_run_service_response(*args, **kwargs)[source]
- Handle service event responses. - (‘200 OK’, [(‘content-type’, ‘application/json’), (‘content-length’, ‘103’)]) 
 - service_thread(name: str, target: Callable[bool], args: Optional[tuple] = None, kwargs: Optional[dict] = None, session_id: Optional[str] = None, trigger_id: Optional[int] = None)[source]
- If this is a run-service command, run it with the thread pool. - For everything else, use parent’s implementation. - Parameters:
- name – The name of the thread. 
- target – The method to call for the thread. 
- args – The args to pass to the target method. 
- kwargs – Additional args. 
- session_id – The current session id. 
- trigger_id – The current trigger id. 
 
 
 
TcEx Framework Service Common module
- class tcex.services.common_service.CommonService(tcex: object)[source]
- Bases: - object- TcEx Framework Service Common module - Shared service logic between the supported service types: * API Service * Custom Trigger Service * Webhook Trigger Service - add_metric(label: str, value: Union[int, str])[source]
- Add a metric. - Metrics are reported in heartbeat message. - Parameters:
- label – The metric label (e.g., hits) to add. 
- value – The value for the metric. 
 
 
 - property command_map: dict
- Return the command map for the current Service type. 
 - static create_session_id() str[source]
- Return a uuid4 session id. - Returns:
- A unique UUID string value. 
- Return type:
- str 
 
 - heartbeat_broker_check()[source]
- Send self check message to ensure communications with message broker. 
 - increment_metric(label: str, value: Optional[int] = 1)[source]
- Increment a metric if already exists. - Parameters:
- label – The metric label (e.g., hits) to increment. 
- value – The increment value. Defaults to 1. 
 
 
 - loop_forever(sleep: Optional[int] = 1) bool[source]
- Block and wait for shutdown. - Parameters:
- sleep – The amount of time to sleep between iterations. Defaults to 1. 
- Returns:
- Returns True until shutdown received. 
- Return type:
- Bool 
 
 - property metrics: dict
- Return current metrics. 
 - process_acknowledged_command(message: dict)[source]
- Process the Acknowledge command. - Parameters:
- message – The message payload from the server topic. 
 
 - process_broker_check(message: dict)[source]
- Implement parent method to log a broker check message. - 1{ 2 "command": "BrokerCheck", 3} - Parameters:
- message – The message payload from the server topic. 
 
 - process_heartbeat_command(message: dict)[source]
- Process the HeartBeat command. - 1{ 2 "command": "Heartbeat", 3 "metric": {}, 4 "memoryPercent": 0, 5 "cpuPercent": 0 6} - Parameters:
- message – The message payload from the server topic. 
 
 - process_invalid_command(message: dict)[source]
- Process all invalid commands. - Parameters:
- message – The message payload from the server topic. 
 
 - process_logging_change_command(message: dict)[source]
- Process the LoggingChange command. - 1{ 2 "command": "LoggingChange", 3 "level": "DEBUG" 4} - Parameters:
- message – The message payload from the server topic. 
 
 - process_shutdown_command(message: dict)[source]
- Implement parent method to process the shutdown command. - 1{ 2 "command": "Shutdown", 3 "reason": "Service disabled by user." 4} - Parameters:
- message – The message payload from the server topic. 
 
 - property ready: bool
- Return ready boolean. 
 - service_thread(name: str, target: Callable[bool], args: Optional[tuple] = None, kwargs: Optional[dict] = None, session_id: Optional[str] = None, trigger_id: Optional[int] = None)[source]
- Start a message thread. - Parameters:
- name – The name of the thread. 
- target – The method to call for the thread. 
- args – The args to pass to the target method. 
- kwargs – Additional args. 
- session_id – The current session id. 
- trigger_id – The current trigger id. 
 
 
 - property session_id: Optional[str]
- Return the current session_id. 
 - property thread_name: str
- Return a uuid4 session id. 
 - property trigger_id: Optional[int]
- Return the current trigger_id. 
 
TcEx Framework Service Trigger Common module.
- class tcex.services.common_service_trigger.CommonServiceTrigger(tcex: object)[source]
- Bases: - CommonService- TcEx Framework Service Trigger Common module. - Shared service logic between the supported service types: * Custom Trigger Service * Webhook Trigger Service - _tcex_testing(session_id: str, trigger_id: int)[source]
- Write data required for testing framework to Redis. - Parameters:
- session_id – The context/session id value for the current operation. 
- trigger_id – The trigger ID for the current playbook. 
 
 
 - _tcex_testing_fired_events(session_id: str, fired: bool)[source]
- Write fired event data to KV Store to be used in test validation. - Parameters:
- session_id – The context/session id value for the current operation. 
- fired – The value to increment the count by. 
 
 
 - property command_map: dict
- Return the command map for the current Service type. 
 - create_config(trigger_id: int, message: str, status: bool)[source]
- Add config item to service config object. - Parameters:
- trigger_id – The trigger ID for the current config. 
- message – A simple message for the action. 
- status – The passed/fail status for the App handling of config. 
- logfile – The CreateConfig logfile to return in response ack. 
 
 
 - delete_config(trigger_id: int, message: str, status: str)[source]
- Delete config item from config object. - Parameters:
- trigger_id – The trigger ID for the current config. 
- message – A simple message for the action. 
- status – The passed/fail status for the App handling of config. 
 
 
 - fire_event(callback: Callable[bool], **kwargs)[source]
- Trigger a FireEvent command. - Parameters:
- callback – The trigger method in the App to call. 
- trigger_ids – A list of trigger ids to trigger. 
 
 
 - fire_event_publish(trigger_id: int, session_id: str, request_key: Optional[str] = None)[source]
- Send FireEvent command. - Parameters:
- trigger_id – The ID of the trigger. 
- session_id – The generated session for this fired event. 
- request_key – The request key for this response. 
 
 
 - fire_event_trigger(callback: Callable[bool], playbook: object, session_id: str, trigger_id: int, config: dict, **kwargs: str)[source]
- Fire event for trigger. - Parameters:
- callback – The App callback method for firing an event. 
- playbook – A configure playbook instance for using to interact with KvStore. 
- session_id – The current session Id. 
- trigger_id – The current trigger Id. 
- config – A dict containing the configuration information. 
 
 
 - log_config(trigger_id: str, config: dict)[source]
- Log the config while hiding encrypted values. - Parameters:
- trigger_id – The current trigger Id. 
- config – The configuration to be logged. 
 
 
 - process_create_config_command(message: dict)[source]
- Process the CreateConfig command. - 1{ 2 "appId": 387, 3 "command": "CreateConfig", 4 "triggerId": 1, 5 "config": { 6 "password": "test-pass", 7 "username": "test-user", 8 "cc_action": "pass", 9 "tc_playbook_out_variables": "#Trigger:1:testing.body!String" 10 }, 11 "apiToken": "SVC:8:QQuyIp:1596817138182:387:+9vBOAT8Y56caHRcjLa4IwAqABoatsYOU ... ", 12 "expireSeconds": 1596817138 13} - Parameters:
- message – The message payload from the server topic. 
 
 - process_delete_config_command(message: dict)[source]
- Process the DeleteConfig command. - 1{ 2 "appId": 387, 3 "command": "DeleteConfig", 4 "triggerId": 1 5} - Parameters:
- message – The message payload from the server topic. 
 
 - property thread_trigger_id: Optional[str]
- Return the current thread trigger id. 
 - property trigger_logfile: str
- Return the logfile name based on date and thread name. 
 
TcEx Framework MQTT message broker module.
- class tcex.services.mqtt_message_broker.MqttMessageBroker(broker_host: str, broker_port: int, broker_timeout: int, broker_token: Optional[Sensitive] = None, broker_cacert: Optional[str] = None)[source]
- Bases: - object- TcEx Framework MQTT message broker module. - add_on_connect_callback(callback: callable, index: Optional[int] = None)[source]
- Add a callback for on_connect events. - Parameters:
- callback – A callback that matches signature of an on_connect event. 
- index – The index value to insert the callback into the list. 
 
 
 - add_on_disconnect_callback(callback: callable, index: Optional[int] = None)[source]
- Add a callback for on_disconnect events. - Parameters:
- callback – A callback that matches signature of an on_disconnect event. 
- index – The index value to insert the callback into the list. 
 
 
 - add_on_log_callback(callback: callable, index: Optional[int] = None)[source]
- Add a callback for on_log events. - Parameters:
- callback – A callback that matches signature of an on_log event. 
- index – The index value to insert the callback into the list. 
 
 
 - add_on_message_callback(callback: callable, index: Optional[int] = None, topics: Optional[List[str]] = None)[source]
- Add a callback for on_message events. - Parameters:
- callback – A callback that matches signature of an on_message event. 
- index – The index value to insert the callback into the list. 
- topics – A optional list of topics to call callback. If value is None then callback will always be called. 
 
 
 - add_on_publish_callback(callback: callable, index: Optional[int] = None)[source]
- Add a callback for on_publish events. - Parameters:
- callback – A callback that matches signature of an on_publish event. 
- index – The index value to insert the callback into the list. 
 
 
 - add_on_subscribe_callback(callback: callable, index: Optional[int] = None)[source]
- Add a callback for on_subscribe events. - Parameters:
- callback – A callback that matches signature of an on_subscribe event. 
- index – The index value to insert the callback into the list. 
 
 
 - add_on_unsubscribe_callback(callback: callable, index: Optional[int] = None)[source]
- Add a callback for on_unsubscribe events. - Parameters:
- callback – A callback that matches signature of an on_unsubscribe event. 
- index – The index value to insert the callback into the list. 
 
 
 - property client: object
- Return MQTT client. 
 
TcEx Framework Webhook Service Trigger module.
- class tcex.services.webhook_trigger_service.WebhookTriggerService(tcex: object)[source]
- Bases: - CommonServiceTrigger- TcEx Framework Webhook Service Trigger module. - callback_response_handler(callback_response: Any, message: dict)[source]
- Handle the different types of callback responses. - # Webhook App (default) - Dict - Playbook will not be launched and provided data
- will be used in the response to the client. 
 
- True - Playbook will be launched. 
- Else - Playbook will NOT be launched. 
 - # webhookResponseMarshall Feature App - Callable - Playbook will be launched and if marshall callback will be set to response. 
- True - Playbook will be launched. 
- Else - Playbook will NOT be launched. 
 - # webhookServiceEndpoint Feature App - For this feature the callback method must fire the event on it’s own. - Dict - Playbook will not be launched and provided data
- will be used in the response to the client. 
 
- Else - Response will be set to default of statusCode=200, body=None, and headers=[]. 
 - Parameters:
- callback_response – The response from the webhook callback method. 
- message – The message payload from the server topic. 
 
 
 - callback_response_marshall(callback_response: Any, message: dict)[source]
- Handle the different types of callback responses. - # webhookResponseMarshall Feature App - Callable - Playbook will be launched and if marshall callback will be set to response. 
- True - Playbook will be launched. 
- Else - Playbook will NOT be launched. 
 - Parameters:
- callback_response – The response from the webhook callback method. 
- message – The message payload from the server topic. 
 
 
 - callback_response_service_endpoint(callback_response: Any, message: dict)[source]
- Handle the different types of callback responses. - # webhookServiceEndpoint Feature App - For this feature the callback method must fire the event on it’s own. - Dict - Playbook will not be launched and provided data
- will be used in the response to the client. 
 
- Else - Response will be set to default of statusCode=200, body=None, and headers=[]. 
 - Parameters:
- callback_response – The response from the webhook callback method. 
- message – The message payload from the server topic. 
 
 
 - callback_response_webhook(callback_response: Any, message: dict)[source]
- Handle the different types of callback responses. - Dict - Playbook will not be launched and provided data
- will be used in the response to the client. 
 
- True - Playbook will be launched. 
- Else - Playbook will NOT be launched. 
 - Parameters:
- callback_response – The response from the webhook callback method. 
- message – The message payload from the server topic. 
 
 
 - property command_map: dict
- Return the command map for the current Service type. 
 - process_webhook_event_command(message: dict)[source]
- Process the WebhookEvent command. - 1{ 2 "appId": 387, 3 "command": "WebhookEvent", 4 "triggerId": 1, 5 "requestKey": "cd8c7a3a-7968-4b97-80c9-68b83a8ef1a1", 6 "method": "GET", 7 "headers": [ 8 { 9 "name": "Accept-Encoding", 10 "value": "gzip, deflate, br" 11 } 12 ], 13 "queryParams": [ 14 { 15 "name": "registration", 16 "value": "true" 17 } 18 ] 19} - Parameters:
- message – The message payload from the server topic. 
 
 - process_webhook_marshall_event_command(message: dict)[source]
- Process the WebhookMarshallEvent command. - 1{ 2 "appId": 95, 3 "bodyVariable": "request.body", 4 "command": "WebhookMarshallEvent", 5 "headers": [ 6 { 7 "name": "Accept", 8 "value": "*/*" 9 } 10 ], 11 "requestKey": "c29927c8-b94d-4116-a397-e6eb7002f41c", 12 "statusCode": 200, 13 "triggerId": 1234 14} - Parameters:
- message – The message payload from the server topic. 
 
 - publish_webhook_event_acknowledge(message: dict)[source]
- Publish the WebhookEventResponse message. - Parameters:
- message – The message from the broker. 
 
 - publish_webhook_event_response(message: dict, callback_response: dict)[source]
- Publish the WebhookEventResponse message. - Parameters:
- message – The message from the broker. 
- callback_response – The data from the callback method. 
- playbook – Configure instance of Playbook used to write body. 
 
 
 - publish_webhook_marshall_event_acknowledge(message: dict)[source]
- Publish the WebhookEventResponse message. - 1{ 2 "command": "Acknowledged", 3 "requestKey": "cd8c7a3a-7968-4b97-80c9-68b83a8ef1a1", 4 "triggerId": 1, 5 "type": "WebhookMarshallResponse" 6} - Parameters:
- message – The message from the broker.