Skip to content

Commit fb2e9f7

Browse files
authored
Merge pull request #495 from splitio/async-flagset-storage-memory
Async flagset storage memory
2 parents 6858c3b + 919d06e commit fb2e9f7

File tree

5 files changed

+1118
-244
lines changed

5 files changed

+1118
-244
lines changed

splitio/storage/__init__.py

Lines changed: 40 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -30,25 +30,15 @@ def fetch_many(self, split_names):
3030
pass
3131

3232
@abc.abstractmethod
33-
def put(self, split):
33+
def update(self, to_add, to_delete, new_change_number):
3434
"""
35-
Store a split.
36-
37-
:param split: Split object to store
38-
:type split_name: splitio.models.splits.Split
39-
"""
40-
pass
41-
42-
@abc.abstractmethod
43-
def remove(self, split_name):
44-
"""
45-
Remove a split from storage.
46-
47-
:param split_name: Name of the feature to remove.
48-
:type split_name: str
49-
50-
:return: True if the split was found and removed. False otherwise.
51-
:rtype: bool
35+
Update feature flag storage.
36+
:param to_add: List of feature flags to add
37+
:type to_add: list[splitio.models.splits.Split]
38+
:param to_delete: List of feature flags to delete
39+
:type to_delete: list[splitio.models.splits.Split]
40+
:param new_change_number: New change number.
41+
:type new_change_number: int
5242
"""
5343
pass
5444

@@ -61,16 +51,6 @@ def get_change_number(self):
6151
"""
6252
pass
6353

64-
@abc.abstractmethod
65-
def set_change_number(self, new_change_number):
66-
"""
67-
Set the latest change number.
68-
69-
:param new_change_number: New change number.
70-
:type new_change_number: int
71-
"""
72-
pass
73-
7454
@abc.abstractmethod
7555
def get_split_names(self):
7656
"""
@@ -334,3 +314,35 @@ def record_bur_time_out(self):
334314
335315
"""
336316
pass
317+
318+
class FlagSetsFilter(object):
319+
"""Config Flagsets Filter storage."""
320+
321+
def __init__(self, flag_sets=[]):
322+
"""Constructor."""
323+
self.flag_sets = set(flag_sets)
324+
self.should_filter = len(flag_sets) > 0
325+
self.sorted_flag_sets = sorted(flag_sets)
326+
327+
def set_exist(self, flag_set):
328+
"""
329+
Check if a flagset exist in flagset filter
330+
:param flag_set: set name
331+
:type flag_set: str
332+
:rtype: bool
333+
"""
334+
if not self.should_filter:
335+
return True
336+
337+
return len(self.flag_sets.intersection(set([flag_set]))) > 0
338+
339+
def intersect(self, flag_sets):
340+
"""
341+
Check if a set exist in config flagset filter
342+
:param flag_set: set of flagsets
343+
:type flag_set: set
344+
:rtype: bool
345+
"""
346+
if not self.should_filter:
347+
return True
348+
return len(self.flag_sets.intersection(flag_sets)) > 0

0 commit comments

Comments
 (0)