def do_batch_status(args): """Runs the batch-status command, printing output to the console Args: args: The parsed arguments sent to the command at runtime """ rest_client = RestClient(args.url, args.user) batch_ids = args.batch_ids.split(',') if args.wait and args.wait > 0: statuses = rest_client.get_statuses(batch_ids, args.wait) else: statuses = rest_client.get_statuses(batch_ids) if args.format == 'yaml': fmt.print_yaml(statuses) elif args.format == 'json': fmt.print_json(statuses) else: raise AssertionError('Missing handler: {}'.format(args.format))
def _do_identity_role_create(args): """Executes the 'role create' subcommand. Given a key file, a role name, and a policy name it generates a batch of sawtooth_identity transactions in a BatchList instance. The BatchList is either stored to a file or submitted to a validator, depending on the supplied CLI arguments. """ signer = _read_signer(args.key) txns = [_create_role_txn(signer, args.name, args.policy)] batch = _create_batch(signer, txns) batch_list = BatchList(batches=[batch]) if args.output is not None: try: with open(args.output, 'wb') as batch_file: batch_file.write(batch_list.SerializeToString()) except IOError as e: raise CliException('Unable to write to batch file: {}'.format( str(e))) elif args.url is not None: rest_client = RestClient(args.url) rest_client.send_batches(batch_list) if args.wait and args.wait > 0: batch_id = batch.header_signature wait_time = 0 start_time = time.time() while wait_time < args.wait: statuses = rest_client.get_statuses([batch_id], args.wait - int(wait_time)) wait_time = time.time() - start_time if statuses[0]['status'] == 'COMMITTED': print('Role committed in {:.6} sec'.format(wait_time)) return # Wait a moment so as not to hammer the Rest Api time.sleep(0.2) print('Wait timed out! Role was not committed...') print('{:128.128} {}'.format(batch_id, statuses[0]['status'])) exit(1) else: raise AssertionError('No target for create set.')
def do_batch_submit(args): try: with open(args.filename, mode='rb') as fd: batches = batch_pb2.BatchList() batches.ParseFromString(fd.read()) except IOError as e: raise CliException(e) rest_client = RestClient(args.url, args.user) start = time.time() for batch_list in _split_batch_list(args, batches): rest_client.send_batches(batch_list) stop = time.time() print('batches: {}, batch/sec: {}'.format( str(len(batches.batches)), len(batches.batches) / (stop - start))) if args.wait and args.wait > 0: batch_ids = [b.header_signature for b in batches.batches] wait_time = 0 start_time = time.time() while wait_time < args.wait: statuses = rest_client.get_statuses(batch_ids, args.wait - int(wait_time)) wait_time = time.time() - start_time if all(s['status'] == 'COMMITTED' for s in statuses): print('All batches committed in {:.6} sec'.format(wait_time)) return # Wait a moment so as not to send another request immediately time.sleep(0.2) print('Wait timed out! Some batches have not yet been committed...') for batch_id, status in statuses[0].items(): print('{} {}'.format(batch_id, status)) exit(1)