1
0
mirror of https://github.com/dkmstr/openuds.git synced 2025-01-05 09:17:54 +03:00

More about stats

This commit is contained in:
Adolfo Gómez 2013-02-13 09:23:47 +00:00
parent 8552337c8d
commit 88939f9dc0
4 changed files with 30 additions and 7 deletions

View File

@ -25,6 +25,7 @@
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
from uds.models import NEVER
''' '''
@author: Adolfo Gómez, dkmaster at dkmon dot com @author: Adolfo Gómez, dkmaster at dkmon dot com
@ -77,13 +78,14 @@ def getCounters(obj, counterType, **kwargs):
to: (optional, defaults to 'Until end') En date for counter to recover to: (optional, defaults to 'Until end') En date for counter to recover
limit: (optional, defaults to 1000) Number of counter to recover. This is an 'At most' advice. The returned number of value limit: (optional, defaults to 1000) Number of counter to recover. This is an 'At most' advice. The returned number of value
can be lower, or even 1 more than requested due to a division for retrieving object at database can be lower, or even 1 more than requested due to a division for retrieving object at database
all: (optinal), indicates that get all counters for the type of obj passed in, not only for that obj.
Returns: Returns:
A generator, that contains pairs of (stamp, value) tuples A generator, that contains pairs of (stamp, value) tuples
''' '''
since = kwargs.get('since', None) since = kwargs.get('since', NEVER)
to = kwargs.get('to', None) to = kwargs.get('to', datetime.datetime.now())
limit = kwargs.get('limit', 1000) limit = kwargs.get('limit', 1000)
use_max = kwargs.get('use_max', False) use_max = kwargs.get('use_max', False)
@ -100,7 +102,11 @@ def getCounters(obj, counterType, **kwargs):
logger.error('Type {0} has no registerd stats of type {1}'.format(type(obj), counterType)) logger.error('Type {0} has no registerd stats of type {1}'.format(type(obj), counterType))
return return
owner_ids = fnc(obj) if kwargs.get('all', None) is not True:
owner_ids = fnc(obj)
else:
owner_ids = None
for i in statsManager().getCounters(__transDict[type(obj)], counterType, owner_ids, since, to, limit, use_max): for i in statsManager().getCounters(__transDict[type(obj)], counterType, owner_ids, since, to, limit, use_max):
val = (datetime.datetime.fromtimestamp(i.stamp), i.value) val = (datetime.datetime.fromtimestamp(i.stamp), i.value)

View File

@ -1626,7 +1626,7 @@ class StatsCounters(models.Model):
filt += '='+str(owner_type) filt += '='+str(owner_type)
owner_id = None owner_id = None
if kwargs.has_key('owner_id'): if kwargs.get('owner_id', None) is not None:
filt += ' AND OWNER_ID' filt += ' AND OWNER_ID'
oid = kwargs['owner_id'] oid = kwargs['owner_id']
if type(oid) in (list, tuple): if type(oid) in (list, tuple):

View File

@ -36,6 +36,7 @@ from ..auths.AdminAuth import needs_credentials
from ..util.Exceptions import FindException from ..util.Exceptions import FindException
from uds.core.util import log from uds.core.util import log
from uds.models import DeployedService
from uds.models import UserService from uds.models import UserService
from uds.models import User from uds.models import User
from uds.models import Authenticator from uds.models import Authenticator
@ -44,13 +45,23 @@ import logging
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@needs_credentials
def getDeployedServiceLogs(credentials, id):
try:
ds = DeployedService.objects.get(pk=id)
return log.getLogs(ds)
except:
logger.exception('Exception')
raise FindException(_('Deployed service does not exists'))
@needs_credentials @needs_credentials
def getUserServiceLogs(credentials, id): def getUserServiceLogs(credentials, id):
try: try:
us = UserService.objects.get(pk=id) us = UserService.objects.get(pk=id)
return log.getLogs(us) return log.getLogs(us)
except: except:
raise FindException(_('Service does not exists')) raise FindException(_('User service does not exists'))
@needs_credentials @needs_credentials
def getUserLogs(credentials, id): def getUserLogs(credentials, id):
@ -71,6 +82,7 @@ def getAuthLogs(credentials, id):
# Registers XML RPC Methods # Registers XML RPC Methods
def registerLogFunctions(dispatcher): def registerLogFunctions(dispatcher):
dispatcher.register_function(getDeployedServiceLogs, 'getDeployedServiceLogs')
dispatcher.register_function(getUserServiceLogs, 'getUserServiceLogs') dispatcher.register_function(getUserServiceLogs, 'getUserServiceLogs')
dispatcher.register_function(getUserLogs, 'getUserLogs') dispatcher.register_function(getUserLogs, 'getUserLogs')
dispatcher.register_function(getAuthLogs, 'getAuthLogs') dispatcher.register_function(getAuthLogs, 'getAuthLogs')

View File

@ -53,9 +53,14 @@ def getDeployedServiceCounters(credentials, id, counter_type, since, to, points,
val = cache.get(cacheKey) val = cache.get(cacheKey)
if val is None: if val is None:
us = DeployedService.objects.get(pk=id) if id == '-1':
us = DeployedService()
all = True
else:
us = DeployedService.objects.get(pk=id)
all = False
val = [] val = []
for x in counters.getCounters(us, counter_type, since=since, to=to, limit=points, use_max=use_max): for x in counters.getCounters(us, counter_type, since=since, to=to, limit=points, use_max=use_max, all=all):
val.append({ 'stamp': x[0], 'value': x[1] }) val.append({ 'stamp': x[0], 'value': x[1] })
if len(val) > 2: if len(val) > 2:
cache.put(cacheKey, cPickle.dumps(val).encode('zip'), 3600) cache.put(cacheKey, cPickle.dumps(val).encode('zip'), 3600)