kepconfig.datalogger.triggers
triggers exposes an API to allow modifications (add, delete, modify) to
trigger objects in a Datalogger log group within the Kepware Configuration API
1# ------------------------------------------------------------------------- 2# Copyright (c) PTC Inc. and/or all its affiliates. All rights reserved. 3# See License.txt in the project root for 4# license information. 5# -------------------------------------------------------------------------- 6 7r"""`triggers` exposes an API to allow modifications (add, delete, modify) to 8trigger objects in a Datalogger log group within the Kepware Configuration API 9""" 10 11from typing import Union 12from . import log_group as Log_Group 13from ..error import KepError, KepHTTPError 14from ..connection import server 15from ..utils import _url_parse_object 16 17TRIGGERS_ROOT = '/triggers' 18 19def _create_url(trigger = None): 20 '''Creates url object for the "trigger" branch of Kepware's project tree. Used 21 to build a part of Kepware Configuration API URL structure 22 23 Returns the trigger specific url when a value is passed as the trigger name. 24 ''' 25 26 if trigger == None: 27 return '{}'.format(TRIGGERS_ROOT) 28 else: 29 return '{}/{}'.format(TRIGGERS_ROOT, _url_parse_object(trigger)) 30 31 32def add_trigger(server: server, log_group: str, DATA: Union[dict, list]) -> Union[bool, list]: 33 '''Add a `"trigger"` or multiple `"trigger"` objects to a log group in Kepware's Datalogger. It can 34 be used to pass a list of triggers to be added all at once. 35 36 :param server: instance of the `server` class 37 :param log_group: name of log group for the trigger items 38 :param DATA: Dict or a list of the trigger items to add through Kepware Configuration API 39 40 :return: True - If a "HTTP 201 - Created" is received from Kepware server 41 :return: If a "HTTP 207 - Multi-Status" is received from Kepware with a list of dict error responses for all 42 triggers added that failed. 43 44 :raises KepHTTPError: If urllib provides an HTTPError 45 :raises KepURLError: If urllib provides an URLError 46 ''' 47 48 r = server._config_add(server.url + Log_Group._create_url(log_group) + _create_url(), DATA) 49 if r.code == 201: return True 50 elif r.code == 207: 51 errors = [] 52 for item in r.payload: 53 if item['code'] != 201: 54 errors.append(item) 55 return errors 56 else: raise KepHTTPError(r.url, r.code, r.msg, r.hdrs, r.payload) 57 58def del_trigger(server: server, log_group: str, trigger: str) -> bool: 59 '''Delete a `"trigger"` object of a log group in Kepware's Datalogger. 60 61 :param server: instance of the `server` class 62 :param log_group: name of log group for the trigger items 63 :param trigger: name of trigger to delete 64 65 :return: True - If a "HTTP 200 - OK" is received from Kepware server 66 67 :raises KepHTTPError: If urllib provides an HTTPError 68 :raises KepURLError: If urllib provides an URLError 69 ''' 70 r = server._config_del(server.url + Log_Group._create_url(log_group) + _create_url(trigger)) 71 if r.code == 200: return True 72 else: raise KepHTTPError(r.url, r.code, r.msg, r.hdrs, r.payload) 73 74def modify_trigger(server: server, log_group: str, DATA: dict, *, trigger: str = None, force: bool = False) -> bool: 75 '''Modify a `"trigger"` object and it's properties in Kepware. If a `"trigger"` is not provided as an input, 76 you need to identify the trigger in the *'common.ALLTYPES_NAME'* property field in the `"DATA"`. It will 77 assume that is the trigger that is to be modified. 78 79 :param server: instance of the `server` class 80 :param log_group: name of log group for the trigger items 81 :param DATA: Dict of the trigger properties to be modified. 82 :param trigger: *(optional)* name of trigger to modify in the log group. Only needed if not existing in `"DATA"` 83 :param force: *(optional)* if True, will force the configuration update to the Kepware server 84 85 :return: True - If a "HTTP 200 - OK" is received from Kepware server 86 87 :raises KepHTTPError: If urllib provides an HTTPError 88 :raises KepURLError: If urllib provides an URLError 89 ''' 90 91 trigger_data = server._force_update_check(force, DATA) 92 93 if trigger == None: 94 try: 95 r = server._config_update(server.url + Log_Group._create_url(log_group) + _create_url(trigger_data['common.ALLTYPES_NAME']), trigger_data) 96 if r.code == 200: return True 97 else: raise KepHTTPError(r.url, r.code, r.msg, r.hdrs, r.payload) 98 except KeyError as err: 99 err_msg = 'Error: No trigger identified in DATA | Key Error: {}'.format(err) 100 raise KepError(err_msg) 101 # except: 102 # return 'Error: Error with {}'.format(inspect.currentframe().f_code.co_name) 103 else: 104 r = server._config_update(server.url + Log_Group._create_url(log_group) + _create_url(trigger), trigger_data) 105 if r.code == 200: return True 106 else: raise KepHTTPError(r.url, r.code, r.msg, r.hdrs, r.payload) 107 108def get_trigger(server, log_group, trigger) -> dict: 109 '''Returns the properties of the `"trigger"` object. 110 111 :param server: instance of the `server` class 112 :param log_group: name of log group for the trigger items 113 :param trigger: name of trigger to retrieve 114 115 :return: Dict of properties for the trigger requested 116 117 :raises KepHTTPError: If urllib provides an HTTPError 118 :raises KepURLError: If urllib provides an URLError 119 ''' 120 r = server._config_get(server.url + Log_Group._create_url(log_group) + _create_url(trigger)) 121 return r.payload 122 123def get_all_triggers(server: server, log_group: str, *, options: dict = None) -> list: 124 '''Returns the properties of all `"trigger"` objects for a log group. 125 126 :param server: instance of the `server` class 127 :param log_group: name of log group for the trigger items 128 129 :return: Dict of properties for the trigger requested 130 131 :raises KepHTTPError: If urllib provides an HTTPError 132 :raises KepURLError: If urllib provides an URLError 133 :param options: *(optional)* Dict of parameters to filter, sort or pagenate the list of triggers. Options are 'filter', 134 'sortOrder', 'sortProperty', 'pageNumber', and 'pageSize'. Only used when exchange_name is not defined. 135 136 :return: list of properties for all triggers in the log group requested 137 138 :raises KepHTTPError: If urllib provides an HTTPError 139 :raises KepURLError: If urllib provides an URLError 140 ''' 141 r = server._config_get(f'{server.url}{Log_Group._create_url(log_group)}{_create_url()}', params= options) 142 return r.payload
33def add_trigger(server: server, log_group: str, DATA: Union[dict, list]) -> Union[bool, list]: 34 '''Add a `"trigger"` or multiple `"trigger"` objects to a log group in Kepware's Datalogger. It can 35 be used to pass a list of triggers to be added all at once. 36 37 :param server: instance of the `server` class 38 :param log_group: name of log group for the trigger items 39 :param DATA: Dict or a list of the trigger items to add through Kepware Configuration API 40 41 :return: True - If a "HTTP 201 - Created" is received from Kepware server 42 :return: If a "HTTP 207 - Multi-Status" is received from Kepware with a list of dict error responses for all 43 triggers added that failed. 44 45 :raises KepHTTPError: If urllib provides an HTTPError 46 :raises KepURLError: If urllib provides an URLError 47 ''' 48 49 r = server._config_add(server.url + Log_Group._create_url(log_group) + _create_url(), DATA) 50 if r.code == 201: return True 51 elif r.code == 207: 52 errors = [] 53 for item in r.payload: 54 if item['code'] != 201: 55 errors.append(item) 56 return errors 57 else: raise KepHTTPError(r.url, r.code, r.msg, r.hdrs, r.payload)
Add a "trigger" or multiple "trigger" objects to a log group in Kepware's Datalogger. It can
be used to pass a list of triggers to be added all at once.
Parameters
- server: instance of the
serverclass - log_group: name of log group for the trigger items
- DATA: Dict or a list of the trigger items to add through Kepware Configuration API
Returns
True - If a "HTTP 201 - Created" is received from Kepware server
Returns
If a "HTTP 207 - Multi-Status" is received from Kepware with a list of dict error responses for all triggers added that failed.
Raises
- KepHTTPError: If urllib provides an HTTPError
- KepURLError: If urllib provides an URLError
59def del_trigger(server: server, log_group: str, trigger: str) -> bool: 60 '''Delete a `"trigger"` object of a log group in Kepware's Datalogger. 61 62 :param server: instance of the `server` class 63 :param log_group: name of log group for the trigger items 64 :param trigger: name of trigger to delete 65 66 :return: True - If a "HTTP 200 - OK" is received from Kepware server 67 68 :raises KepHTTPError: If urllib provides an HTTPError 69 :raises KepURLError: If urllib provides an URLError 70 ''' 71 r = server._config_del(server.url + Log_Group._create_url(log_group) + _create_url(trigger)) 72 if r.code == 200: return True 73 else: raise KepHTTPError(r.url, r.code, r.msg, r.hdrs, r.payload)
Delete a "trigger" object of a log group in Kepware's Datalogger.
Parameters
- server: instance of the
serverclass - log_group: name of log group for the trigger items
- trigger: name of trigger to delete
Returns
True - If a "HTTP 200 - OK" is received from Kepware server
Raises
- KepHTTPError: If urllib provides an HTTPError
- KepURLError: If urllib provides an URLError
75def modify_trigger(server: server, log_group: str, DATA: dict, *, trigger: str = None, force: bool = False) -> bool: 76 '''Modify a `"trigger"` object and it's properties in Kepware. If a `"trigger"` is not provided as an input, 77 you need to identify the trigger in the *'common.ALLTYPES_NAME'* property field in the `"DATA"`. It will 78 assume that is the trigger that is to be modified. 79 80 :param server: instance of the `server` class 81 :param log_group: name of log group for the trigger items 82 :param DATA: Dict of the trigger properties to be modified. 83 :param trigger: *(optional)* name of trigger to modify in the log group. Only needed if not existing in `"DATA"` 84 :param force: *(optional)* if True, will force the configuration update to the Kepware server 85 86 :return: True - If a "HTTP 200 - OK" is received from Kepware server 87 88 :raises KepHTTPError: If urllib provides an HTTPError 89 :raises KepURLError: If urllib provides an URLError 90 ''' 91 92 trigger_data = server._force_update_check(force, DATA) 93 94 if trigger == None: 95 try: 96 r = server._config_update(server.url + Log_Group._create_url(log_group) + _create_url(trigger_data['common.ALLTYPES_NAME']), trigger_data) 97 if r.code == 200: return True 98 else: raise KepHTTPError(r.url, r.code, r.msg, r.hdrs, r.payload) 99 except KeyError as err: 100 err_msg = 'Error: No trigger identified in DATA | Key Error: {}'.format(err) 101 raise KepError(err_msg) 102 # except: 103 # return 'Error: Error with {}'.format(inspect.currentframe().f_code.co_name) 104 else: 105 r = server._config_update(server.url + Log_Group._create_url(log_group) + _create_url(trigger), trigger_data) 106 if r.code == 200: return True 107 else: raise KepHTTPError(r.url, r.code, r.msg, r.hdrs, r.payload)
Modify a "trigger" object and it's properties in Kepware. If a "trigger" is not provided as an input,
you need to identify the trigger in the 'common.ALLTYPES_NAME' property field in the "DATA". It will
assume that is the trigger that is to be modified.
Parameters
- server: instance of the
serverclass - log_group: name of log group for the trigger items
- DATA: Dict of the trigger properties to be modified.
- trigger: (optional) name of trigger to modify in the log group. Only needed if not existing in
"DATA" - force: (optional) if True, will force the configuration update to the Kepware server
Returns
True - If a "HTTP 200 - OK" is received from Kepware server
Raises
- KepHTTPError: If urllib provides an HTTPError
- KepURLError: If urllib provides an URLError
109def get_trigger(server, log_group, trigger) -> dict: 110 '''Returns the properties of the `"trigger"` object. 111 112 :param server: instance of the `server` class 113 :param log_group: name of log group for the trigger items 114 :param trigger: name of trigger to retrieve 115 116 :return: Dict of properties for the trigger requested 117 118 :raises KepHTTPError: If urllib provides an HTTPError 119 :raises KepURLError: If urllib provides an URLError 120 ''' 121 r = server._config_get(server.url + Log_Group._create_url(log_group) + _create_url(trigger)) 122 return r.payload
Returns the properties of the "trigger" object.
Parameters
- server: instance of the
serverclass - log_group: name of log group for the trigger items
- trigger: name of trigger to retrieve
Returns
Dict of properties for the trigger requested
Raises
- KepHTTPError: If urllib provides an HTTPError
- KepURLError: If urllib provides an URLError
124def get_all_triggers(server: server, log_group: str, *, options: dict = None) -> list: 125 '''Returns the properties of all `"trigger"` objects for a log group. 126 127 :param server: instance of the `server` class 128 :param log_group: name of log group for the trigger items 129 130 :return: Dict of properties for the trigger requested 131 132 :raises KepHTTPError: If urllib provides an HTTPError 133 :raises KepURLError: If urllib provides an URLError 134 :param options: *(optional)* Dict of parameters to filter, sort or pagenate the list of triggers. Options are 'filter', 135 'sortOrder', 'sortProperty', 'pageNumber', and 'pageSize'. Only used when exchange_name is not defined. 136 137 :return: list of properties for all triggers in the log group requested 138 139 :raises KepHTTPError: If urllib provides an HTTPError 140 :raises KepURLError: If urllib provides an URLError 141 ''' 142 r = server._config_get(f'{server.url}{Log_Group._create_url(log_group)}{_create_url()}', params= options) 143 return r.payload
Returns the properties of all "trigger" objects for a log group.
Parameters
- server: instance of the
serverclass - log_group: name of log group for the trigger items
Returns
Dict of properties for the trigger requested
Raises
- KepHTTPError: If urllib provides an HTTPError
- KepURLError: If urllib provides an URLError
- options: (optional) Dict of parameters to filter, sort or pagenate the list of triggers. Options are 'filter', 'sortOrder', 'sortProperty', 'pageNumber', and 'pageSize'. Only used when exchange_name is not defined.
Returns
list of properties for all triggers in the log group requested
- KepHTTPError: If urllib provides an HTTPError
- KepURLError: If urllib provides an URLError