Beispiel #1
0
 def __init__(self,
              client_key=None,
              client_cert=None,
              ca_cert=None,
              server_addr=None):
     self.client = FaucetConfRpcClient(client_key=client_key,
                                       client_cert=client_cert,
                                       ca_cert=ca_cert,
                                       server_addr=server_addr)
Beispiel #2
0
def main():
    """Instantiate client and call it."""
    yaml_sanity()
    parser = argparse.ArgumentParser()
    parser.add_argument('--key',
                        help='client private key',
                        action='store',
                        default='client.key')
    parser.add_argument('--cert',
                        help='client public cert',
                        action='store',
                        default='client.crt')
    parser.add_argument('--cacert',
                        help='CA public cert',
                        action='store',
                        default='ca.crt')
    parser.add_argument('--port',
                        help='port of rpc server',
                        action='store',
                        default=59999,
                        type=int)
    parser.add_argument('--host',
                        help='host address of rpc server',
                        default='localhost')
    parser.add_argument('commands', type=str, nargs='+', help='rpc commands')
    args = parser.parse_args()
    server_addr = f'{args.host}:{args.port}'
    client = FaucetConfRpcClient(args.key, args.cert, args.cacert, server_addr)

    if args.commands[0] == 'list_rpcs':
        attributes = get_attributes(client)
        for attribute in attributes:
            if not attribute[0].startswith('_'):
                print(attribute[0])
        return

    command = getattr(client, args.commands[0], None)
    if not command:
        raise ClientError(f'no such rpc: {args.commands[0]}')
    command_args = {}
    for args in args.commands[1:]:
        arg, val = args.split('=')
        if val.lower() == 'true':
            val = True
        elif val.lower() == 'false':
            val = False
        command_args[arg] = val
    print(command(**command_args))
Beispiel #3
0
    def setUpClass(cls):
        cls.tmpdir = tempfile.mkdtemp()
        cls.default_test_yaml = yaml_load(cls.default_test_yaml_str)
        cls.default_config = 'test.yaml'
        with open(os.path.join(cls.tmpdir, cls.default_config),
                  'w') as test_yaml_file:
            test_yaml_file.write(cls.default_test_yaml_str)  # pytype: disable=wrong-arg-types

        cls.host = 'localhost'
        cls.port = 59999
        cls.prom_port = 59998
        certstrap = shutil.which('certstrap')
        cls.assertTrue(certstrap, 'certstrap not found')
        for cmd in (['init', '--common-name', 'ca', '--passphrase', ''], [
                'request-cert', '--common-name', 'client', '--passphrase', ''
        ], ['sign', 'client', '--CA', 'ca'
            ], ['request-cert', '--common-name', cls.host, '--passphrase',
                ''], ['sign', cls.host, '--CA', 'ca']):
            subprocess.check_call([certstrap, '--depot-path', cls.tmpdir] +
                                  cmd)
        client_key = os.path.join(cls.tmpdir, 'client.key')
        client_cert = os.path.join(cls.tmpdir, 'client.crt')
        server_key = os.path.join(cls.tmpdir, '%s.key' % cls.host)
        server_cert = os.path.join(cls.tmpdir, '%s.crt' % cls.host)
        ca_cert = os.path.join(cls.tmpdir, 'ca.crt')

        cls.server = subprocess.Popen([
            'timeout',
            '10s',
            './faucetconfrpc/faucetconfrpc_server.py',
            '--config_dir=%s' % cls.tmpdir,
            '--default_config=%s' % cls.default_config,
            '--port=%u' % cls.port,
            '--prom_port=%u' % cls.prom_port,
            '--host=%s' % cls.host,
            '--key=%s' % server_key,
            '--cert=%s' % server_cert,
            '--cacert=%s' % ca_cert,
        ],
                                      stdout=subprocess.PIPE,
                                      stderr=subprocess.STDOUT)
        cls._wait_for_port(cls.host, cls.port)
        cls._wait_for_port(cls.host, cls.prom_port)
        server_addr = '%s:%u' % (cls.host, cls.port)
        cls.client = FaucetConfRpcClient(client_key, client_cert, ca_cert,
                                         server_addr)
Beispiel #4
0
def get_faucetconfrpc(key, cert, ca, server, port):
    # TODO: FaucetConfRpcClient's use of the C YAML parser causes pytest-cov to fail to report any coverage.
    from faucetconfrpc.faucetconfrpc_client_lib import FaucetConfRpcClient
    return FaucetConfRpcClient(key, cert, ca, ':'.join((server, port)))