@@ -277,7 +277,7 @@ def __str__(self):
277277
278278
279279class BaseUpdate (BaseMessage , metaclass = abc .ABCMeta ):
280- """Split data update notification."""
280+ """Feature flag data update notification."""
281281
282282 def __init__ (self , channel , timestamp , change_number ):
283283 """
@@ -324,11 +324,14 @@ def change_number(self):
324324
325325
326326class SplitChangeUpdate (BaseUpdate ):
327- """Split Change notification."""
327+ """Feature flag Change notification."""
328328
329- def __init__ (self , channel , timestamp , change_number ):
329+ def __init__ (self , channel , timestamp , change_number , previous_change_number , feature_flag_definition , compression ):
330330 """Class constructor."""
331331 BaseUpdate .__init__ (self , channel , timestamp , change_number )
332+ self ._previous_change_number = previous_change_number
333+ self ._feature_flag_definition = feature_flag_definition
334+ self ._compression = compression
332335
333336 @property
334337 def update_type (self ): # pylint:disable=no-self-use
@@ -340,18 +343,45 @@ def update_type(self): # pylint:disable=no-self-use
340343 """
341344 return UpdateType .SPLIT_UPDATE
342345
346+ @property
347+ def previous_change_number (self ): # pylint:disable=no-self-use
348+ """
349+ Return previous change number
350+ :returns: The previous change number
351+ :rtype: int
352+ """
353+ return self ._previous_change_number
354+
355+ @property
356+ def feature_flag_definition (self ): # pylint:disable=no-self-use
357+ """
358+ Return feature flag definition
359+ :returns: The new feature flag definition
360+ :rtype: str
361+ """
362+ return self ._feature_flag_definition
363+
364+ @property
365+ def compression (self ): # pylint:disable=no-self-use
366+ """
367+ Return previous compression type
368+ :returns: The compression type
369+ :rtype: int
370+ """
371+ return self ._compression
372+
343373 def __str__ (self ):
344374 """Return string representation."""
345375 return "SplitChange - changeNumber=%d" % (self .change_number )
346376
347377
348378class SplitKillUpdate (BaseUpdate ):
349- """Split Kill notification."""
379+ """Feature flag Kill notification."""
350380
351- def __init__ (self , channel , timestamp , change_number , split_name , default_treatment ): # pylint:disable=too-many-arguments
381+ def __init__ (self , channel , timestamp , change_number , feature_flag_name , default_treatment ): # pylint:disable=too-many-arguments
352382 """Class constructor."""
353383 BaseUpdate .__init__ (self , channel , timestamp , change_number )
354- self ._split_name = split_name
384+ self ._feature_flag_name = feature_flag_name
355385 self ._default_treatment = default_treatment
356386
357387 @property
@@ -365,14 +395,14 @@ def update_type(self): # pylint:disable=no-self-use
365395 return UpdateType .SPLIT_KILL
366396
367397 @property
368- def split_name (self ):
398+ def feature_flag_name (self ):
369399 """
370- Return the name of the killed split .
400+ Return the name of the killed feature flag .
371401
372- :returns: name of the killed split
402+ :returns: name of the killed feature flag
373403 :rtype: str
374404 """
375- return self ._split_name
405+ return self ._feature_flag_name
376406
377407 @property
378408 def default_treatment (self ):
@@ -387,7 +417,7 @@ def default_treatment(self):
387417 def __str__ (self ):
388418 """Return string representation."""
389419 return "SplitKill - changeNumber=%d, name=%s, defaultTreatment=%s" % \
390- (self .change_number , self .split_name , self .default_treatment )
420+ (self .change_number , self .feature_flag_name , self .default_treatment )
391421
392422
393423class SegmentChangeUpdate (BaseUpdate ):
@@ -471,9 +501,9 @@ def _parse_update(channel, timestamp, data):
471501 """
472502 update_type = UpdateType (data ['type' ])
473503 change_number = data ['changeNumber' ]
474- if update_type == UpdateType .SPLIT_UPDATE :
475- return SplitChangeUpdate (channel , timestamp , change_number )
476- elif update_type == UpdateType .SPLIT_KILL :
504+ if update_type == UpdateType .SPLIT_UPDATE and change_number is not None :
505+ return SplitChangeUpdate (channel , timestamp , change_number , data . get ( 'pcn' ), data . get ( 'd' ), data . get ( 'c' ) )
506+ elif update_type == UpdateType .SPLIT_KILL and change_number is not None :
477507 return SplitKillUpdate (channel , timestamp , change_number ,
478508 data ['splitName' ], data ['defaultTreatment' ])
479509 elif update_type == UpdateType .SEGMENT_UPDATE :
0 commit comments