Source code for sciencelogic.presentations

[docs]class Presentation(object): """ A presentation of a monitor's data """ def __init__(self, presentation_dict, client): """ Instantiate a new presentation of a performance counter :param presentation_dict: The presentation configuration data :type presentation_dict: ``dict`` """ self.name = presentation_dict['presname'] self.data_uri = presentation_dict['data']['URI'] self._client = client
[docs] def get_data(self, beginstamp=None, endstamp=None, insert_nulls=1, fetch_indexes=0, duration=None, idx_list=None, idx_max=None, hide_options=1): """ Get the data for this presentation :param beginstamp: timestamp for the beginning of the desired range of data :type beginstamp: ``str`` :param endstamp: timestamp for the end of the desired range of data :type endstamp: ``str`` :param insert_nulls: insert NULLs for all poll dates within the specified date range that do not have polled values :type insert_nulls: ``bool`` :param fetch_indexes: fetch the list of collection indexes (and their string labels, if any exist) for the date range instead of actual data. :type fetch_indexes: ``bool`` :param duration: human readable short-hand, such as 24h, 5d, 90m where h=HOUR, d=DAY, m=MINUTE. Used to specify the amount of data to fetch :type duration: ``str`` :param idx_list: a list of collection indexes for which to fetch data (when not specified, all indexes up to idx.max will be fetched) :type idx_list: ``list`` :param idx_max: limits the maximum number of collection indexes to return for the requested presentation data :type idx_max: ``int`` :param hide_options: hide the available request parameters from the response :type hide_options: ``bool`` :rtype: ``dict`` .. note:: if fetch_indexes is enabled, idx.max and idx.list will be ignored. """ params = { # defaults 'insert_nulls': insert_nulls, 'fetch_indexes': fetch_indexes, 'hide_options': hide_options, } if beginstamp: params['beginstamp'] = beginstamp if endstamp: params['endstamp'] = endstamp if duration: params['duration'] = duration if idx_list is not None: params['idx.list'] = ','.join(idx_list) if idx_max: params['idx.max'] = idx_max url = self.data_uri if beginstamp or endstamp or duration: # strip any request params if any timestamps are passed url = self.data_uri[:self.data_uri.find('?')] data = self._client.get(url, params=params) # TODO: '0' is just one of the available collection indices. # May be all of them should be returned here? return data.json().get('data', {}).get('0', {})