Example #1
0
def _get_topology(rest_client,args):
    """
    load topology
    """
    state_leaf = rest_client.get_leaf(_key_to_address(TOPOLOGY_SET_NM))

    #config_candidates = SettingCandidates()
    topology = None
    if state_leaf is not None:
        setting_bytes = b64decode(state_leaf['data'])
        setting = Setting()
        setting.ParseFromString(setting_bytes)
        for entry in setting.entries:
            if entry.key == TOPOLOGY_SET_NM:
                topology = json.loads(entry.value.replace("'",'"'))
                if args.cls is not None:
                    print('topology cluster',args.cls)
                    fbft = FbftTopology()
                    fbft.get_topology(topology,'','','static')
                    if args.peer is None:
                        topology = fbft.get_cluster_by_name(args.cls)
                        #print('cluster',topology)
                        """
                        for key,peer in fbft.get_cluster_iter(args.cls):
                            print('cluster',args.cls,'peer',peer)
                        """
                    else:
                        topology,_ = fbft.get_peer_by_name(args.cls,args.peer)
                    #print('CLUSTER',args.cls,args.peer,'>>>',cls)
                
        

    return topology
Example #2
0
    def get_setting(self, key, default_value=None, value_type=str):
        """Get the setting stored at the given key.

        Args:
            key (str): the setting key
            default_value (str, optional): The default value, if none is
                found. Defaults to None.
            value_type (function, optional): The type of a setting value.
                Defaults to `str`.

        Returns:
            str: The value of the setting if found, default_value
            otherwise.
        """
        try:
            state_entry = self._state_view.get(
                SettingsView.setting_address(key))
        except KeyError:
            return default_value

        if state_entry is not None:
            setting = Setting()
            setting.ParseFromString(state_entry)
            for setting_entry in setting.entries:
                if setting_entry.key == key:
                    return value_type(setting_entry.value)

        return default_value
Example #3
0
def CreateSetting(key, value):
    """
    Create a setting object to include in a MockStateFactory.
    """
    addr = SettingsView.setting_address(key)

    setting = Setting()
    setting.entries.add(key=key, value=str(value))
    return addr, setting.SerializeToString()
Example #4
0
def _do_settings_list(args):
    """Lists the current on-chain configuration values.
    """
    rest_client = RestClient(args.url)
    state = rest_client.list_state(subtree=SETTINGS_NAMESPACE)

    prefix = args.filter

    head = state['head']
    state_values = state['data']
    printable_settings = []
    proposals_address = _key_to_address('sawtooth.settings.vote.proposals')
    for state_value in state_values:
        if state_value['address'] == proposals_address:
            # This is completely internal setting and we won't list it here
            continue

        decoded = b64decode(state_value['data'])
        setting = Setting()
        setting.ParseFromString(decoded)

        for entry in setting.entries:
            if entry.key.startswith(prefix):
                printable_settings.append(entry)

    printable_settings.sort(key=lambda s: s.key)

    if args.format == 'default':
        tty_width = tty.width()
        for setting in printable_settings:
            # Set value width to the available terminal space, or the min width
            width = tty_width - len(setting.key) - 3
            width = width if width > _MIN_PRINT_WIDTH else _MIN_PRINT_WIDTH
            value = (setting.value[:width] +
                     '...' if len(setting.value) > width else setting.value)
            print('{}: {}'.format(setting.key, value))
    elif args.format == 'csv':
        try:
            writer = csv.writer(sys.stdout, quoting=csv.QUOTE_ALL)
            writer.writerow(['KEY', 'VALUE'])
            for setting in printable_settings:
                writer.writerow([setting.key, setting.value])
        except csv.Error:
            raise CliException('Error writing CSV')
    elif args.format == 'json' or args.format == 'yaml':
        settings_snapshot = {
            'head': head,
            'settings':
            {setting.key: setting.value
             for setting in printable_settings}
        }
        if args.format == 'json':
            print(json.dumps(settings_snapshot, indent=2, sort_keys=True))
        else:
            print(yaml.dump(settings_snapshot, default_flow_style=False)[0:-1])
    else:
        raise AssertionError('Unknown format {}'.format(args.format))
Example #5
0
def _param_show(rest_client,args):
    """
    show topology param
    """
    fname = ('' if args.param_name[:4] == "bgx." else "bgx.") + args.param_name
    try:
        state_leaf = rest_client.get_leaf(_key_to_address(fname))
    except CliException:
        print('undef param {}'.format(fname))
        return

    
    if state_leaf is not None:
        setting_bytes = b64decode(state_leaf['data'])
        setting = Setting()
        setting.ParseFromString(setting_bytes)
        for entry in setting.entries:
            if entry.key == fname:
                print('{} = {}'.format(fname,entry.value))
    else:
        print('undef param {}'.format(fname))
Example #6
0
def _get_proposals(rest_client):
    state_leaf = rest_client.get_leaf(
        _key_to_address('sawtooth.settings.vote.proposals'))

    config_candidates = SettingCandidates()

    if state_leaf is not None:
        setting_bytes = b64decode(state_leaf['data'])
        setting = Setting()
        setting.ParseFromString(setting_bytes)

        candidates_bytes = None
        for entry in setting.entries:
            if entry.key == 'sawtooth.settings.vote.proposals':
                candidates_bytes = entry.value

        if candidates_bytes is not None:
            decoded = b64decode(candidates_bytes)
            config_candidates.ParseFromString(decoded)

    return config_candidates
def _setting_entry(key, value):
    return Setting(
        entries=[Setting.Entry(key=key, value=value)]).SerializeToString()