Example #1
0
    def __init__(
        self,
        net_config,
        txnvalidator=None,
        data_dir=None,
        endpoint_host=None,
        block_chain_archive=None,
        log_config=None,
    ):
        super(ValidatorCollectionController, self).__init__(net_config.n_mag)
        self._validators = [[None, x] for x in net_config.get_config_list()]

        if txnvalidator is None:
            txnvalidator = find_txn_validator()
        self.txnvalidator = txnvalidator

        self._endpoint_host = endpoint_host

        self.validator_log_config = log_config

        self.temp_data_dir = False
        if data_dir is None:
            self.temp_data_dir = True
            data_dir = tempfile.mkdtemp()
        self.data_dir = data_dir

        self.block_chain_archive = block_chain_archive
        if block_chain_archive is not None:
            if not os.path.isfile(block_chain_archive):
                raise ExitError("Block chain archive to load {} does not "
                                "exist.".format(block_chain_archive))
            else:
                self.unpack_blockchain(block_chain_archive)

        self.admin_node = ValidatorCollectionController.AdminNode()
    def __init__(self,
                 net_config,
                 txnvalidator=None,
                 data_dir=None,
                 endpoint_host=None,
                 block_chain_archive=None,
                 log_config=None,
                 ):
        super(ValidatorCollectionController, self).__init__(net_config.n_mag)
        self._validators = [[None, x] for x in net_config.get_config_list()]

        if txnvalidator is None:
            txnvalidator = find_txn_validator()
        self.txnvalidator = txnvalidator

        self._endpoint_host = endpoint_host

        self.validator_log_config = log_config

        self.temp_data_dir = False
        if data_dir is None:
            self.temp_data_dir = True
            data_dir = tempfile.mkdtemp()
        self.data_dir = data_dir

        self.block_chain_archive = block_chain_archive
        if block_chain_archive is not None:
            if not os.path.isfile(block_chain_archive):
                raise ExitError("Block chain archive to load {} does not "
                                "exist.".format(block_chain_archive))
            else:
                self.unpack_blockchain(block_chain_archive)

        self.admin_node = ValidatorCollectionController.AdminNode()
