@@ -41,26 +41,52 @@ def store(self):
41
41
42
42
class StatusReceiver (RedisClient ):
43
43
def __init__ (self , redis_connection , status_keys ):
44
+ """
45
+ :param redis_connection:
46
+ :param status_keys: Features which will be taken into account.
47
+ :return:
48
+ """
44
49
super (StatusReceiver , self ).__init__ (redis_connection )
45
50
self ._status_keys = status_keys
46
- self .regex = re .compile ("/" , re .VERBOSE )
51
+ self ._regex = re .compile ("/" , re .VERBOSE )
47
52
48
53
def _put_in_dict (self , dictio , machine_id , feature_name , value ):
49
54
if machine_id not in dictio :
50
55
dictio [machine_id ] = {}
51
56
dictio [machine_id ][feature_name ] = value
52
57
53
- def get_last_measures (self , machine_ids = None ):
58
+ def _get_whatever_measures (self , method_to_call , machine_ids = None ):
59
+ """
60
+ :param machine_ids:
61
+ :param number_measures: If None all the measures will be returned.
62
+ :param method_to_call: Method from this class to be called to obtain the desired value from Redis DB.
63
+ :return:
64
+ """
54
65
measures = {}
55
66
for status_key in self ._status_keys :
56
67
if machine_ids is None :
57
68
possible_features = self ._conn .keys ("*/%s" % status_key )
58
69
for feature in possible_features :
59
- value = self . _conn . lpop (feature ) # get last value
60
- machine_id , feature_name = self .regex .split (feature )
61
- self ._put_in_dict (measures , machine_id , feature_name , value )
70
+ values = method_to_call (feature )
71
+ machine_id , feature_name = self ._regex .split (feature )
72
+ self ._put_in_dict (measures , machine_id , feature_name , values )
62
73
else :
63
74
for machine_id in machine_ids :
64
- value = self . _conn . lpop ("%s/%s" % (machine_id , status_key )) # get last value
65
- self ._put_in_dict (measures , machine_id , status_key , value )
75
+ values = method_to_call ("%s/%s" % (machine_id , status_key )) # get last value
76
+ self ._put_in_dict (measures , machine_id , status_key , values )
66
77
return measures
78
+
79
+ def get_last_measures (self , machine_ids = None ):
80
+ return self ._get_whatever_measures (self ._conn .lpop , machine_ids )
81
+
82
+ def _get_all_measures_by_feature (self , feature ):
83
+ l = self ._conn .llen (feature )
84
+ return self ._conn .lrange (feature , 0 , l )
85
+
86
+ def get_all_measures (self , machine_ids = None ):
87
+ """
88
+ :param machine_ids:
89
+ :param number_measures: If None all the measures will be returned.
90
+ :return:
91
+ """
92
+ return self ._get_whatever_measures (self ._get_all_measures_by_feature , machine_ids )
0 commit comments