def register_switch(self, switch_name, state, override=False): """ Registers a switch if it doesn't exist already or override is `True` """ if override or not switch_name in self.switches: switch = Switch(switch_name, state=state) gutter.register(switch) return switch
def import_switches(self, request): encoded_switches = request.POST.get('switch_block', '') switch_block = encoded_switches.split('\r\n') if switch_block[0] != '-----BEGIN SWITCHES-----' or switch_block[-1] != '-----END SWITCHES-----': raise ValueError('bad input') switch_block = ''.join(switch_block[1:-1]) pickled_switches = base64.b64decode(switch_block) switches = pickle.loads(pickled_switches) for switch in switches: try: manager.register(switch) except Exception as e: print e return redirect('/gutter')
def import_switches(self, request): encoded_switches = request.POST.get('switch_block', '') switch_block = encoded_switches.split('\r\n') if switch_block[0] != '-----BEGIN SWITCHES-----' or switch_block[ -1] != '-----END SWITCHES-----': raise ValueError('bad input') switch_block = ''.join(switch_block[1:-1]) pickled_switches = base64.b64decode(switch_block) switches = pickle.loads(pickled_switches) for switch in switches: try: manager.register(switch) except Exception as e: import logging logging.exception(e) return redirect('gutter:index')
def test_existing_switches_are_not_overriden_when_reading_config_by_default(self): switch_name = 'existent-feature' # Fill gutter with a previous switch switch = Switch(switch_name, state=Switch.states.GLOBAL) gutter.register(switch) self.app.config[flask_featureflags.FEATURE_FLAGS_CONFIG] = { switch_name: False } gutter_handler = GutterFeaturesHandler(self.app, autocreate=False) feature_setup.clear_handlers() feature_setup.add_handler(gutter_handler) # Check Gutter self.assertTrue(gutter.active(switch_name)) # Check GutterHandler self.assertTrue(gutter_handler.check(switch_name)) # Check Feature-Flag self.assertTrue(feature_setup.check(switch_name))
from gutter.client.default import gutter as manager switch = Switch( 'cool_feature', label='A cool feature', description= 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.' ) condition = Condition(User, 'name', Equals(value='Jeff')) switch.conditions.append(condition) condition = Condition(User, 'age', MoreThan(lower_limit=21)) switch.conditions.append(condition) manager.register(switch) switch = Switch( 'other_neat_feature', label='A neat additional feature', description= 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.' ) condition = Condition(Request, 'ip', Percent(percentage=10)) switch.conditions.append(condition) manager.register(switch) for switch in manager.switches: print '+', switch
# Configure Gutter gutter.client.settings.manager.storage_engine = RedisDict('gutter', Redis()) # Import the manager from gutter.client.default import gutter as manager switch = Switch('cool_feature', label='A cool feature', description='Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.') condition = Condition(User, 'name', Equals(value='Jeff')) switch.conditions.append(condition) condition = Condition(User, 'age', MoreThan(lower_limit=21)) switch.conditions.append(condition) manager.register(switch) switch = Switch('other_neat_feature', label='A neat additional feature', description='Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.') condition = Condition(Request, 'ip', Percent(percentage=10)) switch.conditions.append(condition) manager.register(switch) for switch in manager.switches: print '+', switch print type(manager.storage)