kepconfig.datalogger.log_group
log_group exposes an API to allow modifications (add, delete, modify) to
log group objects in DataLogger 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_group` exposes an API to allow modifications (add, delete, modify) to 8log group objects in DataLogger within the Kepware Configuration API 9""" 10from typing import Union 11from ..connection import KepServiceResponse, server 12from ..error import KepError, KepHTTPError 13from ..utils import _url_parse_object 14 15ENABLE_PROPERTY = 'datalogger.LOG_GROUP_ENABLED' 16LOG_GROUP_ROOT = '/project/_datalogger/log_groups' 17SERVICES_ROOT = '/services' 18def _create_url(log_group = None): 19 '''Creates url object for the "log_group" branch of Kepware's project tree. Used 20 to build a part of Kepware Configuration API URL structure 21 22 Returns the agent specific url when a value is passed as the agent name. 23 ''' 24 25 if log_group == None: 26 return '{}'.format(LOG_GROUP_ROOT) 27 else: 28 return '{}/{}'.format(LOG_GROUP_ROOT, _url_parse_object(log_group)) 29 30 31def add_log_group(server: server, DATA: Union[dict, list]) -> Union[bool, list]: 32 '''Add a `"log group"` or multiple `"log groups"` objects to Kepware's DataLogger. It can be used 33 to pass a list of log groups to be added all at once. 34 35 :param server: instance of the `server` class 36 :param DATA: Dict or a list of the log groups to add through Kepware Configuration API 37 38 :return: True - If a "HTTP 201 - Created" is received from Kepware server 39 :return: If a "HTTP 207 - Multi-Status" is received from Kepware with a list of dict error responses for all 40 log groups added that failed. 41 42 :raises KepHTTPError: If urllib provides an HTTPError 43 :raises KepURLError: If urllib provides an URLError 44 ''' 45 46 r = server._config_add(server.url + _create_url(), DATA) 47 if r.code == 201: return True 48 elif r.code == 207: 49 errors = [] 50 for item in r.payload: 51 if item['code'] != 201: 52 errors.append(item) 53 return errors 54 else: raise KepHTTPError(r.url, r.code, r.msg, r.hdrs, r.payload) 55 56def del_log_group(server: server, log_group: str) -> bool: 57 '''Delete a `"log group"` object in Kepware's Datalogger. 58 59 :param server: instance of the `server` class 60 :param log_group: name of log group to delete 61 62 :return: True - If a "HTTP 200 - OK" is received from Kepware server 63 64 :raises KepHTTPError: If urllib provides an HTTPError 65 :raises KepURLError: If urllib provides an URLError 66 ''' 67 r = server._config_del(server.url + _create_url(log_group)) 68 if r.code == 200: return True 69 else: raise KepHTTPError(r.url, r.code, r.msg, r.hdrs, r.payload) 70 71def modify_log_group(server: server, DATA: dict, *, log_group: str = None, force: bool = False) -> bool: 72 '''Modify a `"log group"` object and it's properties in Kepware's Datalogger. If a `"log group"` is not provided as an input, 73 you need to identify the log group in the *'common.ALLTYPES_NAME'* property field in the `"DATA"`. It will 74 assume that is the log group that is to be modified. 75 76 :param server: instance of the `server` class 77 :param DATA: Dict of the log group properties to be modified. 78 :param log_group: *(optional)* name of log group to modify. Only needed if not existing in `"DATA"` 79 :param force: *(optional)* if True, will force the configuration update to the Kepware server 80 81 :return: True - If a "HTTP 200 - OK" is received from Kepware server 82 83 :raises KepHTTPError: If urllib provides an HTTPError 84 :raises KepURLError: If urllib provides an URLError 85 ''' 86 87 log_group_data = server._force_update_check(force, DATA) 88 89 if log_group == None: 90 try: 91 r = server._config_update(server.url + _create_url(log_group_data['common.ALLTYPES_NAME']), log_group_data) 92 if r.code == 200: return True 93 else: raise KepHTTPError(r.url, r.code, r.msg, r.hdrs, r.payload) 94 except KeyError as err: 95 err_msg = 'Error: No log group identified in DATA | Key Error: {}'.format(err) 96 raise KepError(err_msg) 97 else: 98 r = server._config_update(server.url + _create_url(log_group), log_group_data) 99 if r.code == 200: return True 100 else: raise KepHTTPError(r.url, r.code, r.msg, r.hdrs, r.payload) 101 102def get_log_group(server: server, log_group: str) -> dict: 103 '''Returns the properties of the `"log group"` object. 104 105 :param server: instance of the `server` class 106 :param log_group: name of log group to retrieve 107 108 :return: Dict of properties for the log group requested 109 110 :raises KepHTTPError: If urllib provides an HTTPError 111 :raises KepURLError: If urllib provides an URLError 112 ''' 113 r = server._config_get(server.url + _create_url(log_group)) 114 return r.payload 115 116def get_all_log_groups(server: server, *, options: dict = None) -> list: 117 '''Returns the properties of all log group objects for Kepware's Datalogger. Returned object is JSON list. 118 119 :param server: instance of the `server` class 120 :param options: *(optional)* Dict of parameters to filter, sort or pagenate the list of log groups. Options are 'filter', 121 'sortOrder', 'sortProperty', 'pageNumber', and 'pageSize'. Only used when exchange_name is not defined. 122 123 :return: list of properties for all log groups requested 124 125 :raises KepHTTPError: If urllib provides an HTTPError 126 :raises KepURLError: If urllib provides an URLError 127 ''' 128 r = server._config_get(f'{server.url}{_create_url()}', params= options) 129 return r.payload 130 131def enable_log_group(server: server, log_group: str) -> bool: 132 '''Enable the `"log group"`. 133 134 :param server: instance of the `server` class 135 :param log_group: name of log group to enable 136 137 :return: True - If a "HTTP 200 - OK" is received from Kepware server 138 139 :raises KepHTTPError: If urllib provides an HTTPError 140 :raises KepURLError: If urllib provides an URLError 141 ''' 142 DATA = {ENABLE_PROPERTY: True} 143 return modify_log_group(server, DATA, log_group= log_group) 144 145def disable_log_group(server: server, log_group: str) -> bool: 146 '''Disable the log group. Returned object is JSON. 147 148 :param server: instance of the `server` class 149 :param log_group: name of log group to enable 150 151 :return: True - If a "HTTP 200 - OK" is received from Kepware server 152 153 :raises KepHTTPError: If urllib provides an HTTPError 154 :raises KepURLError: If urllib provides an URLError 155 ''' 156 DATA = {ENABLE_PROPERTY: False} 157 return modify_log_group(server, DATA, log_group= log_group) 158 159def reset_column_mapping_service(server: server, log_group: str, job_ttl: int = None) -> KepServiceResponse: 160 '''Executes a ResetColumnMapping serivce call to the log group 161 162 :param server: instance of the `server` class 163 :param log_group: name of log group to enable 164 :param job_ttl: *(optional)* Determines the number of seconds a job instance will exist following completion. 165 166 :return: `KepServiceResponse` instance with job information 167 168 :raises KepHTTPError: If urllib provides an HTTPError (If not HTTP code 202 [Accepted] or 429 [Too Busy] returned) 169 :raises KepURLError: If urllib provides an URLError 170 ''' 171 172 url = server.url + _create_url(log_group) + SERVICES_ROOT + '/ResetColumnMapping' 173 job = server._kep_service_execute(url, None, job_ttl) 174 return job
32def add_log_group(server: server, DATA: Union[dict, list]) -> Union[bool, list]: 33 '''Add a `"log group"` or multiple `"log groups"` objects to Kepware's DataLogger. It can be used 34 to pass a list of log groups to be added all at once. 35 36 :param server: instance of the `server` class 37 :param DATA: Dict or a list of the log groups 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 groups 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 + _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)
Add a "log group" or multiple "log groups" objects to Kepware's DataLogger. It can be used
to pass a list of log groups to be added all at once.
Parameters
- server: instance of the
serverclass - DATA: Dict or a list of the log groups 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 groups added that failed.
Raises
- KepHTTPError: If urllib provides an HTTPError
- KepURLError: If urllib provides an URLError
57def del_log_group(server: server, log_group: str) -> bool: 58 '''Delete a `"log group"` object in Kepware's Datalogger. 59 60 :param server: instance of the `server` class 61 :param log_group: name of log group to delete 62 63 :return: True - If a "HTTP 200 - OK" is received from Kepware server 64 65 :raises KepHTTPError: If urllib provides an HTTPError 66 :raises KepURLError: If urllib provides an URLError 67 ''' 68 r = server._config_del(server.url + _create_url(log_group)) 69 if r.code == 200: return True 70 else: raise KepHTTPError(r.url, r.code, r.msg, r.hdrs, r.payload)
Delete a "log group" object in Kepware's Datalogger.
Parameters
- server: instance of the
serverclass - log_group: name of log group 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
72def modify_log_group(server: server, DATA: dict, *, log_group: str = None, force: bool = False) -> bool: 73 '''Modify a `"log group"` object and it's properties in Kepware's Datalogger. If a `"log group"` is not provided as an input, 74 you need to identify the log group in the *'common.ALLTYPES_NAME'* property field in the `"DATA"`. It will 75 assume that is the log group that is to be modified. 76 77 :param server: instance of the `server` class 78 :param DATA: Dict of the log group properties to be modified. 79 :param log_group: *(optional)* name of log group to modify. Only needed if not existing in `"DATA"` 80 :param force: *(optional)* if True, will force the configuration update to the Kepware server 81 82 :return: True - If a "HTTP 200 - OK" is received from Kepware server 83 84 :raises KepHTTPError: If urllib provides an HTTPError 85 :raises KepURLError: If urllib provides an URLError 86 ''' 87 88 log_group_data = server._force_update_check(force, DATA) 89 90 if log_group == None: 91 try: 92 r = server._config_update(server.url + _create_url(log_group_data['common.ALLTYPES_NAME']), log_group_data) 93 if r.code == 200: return True 94 else: raise KepHTTPError(r.url, r.code, r.msg, r.hdrs, r.payload) 95 except KeyError as err: 96 err_msg = 'Error: No log group identified in DATA | Key Error: {}'.format(err) 97 raise KepError(err_msg) 98 else: 99 r = server._config_update(server.url + _create_url(log_group), log_group_data) 100 if r.code == 200: return True 101 else: raise KepHTTPError(r.url, r.code, r.msg, r.hdrs, r.payload)
Modify a "log group" object and it's properties in Kepware's Datalogger. If a "log group" is not provided as an input,
you need to identify the log group in the 'common.ALLTYPES_NAME' property field in the "DATA". It will
assume that is the log group that is to be modified.
Parameters
- server: instance of the
serverclass - DATA: Dict of the log group properties to be modified.
- log_group: (optional) name of log group 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
103def get_log_group(server: server, log_group: str) -> dict: 104 '''Returns the properties of the `"log group"` object. 105 106 :param server: instance of the `server` class 107 :param log_group: name of log group to retrieve 108 109 :return: Dict of properties for the log group requested 110 111 :raises KepHTTPError: If urllib provides an HTTPError 112 :raises KepURLError: If urllib provides an URLError 113 ''' 114 r = server._config_get(server.url + _create_url(log_group)) 115 return r.payload
Returns the properties of the "log group" object.
Parameters
- server: instance of the
serverclass - log_group: name of log group to retrieve
Returns
Dict of properties for the log group requested
Raises
- KepHTTPError: If urllib provides an HTTPError
- KepURLError: If urllib provides an URLError
117def get_all_log_groups(server: server, *, options: dict = None) -> list: 118 '''Returns the properties of all log group objects for Kepware's Datalogger. Returned object is JSON list. 119 120 :param server: instance of the `server` class 121 :param options: *(optional)* Dict of parameters to filter, sort or pagenate the list of log groups. Options are 'filter', 122 'sortOrder', 'sortProperty', 'pageNumber', and 'pageSize'. Only used when exchange_name is not defined. 123 124 :return: list of properties for all log groups requested 125 126 :raises KepHTTPError: If urllib provides an HTTPError 127 :raises KepURLError: If urllib provides an URLError 128 ''' 129 r = server._config_get(f'{server.url}{_create_url()}', params= options) 130 return r.payload
Returns the properties of all log group objects for Kepware's Datalogger. Returned object is JSON list.
Parameters
- server: instance of the
serverclass - 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 groups requested
Raises
- KepHTTPError: If urllib provides an HTTPError
- KepURLError: If urllib provides an URLError
132def enable_log_group(server: server, log_group: str) -> bool: 133 '''Enable the `"log group"`. 134 135 :param server: instance of the `server` class 136 :param log_group: name of log group to enable 137 138 :return: True - If a "HTTP 200 - OK" is received from Kepware server 139 140 :raises KepHTTPError: If urllib provides an HTTPError 141 :raises KepURLError: If urllib provides an URLError 142 ''' 143 DATA = {ENABLE_PROPERTY: True} 144 return modify_log_group(server, DATA, log_group= log_group)
Enable the "log group".
Parameters
- server: instance of the
serverclass - log_group: name of log group to enable
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
146def disable_log_group(server: server, log_group: str) -> bool: 147 '''Disable the log group. Returned object is JSON. 148 149 :param server: instance of the `server` class 150 :param log_group: name of log group to enable 151 152 :return: True - If a "HTTP 200 - OK" is received from Kepware server 153 154 :raises KepHTTPError: If urllib provides an HTTPError 155 :raises KepURLError: If urllib provides an URLError 156 ''' 157 DATA = {ENABLE_PROPERTY: False} 158 return modify_log_group(server, DATA, log_group= log_group)
Disable the log group. Returned object is JSON.
Parameters
- server: instance of the
serverclass - log_group: name of log group to enable
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
160def reset_column_mapping_service(server: server, log_group: str, job_ttl: int = None) -> KepServiceResponse: 161 '''Executes a ResetColumnMapping serivce call to the log group 162 163 :param server: instance of the `server` class 164 :param log_group: name of log group to enable 165 :param job_ttl: *(optional)* Determines the number of seconds a job instance will exist following completion. 166 167 :return: `KepServiceResponse` instance with job information 168 169 :raises KepHTTPError: If urllib provides an HTTPError (If not HTTP code 202 [Accepted] or 429 [Too Busy] returned) 170 :raises KepURLError: If urllib provides an URLError 171 ''' 172 173 url = server.url + _create_url(log_group) + SERVICES_ROOT + '/ResetColumnMapping' 174 job = server._kep_service_execute(url, None, job_ttl) 175 return job
Executes a ResetColumnMapping serivce call to the log group
Parameters
- server: instance of the
serverclass - log_group: name of log group to enable
- job_ttl: (optional) Determines the number of seconds a job instance will exist following completion.
Returns
KepServiceResponseinstance with job information
Raises
- KepHTTPError: If urllib provides an HTTPError (If not HTTP code 202 [Accepted] or 429 [Too Busy] returned)
- KepURLError: If urllib provides an URLError