Example #3
0
    def __init__(
        self,
        txnvalidator=None,
        cfg=None,
        data_dir=None,
        http_port=8800,
        udp_port=5500,
        host='localhost',
        endpoint_host=None,
        block_chain_archive=None,
        log_config=None,
        static_network=None,
    ):

        self.static_network = static_network
        self._validators = []
        self._validator_map = {}
        self.validator_config = None

        self._next_validator_id = 0
        self._host = host or 'localhost'
        self._http_port_base = http_port
        self._udp_port_base = udp_port
        self._endpoint_host = endpoint_host

        self.validator_config = cfg or defaultValidatorConfig
        self.validator_log_config = log_config

        self.txnvalidator = txnvalidator or find_txn_validator()

        self.temp_data_dir = False
        if data_dir is None:
            self.temp_data_dir = True
            data_dir = tempfile.mkdtemp()
        self.data_dir = data_dir

        self.block_chain_archive = block_chain_archive
        if block_chain_archive is not None:
            if not os.path.isfile(block_chain_archive):
                raise ExitError("Block chain archive to load {} does not "
                                "exist.".format(block_chain_archive))
            else:
                self.unpack_blockchain(block_chain_archive)

        self.admin_node = ValidatorNetworkManager.AdminNode()

        self.validator_config['DataDirectory'] = self.data_dir
        self.validator_config["AdministrationNode"] = self.admin_node.Address

        self.timeout = 3
    def __init__(self,
                 txnvalidator=None,
                 cfg=None,
                 data_dir=None,
                 http_port=8800,
                 udp_port=5500,
                 block_chain_archive=None,
                 log_config=None,
                 staticNetwork=None,
                 ):

        self.staticNetwork = staticNetwork
        self._validators = []
        self._validator_map = {}
        self.validator_config = None

        self._next_validator_id = 0
        self.HttpPortBase = http_port
        self.UdpPortBase = udp_port

        if cfg is None:
            cfg = defaultValidatorConfig
        self.validator_config = cfg
        self.validator_log_config = log_config

        if txnvalidator is None:
            txnvalidator = find_txn_validator()
        self.txnvalidator = txnvalidator

        self.tempDataDir = False
        if data_dir is None:
            self.tempDataDir = True
            data_dir = tempfile.mkdtemp()
        self.data_dir = data_dir
        self.data_dir = data_dir

        self.block_chain_archive = block_chain_archive
        if block_chain_archive is not None:
            if not os.path.isfile(block_chain_archive):
                raise ExitError("Block chain archive to load {} does not "
                                "exist.".format(block_chain_archive))
            else:
                self.unpack_blockchain(block_chain_archive)

        self.AdminNode = ValidatorNetworkManager.AdminNode()

        self.validator_config['DataDirectory'] = self.data_dir
        self.validator_config["AdministrationNode"] = self.AdminNode.address
        self.validator_config['Restore'] = False
    def __init__(self,
                 txnvalidator=None,
                 cfg=None,
                 data_dir=None,
                 http_port=8800,
                 udp_port=5500,
                 host='localhost',
                 endpoint_host=None,
                 block_chain_archive=None,
                 log_config=None,
                 static_network=None,
                 ):

        self.static_network = static_network
        self._validators = []
        self._validator_map = {}
        self.validator_config = None

        self._next_validator_id = 0
        self._host = host or 'localhost'
        self._http_port_base = http_port
        self._udp_port_base = udp_port
        self._endpoint_host = endpoint_host

        self.validator_config = cfg or defaultValidatorConfig
        self.validator_log_config = log_config

        self.txnvalidator = txnvalidator or find_txn_validator()

        self.temp_data_dir = False
        if data_dir is None:
            self.temp_data_dir = True
            data_dir = tempfile.mkdtemp()
        self.data_dir = data_dir

        self.block_chain_archive = block_chain_archive
        if block_chain_archive is not None:
            if not os.path.isfile(block_chain_archive):
                raise ExitError("Block chain archive to load {} does not "
                                "exist.".format(block_chain_archive))
            else:
                self.unpack_blockchain(block_chain_archive)

        self.admin_node = ValidatorNetworkManager.AdminNode()

        self.validator_config['DataDirectory'] = self.data_dir
        self.validator_config["AdministrationNode"] = self.admin_node.Address
        self.validator_config['Restore'] = False
    def __init__(self,
                 net_config,
                 txnvalidator=None,
                 log_config=None,
                 ):
        super(ValidatorCollectionController, self).__init__(net_config.n_mag)
        self.net_config = net_config
        self.hdls = [None for _ in range(net_config.n_mag)]
        self.data_dir = None
        if self.net_config.provider is not None:
            self.data_dir = self.net_config.provider.currency_home
        if txnvalidator is None:
            txnvalidator = find_txn_validator()
        self.txnvalidator = txnvalidator

        self.validator_log_config = log_config
        self.admin_node = ValidatorCollectionController.AdminNode()
