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