Example #7
0
    def __init__(
        self,
        net_config,
        txnvalidator=None,
        log_config=None,
    ):
        super(ValidatorCollectionController, self).__init__(net_config.n_mag)
        self.net_config = net_config
        self.hdls = [None for _ in range(net_config.n_mag)]
        self.data_dir = None
        if self.net_config.provider is not None:
            self.data_dir = self.net_config.provider.currency_home
        if txnvalidator is None:
            txnvalidator = find_txn_validator()
        self.txnvalidator = txnvalidator

        self.validator_log_config = log_config
        self.admin_node = ValidatorCollectionController.AdminNode()
    def __init__(self,
                 txnvalidator=None,
                 cfg=None,
                 dataDir=None,
                 httpPort=8800,
                 udpPort=8900,
                 blockChainArchive=None):

        self.Validators = []
        self.ValidatorMap = {}
        self.ValidatorConfig = None

        self.NextValidatorId = 0
        self.HttpPortBase = httpPort
        self.UdpPortBase = udpPort

        if cfg is None:
            cfg = defaultValidatorConfig
        self.ValidatorConfig = cfg

        if txnvalidator is None:
            txnvalidator = find_txn_validator()
        self.txnvalidator = txnvalidator

        self.tempDataDir = False
        if dataDir is None:
            self.tempDataDir = True
            dataDir = tempfile.mkdtemp()
        self.DataDir = dataDir

        self.blockChainArchive = blockChainArchive
        if blockChainArchive is not None:
            if not os.path.isfile(blockChainArchive):
                raise ExitError("Block chain archive to load {} does not "
                                "exist.".format(blockChainArchive))
            else:
                self.unpack_blockchain(blockChainArchive)

        self.AdminNode = ValidatorNetworkManager.AdminNode()

        self.ValidatorConfig['DataDirectory'] = self.DataDir
        self.ValidatorConfig['Host'] = "localhost"
        self.ValidatorConfig["AdministrationNode"] = self.AdminNode.Address
        self.ValidatorConfig['Restore'] = False
    def __init__(self,
                 txnvalidator=None,
                 cfg=None,
                 dataDir=None,
                 httpPort=8800,
                 udpPort=8900,
                 blockChainArchive=None):

        self.Validators = []
        self.ValidatorMap = {}
        self.ValidatorConfig = None

        self.NextValidatorId = 0
        self.HttpPortBase = httpPort
        self.UdpPortBase = udpPort

        if cfg is None:
            cfg = defaultValidatorConfig
        self.ValidatorConfig = cfg

        if txnvalidator is None:
            txnvalidator = find_txn_validator()
        self.txnvalidator = txnvalidator

        self.tempDataDir = False
        if dataDir is None:
            self.tempDataDir = True
            dataDir = tempfile.mkdtemp()
        self.DataDir = dataDir

        self.blockChainArchive = blockChainArchive
        if blockChainArchive is not None:
            if not os.path.isfile(blockChainArchive):
                raise ExitError("Block chain archive to load {} does not "
                                "exist.".format(blockChainArchive))
            else:
                self.unpack_blockchain(blockChainArchive)

        self.AdminNode = ValidatorNetworkManager.AdminNode()

        self.ValidatorConfig['DataDirectory'] = self.DataDir
        self.ValidatorConfig['Host'] = "localhost"
        self.ValidatorConfig["AdministrationNode"] = self.AdminNode.Address
        self.ValidatorConfig['Restore'] = False
def configure(opts):
    scriptdir = os.path.dirname(os.path.realpath(__file__))

    # Find the validator to use
    if opts.validator is None:
        opts.validator = find_txn_validator()
        if not os.path.isfile(opts.validator):
            print "txnvalidator: {}".format(opts.validator)
            raise ExitError("Could not find txnvalidator.")
    else:
        if not os.path.isfile(opts.validator):
            print "txnvalidator: {}".format(opts.validator)
            raise ExitError("txnvalidator script does not exist.")

    # Create directory -- after the params have been validated
    if opts.data_dir is None:
        opts.data_dir_is_tmp = True  # did we make up a directory
        opts.data_dir = tempfile.mkdtemp()
    else:
        opts.data_dir = os.path.abspath(opts.data_dir)
        if not os.path.exists(opts.data_dir):
            os.makedirs(opts.data_dir)

    if opts.load_blockchain is not None:
        if not os.path.isfile(opts.load_blockchain):
            raise ExitError("Blockchain archive to load {} does not "
                            "exist.".format(opts.load_blockchain))
        else:
            opts.config = get_archive_config(opts.data_dir,
                                             opts.load_blockchain)
            if opts.config is None:
                raise ExitError("Could not read config from Blockchain "
                                "archive: {}".format(opts.load_blockchain))

    validator_config = {}

    if opts.config is not None:
        if os.path.exists(opts.config):
            validator_config = parse_configuration_file(opts.config)
        else:
            raise ExitError("Config file does not exist: {}".format(
                opts.config))
    else:
        opts.config = os.path.realpath(os.path.join(scriptdir, "..", "etc",
                                                    "txnvalidator.js"))
        print "No config file specified, loading  {}".format(opts.config)
        if os.path.exists(opts.config):
            validator_config = parse_configuration_file(opts.config)
        else:
            raise ExitError(
                "Default config file does not exist: {}".format(opts.config))

    keys = [
        'NodeName',
        'Host',
        'HttpPort',
        'Port',
        'LogFile',
        'LogLevel',
        'KeyFile',
        "AdministrationNode",
        "DataDirectory",
        "GenesisLedger",
    ]
    if any(k in validator_config for k in keys):
        print "Overriding the following keys from validator configuration " \
              "file: {}".format(opts.config)
        for k in keys:
            if k in validator_config:
                print "\t{}".format(k)
                del validator_config[k]

    opts.count = max(1, opts.count)
    opts.validator_config = validator_config
    opts.validator_config['LogLevel'] = opts.log_level

    print "Configuration:"
    pp.pprint(opts.__dict__)
def configure(opts):
    scriptDir = os.path.dirname(os.path.realpath(__file__))

    # Find the validator to use
    if opts.validator is None:
        opts.validator = find_txn_validator()
        if not os.path.isfile(opts.validator):
            print("txnvalidator: {}".format(opts.validator))
            raise ExitError("Could not find txnvalidator.")
    else:
        if not os.path.isfile(opts.validator):
            print("txnvalidator: {}".format(opts.validator))
            raise ExitError("txnvalidator script does not exist.")

    validatorConfig = {}
    if opts.config is not None:
        if os.path.exists(opts.config):
            validatorConfig = parse_configuration_file(opts.config)
        else:
            raise ExitError("Config file does not exist: {}".format(
                opts.config))
    else:
        opts.config = os.path.realpath(
            os.path.join(scriptDir, "..", "etc", "txnvalidator.js"))
        print("No config file specified, loading  {}".format(opts.config))
        if os.path.exists(opts.config):
            validatorConfig = parse_configuration_file(opts.config)
        else:
            raise ExitError("Default config file does not exist: {}".format(
                opts.config))

    if opts.load_blockchain is not None:
        if not os.path.isfile(opts.load_blockchain):
            raise ExitError("Blockchain archive to load {} does not "
                            "exist.".format(opts.load_blockchain))

    # Create directory -- after the params have been validated
    if opts.data_dir is None:
        opts.data_dir_is_tmp = True  # did we make up a directory
        opts.data_dir = tempfile.mkdtemp()
    else:
        opts.data_dir = os.path.abspath(opts.data_dir)
        if not os.path.exists(opts.data_dir):
            os.makedirs(opts.data_dir)

    keys = [
        'NodeName',
        'Host',
        'HttpPort',
        'Port',
        'LogFile',
        'LogLevel',
        'KeyFile',
        "AdministrationNode",
        "DataDirectory",
        "GenesisLedger",
    ]
    if any(k in validatorConfig for k in keys):
        print "Overriding the following keys from validator configuration " \
              "file: {}".format(opts.config)
        for k in keys:
            if k in validatorConfig:
                print "\t{}".format(k)
                del validatorConfig[k]

    opts.count = max(1, opts.count)
    opts.validator_config = validatorConfig
    opts.validator_config['LogLevel'] = opts.log_level

    print "Configuration:"
    pp.pprint(opts.__dict__)
Example #12
0
def configure(args):
    opts = parse_args(args)

    script_dir = os.path.dirname(os.path.realpath(__file__))

    # Find the validator to use
    if opts.validator is None:
        opts.validator = find_txn_validator()
        if not os.path.isfile(opts.validator):
            print "txnvalidator: {}".format(opts.validator)
            raise ExitError("Could not find txnvalidator.")
    else:
        if not os.path.isfile(opts.validator):
            print "txnvalidator: {}".format(opts.validator)
            raise ExitError("txnvalidator script does not exist.")

    # Create directory -- after the params have been validated
    if opts.data_dir is None:
        opts.data_dir_is_tmp = True  # did we make up a directory
        opts.data_dir = tempfile.mkdtemp()
    else:
        opts.data_dir = os.path.abspath(opts.data_dir)
        if not os.path.exists(opts.data_dir):
            os.makedirs(opts.data_dir)

    if opts.load_blockchain is not None:
        if not os.path.isfile(opts.load_blockchain):
            raise ExitError("Blockchain archive to load {} does not "
                            "exist.".format(opts.load_blockchain))
        else:
            opts.config = get_archive_config(opts.data_dir,
                                             opts.load_blockchain)
            if opts.config is None:
                raise ExitError("Could not read config from Blockchain "
                                "archive: {}".format(opts.load_blockchain))

    if opts.config is not None:
        if os.path.exists(opts.config):
            validator_config = parse_configuration_file(opts.config)
        else:
            raise ExitError("Config file does not exist: {}".format(
                opts.config))
    else:
        opts.config = os.path.realpath(
            os.path.join(script_dir, "..", "etc", "txnvalidator.js"))
        print "No config file specified, loading  {}".format(opts.config)
        if os.path.exists(opts.config):
            validator_config = parse_configuration_file(opts.config)
        else:
            raise ExitError("Default config file does not exist: {}".format(
                opts.config))

    opts.log_config_dict = None
    if opts.log_config is not None:
        if not os.path.exists(opts.log_config):
            raise ExitError("log-config file does not exist: {}".format(
                opts.log_config))
        else:
            opts.log_config_dict = load_log_config(opts.log_config)

    keys = [
        'NodeName',
        'Listen',
        'KeyFile',
        'AdministrationNode',
        'DataDirectory',
        'GenesisLedger',
        'LedgerURL',
    ]
    if any(k in validator_config for k in keys):
        print "Overriding the following keys from validator configuration " \
              "file: {}".format(opts.config)
        for k in keys:
            if k in validator_config:
                print "\t{}".format(k)
                del validator_config[k]
    if opts.log_config:
        print "\tLogConfigFile"

    opts.validator_config = validator_config

    opts.count = max(1, opts.count)

    print "Configuration:"
    pp.pprint(opts.__dict__)

    return vars(opts)
    def test_genesis_util(self):
        print
        old_home = os.getenv('CURRENCYHOME')
        tmp_home = tempfile.mkdtemp()
        vcc = None
        try:
            # Set up env and config
            v_file = find_txn_validator()
            os.environ['CURRENCYHOME'] = tmp_home
            cfg = get_validator_configuration([], {})
            # ...rewire for ValidatorManager compatibility
            cfg['KeyDirectory'] = tmp_home
            cfg['DataDirectory'] = tmp_home
            cfg['LogDirectory'] = tmp_home

            # En route, test keygen client via main
            key_name = cfg['NodeName']
            key_dir = cfg['KeyDirectory']
            cmd = 'keygen %s --key-dir %s' % (key_name, key_dir)
            entry_point(args=cmd.split(), with_loggers=False)
            base_name = key_dir + os.path.sep + key_name
            self.assertTrue(os.path.exists('%s.wif' % base_name))
            self.assertTrue(os.path.exists('%s.addr' % base_name))
            cfg['KeyFile'] = '%s.wif' % base_name

            # Test admin poet0-genesis tool
            fname = get_genesis_block_id_file_name(cfg['DataDirectory'])
            self.assertFalse(os.path.exists(fname))
            config_file = tmp_home + os.path.sep + 'cfg.json'
            with open(config_file, 'w') as f:
                f.write(json.dumps(cfg, indent=4) + '\n')
            cmd = 'admin poet0-genesis --config %s' % config_file
            entry_point(args=cmd.split(), with_loggers=False)
            self.assertTrue(os.path.exists(fname))
            dat = None
            with open(fname, 'r') as f:
                dat = json.load(f)
            self.assertTrue('GenesisId' in dat.keys())
            tgt_block = dat['GenesisId']

            # Verify genesis tool (also tests blockchain restoration)
            # ...initial connectivity must be zero for the initial validator
            cfg['InitialConnectivity'] = 0
            # ...launch validator
            net_cfg = NetworkConfig.from_config_list([cfg])
            vcc = ValidatorCollectionController(net_cfg,
                                                data_dir=tmp_home,
                                                txnvalidator=v_file)
            vcc.activate(0, probe_seconds=120)
            # ...verify validator is extending tgt_block
            to = TimeOut(64)
            blk_lists = None
            prog_str = 'TEST ROOT RESTORATION (expect %s)' % tgt_block
            with Progress(prog_str) as p:
                print
                while not to.is_timed_out() and blk_lists is None:
                    try:
                        blk_lists = get_blocklists(['http://localhost:8800'])
                        print 'block_lists: %s' % blk_lists
                        if len(blk_lists) < 1 or len(blk_lists[0]) < 2:
                            blk_lists = None
                    except MessageException as e:
                        pass
                    time.sleep(1)
                    p.step()
            self.assertIsNotNone(blk_lists)
            root = blk_lists[0][0]
            self.assertEqual(tgt_block, root)

        finally:
            # Shut down validator
            if vcc is not None:
                vcc.shutdown()
            # Restore environmental vars
            if old_home is None:
                os.unsetenv('CURRENCYHOME')
            else:
                os.environ['CURRENCYHOME'] = old_home
            # Delete temp dir
            if os.path.exists(tmp_home):
                shutil.rmtree(tmp_home)